@taprootio/espalier 3.8.0 → 4.0.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 (104) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/custom-elements.json +2075 -2706
  3. package/dist/action-menu/esp-action-menu-item.d.ts +4 -4
  4. package/dist/action-menu/esp-action-menu-item.js +1 -1
  5. package/dist/action-menu/esp-action-menu.d.ts +2 -2
  6. package/dist/action-menu/esp-action-menu.js +6 -6
  7. package/dist/box/esp-box.d.ts +1 -1
  8. package/dist/burger/esp-burger.d.ts +4 -4
  9. package/dist/burger/esp-burger.js +4 -4
  10. package/dist/button/action-state-lightness.js +1 -1
  11. package/dist/button/esp-button.d.ts +39 -5
  12. package/dist/button/esp-button.js +41 -51
  13. package/dist/checkbox/esp-checkbox-group.d.ts +4 -2
  14. package/dist/checkbox/esp-checkbox-group.js +1 -1
  15. package/dist/checkbox/esp-checkbox.d.ts +4 -2
  16. package/dist/color-picker/esp-color-picker.d.ts +2 -2
  17. package/dist/color-picker/esp-color-picker.js +4 -4
  18. package/dist/date-picker/esp-date-picker.d.ts +5 -3
  19. package/dist/date-picker/esp-date-picker.js +7 -7
  20. package/dist/details/esp-details-group.d.ts +1 -1
  21. package/dist/details/esp-details-group.js +3 -3
  22. package/dist/details/esp-details.d.ts +2 -2
  23. package/dist/details/esp-details.js +3 -3
  24. package/dist/dialog/esp-dialog.d.ts +7 -7
  25. package/dist/dialog/esp-dialog.js +7 -7
  26. package/dist/file-upload/esp-file-upload.d.ts +5 -2
  27. package/dist/file-upload/esp-file-upload.js +3 -3
  28. package/dist/flyout/esp-flyout.d.ts +10 -10
  29. package/dist/flyout/esp-flyout.js +14 -14
  30. package/dist/focus-picker/esp-focus-picker.d.ts +4 -4
  31. package/dist/focus-picker/esp-focus-picker.js +4 -4
  32. package/dist/font-picker/esp-font-picker.d.ts +1 -1
  33. package/dist/font-picker/esp-font-picker.js +2 -2
  34. package/dist/form/esp-form.d.ts +9 -9
  35. package/dist/form/esp-form.js +1 -1
  36. package/dist/grid/esp-grid.d.ts +10 -10
  37. package/dist/grid/esp-grid.js +13 -11
  38. package/dist/header/esp-header-button.d.ts +2 -2
  39. package/dist/header/esp-header-button.js +1 -1
  40. package/dist/header/esp-header.d.ts +5 -5
  41. package/dist/header/esp-header.js +4 -4
  42. package/dist/help/esp-help-provider.js +1 -1
  43. package/dist/help/help-document.js +1 -1
  44. package/dist/image-upload/esp-image-preview.js +8 -8
  45. package/dist/image-upload/esp-image-upload.d.ts +14 -14
  46. package/dist/image-upload/esp-image-upload.js +10 -10
  47. package/dist/image-upload/image-helpers.d.ts +2 -2
  48. package/dist/index.d.ts +1 -1
  49. package/dist/index.js +1 -1
  50. package/dist/info/esp-info.d.ts +2 -2
  51. package/dist/info/esp-info.js +6 -6
  52. package/dist/input/esp-input.d.ts +8 -7
  53. package/dist/input/esp-input.js +2 -2
  54. package/dist/lightbox/esp-lightbox.js +6 -6
  55. package/dist/menu/esp-menu-group.d.ts +1 -1
  56. package/dist/menu/esp-menu-group.js +1 -1
  57. package/dist/menu/esp-menu-item.d.ts +2 -2
  58. package/dist/menu/esp-menu-item.js +2 -2
  59. package/dist/menu/esp-menu.d.ts +2 -2
  60. package/dist/menu/esp-menu.js +9 -9
  61. package/dist/page/esp-page.d.ts +4 -4
  62. package/dist/page/esp-page.js +1 -1
  63. package/dist/pickers/esp-pick-one.d.ts +3 -1
  64. package/dist/pickers/esp-pick-one.js +2 -2
  65. package/dist/pickers/esp-pick-some.d.ts +3 -1
  66. package/dist/pickers/esp-pick-some.js +1 -1
  67. package/dist/pickers/esp-picker-base.d.ts +1 -1
  68. package/dist/pickers/esp-picker-menu.d.ts +4 -4
  69. package/dist/pickers/esp-picker-menu.js +7 -7
  70. package/dist/popover/esp-popover.d.ts +2 -2
  71. package/dist/popover/esp-popover.js +3 -3
  72. package/dist/progress/esp-progress.d.ts +4 -4
  73. package/dist/radio-button/esp-radio-button-group.d.ts +4 -2
  74. package/dist/radio-button/esp-radio-button-group.js +4 -4
  75. package/dist/radio-button/esp-radio-button.d.ts +1 -1
  76. package/dist/repeater/esp-repeater.d.ts +2 -12
  77. package/dist/search/esp-search.d.ts +4 -4
  78. package/dist/search/esp-search.js +3 -3
  79. package/dist/shared/esp-element-base.js +1 -1
  80. package/dist/shared/events.d.ts +151 -70
  81. package/dist/shared/events.js +1 -1
  82. package/dist/shared/flyout-events.d.ts +1 -1
  83. package/dist/shared/flyout-events.js +1 -1
  84. package/dist/shared/form-field-controller.d.ts +3 -3
  85. package/dist/shared/intent-values.d.ts +0 -12
  86. package/dist/shared/intent-values.js +1 -1
  87. package/dist/shared/utilities.d.ts +0 -31
  88. package/dist/shared/utilities.js +1 -1
  89. package/dist/shared/validation.d.ts +2 -2
  90. package/dist/shared/validation.js +1 -1
  91. package/dist/slider/esp-slider.d.ts +4 -2
  92. package/dist/status-indicator/esp-status-indicator.js +2 -2
  93. package/dist/switch/esp-switch.d.ts +4 -2
  94. package/dist/tabs/esp-tab-group.d.ts +2 -2
  95. package/dist/tabs/esp-tab-group.js +4 -4
  96. package/dist/tabs/esp-tab.d.ts +2 -1
  97. package/dist/tabs/esp-tab.js +2 -2
  98. package/dist/textarea/esp-textarea.d.ts +6 -5
  99. package/dist/textarea/esp-textarea.js +1 -1
  100. package/dist/toaster/esp-toaster.d.ts +4 -4
  101. package/dist/toaster/esp-toaster.js +1 -1
  102. package/dist/tree/esp-tree.d.ts +2 -1
  103. package/dist/tree/esp-tree.js +26 -26
  104. package/package.json +1 -1
@@ -34,8 +34,10 @@ export { type FontPickerValueChangedDetail, type GoogleFont, type WebSafeFont, }
34
34
  export { type EspThemeToggleEventDetail } from "../header/esp-header.js";
35
35
  export { type PageWorkspaceResizeDetail, type PageWorkspaceResizeSource, type PageWorkspaceSeparator, } from "../page/esp-page.js";
36
36
  import type { EspalierDetails } from "../details/esp-details.js";
37
+ import type { ActionMenuSelectDetail } from "../action-menu/esp-action-menu.js";
38
+ import type { FocusChangedDetail } from "../focus-picker/esp-focus-picker.js";
37
39
  import type { FlyoutCloseReason } from "./flyout-events.js";
38
- import type { ValidityChangedDetail } from "./validation.js";
40
+ import { type ValidityChangedDetail } from "./validation.js";
39
41
  import type { GridClickedEvent, GridItemsChangedEventDetail, GridLoadErrorEventDetail, GridLoadStartEventDetail, GridLoadSuccessEventDetail } from "../grid/esp-grid.js";
40
42
  import type { DestroyEspalierInfo } from "../info/esp-info.js";
41
43
  import type { PickerItem } from "../pickers/esp-picker-item.js";
@@ -44,6 +46,7 @@ export type { UploadEventDetail } from "../image-upload/image-helpers.js";
44
46
  import type { FontPickerValueChangedDetail } from "../font-picker/esp-font-picker.js";
45
47
  import type { EspThemeToggleEventDetail } from "../header/esp-header.js";
46
48
  import type { PageWorkspaceResizeDetail } from "../page/esp-page.js";
49
+ import type { EspTreeEditDetail, EspTreeGraftDetail, EspTreeGraftInputDetail, EspTreeGraftRequestDetail, EspTreeNodeActionDetail, EspTreeSelectDetail, EspTreeToggleDetail } from "../tree/esp-tree.js";
47
50
  /**
48
51
  * Canonical event name strings for every CustomEvent in the library.
49
52
  *
@@ -58,47 +61,67 @@ import type { PageWorkspaceResizeDetail } from "../page/esp-page.js";
58
61
  * @menuLabel ESP_EVENTS
59
62
  */
60
63
  export declare const ESP_EVENTS: {
61
- readonly VALUE_CHANGED: "value-changed";
62
- readonly VALIDITY_CHANGED: "validity-changed";
63
- readonly CLICKED: "clicked";
64
- readonly ESP_SUBMIT: "esp-submit";
65
- readonly ESP_SUBMIT_RESPONSE: "esp-submit-response";
66
- readonly ESP_SUBMIT_ERROR: "esp-submit-error";
67
- readonly ESP_TAB_CHANGED: "esp-tab-changed";
68
- readonly ESP_TAB_UPDATED: "esp-tab-updated";
69
- readonly ESP_TOGGLE: "esp-toggle";
70
- readonly ESP_ACCORDION_CHANGE: "esp-accordion-change";
71
- readonly DRAWER_OPENED: "drawer-opened";
72
- readonly DRAWER_CLOSED: "drawer-closed";
73
- readonly ESP_THEME_TOGGLE: "esp-theme-toggle";
74
- readonly FLYOUT_OPENED: "flyout-opened";
75
- readonly FLYOUT_CLOSED: "flyout-closed";
76
- readonly FLYOUT_STATE_CHANGED: "flyout-state-changed";
77
- readonly ESP_PAGE_WORKSPACE_RESIZE: "esp-page-workspace-resize";
78
- readonly POPOVER_OPENED: "popover-opened";
79
- readonly POPOVER_CLOSED: "popover-closed";
80
- readonly GRID_EVENT: "grid-event";
64
+ readonly VALUE_CHANGED: "esp-value-changed";
65
+ readonly VALIDITY_CHANGED: "esp-validity-changed";
66
+ readonly CLICKED: "esp-clicked";
67
+ readonly ACTION_MENU_SELECT: "esp-action-menu-select";
68
+ readonly BURGER_OPENED: "esp-burger-opened";
69
+ readonly BURGER_CLOSED: "esp-burger-closed";
70
+ readonly DETAILS_TOGGLE: "esp-details-toggle";
71
+ readonly DETAILS_GROUP_CHANGE: "esp-details-group-change";
72
+ readonly DIALOG_OPENED: "esp-dialog-opened";
73
+ readonly DIALOG_CLOSING: "esp-dialog-closing";
74
+ readonly DIALOG_CLOSED: "esp-dialog-closed";
75
+ readonly FILE_UPLOAD_FILES_SELECTED: "esp-file-upload-files-selected";
76
+ readonly FLYOUT_OPENED: "esp-flyout-opened";
77
+ readonly FLYOUT_CLOSED: "esp-flyout-closed";
78
+ readonly FLYOUT_STATE_CHANGED: "esp-flyout-state-changed";
79
+ readonly FOCUS_PICKER_CHANGED: "esp-focus-picker-changed";
80
+ readonly FORM_DIALOG_CLOSE_REQUESTED: "esp-form-dialog-close-requested";
81
+ readonly FORM_SUBMIT: "esp-form-submit";
82
+ readonly FORM_SUBMIT_RESPONSE: "esp-form-submit-response";
83
+ readonly FORM_SUBMIT_ERROR: "esp-form-submit-error";
84
+ readonly GRID_EVENT: "esp-grid-event";
81
85
  readonly GRID_LOAD_START: "esp-grid-load-start";
82
86
  readonly GRID_LOAD_SUCCESS: "esp-grid-load-success";
83
87
  readonly GRID_LOAD_ERROR: "esp-grid-load-error";
84
88
  readonly GRID_ITEMS_CHANGED: "esp-grid-items-changed";
85
- readonly DESTROY: "destroy";
86
- readonly FILE_SELECTED: "file-selected";
87
- readonly FILE_REMOVED: "file-removed";
88
- readonly FILES_SELECTED: "files-selected";
89
- readonly FILES_REJECTED: "files-rejected";
90
- readonly UPLOAD_RETRY: "upload-retry";
91
- readonly RETRY_UPLOAD: "retry-upload";
92
- readonly IMAGES_REORDERED: "images-reordered";
93
- readonly SEARCH_REQUESTED: "search-requested";
94
- readonly RESULT_SELECTED: "result-selected";
95
- readonly SEARCH_CLOSED: "search-closed";
96
- readonly SELECTION_CHANGED: "selection-changed";
97
- readonly CLOSE_MENU: "close-menu";
98
- readonly REMOVE_IMAGE: "remove-image";
89
+ readonly HEADER_THEME_TOGGLE: "esp-header-theme-toggle";
90
+ readonly IMAGE_UPLOAD_FILE_SELECTED: "esp-image-upload-file-selected";
91
+ readonly IMAGE_UPLOAD_FILE_REMOVED: "esp-image-upload-file-removed";
92
+ readonly IMAGE_UPLOAD_FILES_REJECTED: "esp-image-upload-files-rejected";
93
+ readonly IMAGE_UPLOAD_RETRY: "esp-image-upload-retry";
94
+ readonly IMAGE_UPLOAD_IMAGES_REORDERED: "esp-image-upload-images-reordered";
95
+ readonly INFO_DESTROY: "esp-info-destroy";
96
+ readonly INPUT_ICON_CLICKED: "esp-input-icon-clicked";
97
+ readonly LIGHTBOX_CHANGED: "esp-lightbox-changed";
98
+ readonly MENU_GROUP_TOGGLE: "esp-menu-group-toggle";
99
+ readonly MENU_DRAWER_OPENED: "esp-menu-drawer-opened";
100
+ readonly MENU_DRAWER_CLOSED: "esp-menu-drawer-closed";
101
+ readonly PAGE_WORKSPACE_RESIZE: "esp-page-workspace-resize";
102
+ readonly PICKER_MENU_SELECTION_CHANGED: "esp-picker-menu-selection-changed";
103
+ readonly PICKER_MENU_CLOSE_REQUESTED: "esp-picker-menu-close-requested";
104
+ readonly PICKER_MENU_RANGE_CHANGED: "esp-picker-menu-range-changed";
105
+ readonly POPOVER_OPENED: "esp-popover-opened";
106
+ readonly POPOVER_CLOSED: "esp-popover-closed";
107
+ readonly SEARCH_REQUESTED: "esp-search-requested";
108
+ readonly SEARCH_RESULT_SELECTED: "esp-search-result-selected";
109
+ readonly SEARCH_CLOSED: "esp-search-closed";
110
+ readonly TAB_GROUP_CHANGED: "esp-tab-group-changed";
111
+ readonly TREE_SELECT: "esp-tree-select";
112
+ readonly TREE_TOGGLE: "esp-tree-toggle";
113
+ readonly TREE_GRAFT_REQUEST: "esp-tree-graft-request";
114
+ readonly TREE_GRAFT: "esp-tree-graft";
115
+ readonly TREE_EDIT: "esp-tree-edit";
116
+ readonly TREE_DELETE: "esp-tree-delete";
117
+ readonly TREE_MOVE_UP: "esp-tree-move-up";
118
+ readonly TREE_MOVE_DOWN: "esp-tree-move-down";
119
+ readonly TREE_CUT: "esp-tree-cut";
120
+ readonly TREE_PASTE_CHILD: "esp-tree-paste-child";
121
+ readonly TREE_GRAFT_INPUT: "esp-tree-graft-input";
99
122
  };
100
123
  /**
101
- * Detail for `value-changed` on toggle controls
124
+ * Detail for `esp-value-changed` on toggle controls
102
125
  * (`esp-checkbox`, `esp-switch`, `esp-radio-button`).
103
126
  *
104
127
  * @docUrl /api/toggle-value-changed-detail
@@ -112,7 +135,7 @@ export interface ToggleValueChangedDetail {
112
135
  value: string;
113
136
  }
114
137
  /**
115
- * Detail for `value-changed` on `esp-color-picker`.
138
+ * Detail for `esp-value-changed` on `esp-color-picker`.
116
139
  *
117
140
  * @docUrl /api/color-value-changed-detail
118
141
  * @menuGroup Event Details
@@ -125,7 +148,7 @@ export interface ColorValueChangedDetail {
125
148
  lightness: number;
126
149
  }
127
150
  /**
128
- * Detail for `esp-submit` on `esp-form`.
151
+ * Detail for `esp-form-submit` on `esp-form`.
129
152
  *
130
153
  * @docUrl /api/esp-submit-detail
131
154
  * @menuGroup Event Details
@@ -136,7 +159,7 @@ export interface EspSubmitDetail {
136
159
  form: HTMLFormElement;
137
160
  }
138
161
  /**
139
- * Detail for `esp-submit-response` on `esp-form`.
162
+ * Detail for `esp-form-submit-response` on `esp-form`.
140
163
  *
141
164
  * @docUrl /api/esp-submit-response-detail
142
165
  * @menuGroup Event Details
@@ -147,7 +170,7 @@ export interface EspSubmitResponseDetail {
147
170
  ok: boolean;
148
171
  }
149
172
  /**
150
- * Detail for `esp-submit-error` on `esp-form`.
173
+ * Detail for `esp-form-submit-error` on `esp-form`.
151
174
  *
152
175
  * @docUrl /api/esp-submit-error-detail
153
176
  * @menuGroup Event Details
@@ -157,7 +180,7 @@ export interface EspSubmitErrorDetail {
157
180
  error: unknown;
158
181
  }
159
182
  /**
160
- * Detail for `esp-tab-changed` on `esp-tab-group`.
183
+ * Detail for `esp-tab-group-changed` on `esp-tab-group`.
161
184
  *
162
185
  * @docUrl /api/esp-tab-changed-detail
163
186
  * @menuGroup Event Details
@@ -168,7 +191,7 @@ export interface EspTabChangedDetail {
168
191
  label: string;
169
192
  }
170
193
  /**
171
- * Detail for `esp-toggle` on `esp-details`.
194
+ * Detail for `esp-details-toggle` on `esp-details`.
172
195
  *
173
196
  * @docUrl /api/esp-toggle-detail
174
197
  * @menuGroup Event Details
@@ -178,7 +201,7 @@ export interface EspToggleDetail {
178
201
  open: boolean;
179
202
  }
180
203
  /**
181
- * Detail for `esp-accordion-change` on `esp-details-group`.
204
+ * Detail for `esp-details-group-change` on `esp-details-group`.
182
205
  *
183
206
  * @docUrl /api/esp-accordion-change-detail
184
207
  * @menuGroup Event Details
@@ -195,6 +218,7 @@ export interface EspalierButtonEventMap {
195
218
  export interface EspalierInputEventMap {
196
219
  [ESP_EVENTS.VALUE_CHANGED]: CustomEvent<string>;
197
220
  [ESP_EVENTS.VALIDITY_CHANGED]: CustomEvent<ValidityChangedDetail>;
221
+ [ESP_EVENTS.INPUT_ICON_CLICKED]: CustomEvent<void>;
198
222
  }
199
223
  /** Events fired by `<esp-textarea>`. */
200
224
  export interface EspalierTextareaEventMap {
@@ -219,7 +243,6 @@ export interface EspalierSwitchEventMap {
219
243
  /** Events fired by `<esp-radio-button>`. */
220
244
  export interface EspalierRadioButtonEventMap {
221
245
  [ESP_EVENTS.VALUE_CHANGED]: CustomEvent<ToggleValueChangedDetail>;
222
- [ESP_EVENTS.VALIDITY_CHANGED]: CustomEvent<ValidityChangedDetail>;
223
246
  }
224
247
  /** Events fired by `<esp-radio-button-group>`. */
225
248
  export interface EspalierRadioButtonGroupEventMap {
@@ -239,12 +262,10 @@ export interface EspalierPickSomeEventMap {
239
262
  /** Events fired by `<esp-color-picker>`. */
240
263
  export interface EspalierColorPickerEventMap {
241
264
  [ESP_EVENTS.VALUE_CHANGED]: CustomEvent<ColorValueChangedDetail>;
242
- [ESP_EVENTS.VALIDITY_CHANGED]: CustomEvent<ValidityChangedDetail>;
243
265
  }
244
266
  /** Events fired by `<esp-font-picker>`. */
245
267
  export interface EspalierFontPickerEventMap {
246
268
  [ESP_EVENTS.VALUE_CHANGED]: CustomEvent<FontPickerValueChangedDetail>;
247
- [ESP_EVENTS.VALIDITY_CHANGED]: CustomEvent<ValidityChangedDetail>;
248
269
  }
249
270
  /** Events fired by `<esp-date-picker>`. */
250
271
  export interface EspalierDatePickerEventMap {
@@ -253,31 +274,56 @@ export interface EspalierDatePickerEventMap {
253
274
  }
254
275
  /** Events fired by `<esp-form>`. */
255
276
  export interface EspalierFormEventMap {
256
- [ESP_EVENTS.ESP_SUBMIT]: CustomEvent<EspSubmitDetail>;
257
- [ESP_EVENTS.ESP_SUBMIT_RESPONSE]: CustomEvent<EspSubmitResponseDetail>;
258
- [ESP_EVENTS.ESP_SUBMIT_ERROR]: CustomEvent<EspSubmitErrorDetail>;
277
+ [ESP_EVENTS.FORM_DIALOG_CLOSE_REQUESTED]: CustomEvent<Record<string, never>>;
278
+ [ESP_EVENTS.FORM_SUBMIT]: CustomEvent<EspSubmitDetail>;
279
+ [ESP_EVENTS.FORM_SUBMIT_RESPONSE]: CustomEvent<EspSubmitResponseDetail>;
280
+ [ESP_EVENTS.FORM_SUBMIT_ERROR]: CustomEvent<EspSubmitErrorDetail>;
281
+ }
282
+ /** Events fired by `<esp-action-menu>`. */
283
+ export interface EspalierActionMenuEventMap {
284
+ [ESP_EVENTS.ACTION_MENU_SELECT]: CustomEvent<ActionMenuSelectDetail>;
259
285
  }
260
286
  /** Events fired by `<esp-tab-group>`. */
261
287
  export interface EspalierTabGroupEventMap {
262
- [ESP_EVENTS.ESP_TAB_CHANGED]: CustomEvent<EspTabChangedDetail>;
288
+ [ESP_EVENTS.TAB_GROUP_CHANGED]: CustomEvent<EspTabChangedDetail>;
263
289
  }
264
290
  /** Events fired by `<esp-details>`. */
265
291
  export interface EspalierDetailsEventMap {
266
- [ESP_EVENTS.ESP_TOGGLE]: CustomEvent<EspToggleDetail>;
292
+ [ESP_EVENTS.DETAILS_TOGGLE]: CustomEvent<EspToggleDetail>;
267
293
  }
268
294
  /** Events fired by `<esp-details-group>`. */
269
295
  export interface EspalierDetailsGroupEventMap {
270
- [ESP_EVENTS.ESP_ACCORDION_CHANGE]: CustomEvent<EspAccordionChangeDetail>;
296
+ [ESP_EVENTS.DETAILS_GROUP_CHANGE]: CustomEvent<EspAccordionChangeDetail>;
271
297
  }
272
298
  /** Events fired by `<esp-popover>`. */
273
299
  export interface EspalierPopoverEventMap {
274
300
  [ESP_EVENTS.POPOVER_OPENED]: CustomEvent<void>;
275
301
  [ESP_EVENTS.POPOVER_CLOSED]: CustomEvent<void>;
276
302
  }
303
+ /** Events fired by `<esp-dialog>`. */
304
+ export interface EspalierDialogEventMap {
305
+ [ESP_EVENTS.DIALOG_OPENED]: CustomEvent<Record<string, never>>;
306
+ [ESP_EVENTS.DIALOG_CLOSING]: CustomEvent<{
307
+ reason: "escape" | "close-dialog" | "api";
308
+ }>;
309
+ [ESP_EVENTS.DIALOG_CLOSED]: CustomEvent<{
310
+ reason: "escape" | "close-dialog" | "api";
311
+ }>;
312
+ }
277
313
  /** Events fired by `<esp-menu>`. */
278
314
  export interface EspalierMenuEventMap {
279
- [ESP_EVENTS.DRAWER_OPENED]: CustomEvent<void>;
280
- [ESP_EVENTS.DRAWER_CLOSED]: CustomEvent<void>;
315
+ [ESP_EVENTS.MENU_DRAWER_OPENED]: CustomEvent<void>;
316
+ [ESP_EVENTS.MENU_DRAWER_CLOSED]: CustomEvent<void>;
317
+ }
318
+ /** Events fired by `<esp-menu-group>`. */
319
+ export interface EspalierMenuGroupEventMap {
320
+ [ESP_EVENTS.MENU_GROUP_TOGGLE]: CustomEvent<{
321
+ open: boolean;
322
+ }>;
323
+ }
324
+ /** Events fired by `<esp-menu-item>`. */
325
+ export interface EspalierMenuItemEventMap {
326
+ [ESP_EVENTS.CLICKED]: CustomEvent<Record<string, never>>;
281
327
  }
282
328
  /** Events fired by `<esp-flyout>`. */
283
329
  export interface EspalierFlyoutEventMap {
@@ -289,7 +335,11 @@ export interface EspalierFlyoutEventMap {
289
335
  }
290
336
  /** Events fired by `<esp-page>`. */
291
337
  export interface EspalierPageEventMap {
292
- [ESP_EVENTS.ESP_PAGE_WORKSPACE_RESIZE]: CustomEvent<PageWorkspaceResizeDetail>;
338
+ [ESP_EVENTS.PAGE_WORKSPACE_RESIZE]: CustomEvent<PageWorkspaceResizeDetail>;
339
+ }
340
+ /** Events fired by `<esp-focus-picker>`. */
341
+ export interface EspalierFocusPickerEventMap {
342
+ [ESP_EVENTS.FOCUS_PICKER_CHANGED]: CustomEvent<FocusChangedDetail>;
293
343
  }
294
344
  /** Events fired by `<esp-header-button>`. */
295
345
  export interface EspalierHeaderButtonEventMap {
@@ -297,7 +347,7 @@ export interface EspalierHeaderButtonEventMap {
297
347
  }
298
348
  /** Events fired by `<esp-header>`. */
299
349
  export interface EspalierHeaderEventMap {
300
- [ESP_EVENTS.ESP_THEME_TOGGLE]: CustomEvent<EspThemeToggleEventDetail>;
350
+ [ESP_EVENTS.HEADER_THEME_TOGGLE]: CustomEvent<EspThemeToggleEventDetail>;
301
351
  }
302
352
  /** Events fired by `<esp-grid>`. */
303
353
  export interface EspalierGridEventMap {
@@ -309,10 +359,16 @@ export interface EspalierGridEventMap {
309
359
  }
310
360
  /** Events fired by `<esp-info>`. */
311
361
  export interface EspalierInfoEventMap {
312
- [ESP_EVENTS.DESTROY]: CustomEvent<DestroyEspalierInfo>;
362
+ [ESP_EVENTS.INFO_DESTROY]: CustomEvent<DestroyEspalierInfo>;
363
+ }
364
+ /** Events fired by `<esp-lightbox>`. */
365
+ export interface EspalierLightboxEventMap {
366
+ [ESP_EVENTS.LIGHTBOX_CHANGED]: CustomEvent<{
367
+ index: number;
368
+ }>;
313
369
  }
314
370
  /**
315
- * Detail for `images-reordered` on `esp-image-upload`.
371
+ * Detail for `esp-image-upload-images-reordered` on `esp-image-upload`.
316
372
  *
317
373
  * @docUrl /api/images-reordered-detail
318
374
  * @menuGroup Event Details
@@ -322,7 +378,7 @@ export interface ImagesReorderedDetail {
322
378
  images: EspalierUploadImage[];
323
379
  }
324
380
  /**
325
- * Detail for `files-rejected` on `esp-image-upload`.
381
+ * Detail for `esp-image-upload-files-rejected` on `esp-image-upload`.
326
382
  *
327
383
  * Fired when some of the user's selected files are skipped. Route it to a
328
384
  * toast or inline message if the component's built-in notice is not enough.
@@ -339,23 +395,33 @@ export interface FilesRejectedDetail {
339
395
  }
340
396
  /** Events fired by `<esp-image-upload>`. */
341
397
  export interface EspalierImageUploadEventMap {
342
- [ESP_EVENTS.FILE_SELECTED]: CustomEvent<UploadEventDetail>;
343
- [ESP_EVENTS.FILE_REMOVED]: CustomEvent<EspalierUploadImage>;
344
- [ESP_EVENTS.FILES_REJECTED]: CustomEvent<FilesRejectedDetail>;
345
- [ESP_EVENTS.UPLOAD_RETRY]: CustomEvent<UploadEventDetail>;
346
- [ESP_EVENTS.IMAGES_REORDERED]: CustomEvent<ImagesReorderedDetail>;
398
+ [ESP_EVENTS.IMAGE_UPLOAD_FILE_SELECTED]: CustomEvent<UploadEventDetail>;
399
+ [ESP_EVENTS.IMAGE_UPLOAD_FILE_REMOVED]: CustomEvent<EspalierUploadImage>;
400
+ [ESP_EVENTS.IMAGE_UPLOAD_FILES_REJECTED]: CustomEvent<FilesRejectedDetail>;
401
+ [ESP_EVENTS.IMAGE_UPLOAD_RETRY]: CustomEvent<UploadEventDetail>;
402
+ [ESP_EVENTS.IMAGE_UPLOAD_IMAGES_REORDERED]: CustomEvent<ImagesReorderedDetail>;
347
403
  }
348
404
  /** Events fired by `<esp-file-upload>`. */
349
405
  export interface EspalierFileUploadEventMap {
350
- [ESP_EVENTS.FILES_SELECTED]: CustomEvent<FileList>;
406
+ [ESP_EVENTS.FILE_UPLOAD_FILES_SELECTED]: CustomEvent<FileList>;
351
407
  }
352
408
  /** Events fired by `<esp-burger>`. */
353
409
  export interface EspalierBurgerEventMap {
354
- [ESP_EVENTS.DRAWER_OPENED]: CustomEvent<void>;
355
- [ESP_EVENTS.DRAWER_CLOSED]: CustomEvent<void>;
410
+ [ESP_EVENTS.BURGER_OPENED]: CustomEvent<void>;
411
+ [ESP_EVENTS.BURGER_CLOSED]: CustomEvent<void>;
412
+ }
413
+ /** Events fired by `<esp-picker-menu>`. */
414
+ export interface EspalierPickerMenuEventMap {
415
+ [ESP_EVENTS.PICKER_MENU_SELECTION_CHANGED]: CustomEvent<PickerItem[]>;
416
+ [ESP_EVENTS.PICKER_MENU_CLOSE_REQUESTED]: CustomEvent<PickerItem[]>;
417
+ [ESP_EVENTS.PICKER_MENU_RANGE_CHANGED]: CustomEvent<{
418
+ first: number;
419
+ last: number;
420
+ items: PickerItem[];
421
+ }>;
356
422
  }
357
423
  /**
358
- * Detail for `search-requested` on `esp-search`.
424
+ * Detail for `esp-search-requested` on `esp-search`.
359
425
  *
360
426
  * @docUrl /api/search-requested-detail
361
427
  * @menuGroup Event Details
@@ -366,7 +432,7 @@ export interface SearchRequestedDetail {
366
432
  query: string;
367
433
  }
368
434
  /**
369
- * Detail for `result-selected` on `esp-search`.
435
+ * Detail for `esp-search-result-selected` on `esp-search`.
370
436
  *
371
437
  * @docUrl /api/result-selected-detail
372
438
  * @menuGroup Event Details
@@ -384,6 +450,21 @@ export interface EspalierSliderEventMap {
384
450
  /** Events fired by `<esp-search>`. */
385
451
  export interface EspalierSearchEventMap {
386
452
  [ESP_EVENTS.SEARCH_REQUESTED]: CustomEvent<SearchRequestedDetail>;
387
- [ESP_EVENTS.RESULT_SELECTED]: CustomEvent<ResultSelectedDetail>;
453
+ [ESP_EVENTS.SEARCH_RESULT_SELECTED]: CustomEvent<ResultSelectedDetail>;
388
454
  [ESP_EVENTS.SEARCH_CLOSED]: CustomEvent<Record<string, never>>;
389
455
  }
456
+ /** Events fired by `<esp-tree>`. */
457
+ export interface EspalierTreeEventMap {
458
+ [ESP_EVENTS.VALIDITY_CHANGED]: CustomEvent<ValidityChangedDetail>;
459
+ [ESP_EVENTS.TREE_SELECT]: CustomEvent<EspTreeSelectDetail>;
460
+ [ESP_EVENTS.TREE_TOGGLE]: CustomEvent<EspTreeToggleDetail>;
461
+ [ESP_EVENTS.TREE_GRAFT_REQUEST]: CustomEvent<EspTreeGraftRequestDetail>;
462
+ [ESP_EVENTS.TREE_GRAFT]: CustomEvent<EspTreeGraftDetail>;
463
+ [ESP_EVENTS.TREE_EDIT]: CustomEvent<EspTreeEditDetail>;
464
+ [ESP_EVENTS.TREE_DELETE]: CustomEvent<EspTreeNodeActionDetail>;
465
+ [ESP_EVENTS.TREE_MOVE_UP]: CustomEvent<EspTreeNodeActionDetail>;
466
+ [ESP_EVENTS.TREE_MOVE_DOWN]: CustomEvent<EspTreeNodeActionDetail>;
467
+ [ESP_EVENTS.TREE_CUT]: CustomEvent<EspTreeNodeActionDetail>;
468
+ [ESP_EVENTS.TREE_PASTE_CHILD]: CustomEvent<EspTreeNodeActionDetail>;
469
+ [ESP_EVENTS.TREE_GRAFT_INPUT]: CustomEvent<EspTreeGraftInputDetail>;
470
+ }
@@ -1 +1 @@
1
- import{VALIDITY_CHANGED_EVENT as s}from"./validation.js";const e={VALUE_CHANGED:"value-changed",VALIDITY_CHANGED:"validity-changed",CLICKED:"clicked",ESP_SUBMIT:"esp-submit",ESP_SUBMIT_RESPONSE:"esp-submit-response",ESP_SUBMIT_ERROR:"esp-submit-error",ESP_TAB_CHANGED:"esp-tab-changed",ESP_TAB_UPDATED:"esp-tab-updated",ESP_TOGGLE:"esp-toggle",ESP_ACCORDION_CHANGE:"esp-accordion-change",DRAWER_OPENED:"drawer-opened",DRAWER_CLOSED:"drawer-closed",ESP_THEME_TOGGLE:"esp-theme-toggle",FLYOUT_OPENED:"flyout-opened",FLYOUT_CLOSED:"flyout-closed",FLYOUT_STATE_CHANGED:"flyout-state-changed",ESP_PAGE_WORKSPACE_RESIZE:"esp-page-workspace-resize",POPOVER_OPENED:"popover-opened",POPOVER_CLOSED:"popover-closed",GRID_EVENT:"grid-event",GRID_LOAD_START:"esp-grid-load-start",GRID_LOAD_SUCCESS:"esp-grid-load-success",GRID_LOAD_ERROR:"esp-grid-load-error",GRID_ITEMS_CHANGED:"esp-grid-items-changed",DESTROY:"destroy",FILE_SELECTED:"file-selected",FILE_REMOVED:"file-removed",FILES_SELECTED:"files-selected",FILES_REJECTED:"files-rejected",UPLOAD_RETRY:"upload-retry",RETRY_UPLOAD:"retry-upload",IMAGES_REORDERED:"images-reordered",SEARCH_REQUESTED:"search-requested",RESULT_SELECTED:"result-selected",SEARCH_CLOSED:"search-closed",SELECTION_CHANGED:"selection-changed",CLOSE_MENU:"close-menu",REMOVE_IMAGE:"remove-image"};export{e as ESP_EVENTS,s as VALIDITY_CHANGED_EVENT};
1
+ import{VALIDITY_CHANGED_EVENT as r}from"./validation.js";import{VALIDITY_CHANGED_EVENT as e}from"./validation.js";const _={VALUE_CHANGED:"esp-value-changed",VALIDITY_CHANGED:e,CLICKED:"esp-clicked",ACTION_MENU_SELECT:"esp-action-menu-select",BURGER_OPENED:"esp-burger-opened",BURGER_CLOSED:"esp-burger-closed",DETAILS_TOGGLE:"esp-details-toggle",DETAILS_GROUP_CHANGE:"esp-details-group-change",DIALOG_OPENED:"esp-dialog-opened",DIALOG_CLOSING:"esp-dialog-closing",DIALOG_CLOSED:"esp-dialog-closed",FILE_UPLOAD_FILES_SELECTED:"esp-file-upload-files-selected",FLYOUT_OPENED:"esp-flyout-opened",FLYOUT_CLOSED:"esp-flyout-closed",FLYOUT_STATE_CHANGED:"esp-flyout-state-changed",FOCUS_PICKER_CHANGED:"esp-focus-picker-changed",FORM_DIALOG_CLOSE_REQUESTED:"esp-form-dialog-close-requested",FORM_SUBMIT:"esp-form-submit",FORM_SUBMIT_RESPONSE:"esp-form-submit-response",FORM_SUBMIT_ERROR:"esp-form-submit-error",GRID_EVENT:"esp-grid-event",GRID_LOAD_START:"esp-grid-load-start",GRID_LOAD_SUCCESS:"esp-grid-load-success",GRID_LOAD_ERROR:"esp-grid-load-error",GRID_ITEMS_CHANGED:"esp-grid-items-changed",HEADER_THEME_TOGGLE:"esp-header-theme-toggle",IMAGE_UPLOAD_FILE_SELECTED:"esp-image-upload-file-selected",IMAGE_UPLOAD_FILE_REMOVED:"esp-image-upload-file-removed",IMAGE_UPLOAD_FILES_REJECTED:"esp-image-upload-files-rejected",IMAGE_UPLOAD_RETRY:"esp-image-upload-retry",IMAGE_UPLOAD_IMAGES_REORDERED:"esp-image-upload-images-reordered",INFO_DESTROY:"esp-info-destroy",INPUT_ICON_CLICKED:"esp-input-icon-clicked",LIGHTBOX_CHANGED:"esp-lightbox-changed",MENU_GROUP_TOGGLE:"esp-menu-group-toggle",MENU_DRAWER_OPENED:"esp-menu-drawer-opened",MENU_DRAWER_CLOSED:"esp-menu-drawer-closed",PAGE_WORKSPACE_RESIZE:"esp-page-workspace-resize",PICKER_MENU_SELECTION_CHANGED:"esp-picker-menu-selection-changed",PICKER_MENU_CLOSE_REQUESTED:"esp-picker-menu-close-requested",PICKER_MENU_RANGE_CHANGED:"esp-picker-menu-range-changed",POPOVER_OPENED:"esp-popover-opened",POPOVER_CLOSED:"esp-popover-closed",SEARCH_REQUESTED:"esp-search-requested",SEARCH_RESULT_SELECTED:"esp-search-result-selected",SEARCH_CLOSED:"esp-search-closed",TAB_GROUP_CHANGED:"esp-tab-group-changed",TREE_SELECT:"esp-tree-select",TREE_TOGGLE:"esp-tree-toggle",TREE_GRAFT_REQUEST:"esp-tree-graft-request",TREE_GRAFT:"esp-tree-graft",TREE_EDIT:"esp-tree-edit",TREE_DELETE:"esp-tree-delete",TREE_MOVE_UP:"esp-tree-move-up",TREE_MOVE_DOWN:"esp-tree-move-down",TREE_CUT:"esp-tree-cut",TREE_PASTE_CHILD:"esp-tree-paste-child",TREE_GRAFT_INPUT:"esp-tree-graft-input"};export{_ as ESP_EVENTS,r as VALIDITY_CHANGED_EVENT};
@@ -1,5 +1,5 @@
1
1
  /**
2
- * The reason a flyout closed, carried on the `flyout-closed`
2
+ * The reason a flyout closed, carried on the `esp-flyout-closed`
3
3
  * event detail.
4
4
  *
5
5
  * - `"escape"` — the user pressed the Escape key
@@ -1 +1 @@
1
- import{getEspBus as o}from"./bus-events.js";const u=new WeakSet,r="flyout-full-height-requested";function n(t={}){s(t)}function s(t={}){const e={...t};return o().publish("show-flyout",e),u.has(e)}function c(t){u.add(t)}function i(){o().publish("close-flyout",{})}export{r as FLYOUT_FULL_HEIGHT_REQUEST_EVENT,i as closeFlyout,c as markFlyoutRequestServiced,s as publishFlyoutRequest,n as showFlyout};
1
+ import{getEspBus as o}from"./bus-events.js";const u=new WeakSet,n="esp-internal-flyout-full-height-requested";function r(t={}){s(t)}function s(t={}){const e={...t};return o().publish("show-flyout",e),u.has(e)}function i(t){u.add(t)}function c(){o().publish("close-flyout",{})}export{n as FLYOUT_FULL_HEIGHT_REQUEST_EVENT,c as closeFlyout,i as markFlyoutRequestServiced,s as publishFlyoutRequest,r as showFlyout};
@@ -69,7 +69,7 @@ export declare class FormFieldController implements ReactiveController {
69
69
  /**
70
70
  * Push the current value into `ElementInternals` for form
71
71
  * participation, then run constraint validation and dispatch
72
- * a `validity-changed` event.
72
+ * a `esp-validity-changed` event.
73
73
  *
74
74
  * Call this whenever the host's value changes.
75
75
  */
@@ -84,7 +84,7 @@ export declare class FormFieldController implements ReactiveController {
84
84
  syncValueSilently(): void;
85
85
  /**
86
86
  * Run constraint validation against the host's current state
87
- * and dispatch a `validity-changed` event.
87
+ * and dispatch a `esp-validity-changed` event.
88
88
  */
89
89
  validate(): void;
90
90
  /**
@@ -99,7 +99,7 @@ export declare class FormFieldController implements ReactiveController {
99
99
  /**
100
100
  * Delegate for the host's `formResetCallback()`.
101
101
  * Calls the `onReset` hook, silently re-syncs the form value
102
- * and validity, then dispatches `validity-changed` with
102
+ * and validity, then dispatches `esp-validity-changed` with
103
103
  * `valid: true` so that `esp-form-item` clears any displayed
104
104
  * errors. The internals are updated to reflect the real
105
105
  * (possibly invalid) state, but the event always reports
@@ -4,18 +4,6 @@ export declare const DEFAULT_ICON_VIEW_BOX = "0 0 24 24";
4
4
  export declare const INTENT_VARIANTS: readonly EspalierIntentVariant[];
5
5
  export declare function normalizeIntentVariant(value: string | null | undefined): EspalierIntentVariant;
6
6
  export declare function getIconHrefForHost(icon: string | null | undefined, host?: Element | null | undefined): string;
7
- /**
8
- * Former name of `getIconHrefForHost`.
9
- *
10
- * @deprecated Use `getIconHrefForHost`. This alias is retained for one release
11
- * so existing consumers keep compiling; it will be removed after that.
12
- *
13
- * NOTE: do not use an inline `{@link}` tag in this comment. On an exported
14
- * `const` alias the custom-elements-manifest analyzer tries to resolve the link
15
- * target and serializes the TypeScript AST node, which fails `build-cem` with
16
- * "Converting circular structure to JSON". A plain backticked name is safe.
17
- */
18
- export declare const getIconHref: typeof getIconHrefForHost;
19
7
  /**
20
8
  * The configured sprite, classified (ESP0176).
21
9
  *
@@ -1 +1 @@
1
- import{traverseToClosest as i}from"./utilities.js";const u="/assets/icons.svg",N="0 0 24 24",a=/^[A-Za-z0-9][A-Za-z0-9_-]*$/u,l=100,o=new Set,s=[],d=["neutral","success","warning","danger","info"];function _(n){return d.includes(n)?n:"neutral"}function I(n,e=null){const t=n?.trim()??"";if(!a.test(t))return t.length>0&&m(t)&&console.warn(`Invalid Espalier icon name "${t}". Icon names must start with a letter or number and may only contain letters, numbers, dashes, and underscores.`),"";const r=c(e);switch(r.kind){case"url":return`${r.url}#${t}`;case"document":return`#${t}`;default:return""}}const g=I;function c(n){const e=n?i(n,"esp-root"):null;return f(e?e.iconSpriteUrl:u)}function f(n){const e=(n??"").trim();if(e.startsWith("#")){const r=e.slice(1).trim();return r?{kind:"document",spriteId:r}:{kind:"none"}}const t=e.split("#")[0]?.trim()||"";return t?{kind:"url",url:t}:{kind:"none"}}function A(n){const e=c(n);return e.kind==="url"?e.url:""}function m(n){if(o.has(n))return!1;if(o.add(n),s.push(n),s.length>l){const e=s.shift();e&&o.delete(e)}return!0}function h(){o.clear(),s.length=0}export{u as DEFAULT_ICON_SPRITE_URL,N as DEFAULT_ICON_VIEW_BOX,d as INTENT_VARIANTS,f as classifyIconSpriteValue,g as getIconHref,I as getIconHrefForHost,c as getIconSpriteReference,A as getIconSpriteUrl,_ as normalizeIntentVariant,h as resetWarnedInvalidIconNames};
1
+ import{traverseToClosest as c}from"./utilities.js";const u="/assets/icons.svg",p="0 0 24 24",a=/^[A-Za-z0-9][A-Za-z0-9_-]*$/u,l=100,o=new Set,s=[],d=["neutral","success","warning","danger","info"];function N(n){return d.includes(n)?n:"neutral"}function _(n,e=null){const t=n?.trim()??"";if(!a.test(t))return t.length>0&&f(t)&&console.warn(`Invalid Espalier icon name "${t}". Icon names must start with a letter or number and may only contain letters, numbers, dashes, and underscores.`),"";const r=i(e);switch(r.kind){case"url":return`${r.url}#${t}`;case"document":return`#${t}`;default:return""}}function i(n){const e=n?c(n,"esp-root"):null;return I(e?e.iconSpriteUrl:u)}function I(n){const e=(n??"").trim();if(e.startsWith("#")){const r=e.slice(1).trim();return r?{kind:"document",spriteId:r}:{kind:"none"}}const t=e.split("#")[0]?.trim()||"";return t?{kind:"url",url:t}:{kind:"none"}}function A(n){const e=i(n);return e.kind==="url"?e.url:""}function f(n){if(o.has(n))return!1;if(o.add(n),s.push(n),s.length>l){const e=s.shift();e&&o.delete(e)}return!0}function g(){o.clear(),s.length=0}export{u as DEFAULT_ICON_SPRITE_URL,p as DEFAULT_ICON_VIEW_BOX,d as INTENT_VARIANTS,I as classifyIconSpriteValue,_ as getIconHrefForHost,i as getIconSpriteReference,A as getIconSpriteUrl,N as normalizeIntentVariant,g as resetWarnedInvalidIconNames};
@@ -4,37 +4,6 @@
4
4
  * `@taprootio/espalier/shared/utilities` is a published entry point.
5
5
  */
6
6
  export { getSpaceAboveBelow, type SpaceAboveBelow } from "./viewport.js";
7
- /**
8
- * Scroll an element into view within a scrollable container.
9
- *
10
- * @deprecated No longer used by Espalier. Prefer `Element.scrollIntoView` with
11
- * `block: "nearest"`, which the platform implements natively. Scheduled for
12
- * removal in the next major release.
13
- *
14
- * @param container - The scrollable container element
15
- * @param element - The element to scroll into view
16
- * @param up - If true, scroll upward; if false, scroll downward
17
- */
18
- export declare function scrollElementIntoView(container: HTMLElement, element: HTMLElement, up: boolean): void;
19
- /**
20
- * Whether an element or any ancestor is fixed-positioned, crossing shadow
21
- * boundaries.
22
- *
23
- * @deprecated No longer used by Espalier. Scheduled for removal in the next
24
- * major release.
25
- *
26
- * @param element - The element to check
27
- */
28
- export declare function isFixedInShadowDom(element: HTMLElement): boolean;
29
- /**
30
- * Whether an element or any light-DOM ancestor is fixed-positioned.
31
- *
32
- * @deprecated No longer used by Espalier. Scheduled for removal in the next
33
- * major release.
34
- *
35
- * @param element - The element to check
36
- */
37
- export declare function isFixedOrAncestorFixed(element: HTMLElement): boolean;
38
7
  /**
39
8
  * Traverses up the DOM tree from a given element to find the closest matching element.
40
9
  * Handles traversal across Shadow DOM boundaries to locate elements in parent scopes.
@@ -1 +1 @@
1
- import{getSpaceAboveBelow as g}from"./viewport.js";function c(t,e,o){const n=t.getBoundingClientRect(),r=e.getBoundingClientRect();if(r.top<n.top||r.bottom>n.bottom){const s=r.top-n.top;o||s<0?t.scrollTop+=s:t.scrollBy({top:r.height})}}function f(t){let e=t;for(;e;){if(i(e.assignedSlot?.parentNode)||getComputedStyle(e).position==="fixed")return!0;const o=e.assignedSlot?e.assignedSlot.getRootNode():e.getRootNode();if(!(o instanceof ShadowRoot))break;e=o.host}return!1}function i(t){if(!t||!(t instanceof HTMLElement))return!1;let e=t;for(;e;){if(getComputedStyle(e).position==="fixed")return!0;e=e.parentElement}return!1}function u(t,e){let o=t,n=null;for(;!n&&o&&o.closest;)if(n=o.closest(e),!n){const r=o.getRootNode();r instanceof ShadowRoot?o=r.host:o=void 0}return n}const d=(t,e,o)=>{if(t.length!==e.length)return!1;const n=t.map(s=>s[o]).sort(),r=e.map(s=>s[o]).sort();return n.every((s,l)=>s===r[l])};export{d as arrayKeysMatch,g as getSpaceAboveBelow,f as isFixedInShadowDom,i as isFixedOrAncestorFixed,c as scrollElementIntoView,u as traverseToClosest};
1
+ import{getSpaceAboveBelow as d}from"./viewport.js";function a(s,n){let e=s,o=null;for(;!o&&e&&e.closest;)if(o=e.closest(n),!o){const l=e.getRootNode();l instanceof ShadowRoot?e=l.host:e=void 0}return o}const c=(s,n,e)=>{if(s.length!==n.length)return!1;const o=s.map(t=>t[e]).sort(),l=n.map(t=>t[e]).sort();return o.every((t,r)=>t===l[r])};export{c as arrayKeysMatch,d as getSpaceAboveBelow,a as traverseToClosest};
@@ -3,8 +3,8 @@ export type ValidationError = {
3
3
  fieldName: string;
4
4
  };
5
5
  /** Event name dispatched by `FormFieldController` on every validation pass. */
6
- export declare const VALIDITY_CHANGED_EVENT = "validity-changed";
7
- /** Detail payload for the `validity-changed` custom event. */
6
+ export declare const VALIDITY_CHANGED_EVENT = "esp-validity-changed";
7
+ /** Detail payload for the `esp-validity-changed` custom event. */
8
8
  export interface ValidityChangedDetail {
9
9
  valid: boolean;
10
10
  message: string;
@@ -1 +1 @@
1
- const t="validity-changed";export{t as VALIDITY_CHANGED_EVENT};
1
+ const e="esp-validity-changed";export{e as VALIDITY_CHANGED_EVENT};
@@ -34,9 +34,11 @@ import { type EspalierFormField } from "../form-item/esp-form-item.js";
34
34
  * @slot - Label content displayed alongside the slider. When
35
35
  * present, it provides the accessible name via `aria-labelledby`.
36
36
  *
37
- * @event {CustomEvent<string>} value-changed -
37
+ * @event {CustomEvent<string>} esp-value-changed -
38
38
  * Fired when the slider value changes. The detail is the new value
39
39
  * as a string.
40
+ * @event {CustomEvent<{ valid: boolean; message: string }>} esp-validity-changed -
41
+ * Fired whenever the always-valid form contract is evaluated.
40
42
  *
41
43
  * @cssprop --esp-slider-track-height - Height of the slider track.
42
44
  * Defaults to `6px`.
@@ -103,7 +105,7 @@ export declare class EspalierSlider extends EspalierElementBase implements Espal
103
105
  protected firstUpdated(changed: PropertyValues): void;
104
106
  /** Focus the slider thumb. */
105
107
  focus(options?: FocusOptions): void;
106
- /** Re-run constraint validation and dispatch `validity-changed`. */
108
+ /** Re-run constraint validation and dispatch `esp-validity-changed`. */
107
109
  validate(): void;
108
110
  /** Check whether the current state is valid (delegates to ElementInternals). */
109
111
  checkValidity(): boolean;
@@ -42,8 +42,8 @@ var n=function(t,e,o,a){var l=arguments.length,i=l<3?e:a===null?a=Object.getOwnP
42
42
  offset="4px"
43
43
  show-delay="0"
44
44
  hide-delay="100"
45
- @popover-opened=${this.handlePopoverOpened}
46
- @popover-closed=${this.handlePopoverClosed}
45
+ @esp-popover-opened=${this.handlePopoverOpened}
46
+ @esp-popover-closed=${this.handlePopoverClosed}
47
47
  >
48
48
  <button
49
49
  slot="target"
@@ -54,9 +54,11 @@ import { type EspalierFormField } from "../form-item/esp-form-item.js";
54
54
  * renders beside the track; in text mode it is visually hidden
55
55
  * and included in the control's accessible label.
56
56
  *
57
- * @event {CustomEvent<{ checked: boolean; value: string }>} value-changed -
57
+ * @event {CustomEvent<{ checked: boolean; value: string }>} esp-value-changed -
58
58
  * Fired when the switch is toggled. The detail contains the new
59
59
  * `checked` state and the switch `value`.
60
+ * @event {CustomEvent<{ valid: boolean; message: string }>} esp-validity-changed -
61
+ * Fired whenever constraint validation runs.
60
62
  *
61
63
  * @cssprop --esp-switch-width - The width of the switch track.
62
64
  * Defaults to `calc(var(--esp-size-normal-to-medium) * 1.75)`.
@@ -152,7 +154,7 @@ export declare class EspalierSwitch extends EspalierElementBase implements Espal
152
154
  * Focus the switch control.
153
155
  */
154
156
  focus(options?: FocusOptions): void;
155
- /** Re-run constraint validation and dispatch `validity-changed`. */
157
+ /** Re-run constraint validation and dispatch `esp-validity-changed`. */
156
158
  validate(): void;
157
159
  /** Check whether the current state is valid (delegates to ElementInternals). */
158
160
  checkValidity(): boolean;
@@ -97,7 +97,7 @@ import { EspalierElementBase } from "../shared/esp-element-base.js";
97
97
  * </esp-tab-group>
98
98
  * <script>
99
99
  * const tabs = findByTagName("esp-tab-group")[0];
100
- * tabs.addEventListener("esp-tab-changed", (ev) => {
100
+ * tabs.addEventListener("esp-tab-group-changed", (ev) => {
101
101
  * console.log("Switched to:", ev.detail.label, "at index", ev.detail.index);
102
102
  * });
103
103
  * </script>
@@ -124,7 +124,7 @@ import { EspalierElementBase } from "../shared/esp-element-base.js";
124
124
  * @cssprop --esp-tab-size-padding - Padding inside the panel
125
125
  * area and tab buttons.
126
126
  *
127
- * @event {CustomEvent<{ index: number; label: string }>} esp-tab-changed -
127
+ * @event {CustomEvent<{ index: number; label: string }>} esp-tab-group-changed -
128
128
  * Fired when the active tab changes. The detail contains
129
129
  * the `index` and `label` of the newly active tab.
130
130
  *