@ixfx/components 0.14.1 → 0.14.3

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/bundle/index.d.ts +22 -6
  2. package/bundle/index.js +27 -15
  3. package/dist/crumbs.d.ts +2 -2
  4. package/dist/{data-grid-D7RxYISt.d.ts → data-grid-DmkId8bu.d.ts} +3 -3
  5. package/dist/data-grid.d.ts +2 -2
  6. package/dist/{detail-list-w32XZEgH.d.ts → detail-list-CmQqeXvp.d.ts} +3 -3
  7. package/dist/detail-list.d.ts +3 -3
  8. package/dist/{flat-list-CkRIZCuR.d.ts → flat-list-BmQBB3ZC.d.ts} +3 -3
  9. package/dist/flat-list.d.ts +1 -1
  10. package/dist/{grid-list-DUvhSoT2.d.ts → grid-list-BVsUEvgd.d.ts} +3 -3
  11. package/dist/grid-list.d.ts +2 -2
  12. package/dist/incr-search.d.ts +1 -1
  13. package/dist/{index-CO6m-YC0.d.ts → index-BvoXLnBf.d.ts} +2 -2
  14. package/dist/{index-CSCrK0hR.d.ts → index-DuhzWWTr.d.ts} +10 -4
  15. package/dist/{index-B-hzcIP0.d.ts → index-DxyyVqzA.d.ts} +1 -1
  16. package/dist/index.d.ts +13 -11
  17. package/dist/index.js +12 -5
  18. package/dist/{list-native-drag-controller-CvXN3NB7.d.ts → list-native-drag-controller-NMspr0E1.d.ts} +1 -1
  19. package/dist/menu.d.ts +1 -1
  20. package/dist/miller.d.ts +3 -3
  21. package/dist/{tree-9Hs7VxuX.js → tree-BFoN2Z_P.js} +41 -10
  22. package/dist/{tree-component-Tslymyyl.d.ts → tree-component-CDsYTBDi.d.ts} +1 -1
  23. package/dist/tree.d.ts +3 -3
  24. package/dist/tree.js +1 -1
  25. package/dist/{types-DQ7KOUIj.d.ts → types-Jky6oNAp.d.ts} +8 -0
  26. package/dist/{vertical-list-B1Fq06xr.d.ts → vertical-list-ztrdFvyT.d.ts} +2 -2
  27. package/dist/vertical-list.d.ts +2 -2
  28. package/dist/vertical-list.js +4 -1
  29. package/docs-user/index.json +2 -2
  30. package/docs-user/tree.md +56 -3
  31. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
- import { B as ListNativeDragStartEvent, F as ListDragPreviewContext, I as ListDragPreviewRenderer, N as ListDragEntry, P as ListDragPreview, R as ListDragSource, z as ListNativeDragStartDetail } from "./tree-component-Tslymyyl.js";
1
+ import { B as ListNativeDragStartEvent, F as ListDragPreviewContext, I as ListDragPreviewRenderer, N as ListDragEntry, P as ListDragPreview, R as ListDragSource, z as ListNativeDragStartDetail } from "./tree-component-CDsYTBDi.js";
2
2
  import { n as ListViewportChangeEvent, t as ListViewportChangeDetail } from "./list-viewport-types-BRZsLcvp.js";
3
3
  import { i as ListGroupChangeEvent, l as ListGroupToggleDetail, n as ListGroupBy, o as ListGroupInfo, r as ListGroupChangeDetail, s as ListGroupLabel, u as ListGroupToggleEvent } from "./grouping-CUKgmkMm.js";
4
- import { n as CustomCheckboxOptions, t as AddItemOptions } from "./vertical-list-B1Fq06xr.js";
5
- import { a as DetailSortComparator, i as DetailGroupBy, n as DetailListElementEventMap, o as DetailSortItem, r as DetailFormatter, s as DetailSortMode, t as DetailListElement } from "./detail-list-w32XZEgH.js";
4
+ import { n as CustomCheckboxOptions, t as AddItemOptions } from "./vertical-list-ztrdFvyT.js";
5
+ import { a as DetailSortComparator, i as DetailGroupBy, n as DetailListElementEventMap, o as DetailSortItem, r as DetailFormatter, s as DetailSortMode, t as DetailListElement } from "./detail-list-CmQqeXvp.js";
6
6
  export { type AddItemOptions, type CustomCheckboxOptions, type DetailFormatter, type DetailGroupBy, DetailListElement, DetailListElementEventMap, type DetailSortComparator, type DetailSortItem, type DetailSortMode, type ListDragEntry, type ListDragPreview, type ListDragPreviewContext, type ListDragPreviewRenderer, type ListDragSource, type ListGroupBy, type ListGroupChangeDetail, type ListGroupChangeEvent, type ListGroupInfo, type ListGroupLabel, type ListGroupToggleDetail, type ListGroupToggleEvent, type ListNativeDragStartDetail, type ListNativeDragStartEvent, type ListViewportChangeDetail, type ListViewportChangeEvent };
@@ -1,9 +1,9 @@
1
1
  import "./icon-CDGprSdE.js";
2
- import { j as TreeDataModel } from "./tree-component-Tslymyyl.js";
3
- import { o as TreeNode, r as TreeFilterPredicate, t as LoadChildrenCallback } from "./types-DQ7KOUIj.js";
2
+ import { j as TreeDataModel } from "./tree-component-CDsYTBDi.js";
3
+ import { o as TreeNode, r as TreeFilterPredicate, t as LoadChildrenCallback } from "./types-Jky6oNAp.js";
4
4
  import "./crumbs.js";
5
5
  import { i as ListInteractionMode, l as ListSelectionMode } from "./list-selection-types-PjKdhF-a.js";
6
- import { r as VerticalListElement } from "./vertical-list-B1Fq06xr.js";
6
+ import { r as VerticalListElement } from "./vertical-list-ztrdFvyT.js";
7
7
  import { LitElement, PropertyValues } from "lit";
8
8
  //#region src/flat-list/types.d.ts
9
9
  /** How branches and leaves are ordered within one level. */
@@ -1,2 +1,2 @@
1
- import { _ as FlatListSelectEvent, a as FlatListContextMenuDetail, c as FlatListDropEvent, d as FlatListEditCommitDetail, f as FlatListEditCommitEvent, g as FlatListSelectDetail, h as FlatListNavigateEvent, i as FlatListBranchOrder, l as FlatListEditCancelDetail, m as FlatListNavigateDetail, n as FlatListActivateDetail, o as FlatListContextMenuEvent, p as FlatListElementEventMap, r as FlatListActivateEvent, s as FlatListDropDetail, t as FlatListElement, u as FlatListEditCancelEvent } from "./flat-list-CkRIZCuR.js";
1
+ import { _ as FlatListSelectEvent, a as FlatListContextMenuDetail, c as FlatListDropEvent, d as FlatListEditCommitDetail, f as FlatListEditCommitEvent, g as FlatListSelectDetail, h as FlatListNavigateEvent, i as FlatListBranchOrder, l as FlatListEditCancelDetail, m as FlatListNavigateDetail, n as FlatListActivateDetail, o as FlatListContextMenuEvent, p as FlatListElementEventMap, r as FlatListActivateEvent, s as FlatListDropDetail, t as FlatListElement, u as FlatListEditCancelEvent } from "./flat-list-BmQBB3ZC.js";
2
2
  export { type FlatListActivateDetail, type FlatListActivateEvent, type FlatListBranchOrder, type FlatListContextMenuDetail, type FlatListContextMenuEvent, type FlatListDropDetail, type FlatListDropEvent, type FlatListEditCancelDetail, type FlatListEditCancelEvent, type FlatListEditCommitDetail, type FlatListEditCommitEvent, FlatListElement, type FlatListElementEventMap, type FlatListNavigateDetail, type FlatListNavigateEvent, type FlatListSelectDetail, type FlatListSelectEvent };
@@ -1,10 +1,10 @@
1
- import { B as ListNativeDragStartEvent, I as ListDragPreviewRenderer, L as ListDragPreviewSourceResolver } from "./tree-component-Tslymyyl.js";
2
- import { S as ListSearchController } from "./index-CO6m-YC0.js";
1
+ import { B as ListNativeDragStartEvent, I as ListDragPreviewRenderer, L as ListDragPreviewSourceResolver } from "./tree-component-CDsYTBDi.js";
2
+ import { S as ListSearchController } from "./index-BvoXLnBf.js";
3
3
  import "./pan-text-CoYmt2qd.js";
4
4
  import { i as ListGroupChangeEvent, n as ListGroupBy, o as ListGroupInfo, s as ListGroupLabel, u as ListGroupToggleEvent } from "./grouping-CUKgmkMm.js";
5
5
  import { i as ListInteractionMode, l as ListSelectionMode } from "./list-selection-types-PjKdhF-a.js";
6
6
  import "./list-group-header.js";
7
- import "./list-native-drag-controller-CvXN3NB7.js";
7
+ import "./list-native-drag-controller-NMspr0E1.js";
8
8
  import { i as TickledItem, n as TickledController } from "./tickled-controller-DodxD3eQ.js";
9
9
  import { LitElement, PropertyValues, ReactiveController, ReactiveControllerHost, html } from "lit";
10
10
  import { CommandRegistry } from "@clinth/ui-commands";
@@ -1,5 +1,5 @@
1
- import { B as ListNativeDragStartEvent, F as ListDragPreviewContext, I as ListDragPreviewRenderer, N as ListDragEntry, P as ListDragPreview, R as ListDragSource, z as ListNativeDragStartDetail } from "./tree-component-Tslymyyl.js";
1
+ import { B as ListNativeDragStartEvent, F as ListDragPreviewContext, I as ListDragPreviewRenderer, N as ListDragEntry, P as ListDragPreview, R as ListDragSource, z as ListNativeDragStartDetail } from "./tree-component-CDsYTBDi.js";
2
2
  import { i as ListGroupChangeEvent, l as ListGroupToggleDetail, n as ListGroupBy, o as ListGroupInfo, r as ListGroupChangeDetail, s as ListGroupLabel, u as ListGroupToggleEvent } from "./grouping-CUKgmkMm.js";
3
3
  import { i as ListInteractionMode, l as ListSelectionMode } from "./list-selection-types-PjKdhF-a.js";
4
- import { _ as GridListTickleDetail, a as GridListCaptionBackdrop, b as GridListViewportChangeEvent, c as GridListDataAdapter, d as GridListItemClickDetail, f as GridListItemClickEvent, g as GridListSelectEvent, h as GridListSelectDetail, i as GridListCaptionAlign, l as GridListElementEventMap, m as GridListOrientation, n as GridListActivateDetail, o as GridListCaptionPosition, p as GridListItemEventDetail, r as GridListActivateEvent, s as GridListCaptionStyle, t as GridListElement, u as GridListFullElementEventMap, v as GridListTickleEvent, y as GridListViewportChangeDetail } from "./grid-list-DUvhSoT2.js";
4
+ import { _ as GridListTickleDetail, a as GridListCaptionBackdrop, b as GridListViewportChangeEvent, c as GridListDataAdapter, d as GridListItemClickDetail, f as GridListItemClickEvent, g as GridListSelectEvent, h as GridListSelectDetail, i as GridListCaptionAlign, l as GridListElementEventMap, m as GridListOrientation, n as GridListActivateDetail, o as GridListCaptionPosition, p as GridListItemEventDetail, r as GridListActivateEvent, s as GridListCaptionStyle, t as GridListElement, u as GridListFullElementEventMap, v as GridListTickleEvent, y as GridListViewportChangeDetail } from "./grid-list-BVsUEvgd.js";
5
5
  export { type GridListActivateDetail, type GridListActivateEvent, type GridListCaptionAlign, type GridListCaptionBackdrop, type GridListCaptionPosition, type GridListCaptionStyle, type GridListDataAdapter, GridListElement, type GridListElementEventMap, type GridListFullElementEventMap, type GridListItemClickDetail, type GridListItemClickEvent, type GridListItemEventDetail, type GridListOrientation, type GridListSelectDetail, type GridListSelectEvent, type GridListTickleDetail, type GridListTickleEvent, type GridListViewportChangeDetail, type GridListViewportChangeEvent, type ListDragEntry, type ListDragPreview, type ListDragPreviewContext, type ListDragPreviewRenderer, type ListDragSource, type ListGroupBy, type ListGroupChangeDetail, type ListGroupChangeEvent, type ListGroupInfo, type ListGroupLabel, type ListGroupToggleDetail, type ListGroupToggleEvent, type ListInteractionMode, type ListNativeDragStartDetail, type ListNativeDragStartEvent, type ListSelectionMode };
@@ -1,2 +1,2 @@
1
- import { A as FuzzySearch, C as ListSearchControllerOptions, D as IncrSearchTreeOptions, E as IncrSearchTreeController, F as IncrSearchChangeCallback, I as IncrSearchOptions, L as IncrSearchResult, M as HighlightOptions, N as HighlightTarget, O as createAcCompletionProvider, P as IncrSearch, R as IncrSearchState, S as ListSearchController, T as ListSearchMode, _ as DataListSearchAdapterOptions, a as RegisterListSearchCommandsOptions, b as LIST_SEARCH_MODES, c as applyHighlights, d as createFuzzySearch, f as ElementIncrSearch, g as createElementListSearchAdapter, h as ElementListSearchHost, i as LIST_SEARCH_COMMAND_IDS, j as FuzzySearchOptions, k as ElementIncrSearchOptions, l as buildHighlightTargets, m as ElementListSearchAdapterOptions, n as createTreeListSearchAdapter, o as registerListSearchCommands, p as createElementIncrSearch, r as listSearchStyles, s as createIncrSearch, t as TreeListSearchAdapterOptions, u as clearHighlights, v as DataListSearchItem, w as ListSearchHost, x as ListSearchAdapter, y as createDataListSearchAdapter } from "./index-CO6m-YC0.js";
1
+ import { A as FuzzySearch, C as ListSearchControllerOptions, D as IncrSearchTreeOptions, E as IncrSearchTreeController, F as IncrSearchChangeCallback, I as IncrSearchOptions, L as IncrSearchResult, M as HighlightOptions, N as HighlightTarget, O as createAcCompletionProvider, P as IncrSearch, R as IncrSearchState, S as ListSearchController, T as ListSearchMode, _ as DataListSearchAdapterOptions, a as RegisterListSearchCommandsOptions, b as LIST_SEARCH_MODES, c as applyHighlights, d as createFuzzySearch, f as ElementIncrSearch, g as createElementListSearchAdapter, h as ElementListSearchHost, i as LIST_SEARCH_COMMAND_IDS, j as FuzzySearchOptions, k as ElementIncrSearchOptions, l as buildHighlightTargets, m as ElementListSearchAdapterOptions, n as createTreeListSearchAdapter, o as registerListSearchCommands, p as createElementIncrSearch, r as listSearchStyles, s as createIncrSearch, t as TreeListSearchAdapterOptions, u as clearHighlights, v as DataListSearchItem, w as ListSearchHost, x as ListSearchAdapter, y as createDataListSearchAdapter } from "./index-BvoXLnBf.js";
2
2
  export { type DataListSearchAdapterOptions, type DataListSearchItem, type ElementIncrSearch, type ElementIncrSearchOptions, type ElementListSearchAdapterOptions, type ElementListSearchHost, type FuzzySearch, type FuzzySearchOptions, type HighlightOptions, type HighlightTarget, type IncrSearch, type IncrSearchChangeCallback, IncrSearchTreeController as IncrSearchMillerController, IncrSearchTreeController, type IncrSearchTreeOptions as IncrSearchMillerOptions, type IncrSearchTreeOptions, type IncrSearchOptions, type IncrSearchResult, type IncrSearchState, LIST_SEARCH_COMMAND_IDS, LIST_SEARCH_MODES, type ListSearchAdapter, ListSearchController, type ListSearchControllerOptions, type ListSearchHost, type ListSearchMode, type RegisterListSearchCommandsOptions, type TreeListSearchAdapterOptions, applyHighlights, buildHighlightTargets, clearHighlights, createAcCompletionProvider, createDataListSearchAdapter, createElementIncrSearch, createElementListSearchAdapter, createFuzzySearch, createIncrSearch, createTreeListSearchAdapter, listSearchStyles, registerListSearchCommands };
@@ -1,6 +1,6 @@
1
1
  import "./icon-CDGprSdE.js";
2
- import { E as TreeSearchHost } from "./tree-component-Tslymyyl.js";
3
- import { o as TreeNode } from "./types-DQ7KOUIj.js";
2
+ import { E as TreeSearchHost } from "./tree-component-CDsYTBDi.js";
3
+ import { o as TreeNode } from "./types-Jky6oNAp.js";
4
4
  import { ReactiveController, ReactiveControllerHost, TemplateResult, nothing } from "lit";
5
5
  import { FzfOptions } from "fzf";
6
6
  import { CommandRegistry } from "@clinth/ui-commands";
@@ -1,7 +1,7 @@
1
- import { A as TreeTickleEvent, C as TreeItemDblClickEvent, E as TreeSearchHost, I as ListDragPreviewRenderer, L as ListDragPreviewSourceResolver, O as TreeSelectEvent, _ as TreeDropTarget, a as TreeComponent, c as TreeDragContext, d as TreeDragStartEvent, h as TreeDropEvent, i as TreeCollapseEvent, j as TreeDataModel, l as TreeDragEndEvent, m as TreeDropDetail, n as TreeActivateEvent, o as TreeComponentEventMap, p as TreeDropContext, s as TreeDndMode, u as TreeDragOverEvent, w as TreeNavigateOptions, x as TreeItemClickEvent, y as TreeExpandEvent, z as ListNativeDragStartDetail } from "./tree-component-Tslymyyl.js";
2
- import { a as TreeItem, i as TreeInteractionMode, n as TreeExclusivity, o as TreeNode, r as TreeFilterPredicate, s as TreeSelectionFilter, t as LoadChildrenCallback } from "./types-DQ7KOUIj.js";
3
- import { S as ListSearchController } from "./index-CO6m-YC0.js";
4
- import { t as ListNativeDragController } from "./list-native-drag-controller-CvXN3NB7.js";
1
+ import { A as TreeTickleEvent, C as TreeItemDblClickEvent, E as TreeSearchHost, I as ListDragPreviewRenderer, L as ListDragPreviewSourceResolver, O as TreeSelectEvent, _ as TreeDropTarget, a as TreeComponent, c as TreeDragContext, d as TreeDragStartEvent, h as TreeDropEvent, i as TreeCollapseEvent, j as TreeDataModel, l as TreeDragEndEvent, m as TreeDropDetail, n as TreeActivateEvent, o as TreeComponentEventMap, p as TreeDropContext, s as TreeDndMode, u as TreeDragOverEvent, w as TreeNavigateOptions, x as TreeItemClickEvent, y as TreeExpandEvent, z as ListNativeDragStartDetail } from "./tree-component-CDsYTBDi.js";
2
+ import { a as TreeItem, i as TreeInteractionMode, n as TreeExclusivity, o as TreeNode, r as TreeFilterPredicate, s as TreeSelectionFilter, t as LoadChildrenCallback } from "./types-Jky6oNAp.js";
3
+ import { S as ListSearchController } from "./index-BvoXLnBf.js";
4
+ import { t as ListNativeDragController } from "./list-native-drag-controller-NMspr0E1.js";
5
5
  import { n as TickledController } from "./tickled-controller-DodxD3eQ.js";
6
6
  import { LitElement, PropertyValues, ReactiveController, ReactiveControllerHost, TemplateResult, nothing } from "lit";
7
7
  import { CommandRegistry } from "@clinth/ui-commands";
@@ -230,6 +230,12 @@ declare class TreeListElement extends TreeBaseElement {
230
230
  * </svg>`;
231
231
  */
232
232
  checkboxRenderer: ((state: TreeCheckboxState) => unknown) | undefined;
233
+ /**
234
+ * In `checked` mode, whether unselectable rows (`item.selectable === false`)
235
+ * keep the space their checkbox would occupy, so their carets and labels line
236
+ * up with selectable siblings. When off (default) they reserve no space.
237
+ */
238
+ alignCheckboxes: boolean;
233
239
  willUpdate(changedProps: PropertyValues): void;
234
240
  protected renderNodeContent(node: TreeNode, depth: number): TemplateResult;
235
241
  protected _renderNode(node: TreeNode, depth: number): TemplateResult;
@@ -1,5 +1,5 @@
1
1
  import "./icon-CDGprSdE.js";
2
- import { o as TreeNode } from "./types-DQ7KOUIj.js";
2
+ import { o as TreeNode } from "./types-Jky6oNAp.js";
3
3
  import { i as MenuContainer, n as MenuTrigger, r as MenuTriggerCommandDetail, t as MenuItem } from "./menu-item-bF6narIz.js";
4
4
  import { LitElement, TemplateResult } from "lit";
5
5
  import { CommandRegistry, KeyboardManager } from "@clinth/ui-commands";
package/dist/index.d.ts CHANGED
@@ -7,28 +7,28 @@ import { Checkbox, CheckboxChangeDetail, CheckboxChangeEvent, CheckboxEventMap }
7
7
  import { a as CheckState, c as ItemOrientation, i as CheckedSelectEventMap, n as CheckedSelectChangeDetail, o as CheckedSelectItem, r as CheckedSelectChangeEvent, s as ItemDisplay, t as CheckedSelect } from "./checked-select-CglRukbP.js";
8
8
  import { a as ColourPickerInputEvent, i as ColourPickerEventDetail, n as ColourPicker, o as OklchValue, r as ColourPickerChangeEvent, t as ColourPickerPopup } from "./index-tq6f8007.js";
9
9
  import { t as LabelledRangeInput } from "./index-CoqtMSd9.js";
10
- import { A as TreeTickleEvent, B as ListNativeDragStartEvent, C as TreeItemDblClickEvent, D as TreeSelectDetail, E as TreeSearchHost, F as ListDragPreviewContext, I as ListDragPreviewRenderer, L as ListDragPreviewSourceResolver, M as TreeDataModelOptions, N as ListDragEntry, O as TreeSelectEvent, P as ListDragPreview, R as ListDragSource, S as TreeItemDblClickDetail, T as TreeRevealMode, _ as TreeDropTarget, a as TreeComponent, b as TreeItemClickDetail, c as TreeDragContext, d as TreeDragStartEvent, f as TreeDropApplyContext, g as TreeDropPosition, h as TreeDropEvent, i as TreeCollapseEvent, j as TreeDataModel, k as TreeTickleDetail, l as TreeDragEndEvent, m as TreeDropDetail, n as TreeActivateEvent, o as TreeComponentEventMap, p as TreeDropContext, r as TreeCollapseDetail, s as TreeDndMode, t as TreeActivateDetail, u as TreeDragOverEvent, v as TreeExpandDetail, w as TreeNavigateOptions, x as TreeItemClickEvent, y as TreeExpandEvent, z as ListNativeDragStartDetail } from "./tree-component-Tslymyyl.js";
11
- import { a as TreeItem, i as TreeInteractionMode, n as TreeExclusivity, o as TreeNode, r as TreeFilterPredicate, s as TreeSelectionFilter, t as LoadChildrenCallback } from "./types-DQ7KOUIj.js";
12
- import { a as TreeDropVisibleRow, c as TreeListElement, d as TreeBaseElementEventMap, f as TreeVirtualize, i as TreeDropRowInfo, l as TreeCheckboxState, n as TreeDropControllerConfig, o as TreeController, p as TreeConfig, r as TreeDropResolvedDrag, s as TreeControllerOptions, t as TreeDropController, u as TreeBaseElement } from "./index-CSCrK0hR.js";
10
+ import { A as TreeTickleEvent, B as ListNativeDragStartEvent, C as TreeItemDblClickEvent, D as TreeSelectDetail, E as TreeSearchHost, F as ListDragPreviewContext, I as ListDragPreviewRenderer, L as ListDragPreviewSourceResolver, M as TreeDataModelOptions, N as ListDragEntry, O as TreeSelectEvent, P as ListDragPreview, R as ListDragSource, S as TreeItemDblClickDetail, T as TreeRevealMode, _ as TreeDropTarget, a as TreeComponent, b as TreeItemClickDetail, c as TreeDragContext, d as TreeDragStartEvent, f as TreeDropApplyContext, g as TreeDropPosition, h as TreeDropEvent, i as TreeCollapseEvent, j as TreeDataModel, k as TreeTickleDetail, l as TreeDragEndEvent, m as TreeDropDetail, n as TreeActivateEvent, o as TreeComponentEventMap, p as TreeDropContext, r as TreeCollapseDetail, s as TreeDndMode, t as TreeActivateDetail, u as TreeDragOverEvent, v as TreeExpandDetail, w as TreeNavigateOptions, x as TreeItemClickEvent, y as TreeExpandEvent, z as ListNativeDragStartDetail } from "./tree-component-CDsYTBDi.js";
11
+ import { a as TreeItem, i as TreeInteractionMode, n as TreeExclusivity, o as TreeNode, r as TreeFilterPredicate, s as TreeSelectionFilter, t as LoadChildrenCallback } from "./types-Jky6oNAp.js";
12
+ import { a as TreeDropVisibleRow, c as TreeListElement, d as TreeBaseElementEventMap, f as TreeVirtualize, i as TreeDropRowInfo, l as TreeCheckboxState, n as TreeDropControllerConfig, o as TreeController, p as TreeConfig, r as TreeDropResolvedDrag, s as TreeControllerOptions, t as TreeDropController, u as TreeBaseElement } from "./index-DuhzWWTr.js";
13
13
  import "./menu-item-bF6narIz.js";
14
14
  import { a as NarrowedTextItem, i as NarrowedTextChangeEvent, n as FuzzySearchResult, o as Orientation, r as NarrowedTextChangeDetail, s as SelectionMode, t as NarrowedTextElement } from "./index-o-CWDt11.js";
15
15
  import { CrumbNavigationChangeDetail, CrumbNavigationChangeEvent, CrumbNavigationElement, CrumbNavigationElementEventMap, CrumbNavigationExpandDetail, CrumbNavigationExpandEvent, CrumbNavigationItemClickDetail, CrumbNavigationItemClickEvent } from "./crumbs.js";
16
16
  import { ConfigEntry, DataDisplayComponent, FormattingOptions, RendererStyle } from "./data-display.js";
17
17
  import { n as ListViewportChangeEvent, t as ListViewportChangeDetail } from "./list-viewport-types-BRZsLcvp.js";
18
- import { A as DataGridEditorFactory, B as GlobalFormatter, C as BuiltInFormatterName, D as DataGridDataType, E as DataGridColumnMenu, F as DataGridInteractionMode, I as DataGridRowLook, L as DataGridSelectionMode, M as DataGridGetRowKey, N as DataGridGroupBy, O as DataGridEditability, P as DataGridGroupLabel, R as DataGridSortDirection, S as DataGridViewportChangeEvent, T as DataGridColumn, _ as DataGridSelectDetail, a as DataGridColumnReorderDetail, b as DataGridSortEvent, c as DataGridColumnResizeEvent, d as DataGridElement, f as DataGridElementEventMap, g as DataGridRowActivateEvent, h as DataGridRowActivateDetail, i as DataGridCellEditEvent, j as DataGridEditorType, k as DataGridEditorContext, l as DataGridColumnVisibilityDetail, m as DataGridGroupChangeEvent, n as DataGridCellClickEvent, o as DataGridColumnReorderEvent, p as DataGridGroupChangeDetail, r as DataGridCellEditDetail, s as DataGridColumnResizeDetail, t as DataGridCellClickDetail, u as DataGridColumnVisibilityEvent, v as DataGridSelectEvent, w as BuiltInFormatterOptions, x as DataGridViewportChangeDetail, y as DataGridSortDetail, z as DataGridSortState } from "./data-grid-D7RxYISt.js";
19
- import { A as FuzzySearch, C as ListSearchControllerOptions, D as IncrSearchTreeOptions, E as IncrSearchTreeController, F as IncrSearchChangeCallback, I as IncrSearchOptions, L as IncrSearchResult, M as HighlightOptions, N as HighlightTarget, O as createAcCompletionProvider, P as IncrSearch, R as IncrSearchState, S as ListSearchController, T as ListSearchMode, _ as DataListSearchAdapterOptions, a as RegisterListSearchCommandsOptions, b as LIST_SEARCH_MODES, c as applyHighlights, d as createFuzzySearch, f as ElementIncrSearch, g as createElementListSearchAdapter, h as ElementListSearchHost, i as LIST_SEARCH_COMMAND_IDS, j as FuzzySearchOptions, k as ElementIncrSearchOptions, l as buildHighlightTargets, m as ElementListSearchAdapterOptions, n as createTreeListSearchAdapter, o as registerListSearchCommands, p as createElementIncrSearch, r as listSearchStyles, s as createIncrSearch, t as TreeListSearchAdapterOptions, u as clearHighlights, v as DataListSearchItem, w as ListSearchHost, x as ListSearchAdapter, y as createDataListSearchAdapter } from "./index-CO6m-YC0.js";
20
- import { t as index_d_exports } from "./index-B-hzcIP0.js";
18
+ import { A as DataGridEditorFactory, B as GlobalFormatter, C as BuiltInFormatterName, D as DataGridDataType, E as DataGridColumnMenu, F as DataGridInteractionMode, I as DataGridRowLook, L as DataGridSelectionMode, M as DataGridGetRowKey, N as DataGridGroupBy, O as DataGridEditability, P as DataGridGroupLabel, R as DataGridSortDirection, S as DataGridViewportChangeEvent, T as DataGridColumn, _ as DataGridSelectDetail, a as DataGridColumnReorderDetail, b as DataGridSortEvent, c as DataGridColumnResizeEvent, d as DataGridElement, f as DataGridElementEventMap, g as DataGridRowActivateEvent, h as DataGridRowActivateDetail, i as DataGridCellEditEvent, j as DataGridEditorType, k as DataGridEditorContext, l as DataGridColumnVisibilityDetail, m as DataGridGroupChangeEvent, n as DataGridCellClickEvent, o as DataGridColumnReorderEvent, p as DataGridGroupChangeDetail, r as DataGridCellEditDetail, s as DataGridColumnResizeDetail, t as DataGridCellClickDetail, u as DataGridColumnVisibilityEvent, v as DataGridSelectEvent, w as BuiltInFormatterOptions, x as DataGridViewportChangeDetail, y as DataGridSortDetail, z as DataGridSortState } from "./data-grid-DmkId8bu.js";
19
+ import { A as FuzzySearch, C as ListSearchControllerOptions, D as IncrSearchTreeOptions, E as IncrSearchTreeController, F as IncrSearchChangeCallback, I as IncrSearchOptions, L as IncrSearchResult, M as HighlightOptions, N as HighlightTarget, O as createAcCompletionProvider, P as IncrSearch, R as IncrSearchState, S as ListSearchController, T as ListSearchMode, _ as DataListSearchAdapterOptions, a as RegisterListSearchCommandsOptions, b as LIST_SEARCH_MODES, c as applyHighlights, d as createFuzzySearch, f as ElementIncrSearch, g as createElementListSearchAdapter, h as ElementListSearchHost, i as LIST_SEARCH_COMMAND_IDS, j as FuzzySearchOptions, k as ElementIncrSearchOptions, l as buildHighlightTargets, m as ElementListSearchAdapterOptions, n as createTreeListSearchAdapter, o as registerListSearchCommands, p as createElementIncrSearch, r as listSearchStyles, s as createIncrSearch, t as TreeListSearchAdapterOptions, u as clearHighlights, v as DataListSearchItem, w as ListSearchHost, x as ListSearchAdapter, y as createDataListSearchAdapter } from "./index-BvoXLnBf.js";
20
+ import { t as index_d_exports } from "./index-DxyyVqzA.js";
21
21
  import { n as PanTextMode, t as PanTextElement } from "./pan-text-CoYmt2qd.js";
22
22
  import { a as ListGroupEventMap, c as ListGroupPartition, d as defaultGroupLabel, f as partitionByGroup, h as toggleInSet, i as ListGroupChangeEvent, l as ListGroupToggleDetail, m as toGroupKey, n as ListGroupBy, o as ListGroupInfo, p as resolveGroupKey, r as ListGroupChangeDetail, s as ListGroupLabel, t as EMPTY_GROUP_LABEL, u as ListGroupToggleEvent } from "./grouping-CUKgmkMm.js";
23
23
  import { a as ListItemClickDetail, c as ListSelectEvent, d as ListTickleEvent, i as ListInteractionMode, l as ListSelectionMode, n as ListActivateEvent, o as ListItemClickEvent, r as ListElementEventMap, s as ListSelectDetail, t as ListActivateDetail, u as ListTickleDetail } from "./list-selection-types-PjKdhF-a.js";
24
- import { a as ListContextMenuDetail, c as ListDragLeaveEvent, d as ListDropEvent, f as ListEditCancelDetail, h as ListEditCommitEvent, i as VerticalListElementEventMap, l as ListDragOverEvent, m as ListEditCommitDetail, n as CustomCheckboxOptions, o as ListContextMenuEvent, p as ListEditCancelEvent, r as VerticalListElement, s as ListDragLeaveDetail, t as AddItemOptions, u as ListDropDetail } from "./vertical-list-B1Fq06xr.js";
24
+ import { a as ListContextMenuDetail, c as ListDragLeaveEvent, d as ListDropEvent, f as ListEditCancelDetail, h as ListEditCommitEvent, i as VerticalListElementEventMap, l as ListDragOverEvent, m as ListEditCommitDetail, n as CustomCheckboxOptions, o as ListContextMenuEvent, p as ListEditCancelEvent, r as VerticalListElement, s as ListDragLeaveDetail, t as AddItemOptions, u as ListDropDetail } from "./vertical-list-ztrdFvyT.js";
25
25
  import { a as EditableMode, i as EditableLabelChangeEvent, n as EditableLabel, o as EntryMode, r as EditableLabelChangeDetail, t as DisplayTextLogic } from "./editable-label-rzXkjf1H.js";
26
- import { a as DetailSortComparator, i as DetailGroupBy, n as DetailListElementEventMap, o as DetailSortItem, r as DetailFormatter, s as DetailSortMode, t as DetailListElement } from "./detail-list-w32XZEgH.js";
26
+ import { a as DetailSortComparator, i as DetailGroupBy, n as DetailListElementEventMap, o as DetailSortItem, r as DetailFormatter, s as DetailSortMode, t as DetailListElement } from "./detail-list-CmQqeXvp.js";
27
27
  import { ListGroupHeaderElement } from "./list-group-header.js";
28
- import { _ as FlatListSelectEvent, a as FlatListContextMenuDetail, c as FlatListDropEvent, d as FlatListEditCommitDetail, f as FlatListEditCommitEvent, g as FlatListSelectDetail, h as FlatListNavigateEvent, i as FlatListBranchOrder, l as FlatListEditCancelDetail, m as FlatListNavigateDetail, n as FlatListActivateDetail, o as FlatListContextMenuEvent, p as FlatListElementEventMap, r as FlatListActivateEvent, s as FlatListDropDetail, t as FlatListElement, u as FlatListEditCancelEvent } from "./flat-list-CkRIZCuR.js";
28
+ import { _ as FlatListSelectEvent, a as FlatListContextMenuDetail, c as FlatListDropEvent, d as FlatListEditCommitDetail, f as FlatListEditCommitEvent, g as FlatListSelectDetail, h as FlatListNavigateEvent, i as FlatListBranchOrder, l as FlatListEditCancelDetail, m as FlatListNavigateDetail, n as FlatListActivateDetail, o as FlatListContextMenuEvent, p as FlatListElementEventMap, r as FlatListActivateEvent, s as FlatListDropDetail, t as FlatListElement, u as FlatListEditCancelEvent } from "./flat-list-BmQBB3ZC.js";
29
29
  import { FormElement } from "./form.js";
30
- import { A as DragSelectRect, C as TreeKeyboardNavControllerConfig, D as ListSelectionGesture, E as ListSelectionControllerConfig, M as ListDragSelectControllerConfig, O as ListSelectionModes, S as TreeKeyboardNavController, T as ListSelectionController, _ as GridListTickleDetail, a as GridListCaptionBackdrop, b as GridListViewportChangeEvent, c as GridListDataAdapter, d as GridListItemClickDetail, f as GridListItemClickEvent, g as GridListSelectEvent, h as GridListSelectDetail, i as GridListCaptionAlign, j as ListDragSelectController, k as isMultiMode, l as GridListElementEventMap, m as GridListOrientation, n as GridListActivateDetail, o as GridListCaptionPosition, p as GridListItemEventDetail, r as GridListActivateEvent, s as GridListCaptionStyle, t as GridListElement, u as GridListFullElementEventMap, v as GridListTickleEvent, w as TreeKeyboardNavItemId, x as TreeKeyboardNavCallbacks, y as GridListViewportChangeDetail } from "./grid-list-DUvhSoT2.js";
31
- import { n as ListNativeDragControllerConfig, t as ListNativeDragController } from "./list-native-drag-controller-CvXN3NB7.js";
30
+ import { A as DragSelectRect, C as TreeKeyboardNavControllerConfig, D as ListSelectionGesture, E as ListSelectionControllerConfig, M as ListDragSelectControllerConfig, O as ListSelectionModes, S as TreeKeyboardNavController, T as ListSelectionController, _ as GridListTickleDetail, a as GridListCaptionBackdrop, b as GridListViewportChangeEvent, c as GridListDataAdapter, d as GridListItemClickDetail, f as GridListItemClickEvent, g as GridListSelectEvent, h as GridListSelectDetail, i as GridListCaptionAlign, j as ListDragSelectController, k as isMultiMode, l as GridListElementEventMap, m as GridListOrientation, n as GridListActivateDetail, o as GridListCaptionPosition, p as GridListItemEventDetail, r as GridListActivateEvent, s as GridListCaptionStyle, t as GridListElement, u as GridListFullElementEventMap, v as GridListTickleEvent, w as TreeKeyboardNavItemId, x as TreeKeyboardNavCallbacks, y as GridListViewportChangeDetail } from "./grid-list-BVsUEvgd.js";
31
+ import { n as ListNativeDragControllerConfig, t as ListNativeDragController } from "./list-native-drag-controller-NMspr0E1.js";
32
32
  import { i as TickledItem, n as TickledController, r as TickledControllerConfig, t as InputMode } from "./tickled-controller-DodxD3eQ.js";
33
33
  import { a as IGroupedSubComponent, c as SubComponentActivateEvent, d as SubComponentItemClickEvent, f as SubComponentSelectDetail, h as SubComponentTickleEvent, i as GroupedSelectEvent, l as SubComponentFactory, m as SubComponentTickleDetail, n as GroupedItemListerElementEventMap, o as IGroupedSubComponentEventMap, p as SubComponentSelectEvent, r as GroupedSelectDetail, s as SubComponentActivateDetail, t as GroupedItemListerElement, u as SubComponentItemClickDetail } from "./grouped-item-lister-DETte0Dh.js";
34
34
  import { a as TitlebarToggleDetail, c as TitlebarVariant, i as TitlebarOrientation, n as TitlebarElement, o as TitlebarToggleEvent, r as TitlebarElementEventMap, s as TitlebarToggleInteraction, t as TitlebarCloseEvent } from "./titlebar-Tqu-VvMU.js";
@@ -2442,6 +2442,7 @@ type MulticolCategoryDefaults = {
2442
2442
  groupBy?: (item: MulticolItem) => string;
2443
2443
  allLabel?: string;
2444
2444
  sort?: SortDirection;
2445
+ menu?: boolean;
2445
2446
  };
2446
2447
  type MulticolCategory = {
2447
2448
  readonly key: string;
@@ -2456,6 +2457,7 @@ type MulticolColumnState = {
2456
2457
  readonly categoryKey: string;
2457
2458
  readonly sort: SortDirection;
2458
2459
  readonly grouped: boolean;
2460
+ readonly menu: boolean;
2459
2461
  readonly width?: number;
2460
2462
  };
2461
2463
  type MulticolColumnsChangeReason = `add` | `remove` | `reorder` | `category` | `sort` | `grouping` | `resize`;
package/dist/index.js CHANGED
@@ -27,7 +27,7 @@ import { t as CheckedSelect } from "./checked-select-lDgAQQ7v.js";
27
27
  import { n as ColourPicker, t as ColourPickerPopup } from "./colour-picker-BCMU7W7R.js";
28
28
  import { LabelledRangeInput } from "./labelled-range-input.js";
29
29
  import { t as collectDataResult } from "./data-provider-35TyWclX.js";
30
- import { a as TreeDataModel, c as pruneDraggedDescendants, i as TreeDropController, n as TreeListElement, o as applyTreeDrop, r as TreeBaseElement, s as dropTargetFor, t as TreeController } from "./tree-9Hs7VxuX.js";
30
+ import { a as TreeDataModel, c as pruneDraggedDescendants, i as TreeDropController, n as TreeListElement, o as applyTreeDrop, r as TreeBaseElement, s as dropTargetFor, t as TreeController } from "./tree-BFoN2Z_P.js";
31
31
  import { t as scrollFadeStyles } from "./scroll-fade-Xx28D7mH.js";
32
32
  import { NarrowedTextElement } from "./narrowed-text.js";
33
33
  import { CrumbNavigationElement } from "./crumbs.js";
@@ -9544,6 +9544,7 @@ var MulticolColumnController = class {
9544
9544
  categoryKey: options.category.key,
9545
9545
  sort: options.categoryDefaults?.sort ?? `asc`,
9546
9546
  grouped: options.categoryDefaults?.grouped ?? false,
9547
+ menu: options.categoryDefaults?.menu ?? true,
9547
9548
  width: 220
9548
9549
  };
9549
9550
  }
@@ -9554,6 +9555,9 @@ var MulticolColumnController = class {
9554
9555
  get categoryKey() {
9555
9556
  return this.#category.key;
9556
9557
  }
9558
+ get menu() {
9559
+ return this.#state.menu;
9560
+ }
9557
9561
  getState() {
9558
9562
  return { ...this.#state };
9559
9563
  }
@@ -9607,7 +9611,8 @@ var MulticolColumnController = class {
9607
9611
  ...this.#state,
9608
9612
  categoryKey: category.key,
9609
9613
  sort: category.defaults?.sort ?? `asc`,
9610
- grouped: category.defaults?.grouped ?? false
9614
+ grouped: category.defaults?.grouped ?? false,
9615
+ menu: category.defaults?.menu ?? true
9611
9616
  };
9612
9617
  this.clearSelection();
9613
9618
  this.#syncGrouping();
@@ -9797,7 +9802,7 @@ function renderItem(item) {
9797
9802
  }
9798
9803
  //#endregion
9799
9804
  //#region src/multicol-list/multicol-list.ts
9800
- registerIcon(`menu`, `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 12h16"/><path d="M4 18h16"/><path d="M4 6h16"/></svg>`);
9805
+ registerIcon(`menu`, `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="1"/><circle cx="19" cy="12" r="1"/><circle cx="5" cy="12" r="1"/></svg>`);
9801
9806
  const DEFAULT_COLUMN_WIDTH = 220;
9802
9807
  const MIN_COLUMN_WIDTH = 80;
9803
9808
  const MAX_COLUMN_WIDTH = 480;
@@ -9899,7 +9904,7 @@ let MulticolListElement = class MulticolListElement extends LitElement {
9899
9904
  }
9900
9905
  .reorder-handle .ixfx-handle {
9901
9906
  --ixfx-handle-length: 14px;
9902
- --ixfx-handle-thickness: var(--multicol-list-reorder-handle-width, 10px);
9907
+ --ixfx-handle-thickness: var(--multicol-list-reorder-handle-width, 6px);
9903
9908
  --ixfx-handle-dot-size: 3px;
9904
9909
  }
9905
9910
  .column-label {
@@ -9978,6 +9983,7 @@ let MulticolListElement = class MulticolListElement extends LitElement {
9978
9983
  position: relative;
9979
9984
  display: flex;
9980
9985
  flex-direction: column;
9986
+ --list-gutter: 0;
9981
9987
  }
9982
9988
  .all-row {
9983
9989
  display: flex;
@@ -10139,6 +10145,7 @@ let MulticolListElement = class MulticolListElement extends LitElement {
10139
10145
  this._openCategoryPicker(col, e.currentTarget);
10140
10146
  }}
10141
10147
  >${this._getCategoryLabel(col.categoryKey)}</button>
10148
+ ${col.menu ? html`
10142
10149
  <button
10143
10150
  class="burger-btn"
10144
10151
  data-tooltip="Column options"
@@ -10148,7 +10155,7 @@ let MulticolListElement = class MulticolListElement extends LitElement {
10148
10155
  }}
10149
10156
  >
10150
10157
  <ixfx-icon name="menu" size="14"></ixfx-icon>
10151
- </button>
10158
+ </button>` : nothing}
10152
10159
  <span
10153
10160
  class="resize-handle"
10154
10161
  ?data-active=${this._resizingColumnId === col.id}
@@ -1,4 +1,4 @@
1
- import { F as ListDragPreviewContext, I as ListDragPreviewRenderer, L as ListDragPreviewSourceResolver, N as ListDragEntry, R as ListDragSource, z as ListNativeDragStartDetail } from "./tree-component-Tslymyyl.js";
1
+ import { F as ListDragPreviewContext, I as ListDragPreviewRenderer, L as ListDragPreviewSourceResolver, N as ListDragEntry, R as ListDragSource, z as ListNativeDragStartDetail } from "./tree-component-CDsYTBDi.js";
2
2
  import { ReactiveController, ReactiveControllerHost } from "lit";
3
3
  //#region src/interaction/list-native-drag-controller.d.ts
4
4
  type ListNativeDragControllerConfig<T> = {
package/dist/menu.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  import { i as MenuContainer, n as MenuTrigger, t as MenuItem } from "./menu-item-bF6narIz.js";
2
- import { a as menuFromTree, c as MenuSeparator, d as MenuCheckItem, f as MenuBar, i as MenuFromTreeOptions, l as MenuSubTrigger, n as MenuRadioGroup, o as menuFromTreeToElements, r as MenuRadioItem, s as MenuHeader, u as MenuCommandController } from "./index-B-hzcIP0.js";
2
+ import { a as menuFromTree, c as MenuSeparator, d as MenuCheckItem, f as MenuBar, i as MenuFromTreeOptions, l as MenuSubTrigger, n as MenuRadioGroup, o as menuFromTreeToElements, r as MenuRadioItem, s as MenuHeader, u as MenuCommandController } from "./index-DxyyVqzA.js";
3
3
  export { MenuBar, MenuCheckItem, MenuCommandController, MenuContainer, type MenuFromTreeOptions, MenuHeader, MenuItem, MenuRadioGroup, MenuRadioItem, MenuSeparator, MenuSubTrigger, MenuTrigger, menuFromTree, menuFromTreeToElements };
package/dist/miller.d.ts CHANGED
@@ -1,6 +1,6 @@
1
- import { A as TreeTickleEvent, D as TreeSelectDetail, E as TreeSearchHost, O as TreeSelectEvent, a as TreeComponent, b as TreeItemClickDetail, i as TreeCollapseEvent, j as TreeDataModel, k as TreeTickleDetail, n as TreeActivateEvent, o as TreeComponentEventMap, r as TreeCollapseDetail, t as TreeActivateDetail, v as TreeExpandDetail, w as TreeNavigateOptions, x as TreeItemClickEvent, y as TreeExpandEvent } from "./tree-component-Tslymyyl.js";
2
- import { a as TreeItem, n as TreeExclusivity, o as TreeNode, r as TreeFilterPredicate, s as TreeSelectionFilter, t as LoadChildrenCallback } from "./types-DQ7KOUIj.js";
3
- import { S as ListSearchController } from "./index-CO6m-YC0.js";
1
+ import { A as TreeTickleEvent, D as TreeSelectDetail, E as TreeSearchHost, O as TreeSelectEvent, a as TreeComponent, b as TreeItemClickDetail, i as TreeCollapseEvent, j as TreeDataModel, k as TreeTickleDetail, n as TreeActivateEvent, o as TreeComponentEventMap, r as TreeCollapseDetail, t as TreeActivateDetail, v as TreeExpandDetail, w as TreeNavigateOptions, x as TreeItemClickEvent, y as TreeExpandEvent } from "./tree-component-CDsYTBDi.js";
2
+ import { a as TreeItem, n as TreeExclusivity, o as TreeNode, r as TreeFilterPredicate, s as TreeSelectionFilter, t as LoadChildrenCallback } from "./types-Jky6oNAp.js";
3
+ import { S as ListSearchController } from "./index-BvoXLnBf.js";
4
4
  import { n as TickledController } from "./tickled-controller-DodxD3eQ.js";
5
5
  import { LitElement, PropertyValues, TemplateResult, nothing } from "lit";
6
6
  import { CommandRegistry } from "@clinth/ui-commands";
@@ -919,7 +919,8 @@ function weaveGhosts(rows, prevKeys, ghosts) {
919
919
  * Compute checkbox states for all nodes in a single iterative post-order pass.
920
920
  * A leaf (or a branch with no children) uses `selected.has(node)`; otherwise a
921
921
  * branch is checked if all children are checked, unchecked if all are
922
- * unchecked, else indeterminate.
922
+ * unchecked, else indeterminate. Unselectable leaves (`item.selectable === false`)
923
+ * are ignored when deriving a parent's state.
923
924
  *
924
925
  * @param root - The root node
925
926
  * @param selected - Set of selected nodes
@@ -934,7 +935,8 @@ function computeCheckboxStates(root, selected) {
934
935
  node: top,
935
936
  next: 0,
936
937
  checked: 0,
937
- unchecked: 0
938
+ unchecked: 0,
939
+ counted: 0
938
940
  });
939
941
  while (stack.length > 0) {
940
942
  const frame = stack[stack.length - 1];
@@ -946,19 +948,23 @@ function computeCheckboxStates(root, selected) {
946
948
  node: children[frame.next++],
947
949
  next: 0,
948
950
  checked: 0,
949
- unchecked: 0
951
+ unchecked: 0,
952
+ counted: 0
950
953
  });
951
954
  continue;
952
955
  }
953
956
  stack.pop();
954
957
  let state;
955
958
  if (isLeafLike) state = selected.has(node) ? `checked` : `unchecked`;
956
- else if (frame.checked === children.length) state = `checked`;
957
- else if (frame.unchecked === children.length) state = `unchecked`;
959
+ else if (frame.counted === 0) state = `unchecked`;
960
+ else if (frame.checked === frame.counted) state = `checked`;
961
+ else if (frame.unchecked === frame.counted) state = `unchecked`;
958
962
  else state = `indeterminate`;
959
963
  states.set(node.item.key, state);
960
- if (stack.length > 0) {
964
+ const abstains = isLeafLike && node.item.selectable === false;
965
+ if (stack.length > 0 && !abstains) {
961
966
  const parent = stack[stack.length - 1];
967
+ parent.counted++;
962
968
  if (state === `checked`) parent.checked++;
963
969
  else if (state === `unchecked`) parent.unchecked++;
964
970
  }
@@ -1739,6 +1745,10 @@ let TreeBaseElement = class TreeBaseElement extends LitElement {
1739
1745
  }
1740
1746
  this.#flat = void 0;
1741
1747
  if (changedProps.has(`root`) || changedProps.has(`model`)) this.#structureVersion++;
1748
+ if (changedProps.has(`root`) && this.root && this._expandedKeys.size > 0) {
1749
+ const { parentByKey } = this.#getTreeIndex();
1750
+ this.#setExpanded(withoutKeys(this._expandedKeys, (key) => !parentByKey.has(key)));
1751
+ }
1742
1752
  this.#diffVisibleNodes(changedProps.has(`filterPredicate`));
1743
1753
  const virtual = this.#virtualActive();
1744
1754
  this.toggleAttribute(`data-virtual`, virtual);
@@ -1853,7 +1863,6 @@ let TreeBaseElement = class TreeBaseElement extends LitElement {
1853
1863
  this.#syncStickyScroll();
1854
1864
  if (changedProps.has(`root`) && this.root) {
1855
1865
  this.#abortPending();
1856
- this.#setExpanded(/* @__PURE__ */ new Set());
1857
1866
  this.#clearSelectionInternal();
1858
1867
  this.tickled.clearTickled();
1859
1868
  this._focusedDepth = 0;
@@ -2529,8 +2538,9 @@ let TreeBaseElement = class TreeBaseElement extends LitElement {
2529
2538
  return result;
2530
2539
  }
2531
2540
  #canSelect(node) {
2541
+ if (node.item.selectable === false) return false;
2532
2542
  if (this.selectionFilter === `none`) return false;
2533
- if (this.selectionFilter === `leaf`) return node.item.isLeaf === true;
2543
+ if (this.selectionFilter === `leaf`) return node.item.isLeaf === true || node.item.isLeaf !== false && node.children?.length === 0;
2534
2544
  if (this.selectionFilter === `branch`) return node.item.isLeaf === false || node.children !== void 0 && node.children.length > 0;
2535
2545
  return true;
2536
2546
  }
@@ -2578,6 +2588,10 @@ let TreeBaseElement = class TreeBaseElement extends LitElement {
2578
2588
  _handleItemClick(node, depth, event) {
2579
2589
  if (this.#drop?.isDragging || this.#nativeDrag?.isDragging || this.#postDragSuppressTimer !== void 0) return;
2580
2590
  if (event && event.detail >= 2) return;
2591
+ if (this.interactionMode === `checked` && node.item.selectable !== false && event && !(event.target instanceof Element && event.target.closest(`.tree-label`))) {
2592
+ this._handleCheckboxClick(event, node, depth);
2593
+ return;
2594
+ }
2581
2595
  if (this.#pendingNode && this._expandedKeys.has(this.#pendingNode.item.key)) this.#abortPending();
2582
2596
  this.tickled.handlePointerEnter(node.item.key);
2583
2597
  this._focusedDepth = depth;
@@ -3454,6 +3468,10 @@ TreeBaseElement = __decorate([safeCustomElement(`ixfx-tree-base`)], TreeBaseElem
3454
3468
  //#endregion
3455
3469
  //#region src/tree/tree-list.ts
3456
3470
  let TreeListElement = class TreeListElement extends TreeBaseElement {
3471
+ constructor(..._args) {
3472
+ super(..._args);
3473
+ this.alignCheckboxes = false;
3474
+ }
3457
3475
  /** Checkbox tri-states for the whole loaded tree, rebuilt only when the structure or selection changes. */
3458
3476
  #checkboxCache;
3459
3477
  willUpdate(changedProps) {
@@ -3491,6 +3509,7 @@ let TreeListElement = class TreeListElement extends TreeBaseElement {
3491
3509
  </span>
3492
3510
  `;
3493
3511
  if (this.interactionMode === `checked`) {
3512
+ if (node.item.selectable === false) return this.alignCheckboxes ? html`<span class="tree-checkbox-spacer" aria-hidden="true"></span>${caretAndLabel}` : caretAndLabel;
3494
3513
  const state = this.#checkboxCache?.states.get(node.item.key) ?? `unchecked`;
3495
3514
  return html`${this.#renderCheckbox(node, depth, state)}${caretAndLabel}`;
3496
3515
  }
@@ -3605,9 +3624,16 @@ let TreeListElement = class TreeListElement extends TreeBaseElement {
3605
3624
  anchor-name: --tooltip-tree;
3606
3625
  }
3607
3626
 
3608
- .tree-checkbox {
3627
+ .tree-checkbox,
3628
+ .tree-checkbox-spacer {
3609
3629
  flex-shrink: 0;
3610
- margin-right: var(--space-xs, 3px);
3630
+ box-sizing: border-box;
3631
+ width: var(--tree-checkbox-size, 14px);
3632
+ height: var(--tree-checkbox-size, 14px);
3633
+ margin: 0 var(--space-xs, 3px) 0 0;
3634
+ }
3635
+
3636
+ .tree-checkbox {
3611
3637
  cursor: pointer;
3612
3638
  accent-color: var(--accent);
3613
3639
  pointer-events: auto;
@@ -3646,6 +3672,11 @@ let TreeListElement = class TreeListElement extends TreeBaseElement {
3646
3672
  }
3647
3673
  };
3648
3674
  __decorate([property({ attribute: false })], TreeListElement.prototype, "checkboxRenderer", void 0);
3675
+ __decorate([property({
3676
+ type: Boolean,
3677
+ reflect: true,
3678
+ attribute: `align-checkboxes`
3679
+ })], TreeListElement.prototype, "alignCheckboxes", void 0);
3649
3680
  TreeListElement = __decorate([safeCustomElement(`ixfx-tree-list`)], TreeListElement);
3650
3681
  //#endregion
3651
3682
  //#region src/tree/tree-controller.ts
@@ -1,4 +1,4 @@
1
- import { a as TreeItem, n as TreeExclusivity, o as TreeNode, r as TreeFilterPredicate, s as TreeSelectionFilter, t as LoadChildrenCallback } from "./types-DQ7KOUIj.js";
1
+ import { a as TreeItem, n as TreeExclusivity, o as TreeNode, r as TreeFilterPredicate, s as TreeSelectionFilter, t as LoadChildrenCallback } from "./types-Jky6oNAp.js";
2
2
  //#region src/interaction/list-drag-types.d.ts
3
3
  interface ListDragEntry<T> {
4
4
  readonly key: string;
package/dist/tree.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { A as TreeTickleEvent, D as TreeSelectDetail, M as TreeDataModelOptions, O as TreeSelectEvent, T as TreeRevealMode, _ as TreeDropTarget, b as TreeItemClickDetail, c as TreeDragContext, d as TreeDragStartEvent, g as TreeDropPosition, h as TreeDropEvent, i as TreeCollapseEvent, j as TreeDataModel, k as TreeTickleDetail, l as TreeDragEndEvent, m as TreeDropDetail, n as TreeActivateEvent, o as TreeComponentEventMap, p as TreeDropContext, r as TreeCollapseDetail, s as TreeDndMode, t as TreeActivateDetail, u as TreeDragOverEvent, v as TreeExpandDetail, w as TreeNavigateOptions, x as TreeItemClickEvent, y as TreeExpandEvent } from "./tree-component-Tslymyyl.js";
2
- import { a as TreeItem, n as TreeExclusivity, o as TreeNode, r as TreeFilterPredicate, s as TreeSelectionFilter, t as LoadChildrenCallback } from "./types-DQ7KOUIj.js";
3
- import { a as TreeDropVisibleRow, c as TreeListElement, d as TreeBaseElementEventMap, f as TreeVirtualize, i as TreeDropRowInfo, l as TreeCheckboxState, n as TreeDropControllerConfig, o as TreeController, p as TreeConfig, r as TreeDropResolvedDrag, s as TreeControllerOptions, t as TreeDropController, u as TreeBaseElement } from "./index-CSCrK0hR.js";
1
+ import { A as TreeTickleEvent, D as TreeSelectDetail, M as TreeDataModelOptions, O as TreeSelectEvent, T as TreeRevealMode, _ as TreeDropTarget, b as TreeItemClickDetail, c as TreeDragContext, d as TreeDragStartEvent, g as TreeDropPosition, h as TreeDropEvent, i as TreeCollapseEvent, j as TreeDataModel, k as TreeTickleDetail, l as TreeDragEndEvent, m as TreeDropDetail, n as TreeActivateEvent, o as TreeComponentEventMap, p as TreeDropContext, r as TreeCollapseDetail, s as TreeDndMode, t as TreeActivateDetail, u as TreeDragOverEvent, v as TreeExpandDetail, w as TreeNavigateOptions, x as TreeItemClickEvent, y as TreeExpandEvent } from "./tree-component-CDsYTBDi.js";
2
+ import { a as TreeItem, n as TreeExclusivity, o as TreeNode, r as TreeFilterPredicate, s as TreeSelectionFilter, t as LoadChildrenCallback } from "./types-Jky6oNAp.js";
3
+ import { a as TreeDropVisibleRow, c as TreeListElement, d as TreeBaseElementEventMap, f as TreeVirtualize, i as TreeDropRowInfo, l as TreeCheckboxState, n as TreeDropControllerConfig, o as TreeController, p as TreeConfig, r as TreeDropResolvedDrag, s as TreeControllerOptions, t as TreeDropController, u as TreeBaseElement } from "./index-DuhzWWTr.js";
4
4
  export { type LoadChildrenCallback, type TreeActivateDetail, type TreeActivateEvent, TreeBaseElement, TreeBaseElementEventMap, type TreeCheckboxState, type TreeCollapseDetail, type TreeCollapseEvent, type TreeComponentEventMap, TreeConfig, TreeController, TreeControllerOptions, TreeDataModel, type TreeDataModelOptions, type TreeDndMode, type TreeDragContext, type TreeDragEndEvent, type TreeDragOverEvent, type TreeDragStartEvent, type TreeDropContext, TreeDropController, TreeDropControllerConfig, type TreeDropDetail, type TreeDropEvent, type TreeDropPosition, TreeDropResolvedDrag, TreeDropRowInfo, type TreeDropTarget, TreeDropVisibleRow, type TreeExclusivity, type TreeExpandDetail, type TreeExpandEvent, type TreeFilterPredicate, type TreeItem, type TreeItemClickDetail, type TreeItemClickEvent, TreeListElement, type TreeNavigateOptions, type TreeNode, type TreeRevealMode, type TreeSelectDetail, type TreeSelectEvent, type TreeSelectionFilter, type TreeTickleDetail, type TreeTickleEvent, TreeVirtualize };
package/dist/tree.js CHANGED
@@ -1,2 +1,2 @@
1
- import { a as TreeDataModel, i as TreeDropController, n as TreeListElement, r as TreeBaseElement, t as TreeController } from "./tree-9Hs7VxuX.js";
1
+ import { a as TreeDataModel, i as TreeDropController, n as TreeListElement, r as TreeBaseElement, t as TreeController } from "./tree-BFoN2Z_P.js";
2
2
  export { TreeBaseElement, TreeController, TreeDataModel, TreeDropController, TreeListElement };
@@ -36,6 +36,14 @@ type TreeItem = {
36
36
  * (`beginEdit`) uses it; other components ignore it.
37
37
  */
38
38
  editable?: boolean;
39
+ /**
40
+ * Set to `false` to make this node unselectable, regardless of
41
+ * `selectionFilter`. In `ixfx-tree-list`'s `checked` mode no checkbox is
42
+ * drawn for it (see `alignCheckboxes`). Unselectable branches can still be
43
+ * expanded, and their selectable descendants can still be selected.
44
+ * Default: selectable.
45
+ */
46
+ selectable?: boolean;
39
47
  /** Tooltip text shown on hover. */
40
48
  tooltip?: string;
41
49
  /** Optional string value, e.g. for use as a command/route. */
@@ -1,6 +1,6 @@
1
- import { B as ListNativeDragStartEvent, I as ListDragPreviewRenderer, L as ListDragPreviewSourceResolver } from "./tree-component-Tslymyyl.js";
1
+ import { B as ListNativeDragStartEvent, I as ListDragPreviewRenderer, L as ListDragPreviewSourceResolver } from "./tree-component-CDsYTBDi.js";
2
2
  import { n as ListViewportChangeEvent } from "./list-viewport-types-BRZsLcvp.js";
3
- import { S as ListSearchController } from "./index-CO6m-YC0.js";
3
+ import { S as ListSearchController } from "./index-BvoXLnBf.js";
4
4
  import { i as ListInteractionMode, l as ListSelectionMode, r as ListElementEventMap } from "./list-selection-types-PjKdhF-a.js";
5
5
  import "./editable-label-rzXkjf1H.js";
6
6
  import { LitElement, PropertyValues } from "lit";
@@ -1,5 +1,5 @@
1
- import { B as ListNativeDragStartEvent, F as ListDragPreviewContext, I as ListDragPreviewRenderer, N as ListDragEntry, P as ListDragPreview, R as ListDragSource, z as ListNativeDragStartDetail } from "./tree-component-Tslymyyl.js";
1
+ import { B as ListNativeDragStartEvent, F as ListDragPreviewContext, I as ListDragPreviewRenderer, N as ListDragEntry, P as ListDragPreview, R as ListDragSource, z as ListNativeDragStartDetail } from "./tree-component-CDsYTBDi.js";
2
2
  import { n as ListViewportChangeEvent, t as ListViewportChangeDetail } from "./list-viewport-types-BRZsLcvp.js";
3
3
  import { a as ListItemClickDetail, c as ListSelectEvent, d as ListTickleEvent, i as ListInteractionMode, l as ListSelectionMode, n as ListActivateEvent, o as ListItemClickEvent, r as ListElementEventMap, s as ListSelectDetail, t as ListActivateDetail, u as ListTickleDetail } from "./list-selection-types-PjKdhF-a.js";
4
- import { a as ListContextMenuDetail, c as ListDragLeaveEvent, d as ListDropEvent, f as ListEditCancelDetail, h as ListEditCommitEvent, i as VerticalListElementEventMap, l as ListDragOverEvent, m as ListEditCommitDetail, n as CustomCheckboxOptions, o as ListContextMenuEvent, p as ListEditCancelEvent, r as VerticalListElement, s as ListDragLeaveDetail, t as AddItemOptions, u as ListDropDetail } from "./vertical-list-B1Fq06xr.js";
4
+ import { a as ListContextMenuDetail, c as ListDragLeaveEvent, d as ListDropEvent, f as ListEditCancelDetail, h as ListEditCommitEvent, i as VerticalListElementEventMap, l as ListDragOverEvent, m as ListEditCommitDetail, n as CustomCheckboxOptions, o as ListContextMenuEvent, p as ListEditCancelEvent, r as VerticalListElement, s as ListDragLeaveDetail, t as AddItemOptions, u as ListDropDetail } from "./vertical-list-ztrdFvyT.js";
5
5
  export { AddItemOptions, CustomCheckboxOptions, type ListActivateDetail, type ListActivateEvent, type ListContextMenuDetail, type ListContextMenuEvent, type ListDragEntry, type ListDragLeaveDetail, type ListDragLeaveEvent, type ListDragOverEvent, type ListDragPreview, type ListDragPreviewContext, type ListDragPreviewRenderer, type ListDragSource, type ListDropDetail, type ListDropEvent, type ListEditCancelDetail, type ListEditCancelEvent, type ListEditCommitDetail, type ListEditCommitEvent, type ListElementEventMap, type ListInteractionMode, type ListItemClickDetail, type ListItemClickEvent, type ListNativeDragStartDetail, type ListNativeDragStartEvent, type ListSelectDetail, type ListSelectEvent, type ListSelectionMode, type ListTickleDetail, type ListTickleEvent, type ListViewportChangeDetail, type ListViewportChangeEvent, VerticalListElement, VerticalListElementEventMap };
@@ -1543,6 +1543,8 @@ let VerticalListElement = class VerticalListElement extends LitElement {
1543
1543
  box-sizing: border-box;
1544
1544
  outline: none;
1545
1545
  --ixfx-list-item-padding: var(--ixfx-list-item-padding, var(--list-item-padding, 4px var(--space-m, 8px)));
1546
+ --_item-padding:
1547
+ var(--ixfx-list-item-padding, var(--list-item-padding, 0 var(--space-xs, 3px)));
1546
1548
  }
1547
1549
 
1548
1550
  :host(:focus-visible) {
@@ -1579,7 +1581,7 @@ let VerticalListElement = class VerticalListElement extends LitElement {
1579
1581
  ::slotted(li) {
1580
1582
  display: flex;
1581
1583
  align-items: center;
1582
- padding: var(--ixfx-list-item-padding);
1584
+ padding: var(--_item-padding);
1583
1585
  /* Inset each row from the scroll container's edges (margin, not padding:
1584
1586
  padding is inside the border box, so the tickle/selection outlines
1585
1587
  would still sit flush against the edge and be clipped). */
@@ -1701,6 +1703,7 @@ let VerticalListElement = class VerticalListElement extends LitElement {
1701
1703
  background: transparent;
1702
1704
  color: inherit;
1703
1705
  outline: 1px solid transparent;
1706
+ padding: var(--space-s);
1704
1707
  }
1705
1708
 
1706
1709
  :host([interaction-mode="checked"]) ::slotted([data-selected][data-tickled]) {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ixfx/components",
3
- "version": "0.14.1",
4
- "generated": "2026-10-09T22:40:55.145Z",
3
+ "version": "0.14.3",
4
+ "generated": "2026-10-16T15:45:06.852Z",
5
5
  "components": [
6
6
  {
7
7
  "name": "ac-text",