@alexgorbatchev/shadcn 0.0.22 → 0.0.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -18,5 +18,5 @@ type TreeItemProps<T> = useRender.ComponentProps<"div", TreeItemState> & IDensit
|
|
|
18
18
|
isDropTarget?: boolean;
|
|
19
19
|
};
|
|
20
20
|
/** Registered tree row; compose menus with render and place counts/actions in endEnhancer. */
|
|
21
|
-
export declare function TreeItem<T>({ item, children, startEnhancer, endEnhancer, expandOn, isEditing, isDropTarget, density, render, ...props }: TreeItemProps<T>): ReactElement;
|
|
21
|
+
export declare function TreeItem<T>({ item, children, startEnhancer, endEnhancer, expandOn, isEditing, isDropTarget, density, render, ref, ...props }: TreeItemProps<T>): ReactElement;
|
|
22
22
|
export type { TreeItemProps };
|
|
@@ -20,14 +20,13 @@ function TreeItem({
|
|
|
20
20
|
isDropTarget = false,
|
|
21
21
|
density,
|
|
22
22
|
render,
|
|
23
|
+
ref,
|
|
23
24
|
...props
|
|
24
25
|
}) {
|
|
25
26
|
const nativeProps = item.getProps();
|
|
26
27
|
const isExpanded = item.isExpanded();
|
|
27
28
|
const isSelected = item.isSelected?.() ?? false;
|
|
28
29
|
const isInsideTarget = item.isUnorderedDragTarget?.() ?? false;
|
|
29
|
-
const isAbove = item.isDragTargetAbove?.() ?? false;
|
|
30
|
-
const isBelow = item.isDragTargetBelow?.() ?? false;
|
|
31
30
|
const toggle = () => {
|
|
32
31
|
if (isExpanded)
|
|
33
32
|
item.collapse();
|
|
@@ -51,8 +50,10 @@ function TreeItem({
|
|
|
51
50
|
return useRender({
|
|
52
51
|
defaultTagName: "div",
|
|
53
52
|
render,
|
|
53
|
+
ref: [item.registerElement, ref ?? null],
|
|
54
54
|
props: mergeProps({
|
|
55
55
|
...nativeProps,
|
|
56
|
+
ref: undefined,
|
|
56
57
|
onKeyDown: (event) => {
|
|
57
58
|
if (event.target !== event.currentTarget || event.defaultPrevented || event.key !== "Enter" || event.repeat || item.getTree().getState().dnd)
|
|
58
59
|
return;
|
|
@@ -76,7 +77,7 @@ function TreeItem({
|
|
|
76
77
|
onKeyDown: undefined,
|
|
77
78
|
onDragStart: undefined
|
|
78
79
|
} : {},
|
|
79
|
-
style: { paddingInlineStart: `${item.getItemMeta().level * 20 + 8}px` },
|
|
80
|
+
style: { paddingInlineStart: `${item.getItemMeta().level * (item.getTree().getConfig().indent ?? 20) + 8}px` },
|
|
80
81
|
className: cn2("relative flex min-h-control min-w-0 cursor-default items-center gap-2 rounded-sm py-1 pr-2 text-sm outline-none hover:bg-accent focus-visible:ring-2 focus-visible:ring-ring", (isSelected || isDropTarget || isInsideTarget) && "bg-accent text-accent-foreground"),
|
|
81
82
|
children: /* @__PURE__ */ jsxs(Fragment, {
|
|
82
83
|
children: [
|
|
@@ -101,14 +102,6 @@ function TreeItem({
|
|
|
101
102
|
onDoubleClick: (event) => event.stopPropagation(),
|
|
102
103
|
onKeyDown: (event) => event.stopPropagation(),
|
|
103
104
|
children: endEnhancer
|
|
104
|
-
}),
|
|
105
|
-
isAbove && /* @__PURE__ */ jsx("span", {
|
|
106
|
-
"aria-hidden": "true",
|
|
107
|
-
className: "pointer-events-none absolute inset-x-0 top-0 h-0.5 bg-primary"
|
|
108
|
-
}),
|
|
109
|
-
isBelow && /* @__PURE__ */ jsx("span", {
|
|
110
|
-
"aria-hidden": "true",
|
|
111
|
-
className: "pointer-events-none absolute inset-x-0 bottom-0 h-0.5 bg-primary"
|
|
112
105
|
})
|
|
113
106
|
]
|
|
114
107
|
})
|
|
@@ -124,7 +117,7 @@ function TreeItem({
|
|
|
124
117
|
}
|
|
125
118
|
|
|
126
119
|
// src/components/tree/Tree.tsx
|
|
127
|
-
import { jsx as jsx2 } from "react/jsx-runtime";
|
|
120
|
+
import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
128
121
|
function Tree({
|
|
129
122
|
tree,
|
|
130
123
|
label,
|
|
@@ -135,7 +128,9 @@ function Tree({
|
|
|
135
128
|
density
|
|
136
129
|
}) {
|
|
137
130
|
const container = tree.getContainerProps(label);
|
|
138
|
-
|
|
131
|
+
const dragLine = tree.getDragLineData?.();
|
|
132
|
+
const element = tree.getElement();
|
|
133
|
+
return /* @__PURE__ */ jsxs2("div", {
|
|
139
134
|
...container,
|
|
140
135
|
"data-density": density,
|
|
141
136
|
className: cn2("grid min-w-0 gap-1", variant === "default" && "rounded-sm border border-border bg-card p-2"),
|
|
@@ -144,15 +139,23 @@ function Tree({
|
|
|
144
139
|
return;
|
|
145
140
|
container.onKeyDown?.(event);
|
|
146
141
|
},
|
|
147
|
-
children:
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
item,
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
142
|
+
children: [
|
|
143
|
+
tree.getItems().map((item) => renderItem ? /* @__PURE__ */ jsx2("div", {
|
|
144
|
+
role: "none",
|
|
145
|
+
children: renderItem(item)
|
|
146
|
+
}, item.getKey()) : /* @__PURE__ */ jsx2(TreeItem, {
|
|
147
|
+
item,
|
|
148
|
+
startEnhancer: renderIcon?.(item),
|
|
149
|
+
density,
|
|
150
|
+
children: renderLabel?.(item)
|
|
151
|
+
}, item.getKey())),
|
|
152
|
+
dragLine && /* @__PURE__ */ jsx2("span", {
|
|
153
|
+
"data-slot": "tree-drop-indicator",
|
|
154
|
+
"aria-hidden": "true",
|
|
155
|
+
className: "pointer-events-none absolute h-0.5 bg-primary",
|
|
156
|
+
style: tree.getDragLineStyle(-1 - (element?.clientTop ?? 0), -(element?.clientLeft ?? 0))
|
|
157
|
+
})
|
|
158
|
+
]
|
|
156
159
|
});
|
|
157
160
|
}
|
|
158
161
|
|