@tylertech/forge 3.10.5 → 3.11.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 (154) hide show
  1. package/custom-elements.json +341 -139
  2. package/dist/app-bar/forge-app-bar.css +11 -5
  3. package/dist/button/forge-button.css +12 -6
  4. package/dist/checkbox/forge-checkbox.css +21 -17
  5. package/dist/chips/forge-chips.css +10 -4
  6. package/dist/field/forge-field.css +7 -5
  7. package/dist/floating-action-button/forge-floating-action-button.css +10 -6
  8. package/dist/forge.css +6 -1
  9. package/dist/icon-button/forge-icon-button.css +10 -4
  10. package/dist/lib.js +22 -22
  11. package/dist/lib.js.map +4 -4
  12. package/dist/list/forge-list.css +57 -3
  13. package/dist/radio/forge-radio.css +20 -12
  14. package/dist/skip-link/forge-skip-link.css +36 -32
  15. package/dist/switch/forge-switch.css +7 -5
  16. package/dist/table/forge-table.css +6 -1
  17. package/dist/vscode.html-custom-data.json +53 -43
  18. package/esm/accordion/accordion.d.ts +2 -0
  19. package/esm/accordion/accordion.js +2 -0
  20. package/esm/app-bar/app-bar/app-bar-adapter.js +2 -2
  21. package/esm/app-bar/app-bar/app-bar.d.ts +1 -1
  22. package/esm/app-bar/app-bar/app-bar.js +1 -1
  23. package/esm/app-bar/help-button/app-bar-help-button.d.ts +1 -1
  24. package/esm/app-bar/help-button/app-bar-help-button.js +1 -1
  25. package/esm/app-bar/menu-button/app-bar-menu-button.d.ts +1 -1
  26. package/esm/app-bar/menu-button/app-bar-menu-button.js +1 -1
  27. package/esm/app-bar/notification-button/app-bar-notification-button.d.ts +2 -0
  28. package/esm/app-bar/notification-button/app-bar-notification-button.js +2 -0
  29. package/esm/app-bar/profile-button/app-bar-profile-button-adapter.d.ts +2 -1
  30. package/esm/app-bar/profile-button/app-bar-profile-button-adapter.js +2 -0
  31. package/esm/app-bar/profile-button/app-bar-profile-button.d.ts +2 -0
  32. package/esm/app-bar/profile-button/app-bar-profile-button.js +2 -0
  33. package/esm/app-bar/search/app-bar-search.d.ts +2 -0
  34. package/esm/app-bar/search/app-bar-search.js +2 -0
  35. package/esm/autocomplete/autocomplete.d.ts +2 -0
  36. package/esm/autocomplete/autocomplete.js +2 -0
  37. package/esm/backdrop/backdrop.d.ts +2 -0
  38. package/esm/backdrop/backdrop.js +2 -0
  39. package/esm/badge/badge.d.ts +2 -0
  40. package/esm/badge/badge.js +2 -0
  41. package/esm/button/base/base-button-adapter.js +2 -2
  42. package/esm/button-area/button-area-adapter.js +2 -2
  43. package/esm/button-toggle/button-toggle/button-toggle-adapter.js +2 -2
  44. package/esm/button-toggle/button-toggle/button-toggle.d.ts +2 -0
  45. package/esm/button-toggle/button-toggle/button-toggle.js +2 -0
  46. package/esm/button-toggle/button-toggle-group/button-toggle-group.d.ts +1 -1
  47. package/esm/button-toggle/button-toggle-group/button-toggle-group.js +1 -1
  48. package/esm/calendar/calendar-menu/calendar-menu.js +1 -1
  49. package/esm/calendar/calendar.d.ts +2 -0
  50. package/esm/calendar/calendar.js +3 -1
  51. package/esm/card/card.d.ts +2 -0
  52. package/esm/card/card.js +2 -0
  53. package/esm/chip-field/chip-field.d.ts +2 -0
  54. package/esm/chip-field/chip-field.js +2 -0
  55. package/esm/chips/chip/chip-adapter.js +2 -2
  56. package/esm/chips/chip/chip.d.ts +2 -0
  57. package/esm/chips/chip/chip.js +2 -0
  58. package/esm/color-picker/color-picker.d.ts +2 -0
  59. package/esm/color-picker/color-picker.js +3 -1
  60. package/esm/core/utils/a11y-utils.js +17 -0
  61. package/esm/core/utils/utils.js +8 -2
  62. package/esm/date-picker/date-picker.d.ts +2 -0
  63. package/esm/date-picker/date-picker.js +2 -0
  64. package/esm/date-range-picker/date-range-picker.d.ts +2 -0
  65. package/esm/date-range-picker/date-range-picker.js +2 -0
  66. package/esm/deprecated/button/deprecated-button.js +3 -3
  67. package/esm/deprecated/icon-button/deprecated-icon-button.js +2 -2
  68. package/esm/drawer/drawer/drawer.d.ts +2 -0
  69. package/esm/drawer/drawer/drawer.js +3 -1
  70. package/esm/drawer/mini-drawer/mini-drawer.d.ts +2 -0
  71. package/esm/drawer/mini-drawer/mini-drawer.js +3 -1
  72. package/esm/drawer/modal-drawer/modal-drawer.d.ts +2 -0
  73. package/esm/drawer/modal-drawer/modal-drawer.js +3 -1
  74. package/esm/field/field-adapter.js +2 -2
  75. package/esm/field/field-core.d.ts +3 -3
  76. package/esm/focus-indicator/focus-indicator-constants.d.ts +1 -11
  77. package/esm/focus-indicator/focus-indicator-constants.js +2 -17
  78. package/esm/focus-indicator/focus-indicator.d.ts +52 -25
  79. package/esm/focus-indicator/focus-indicator.js +137 -61
  80. package/esm/focus-indicator/index.d.ts +0 -2
  81. package/esm/focus-indicator/index.js +0 -2
  82. package/esm/icon-button/icon-button.d.ts +2 -0
  83. package/esm/icon-button/icon-button.js +2 -0
  84. package/esm/keyboard-shortcut/keyboard-shortcut.d.ts +2 -0
  85. package/esm/keyboard-shortcut/keyboard-shortcut.js +2 -0
  86. package/esm/list/list/list.js +1 -1
  87. package/esm/list/list-item/list-item-constants.js +1 -1
  88. package/esm/list/list-item/list-item-core.d.ts +2 -0
  89. package/esm/list/list-item/list-item-core.js +29 -6
  90. package/esm/list/list-item/list-item.d.ts +1 -0
  91. package/esm/list/list-item/list-item.js +2 -1
  92. package/esm/list-dropdown/list-dropdown-constants.d.ts +6 -0
  93. package/esm/list-dropdown/list-dropdown-constants.js +6 -1
  94. package/esm/list-dropdown/list-dropdown-utils.js +28 -1
  95. package/esm/menu/menu.d.ts +2 -0
  96. package/esm/menu/menu.js +2 -0
  97. package/esm/page-state/page-state.d.ts +2 -1
  98. package/esm/page-state/page-state.js +2 -1
  99. package/esm/paginator/paginator.d.ts +2 -0
  100. package/esm/paginator/paginator.js +2 -0
  101. package/esm/popover/popover.js +1 -1
  102. package/esm/profile-card/profile-card.d.ts +2 -0
  103. package/esm/profile-card/profile-card.js +2 -0
  104. package/esm/select/core/base-select-constants.d.ts +4 -0
  105. package/esm/select/core/base-select-core.d.ts +22 -2
  106. package/esm/select/core/base-select-core.js +217 -40
  107. package/esm/select/option/option.d.ts +2 -0
  108. package/esm/select/option/option.js +2 -0
  109. package/esm/select/option-group/option-group.d.ts +2 -0
  110. package/esm/select/option-group/option-group.js +2 -0
  111. package/esm/select/select/select-constants.d.ts +5 -0
  112. package/esm/select/select/select-constants.js +5 -2
  113. package/esm/select/select/select.d.ts +14 -2
  114. package/esm/select/select/select.js +22 -1
  115. package/esm/select/select-dropdown/select-dropdown.d.ts +2 -0
  116. package/esm/select/select-dropdown/select-dropdown.js +2 -0
  117. package/esm/split-button/split-button.js +1 -1
  118. package/esm/split-view/split-view/split-view.d.ts +2 -0
  119. package/esm/split-view/split-view/split-view.js +2 -0
  120. package/esm/split-view/split-view-panel/split-view-panel.d.ts +2 -0
  121. package/esm/split-view/split-view-panel/split-view-panel.js +3 -1
  122. package/esm/stepper/step/step.d.ts +2 -0
  123. package/esm/stepper/step/step.js +3 -1
  124. package/esm/stepper/stepper/stepper.d.ts +2 -0
  125. package/esm/stepper/stepper/stepper.js +2 -0
  126. package/esm/table/table-utils.js +3 -0
  127. package/esm/table/table.d.ts +2 -0
  128. package/esm/table/table.js +4 -1
  129. package/esm/tabs/tab/tab-adapter.js +2 -2
  130. package/esm/tabs/tab/tab.d.ts +2 -0
  131. package/esm/tabs/tab/tab.js +2 -0
  132. package/esm/time-picker/time-picker.d.ts +2 -0
  133. package/esm/time-picker/time-picker.js +2 -0
  134. package/esm/tooltip/tooltip-adapter.d.ts +6 -0
  135. package/esm/tooltip/tooltip-adapter.js +9 -0
  136. package/esm/tooltip/tooltip-constants.d.ts +1 -0
  137. package/esm/tooltip/tooltip-constants.js +2 -1
  138. package/esm/tooltip/tooltip-core.d.ts +20 -0
  139. package/esm/tooltip/tooltip-core.js +96 -2
  140. package/esm/tooltip/tooltip.js +1 -1
  141. package/esm/view-switcher/view/view.d.ts +2 -0
  142. package/esm/view-switcher/view/view.js +2 -0
  143. package/esm/view-switcher/view-switcher.d.ts +2 -0
  144. package/esm/view-switcher/view-switcher.js +2 -0
  145. package/package.json +4 -4
  146. package/sass/focus-indicator/focus-indicator.scss +1 -1
  147. package/sass/icon-button/forge-icon-button.scss +3 -3
  148. package/sass/list/forge-list.scss +6 -6
  149. package/sass/table/_core.scss +13 -1
  150. package/sass/tooltip/_core.scss +0 -2
  151. package/esm/focus-indicator/focus-indicator-adapter.d.ts +0 -29
  152. package/esm/focus-indicator/focus-indicator-adapter.js +0 -37
  153. package/esm/focus-indicator/focus-indicator-core.d.ts +0 -48
  154. package/esm/focus-indicator/focus-indicator-core.js +0 -129
@@ -15,6 +15,8 @@ export declare const SELECT_CONSTANTS: {
15
15
  PLACEHOLDER: string;
16
16
  OBSERVE_SCROLL: string;
17
17
  OBSERVE_SCROLL_THRESHOLD: string;
18
+ SHOW_SELECT_ALL: string;
19
+ SELECT_ALL_LABEL: string;
18
20
  };
19
21
  attributes: {
20
22
  OPEN: string;
@@ -26,6 +28,8 @@ export declare const SELECT_CONSTANTS: {
26
28
  PLACEHOLDER: string;
27
29
  OBSERVE_SCROLL: string;
28
30
  OBSERVE_SCROLL_THRESHOLD: string;
31
+ SHOW_SELECT_ALL: string;
32
+ SELECT_ALL_LABEL: string;
29
33
  };
30
34
  selectors: {
31
35
  FIELD: string;
@@ -34,6 +38,7 @@ export declare const SELECT_CONSTANTS: {
34
38
  };
35
39
  events: {
36
40
  SCROLLED_BOTTOM: string;
41
+ SELECT_ALL: string;
37
42
  };
38
43
  };
39
44
  export { type FieldDensity as SelectDensityType, type FieldShape as SelectShapeType } from '../../field/base/base-field-constants';
@@ -19,13 +19,16 @@ const observedAttributes = {
19
19
  DISABLED: 'disabled',
20
20
  PLACEHOLDER: 'placeholder',
21
21
  OBSERVE_SCROLL: 'observe-scroll',
22
- OBSERVE_SCROLL_THRESHOLD: 'observe-scroll-threshold'
22
+ OBSERVE_SCROLL_THRESHOLD: 'observe-scroll-threshold',
23
+ SHOW_SELECT_ALL: 'show-select-all',
24
+ SELECT_ALL_LABEL: 'select-all-label'
23
25
  };
24
26
  const attributes = {
25
27
  ...observedAttributes
26
28
  };
27
29
  const events = {
28
- SCROLLED_BOTTOM: `${elementName}-scrolled-bottom`
30
+ SCROLLED_BOTTOM: `${elementName}-scrolled-bottom`,
31
+ SELECT_ALL: `${elementName}-select-all`
29
32
  };
30
33
  export const SELECT_CONSTANTS = {
31
34
  elementName,
@@ -12,12 +12,14 @@ import { IWithElementInternals } from '../../core/mixins/internals/with-element-
12
12
  import { IWithLabelAwareness } from '../../core/mixins/label/with-label-aware';
13
13
  import { FieldDensity, FieldLabelPosition } from '../../field';
14
14
  import { IWithBaseField } from '../../field/base/with-base-field';
15
- import { BaseSelectComponent, IBaseSelectComponent } from '../core';
15
+ import { BaseSelectComponent, IBaseSelectComponent, SelectSelectAllEventData } from '../core';
16
16
  import { SelectCore } from './select-core';
17
17
  import { IListDropdownAware } from '../../list-dropdown/list-dropdown-aware';
18
18
  export interface ISelectComponent extends IWithFormAssociation, IWithFocusable, IWithLabelAwareness, IWithElementInternals, IWithDefaultAria, IWithBaseField, IBaseSelectComponent, IListDropdownAware {
19
19
  label: string;
20
20
  placeholder: string;
21
+ showSelectAll: boolean;
22
+ selectAllLabel: string;
21
23
  setFormValue(value: FormValue | null, state?: FormValue | null | undefined): void;
22
24
  [setValidity](): void;
23
25
  }
@@ -27,15 +29,18 @@ declare global {
27
29
  }
28
30
  interface HTMLElementEventMap {
29
31
  'forge-select-scrolled-bottom': CustomEvent<void>;
32
+ 'forge-select-all': CustomEvent<SelectSelectAllEventData>;
30
33
  change: CustomEvent<any>;
31
34
  }
32
35
  }
33
36
  declare const SelectComponent_base: import("../../constants").AbstractConstructor<import("../../core/mixins/form/with-form-associated").WithFormAssociationContract> & import("../../constants").AbstractConstructor<import("../../core/mixins/label/with-label-aware").WithLabelAwarenessContract> & import("../../constants").AbstractConstructor<import("../../core/mixins/focus/with-focusable").WithFocusableContract> & import("../../constants").AbstractConstructor<import("../../core/mixins/internals/with-default-aria").WithDefaultAriaContract> & import("../../constants").AbstractConstructor<import("../../core/mixins/internals/with-element-internals").WithElementInternalsContract> & import("../../constants").AbstractConstructor<import("../../field/base/with-base-field").WithBaseFieldContract> & ((abstract new () => BaseSelectComponent<SelectCore>) & {
34
- readonly observedAttributes: string[];
37
+ get observedAttributes(): string[];
35
38
  });
36
39
  /**
37
40
  * @tag forge-select
38
41
  *
42
+ * @summary Selects present a list of options to users for single or multi-selection.
43
+ *
39
44
  * @dependency forge-field
40
45
  * @dependency forge-option
41
46
  * @dependency forge-option-group
@@ -53,9 +58,12 @@ declare const SelectComponent_base: import("../../constants").AbstractConstructo
53
58
  *
54
59
  * @event {CustomEvent<void>} forge-select-scrolled-bottom - Dispatched when the dropdown list has scrolled to the bottom.
55
60
  * @event {CustomEvent<any>} change - Dispatched when the user selects a value.
61
+ * @event {CustomEvent<SelectSelectAllEventData>} forge-select-all - Dispatched when the select all option is toggled.
56
62
  *
57
63
  * @property {string} label - Controls the label text.
58
64
  * @property {string} placeholder - Controls the placeholder text.
65
+ * @property {boolean} showSelectAll - Gets/sets whether to show the select all option when in multiple mode.
66
+ * @property {string} selectAllLabel - Gets/sets the label for the select all option.
59
67
  * @property {any} value - Gets/sets the value.
60
68
  * @property {number | number[]} selectedIndex - Gets/sets the selected index.
61
69
  * @property {ISelectOption[] | ISelectOptionGroup[]} options - Gets/sets the available options.
@@ -81,6 +89,8 @@ declare const SelectComponent_base: import("../../constants").AbstractConstructo
81
89
  *
82
90
  * @attribute {string} label - Controls the label text.
83
91
  * @attribute {string} placeholder - Controls the placeholder text.
92
+ * @attribute {boolean} show-select-all - Gets/sets whether to show the select all option when in multiple mode.
93
+ * @attribute {string} select-all-label - Gets/sets the label for the select all option.
84
94
  * @attribute {any} value - Gets/sets the value.
85
95
  * @attribute {number | number[]} selected-index - Gets/sets the selected index.
86
96
  * @attribute {boolean} multiple - Gets/sets the multiple select state.
@@ -174,6 +184,8 @@ export declare class SelectComponent extends SelectComponent_base implements ISe
174
184
  label: string;
175
185
  placeholder: string;
176
186
  readonly: boolean;
187
+ showSelectAll: boolean;
188
+ selectAllLabel: string;
177
189
  get floatLabel(): boolean;
178
190
  set floatLabel(value: boolean);
179
191
  get density(): FieldDensity;
@@ -28,11 +28,14 @@ import { SelectAdapter } from './select-adapter';
28
28
  import { SELECT_CONSTANTS } from './select-constants';
29
29
  import { SelectCore } from './select-core';
30
30
  import { ListDropdownAware } from '../../list-dropdown/list-dropdown-aware';
31
+ import { DividerComponent } from '../../divider/divider';
31
32
  const template = '<template><forge-field id=\"field\" popover-icon focus-indicator-allow-focus focus-indicator-focus-mode=\"focus\"><span id=\"select-label\" slot=\"label\"></span><slot slot=\"start\" name=\"start\"></slot><div data-forge-field-input class=\"selected-text-container\" part=\"text-container\" aria-live=\"assertive\" aria-atomic=\"true\"><slot name=\"value\"><span id=\"selected-text\" class=\"selected-text\" part=\"text\"></span></slot></div><slot slot=\"end\" name=\"end\"></slot><slot slot=\"accessory\" name=\"accessory\"></slot><slot slot=\"support-text\" name=\"support-text\"></slot><slot slot=\"support-text-end\" name=\"support-text-end\"></slot><slot slot=\"start\" name=\"leading\"></slot><slot slot=\"end\" name=\"trailing\"></slot><slot slot=\"accessory\" name=\"addon-end\"></slot><slot slot=\"support-text\" name=\"helper-text\"></slot></forge-field></template>';
32
33
  const styles = ':host{display:block;outline:0}:host([hidden]){display:none}forge-field{--_select-placeholder-color:var(--forge-select-placeholder-color, var(--forge-field-placeholder-color, var(--forge-theme-text-medium, rgba(0, 0, 0, 0.6))))}.selected-text-container{display:grid;align-items:center;cursor:pointer}.selected-text,::slotted([slot=value]){white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.selected-text:empty::before{content:attr(placeholder);color:var(--_select-placeholder-color);font-size:inherit}:host([disabled]) .selected-text-container{cursor:not-allowed}forge-field{display:contents}';
33
34
  /**
34
35
  * @tag forge-select
35
36
  *
37
+ * @summary Selects present a list of options to users for single or multi-selection.
38
+ *
36
39
  * @dependency forge-field
37
40
  * @dependency forge-option
38
41
  * @dependency forge-option-group
@@ -50,9 +53,12 @@ const styles = ':host{display:block;outline:0}:host([hidden]){display:none}forge
50
53
  *
51
54
  * @event {CustomEvent<void>} forge-select-scrolled-bottom - Dispatched when the dropdown list has scrolled to the bottom.
52
55
  * @event {CustomEvent<any>} change - Dispatched when the user selects a value.
56
+ * @event {CustomEvent<SelectSelectAllEventData>} forge-select-all - Dispatched when the select all option is toggled.
53
57
  *
54
58
  * @property {string} label - Controls the label text.
55
59
  * @property {string} placeholder - Controls the placeholder text.
60
+ * @property {boolean} showSelectAll - Gets/sets whether to show the select all option when in multiple mode.
61
+ * @property {string} selectAllLabel - Gets/sets the label for the select all option.
56
62
  * @property {any} value - Gets/sets the value.
57
63
  * @property {number | number[]} selectedIndex - Gets/sets the selected index.
58
64
  * @property {ISelectOption[] | ISelectOptionGroup[]} options - Gets/sets the available options.
@@ -78,6 +84,8 @@ const styles = ':host{display:block;outline:0}:host([hidden]){display:none}forge
78
84
  *
79
85
  * @attribute {string} label - Controls the label text.
80
86
  * @attribute {string} placeholder - Controls the placeholder text.
87
+ * @attribute {boolean} show-select-all - Gets/sets whether to show the select all option when in multiple mode.
88
+ * @attribute {string} select-all-label - Gets/sets the label for the select all option.
81
89
  * @attribute {any} value - Gets/sets the value.
82
90
  * @attribute {number | number[]} selected-index - Gets/sets the selected index.
83
91
  * @attribute {boolean} multiple - Gets/sets the multiple select state.
@@ -194,6 +202,12 @@ let SelectComponent = class SelectComponent extends WithFormAssociation(WithLabe
194
202
  case SELECT_CONSTANTS.observedAttributes.PLACEHOLDER:
195
203
  this.placeholder = newValue;
196
204
  return;
205
+ case SELECT_CONSTANTS.observedAttributes.SHOW_SELECT_ALL:
206
+ this.showSelectAll = coerceBoolean(newValue);
207
+ return;
208
+ case SELECT_CONSTANTS.observedAttributes.SELECT_ALL_LABEL:
209
+ this.selectAllLabel = newValue;
210
+ return;
197
211
  }
198
212
  super.attributeChangedCallback(name, oldValue, newValue);
199
213
  }
@@ -274,6 +288,12 @@ __decorate([
274
288
  __decorate([
275
289
  coreProperty()
276
290
  ], SelectComponent.prototype, "readonly", void 0);
291
+ __decorate([
292
+ coreProperty()
293
+ ], SelectComponent.prototype, "showSelectAll", void 0);
294
+ __decorate([
295
+ coreProperty()
296
+ ], SelectComponent.prototype, "selectAllLabel", void 0);
277
297
  SelectComponent = __decorate([
278
298
  customElement({
279
299
  name: SELECT_CONSTANTS.elementName,
@@ -288,7 +308,8 @@ SelectComponent = __decorate([
288
308
  IconComponent,
289
309
  ScaffoldComponent,
290
310
  ToolbarComponent,
291
- IconButtonComponent
311
+ IconButtonComponent,
312
+ DividerComponent
292
313
  ]
293
314
  })
294
315
  ], SelectComponent);
@@ -20,6 +20,8 @@ declare global {
20
20
  }
21
21
  /**
22
22
  * @tag forge-select-dropdown
23
+ *
24
+ * @summary A dropdown variant of the select component that renders options in a popover.
23
25
  */
24
26
  export declare class SelectDropdownComponent extends BaseSelectComponent<SelectDropdownCore> implements ISelectDropdownComponent {
25
27
  static get observedAttributes(): string[];
@@ -22,6 +22,8 @@ const template = '<template></template>';
22
22
  const styles = ':host{display:none}';
23
23
  /**
24
24
  * @tag forge-select-dropdown
25
+ *
26
+ * @summary A dropdown variant of the select component that renders options in a popover.
25
27
  */
26
28
  let SelectDropdownComponent = class SelectDropdownComponent extends BaseSelectComponent {
27
29
  static get observedAttributes() {
@@ -11,7 +11,7 @@ import { SplitButtonAdapter } from './split-button-adapter';
11
11
  import { SPLIT_BUTTON_CONSTANTS } from './split-button-constants';
12
12
  import { SplitButtonCore } from './split-button-core';
13
13
  const template = '<template><slot></slot></template>';
14
- const styles = ':host{--_split-button-min-width:var(--forge-split-button-min-width, 0);--_split-button-gap:var(--forge-split-button-gap, var(--forge-border-thin, 1px));--_split-button-focus-indicator-offset:var(--forge-split-button-focus-indicator-offset, var(--forge-button-focus-indicator-offset, 4px));--_split-button-focus-indicator-divider-offset:var(--forge-split-button-focus-indicator-divider-offset, var(--_split-button-gap));--_split-button-focus-indicator-offset-adjusted:calc(var(--_split-button-focus-indicator-offset) + var(--_split-button-focus-indicator-divider-offset) * 2)}:host{display:inline-flex;justify-content:center;align-items:center}:host([hidden]){display:none}::slotted(*){--forge-button-min-width:var(--_split-button-min-width);--forge-button-focus-indicator-offset:var(--_split-button-focus-indicator-offset)}::slotted(:first-child){--forge-button-shape-start-end-radius:0;--forge-button-shape-end-end-radius:0;--forge-focus-indicator-shape-start-end:0;--forge-focus-indicator-shape-end-end:0;--forge-focus-indicator-offset-inline:0 var(--_split-button-focus-indicator-offset-adjusted)}::slotted(:not(:first-child):not(:last-child)){--forge-button-shape:0;--forge-focus-indicator-shape:0;--forge-focus-indicator-offset-inline:var(--_split-button-focus-indicator-offset-adjusted)}::slotted(:last-child){--forge-button-shape-start-start-radius:0;--forge-button-shape-end-start-radius:0;--forge-focus-indicator-shape-start-start:0;--forge-focus-indicator-shape-end-start:0;--forge-focus-indicator-offset-inline:var(--_split-button-focus-indicator-offset-adjusted) 0}:host([variant=outlined]){--_split-button-focus-indicator-divider-offset:var(--forge-split-button-focus-indicator-divider-offset, 0px)}:host([variant=outlined]) ::slotted(:not(:first-child)){margin-inline-start:calc(-1 * var(--_split-button-gap))}:host(:is([variant=tonal],[variant=filled],[variant=raised],:not([variant]))) ::slotted(:not(:last-child)){margin-inline-end:var(--_split-button-gap)}';
14
+ const styles = ':host{--_split-button-min-width:var(--forge-split-button-min-width, 0);--_split-button-gap:var(--forge-split-button-gap, var(--forge-border-thin, 1px));--_split-button-focus-indicator-offset:var(--forge-split-button-focus-indicator-offset, var(--forge-button-focus-indicator-offset, 4px));--_split-button-focus-indicator-divider-offset:var(--forge-split-button-focus-indicator-divider-offset, var(--_split-button-gap));--_split-button-focus-indicator-offset-adjusted:calc(var(--_split-button-focus-indicator-offset) + var(--_split-button-focus-indicator-divider-offset) * 2)}:host{display:inline-flex;justify-content:center;align-items:center}:host([hidden]){display:none}::slotted(*){--forge-button-min-width:var(--_split-button-min-width);--forge-button-focus-indicator-offset:var(--_split-button-focus-indicator-offset)}::slotted(:first-child){--forge-button-shape-start-end-radius:0;--forge-button-shape-end-end-radius:0;--forge-focus-indicator-shape-start-end:0;--forge-focus-indicator-shape-end-end:0;--forge-focus-indicator-offset-inline:0 var(--_split-button-focus-indicator-offset-adjusted)}::slotted(:not(:first-child):not(:last-child)){--forge-button-shape:0;--forge-focus-indicator-shape:0;--forge-focus-indicator-offset-inline:var(--_split-button-focus-indicator-offset-adjusted)}::slotted(:last-child){--forge-button-shape-start-start-radius:0;--forge-button-shape-end-start-radius:0;--forge-focus-indicator-shape-start-start:0;--forge-focus-indicator-shape-end-start:0;--forge-focus-indicator-offset-inline:var(--_split-button-focus-indicator-offset-adjusted) 0}:host([variant=outlined]) ::slotted(:not(:first-child)){margin-inline-start:calc(-1 * var(--_split-button-gap))}:host([variant=outlined]){--_split-button-focus-indicator-divider-offset:var(--forge-split-button-focus-indicator-divider-offset, 0px)}:host(:is([variant=tonal],[variant=filled],[variant=raised],:not([variant]))) ::slotted(:not(:last-child)){margin-inline-end:var(--_split-button-gap)}';
15
15
  /**
16
16
  * @tag forge-split-button
17
17
  *
@@ -21,6 +21,8 @@ declare global {
21
21
  }
22
22
  /**
23
23
  * @tag forge-split-view
24
+ *
25
+ * @summary Split views create resizable panels that allow users to adjust the space between content areas.
24
26
  */
25
27
  export declare class SplitViewComponent extends BaseComponent implements ISplitViewComponent {
26
28
  static get observedAttributes(): string[];
@@ -14,6 +14,8 @@ const template = '<template><div class=\"forge-split-view\" id=\"root\" part=\"r
14
14
  const styles = '.forge-split-view{display:flex;width:100%;height:100%}:host{--forge-split-view-handle-width:8px;display:block;height:100%;width:100%;overflow:hidden}:host([hidden]){display:none}:host([orientation=horizontal]) .forge-split-view{flex-direction:row}:host([orientation=vertical]) .forge-split-view{flex-direction:column}';
15
15
  /**
16
16
  * @tag forge-split-view
17
+ *
18
+ * @summary Split views create resizable panels that allow users to adjust the space between content areas.
17
19
  */
18
20
  let SplitViewComponent = class SplitViewComponent extends BaseComponent {
19
21
  static get observedAttributes() {
@@ -37,6 +37,8 @@ declare global {
37
37
  /**
38
38
  * @tag forge-split-view-panel
39
39
  *
40
+ * @summary Individual panels within split views that can be resized and collapsed.
41
+ *
40
42
  * @dependency forge-icon
41
43
  * @dependency forge-state-layer
42
44
  * @dependency forge-focus-indicator
@@ -14,10 +14,12 @@ import { IconComponent, IconRegistry } from '../../icon';
14
14
  import { StateLayerComponent } from '../../state-layer';
15
15
  import { FocusIndicatorComponent } from '../../focus-indicator';
16
16
  const template = '<template><div class=\"forge-split-view-panel\" id=\"root\" part=\"root\"><div class=\"forge-split-view-panel__handle\" id=\"handle\" part=\"handle\" role=\"separator\" aria-controls=\"content\" aria-grabbed=\"false\" tabindex=\"0\"><forge-icon class=\"forge-split-view-panel__icon\" id=\"icon\" part=\"icon\"></forge-icon><forge-state-layer target=\"handle\" id=\"state-layer\" exportparts=\"surface:state-layer\"></forge-state-layer><forge-focus-indicator inward target=\"handle\" part=\"focus-indicator\"></forge-focus-indicator></div><div class=\"forge-split-view-panel__content\" id=\"content\" part=\"content\" role=\"group\"><slot></slot></div></div></template>';
17
- const styles = '.forge-split-view-panel{display:flex;width:100%;height:100%;overflow:hidden}.forge-split-view-panel__handle{color:var(--forge-theme-text-medium,rgba(0,0,0,.6));background-color:var(--forge-theme-outline,#e0e0e0);position:relative;display:flex;flex-shrink:0;justify-content:center;align-items:center;outline:0}.forge-split-view-panel__content{flex:1;overflow:hidden}.forge-split-view-panel--closed{display:none}.forge-split-view-panel--disabled #handle{pointer-events:none}.forge-split-view-panel--disabled .forge-split-view-panel__icon{display:none}.forge-split-view-panel[orientation=horizontal]{min-width:var(--forge-split-view-handle-width,8px);width:calc(var(--forge-split-view-panel-size,unset) + var(--forge-split-view-handle-width,8px));flex-direction:row}.forge-split-view-panel[orientation=horizontal] .forge-split-view-panel__handle{width:var(--forge-split-view-handle-width,8px);cursor:var(--forge-split-view-panel-cursor)}.forge-split-view-panel[orientation=horizontal].forge-split-view-panel--closing[resizable=end]{position:absolute;top:0;left:0;animation-name:uhqbsid;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1))}@keyframes uhqbsid{from{transform:none}to{transform:translateX(-100%)}}.forge-split-view-panel[orientation=horizontal].forge-split-view-panel--closing[resizable=start]{position:absolute;top:0;right:0;animation-name:uhqbsj9;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1))}@keyframes uhqbsj9{from{transform:none}to{transform:translateX(100%)}}.forge-split-view-panel[orientation=horizontal].forge-split-view-panel--opening[resizable=end]{position:absolute;top:0;left:0;animation-name:uhqbsjp;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1));animation-direction:reverse}@keyframes uhqbsjp{from{transform:none}to{transform:translateX(-100%)}}.forge-split-view-panel[orientation=horizontal].forge-split-view-panel--opening[resizable=start]{position:absolute;top:0;right:0;animation-name:uhqbskm;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1));animation-direction:reverse}@keyframes uhqbskm{from{transform:none}to{transform:translateX(100%)}}.forge-split-view-panel[orientation=vertical]{min-height:var(--forge-split-view-handle-width,8px);height:calc(var(--forge-split-view-panel-size,unset) + var(--forge-split-view-handle-width,8px));flex-direction:column}.forge-split-view-panel[orientation=vertical] .forge-split-view-panel__handle{height:var(--forge-split-view-handle-width,8px);cursor:var(--forge-split-view-panel-cursor)}.forge-split-view-panel[orientation=vertical].forge-split-view-panel--closing[resizable=end]{position:absolute;top:0;left:0;animation-name:uhqbslj;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1))}@keyframes uhqbslj{from{transform:none}to{transform:translateY(-100%)}}.forge-split-view-panel[orientation=vertical].forge-split-view-panel--closing[resizable=start]{position:absolute;bottom:0;left:0;animation-name:uhqbslt;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1))}@keyframes uhqbslt{from{transform:none}to{transform:translateY(100%)}}.forge-split-view-panel[orientation=vertical].forge-split-view-panel--opening[resizable=end]{position:absolute;top:0;left:0;animation-name:uhqbsm4;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1));animation-direction:reverse}@keyframes uhqbsm4{from{transform:none}to{transform:translateY(-100%)}}.forge-split-view-panel[orientation=vertical].forge-split-view-panel--opening[resizable=start]{position:absolute;bottom:0;left:0;animation-name:uhqbsmg;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1));animation-direction:reverse}@keyframes uhqbsmg{from{transform:none}to{transform:translateY(100%)}}:host{z-index:var(--forge-split-view-animating-layer)!important;display:block;position:relative;height:100%;width:100%;flex:0}:host([hidden]){display:none}:host(:not([resizable=start],[resizable=end])){flex:1}:host(:not([resizable=start],[resizable=end])) .forge-split-view-panel{width:100%;height:100%;min-width:0;min-height:0}:host(:not([resizable=start],[resizable=end])) .forge-split-view-panel__handle{display:none}forge-focus-indicator{--forge-focus-indicator-active-width:2px}';
17
+ const styles = '.forge-split-view-panel{display:flex;width:100%;height:100%;overflow:hidden}.forge-split-view-panel__handle{color:var(--forge-theme-text-medium,rgba(0,0,0,.6));background-color:var(--forge-theme-outline,#e0e0e0);position:relative;display:flex;flex-shrink:0;justify-content:center;align-items:center;outline:0}.forge-split-view-panel__content{flex:1;overflow:hidden}.forge-split-view-panel--closed{display:none}.forge-split-view-panel--disabled #handle{pointer-events:none}.forge-split-view-panel--disabled .forge-split-view-panel__icon{display:none}.forge-split-view-panel[orientation=horizontal]{min-width:var(--forge-split-view-handle-width,8px);width:calc(var(--forge-split-view-panel-size,unset) + var(--forge-split-view-handle-width,8px));flex-direction:row}.forge-split-view-panel[orientation=horizontal] .forge-split-view-panel__handle{width:var(--forge-split-view-handle-width,8px);cursor:var(--forge-split-view-panel-cursor)}.forge-split-view-panel[orientation=horizontal].forge-split-view-panel--closing[resizable=end]{position:absolute;top:0;left:0;animation-name:unrnngv;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1))}@keyframes unrnngv{from{transform:none}to{transform:translateX(-100%)}}.forge-split-view-panel[orientation=horizontal].forge-split-view-panel--closing[resizable=start]{position:absolute;top:0;right:0;animation-name:unrnnhr;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1))}@keyframes unrnnhr{from{transform:none}to{transform:translateX(100%)}}.forge-split-view-panel[orientation=horizontal].forge-split-view-panel--opening[resizable=end]{position:absolute;top:0;left:0;animation-name:unrnni8;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1))}@keyframes unrnni8{from{transform:none}to{transform:translateX(-100%)}}.forge-split-view-panel[orientation=horizontal].forge-split-view-panel--opening[resizable=end]{animation-direction:reverse}.forge-split-view-panel[orientation=horizontal].forge-split-view-panel--opening[resizable=start]{position:absolute;top:0;right:0;animation-name:unrnnj6;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1))}@keyframes unrnnj6{from{transform:none}to{transform:translateX(100%)}}.forge-split-view-panel[orientation=horizontal].forge-split-view-panel--opening[resizable=start]{animation-direction:reverse}.forge-split-view-panel[orientation=vertical]{min-height:var(--forge-split-view-handle-width,8px);height:calc(var(--forge-split-view-panel-size,unset) + var(--forge-split-view-handle-width,8px));flex-direction:column}.forge-split-view-panel[orientation=vertical] .forge-split-view-panel__handle{height:var(--forge-split-view-handle-width,8px);cursor:var(--forge-split-view-panel-cursor)}.forge-split-view-panel[orientation=vertical].forge-split-view-panel--closing[resizable=end]{position:absolute;top:0;left:0;animation-name:unrnnjr;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1))}@keyframes unrnnjr{from{transform:none}to{transform:translateY(-100%)}}.forge-split-view-panel[orientation=vertical].forge-split-view-panel--closing[resizable=start]{position:absolute;bottom:0;left:0;animation-name:unrnnk3;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1))}@keyframes unrnnk3{from{transform:none}to{transform:translateY(100%)}}.forge-split-view-panel[orientation=vertical].forge-split-view-panel--opening[resizable=end]{position:absolute;top:0;left:0;animation-name:unrnnke;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1))}@keyframes unrnnke{from{transform:none}to{transform:translateY(-100%)}}.forge-split-view-panel[orientation=vertical].forge-split-view-panel--opening[resizable=end]{animation-direction:reverse}.forge-split-view-panel[orientation=vertical].forge-split-view-panel--opening[resizable=start]{position:absolute;bottom:0;left:0;animation-name:unrnnla;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1))}@keyframes unrnnla{from{transform:none}to{transform:translateY(100%)}}.forge-split-view-panel[orientation=vertical].forge-split-view-panel--opening[resizable=start]{animation-direction:reverse}:host{z-index:var(--forge-split-view-animating-layer)!important;display:block;position:relative;height:100%;width:100%;flex:0}:host([hidden]){display:none}:host(:not([resizable=start],[resizable=end])){flex:1}:host(:not([resizable=start],[resizable=end])) .forge-split-view-panel{width:100%;height:100%;min-width:0;min-height:0}:host(:not([resizable=start],[resizable=end])) .forge-split-view-panel__handle{display:none}forge-focus-indicator{--forge-focus-indicator-active-width:2px}';
18
18
  /**
19
19
  * @tag forge-split-view-panel
20
20
  *
21
+ * @summary Individual panels within split views that can be resized and collapsed.
22
+ *
21
23
  * @dependency forge-icon
22
24
  * @dependency forge-state-layer
23
25
  * @dependency forge-focus-indicator
@@ -29,6 +29,8 @@ declare global {
29
29
  /**
30
30
  * @tag forge-step
31
31
  *
32
+ * @summary Individual steps within a stepper component that represent progress in a multi-step process.
33
+ *
32
34
  * @property {boolean} [alternative=false] - Whether the step is in the alternative style.
33
35
  * @property {boolean} [completed=false] - Whether the step is completed.
34
36
  * @property {boolean} [editable=false] - Whether the step is editable.
@@ -15,10 +15,12 @@ import { ExpansionPanelComponent } from '../../expansion-panel';
15
15
  import { StateLayerComponent } from '../../state-layer';
16
16
  import { FocusIndicatorComponent } from '../../focus-indicator';
17
17
  const template = '<template><div class=\"container\" part=\"root\"><div class=\"forge-step\" part=\"step\"><div class=\"before\" part=\"before\"></div><div class=\"icon-container\" part=\"icon-container\"><div class=\"icon-content\" part=\"icon-content\"><span class=\"index\" part=\"index\"></span><forge-icon class=\"icon\" part=\"icon\"></forge-icon></div></div><div class=\"text-container\" part=\"text-container\"><div class=\"title\" part=\"title-container\"><slot></slot></div><div class=\"subtitle\" part=\"subtitle-container\"><slot name=\"optional\"></slot></div></div><div class=\"after\" part=\"after\"></div><forge-state-layer exportparts=\"surface:state-layer\" target=\":host\"></forge-state-layer><forge-focus-indicator part=\"focus-indicator\" target=\":host\" inward></forge-focus-indicator></div></div></template>';
18
- const styles = ':host{--_step-primary-color:var(--forge-step-primary-color, var(--forge-theme-primary, #3f51b5));--_step-text-color:var(--forge-step-text-color, var(--forge-theme-on-primary, #ffffff));--_step-border-radius:var(--forge-step-border-radius, calc(var(--forge-shape-extra-large, 16px) * var(--forge-shape-factor, 1)));--_step-border-radius-vertical:var(--forge-step-border-radius-vertical, calc(var(--forge-shape-medium, 4px) * var(--forge-shape-factor, 1)));--_step-disabled-text-color:var(--forge-step-disabled-text-color, var(--forge-theme-text-low, rgba(0, 0, 0, 0.38)));--_step-disabled-color:var(--forge-step-disabled-color, var(--forge-theme-surface-container-minimum, #f5f5f5));--_step-icon-fill:var(--forge-step-icon-fill, unset);--_step-icon-fill-active:var(--forge-step-icon-fill-active, var(--_step-primary-color));--_step-icon-text-color:var(--forge-step-icon-text-color, var(--forge-theme-primary, #3f51b5));--_step-icon-text-color-active:var(--forge-step-icon-text-color-active, var(--forge-theme-on-primary, #ffffff));--_step-icon-content-size:var(--forge-step-icon-content-size, 24px);--_step-icon-size:var(--forge-step-icon-size, calc(var(--forge-typography-font-size, 1rem) * 0.875));--_step-icon-transition-duration:var(--forge-step-icon-transition-duration, var(--forge-animation-duration-medium4, 400ms));--_step-icon-transition-easing:var(--forge-step-icon-transition-easing, var(--forge-animation-easing-standard, cubic-bezier(0.2, 0, 0, 1)));--_step-line-color:var(--forge-step-line-color, var(--forge-theme-outline, #e0e0e0));--_step-line-min-width:var(--forge-step-line-min-width, 10px);--_step-line-min-width-clustered:var(--forge-step-line-min-width-clustered, 25px);--_step-label-color:var(--forge-step-label-color, var(--forge-theme-text-high, rgba(0, 0, 0, 0.87)));--_step-sub-label-color:var(--forge-step-sub-label-color, var(--forge-theme-text-medium, rgba(0, 0, 0, 0.6)));--_step-error-color:var(--forge-step-error-color, var(--forge-theme-error, #b00020));--_step-error-text-color:var(--forge-step-error-text-color, var(--forge-theme-on-error, #ffffff));--_step-expansion-panel-border-left-width:var(--forge-step-expansion-panel-border-left-width, 1px);--_step-expansion-panel-margin-bottom:var(--forge-step-expansion-panel-margin-bottom, 4px);--_step-expansion-panel-margin-left:var(--forge-step-expansion-panel-margin-left, 60px);--_step-expansion-panel-margin-top:var(--forge-step-expansion-panel-margin-top, 4px);--_step-expansion-panel-icon-color:var(--forge-step-expansion-panel-icon-color, var(--forge-theme-text-medium, rgba(0, 0, 0, 0.6)))}:host(:focus){outline:0}:host([error]){--forge-state-layer-color:var(--_step-error-color)}:host(:first-child[alternative])::after{align-self:flex-start;top:22px;margin:0}:host(:last-child[alternative])::before{align-self:flex-start;top:22px;margin:0}:host(:not(:first-child):not(:last-child)[alternative])::after,:host(:not(:first-child):not(:last-child)[alternative])::before{align-self:flex-start;top:22px;min-width:7px;margin:0}:host(:not(:last-child)[alternative]) .after{align-self:flex-start;top:22px;position:absolute;width:calc(50% - 18px);left:calc(50% + 18px);height:0;right:0}:host(:not(:first-child)[alternative]) .before{align-self:flex-start;top:22px;position:absolute;left:0;width:calc(50% - 18px);height:0}:host(:not(:first-child):not(:last-child)):host(:not([vertical]))::after,:host(:not(:first-child):not(:last-child)):host(:not([vertical]))::before{border-color:var(--_step-line-color);min-width:var(--_step-line-min-width);content:\"\";position:relative;height:0;flex:1;flex-basis:0.000000001px;border-top-style:solid;border-top-width:1px;border-radius:1px 0 0 1px;margin:0 -10px}:host(:last-child):host(:not([vertical]))::before{border-color:var(--_step-line-color);min-width:var(--_step-line-min-width);content:\"\";position:relative;height:0;flex:1;flex-basis:0.000000001px;border-top-style:solid;border-top-width:1px;border-radius:1px 0 0 1px;margin:0 -10px 0 0}:host(:is(:first-child)):host(:not([vertical]))::after{border-color:var(--_step-line-color);min-width:var(--_step-line-min-width);content:\"\";position:relative;height:0;flex:1;flex-basis:0.000000001px;border-top-style:solid;border-top-width:1px;border-radius:1px 0 0 1px;margin:0 -10px}:host([vertical]){flex-direction:column}:host([vertical])::after{content:none}:host([vertical])::before{content:none}:host([vertical]) .forge-step{--_step-border-radius:var(--_step-border-radius-vertical);width:100%;min-height:52px}:host([vertical]) .forge-step .text-container{white-space:normal}:host([vertical]) .icon-container .icon-content{margin:0 16px 0 0}:host([vertical]) .expansion-panel{display:none}:host([vertical]) .expanded-icon{color:var(--_step-expansion-panel-icon-color);display:none;margin-left:auto}:host([vertical][expandable]) .expansion-panel{display:block}:host([ignore-user-expansion]) .forge-step .expanded-icon{display:none}forge-expansion-panel::part(root){border-color:var(--_step-line-color);margin-left:var(--_step-expansion-panel-margin-left);margin-top:var(--_step-expansion-panel-margin-top);margin-bottom:var(--_step-expansion-panel-margin-bottom);border-left-width:var(--_step-expansion-panel-border-left-width);border-left-style:solid}forge-focus-indicator{--forge-focus-indicator-color:var(--_step-primary-color);--forge-focus-indicator-shape:16px}.container{display:contents}.forge-step{-webkit-tap-highlight-color:transparent;padding:12px 16px;outline:0;background:0 0;border:none;border-radius:var(--_step-border-radius);position:relative;display:flex;overflow:hidden;align-items:center;box-sizing:border-box;cursor:pointer}.forge-step:focus{outline:0}.forge-step::-moz-focus-inner,.forge-step::-moz-focus-outer{padding:0;border:0}.forge-step.error forge-focus-indicator{--forge-focus-indicator-color:var(--_step-error-color)}.forge-step.vertical forge-focus-indicator{--forge-focus-indicator-shape:4px}.forge-step.selected:not(.disabled){--forge-state-layer-color:var(--_step-primary-color)}.forge-step.selected:not(.disabled)::before{background-color:var(--_step-primary-color);content:\"\";position:absolute;inset:0;opacity:.08;height:100%;width:100%}.forge-step.selected:not(.disabled).error{--_step-primary-color:var(--_step-error-color)}.forge-step .title{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--forge-typography-body1-font-family, var(--forge-typography-font-family, \"Roboto\", sans-serif));font-size:var(--forge-typography-body1-font-size, calc(var(--forge-typography-font-size, 1rem) * var(--forge-typography-body-font-size-scale, .875)));font-weight:var(--forge-typography-body1-font-weight,400);line-height:var(--forge-typography-body1-line-height, calc(var(--forge-typography-font-size, 1rem) * var(--forge-typography-body-line-height-scale, 1.125)));letter-spacing:var(--forge-typography-body1-letter-spacing, .0357142857em);text-transform:var(--forge-typography-body1-text-transform,inherit);text-decoration:var(--forge-typography-body1-text-decoration,inherit);color:var(--_step-label-color);text-align:left;overflow:hidden;text-overflow:ellipsis}.forge-step .subtitle{text-align:left;overflow:hidden;text-overflow:ellipsis}.forge-step .subtitle ::slotted(*){color:var(--_step-sub-label-color);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--forge-typography-label1-font-family, var(--forge-typography-font-family, \"Roboto\", sans-serif));font-size:var(--forge-typography-label1-font-size, calc(var(--forge-typography-font-size, 1rem) * var(--forge-typography-label-font-size-scale, .75)));font-weight:var(--forge-typography-label1-font-weight,400);line-height:var(--forge-typography-label1-line-height, calc(var(--forge-typography-font-size, 1rem) * var(--forge-typography-label-line-height-scale, 1.25)));letter-spacing:var(--forge-typography-label1-letter-spacing, .0357142857em);text-transform:var(--forge-typography-label1-text-transform,inherit);text-decoration:var(--forge-typography-label1-text-decoration,inherit)}.forge-step .icon-container .icon-content{color:var(--_step-icon-text-color);background-color:var(--_step-icon-fill);height:var(--_step-icon-content-size);width:var(--_step-icon-content-size);border-style:solid;border-width:2px;border-color:transparent;border-radius:50%;display:flex;align-items:center;justify-content:center;transition:background-color var(--_step-icon-transition-duration) var(--_step-icon-transition-easing);margin:0 8px 0 0;flex:none}.forge-step .icon-container .icon-content forge-icon{font-size:var(--_step-icon-size)}.forge-step.disabled{color:var(--_step-disabled-text-color);cursor:not-allowed}.forge-step.disabled.forge-step .icon-container .icon-content{--_step-icon-fill:var(--_step-disabled-color);--_step-icon-text-color:var(--_step-disabled-text-color)}.forge-step.disabled .text-container .title{color:var(--_step-disabled-text-color)}.forge-step.disabled .text-container .subtitle ::slotted(*){color:var(--_step-disabled-text-color)}.forge-step.alternative{flex-direction:column}.forge-step.alternative .icon-container .icon-content{margin:0}.forge-step.alternative .text-container{margin-top:8px;place-items:center}.forge-step:not(.selected):not(.disabled).editable:not(.completed):not(.error) .icon-content,.forge-step:not(.selected):not(.disabled):not(.editable):not(.completed):not(.error) .icon-content{border-color:var(--_step-primary-color)}.forge-step:not(.selected):not(.disabled).editable:not(.completed):not(.error) .icon-content .index,.forge-step:not(.selected):not(.disabled):not(.editable):not(.completed):not(.error) .icon-content .index{color:var(--_step-primary-color)}.forge-step.selected.disabled .icon-content{--_step-icon-fill:var(--_step-disabled-color);--_step-icon-text-color:var(--_step-disabled-text-color)}.forge-step.selected:not(.disabled) .icon-container .icon-content{--_step-icon-fill:var(--_step-icon-fill-active);--_step-icon-text-color:var(--_step-icon-text-color-active)}.forge-step.selected:not(.disabled) .title{color:var(--_step-primary-color);font-weight:500}.forge-step.selected:not(.disabled) .subtitle ::slotted(*){color:var(--_step-primary-color);font-weight:500}.forge-step.error:not(.disabled) .title{color:var(--_step-error-color)}.forge-step.error:not(.disabled) .subtitle ::slotted(*){color:var(--_step-error-color)}.forge-step.error:not(.disabled) .icon-container .icon-content{--_step-icon-fill:var(--_step-error-color);--_step-icon-text-color:var(--_step-error-text-color)}.forge-step.completed:not(.disabled):not(.error):not(.editable) .icon-content{--_step-icon-fill:var(--_step-icon-fill-active);--_step-icon-text-color:var(--_step-icon-text-color-active)}.forge-step.completed:not(.disabled):not(.error).editable .icon-content{--_step-icon-fill:var(--_step-icon-fill-active);--_step-icon-text-color:var(--_step-icon-text-color-active)}.forge-step.expandable .expanded-icon{display:inline-block;transition:transform .3s ease-in-out}.forge-step.expandable.expanded .expanded-icon{transform:rotate(180deg)}.forge-step.expandable .icon-container .icon-content{margin:0 16px 0 0}.forge-step .text-container{display:flex;flex-direction:column;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host(:not(:last-child)[clustered])::after{--_step-line-min-width:var(--_step-line-min-width-clustered)}:host(:last-child[clustered])::before{--_step-line-min-width:var(--_step-line-min-width-clustered)}:host(:not(:first-child):not(:last-child)[clustered])::after,:host(:not(:first-child):not(:last-child)[clustered])::before{--_step-line-min-width:var(--_step-line-min-width-clustered)}';
18
+ const styles = ':host{--_step-primary-color:var(--forge-step-primary-color, var(--forge-theme-primary, #3f51b5));--_step-text-color:var(--forge-step-text-color, var(--forge-theme-on-primary, #ffffff));--_step-border-radius:var(--forge-step-border-radius, calc(var(--forge-shape-extra-large, 16px) * var(--forge-shape-factor, 1)));--_step-border-radius-vertical:var(--forge-step-border-radius-vertical, calc(var(--forge-shape-medium, 4px) * var(--forge-shape-factor, 1)));--_step-disabled-text-color:var(--forge-step-disabled-text-color, var(--forge-theme-text-low, rgba(0, 0, 0, 0.38)));--_step-disabled-color:var(--forge-step-disabled-color, var(--forge-theme-surface-container-minimum, #f5f5f5));--_step-icon-fill:var(--forge-step-icon-fill, unset);--_step-icon-fill-active:var(--forge-step-icon-fill-active, var(--_step-primary-color));--_step-icon-text-color:var(--forge-step-icon-text-color, var(--forge-theme-primary, #3f51b5));--_step-icon-text-color-active:var(--forge-step-icon-text-color-active, var(--forge-theme-on-primary, #ffffff));--_step-icon-content-size:var(--forge-step-icon-content-size, 24px);--_step-icon-size:var(--forge-step-icon-size, calc(var(--forge-typography-font-size, 1rem) * 0.875));--_step-icon-transition-duration:var(--forge-step-icon-transition-duration, var(--forge-animation-duration-medium4, 400ms));--_step-icon-transition-easing:var(--forge-step-icon-transition-easing, var(--forge-animation-easing-standard, cubic-bezier(0.2, 0, 0, 1)));--_step-line-color:var(--forge-step-line-color, var(--forge-theme-outline, #e0e0e0));--_step-line-min-width:var(--forge-step-line-min-width, 10px);--_step-line-min-width-clustered:var(--forge-step-line-min-width-clustered, 25px);--_step-label-color:var(--forge-step-label-color, var(--forge-theme-text-high, rgba(0, 0, 0, 0.87)));--_step-sub-label-color:var(--forge-step-sub-label-color, var(--forge-theme-text-medium, rgba(0, 0, 0, 0.6)));--_step-error-color:var(--forge-step-error-color, var(--forge-theme-error, #b00020));--_step-error-text-color:var(--forge-step-error-text-color, var(--forge-theme-on-error, #ffffff));--_step-expansion-panel-border-left-width:var(--forge-step-expansion-panel-border-left-width, 1px);--_step-expansion-panel-margin-bottom:var(--forge-step-expansion-panel-margin-bottom, 4px);--_step-expansion-panel-margin-left:var(--forge-step-expansion-panel-margin-left, 60px);--_step-expansion-panel-margin-top:var(--forge-step-expansion-panel-margin-top, 4px);--_step-expansion-panel-icon-color:var(--forge-step-expansion-panel-icon-color, var(--forge-theme-text-medium, rgba(0, 0, 0, 0.6)))}:host(:focus){outline:0}:host([error]){--forge-state-layer-color:var(--_step-error-color)}:host(:first-child[alternative])::after{align-self:flex-start;top:22px;margin:0}:host(:last-child[alternative])::before{align-self:flex-start;top:22px;margin:0}:host(:not(:first-child):not(:last-child)[alternative])::after,:host(:not(:first-child):not(:last-child)[alternative])::before{align-self:flex-start;top:22px;min-width:7px;margin:0}:host(:not(:last-child)[alternative]) .after{align-self:flex-start;top:22px;position:absolute;width:calc(50% - 18px);left:calc(50% + 18px);height:0;right:0}:host(:not(:first-child)[alternative]) .before{align-self:flex-start;top:22px;position:absolute;left:0;width:calc(50% - 18px);height:0}:host(:not(:first-child):not(:last-child)):host(:not([vertical]))::after,:host(:not(:first-child):not(:last-child)):host(:not([vertical]))::before{border-color:var(--_step-line-color);min-width:var(--_step-line-min-width);content:\"\";position:relative;height:0;flex:1;flex-basis:0.000000001px;border-top-style:solid;border-top-width:1px;border-radius:1px 0 0 1px;margin:0 -10px}:host(:last-child):host(:not([vertical]))::before{border-color:var(--_step-line-color);min-width:var(--_step-line-min-width);content:\"\";position:relative;height:0;flex:1;flex-basis:0.000000001px;border-top-style:solid;border-top-width:1px;border-radius:1px 0 0 1px;margin:0 -10px 0 0}:host(:is(:first-child)):host(:not([vertical]))::after{border-color:var(--_step-line-color);min-width:var(--_step-line-min-width);content:\"\";position:relative;height:0;flex:1;flex-basis:0.000000001px;border-top-style:solid;border-top-width:1px;border-radius:1px 0 0 1px;margin:0 -10px}:host([vertical]){flex-direction:column}:host([vertical])::after{content:none}:host([vertical])::before{content:none}:host([vertical]) .forge-step{--_step-border-radius:var(--_step-border-radius-vertical);width:100%;min-height:52px}:host([vertical]) .forge-step .text-container{white-space:normal}:host([vertical]) .icon-container .icon-content{margin:0 16px 0 0}:host([vertical]) .expansion-panel{display:none}:host([vertical]) .expanded-icon{color:var(--_step-expansion-panel-icon-color);display:none;margin-left:auto}:host([vertical][expandable]) .expansion-panel{display:block}:host([ignore-user-expansion]) .forge-step .expanded-icon{display:none}forge-expansion-panel::part(root){border-color:var(--_step-line-color);margin-left:var(--_step-expansion-panel-margin-left);margin-top:var(--_step-expansion-panel-margin-top);margin-bottom:var(--_step-expansion-panel-margin-bottom);border-left-width:var(--_step-expansion-panel-border-left-width);border-left-style:solid}forge-focus-indicator{--forge-focus-indicator-color:var(--_step-primary-color);--forge-focus-indicator-shape:16px}.container{display:contents}.forge-step{-webkit-tap-highlight-color:transparent;padding:12px 16px;outline:0;background:0 0;border:none;border-radius:var(--_step-border-radius);position:relative;display:flex;overflow:hidden;align-items:center;box-sizing:border-box}.forge-step:focus{outline:0}.forge-step::-moz-focus-inner,.forge-step::-moz-focus-outer{padding:0;border:0}.forge-step{cursor:pointer}.forge-step.error forge-focus-indicator{--forge-focus-indicator-color:var(--_step-error-color)}.forge-step.vertical forge-focus-indicator{--forge-focus-indicator-shape:4px}.forge-step.selected:not(.disabled){--forge-state-layer-color:var(--_step-primary-color)}.forge-step.selected:not(.disabled)::before{background-color:var(--_step-primary-color);content:\"\";position:absolute;inset:0;opacity:.08;height:100%;width:100%}.forge-step.selected:not(.disabled).error{--_step-primary-color:var(--_step-error-color)}.forge-step .title{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--forge-typography-body1-font-family, var(--forge-typography-font-family, \"Roboto\", sans-serif));font-size:var(--forge-typography-body1-font-size, calc(var(--forge-typography-font-size, 1rem) * var(--forge-typography-body-font-size-scale, .875)));font-weight:var(--forge-typography-body1-font-weight,400);line-height:var(--forge-typography-body1-line-height, calc(var(--forge-typography-font-size, 1rem) * var(--forge-typography-body-line-height-scale, 1.125)));letter-spacing:var(--forge-typography-body1-letter-spacing, .0357142857em);text-transform:var(--forge-typography-body1-text-transform,inherit);text-decoration:var(--forge-typography-body1-text-decoration,inherit);color:var(--_step-label-color);text-align:left;overflow:hidden;text-overflow:ellipsis}.forge-step .subtitle{text-align:left;overflow:hidden;text-overflow:ellipsis}.forge-step .subtitle ::slotted(*){color:var(--_step-sub-label-color);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--forge-typography-label1-font-family, var(--forge-typography-font-family, \"Roboto\", sans-serif));font-size:var(--forge-typography-label1-font-size, calc(var(--forge-typography-font-size, 1rem) * var(--forge-typography-label-font-size-scale, .75)));font-weight:var(--forge-typography-label1-font-weight,400);line-height:var(--forge-typography-label1-line-height, calc(var(--forge-typography-font-size, 1rem) * var(--forge-typography-label-line-height-scale, 1.25)));letter-spacing:var(--forge-typography-label1-letter-spacing, .0357142857em);text-transform:var(--forge-typography-label1-text-transform,inherit);text-decoration:var(--forge-typography-label1-text-decoration,inherit)}.forge-step .icon-container .icon-content{color:var(--_step-icon-text-color);background-color:var(--_step-icon-fill);height:var(--_step-icon-content-size);width:var(--_step-icon-content-size);border-style:solid;border-width:2px;border-color:transparent;border-radius:50%;display:flex;align-items:center;justify-content:center;transition:background-color var(--_step-icon-transition-duration) var(--_step-icon-transition-easing);margin:0 8px 0 0;flex:none}.forge-step .icon-container .icon-content forge-icon{font-size:var(--_step-icon-size)}.forge-step.disabled{color:var(--_step-disabled-text-color);cursor:not-allowed}.forge-step.disabled.forge-step .icon-container .icon-content{--_step-icon-fill:var(--_step-disabled-color);--_step-icon-text-color:var(--_step-disabled-text-color)}.forge-step.disabled .text-container .title{color:var(--_step-disabled-text-color)}.forge-step.disabled .text-container .subtitle ::slotted(*){color:var(--_step-disabled-text-color)}.forge-step.alternative{flex-direction:column}.forge-step.alternative .icon-container .icon-content{margin:0}.forge-step.alternative .text-container{margin-top:8px;place-items:center}.forge-step:not(.selected):not(.disabled).editable:not(.completed):not(.error) .icon-content,.forge-step:not(.selected):not(.disabled):not(.editable):not(.completed):not(.error) .icon-content{border-color:var(--_step-primary-color)}.forge-step:not(.selected):not(.disabled).editable:not(.completed):not(.error) .icon-content .index,.forge-step:not(.selected):not(.disabled):not(.editable):not(.completed):not(.error) .icon-content .index{color:var(--_step-primary-color)}.forge-step.selected.disabled .icon-content{--_step-icon-fill:var(--_step-disabled-color);--_step-icon-text-color:var(--_step-disabled-text-color)}.forge-step.selected:not(.disabled) .icon-container .icon-content{--_step-icon-fill:var(--_step-icon-fill-active);--_step-icon-text-color:var(--_step-icon-text-color-active)}.forge-step.selected:not(.disabled) .title{color:var(--_step-primary-color);font-weight:500}.forge-step.selected:not(.disabled) .subtitle ::slotted(*){color:var(--_step-primary-color);font-weight:500}.forge-step.error:not(.disabled) .title{color:var(--_step-error-color)}.forge-step.error:not(.disabled) .subtitle ::slotted(*){color:var(--_step-error-color)}.forge-step.error:not(.disabled) .icon-container .icon-content{--_step-icon-fill:var(--_step-error-color);--_step-icon-text-color:var(--_step-error-text-color)}.forge-step.completed:not(.disabled):not(.error):not(.editable) .icon-content{--_step-icon-fill:var(--_step-icon-fill-active);--_step-icon-text-color:var(--_step-icon-text-color-active)}.forge-step.completed:not(.disabled):not(.error).editable .icon-content{--_step-icon-fill:var(--_step-icon-fill-active);--_step-icon-text-color:var(--_step-icon-text-color-active)}.forge-step.expandable .expanded-icon{display:inline-block;transition:transform .3s ease-in-out}.forge-step.expandable.expanded .expanded-icon{transform:rotate(180deg)}.forge-step.expandable .icon-container .icon-content{margin:0 16px 0 0}.forge-step .text-container{display:flex;flex-direction:column;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host(:not(:last-child)[clustered])::after{--_step-line-min-width:var(--_step-line-min-width-clustered)}:host(:last-child[clustered])::before{--_step-line-min-width:var(--_step-line-min-width-clustered)}:host(:not(:first-child):not(:last-child)[clustered])::after,:host(:not(:first-child):not(:last-child)[clustered])::before{--_step-line-min-width:var(--_step-line-min-width-clustered)}';
19
19
  /**
20
20
  * @tag forge-step
21
21
  *
22
+ * @summary Individual steps within a stepper component that represent progress in a multi-step process.
23
+ *
22
24
  * @property {boolean} [alternative=false] - Whether the step is in the alternative style.
23
25
  * @property {boolean} [completed=false] - Whether the step is completed.
24
26
  * @property {boolean} [editable=false] - Whether the step is editable.
@@ -23,6 +23,8 @@ declare global {
23
23
  /**
24
24
  * @tag forge-stepper
25
25
  *
26
+ * @summary Steppers guide users through multi-step processes by breaking them into logical steps.
27
+ *
26
28
  * @dependency forge-step
27
29
  *
28
30
  * @event {CustomEvent<number>} forge-step-select - Emits the index when a step is selected.
@@ -15,6 +15,8 @@ const styles = ':host{display:block}:host([hidden]){display:none}:host([vertical
15
15
  /**
16
16
  * @tag forge-stepper
17
17
  *
18
+ * @summary Steppers guide users through multi-step processes by breaking them into logical steps.
19
+ *
18
20
  * @dependency forge-step
19
21
  *
20
22
  * @event {CustomEvent<number>} forge-step-select - Emits the index when a step is selected.
@@ -144,6 +144,9 @@ export class TableUtils {
144
144
  if (columnConfig.sortable) {
145
145
  cellContainer = document.createElement('button');
146
146
  cellContainer.type = 'button';
147
+ const focusIndicator = document.createElement('forge-focus-indicator');
148
+ focusIndicator.inward = true;
149
+ cellContainer.appendChild(focusIndicator);
147
150
  cellContainer.addEventListener('keydown', tableConfiguration.sortableHeadCellKeydownListener);
148
151
  }
149
152
  else {
@@ -64,6 +64,8 @@ declare global {
64
64
  }
65
65
  }
66
66
  /**
67
+ * @summary A comprehensive data table component with features for selection, sorting, filtering, resizing, and row expansion functionality.
68
+ *
67
69
  * @tag forge-table
68
70
  *
69
71
  * @dependency forge-expansion-panel
@@ -15,7 +15,10 @@ import { IconRegistry, IconComponent } from '../icon';
15
15
  import { BaseComponent } from '../core/base/base-component';
16
16
  import { CellAlign } from './types';
17
17
  import { TooltipComponent } from '../tooltip';
18
+ import { FocusIndicatorComponent } from '../focus-indicator';
18
19
  /**
20
+ * @summary A comprehensive data table component with features for selection, sorting, filtering, resizing, and row expansion functionality.
21
+ *
19
22
  * @tag forge-table
20
23
  *
21
24
  * @dependency forge-expansion-panel
@@ -309,7 +312,7 @@ __decorate([
309
312
  TableComponent = __decorate([
310
313
  customElement({
311
314
  name: TABLE_CONSTANTS.elementName,
312
- dependencies: [ExpansionPanelComponent, IconComponent, CheckboxComponent, TooltipComponent]
315
+ dependencies: [ExpansionPanelComponent, IconComponent, CheckboxComponent, TooltipComponent, FocusIndicatorComponent]
313
316
  })
314
317
  ], TableComponent);
315
318
  export { TableComponent };
@@ -8,12 +8,12 @@ import { STATE_LAYER_CONSTANTS } from '../../state-layer';
8
8
  import { BaseAdapter } from '../../core/base/base-adapter';
9
9
  import { TAB_BAR_CONSTANTS } from '../tab-bar/tab-bar-constants';
10
10
  import { TAB_CONSTANTS } from './tab-constants';
11
- import { FOCUS_INDICATOR_CONSTANTS } from '../../focus-indicator';
11
+ import { FOCUS_INDICATOR_TAG_NAME } from '../../focus-indicator';
12
12
  export class TabAdapter extends BaseAdapter {
13
13
  constructor(component) {
14
14
  super(component);
15
15
  this._tabIndicatorElement = getShadowElement(this._component, TAB_CONSTANTS.selectors.INDICATOR);
16
- this._focusIndicatorElement = getShadowElement(this._component, FOCUS_INDICATOR_CONSTANTS.elementName);
16
+ this._focusIndicatorElement = getShadowElement(this._component, FOCUS_INDICATOR_TAG_NAME);
17
17
  this._stateLayerElement = getShadowElement(this._component, STATE_LAYER_CONSTANTS.elementName);
18
18
  }
19
19
  initialize() {
@@ -26,6 +26,8 @@ declare global {
26
26
  /**
27
27
  * @tag forge-tab
28
28
  *
29
+ * @summary Individual tab elements that provide navigation between different content panels.
30
+ *
29
31
  * @dependency forge-focus-indicator
30
32
  * @dependency forge-state-layer
31
33
  *
@@ -16,6 +16,8 @@ const styles = ':host{display:inline-flex;outline:0;-webkit-tap-highlight-color:
16
16
  /**
17
17
  * @tag forge-tab
18
18
  *
19
+ * @summary Individual tab elements that provide navigation between different content panels.
20
+ *
19
21
  * @dependency forge-focus-indicator
20
22
  * @dependency forge-state-layer
21
23
  *
@@ -44,6 +44,8 @@ declare global {
44
44
  }
45
45
  }
46
46
  /**
47
+ * @summary A time input component with integrated dropdown for selecting time values with support for various formats, masking, and validation options.
48
+ *
47
49
  * @tag forge-time-picker
48
50
  */
49
51
  export declare class TimePickerComponent extends BaseComponent implements ITimePickerComponent {
@@ -18,6 +18,8 @@ import { PopoverComponent } from '../popover/popover';
18
18
  const template = '<template><slot></slot></template>';
19
19
  const styles = ':host{display:block}:host([hidden]){display:none}';
20
20
  /**
21
+ * @summary A time input component with integrated dropdown for selecting time values with support for various formats, masking, and validation options.
22
+ *
21
23
  * @tag forge-time-picker
22
24
  */
23
25
  let TimePickerComponent = class TimePickerComponent extends BaseComponent {
@@ -17,6 +17,9 @@ export interface ITooltipAdapter extends IBaseAdapter<ITooltipComponent> {
17
17
  removeAnchorListener(type: string, listener: EventListener): void;
18
18
  addLightDismissListener(listener: EventListener): void;
19
19
  removeLightDismissListener(listener: EventListener): void;
20
+ addTooltipListener(type: string, listener: EventListener, opts?: AddEventListenerOptions): void;
21
+ removeTooltipListener(type: string, listener: EventListener): void;
22
+ isKeyboardFocused(): boolean;
20
23
  show(): void;
21
24
  hide(): void;
22
25
  }
@@ -41,6 +44,9 @@ export declare class TooltipAdapter extends BaseAdapter<ITooltipComponent> imple
41
44
  removeAnchorListener(type: string, listener: EventListener): void;
42
45
  addLightDismissListener(listener: EventListener): void;
43
46
  removeLightDismissListener(listener: EventListener): void;
47
+ addTooltipListener(type: string, listener: EventListener, opts?: AddEventListenerOptions): void;
48
+ removeTooltipListener(type: string, listener: EventListener): void;
49
+ isKeyboardFocused(): boolean;
44
50
  show(): void;
45
51
  hide(): void;
46
52
  /**
@@ -80,6 +80,15 @@ export class TooltipAdapter extends BaseAdapter {
80
80
  removeLightDismissListener(listener) {
81
81
  this._overlayElement?.removeEventListener(OVERLAY_CONSTANTS.events.LIGHT_DISMISS, listener);
82
82
  }
83
+ addTooltipListener(type, listener, opts) {
84
+ this.hostElement?.addEventListener(type, listener, opts);
85
+ }
86
+ removeTooltipListener(type, listener) {
87
+ this.hostElement?.removeEventListener(type, listener);
88
+ }
89
+ isKeyboardFocused() {
90
+ return !!this._anchorElement?.matches(':focus-visible');
91
+ }
83
92
  show() {
84
93
  // Tooltips are shown above all content via <forge-overlay>
85
94
  // We do this by dynamically creating an overlay element and appending it to the shadow root
@@ -39,6 +39,7 @@ export declare const TOOLTIP_CONSTANTS: {
39
39
  };
40
40
  numbers: {
41
41
  LONGPRESS_VISIBILITY_DURATION: number;
42
+ HOVER_OUTSIDE_THRESHOLD: number;
42
43
  };
43
44
  defaults: {
44
45
  DELAY: number;
@@ -24,7 +24,8 @@ const attributes = {
24
24
  ...observedAttributes
25
25
  };
26
26
  const numbers = {
27
- LONGPRESS_VISIBILITY_DURATION: 3000
27
+ LONGPRESS_VISIBILITY_DURATION: 3000,
28
+ HOVER_OUTSIDE_THRESHOLD: 100
28
29
  };
29
30
  const defaults = {
30
31
  DELAY: 500,
@@ -39,8 +39,17 @@ export declare class TooltipCore extends TooltipCore_base implements ITooltipCor
39
39
  private _hoverStartListener;
40
40
  private _hoverEndListener;
41
41
  private _hoverTimeout;
42
+ private _hoverOutsideTimeout;
43
+ private _isHoveringTooltip;
44
+ private _isHoveringAnchor;
45
+ private _tooltipHoverStartListener;
46
+ private _tooltipHoverEndListener;
47
+ private _anchorOpenHoverStartListener;
48
+ private _anchorOpenHoverEndListener;
42
49
  private _focusListener;
43
50
  private _blurListener;
51
+ private _keyboardFocusListener;
52
+ private _keyboardBlurListener;
44
53
  private _longpressVisibilityTimeout;
45
54
  private _scrollListener;
46
55
  private _mouseDownListener;
@@ -56,10 +65,21 @@ export declare class TooltipCore extends TooltipCore_base implements ITooltipCor
56
65
  private _hide;
57
66
  private _attachDismissListeners;
58
67
  private _detachDismissListeners;
68
+ private _attachTooltipHoverListeners;
69
+ private _detachTooltipHoverListeners;
70
+ private _attachAnchorOpenHoverListeners;
71
+ private _detachAnchorOpenHoverListeners;
59
72
  private _onHoverStart;
60
73
  private _onHoverEnd;
61
74
  private _onFocus;
62
75
  private _onBlur;
76
+ private _onKeyboardFocus;
77
+ private _onKeyboardBlur;
78
+ private _onTooltipHoverStart;
79
+ private _onTooltipHoverEnd;
80
+ private _onAnchorOpenHoverStart;
81
+ private _onAnchorOpenHoverEnd;
82
+ private _scheduleHideIfOutsideHoverRegion;
63
83
  protected _onLongpress(): void;
64
84
  protected _onLongpressEnd(evt: PointerEvent | TouchEvent): void;
65
85
  private _onTryShow;