@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
- return /* @__PURE__ */ jsx2("div", {
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: tree.getItems().map((item) => renderItem ? /* @__PURE__ */ jsx2("div", {
148
- role: "none",
149
- children: renderItem(item)
150
- }, item.getKey()) : /* @__PURE__ */ jsx2(TreeItem, {
151
- item,
152
- startEnhancer: renderIcon?.(item),
153
- density,
154
- children: renderLabel?.(item)
155
- }, item.getKey()))
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
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alexgorbatchev/shadcn",
3
- "version": "0.0.22",
3
+ "version": "0.0.23",
4
4
  "description": "Sharp, monospace React components with compact and comfortable densities.",
5
5
  "license": "MIT",
6
6
  "repository": {