@ixfx/components 0.14.7 → 0.15.0

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 (68) hide show
  1. package/bundle/index.d.ts +100 -2
  2. package/bundle/index.js +574 -247
  3. package/bundle/style.css +2 -82
  4. package/dist/ac-text.d.ts +1 -1
  5. package/dist/{ac-token-qEs3FsQv.d.ts → ac-token-Cq7lsYf-.d.ts} +1 -1
  6. package/dist/ac-token.d.ts +1 -1
  7. package/dist/{button-BYuf72aR.d.ts → button-D1sPDUCM.d.ts} +8 -1
  8. package/dist/{button-B7mgqtxR.js → button-ikByJJPN.js} +29 -8
  9. package/dist/button.d.ts +1 -1
  10. package/dist/button.js +1 -1
  11. package/dist/{colour-picker-BCMU7W7R.js → colour-picker-DwAa6RDh.js} +73 -9
  12. package/dist/colour-picker.d.ts +1 -1
  13. package/dist/colour-picker.js +1 -1
  14. package/dist/crumbs.d.ts +1 -1
  15. package/dist/{data-grid-DmkId8bu.d.ts → data-grid-_BmlhuUu.d.ts} +3 -3
  16. package/dist/data-grid.d.ts +1 -1
  17. package/dist/{detail-list-CmQqeXvp.d.ts → detail-list-DXMnTrYm.d.ts} +3 -3
  18. package/dist/detail-list.d.ts +2 -2
  19. package/dist/{flat-list-BmQBB3ZC.d.ts → flat-list-JfozgW7d.d.ts} +2 -2
  20. package/dist/flat-list.d.ts +1 -1
  21. package/dist/form-BGZK3jZd.d.ts +54 -0
  22. package/dist/form-CY0nibZ5.js +418 -0
  23. package/dist/form.d.ts +1 -13
  24. package/dist/form.js +1 -1
  25. package/dist/{grid-list-BVsUEvgd.d.ts → grid-list-tQwXs895.d.ts} +1 -1
  26. package/dist/grid-list.d.ts +1 -1
  27. package/dist/{grouped-item-lister-DETte0Dh.d.ts → grouped-item-lister-Bhyo-dkH.d.ts} +1 -1
  28. package/dist/grouped-item-lister.d.ts +1 -1
  29. package/dist/{icon-CDGprSdE.d.ts → icon-DR_3rSyZ.d.ts} +1 -1
  30. package/dist/icons.d.ts +2 -2
  31. package/dist/incr-search.d.ts +1 -1
  32. package/dist/{index-CoqtMSd9.d.ts → index-BUB5SICW.d.ts} +1 -1
  33. package/dist/{index-tq6f8007.d.ts → index-Bz3loIAf.d.ts} +4 -1
  34. package/dist/{index-UvnoZUAo.d.ts → index-CJ5fshD3.d.ts} +1 -1
  35. package/dist/{index-BvoXLnBf.d.ts → index-ChdhB7RK.d.ts} +1 -1
  36. package/dist/{index-DxyyVqzA.d.ts → index-cnaRPQPp.d.ts} +2 -2
  37. package/dist/{index-CYndvTWH.d.ts → index-garxxqgV.d.ts} +1 -1
  38. package/dist/{index-DuhzWWTr.d.ts → index-wUYiXH8c.d.ts} +1 -1
  39. package/dist/index.d.ts +69 -22
  40. package/dist/index.js +138 -8
  41. package/dist/{labelled-input-base-DiTme1JO.d.ts → labelled-input-base-Dp_9KP0G.d.ts} +1 -1
  42. package/dist/labelled-radial-input.d.ts +2 -2
  43. package/dist/labelled-range-input.d.ts +1 -1
  44. package/dist/labelled-slider-input.d.ts +1 -1
  45. package/dist/list-group-header.d.ts +1 -1
  46. package/dist/{menu-item-bF6narIz.d.ts → menu-item-B0zqw2xp.d.ts} +1 -1
  47. package/dist/menu.d.ts +2 -2
  48. package/dist/miller.d.ts +1 -1
  49. package/dist/panel.d.ts +1 -1
  50. package/dist/{split-layout-JK3xWVX2.d.ts → split-layout-C5SYbDrq.d.ts} +1 -1
  51. package/dist/split-layout.d.ts +1 -1
  52. package/dist/style.css +2 -82
  53. package/dist/tab-list-R_bGbDvO.js +766 -0
  54. package/dist/{tab-list-CexFFg6O.d.ts → tab-list-wC0xNz1b.d.ts} +2 -1
  55. package/dist/tabs.d.ts +1 -1
  56. package/dist/tabs.js +1 -673
  57. package/dist/{titlebar-Tqu-VvMU.d.ts → titlebar-B5zSTZnF.d.ts} +1 -1
  58. package/dist/titlebar.d.ts +1 -1
  59. package/dist/tree.d.ts +1 -1
  60. package/dist/{vertical-list-ztrdFvyT.d.ts → vertical-list-BYyb2n4x.d.ts} +1 -1
  61. package/dist/vertical-list.d.ts +1 -1
  62. package/docs-user/button.md +1 -0
  63. package/docs-user/colour-picker.md +19 -0
  64. package/docs-user/form.md +97 -4
  65. package/docs-user/index.json +2 -2
  66. package/docs-user/tabs.md +30 -0
  67. package/package.json +2 -1
  68. package/dist/form-CsXJX15p.js +0 -62
package/bundle/style.css CHANGED
@@ -43,8 +43,8 @@
43
43
  --radius-m: 4px;
44
44
  --radius-l: 6px;
45
45
  --radius-xl: 8px;
46
- --shadow-m: light-dark(0 2px 8px #0000001a, 0 4px 12px #0000004d);
47
- --shadow-l: light-dark(0 4px 16px #00000026, 0 4px 24px #00000080);
46
+ --shadow-m: 0 3px 10px light-dark(#0000001a, #0000004d);
47
+ --shadow-l: 0 4px 20px light-dark(#00000026, #00000080);
48
48
  --disabled-opacity: .5;
49
49
  --transition: .15s ease-out;
50
50
  --prominence-idle-opacity: light-dark(.55, .6);
@@ -96,83 +96,3 @@
96
96
  ixfx-grouped-item-lister {
97
97
  display: block;
98
98
  }
99
- ixfx-form {
100
- display: block;
101
- }
102
-
103
- ixfx-form-group {
104
- display: block;
105
- container-type: inline-size;
106
- }
107
-
108
- ixfx-form-group fieldset {
109
- gap: var(--space-m) var(--space-l);
110
- margin: 0;
111
- border: 0;
112
- grid-template-columns: 1fr;
113
- min-inline-size: 0;
114
- margin-block-start: var(--space-m);
115
- margin-block-end: var(--space-m);
116
- padding: 0;
117
- display: grid;
118
- }
119
-
120
- ixfx-form-group fieldset > legend:empty {
121
- display: none;
122
- }
123
-
124
- ixfx-form-group fieldset > legend {
125
- font-weight: var(--font-weight-bold);
126
- grid-column: 1 / -1;
127
- margin-block-start: var(--space-m);
128
- margin-block-end: var(--space-s);
129
- padding: 0;
130
- }
131
-
132
- ixfx-form-group fieldset > :not(ixfx-form-part) {
133
- grid-column: 1 / -1;
134
- }
135
-
136
- ixfx-form-part {
137
- grid-column: 1 / -1;
138
- grid-template-columns: 1fr;
139
- align-items: start;
140
- display: grid;
141
- }
142
-
143
- ixfx-form-part > label {
144
- font-size: var(--ixfx-form-label-font-size, var(--text-s));
145
- font-weight: var(--ixfx-form-label-font-weight, inherit);
146
- font-family: var(--ixfx-form-label-font-family, inherit);
147
- color: var(--ixfx-form-label-color, inherit);
148
- text-transform: var(--ixfx-form-label-text-transform, uppercase);
149
- padding-bottom: var(--space-xs);
150
- grid-area: 1 / 1;
151
- }
152
-
153
- ixfx-form-part > input, ixfx-form-part > select, ixfx-form-part > textarea {
154
- grid-area: 2 / 1;
155
- }
156
-
157
- @container (width >= 30rem) {
158
- ixfx-form-group fieldset {
159
- grid-template-columns: max-content 1fr;
160
- }
161
-
162
- ixfx-form-part {
163
- grid-column: 1 / -1;
164
- grid-template-columns: subgrid;
165
- align-items: baseline;
166
- display: grid;
167
- }
168
-
169
- ixfx-form-part > label {
170
- padding-right: var(--space-xs);
171
- grid-area: 1 / 1;
172
- padding-bottom: 0;
173
- }
174
-
175
- ixfx-form-part > input, ixfx-form-part > select, ixfx-form-part > textarea {
176
- grid-area: 1 / 2;
177
- }
178
- }
package/dist/ac-text.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import "./icon-CDGprSdE.js";
1
+ import "./icon-DR_3rSyZ.js";
2
2
  import { LitElement, PropertyValues } from "lit";
3
3
  //#region src/ac-text/ac-text.d.ts
4
4
  type AcTextItem = {
@@ -1,4 +1,4 @@
1
- import "./icon-CDGprSdE.js";
1
+ import "./icon-DR_3rSyZ.js";
2
2
  import { r as IDataProvider } from "./data-provider-BAn_-oR1.js";
3
3
  import { LitElement, PropertyValues } from "lit";
4
4
  //#region src/ac-token/types.d.ts
@@ -1,2 +1,2 @@
1
- import { a as AcTokenItem, c as AcTokenStyle, d as AcTokensChangeDetail, f as AcTokensChangeEvent, i as AcTokenElementEventMap, l as AcTokenStyleFn, n as AcTokenAddDetail, o as AcTokenRemoveDetail, r as AcTokenAddEvent, s as AcTokenRemoveEvent, t as AcTokenElement, u as AcTokenizerFn } from "./ac-token-qEs3FsQv.js";
1
+ import { a as AcTokenItem, c as AcTokenStyle, d as AcTokensChangeDetail, f as AcTokensChangeEvent, i as AcTokenElementEventMap, l as AcTokenStyleFn, n as AcTokenAddDetail, o as AcTokenRemoveDetail, r as AcTokenAddEvent, s as AcTokenRemoveEvent, t as AcTokenElement, u as AcTokenizerFn } from "./ac-token-Cq7lsYf-.js";
2
2
  export { type AcTokenAddDetail, type AcTokenAddEvent, AcTokenElement, type AcTokenElementEventMap, type AcTokenItem, type AcTokenRemoveDetail, type AcTokenRemoveEvent, type AcTokenStyle, type AcTokenStyleFn, type AcTokenizerFn, type AcTokensChangeDetail, type AcTokensChangeEvent };
@@ -43,7 +43,14 @@ declare class ButtonElement extends LitElement {
43
43
  * attribute).
44
44
  */
45
45
  value: boolean;
46
- protected _renderIcon(): typeof nothing | import("lit").TemplateResult<1>;
46
+ /**
47
+ * What clicking does inside a `<form>` (including `ixfx-form`): `submit`
48
+ * submits it, `reset` resets it. The default, `button`, does nothing.
49
+ */
50
+ type: `button` | `submit` | `reset`;
51
+ static formAssociated: boolean;
52
+ formDisabledCallback(disabled: boolean): void;
53
+ protected _renderIcon(): import("lit").TemplateResult<1> | typeof nothing;
47
54
  protected render(): import("lit").TemplateResult<1>;
48
55
  static styles: import("lit").CSSResult[];
49
56
  }
@@ -123,16 +123,33 @@ let ButtonElement = class ButtonElement extends LitElement {
123
123
  this.subtle = false;
124
124
  this.toggleable = false;
125
125
  this.value = false;
126
+ this.type = `button`;
127
+ this.#internals = this.attachInternals?.();
128
+ this.#formDisabled = false;
126
129
  this.#handleClick = () => {
127
- if (!this.toggleable || this.disabled) return;
128
- this.value = !this.value;
129
- this.dispatchEvent(new CustomEvent(`toggle`, {
130
- detail: { value: this.value },
131
- bubbles: true,
132
- composed: true
133
- }));
130
+ if (this.disabled || this.#formDisabled) return;
131
+ if (this.toggleable) {
132
+ this.value = !this.value;
133
+ this.dispatchEvent(new CustomEvent(`toggle`, {
134
+ detail: { value: this.value },
135
+ bubbles: true,
136
+ composed: true
137
+ }));
138
+ }
139
+ const form = this.#internals?.form ?? this.closest(`form`);
140
+ if (this.type === `submit`) form?.requestSubmit();
141
+ else if (this.type === `reset`) form?.reset();
134
142
  };
135
143
  }
144
+ static {
145
+ this.formAssociated = true;
146
+ }
147
+ #internals;
148
+ #formDisabled;
149
+ formDisabledCallback(disabled) {
150
+ this.#formDisabled = disabled;
151
+ this.requestUpdate();
152
+ }
136
153
  #handleClick;
137
154
  _renderIcon() {
138
155
  if (this.hideIcon || !this.icon) return nothing;
@@ -143,7 +160,7 @@ let ButtonElement = class ButtonElement extends LitElement {
143
160
  render() {
144
161
  this.hasIcon = !this.hideIcon && !!this.icon;
145
162
  const label = this.hideLabel ? nothing : html`<span class="button-label"><slot></slot></span>`;
146
- return html`<button ?disabled=${this.disabled} @click=${this.#handleClick}>${this._renderIcon()}${label}</button>`;
163
+ return html`<button ?disabled=${this.disabled || this.#formDisabled} @click=${this.#handleClick}>${this._renderIcon()}${label}</button>`;
147
164
  }
148
165
  static {
149
166
  this.styles = [prominenceStyles, buttonStyles];
@@ -178,6 +195,10 @@ __decorate([property({
178
195
  type: Boolean,
179
196
  reflect: true
180
197
  })], ButtonElement.prototype, "value", void 0);
198
+ __decorate([property({
199
+ type: String,
200
+ reflect: true
201
+ })], ButtonElement.prototype, "type", void 0);
181
202
  ButtonElement = __decorate([safeCustomElement(`ixfx-button`)], ButtonElement);
182
203
  //#endregion
183
204
  export { buttonStyles as n, ButtonElement as t };
package/dist/button.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- import { n as ButtonElementEventMap, t as ButtonElement } from "./button-BYuf72aR.js";
1
+ import { n as ButtonElementEventMap, t as ButtonElement } from "./button-D1sPDUCM.js";
2
2
  export { ButtonElement, ButtonElementEventMap };
package/dist/button.js CHANGED
@@ -1,2 +1,2 @@
1
- import { t as ButtonElement } from "./button-B7mgqtxR.js";
1
+ import { t as ButtonElement } from "./button-ikByJJPN.js";
2
2
  export { ButtonElement };
@@ -595,6 +595,7 @@ let ColourPickerPopup = class ColourPickerPopup extends LitElement {
595
595
  this.size = `medium`;
596
596
  this._isOpen = false;
597
597
  this._everOpened = false;
598
+ this._hasAction = false;
598
599
  this._pendingL = this.l;
599
600
  this._pendingC = this.c;
600
601
  this._pendingH = this.h;
@@ -662,6 +663,9 @@ let ColourPickerPopup = class ColourPickerPopup extends LitElement {
662
663
  this._popupEl.hidePopover();
663
664
  } catch {}
664
665
  };
666
+ this._onActionSlotChange = (e) => {
667
+ this._hasAction = e.target.assignedNodes().length > 0;
668
+ };
665
669
  this._onSwatchClick = async () => {
666
670
  if (!this._everOpened) {
667
671
  this._everOpened = true;
@@ -714,6 +718,11 @@ let ColourPickerPopup = class ColourPickerPopup extends LitElement {
714
718
  const swatch = this.shadowRoot?.querySelector(`.swatch`);
715
719
  if (swatch) swatch.style.background = swatchBackground(this.l, this.c, this.h, this.a);
716
720
  }
721
+ close() {
722
+ try {
723
+ this._popupEl.hidePopover();
724
+ } catch {}
725
+ }
717
726
  _dispatchInput() {
718
727
  const detail = {
719
728
  l: this.l,
@@ -779,11 +788,14 @@ let ColourPickerPopup = class ColourPickerPopup extends LitElement {
779
788
  @input=${this._onPickerInput}
780
789
  @change=${this._onPickerChange}
781
790
  ></ixfx-colour-picker>
782
- ${this.mode === `confirm` ? html`
783
- <button class="confirm-btn" @click=${this._onConfirm} aria-label="Confirm colour" title="Confirm colour">
784
- ${unsafeHTML(ICON_CHECK)}
785
- </button>
786
- ` : nothing}
791
+ <div class="footer" ?hidden=${this.mode !== `confirm` && !this._hasAction}>
792
+ <slot name="action" @slotchange=${this._onActionSlotChange}></slot>
793
+ ${this.mode === `confirm` ? html`
794
+ <button class="confirm-btn" @click=${this._onConfirm} aria-label="Confirm colour" title="Confirm colour">
795
+ ${unsafeHTML(ICON_CHECK)}
796
+ </button>
797
+ ` : nothing}
798
+ </div>
787
799
  ` : nothing}
788
800
  </div>
789
801
  `;
@@ -831,11 +843,22 @@ let ColourPickerPopup = class ColourPickerPopup extends LitElement {
831
843
  min-width: var(--cp-popup-min-width);
832
844
  min-height: var(--cp-popup-min-height);
833
845
 
834
- /* CSS anchor positioning — position-anchor set via inline style in JS */
846
+ /* CSS anchor positioning — position-anchor set via inline style in JS.
847
+ Preferred: centred horizontally below the swatch. Fallbacks: above,
848
+ then right/left of the swatch, vertically centred.
849
+ Centring uses anchor-center (not translate) so the browser's overflow
850
+ check for the fallbacks sees the popup's real position. */
835
851
  position: fixed;
836
- position-area: block-end span-inline-start;
837
- position-try-fallbacks: flip-block, flip-inline, flip-block flip-inline;
852
+ top: anchor(bottom);
853
+ bottom: 0;
854
+ left: 0;
855
+ right: 0;
856
+ width: max-content;
857
+ height: max-content;
858
+ justify-self: unsafe anchor-center;
859
+ align-self: start;
838
860
  margin-block-start: 4px;
861
+ position-try-fallbacks: --cp-above, --cp-right, --cp-left;
839
862
 
840
863
  padding: var(--space-l);
841
864
  z-index: 100;
@@ -847,6 +870,30 @@ let ColourPickerPopup = class ColourPickerPopup extends LitElement {
847
870
  transition: opacity 0.12s ease, scale 0.12s ease;
848
871
  }
849
872
 
873
+ @position-try --cp-above {
874
+ inset: 0;
875
+ bottom: anchor(top);
876
+ justify-self: unsafe anchor-center;
877
+ align-self: end;
878
+ margin: 0 0 4px;
879
+ }
880
+
881
+ @position-try --cp-right {
882
+ inset: 0;
883
+ left: anchor(right);
884
+ justify-self: start;
885
+ align-self: anchor-center;
886
+ margin: 0 0 0 4px;
887
+ }
888
+
889
+ @position-try --cp-left {
890
+ inset: 0;
891
+ right: anchor(left);
892
+ justify-self: end;
893
+ align-self: anchor-center;
894
+ margin: 0 4px 0 0;
895
+ }
896
+
850
897
  .popup:popover-open {
851
898
  opacity: 1;
852
899
  scale: 1;
@@ -857,11 +904,27 @@ let ColourPickerPopup = class ColourPickerPopup extends LitElement {
857
904
  display: block;
858
905
  }
859
906
 
907
+ .footer {
908
+ display: flex;
909
+ align-items: center;
910
+ gap: var(--space-s);
911
+ margin-block-start: var(--space-s);
912
+ }
913
+
914
+ .footer[hidden] {
915
+ display: none;
916
+ }
917
+
918
+ .footer slot[name='action'] {
919
+ display: flex;
920
+ align-items: center;
921
+ gap: var(--space-s);
922
+ }
923
+
860
924
  .confirm-btn {
861
925
  display: flex;
862
926
  align-items: center;
863
927
  justify-content: center;
864
- margin-block-start: var(--space-s);
865
928
  margin-inline-start: auto;
866
929
  width: 1.8em;
867
930
  height: 1.8em;
@@ -927,6 +990,7 @@ __decorate([property({
927
990
  __decorate([property({ type: String })], ColourPickerPopup.prototype, "size", void 0);
928
991
  __decorate([state()], ColourPickerPopup.prototype, "_isOpen", void 0);
929
992
  __decorate([state()], ColourPickerPopup.prototype, "_everOpened", void 0);
993
+ __decorate([state()], ColourPickerPopup.prototype, "_hasAction", void 0);
930
994
  __decorate([query(`.popup`)], ColourPickerPopup.prototype, "_popupEl", void 0);
931
995
  __decorate([query(`ixfx-colour-picker`)], ColourPickerPopup.prototype, "_pickerEl", void 0);
932
996
  ColourPickerPopup = __decorate([safeCustomElement(`ixfx-colour-picker-popup`)], ColourPickerPopup);
@@ -1,2 +1,2 @@
1
- import { a as ColourPickerInputEvent, i as ColourPickerEventDetail, n as ColourPicker, o as OklchValue, r as ColourPickerChangeEvent, t as ColourPickerPopup } from "./index-tq6f8007.js";
1
+ import { a as ColourPickerInputEvent, i as ColourPickerEventDetail, n as ColourPicker, o as OklchValue, r as ColourPickerChangeEvent, t as ColourPickerPopup } from "./index-Bz3loIAf.js";
2
2
  export { ColourPicker, type ColourPickerChangeEvent, type ColourPickerEventDetail, type ColourPickerInputEvent, ColourPickerPopup, type OklchValue };
@@ -1,2 +1,2 @@
1
- import { n as ColourPicker, t as ColourPickerPopup } from "./colour-picker-BCMU7W7R.js";
1
+ import { n as ColourPicker, t as ColourPickerPopup } from "./colour-picker-DwAa6RDh.js";
2
2
  export { ColourPicker, ColourPickerPopup };
package/dist/crumbs.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { A as TreeTickleEvent, O as TreeSelectEvent, a as TreeComponent, j as TreeDataModel, n as TreeActivateEvent, o as TreeComponentEventMap, x as TreeItemClickEvent, y as TreeExpandEvent } from "./tree-component-CDsYTBDi.js";
2
2
  import { n as TreeExclusivity, o as TreeNode, r as TreeFilterPredicate, s as TreeSelectionFilter, t as LoadChildrenCallback } from "./types-Jky6oNAp.js";
3
- import "./menu-item-bF6narIz.js";
3
+ import "./menu-item-B0zqw2xp.js";
4
4
  import "./index-o-CWDt11.js";
5
5
  import { LitElement, PropertyValues } from "lit";
6
6
  //#region src/crumbs/crumb-navigation.d.ts
@@ -1,8 +1,8 @@
1
- import "./icon-CDGprSdE.js";
1
+ import "./icon-DR_3rSyZ.js";
2
2
  import { B as ListNativeDragStartEvent, I as ListDragPreviewRenderer, L as ListDragPreviewSourceResolver } from "./tree-component-CDsYTBDi.js";
3
3
  import { n as ListViewportChangeEvent, t as ListViewportChangeDetail } from "./list-viewport-types-BRZsLcvp.js";
4
- import { S as ListSearchController } from "./index-BvoXLnBf.js";
5
- import "./index-DxyyVqzA.js";
4
+ import { S as ListSearchController } from "./index-ChdhB7RK.js";
5
+ import "./index-cnaRPQPp.js";
6
6
  import "./pan-text-CoYmt2qd.js";
7
7
  import { LitElement } from "lit";
8
8
  import { CommandId, CommandRegistry } from "@clinth/ui-commands";
@@ -1,3 +1,3 @@
1
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
- 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";
2
+ 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-_BmlhuUu.js";
3
3
  export { type BuiltInFormatterName, type BuiltInFormatterOptions, DataGridCellClickDetail, DataGridCellClickEvent, DataGridCellEditDetail, DataGridCellEditEvent, type DataGridColumn, type DataGridColumnMenu, DataGridColumnReorderDetail, DataGridColumnReorderEvent, DataGridColumnResizeDetail, DataGridColumnResizeEvent, DataGridColumnVisibilityDetail, DataGridColumnVisibilityEvent, type DataGridDataType, type DataGridEditability, type DataGridEditorContext, type DataGridEditorFactory, type DataGridEditorType, DataGridElement, DataGridElementEventMap, type DataGridGetRowKey, type DataGridGroupBy, DataGridGroupChangeDetail, DataGridGroupChangeEvent, type DataGridGroupLabel, type DataGridInteractionMode, DataGridRowActivateDetail, DataGridRowActivateEvent, type DataGridRowLook, DataGridSelectDetail, DataGridSelectEvent, type DataGridSelectionMode, DataGridSortDetail, type DataGridSortDirection, DataGridSortEvent, type DataGridSortState, DataGridViewportChangeDetail, DataGridViewportChangeEvent, type GlobalFormatter, type ListDragEntry, type ListDragPreview, type ListDragPreviewContext, type ListDragPreviewRenderer, type ListDragSource, type ListNativeDragStartDetail, type ListNativeDragStartEvent };
@@ -1,11 +1,11 @@
1
- import "./icon-CDGprSdE.js";
1
+ import "./icon-DR_3rSyZ.js";
2
2
  import { r as IDataProvider } from "./data-provider-BAn_-oR1.js";
3
3
  import { B as ListNativeDragStartEvent, I as ListDragPreviewRenderer, L as ListDragPreviewSourceResolver } from "./tree-component-CDsYTBDi.js";
4
4
  import { n as ListViewportChangeEvent } from "./list-viewport-types-BRZsLcvp.js";
5
- import { S as ListSearchController } from "./index-BvoXLnBf.js";
5
+ import { S as ListSearchController } from "./index-ChdhB7RK.js";
6
6
  import { a as ListGroupEventMap, o as ListGroupInfo, s as ListGroupLabel } from "./grouping-CUKgmkMm.js";
7
7
  import { i as ListInteractionMode, l as ListSelectionMode, r as ListElementEventMap } from "./list-selection-types-PjKdhF-a.js";
8
- import { n as CustomCheckboxOptions, t as AddItemOptions } from "./vertical-list-ztrdFvyT.js";
8
+ import { n as CustomCheckboxOptions, t as AddItemOptions } from "./vertical-list-BYyb2n4x.js";
9
9
  import "./list-group-header.js";
10
10
  import { LitElement, PropertyValues } from "lit";
11
11
  import { CommandId, CommandRegistry } from "@clinth/ui-commands";
@@ -1,6 +1,6 @@
1
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-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";
4
+ import { n as CustomCheckboxOptions, t as AddItemOptions } from "./vertical-list-BYyb2n4x.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-DXMnTrYm.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
- import "./icon-CDGprSdE.js";
1
+ import "./icon-DR_3rSyZ.js";
2
2
  import { j as TreeDataModel } from "./tree-component-CDsYTBDi.js";
3
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-ztrdFvyT.js";
6
+ import { r as VerticalListElement } from "./vertical-list-BYyb2n4x.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-BmQBB3ZC.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-JfozgW7d.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 };
@@ -0,0 +1,54 @@
1
+ import { LitElement } from "lit";
2
+ //#region src/form/form-values.d.ts
3
+ type CollectFormValuesOptions = {
4
+ /** Return numbers (or `null` when empty) for `number` and `range` inputs, instead of strings. */
5
+ typed?: boolean;
6
+ };
7
+ //#endregion
8
+ //#region src/form/form.d.ts
9
+ /**
10
+ * Wraps its content in a native `<form>`, so submit, Enter-to-submit,
11
+ * validation, `FormData` and `form.elements` behave as they do for any form.
12
+ * Submitting never navigates: listen for the standard `submit` event.
13
+ */
14
+ declare class FormElement extends LitElement {
15
+ /** Label justification in the wide layout. Groups can override. */
16
+ labelAlign: `left` | `right`;
17
+ /** Skip validation when submitting (like `<form novalidate>`). `reportValidity()` still validates. */
18
+ noValidate: boolean;
19
+ private _form?;
20
+ private _observer?;
21
+ protected createRenderRoot(): this;
22
+ /** The native form element that holds the content. */
23
+ get form(): HTMLFormElement;
24
+ /** Native controls in the form. Components with their own shadow root are not included. */
25
+ get elements(): HTMLFormControlsCollection;
26
+ connectedCallback(): void;
27
+ disconnectedCallback(): void;
28
+ protected updated(): void;
29
+ /** Moves everything into the native form. Nodes (not just elements) move so Lit's markers stay with their content. */
30
+ private _adoptChildren;
31
+ /**
32
+ * Browsers only submit on Enter when the form has a native submit button
33
+ * or a single text field. Cover the other cases (e.g. an `ixfx-button`).
34
+ */
35
+ private readonly _onKeydown;
36
+ /** Validates (unless `novalidate`), then fires `submit`. */
37
+ requestSubmit(): void;
38
+ /** Resets native controls. Components with their own shadow root are not reset. */
39
+ reset(): void;
40
+ /** True if all native controls are valid. Shows nothing. */
41
+ checkValidity(): boolean;
42
+ /** True if all native controls are valid. Otherwise shows the browser's message on the first invalid one. */
43
+ reportValidity(): boolean;
44
+ /** Values of all named controls, including components with their own shadow root. Numbers are strings unless `typed`. */
45
+ getValues(options?: CollectFormValuesOptions): Record<string, unknown>;
46
+ setValues(data: Record<string, unknown>): void;
47
+ }
48
+ declare global {
49
+ interface HTMLElementTagNameMap {
50
+ 'ixfx-form': FormElement;
51
+ }
52
+ }
53
+ //#endregion
54
+ export { FormElement as t };