@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.
@@ -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, paddingIndendation } from './helpers';
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 - 2;
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] mt-[2px] aria-[current]:bg-input',
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={paddingIndendation(level)}
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 !pis-0.5 hover:!bg-transparent dark:hover:!bg-transparent',
61
- 'disabled:!cursor-default disabled:!opacity-100',
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-6 !pli-1', !isBranch && 'invisible')}
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 paddingIndendation = (level: number, indentation = DEFAULT_INDENTATION) => ({
7
+ export const paddingIndentation = (level: number, indentation = DEFAULT_INDENTATION) => ({
8
8
  paddingInlineStart: `${(level - 1) * indentation}px`,
9
9
  });