♻️ refactor(vscode): 卡片里的子块只留挂在子行上、点了才展开的一种,测试假数据换掉旧 React 卡片的名字

This commit is contained in:
cruldra committed 2026-10-08 07:17:25 +08:00
1 parent f6bc217e91
commit 5e994cd90e
16 files changed
+121 -130

No files matched your search

@@ -18,8 +18,8 @@ function gridTemplate(count: number): string {
}
/**
* 库规则放进卡片属性表里的子块(BlockSlot):blocks 是卡片的这些子块,render 把一行下面的几块画成一层块(同块树),
* onToggle 是点子行第一格时展开 / 收起讲它的那一块(点子行才展开的,见 BlockSlot.item)。
* 库规则挂在卡片子行上的子块(BlockSlot):blocks 是卡片的这些子块,render 把一行下面展开着的几块画成一层块(同块树),
* onToggle 是点子行第一格时展开 / 收起讲它的那一块。
*/
export interface GridSlots {
blocks: BlockView[]
@@ -234,7 +234,7 @@ export function PropertyGrid({ blockId, rows, collapsed, onToggleFold, marks, sl
onToggleFold: (id: string) => void
/** 标差异时这张属性表改了哪些行 */
marks?: RowsDiff
/** 放进这张属性表里的子块(库规则的卡片),见 GridSlots */
/** 挂在这张属性表子行上的子块(库规则的卡片),见 GridSlots */
slots?: GridSlots
}): ReactElement {
const removed = (after: number): ReactElement[] => removedAt(marks?.removed, after)
@@ -249,15 +249,15 @@ export function PropertyGrid({ blockId, rows, collapsed, onToggleFold, marks, sl
const Chevron = folded ? ChevronRight : ChevronDown
const mark = marks?.changed[index]
const placed = slots?.blocks.filter(block => block.slot?.row === index) ?? []
// 点子行才展开的子块只画展开着的;别的放进这一行的子块总是画
const shownBlocks = placed.filter(block => block.slot?.item === undefined || !collapsed.has(block.id))
const toggles = new Map(placed.flatMap((block): [number, ItemToggle][] => block.slot?.item === undefined
? []
: [[block.slot.item, { open: !collapsed.has(block.id), badge: block.badge, onToggle: () => slots?.onToggle(block) }]]))
// 挂在子行上的子块只画展开着的
const shownBlocks = placed.filter(block => !collapsed.has(block.id))
const toggles = new Map(placed.flatMap((block): [number, ItemToggle][] => block.slot
? [[block.slot.item, { open: !collapsed.has(block.id), badge: block.badge, onToggle: () => slots?.onToggle(block) }]]
: []))
return (
<Fragment key={index}>
<div className="cr-prop-row grid grid-cols-subgrid" data-id={id} data-diff={mark?.added && 'add'}>
{layout || placed.length > 0
{layout
? (
<button
type="button"