@dxos/react-ui-list 0.7.5-feature-compute.4d9d99a → 0.7.5-labs.35b4b42
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.
- package/dist/lib/browser/index.mjs +20 -15
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node/index.cjs +19 -14
- package/dist/lib/node/index.cjs.map +3 -3
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node-esm/index.mjs +20 -15
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/types/src/components/List/ListItem.d.ts +3 -6
- package/dist/types/src/components/List/ListItem.d.ts.map +1 -1
- package/dist/types/src/components/List/ListRoot.d.ts +3 -6
- package/dist/types/src/components/List/ListRoot.d.ts.map +1 -1
- package/dist/types/src/components/Tree/Tree.d.ts +4 -2
- package/dist/types/src/components/Tree/Tree.d.ts.map +1 -1
- package/dist/types/src/components/Tree/TreeItem.d.ts +2 -1
- package/dist/types/src/components/Tree/TreeItem.d.ts.map +1 -1
- package/dist/types/src/components/Tree/TreeItemHeading.d.ts.map +1 -1
- package/dist/types/src/components/Tree/TreeItemToggle.d.ts +1 -0
- package/dist/types/src/components/Tree/TreeItemToggle.d.ts.map +1 -1
- package/dist/types/src/components/Tree/helpers.d.ts +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +18 -18
- package/src/components/Tree/Tree.tsx +9 -5
- package/src/components/Tree/TreeItem.tsx +6 -6
- package/src/components/Tree/TreeItemHeading.tsx +2 -3
- package/src/components/Tree/TreeItemToggle.tsx +3 -2
- package/src/components/Tree/helpers.ts +1 -1
|
@@ -16,7 +16,6 @@ import { S } from '@dxos/echo-schema';
|
|
|
16
16
|
import { invariant } from '@dxos/invariant';
|
|
17
17
|
import { Treegrid, TreeItem as NaturalTreeItem } from '@dxos/react-ui';
|
|
18
18
|
import {
|
|
19
|
-
focusRing,
|
|
20
19
|
ghostHover,
|
|
21
20
|
hoverableControls,
|
|
22
21
|
hoverableFocusedKeyboardControls,
|
|
@@ -27,7 +26,7 @@ import {
|
|
|
27
26
|
import { useTree } from './TreeContext';
|
|
28
27
|
import { TreeItemHeading } from './TreeItemHeading';
|
|
29
28
|
import { TreeItemToggle } from './TreeItemToggle';
|
|
30
|
-
import { DEFAULT_INDENTATION,
|
|
29
|
+
import { DEFAULT_INDENTATION, paddingIndentation } from './helpers';
|
|
31
30
|
|
|
32
31
|
type TreeItemState = 'idle' | 'dragging' | 'preview' | 'parent-of-instruction';
|
|
33
32
|
|
|
@@ -47,6 +46,7 @@ export const isTreeData = (data: unknown): data is TreeData => S.is(TreeDataSche
|
|
|
47
46
|
export type TreeItemProps<T = any> = {
|
|
48
47
|
item: T;
|
|
49
48
|
path: string[];
|
|
49
|
+
levelOffset?: number;
|
|
50
50
|
last: boolean;
|
|
51
51
|
draggable?: boolean;
|
|
52
52
|
renderColumns?: FC<{
|
|
@@ -70,6 +70,7 @@ export const RawTreeItem = <T = any,>({
|
|
|
70
70
|
canDrop,
|
|
71
71
|
onOpenChange,
|
|
72
72
|
onSelect,
|
|
73
|
+
levelOffset = 2,
|
|
73
74
|
}: TreeItemProps<T>) => {
|
|
74
75
|
const { getItems, getProps, isOpen, isCurrent } = useTree();
|
|
75
76
|
const items = getItems(item);
|
|
@@ -77,7 +78,7 @@ export const RawTreeItem = <T = any,>({
|
|
|
77
78
|
const path = useMemo(() => [..._path, id], [_path, id]);
|
|
78
79
|
const open = isOpen(path, item);
|
|
79
80
|
const current = isCurrent(path, item);
|
|
80
|
-
const level = path.length -
|
|
81
|
+
const level = path.length - levelOffset;
|
|
81
82
|
const isBranch = !!parentOf;
|
|
82
83
|
const mode: ItemMode = last ? 'last-in-group' : open ? 'expanded' : 'standard';
|
|
83
84
|
const data = useMemo(() => ({ id, path, item }) satisfies TreeData, [id, path, item]);
|
|
@@ -217,13 +218,12 @@ export const RawTreeItem = <T = any,>({
|
|
|
217
218
|
aria-labelledby={`${id}__label`}
|
|
218
219
|
parentOf={parentOf?.join(Treegrid.PARENT_OF_SEPARATOR)}
|
|
219
220
|
classNames={mx(
|
|
220
|
-
'grid grid-cols-subgrid col-[tree-row]
|
|
221
|
+
'grid grid-cols-subgrid col-[tree-row] mbs-0.5 aria-[current]:bg-input',
|
|
221
222
|
hoverableControls,
|
|
222
223
|
hoverableFocusedKeyboardControls,
|
|
223
224
|
hoverableFocusedWithinControls,
|
|
224
225
|
hoverableDescriptionIcons,
|
|
225
226
|
ghostHover,
|
|
226
|
-
focusRing,
|
|
227
227
|
className,
|
|
228
228
|
)}
|
|
229
229
|
data-itemid={id}
|
|
@@ -241,7 +241,7 @@ export const RawTreeItem = <T = any,>({
|
|
|
241
241
|
<Treegrid.Cell
|
|
242
242
|
indent
|
|
243
243
|
classNames='relative grid grid-cols-subgrid col-[tree-row]'
|
|
244
|
-
style={
|
|
244
|
+
style={paddingIndentation(level)}
|
|
245
245
|
>
|
|
246
246
|
<div role='none' className='flex items-center'>
|
|
247
247
|
<TreeItemToggle open={open} isBranch={isBranch} onToggle={handleOpenChange} />
|
|
@@ -51,14 +51,13 @@ export const TreeItemHeading = memo(
|
|
|
51
51
|
asChild
|
|
52
52
|
ref={forwardedRef}
|
|
53
53
|
>
|
|
54
|
-
{/* TODO(wittjosiah): Class precedence. See #8149. */}
|
|
55
54
|
<Button
|
|
56
55
|
data-testid='treeItem.heading'
|
|
57
56
|
variant='ghost'
|
|
58
57
|
density='fine'
|
|
59
58
|
classNames={mx(
|
|
60
|
-
'grow gap-2
|
|
61
|
-
'disabled
|
|
59
|
+
'grow gap-2 pis-0.5 hover:bg-transparent dark:hover:bg-transparent',
|
|
60
|
+
'disabled:cursor-default disabled:opacity-100',
|
|
62
61
|
className,
|
|
63
62
|
)}
|
|
64
63
|
disabled={disabled}
|
|
@@ -11,10 +11,11 @@ export type TreeItemToggleProps = {
|
|
|
11
11
|
open?: boolean;
|
|
12
12
|
isBranch?: boolean;
|
|
13
13
|
onToggle?: () => void;
|
|
14
|
+
hidden?: boolean;
|
|
14
15
|
};
|
|
15
16
|
|
|
16
17
|
export const TreeItemToggle = memo(
|
|
17
|
-
forwardRef<HTMLButtonElement, TreeItemToggleProps>(({ open, isBranch, onToggle }, forwardedRef) => {
|
|
18
|
+
forwardRef<HTMLButtonElement, TreeItemToggleProps>(({ open, isBranch, hidden, onToggle }, forwardedRef) => {
|
|
18
19
|
return (
|
|
19
20
|
<Button
|
|
20
21
|
ref={forwardedRef}
|
|
@@ -22,7 +23,7 @@ export const TreeItemToggle = memo(
|
|
|
22
23
|
aria-expanded={open}
|
|
23
24
|
variant='ghost'
|
|
24
25
|
density='fine'
|
|
25
|
-
classNames={mx('is-
|
|
26
|
+
classNames={mx('is-4 dx-focus-ring-inset pli-0', hidden ? 'hidden' : !isBranch && 'invisible')}
|
|
26
27
|
onClick={onToggle}
|
|
27
28
|
>
|
|
28
29
|
<Icon
|
|
@@ -4,6 +4,6 @@
|
|
|
4
4
|
|
|
5
5
|
export const DEFAULT_INDENTATION = 8;
|
|
6
6
|
|
|
7
|
-
export const
|
|
7
|
+
export const paddingIndentation = (level: number, indentation = DEFAULT_INDENTATION) => ({
|
|
8
8
|
paddingInlineStart: `${(level - 1) * indentation}px`,
|
|
9
9
|
});
|