@dxos/react-ui-list 0.8.3 → 0.8.4-main.2e9d522

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.
Files changed (31) hide show
  1. package/dist/lib/browser/index.mjs +46 -30
  2. package/dist/lib/browser/index.mjs.map +3 -3
  3. package/dist/lib/browser/meta.json +1 -1
  4. package/dist/lib/node-esm/index.mjs +46 -30
  5. package/dist/lib/node-esm/index.mjs.map +3 -3
  6. package/dist/lib/node-esm/meta.json +1 -1
  7. package/dist/types/src/components/Accordion/Accordion.stories.d.ts +1 -1
  8. package/dist/types/src/components/Accordion/Accordion.stories.d.ts.map +1 -1
  9. package/dist/types/src/components/List/List.d.ts.map +1 -1
  10. package/dist/types/src/components/List/List.stories.d.ts +1 -1
  11. package/dist/types/src/components/List/List.stories.d.ts.map +1 -1
  12. package/dist/types/src/components/List/ListItem.d.ts +1 -1
  13. package/dist/types/src/components/List/ListItem.d.ts.map +1 -1
  14. package/dist/types/src/components/Tree/Tree.stories.d.ts +1 -1
  15. package/dist/types/src/components/Tree/Tree.stories.d.ts.map +1 -1
  16. package/dist/types/src/components/Tree/TreeItem.d.ts +8 -7
  17. package/dist/types/src/components/Tree/TreeItem.d.ts.map +1 -1
  18. package/dist/types/src/components/Tree/TreeItemHeading.d.ts.map +1 -1
  19. package/dist/types/src/components/Tree/TreeItemToggle.d.ts.map +1 -1
  20. package/dist/types/tsconfig.tsbuildinfo +1 -1
  21. package/package.json +17 -19
  22. package/src/components/Accordion/Accordion.stories.tsx +1 -1
  23. package/src/components/List/List.stories.tsx +1 -1
  24. package/src/components/List/ListItem.tsx +9 -7
  25. package/src/components/Tree/Tree.stories.tsx +1 -1
  26. package/src/components/Tree/TreeItem.tsx +11 -11
  27. package/src/components/Tree/TreeItemHeading.tsx +2 -3
  28. package/src/components/Tree/TreeItemToggle.tsx +2 -3
  29. package/dist/lib/node/index.cjs +0 -886
  30. package/dist/lib/node/index.cjs.map +0 -7
  31. package/dist/lib/node/meta.json +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/react-ui-list",
3
- "version": "0.8.3",
3
+ "version": "0.8.4-main.2e9d522",
4
4
  "description": "A list component.",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -29,35 +29,33 @@
29
29
  "@preact/signals-core": "^1.9.0",
30
30
  "@radix-ui/react-accordion": "1.2.3",
31
31
  "@radix-ui/react-context": "1.1.1",
32
- "@dxos/debug": "0.8.3",
33
- "@dxos/invariant": "0.8.3",
34
- "@dxos/echo-schema": "0.8.3",
35
- "@dxos/live-object": "0.8.3",
36
- "@dxos/log": "0.8.3",
37
- "@dxos/react-ui-text-tooltip": "0.8.3",
38
- "@dxos/react-ui-types": "0.8.3",
39
- "@dxos/util": "0.8.3"
32
+ "@dxos/debug": "0.8.4-main.2e9d522",
33
+ "@dxos/echo-schema": "0.8.4-main.2e9d522",
34
+ "@dxos/invariant": "0.8.4-main.2e9d522",
35
+ "@dxos/live-object": "0.8.4-main.2e9d522",
36
+ "@dxos/log": "0.8.4-main.2e9d522",
37
+ "@dxos/react-ui": "0.8.4-main.2e9d522",
38
+ "@dxos/react-ui-text-tooltip": "0.8.4-main.2e9d522",
39
+ "@dxos/react-ui-theme": "0.8.4-main.2e9d522",
40
+ "@dxos/react-ui-types": "0.8.4-main.2e9d522",
41
+ "@dxos/util": "0.8.4-main.2e9d522"
40
42
  },
41
43
  "devDependencies": {
42
- "@phosphor-icons/react": "^2.1.5",
43
44
  "@types/react": "~18.2.0",
44
45
  "@types/react-dom": "~18.2.0",
45
- "effect": "3.14.21",
46
+ "effect": "3.17.0",
46
47
  "react": "~18.2.0",
47
48
  "react-dom": "~18.2.0",
48
49
  "vite": "5.4.7",
49
- "@dxos/random": "0.8.3",
50
- "@dxos/react-ui-theme": "0.8.3",
51
- "@dxos/react-ui": "0.8.3",
52
- "@dxos/storybook-utils": "0.8.3"
50
+ "@dxos/random": "0.8.4-main.2e9d522",
51
+ "@dxos/storybook-utils": "0.8.4-main.2e9d522"
53
52
  },
54
53
  "peerDependencies": {
55
- "@phosphor-icons/react": "^2.1.5",
56
- "effect": "3.13.3",
54
+ "effect": "^3.13.3",
57
55
  "react": "~18.2.0",
58
56
  "react-dom": "~18.2.0",
59
- "@dxos/react-ui-theme": "0.8.3",
60
- "@dxos/react-ui": "0.8.3"
57
+ "@dxos/react-ui-theme": "0.8.4-main.2e9d522",
58
+ "@dxos/react-ui": "0.8.4-main.2e9d522"
61
59
  },
62
60
  "publishConfig": {
63
61
  "access": "public"
@@ -4,7 +4,7 @@
4
4
 
5
5
  import '@dxos-theme';
6
6
 
7
- import { type StoryObj, type Meta } from '@storybook/react';
7
+ import { type StoryObj, type Meta } from '@storybook/react-vite';
8
8
  import React from 'react';
9
9
 
10
10
  import { faker } from '@dxos/random';
@@ -4,7 +4,7 @@
4
4
 
5
5
  import '@dxos-theme';
6
6
 
7
- import { type Meta, type StoryObj } from '@storybook/react';
7
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
8
8
  import { Schema } from 'effect';
9
9
  import React from 'react';
10
10
 
@@ -72,10 +72,11 @@ export const [ListItemProvider, useListItemContext] = createContext<ListItemCont
72
72
  );
73
73
 
74
74
  export type ListItemProps<T extends ListItemRecord> = ThemedClassName<
75
- PropsWithChildren<{
76
- item: T;
77
- }> &
78
- HTMLAttributes<HTMLDivElement>
75
+ PropsWithChildren<
76
+ {
77
+ item: T;
78
+ } & HTMLAttributes<HTMLDivElement>
79
+ >
79
80
  >;
80
81
 
81
82
  /**
@@ -86,6 +87,7 @@ export const ListItem = <T extends ListItemRecord>({ children, classNames, item,
86
87
  const ref = useRef<HTMLDivElement | null>(null);
87
88
  const dragHandleRef = useRef<HTMLElement | null>(null);
88
89
  const [state, setState] = useState<ItemDragState>(idle);
90
+
89
91
  useEffect(() => {
90
92
  const element = ref.current;
91
93
  invariant(element);
@@ -142,6 +144,9 @@ export const ListItem = <T extends ListItemRecord>({ children, classNames, item,
142
144
  const closestEdge = extractClosestEdge(self.data);
143
145
  setState({ type: 'is-dragging-over', closestEdge });
144
146
  },
147
+ onDragLeave: () => {
148
+ setState(idle);
149
+ },
145
150
  onDrag: ({ self }) => {
146
151
  const closestEdge = extractClosestEdge(self.data);
147
152
  setState((current) => {
@@ -151,9 +156,6 @@ export const ListItem = <T extends ListItemRecord>({ children, classNames, item,
151
156
  return { type: 'is-dragging-over', closestEdge };
152
157
  });
153
158
  },
154
- onDragLeave: () => {
155
- setState(idle);
156
- },
157
159
  onDrop: () => {
158
160
  setState(idle);
159
161
  },
@@ -6,7 +6,7 @@ import '@dxos-theme';
6
6
 
7
7
  import { monitorForElements } from '@atlaskit/pragmatic-drag-and-drop/element/adapter';
8
8
  import { extractInstruction, type Instruction } from '@atlaskit/pragmatic-drag-and-drop-hitbox/tree-item';
9
- import { type Meta, type StoryObj } from '@storybook/react';
9
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
10
10
  import React, { useEffect } from 'react';
11
11
 
12
12
  import { live, type Live } from '@dxos/live-object';
@@ -21,7 +21,6 @@ import {
21
21
  hoverableControls,
22
22
  hoverableFocusedKeyboardControls,
23
23
  hoverableFocusedWithinControls,
24
- mx,
25
24
  } from '@dxos/react-ui-theme';
26
25
 
27
26
  import { useTree } from './TreeContext';
@@ -41,22 +40,23 @@ export const TreeDataSchema = Schema.Struct({
41
40
  });
42
41
 
43
42
  export type TreeData = Schema.Schema.Type<typeof TreeDataSchema>;
44
-
45
43
  export const isTreeData = (data: unknown): data is TreeData => Schema.is(TreeDataSchema)(data);
46
44
 
45
+ export type ColumnRenderer<T extends HasId = any> = FC<{
46
+ item: T;
47
+ path: string[];
48
+ open: boolean;
49
+ menuOpen: boolean;
50
+ setMenuOpen: (open: boolean) => void;
51
+ }>;
52
+
47
53
  export type TreeItemProps<T extends HasId = any> = {
48
54
  item: T;
49
55
  path: string[];
50
56
  levelOffset?: number;
51
57
  last: boolean;
52
58
  draggable?: boolean;
53
- renderColumns?: FC<{
54
- item: T;
55
- path: string[];
56
- open: boolean;
57
- menuOpen: boolean;
58
- setMenuOpen: (open: boolean) => void;
59
- }>;
59
+ renderColumns?: ColumnRenderer<T>;
60
60
  canDrop?: (params: { source: TreeData; target: TreeData }) => boolean;
61
61
  onOpenChange?: (params: { item: T; path: string[]; open: boolean }) => void;
62
62
  onSelect?: (params: { item: T; path: string[]; current: boolean; option: boolean }) => void;
@@ -223,7 +223,7 @@ const RawTreeItem = <T extends HasId = any>({
223
223
  id={id}
224
224
  aria-labelledby={`${id}__label`}
225
225
  parentOf={parentOf?.join(Treegrid.PARENT_OF_SEPARATOR)}
226
- classNames={mx(
226
+ classNames={[
227
227
  'grid grid-cols-subgrid col-[tree-row] mbs-0.5 aria-[current]:bg-activeSurface',
228
228
  hoverableControls,
229
229
  hoverableFocusedKeyboardControls,
@@ -231,7 +231,7 @@ const RawTreeItem = <T extends HasId = any>({
231
231
  hoverableDescriptionIcons,
232
232
  ghostHover,
233
233
  className,
234
- )}
234
+ ]}
235
235
  data-itemid={id}
236
236
  data-testid={testId}
237
237
  // NOTE(thure): This is intentionally an empty string to for descendents to select by in the CSS
@@ -6,7 +6,6 @@ import React, { type KeyboardEvent, type MouseEvent, forwardRef, memo, useCallba
6
6
 
7
7
  import { Button, Icon, toLocalizedString, useTranslation, type Label } from '@dxos/react-ui';
8
8
  import { TextTooltip } from '@dxos/react-ui-text-tooltip';
9
- import { mx } from '@dxos/react-ui-theme';
10
9
 
11
10
  // TODO(wittjosiah): Consider whether there should be a separate disabled prop which was visually distinct
12
11
  // rather than just making the item unselectable.
@@ -55,11 +54,11 @@ export const TreeItemHeading = memo(
55
54
  data-testid='treeItem.heading'
56
55
  variant='ghost'
57
56
  density='fine'
58
- classNames={mx(
57
+ classNames={[
59
58
  'grow gap-2 pis-0.5 hover:bg-transparent dark:hover:bg-transparent',
60
59
  'disabled:cursor-default disabled:opacity-100',
61
60
  className,
62
- )}
61
+ ]}
63
62
  disabled={disabled}
64
63
  onClick={handleSelect}
65
64
  onKeyDown={handleButtonKeydown}
@@ -5,7 +5,6 @@
5
5
  import React, { forwardRef, memo } from 'react';
6
6
 
7
7
  import { Button, Icon } from '@dxos/react-ui';
8
- import { mx } from '@dxos/react-ui-theme';
9
8
 
10
9
  export type TreeItemToggleProps = {
11
10
  open?: boolean;
@@ -23,10 +22,10 @@ export const TreeItemToggle = memo(
23
22
  aria-expanded={open}
24
23
  variant='ghost'
25
24
  density='fine'
26
- classNames={mx('is-6 pli-0 dx-focus-ring-inset', hidden ? 'hidden' : !isBranch && 'invisible')}
25
+ classNames={['is-6 pli-0 dx-focus-ring-inset', hidden ? 'hidden' : !isBranch && 'invisible']}
27
26
  onClick={onToggle}
28
27
  >
29
- <Icon icon='ph--caret-right--bold' size={3} classNames={mx('transition duration-200', open && 'rotate-90')} />
28
+ <Icon icon='ph--caret-right--bold' size={3} classNames={['transition duration-200', open && 'rotate-90']} />
30
29
  </Button>
31
30
  );
32
31
  }),