@ixfx/components 0.7.2 → 0.7.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 (74) hide show
  1. package/bundle/index.d.ts +198 -1
  2. package/bundle/index.d.ts.map +1 -1
  3. package/bundle/index.js +123 -8
  4. package/bundle/index.js.map +1 -1
  5. package/dist/ac-text.d.ts +1 -1
  6. package/dist/{ac-token--_vCHXWw.d.ts → ac-token-TCLAZeVg.d.ts} +2 -2
  7. package/dist/{ac-token--_vCHXWw.d.ts.map → ac-token-TCLAZeVg.d.ts.map} +1 -1
  8. package/dist/ac-token.d.ts +1 -1
  9. package/dist/button.d.ts +1 -1
  10. package/dist/button.d.ts.map +1 -1
  11. package/dist/colour-picker.d.ts +1 -1
  12. package/dist/crumbs.d.ts +1 -1
  13. package/dist/{data-grid-Bh4YrQGK.d.ts → data-grid-Db4QpnII.d.ts} +2 -2
  14. package/dist/{data-grid-Bh4YrQGK.d.ts.map → data-grid-Db4QpnII.d.ts.map} +1 -1
  15. package/dist/data-grid.d.ts +1 -1
  16. package/dist/data-grid.js +1 -1
  17. package/dist/{grouped-item-lister-DnWB-eFT.d.ts → grouped-item-lister-BWlC9S4e.d.ts} +2 -2
  18. package/dist/{grouped-item-lister-DnWB-eFT.d.ts.map → grouped-item-lister-BWlC9S4e.d.ts.map} +1 -1
  19. package/dist/grouped-item-lister.d.ts +1 -1
  20. package/dist/{icon-CDGprSdE.d.ts → icon-DR_3rSyZ.d.ts} +2 -2
  21. package/dist/icon-DR_3rSyZ.d.ts.map +1 -0
  22. package/dist/icons.d.ts +2 -2
  23. package/dist/{index-tq6f8007.d.ts → index-BOUaDIW-.d.ts} +2 -2
  24. package/dist/{index-tq6f8007.d.ts.map → index-BOUaDIW-.d.ts.map} +1 -1
  25. package/dist/{index-CoqtMSd9.d.ts → index-BUB5SICW.d.ts} +2 -2
  26. package/dist/{index-CoqtMSd9.d.ts.map → index-BUB5SICW.d.ts.map} +1 -1
  27. package/dist/{index-9AhaHIT2.d.ts → index-C59-JEPl.d.ts} +3 -3
  28. package/dist/{index-9AhaHIT2.d.ts.map → index-C59-JEPl.d.ts.map} +1 -1
  29. package/dist/{index-UvnoZUAo.d.ts → index-CJ5fshD3.d.ts} +2 -2
  30. package/dist/{index-UvnoZUAo.d.ts.map → index-CJ5fshD3.d.ts.map} +1 -1
  31. package/dist/{index-CS9yM8L-.d.ts → index-DsjpDksO.d.ts} +2 -2
  32. package/dist/{index-CS9yM8L-.d.ts.map → index-DsjpDksO.d.ts.map} +1 -1
  33. package/dist/index.d.ts +212 -14
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +123 -6
  36. package/dist/index.js.map +1 -1
  37. package/dist/{labelled-input-base-DiTme1JO.d.ts → labelled-input-base-Dp_9KP0G.d.ts} +2 -2
  38. package/dist/{labelled-input-base-DiTme1JO.d.ts.map → labelled-input-base-Dp_9KP0G.d.ts.map} +1 -1
  39. package/dist/labelled-radial-input.d.ts +2 -2
  40. package/dist/labelled-radial-input.d.ts.map +1 -1
  41. package/dist/labelled-range-input.d.ts +1 -1
  42. package/dist/labelled-slider-input.d.ts +1 -1
  43. package/dist/{menu-CXDFJxNm.js → menu-DMzjkVnK.js} +5 -5
  44. package/dist/menu-DMzjkVnK.js.map +1 -0
  45. package/dist/{menu-item-CZi9vy5O.d.ts → menu-item-ZmkXNjek.d.ts} +2 -2
  46. package/dist/{menu-item-CZi9vy5O.d.ts.map → menu-item-ZmkXNjek.d.ts.map} +1 -1
  47. package/dist/menu.d.ts +2 -2
  48. package/dist/menu.js +1 -1
  49. package/dist/miller.d.ts +1 -1
  50. package/dist/panel.d.ts +1 -1
  51. package/dist/{split-layout-JK3xWVX2.d.ts → split-layout-C5SYbDrq.d.ts} +2 -2
  52. package/dist/{split-layout-JK3xWVX2.d.ts.map → split-layout-C5SYbDrq.d.ts.map} +1 -1
  53. package/dist/split-layout.d.ts +1 -1
  54. package/dist/{tab-list-CGyPt07Z.d.ts → tab-list-DbMIL520.d.ts} +2 -2
  55. package/dist/{tab-list-CGyPt07Z.d.ts.map → tab-list-DbMIL520.d.ts.map} +1 -1
  56. package/dist/tabs.d.ts +1 -1
  57. package/dist/{tickled-controller-CRzdIEjJ.d.ts → tickled-controller-Ds1DMyG7.d.ts} +2 -2
  58. package/dist/{tickled-controller-CRzdIEjJ.d.ts.map → tickled-controller-Ds1DMyG7.d.ts.map} +1 -1
  59. package/dist/{titlebar-Bj5pfdw_.d.ts → titlebar-B23MrIbI.d.ts} +2 -2
  60. package/dist/{titlebar-Bj5pfdw_.d.ts.map → titlebar-B23MrIbI.d.ts.map} +1 -1
  61. package/dist/titlebar.d.ts +1 -1
  62. package/dist/tree.d.ts +1 -1
  63. package/dist/{vertical-list-ClnqTkF3.js → vertical-list-B4w_ksJk.js} +2 -2
  64. package/dist/{vertical-list-ClnqTkF3.js.map → vertical-list-B4w_ksJk.js.map} +1 -1
  65. package/dist/vertical-list.js +1 -1
  66. package/docs-user/README.md +1 -0
  67. package/docs-user/detail-list.md +42 -15
  68. package/docs-user/index.json +6 -2
  69. package/docs-user/infra-tickled.md +163 -0
  70. package/docs-user/llms.txt +1 -0
  71. package/llms.txt +1 -0
  72. package/package.json +1 -1
  73. package/dist/icon-CDGprSdE.d.ts.map +0 -1
  74. package/dist/menu-CXDFJxNm.js.map +0 -1
package/bundle/index.js CHANGED
@@ -4048,6 +4048,99 @@ var ListSelectionController = class {
4048
4048
  }
4049
4049
  };
4050
4050
  //#endregion
4051
+ //#region src/interaction/tree-keyboard-controller.ts
4052
+ var TreeKeyboardNavController = class {
4053
+ constructor(host, tickled, config) {
4054
+ this.handleKeyDown = (event) => {
4055
+ if (this.disableKeyboardNavigation()) return;
4056
+ const { key } = event;
4057
+ if ([
4058
+ `ArrowDown`,
4059
+ `ArrowUp`,
4060
+ `ArrowLeft`,
4061
+ `ArrowRight`,
4062
+ `Enter`,
4063
+ `Escape`
4064
+ ].includes(key)) this.tickled.setInputMode(`keyboard`);
4065
+ switch (key) {
4066
+ case `ArrowDown`:
4067
+ event.preventDefault();
4068
+ this.#handleArrowDown();
4069
+ break;
4070
+ case `ArrowUp`:
4071
+ event.preventDefault();
4072
+ this.#handleArrowUp();
4073
+ break;
4074
+ case `ArrowRight`:
4075
+ event.preventDefault();
4076
+ this.#handleArrowRight();
4077
+ break;
4078
+ case `ArrowLeft`:
4079
+ event.preventDefault();
4080
+ this.#handleArrowLeft();
4081
+ break;
4082
+ case `Enter`:
4083
+ event.preventDefault();
4084
+ this.#handleEnter();
4085
+ break;
4086
+ case `Escape`:
4087
+ event.preventDefault();
4088
+ this.callbacks.onEscape?.();
4089
+ }
4090
+ };
4091
+ this.host = host;
4092
+ this.tickled = tickled;
4093
+ this.callbacks = config.callbacks;
4094
+ this.disableKeyboardNavigation = config.disableKeyboardNavigation ?? (() => false);
4095
+ host.addController(this);
4096
+ }
4097
+ hostConnected() {}
4098
+ hostDisconnected() {}
4099
+ #handleArrowDown() {
4100
+ this.tickled.handleKeyboardNavigation(`next`);
4101
+ }
4102
+ #handleArrowUp() {
4103
+ this.tickled.handleKeyboardNavigation(`previous`);
4104
+ }
4105
+ #handleArrowRight() {
4106
+ const currentId = this.tickled.tickledId;
4107
+ if (!currentId) return;
4108
+ if (this.callbacks.isLeaf(currentId)) return;
4109
+ if (!this.callbacks.isExpanded(currentId)) {
4110
+ this.callbacks.onExpand(currentId);
4111
+ this.tickled.setTickled(currentId);
4112
+ } else {
4113
+ const items = this.callbacks.getItems();
4114
+ const currentIdx = items.findIndex((item) => item.id === currentId);
4115
+ if (currentIdx !== -1 && currentIdx + 1 < items.length) {
4116
+ const nextItem = items[currentIdx + 1];
4117
+ if (nextItem.enabled !== false) this.tickled.setTickled(nextItem.id);
4118
+ }
4119
+ }
4120
+ }
4121
+ #handleArrowLeft() {
4122
+ const currentId = this.tickled.tickledId;
4123
+ if (!currentId) return;
4124
+ if (this.callbacks.isLeaf(currentId)) {
4125
+ const parentId = this.callbacks.getParentId?.(currentId);
4126
+ if (parentId) {
4127
+ this.tickled.setTickled(parentId);
4128
+ if (this.callbacks.isExpanded(parentId)) this.callbacks.onCollapse(parentId);
4129
+ }
4130
+ } else if (this.callbacks.isExpanded(currentId)) this.callbacks.onCollapse(currentId);
4131
+ else {
4132
+ const parentId = this.callbacks.getParentId?.(currentId);
4133
+ if (parentId) this.tickled.setTickled(parentId);
4134
+ }
4135
+ }
4136
+ #handleEnter() {
4137
+ const currentId = this.tickled.tickledId;
4138
+ if (!currentId) return;
4139
+ this.callbacks.onActivate(currentId);
4140
+ this.callbacks.onSelect?.(currentId);
4141
+ }
4142
+ };
4143
+ //#endregion
4051
4144
  //#region src/menu/menu-container.ts
4052
4145
  let MenuContainer = class MenuContainer extends i {
4053
4146
  constructor(..._args) {
@@ -10018,8 +10111,8 @@ let MenuCheckItem = class MenuCheckItem extends i {
10018
10111
  }
10019
10112
 
10020
10113
  .check {
10021
- width: 16px;
10022
- margin-right: var(--space-s);
10114
+ width: 1em;
10115
+ margin-left: var(--space-xs);
10023
10116
  font-size: var(--text-m);
10024
10117
  color: var(--accent);
10025
10118
  }
@@ -10539,8 +10632,8 @@ let MenuRadioItem = class MenuRadioItem extends i {
10539
10632
  }
10540
10633
 
10541
10634
  .radio {
10542
- width: 16px;
10543
- margin-right: var(--space-s);
10635
+ width: 1em;
10636
+ margin-left: var(--space-xs);
10544
10637
  font-size: var(--text-m);
10545
10638
  color: var(--accent);
10546
10639
  }
@@ -12497,6 +12590,28 @@ let DetailListElement = class DetailListElement extends i {
12497
12590
  return true;
12498
12591
  });
12499
12592
  }
12593
+ /**
12594
+ * Set the column width to fit the widest visible item.
12595
+ *
12596
+ * This is opt-in; detail lists continue to use `--detail-list-column-width`
12597
+ * (or its 220px fallback) until this method is called. The measured value is
12598
+ * set directly on this element, so it takes precedence over an inherited
12599
+ * value. Returns the applied width in pixels, or 0 when there are no items.
12600
+ */
12601
+ async fitColumnWidth() {
12602
+ await this.updateComplete;
12603
+ const items = this._getVisibleItems();
12604
+ if (items.length === 0) return 0;
12605
+ const previousWidth = this.style.getPropertyValue(`--detail-list-column-width`);
12606
+ const previousPriority = this.style.getPropertyPriority(`--detail-list-column-width`);
12607
+ this.style.setProperty(`--detail-list-column-width`, `max-content`);
12608
+ const width = Math.ceil(Math.max(...items.map((item) => item.getBoundingClientRect().width)));
12609
+ if (previousWidth) this.style.setProperty(`--detail-list-column-width`, previousWidth, previousPriority);
12610
+ else this.style.removeProperty(`--detail-list-column-width`);
12611
+ this.style.setProperty(`--detail-list-column-width`, `${width}px`);
12612
+ this.#scheduleGeometry();
12613
+ return width;
12614
+ }
12500
12615
  _isCheckable(item) {
12501
12616
  if (this.interactionMode !== `checked`) return true;
12502
12617
  return !item.hasAttribute(`not-checked`);
@@ -12658,8 +12773,8 @@ let DetailListElement = class DetailListElement extends i {
12658
12773
  overflow: hidden;
12659
12774
  box-sizing: border-box;
12660
12775
  outline: none;
12661
- --ixfx-detail-list-item-padding:
12662
- var(--ixfx-detail-list-item-padding, var(--detail-list-item-padding, 0 var(--space-m, 8px)));
12776
+ --_detail-list-item-padding:
12777
+ var(--ixfx-detail-list-item-padding, var(--detail-list-item-padding, 0 var(--space-xs, 3px)));
12663
12778
  }
12664
12779
 
12665
12780
  :host(:focus-visible) {
@@ -12706,7 +12821,7 @@ let DetailListElement = class DetailListElement extends i {
12706
12821
  flex: none;
12707
12822
  width: var(--detail-list-column-width, 220px);
12708
12823
  height: var(--detail-list-item-height, 28px);
12709
- padding: var(--ixfx-detail-list-item-padding);
12824
+ padding: var(--_detail-list-item-padding);
12710
12825
  cursor: pointer;
12711
12826
  user-select: none;
12712
12827
  transition: background var(--transition, 0.1s ease-out),
@@ -36516,6 +36631,6 @@ function init() {
36516
36631
  console.log(`Init`);
36517
36632
  }
36518
36633
  //#endregion
36519
- export { AcTextElement, AcTokenElement, ButtonElement, Checkbox, ColourPicker, ColourPickerPopup, CrumbNavigationElement, CrumbPathController, CrumbPathElement, DataController, DataDisplayComponent, DataGridElement, DetailListElement, DockHostElement, DockPanelElement, EditableLabel, EditableNumber, FormElement, FormGroupElement, FormPartElement, GroupedItemListerElement, ICON_CARET_RIGHT, ICON_CHECK, ICON_CHEVRON_DOWN, ICON_CLOSE, IncrSearchTreeController as IncrSearchMillerController, IncrSearchTreeController, IxfxHexEditorElement, IxfxIconElement, IxfxTimelineElement, LabelledRadialInput, LabelledRangeInput, LabelledSliderInput, LedElement, menu_exports as Menu, MillerBaseElement, MillerListElement, MillerTreeController, NarrowedTextElement, NotificationManager, NotificationPillElement, PanelElement, PanelGroupElement, PlotDataSeries, PlotHistogram, PlotMultiAxis, PlotSingleAxis, PlotXyAxis, PolarPad, RadialInputElement, RadioGroup, RangeElement, RangeInput, RangeMultiElement, RatingElement, SelectHorizElement, SliderInputElement, SlidingNumberElement, SnackbarElement, SnapContainer, SplitButton, SplitLayoutElement, SplitPanelElement, SwipeElement, TabController, TabListElement, TabListItemElement, TabPanelElement, TabPanelsElement, TextShimmerElement, TimelineController, TimelineTrackTabElement, TitlebarElement, ToolbarElement, ToolbarGroupElement, TooltipElement, TransitoryLabelElement, TreeBaseElement, TreeController, TreeDataModel, TreeListElement, TwoSplitLayoutElement, VerticalListElement, XyPad, addPanelToStack, applyAgeModification, applyHighlights, applySnapshot, attachTimelineInteractions, buildHighlightTargets, buildModel, clearHighlights, collectContainerNames, collectDataResult, collectPanelIds, collectStackPaths, computeColour, computeLeafGeoms, createAcCompletionProvider, createElementIncrSearch, createEmptyLayout, createEmptyStack, createFuzzySearch, createIncrSearch, createPillRenderer, createSplit, createStack, createTreeListAdapter, createVerticalListAdapter, distribute, extractStack, findNode, findParentOf, findStackOf, findStackPathByName, getActiveDragPanelId, getIcon, getIconEntry, getIconFont, getLeafNeighbours, hasIcon, iconBus, init, insertBeside, isDragging, isSplit, isStack, monitorIndeterminate, moveLeafNodeToEdge, moveLeafStep, normalise, normalize, parseColourScaleAttr, parseLayout, pointerOverAnyHost, readBaseColour, registerFontIcon, registerIcon, removePanelFromStack, resolveCssVars, resolveGrid, resolveLeafPath, resolveTracks, serializeLayout, setActive, setIconFont, svgToDataUri, swapLeaves, timelineStyles, toSnapshot, walk, wrapRoot };
36634
+ export { AcTextElement, AcTokenElement, ButtonElement, Checkbox, ColourPicker, ColourPickerPopup, CrumbNavigationElement, CrumbPathController, CrumbPathElement, DataController, DataDisplayComponent, DataGridElement, DetailListElement, DockHostElement, DockPanelElement, EditableLabel, EditableNumber, FormElement, FormGroupElement, FormPartElement, GroupedItemListerElement, ICON_CARET_RIGHT, ICON_CHECK, ICON_CHEVRON_DOWN, ICON_CLOSE, IncrSearchTreeController as IncrSearchMillerController, IncrSearchTreeController, IxfxHexEditorElement, IxfxIconElement, IxfxTimelineElement, LabelledRadialInput, LabelledRangeInput, LabelledSliderInput, LedElement, ListSelectionController, menu_exports as Menu, MillerBaseElement, MillerListElement, MillerTreeController, NarrowedTextElement, NotificationManager, NotificationPillElement, PanelElement, PanelGroupElement, PlotDataSeries, PlotHistogram, PlotMultiAxis, PlotSingleAxis, PlotXyAxis, PolarPad, RadialInputElement, RadioGroup, RangeElement, RangeInput, RangeMultiElement, RatingElement, SelectHorizElement, SliderInputElement, SlidingNumberElement, SnackbarElement, SnapContainer, SplitButton, SplitLayoutElement, SplitPanelElement, SwipeElement, TabController, TabListElement, TabListItemElement, TabPanelElement, TabPanelsElement, TextShimmerElement, TickledController, TimelineController, TimelineTrackTabElement, TitlebarElement, ToolbarElement, ToolbarGroupElement, TooltipElement, TransitoryLabelElement, TreeBaseElement, TreeController, TreeDataModel, TreeKeyboardNavController, TreeListElement, TwoSplitLayoutElement, VerticalListElement, XyPad, addPanelToStack, applyAgeModification, applyHighlights, applySnapshot, attachTimelineInteractions, buildHighlightTargets, buildModel, clearHighlights, collectContainerNames, collectDataResult, collectPanelIds, collectStackPaths, computeColour, computeLeafGeoms, createAcCompletionProvider, createElementIncrSearch, createEmptyLayout, createEmptyStack, createFuzzySearch, createIncrSearch, createPillRenderer, createSplit, createStack, createTreeListAdapter, createVerticalListAdapter, distribute, extractStack, findNode, findParentOf, findStackOf, findStackPathByName, getActiveDragPanelId, getIcon, getIconEntry, getIconFont, getLeafNeighbours, hasIcon, iconBus, init, insertBeside, isDragging, isMultiMode, isSplit, isStack, monitorIndeterminate, moveLeafNodeToEdge, moveLeafStep, normalise, normalize, parseColourScaleAttr, parseLayout, pointerOverAnyHost, readBaseColour, registerFontIcon, registerIcon, removePanelFromStack, resolveCssVars, resolveGrid, resolveLeafPath, resolveTracks, serializeLayout, setActive, setIconFont, svgToDataUri, swapLeaves, tickledItemStyles, tickledStyles, timelineStyles, toSnapshot, walk, wrapRoot };
36520
36635
 
36521
36636
  //# sourceMappingURL=index.js.map