@ds-mo/ui 13.17.0 → 13.18.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 (220) hide show
  1. package/dist/.package-ready.json +1 -1
  2. package/dist/agent-patterns.json +1 -1
  3. package/dist/agent.json +264 -13
  4. package/dist/angular/ds-filter-menu.d.ts +44 -0
  5. package/dist/angular/ds-filter-menu.js +57 -0
  6. package/dist/angular/ds-select.d.ts +12 -1
  7. package/dist/angular/ds-select.js +10 -4
  8. package/dist/angular/index.d.ts +1 -1
  9. package/dist/angular/index.js +1 -0
  10. package/dist/angular/proxies.d.ts +1 -0
  11. package/dist/angular/proxies.js +1 -0
  12. package/dist/components/ds-agent-activity.js +1 -1
  13. package/dist/components/ds-agent-questionnaire.js +1 -1
  14. package/dist/components/ds-agent-response.js +1 -1
  15. package/dist/components/ds-agent-source-list.js +1 -1
  16. package/dist/components/ds-agent-tool-call.js +1 -1
  17. package/dist/components/ds-attachment-list.js +1 -1
  18. package/dist/components/ds-badge.js +1 -1
  19. package/dist/components/ds-banner.js +1 -1
  20. package/dist/components/ds-bar-nav.js +1 -1
  21. package/dist/components/ds-bar-title.js +1 -1
  22. package/dist/components/ds-bar-workflow.js +1 -1
  23. package/dist/components/ds-bar-workflow.js.map +1 -1
  24. package/dist/components/ds-breadcrumb.js +1 -1
  25. package/dist/components/ds-button-filled.js +1 -1
  26. package/dist/components/ds-button-unfilled.js +1 -1
  27. package/dist/components/ds-card-chart.js +1 -1
  28. package/dist/components/ds-card-overview.js +1 -1
  29. package/dist/components/ds-card-overview.js.map +1 -1
  30. package/dist/components/ds-card-setting.js +1 -1
  31. package/dist/components/ds-chart-legend.js +1 -1
  32. package/dist/components/ds-chart.js +1 -1
  33. package/dist/components/ds-checkbox.js +1 -1
  34. package/dist/components/ds-chip.js +1 -1
  35. package/dist/components/ds-code-block.js +1 -1
  36. package/dist/components/ds-conversation-list-item.js +1 -1
  37. package/dist/components/ds-conversation-list-item.js.map +1 -1
  38. package/dist/components/ds-conversation-list-section.js +1 -1
  39. package/dist/components/ds-empty-state.js +1 -1
  40. package/dist/components/ds-field.js +1 -1
  41. package/dist/components/ds-filter-menu.d.ts +11 -0
  42. package/dist/components/ds-filter-menu.js +2 -0
  43. package/dist/components/ds-filter-menu.js.map +1 -0
  44. package/dist/components/ds-input.js +1 -1
  45. package/dist/components/ds-input.js.map +1 -1
  46. package/dist/components/ds-markdown.js +1 -1
  47. package/dist/components/ds-menu.js +1 -1
  48. package/dist/components/ds-message-actions.js +1 -1
  49. package/dist/components/ds-message-bubble.js +1 -1
  50. package/dist/components/ds-message-composer.js +1 -1
  51. package/dist/components/ds-message-scroller.js +1 -1
  52. package/dist/components/ds-message.js +1 -1
  53. package/dist/components/ds-mobile-bar-nav.js +1 -1
  54. package/dist/components/ds-mobile-header.js +1 -1
  55. package/dist/components/ds-mobile-section-switcher.js +1 -1
  56. package/dist/components/ds-mobile-sheet-nav.js +1 -1
  57. package/dist/components/ds-modal.js +1 -1
  58. package/dist/components/ds-modal.js.map +1 -1
  59. package/dist/components/ds-panel-nav.js +1 -1
  60. package/dist/components/ds-panel-sub-nav.js +1 -1
  61. package/dist/components/ds-panel-tool-header.js +1 -1
  62. package/dist/components/ds-panel-tool-search.js +1 -1
  63. package/dist/components/ds-panel-tools.js +1 -1
  64. package/dist/components/ds-radio.js +1 -1
  65. package/dist/components/ds-scroll-overlay.js +1 -1
  66. package/dist/components/ds-select.js +1 -1
  67. package/dist/components/ds-select.js.map +1 -1
  68. package/dist/components/ds-shell-app.js +1 -1
  69. package/dist/components/ds-shell-app.js.map +1 -1
  70. package/dist/components/ds-shell-page.js +1 -1
  71. package/dist/components/ds-shell-tools.js +1 -1
  72. package/dist/components/ds-skeleton.js +1 -1
  73. package/dist/components/ds-slider.js +1 -1
  74. package/dist/components/ds-swatch-picker.js +1 -1
  75. package/dist/components/ds-switch.js +1 -1
  76. package/dist/components/ds-tab-group.js +1 -1
  77. package/dist/components/ds-table.js +1 -1
  78. package/dist/components/ds-table.js.map +1 -1
  79. package/dist/components/ds-tag.js +1 -1
  80. package/dist/components/ds-text.js +1 -1
  81. package/dist/components/ds-toast.js +1 -1
  82. package/dist/components/ds-tooltip-chart.js +1 -1
  83. package/dist/components/ds-tooltip.js +1 -1
  84. package/dist/components/ds-typing-indicator.js +1 -1
  85. package/dist/components/p-5uI3i2vg.js +2 -0
  86. package/dist/components/p-5uI3i2vg.js.map +1 -0
  87. package/dist/components/p-BAgjMUt3.js +2 -0
  88. package/dist/components/p-BAgjMUt3.js.map +1 -0
  89. package/dist/components/{p-CdKz-QT2.js → p-BCfgU8Fh.js} +2 -2
  90. package/dist/components/{p-CsXC1cHI.js → p-BDsAON4I.js} +2 -2
  91. package/dist/components/p-BMq4DJWh.js +2 -0
  92. package/dist/components/{p-D9FdOR_m.js.map → p-BMq4DJWh.js.map} +1 -1
  93. package/dist/components/{p-GWUTrIlk.js → p-BOCrvs-v.js} +2 -2
  94. package/dist/components/{p-B69Re7HW.js → p-BOjGzd5N.js} +2 -2
  95. package/dist/components/{p-BAAjiAIF.js → p-BQkZ8FIl.js} +2 -2
  96. package/dist/components/p-BaiGt_o6.js +2 -0
  97. package/dist/components/{p-D4jQy3Ps.js.map → p-BaiGt_o6.js.map} +1 -1
  98. package/dist/components/p-BqFKxWVl.js +2 -0
  99. package/dist/components/p-BqFKxWVl.js.map +1 -0
  100. package/dist/components/p-BtY2nJW4.js +2 -0
  101. package/dist/components/{p-m5CSrx_s.js.map → p-BtY2nJW4.js.map} +1 -1
  102. package/dist/components/{p-DStd98dM.js → p-BxQlH4gl.js} +2 -2
  103. package/dist/components/{p-DStd98dM.js.map → p-BxQlH4gl.js.map} +1 -1
  104. package/dist/components/{p-00or0yGw.js → p-C7ywYAzN.js} +2 -2
  105. package/dist/components/p-C8keZ4k6.js +2 -0
  106. package/dist/components/{p-BMAZWEDa.js.map → p-C8keZ4k6.js.map} +1 -1
  107. package/dist/components/p-CB8iBV_M.js +2 -0
  108. package/dist/components/p-CB8iBV_M.js.map +1 -0
  109. package/dist/components/p-CP2W8qxB.js +2 -0
  110. package/dist/components/{p-D5sIwLjA.js.map → p-CP2W8qxB.js.map} +1 -1
  111. package/dist/components/p-CUQTEeLp.js +2 -0
  112. package/dist/components/{p-B94M62Tx.js.map → p-CUQTEeLp.js.map} +1 -1
  113. package/dist/components/{p-D4j0deyd.js → p-C_tqXl5P.js} +2 -2
  114. package/dist/components/p-Csq6XDgm.js +2 -0
  115. package/dist/components/{p-D9CDoQBx.js.map → p-Csq6XDgm.js.map} +1 -1
  116. package/dist/components/p-CswBI711.js +2 -0
  117. package/dist/components/{p-CnUq7E8S.js.map → p-CswBI711.js.map} +1 -1
  118. package/dist/components/p-CtSxm6PI.js +2 -0
  119. package/dist/components/{p-DyqLVdJp.js.map → p-CtSxm6PI.js.map} +1 -1
  120. package/dist/components/{p-dEouiXJ8.js → p-D8nnhQNJ.js} +2 -2
  121. package/dist/components/p-DTMxwYQj.js +2 -0
  122. package/dist/components/{p-B2SoinWf.js.map → p-DTMxwYQj.js.map} +1 -1
  123. package/dist/components/{p-C891ueIx.js → p-DYoCb_sj.js} +2 -2
  124. package/dist/components/{p-Dhx_3_tf.js → p-DZFilC--.js} +2 -2
  125. package/dist/components/p-DZFilC--.js.map +1 -0
  126. package/dist/components/{p-GbTasczF.js → p-Dcnd5ZX5.js} +2 -2
  127. package/dist/components/{p-BRze4tRe.js → p-DeBto13S.js} +2 -2
  128. package/dist/components/p-DtvJTPds.js +2 -0
  129. package/dist/components/{p-B53Vpuqq.js.map → p-DtvJTPds.js.map} +1 -1
  130. package/dist/components/{p-DrvEhJhO.js → p-N4m0evkj.js} +2 -2
  131. package/dist/components/p-NdahPypA.js +2 -0
  132. package/dist/components/p-NdahPypA.js.map +1 -0
  133. package/dist/components/{p-D4AfoIu6.js → p-NuRg_IoA.js} +2 -2
  134. package/dist/components/{p-CqDJRVT8.js → p-NzOcZg8r.js} +2 -2
  135. package/dist/components/p-PzI11fs8.js +2 -0
  136. package/dist/components/p-PzI11fs8.js.map +1 -0
  137. package/dist/components/{p-Cohb8T7G.js → p-QdI17bl-.js} +2 -2
  138. package/dist/components/{p-chA2WA5x.js → p-Qzh-wyTg.js} +2 -2
  139. package/dist/components/{p-CnIvWEVm.js → p-Xr9OO-Ao.js} +2 -2
  140. package/dist/components/{p-Qf-os3lG.js → p-oyZjjoYV.js} +2 -2
  141. package/dist/components/{p-Dbobj7DI.js → p-smzwm_EW.js} +2 -2
  142. package/dist/components/p-tR8INOIN.js +2 -0
  143. package/dist/components/p-tR8INOIN.js.map +1 -0
  144. package/dist/docs/components.json +1299 -93
  145. package/dist/lib/utils/choice-list.d.ts +10 -0
  146. package/dist/lib/utils/index.js +4 -1
  147. package/dist/lib/utils/index.js.map +2 -2
  148. package/dist/lib/utils/token-defaults.d.ts +2 -0
  149. package/dist/mcp-data/registry/agent-source-list.json +2 -2
  150. package/dist/mcp-data/registry/bar-nav.json +2 -2
  151. package/dist/mcp-data/registry/breadcrumb.json +2 -2
  152. package/dist/mcp-data/registry/filter-menu.json +643 -0
  153. package/dist/mcp-data/registry/menu.json +11 -8
  154. package/dist/mcp-data/registry/modal.json +3 -3
  155. package/dist/mcp-data/registry/registry.json +266 -12
  156. package/dist/mcp-data/registry/select.json +131 -7
  157. package/dist/mcp-data/registry/table.json +2 -2
  158. package/dist/mcp-data/registry/text.json +2 -2
  159. package/dist/react/components.d.ts +1 -0
  160. package/dist/react/components.js +1 -0
  161. package/dist/react/ds-filter-menu.d.ts +17 -0
  162. package/dist/react/ds-filter-menu.js +19 -0
  163. package/dist/react/ds-select.d.ts +3 -1
  164. package/dist/react/ds-select.js +3 -1
  165. package/dist/styles/prose.css +19 -3
  166. package/dist/styles/table.css +1 -3
  167. package/dist/types/components/FilterMenu/FilterMenu.d.ts +137 -0
  168. package/dist/types/components/Menu/Menu.d.ts +1 -1
  169. package/dist/types/components/Menu/menu-types.d.ts +9 -0
  170. package/dist/types/components/Modal/Modal.d.ts +1 -0
  171. package/dist/types/components/Select/Select.d.ts +34 -0
  172. package/dist/types/components.d.ts +368 -2
  173. package/dist/types/utils/choice-list-parts.d.ts +17 -0
  174. package/dist/types/utils/choice-list.d.ts +10 -0
  175. package/dist/types/utils/select-controller.d.ts +2 -0
  176. package/dist/types/utils/token-defaults.d.ts +2 -0
  177. package/package.json +2 -1
  178. package/dist/components/p-B2SoinWf.js +0 -2
  179. package/dist/components/p-B53Vpuqq.js +0 -2
  180. package/dist/components/p-B94M62Tx.js +0 -2
  181. package/dist/components/p-BMAZWEDa.js +0 -2
  182. package/dist/components/p-BtUgncSJ.js +0 -2
  183. package/dist/components/p-BtUgncSJ.js.map +0 -1
  184. package/dist/components/p-CMbcRN92.js +0 -2
  185. package/dist/components/p-CMbcRN92.js.map +0 -1
  186. package/dist/components/p-CXduurfd.js +0 -2
  187. package/dist/components/p-CXduurfd.js.map +0 -1
  188. package/dist/components/p-CnUq7E8S.js +0 -2
  189. package/dist/components/p-D4jQy3Ps.js +0 -2
  190. package/dist/components/p-D5sIwLjA.js +0 -2
  191. package/dist/components/p-D9CDoQBx.js +0 -2
  192. package/dist/components/p-D9FdOR_m.js +0 -2
  193. package/dist/components/p-DO5-fplZ.js +0 -2
  194. package/dist/components/p-DO5-fplZ.js.map +0 -1
  195. package/dist/components/p-Dhx_3_tf.js.map +0 -1
  196. package/dist/components/p-DyqLVdJp.js +0 -2
  197. package/dist/components/p-NQOI5gN1.js +0 -2
  198. package/dist/components/p-NQOI5gN1.js.map +0 -1
  199. package/dist/components/p-m5CSrx_s.js +0 -2
  200. package/dist/components/p-ymtdhOU5.js +0 -2
  201. package/dist/components/p-ymtdhOU5.js.map +0 -1
  202. /package/dist/components/{p-CdKz-QT2.js.map → p-BCfgU8Fh.js.map} +0 -0
  203. /package/dist/components/{p-CsXC1cHI.js.map → p-BDsAON4I.js.map} +0 -0
  204. /package/dist/components/{p-GWUTrIlk.js.map → p-BOCrvs-v.js.map} +0 -0
  205. /package/dist/components/{p-B69Re7HW.js.map → p-BOjGzd5N.js.map} +0 -0
  206. /package/dist/components/{p-BAAjiAIF.js.map → p-BQkZ8FIl.js.map} +0 -0
  207. /package/dist/components/{p-00or0yGw.js.map → p-C7ywYAzN.js.map} +0 -0
  208. /package/dist/components/{p-D4j0deyd.js.map → p-C_tqXl5P.js.map} +0 -0
  209. /package/dist/components/{p-dEouiXJ8.js.map → p-D8nnhQNJ.js.map} +0 -0
  210. /package/dist/components/{p-C891ueIx.js.map → p-DYoCb_sj.js.map} +0 -0
  211. /package/dist/components/{p-GbTasczF.js.map → p-Dcnd5ZX5.js.map} +0 -0
  212. /package/dist/components/{p-BRze4tRe.js.map → p-DeBto13S.js.map} +0 -0
  213. /package/dist/components/{p-DrvEhJhO.js.map → p-N4m0evkj.js.map} +0 -0
  214. /package/dist/components/{p-D4AfoIu6.js.map → p-NuRg_IoA.js.map} +0 -0
  215. /package/dist/components/{p-CqDJRVT8.js.map → p-NzOcZg8r.js.map} +0 -0
  216. /package/dist/components/{p-Cohb8T7G.js.map → p-QdI17bl-.js.map} +0 -0
  217. /package/dist/components/{p-chA2WA5x.js.map → p-Qzh-wyTg.js.map} +0 -0
  218. /package/dist/components/{p-CnIvWEVm.js.map → p-Xr9OO-Ao.js.map} +0 -0
  219. /package/dist/components/{p-Qf-os3lG.js.map → p-oyZjjoYV.js.map} +0 -0
  220. /package/dist/components/{p-Dbobj7DI.js.map → p-smzwm_EW.js.map} +0 -0
@@ -0,0 +1,137 @@
1
+ import { EventEmitter } from '../../stencil-public-runtime';
2
+ import { type ControlWidth } from '../../utils';
3
+ import type { AnchoredAlign, AnchoredSide } from '../../utils/anchored-position';
4
+ export type FilterMenuFilterKind = 'single' | 'multiple' | 'boolean' | 'date';
5
+ export type FilterMenuSize = 'lg' | 'md' | 'sm' | 'xs';
6
+ export type FilterMenuWidth = ControlWidth;
7
+ export interface FilterMenuOption {
8
+ label: string;
9
+ value: string;
10
+ description?: string;
11
+ isInactive?: boolean;
12
+ }
13
+ export interface FilterMenuFilter {
14
+ id: string;
15
+ label: string;
16
+ kind: FilterMenuFilterKind;
17
+ options?: FilterMenuOption[];
18
+ description?: string;
19
+ fieldLabel?: string;
20
+ /** Draw a standard menu-section divider after this category. */
21
+ divider?: boolean;
22
+ }
23
+ export type FilterMenuValue = string[] | boolean | string;
24
+ export type FilterMenuValues = Record<string, FilterMenuValue | undefined>;
25
+ export interface FilterMenuChangeDetail {
26
+ filterId: string;
27
+ value: FilterMenuValue;
28
+ }
29
+ export declare class FilterMenu {
30
+ el: HTMLElement;
31
+ /** Controlled popup visibility. */
32
+ open: boolean;
33
+ /** Select trigger text. The selected count is appended automatically. */
34
+ triggerLabel: string;
35
+ /** Optional select trigger prefix icon name. */
36
+ icon: string | undefined;
37
+ /** Select trigger density. */
38
+ size: FilterMenuSize;
39
+ /** Select trigger width fit. */
40
+ width: FilterMenuWidth;
41
+ /** Show the surface-aware inset border around the select trigger. */
42
+ hasBorder: boolean;
43
+ /** Show selected interaction fill when one or more criteria are active. */
44
+ activeFill: boolean;
45
+ /** ID applied to the internal select trigger. */
46
+ inputId: string | undefined;
47
+ /** Direct accessible name for the internal select trigger. */
48
+ ariaLabel: string | null;
49
+ /** Product-owned filter categories and option definitions. */
50
+ filters: FilterMenuFilter[];
51
+ /** Controlled values keyed by filter id. */
52
+ values: FilterMenuValues;
53
+ /** Controlled category shown in the option pane. */
54
+ activeFilterId: string | undefined;
55
+ /** External trigger element to position against. */
56
+ anchor: HTMLElement | undefined;
57
+ /** ID of the external trigger element used for positioning and focus return. */
58
+ anchorId: string | undefined;
59
+ /** Preferred popup side; collision handling may flip it. */
60
+ side: AnchoredSide;
61
+ /** Cross-axis alignment against the trigger. */
62
+ align: AnchoredAlign;
63
+ /** Gap between trigger and popup — number in px or a TokoMo length. */
64
+ sideOffset: number | string;
65
+ /** Cross-axis offset — number in px or a TokoMo length. */
66
+ alignOffset: number | string;
67
+ /** Popup width. It remains clamped to the viewport by the component recipe. */
68
+ menuWidth: string;
69
+ /** Accessible name for the non-modal filter dialog. */
70
+ menuLabel: string;
71
+ /** Accessible name for the category tab list. */
72
+ categoriesLabel: string;
73
+ /** Footer action and date-clear accessible label. */
74
+ clearLabel: string;
75
+ /** Show a visible focus ring on initial entry after keyboard activation. */
76
+ initialFocusVisible: boolean;
77
+ private shouldRender;
78
+ private closing;
79
+ private positionReady;
80
+ private pos;
81
+ private focusRingVisible;
82
+ private activeOptionIndex;
83
+ /** Requests a controlled value replacement without closing the popup. */
84
+ dsChange: EventEmitter<FilterMenuChangeDetail>;
85
+ /** Requests that the consumer clear every filter value. */
86
+ dsClear: EventEmitter<void>;
87
+ /** Requests a controlled active-category replacement. */
88
+ dsActiveFilterChange: EventEmitter<string>;
89
+ /** Requests that the controlled popup close. */
90
+ dsClose: EventEmitter<void>;
91
+ /** Emitted whenever internal select-trigger activation changes popup visibility. */
92
+ dsOpenChange: EventEmitter<boolean>;
93
+ /** Emitted after exit motion and rendered popup removal complete. */
94
+ dsAfterClose: EventEmitter<void>;
95
+ private readonly generatedId;
96
+ private outsideHandler;
97
+ private triggerElement;
98
+ private pendingInitialFocusVisible;
99
+ private closeTimer;
100
+ private closingSnapshot;
101
+ private readonly position;
102
+ componentDidLoad(): void;
103
+ disconnectedCallback(): void;
104
+ onOpenChange(isOpen: boolean): void;
105
+ onPositionInputChange(): void;
106
+ handleKeyDown(event: KeyboardEvent): void;
107
+ private get resolvedAnchor();
108
+ private get usesInternalTrigger();
109
+ private get anchorFocusTarget();
110
+ private get viewportPad();
111
+ private get popupFallbackWidth();
112
+ private get popupFallbackHeight();
113
+ private setupListeners;
114
+ private teardownListeners;
115
+ private close;
116
+ private toggleFromTrigger;
117
+ private handleTriggerKeyDown;
118
+ private finishClose;
119
+ private captureClosingSnapshot;
120
+ private focusAnchor;
121
+ private focusInitialCategory;
122
+ private tabLeavesPopup;
123
+ private moveFocusAfterTab;
124
+ private selectedFilter;
125
+ private selectedCount;
126
+ private totalSelected;
127
+ private activeFilterCount;
128
+ private selectCategory;
129
+ private handleCategoryKeyDown;
130
+ private handlePanelKeyDown;
131
+ private handleOptionKeyDown;
132
+ private toggleMultiple;
133
+ private selectOption;
134
+ private renderOptions;
135
+ render(): any;
136
+ }
137
+ //# sourceMappingURL=FilterMenu.d.ts.map
@@ -1,7 +1,7 @@
1
1
  import { EventEmitter } from '../../stencil-public-runtime';
2
2
  import { type ChoicePopupAnchorAlignment, type ControlSize } from '../../utils';
3
3
  import type { MenuAlign, MenuSide } from './menu-position';
4
- import type { MenuItemData, MenuSection } from './menu-types';
4
+ import { type MenuItemData, type MenuSection } from './menu-types';
5
5
  export type MenuSelectionMode = 'none' | 'single';
6
6
  export type MenuSize = ControlSize;
7
7
  export declare class Menu {
@@ -1,12 +1,21 @@
1
1
  import type { SwatchPickerOption, SwatchPickerSection } from '../SwatchPicker/swatch-picker-types';
2
+ import type { TagContrast, TagIntent } from '../Tag/Tag';
2
3
  export type { MenuAlign, MenuSide } from './menu-position';
3
4
  export { PANEL_NAV_USER_MENU_PLACEMENT, PANEL_TOOLS_HEADER_MENU_PLACEMENT, type MenuPlacement, } from './menu-placement';
5
+ export interface MenuItemTagData {
6
+ label: string;
7
+ intent?: TagIntent;
8
+ contrast?: TagContrast;
9
+ rounded?: boolean;
10
+ }
4
11
  export interface MenuItemData {
5
12
  label: string;
6
13
  value?: string;
7
14
  subtext?: string;
8
15
  /** Show a supplemental brand notification dot. */
9
16
  dot?: boolean;
17
+ /** Show a non-interactive tag at the trailing edge of the row. */
18
+ tag?: MenuItemTagData;
10
19
  isSelected?: boolean;
11
20
  isInactive?: boolean;
12
21
  isDestructive?: boolean;
@@ -27,6 +27,7 @@ export declare class Modal {
27
27
  private previousFocus;
28
28
  private closeTimer;
29
29
  componentDidLoad(): void;
30
+ componentDidRender(): void;
30
31
  disconnectedCallback(): void;
31
32
  onOpenChange(isOpen: boolean): void;
32
33
  private focusClose;
@@ -6,7 +6,13 @@ export type SelectSection = ChoiceSection;
6
6
  export type SelectBackground = ChoiceBackground;
7
7
  export type SelectSize = 'lg' | 'md' | 'sm' | 'xs';
8
8
  export type SelectWidth = ControlWidth;
9
+ export type SelectPopupAlign = 'start' | 'end';
9
10
  export type SelectValue = string | string[];
11
+ export interface SelectOptionActionDetail {
12
+ value: string;
13
+ anchorId: string;
14
+ originalEvent: MouseEvent;
15
+ }
10
16
  export declare class Select {
11
17
  el: HTMLElement;
12
18
  internals: ElementInternals;
@@ -30,10 +36,18 @@ export declare class Select {
30
36
  requiredMessage: string;
31
37
  /** Trigger text shown when no valid value is selected. */
32
38
  placeholder: string;
39
+ /** Optional scalar-mode trigger text that does not change the selected option label. */
40
+ triggerLabel: string | undefined;
41
+ /** Present triggerLabel with placeholder emphasis while preserving the selected value. */
42
+ triggerLabelPlaceholder: boolean;
43
+ /** Show a supplemental notification dot beside the trigger label. */
44
+ dot: boolean;
33
45
  /** Control density. */
34
46
  size: SelectSize;
35
47
  /** Width fit — hug content (default) or fill the parent. */
36
48
  width: SelectWidth;
49
+ /** Align the popup's choice edge to the trigger start or end edge. */
50
+ popupAlign: SelectPopupAlign;
37
51
  /** Shared inactive treatment; removes interaction and form submission. */
38
52
  isInactive: boolean;
39
53
  /** Replace the prefix with a loader and disable option interaction. */
@@ -50,6 +64,8 @@ export declare class Select {
50
64
  clearLabel: string;
51
65
  /** Localized noun displayed after the selected count in multiple mode. */
52
66
  selectedLabel: string;
67
+ /** Optional text action shown in the popup footer instead of the clear action. */
68
+ footerActionLabel: string | undefined;
53
69
  /** Show immediate local filtering over option labels, subtext, and section headings. */
54
70
  searchable: boolean;
55
71
  /** Localized search-field placeholder and accessible name. */
@@ -78,23 +94,36 @@ export declare class Select {
78
94
  dsClear: EventEmitter<void>;
79
95
  /** Emitted whenever popup visibility changes. */
80
96
  dsOpenChange: EventEmitter<boolean>;
97
+ /** Emitted when the optional popup footer action is activated. */
98
+ dsFooterAction: EventEmitter<void>;
99
+ /** Emitted when an option's contextual ellipsis action is activated. */
100
+ dsOptionAction: EventEmitter<SelectOptionActionDetail>;
81
101
  private activeIndex;
82
102
  private searchTerm;
83
103
  private formDisabled;
84
104
  private position;
85
105
  private positionReady;
86
106
  private focusRingVisible;
107
+ private compactFooterSummary;
87
108
  private readonly generatedId;
88
109
  private readonly listboxId;
89
110
  private readonly errorId;
90
111
  private initialValue;
91
112
  private readonly controller;
113
+ private footerContentElement?;
114
+ private footerSummaryMeasureElement?;
115
+ private footerClearElement?;
116
+ private footerResizeObserver?;
117
+ private observedFooterContentElement?;
118
+ private footerMeasurementFrame?;
92
119
  private createController;
93
120
  componentWillLoad(): void;
94
121
  componentDidLoad(): void;
122
+ componentDidRender(): void;
95
123
  disconnectedCallback(): void;
96
124
  syncFormValue(): void;
97
125
  onLoadingChange(): void;
126
+ onPopupAlignChange(): void;
98
127
  onOpenChange(open: boolean): void;
99
128
  onSearchTermChange(): void;
100
129
  onActiveIndexChange(): void;
@@ -113,10 +142,15 @@ export declare class Select {
113
142
  private get selectedOption();
114
143
  private get hasSelection();
115
144
  private get activeOptionId();
145
+ private get popupRole();
146
+ private observeFooterContent;
147
+ private scheduleFooterSummaryMeasurement;
148
+ private measureFooterSummary;
116
149
  private closePopup;
117
150
  private openPopup;
118
151
  private selectOption;
119
152
  private clearSelection;
153
+ private activateFooterAction;
120
154
  private readonly handleListKeyDown;
121
155
  private readonly handleTriggerKeyDown;
122
156
  private renderOption;