@ds-mo/ui 14.5.0 → 14.7.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 (118) hide show
  1. package/dist/.package-ready.json +1 -1
  2. package/dist/agent-patterns.json +6 -6
  3. package/dist/agent.json +80 -26
  4. package/dist/angular/ds-menu.d.ts +7 -1
  5. package/dist/angular/ds-menu.js +5 -2
  6. package/dist/angular/ds-table.d.ts +4 -1
  7. package/dist/angular/ds-table.js +7 -4
  8. package/dist/angular/ds-tooltip.d.ts +1 -1
  9. package/dist/angular/ds-tooltip.js +4 -3
  10. package/dist/components/ds-agent-questionnaire.js +1 -1
  11. package/dist/components/ds-agent-response.js +1 -1
  12. package/dist/components/ds-banner.js +1 -1
  13. package/dist/components/ds-bar-nav.js +1 -1
  14. package/dist/components/ds-bar-title.js +1 -1
  15. package/dist/components/ds-bar-workflow.js +1 -1
  16. package/dist/components/ds-bar-workflow.js.map +1 -1
  17. package/dist/components/ds-button-unfilled.js +1 -1
  18. package/dist/components/ds-card-chart.js +1 -1
  19. package/dist/components/ds-card-overview.js +1 -1
  20. package/dist/components/ds-card-setting.js +1 -1
  21. package/dist/components/ds-code-block.js +1 -1
  22. package/dist/components/ds-conversation-list-item.js +1 -1
  23. package/dist/components/ds-conversation-list-item.js.map +1 -1
  24. package/dist/components/ds-filter-menu.js +1 -1
  25. package/dist/components/ds-filter-menu.js.map +1 -1
  26. package/dist/components/ds-input.js +1 -1
  27. package/dist/components/ds-markdown.js +1 -1
  28. package/dist/components/ds-menu.js +1 -1
  29. package/dist/components/ds-message-actions.js +1 -1
  30. package/dist/components/ds-message-composer.js +1 -1
  31. package/dist/components/ds-message-scroller.js +1 -1
  32. package/dist/components/ds-mobile-header.js +1 -1
  33. package/dist/components/ds-mobile-section-switcher.js +1 -1
  34. package/dist/components/ds-mobile-sheet-nav.js +1 -1
  35. package/dist/components/ds-modal.js +1 -1
  36. package/dist/components/ds-pagination.js +1 -1
  37. package/dist/components/ds-panel-nav.js +1 -1
  38. package/dist/components/ds-panel-tool-header.js +1 -1
  39. package/dist/components/ds-panel-tool-search.js +1 -1
  40. package/dist/components/ds-panel-tools.js +1 -1
  41. package/dist/components/ds-select.js +1 -1
  42. package/dist/components/ds-shell-app.js +1 -1
  43. package/dist/components/ds-shell-tools.js +1 -1
  44. package/dist/components/ds-table.js +1 -1
  45. package/dist/components/ds-table.js.map +1 -1
  46. package/dist/components/ds-toast.js +1 -1
  47. package/dist/components/ds-tooltip.js +1 -1
  48. package/dist/components/{p-w64TmQd-.js → p--VFa9x3k.js} +2 -2
  49. package/dist/components/{p-o1v7Choa.js → p-B5um-ps9.js} +2 -2
  50. package/dist/components/{p-BiIdszv1.js → p-BAebDW3a.js} +2 -2
  51. package/dist/components/p-BKWgofxz.js +2 -0
  52. package/dist/components/p-BKWgofxz.js.map +1 -0
  53. package/dist/components/p-BXPQmp7q.js +2 -0
  54. package/dist/components/p-BXPQmp7q.js.map +1 -0
  55. package/dist/components/{p-CXqVVdW2.js → p-BmqfTAXM.js} +2 -2
  56. package/dist/components/{p-B2hqUkg-.js → p-C-L4InQ0.js} +2 -2
  57. package/dist/components/{p-BGGm1NB1.js → p-C1jsgfeh.js} +2 -2
  58. package/dist/components/{p-nImbYpwo.js → p-CoQSB3tl.js} +2 -2
  59. package/dist/components/{p-BXNLaPbw.js → p-CvwtYbmh.js} +2 -2
  60. package/dist/components/{p-ohWEVGHg.js → p-D5VglrfF.js} +2 -2
  61. package/dist/components/{p-DkPNCBA8.js → p-D5bPuNiF.js} +2 -2
  62. package/dist/components/{p-Ba1l3Yot.js → p-DOC4RaAy.js} +2 -2
  63. package/dist/components/{p-CvpsV-jC.js → p-DQUxg6Si.js} +2 -2
  64. package/dist/components/{p-Dkkid-rh.js → p-bQm3gfr1.js} +2 -2
  65. package/dist/components/{p-CTTDiW33.js → p-c_5SXjwx.js} +2 -2
  66. package/dist/components/p-c_5SXjwx.js.map +1 -0
  67. package/dist/components/p-mLRtp5A4.js +2 -0
  68. package/dist/components/{p-CRLRjtsc.js.map → p-mLRtp5A4.js.map} +1 -1
  69. package/dist/docs/components.json +315 -16
  70. package/dist/lib/utils/index.d.ts +1 -0
  71. package/dist/lib/utils/index.js +8 -0
  72. package/dist/lib/utils/index.js.map +3 -3
  73. package/dist/lib/utils/is-element-truncated.d.ts +6 -0
  74. package/dist/mcp-data/registry/button-unfilled.json +6 -6
  75. package/dist/mcp-data/registry/menu.json +40 -12
  76. package/dist/mcp-data/registry/registry.json +79 -25
  77. package/dist/mcp-data/registry/table.json +110 -15
  78. package/dist/mcp-data/registry/tooltip.json +68 -7
  79. package/dist/react/ds-menu.d.ts +2 -1
  80. package/dist/react/ds-menu.js +2 -1
  81. package/dist/react/ds-table.d.ts +2 -1
  82. package/dist/react/ds-table.js +2 -1
  83. package/dist/styles/table.css +81 -2
  84. package/dist/types/components/ButtonUnfilled/ButtonUnfilled.d.ts +4 -2
  85. package/dist/types/components/Menu/Menu.d.ts +19 -1
  86. package/dist/types/components/Menu/menu-reorder.d.ts +21 -0
  87. package/dist/types/components/Menu/menu-types.d.ts +12 -0
  88. package/dist/types/components/Table/Table.d.ts +50 -1
  89. package/dist/types/components/Table/index.d.ts +1 -1
  90. package/dist/types/components/Table/table-action-menu.d.ts +15 -0
  91. package/dist/types/components/Table/table-cell-model.d.ts +16 -1
  92. package/dist/types/components/Table/table-column-customizer.d.ts +33 -0
  93. package/dist/types/components/Table/table-truncate.d.ts +6 -0
  94. package/dist/types/components/Table/table-types.d.ts +44 -2
  95. package/dist/types/components/Tooltip/Tooltip.d.ts +15 -0
  96. package/dist/types/components.d.ts +74 -6
  97. package/dist/types/utils/index.d.ts +1 -0
  98. package/dist/types/utils/is-element-truncated.d.ts +7 -0
  99. package/package.json +1 -1
  100. package/dist/components/p-CRLRjtsc.js +0 -2
  101. package/dist/components/p-CTTDiW33.js.map +0 -1
  102. package/dist/components/p-Ccq1RmOb.js +0 -2
  103. package/dist/components/p-Ccq1RmOb.js.map +0 -1
  104. package/dist/components/p-CtOK5oZ1.js +0 -2
  105. package/dist/components/p-CtOK5oZ1.js.map +0 -1
  106. /package/dist/components/{p-w64TmQd-.js.map → p--VFa9x3k.js.map} +0 -0
  107. /package/dist/components/{p-o1v7Choa.js.map → p-B5um-ps9.js.map} +0 -0
  108. /package/dist/components/{p-BiIdszv1.js.map → p-BAebDW3a.js.map} +0 -0
  109. /package/dist/components/{p-CXqVVdW2.js.map → p-BmqfTAXM.js.map} +0 -0
  110. /package/dist/components/{p-B2hqUkg-.js.map → p-C-L4InQ0.js.map} +0 -0
  111. /package/dist/components/{p-BGGm1NB1.js.map → p-C1jsgfeh.js.map} +0 -0
  112. /package/dist/components/{p-nImbYpwo.js.map → p-CoQSB3tl.js.map} +0 -0
  113. /package/dist/components/{p-BXNLaPbw.js.map → p-CvwtYbmh.js.map} +0 -0
  114. /package/dist/components/{p-ohWEVGHg.js.map → p-D5VglrfF.js.map} +0 -0
  115. /package/dist/components/{p-DkPNCBA8.js.map → p-D5bPuNiF.js.map} +0 -0
  116. /package/dist/components/{p-Ba1l3Yot.js.map → p-DOC4RaAy.js.map} +0 -0
  117. /package/dist/components/{p-CvpsV-jC.js.map → p-DQUxg6Si.js.map} +0 -0
  118. /package/dist/components/{p-Dkkid-rh.js.map → p-bQm3gfr1.js.map} +0 -0
@@ -0,0 +1,15 @@
1
+ import type { MenuItemsSection } from '../Menu/menu-types';
2
+ import type { TableCellAction, TableCellActionMenuEntry } from './table-types';
3
+ export declare function nextTableActionMenuElementId(): string;
4
+ export declare function isTableCellActionMenu(value: TableCellAction): value is TableCellAction & {
5
+ items: TableCellActionMenuEntry[];
6
+ ariaLabel: string;
7
+ };
8
+ export declare function isRenderableTableActionMenu(value: TableCellAction): value is TableCellAction & {
9
+ items: TableCellActionMenuEntry[];
10
+ ariaLabel: string;
11
+ };
12
+ /** Split divider entries into Menu sections. Empty runs (leading/repeated dividers) are dropped. */
13
+ export declare function tableActionMenuSections(items: TableCellActionMenuEntry[]): MenuItemsSection[];
14
+ export declare function tableActionTriggerId(menuId: string, rowId: string, columnId: string): string;
15
+ //# sourceMappingURL=table-action-menu.d.ts.map
@@ -1,4 +1,4 @@
1
- import type { TableCellAction, TableCellBlank, TableCellEmpty, TableCellIcon, TableCellImage, TableCellImageTracks, TableCellTag, TableCellTagVariant, TableCellTextRun, TableCellTextTrack, TableCellValue, TableCellLinkTarget, TableColumn } from './table-types';
1
+ import type { TableCellAction, TableCellBlank, TableCellEmpty, TableCellIcon, TableCellImage, TableCellImageTracks, TableCellTag, TableCellTagVariant, TableCellTextRun, TableCellTextTrack, TableCellValue, TableCellLinkTarget, TableCellLineClamp, TableCellMaxLines, TableColumn } from './table-types';
2
2
  import type { IconColor } from '../Icon/Icon';
3
3
  import type { TextColor } from '../Text/text-types';
4
4
  /** Maximum independently colored runs on one secondary or tertiary track. */
@@ -35,6 +35,7 @@ export type TableCellPresentation = {
35
35
  value: ResolvedTableCellText;
36
36
  variant: 'single' | 'multi' | 'triple';
37
37
  wraps: boolean;
38
+ lineClamp: TableCellLineClamp;
38
39
  } | {
39
40
  kind: 'image';
40
41
  cellType: 'image';
@@ -57,6 +58,7 @@ export type TableCellPresentation = {
57
58
  singleLine: boolean;
58
59
  variant: 'single' | 'multi' | 'triple' | 'primary-pair';
59
60
  wraps: boolean;
61
+ lineClamp: TableCellLineClamp;
60
62
  };
61
63
  /** Resolve an image cell's track stack; unknown values fall back to one track. */
62
64
  export declare function resolveTableCellImageTracks(tracks: TableCellImage['tracks']): TableCellImageTracks;
@@ -64,6 +66,19 @@ export declare function resolveTableCellImageTracks(tracks: TableCellImage['trac
64
66
  export declare function tableCellImageVariant(tracks: TableCellImageTracks): 'single' | 'multi' | 'triple';
65
67
  /** Collapse a consumer track into at most three non-empty runs. */
66
68
  export declare function normalizeTableCellTextTrack(track: TableCellTextTrack | number | undefined): TableCellTextRun[] | undefined;
69
+ /** Map wrap / maxLines onto wrap-to-track geometry and a line clamp. */
70
+ export declare function resolveTableCellTextOverflow(source: {
71
+ wrap?: boolean;
72
+ maxLines?: TableCellMaxLines;
73
+ }, column: TableColumn): {
74
+ wraps: boolean;
75
+ lineClamp: TableCellLineClamp;
76
+ };
77
+ /** ds-text overflow props for a resolved clamp. */
78
+ export declare function tableCellTextOverflowProps(lineClamp: TableCellLineClamp): {
79
+ lineTruncation: TableCellLineClamp;
80
+ wrap: 'wrap' | 'nowrap';
81
+ };
67
82
  /** Resolve a cell's semantic and visual recipe once for both markup and classes. */
68
83
  export declare function resolveTableCellPresentation(value: TableCellValue, column: TableColumn): TableCellPresentation;
69
84
  //# sourceMappingURL=table-cell-model.d.ts.map
@@ -0,0 +1,33 @@
1
+ import type { MenuItemData } from '../Menu/menu-types';
2
+ import type { TableColumn } from './table-types';
3
+ export declare function nextTableColumnCustomizerElementId(): string;
4
+ export declare function isTableActionColumn(column: TableColumn): boolean;
5
+ export declare function tableColumnCustomizerLabel(column: TableColumn): string;
6
+ export declare function tableDataColumns(columns: TableColumn[]): TableColumn[];
7
+ /** Data-column ids in display order. Unknown, duplicate, and action ids are ignored. */
8
+ export declare function resolveTableColumnOrder(columns: TableColumn[], columnOrder: string[] | undefined): string[];
9
+ /**
10
+ * Hidden data-column ids. Action and unknown ids are dropped. At least one data
11
+ * column remains visible when the catalog has any data columns.
12
+ */
13
+ export declare function resolveTableHiddenColumnIds(columns: TableColumn[], hiddenColumnIds: string[] | undefined): string[];
14
+ export declare function resolveTableVisibleColumns(columns: TableColumn[], options?: {
15
+ columnCustomizer?: boolean;
16
+ hiddenColumnIds?: string[];
17
+ columnOrder?: string[];
18
+ }): TableColumn[];
19
+ export declare function canToggleTableColumnHidden(columns: TableColumn[], hiddenColumnIds: string[] | undefined, columnId: string): boolean;
20
+ export declare function toggleTableColumnHidden(columns: TableColumn[], hiddenColumnIds: string[] | undefined, columnId: string): string[];
21
+ export declare function moveTableColumnOrder(order: string[], fromId: string, toId: string): string[];
22
+ export declare function moveTableColumnInOrder(order: string[], columnId: string, offset: number): string[];
23
+ export interface TableColumnCustomizerItem {
24
+ column: TableColumn;
25
+ label: string;
26
+ visible: boolean;
27
+ hideable: boolean;
28
+ reorderable: boolean;
29
+ }
30
+ export declare function tableColumnCustomizerItems(columns: TableColumn[], hiddenColumnIds: string[] | undefined, columnOrder: string[] | undefined): TableColumnCustomizerItem[];
31
+ /** Menu switch rows for the table-owned column customizer. */
32
+ export declare function tableColumnCustomizerMenuItems(columns: TableColumn[], hiddenColumnIds: string[] | undefined, columnOrder: string[] | undefined): MenuItemData[];
33
+ //# sourceMappingURL=table-column-customizer.d.ts.map
@@ -0,0 +1,6 @@
1
+ /** Marks text tracks that may present the table-owned truncation tooltip. */
2
+ export declare const TABLE_TRUNCATE_ATTR = "data-table-truncate";
3
+ /** Resolve the overflowing text track under a pointer or focus target. */
4
+ export declare function resolveTableTruncateTrack(target: EventTarget | null): HTMLElement | null;
5
+ export declare function tableTruncateLabel(track: HTMLElement): string;
6
+ //# sourceMappingURL=table-truncate.d.ts.map
@@ -12,6 +12,10 @@ export type TableLoadMoreMode = 'auto' | 'manual';
12
12
  export type TableDataMode = 'infinite' | 'pagination';
13
13
  export type TableLoadMoreReason = 'auto' | 'manual' | 'retry';
14
14
  export type TableColumnWidth = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
15
+ /** Visible line budget before a text track ellipsizes. */
16
+ export type TableCellMaxLines = 1 | 2 | 3;
17
+ /** Resolved clamp, including unlimited wrapping. */
18
+ export type TableCellLineClamp = TableCellMaxLines | 'none';
15
19
  /** Semantic color for a group section header (faint surface + bold title). */
16
20
  export type TableGroupIntent = 'brand' | 'neutral' | 'negative' | 'warning' | 'caution' | 'positive';
17
21
  /** Independently sortable label within a compound column header. */
@@ -56,6 +60,8 @@ export interface TableCellText {
56
60
  target?: TableCellLinkTarget;
57
61
  /** Allow this cell to wrap even when its column truncates by default. */
58
62
  wrap?: boolean;
63
+ /** Clamp wrapping text after 1, 2, or 3 lines. Overrides column wrap. */
64
+ maxLines?: TableCellMaxLines;
59
65
  fontFeature?: 'normal' | 'tabular-nums';
60
66
  }
61
67
  /** Two-line text content where both tracks use primary body text. */
@@ -69,6 +75,8 @@ export interface TableCellPrimaryText {
69
75
  target?: TableCellLinkTarget;
70
76
  /** Allow this cell to wrap even when its column truncates by default. */
71
77
  wrap?: boolean;
78
+ /** Clamp wrapping text after 1, 2, or 3 lines. Overrides column wrap. */
79
+ maxLines?: TableCellMaxLines;
72
80
  fontFeature?: 'normal' | 'tabular-nums';
73
81
  }
74
82
  /** Applicable data point whose value is currently unavailable. */
@@ -109,6 +117,7 @@ export interface TableCellIconText {
109
117
  href?: string;
110
118
  target?: TableCellLinkTarget;
111
119
  wrap?: boolean;
120
+ maxLines?: TableCellMaxLines;
112
121
  fontFeature?: 'normal' | 'tabular-nums';
113
122
  }
114
123
  /** Body-row track stack an image preview occupies. */
@@ -128,29 +137,55 @@ export interface TableCellImage {
128
137
  }
129
138
  interface TableCellActionBase {
130
139
  kind: 'action';
131
- /** Stable application-owned action identity emitted with dsCellAction. */
132
- actionId: string;
133
140
  /** Add the ButtonUnfilled resting border. Action cells are unbordered by default. */
134
141
  hasBorder?: boolean;
135
142
  isInactive?: boolean;
136
143
  isLoading?: boolean;
137
144
  }
145
+ /** One command inside an overflow action menu. */
146
+ export interface TableCellActionMenuItem {
147
+ /** Stable application-owned action identity emitted with dsCellAction. */
148
+ actionId: string;
149
+ label: string;
150
+ isInactive?: boolean;
151
+ isDestructive?: boolean;
152
+ }
153
+ /** Visual separator between overflow action-menu commands. */
154
+ export interface TableCellActionDivider {
155
+ kind: 'divider';
156
+ }
157
+ export type TableCellActionMenuEntry = TableCellActionMenuItem | TableCellActionDivider;
138
158
  /** Declarative ButtonUnfilled content rendered by the table's standard action cell. */
139
159
  export type TableCellAction = TableCellActionBase & ({
140
160
  variant?: 'label';
161
+ /** Stable application-owned action identity emitted with dsCellAction. */
162
+ actionId: string;
141
163
  label: string;
142
164
  icon?: never;
143
165
  ariaLabel?: string;
166
+ items?: never;
144
167
  } | {
145
168
  variant: 'icon-label';
169
+ actionId: string;
146
170
  label: string;
147
171
  icon: string;
148
172
  ariaLabel?: string;
173
+ items?: never;
149
174
  } | {
150
175
  variant: 'icon';
176
+ actionId: string;
151
177
  label?: never;
152
178
  icon: string;
153
179
  ariaLabel: string;
180
+ items?: never;
181
+ } | {
182
+ variant?: 'icon';
183
+ /** Overflow commands. The Ellipses trigger opens ds-menu instead of emitting on click. */
184
+ items: TableCellActionMenuEntry[];
185
+ ariaLabel: string;
186
+ icon?: string;
187
+ actionId?: never;
188
+ label?: never;
154
189
  });
155
190
  /** Declarative Tag content rendered by the table's standard cell primitive. */
156
191
  export type TableCellTagVariant = 'tag-only' | 'tag-with-text' | 'text-with-tag';
@@ -222,6 +257,8 @@ export interface TableColumn {
222
257
  maxSize?: number;
223
258
  /** Wrap cell text instead of truncating it to one line. */
224
259
  wrap?: boolean;
260
+ /** Clamp wrapping text after 1, 2, or 3 lines. Omit with wrap for unlimited wrap. */
261
+ maxLines?: TableCellMaxLines;
225
262
  /** Pin one application column to either inline edge during horizontal scrolling. */
226
263
  sticky?: TableColumnSticky;
227
264
  /**
@@ -303,6 +340,11 @@ export interface TableGroupCollapseChangeDetail {
303
340
  export interface TableRowActivateDetail {
304
341
  rowId: string;
305
342
  }
343
+ /** Controlled show/hide and data-column order for the table-owned customizer. */
344
+ export interface TableColumnsConfigChangeDetail {
345
+ hiddenColumnIds: string[];
346
+ columnOrder: string[];
347
+ }
306
348
  /** Controlled top-level pagination state. Rows or groups contain only the active page. */
307
349
  export interface TablePaginationState extends PaginationState {
308
350
  /** Change to request one fresh fitted-capacity snapshot for the current query shape. */
@@ -32,6 +32,13 @@ export declare class Tooltip {
32
32
  delay: number | string;
33
33
  shortcutKey: string | undefined;
34
34
  shortcutKeyPosition: 'start' | 'end';
35
+ /**
36
+ * Link the trigger with aria-describedby while the popup is open. Disable when
37
+ * the label is already in the DOM, such as a truncated table cell.
38
+ */
39
+ describedBy: boolean;
40
+ /** Allow the label to wrap at a panel-xs max width instead of a single line. */
41
+ wrapLabel: boolean;
35
42
  private tooltipId;
36
43
  private delayTimer;
37
44
  private closeTimer;
@@ -42,6 +49,7 @@ export declare class Tooltip {
42
49
  private readonly position;
43
50
  private skipEnterAnimation;
44
51
  private isOpen;
52
+ private programmaticAnchor;
45
53
  private lastInteractionWasKeyboard;
46
54
  private pointerEnterHandler;
47
55
  private pointerLeaveHandler;
@@ -64,6 +72,13 @@ export declare class Tooltip {
64
72
  private get fadeOutMs();
65
73
  private get tooltipFallbackWidthPx();
66
74
  private get tooltipFallbackHeightPx();
75
+ /**
76
+ * Present against an external anchor the host already measured.
77
+ * Does not bind hover or focus on that anchor — the owner drives show/hide.
78
+ */
79
+ presentFrom(anchor: HTMLElement, label?: string): Promise<void>;
80
+ /** Dismiss a popup opened through presentFrom or the slotted trigger. */
81
+ dismiss(): Promise<void>;
67
82
  private bindAnchor;
68
83
  private unbindAnchor;
69
84
  private linkDescribedBy;
@@ -35,7 +35,7 @@ import { AnchoredAlign, AnchoredSide } from "./utils/anchored-position";
35
35
  import { IconColor as IconColor1, IconSize } from "./components/Icon/Icon";
36
36
  import { InputSize, InputType, InputWidth } from "./components/Input/Input";
37
37
  import { LoaderColor, LoaderSize } from "./components/Loader/Loader";
38
- import { MenuItemData, MenuSection } from "./components/Menu/menu-types";
38
+ import { MenuItemData, MenuReorderDetail, MenuSection } from "./components/Menu/menu-types";
39
39
  import { MenuSelectionMode, MenuSize } from "./components/Menu/Menu";
40
40
  import { MenuAlign, MenuSide } from "./components/Menu/menu-position";
41
41
  import { ChoicePopupAnchorAlignment, ControlInsetDepth as ControlInsetDepth1 } from "./utils";
@@ -64,7 +64,7 @@ import { SliderOrientation, SliderSize, SliderThumbAlignment, SliderValue } from
64
64
  import { SwatchPickerOption, SwatchPickerSection } from "./components/SwatchPicker/swatch-picker-types";
65
65
  import { SwitchSize } from "./components/Switch/Switch";
66
66
  import { TabBackground, TabGroupSize as TabGroupSize1, TabGroupWidth } from "./components/TabGroup/TabGroup";
67
- import { TableCaptionVisibility, TableCellActionDetail, TableColumn, TableDataMode, TableGroup, TableGroupCollapseChangeDetail, TableGroupingState, TableGroupLoadMoreDetail, TableLoadMoreDetail, TableLoadMoreMode, TablePaginationState, TableRow, TableRowActivateDetail, TableSelectionChangeDetail, TableSelectionMode, TableSortChangeDetail, TableSortState } from "./components/Table/table-types";
67
+ import { TableCaptionVisibility, TableCellActionDetail, TableColumn, TableColumnsConfigChangeDetail, TableDataMode, TableGroup, TableGroupCollapseChangeDetail, TableGroupingState, TableGroupLoadMoreDetail, TableLoadMoreDetail, TableLoadMoreMode, TablePaginationState, TableRow, TableRowActivateDetail, TableSelectionChangeDetail, TableSelectionMode, TableSortChangeDetail, TableSortState } from "./components/Table/table-types";
68
68
  import { TagContrast, TagIntent, TagSize } from "./components/Tag/Tag";
69
69
  import { ToastActionEventDetail, ToastCloseEventDetail, ToastEventDetail, ToastManager, ToastSwipeDirection } from "./toast";
70
70
  import { TooltipAlign, TooltipSide, TooltipSize } from "./components/Tooltip/Tooltip";
@@ -99,7 +99,7 @@ export { AnchoredAlign, AnchoredSide } from "./utils/anchored-position";
99
99
  export { IconColor as IconColor1, IconSize } from "./components/Icon/Icon";
100
100
  export { InputSize, InputType, InputWidth } from "./components/Input/Input";
101
101
  export { LoaderColor, LoaderSize } from "./components/Loader/Loader";
102
- export { MenuItemData, MenuSection } from "./components/Menu/menu-types";
102
+ export { MenuItemData, MenuReorderDetail, MenuSection } from "./components/Menu/menu-types";
103
103
  export { MenuSelectionMode, MenuSize } from "./components/Menu/Menu";
104
104
  export { MenuAlign, MenuSide } from "./components/Menu/menu-position";
105
105
  export { ChoicePopupAnchorAlignment, ControlInsetDepth as ControlInsetDepth1 } from "./utils";
@@ -128,7 +128,7 @@ export { SliderOrientation, SliderSize, SliderThumbAlignment, SliderValue } from
128
128
  export { SwatchPickerOption, SwatchPickerSection } from "./components/SwatchPicker/swatch-picker-types";
129
129
  export { SwitchSize } from "./components/Switch/Switch";
130
130
  export { TabBackground, TabGroupSize as TabGroupSize1, TabGroupWidth } from "./components/TabGroup/TabGroup";
131
- export { TableCaptionVisibility, TableCellActionDetail, TableColumn, TableDataMode, TableGroup, TableGroupCollapseChangeDetail, TableGroupingState, TableGroupLoadMoreDetail, TableLoadMoreDetail, TableLoadMoreMode, TablePaginationState, TableRow, TableRowActivateDetail, TableSelectionChangeDetail, TableSelectionMode, TableSortChangeDetail, TableSortState } from "./components/Table/table-types";
131
+ export { TableCaptionVisibility, TableCellActionDetail, TableColumn, TableColumnsConfigChangeDetail, TableDataMode, TableGroup, TableGroupCollapseChangeDetail, TableGroupingState, TableGroupLoadMoreDetail, TableLoadMoreDetail, TableLoadMoreMode, TablePaginationState, TableRow, TableRowActivateDetail, TableSelectionChangeDetail, TableSelectionMode, TableSortChangeDetail, TableSortState } from "./components/Table/table-types";
132
132
  export { TagContrast, TagIntent, TagSize } from "./components/Tag/Tag";
133
133
  export { ToastActionEventDetail, ToastCloseEventDetail, ToastEventDetail, ToastManager, ToastSwipeDirection } from "./toast";
134
134
  export { TooltipAlign, TooltipSide, TooltipSize } from "./components/Tooltip/Tooltip";
@@ -690,7 +690,7 @@ export namespace Components {
690
690
  */
691
691
  "hasBorder": boolean;
692
692
  /**
693
- * Mark the button as a Menu trigger. Implies `aria-haspopup="menu"` and covers both menu-button shapes: - `label` / `icon-label` — the action *has* a menu; a trailing chevron carries the affordance. - `icon` — the button *is* a menu, i.e. the overflow / more-options control. No chevron is added, so the glyph must convey it on its own; use `Ellipses`. Use `haspopup` directly for non-menu popups.
693
+ * Mark the button as a Menu trigger. Implies `aria-haspopup="menu"` and covers both menu-button shapes: - `label` / `icon-label` — the action *has* a menu; a trailing chevron carries the affordance. - `icon` — the button *is* a menu. No chevron is added, so the glyph must convey the menu on its own. Use `Ellipses` for generic more-options; use a specific icon when the menu has a named purpose, such as `Preferences` for Customize table. Use `haspopup` directly for non-menu popups.
694
694
  * @default false
695
695
  */
696
696
  "hasMenu": boolean;
@@ -2859,6 +2859,16 @@ export namespace Components {
2859
2859
  * @default []
2860
2860
  */
2861
2861
  "collapsedGroupIds": string[];
2862
+ /**
2863
+ * Opt in to the table-owned column customizer. The `columns` prop remains the catalog; hidden and ordered columns are controlled separately. The trigger opens the shared Menu of live show/hide switch rows.
2864
+ * @default false
2865
+ */
2866
+ "columnCustomizer": boolean;
2867
+ /**
2868
+ * Controlled data-column identities in display order. Omitted ids append in catalog order.
2869
+ * @default []
2870
+ */
2871
+ "columnOrder": string[];
2862
2872
  /**
2863
2873
  * Stable column definitions. Assign through JavaScript.
2864
2874
  * @default []
@@ -2954,6 +2964,11 @@ export namespace Components {
2954
2964
  * Fixed height for the complete header, table frame, and footer composition.
2955
2965
  */
2956
2966
  "height": string | number | undefined;
2967
+ /**
2968
+ * Controlled hidden data-column identities. Action ids are ignored.
2969
+ * @default []
2970
+ */
2971
+ "hiddenColumnIds": string[];
2957
2972
  /**
2958
2973
  * Reset key for a new query/group/sort dataset.
2959
2974
  * @default 'default'
@@ -3216,10 +3231,23 @@ export namespace Components {
3216
3231
  * @default TOKEN_DEFAULTS.animationDelayMedium3
3217
3232
  */
3218
3233
  "delay": number | string;
3234
+ /**
3235
+ * Link the trigger with aria-describedby while the popup is open. Disable when the label is already in the DOM, such as a truncated table cell.
3236
+ * @default true
3237
+ */
3238
+ "describedBy": boolean;
3239
+ /**
3240
+ * Dismiss a popup opened through presentFrom or the slotted trigger.
3241
+ */
3242
+ "dismiss": () => Promise<void>;
3219
3243
  /**
3220
3244
  * Tooltip text. Empty/whitespace skips show — useful when the wrapper must stay mounted for layout/animation stability (e.g. PanelNav expand/collapse).
3221
3245
  */
3222
3246
  "label": string;
3247
+ /**
3248
+ * Present against an external anchor the host already measured. Does not bind hover or focus on that anchor — the owner drives show/hide.
3249
+ */
3250
+ "presentFrom": (anchor: HTMLElement, label?: string) => Promise<void>;
3223
3251
  "shortcutKey": string | undefined;
3224
3252
  /**
3225
3253
  * @default 'end'
@@ -3239,6 +3267,11 @@ export namespace Components {
3239
3267
  * @default 'md'
3240
3268
  */
3241
3269
  "size": TooltipSize;
3270
+ /**
3271
+ * Allow the label to wrap at a panel-xs max width instead of a single line.
3272
+ * @default false
3273
+ */
3274
+ "wrapLabel": boolean;
3242
3275
  }
3243
3276
  /**
3244
3277
  * Positioned value/label callout for chart hover interactions (bar, line point,
@@ -3964,6 +3997,7 @@ declare global {
3964
3997
  "dsAfterClose": void;
3965
3998
  "dsSelect": MenuItemData;
3966
3999
  "dsSwatchSelect": string;
4000
+ "dsReorder": MenuReorderDetail;
3967
4001
  }
3968
4002
  interface HTMLDsMenuElement extends Components.DsMenu, HTMLStencilElement {
3969
4003
  addEventListener<K extends keyof HTMLDsMenuElementEventMap>(type: K, listener: (this: HTMLDsMenuElement, ev: DsMenuCustomEvent<HTMLDsMenuElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
@@ -4466,6 +4500,7 @@ declare global {
4466
4500
  "dsPaginationChange": PaginationChangeDetail;
4467
4501
  "dsCellAction": TableCellActionDetail;
4468
4502
  "dsRowActivate": TableRowActivateDetail;
4503
+ "dsColumnsConfigChange": TableColumnsConfigChangeDetail;
4469
4504
  }
4470
4505
  interface HTMLDsTableElement extends Components.DsTable, HTMLStencilElement {
4471
4506
  addEventListener<K extends keyof HTMLDsTableElementEventMap>(type: K, listener: (this: HTMLDsTableElement, ev: DsTableCustomEvent<HTMLDsTableElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
@@ -5244,7 +5279,7 @@ declare namespace LocalJSX {
5244
5279
  */
5245
5280
  "hasBorder"?: boolean;
5246
5281
  /**
5247
- * Mark the button as a Menu trigger. Implies `aria-haspopup="menu"` and covers both menu-button shapes: - `label` / `icon-label` — the action *has* a menu; a trailing chevron carries the affordance. - `icon` — the button *is* a menu, i.e. the overflow / more-options control. No chevron is added, so the glyph must convey it on its own; use `Ellipses`. Use `haspopup` directly for non-menu popups.
5282
+ * Mark the button as a Menu trigger. Implies `aria-haspopup="menu"` and covers both menu-button shapes: - `label` / `icon-label` — the action *has* a menu; a trailing chevron carries the affordance. - `icon` — the button *is* a menu. No chevron is added, so the glyph must convey the menu on its own. Use `Ellipses` for generic more-options; use a specific icon when the menu has a named purpose, such as `Preferences` for Customize table. Use `haspopup` directly for non-menu popups.
5248
5283
  * @default false
5249
5284
  */
5250
5285
  "hasMenu"?: boolean;
@@ -6087,6 +6122,10 @@ declare namespace LocalJSX {
6087
6122
  */
6088
6123
  "onDsAfterClose"?: (event: DsMenuCustomEvent<void>) => void;
6089
6124
  "onDsClose"?: (event: DsMenuCustomEvent<void>) => void;
6125
+ /**
6126
+ * Emitted after a pointer drop or keyboard move; Menu never mutates item order.
6127
+ */
6128
+ "onDsReorder"?: (event: DsMenuCustomEvent<MenuReorderDetail>) => void;
6090
6129
  "onDsSelect"?: (event: DsMenuCustomEvent<MenuItemData>) => void;
6091
6130
  /**
6092
6131
  * Emitted when a generic `swatch-picker` section option is chosen.
@@ -7627,6 +7666,16 @@ declare namespace LocalJSX {
7627
7666
  * @default []
7628
7667
  */
7629
7668
  "collapsedGroupIds"?: string[];
7669
+ /**
7670
+ * Opt in to the table-owned column customizer. The `columns` prop remains the catalog; hidden and ordered columns are controlled separately. The trigger opens the shared Menu of live show/hide switch rows.
7671
+ * @default false
7672
+ */
7673
+ "columnCustomizer"?: boolean;
7674
+ /**
7675
+ * Controlled data-column identities in display order. Omitted ids append in catalog order.
7676
+ * @default []
7677
+ */
7678
+ "columnOrder"?: string[];
7630
7679
  /**
7631
7680
  * Stable column definitions. Assign through JavaScript.
7632
7681
  * @default []
@@ -7722,6 +7771,11 @@ declare namespace LocalJSX {
7722
7771
  * Fixed height for the complete header, table frame, and footer composition.
7723
7772
  */
7724
7773
  "height"?: string | number | undefined;
7774
+ /**
7775
+ * Controlled hidden data-column identities. Action ids are ignored.
7776
+ * @default []
7777
+ */
7778
+ "hiddenColumnIds"?: string[];
7725
7779
  /**
7726
7780
  * Reset key for a new query/group/sort dataset.
7727
7781
  * @default 'default'
@@ -7759,6 +7813,7 @@ declare namespace LocalJSX {
7759
7813
  */
7760
7814
  "maxHeight"?: string | number | undefined;
7761
7815
  "onDsCellAction"?: (event: DsTableCustomEvent<TableCellActionDetail>) => void;
7816
+ "onDsColumnsConfigChange"?: (event: DsTableCustomEvent<TableColumnsConfigChangeDetail>) => void;
7762
7817
  "onDsGroupCollapseChange"?: (event: DsTableCustomEvent<TableGroupCollapseChangeDetail>) => void;
7763
7818
  "onDsGroupLoadMore"?: (event: DsTableCustomEvent<TableGroupLoadMoreDetail>) => void;
7764
7819
  "onDsLoadMore"?: (event: DsTableCustomEvent<TableLoadMoreDetail>) => void;
@@ -7999,6 +8054,11 @@ declare namespace LocalJSX {
7999
8054
  * @default TOKEN_DEFAULTS.animationDelayMedium3
8000
8055
  */
8001
8056
  "delay"?: number | string;
8057
+ /**
8058
+ * Link the trigger with aria-describedby while the popup is open. Disable when the label is already in the DOM, such as a truncated table cell.
8059
+ * @default true
8060
+ */
8061
+ "describedBy"?: boolean;
8002
8062
  /**
8003
8063
  * Tooltip text. Empty/whitespace skips show — useful when the wrapper must stay mounted for layout/animation stability (e.g. PanelNav expand/collapse).
8004
8064
  */
@@ -8022,6 +8082,11 @@ declare namespace LocalJSX {
8022
8082
  * @default 'md'
8023
8083
  */
8024
8084
  "size"?: TooltipSize;
8085
+ /**
8086
+ * Allow the label to wrap at a panel-xs max width instead of a single line.
8087
+ * @default false
8088
+ */
8089
+ "wrapLabel"?: boolean;
8025
8090
  }
8026
8091
  /**
8027
8092
  * Positioned value/label callout for chart hover interactions (bar, line point,
@@ -8724,6 +8789,7 @@ declare namespace LocalJSX {
8724
8789
  interface DsTableAttributes {
8725
8790
  "caption": string;
8726
8791
  "captionVisibility": TableCaptionVisibility;
8792
+ "columnCustomizer": boolean;
8727
8793
  "displayedCount": number | undefined;
8728
8794
  "totalCount": number | undefined;
8729
8795
  "resultSummaryLabel": string;
@@ -8809,6 +8875,8 @@ declare namespace LocalJSX {
8809
8875
  "delay": string;
8810
8876
  "shortcutKey": string | undefined;
8811
8877
  "shortcutKeyPosition": 'start' | 'end';
8878
+ "describedBy": boolean;
8879
+ "wrapLabel": boolean;
8812
8880
  }
8813
8881
  interface DsTooltipChartAttributes {
8814
8882
  "value": string;
@@ -6,6 +6,7 @@ export type { PercentageDecimals } from './format-percentage';
6
6
  export { computeMetricChange, resolveMetricTrend } from './metric-change';
7
7
  export type { MetricChange, MetricTrend, MetricTrendDirection, MetricTrendTone, ResolveMetricTrendOptions, } from './metric-change';
8
8
  export { truncateSvgTextToWidth } from './truncate-svg-text';
9
+ export { isElementTruncated } from './is-element-truncated';
9
10
  export { parseCssTimeMs, prefersReducedMotion, resolveCssTimeMs, resolveMotionTimeMs, } from './resolve-css-time-ms';
10
11
  export { SCROLL_EDGE_FADE_DEFAULT_SIZE, SCROLL_EDGE_FADE_SIZE_VAR, isScrollAtEdge, resolveScrollEdgeFadeSize, scrollEdgeFadeClassMap, scrollEdgeFadeMaskImage, scrollEdgeFadeMaskStyle, scrollEdgeFadeSizeStyle, } from './scroll-edge-fade';
11
12
  export type { ScrollEdgeFadeEdge, ScrollEdgeFadeOptions, ScrollEdgeFadeSize, ScrollEdgeFadeSizeToken, } from './scroll-edge-fade';
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Whether a laid-out element is visually truncated.
3
+ * Prefers `ds-text`'s inner semantic node when present so host flex layout
4
+ * does not hide horizontal or line-clamp overflow.
5
+ */
6
+ export declare function isElementTruncated(element: HTMLElement): boolean;
7
+ //# sourceMappingURL=is-element-truncated.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ds-mo/ui",
3
- "version": "14.5.0",
3
+ "version": "14.7.0",
4
4
  "description": "CompoMo — composable web components styled with TokoMo design tokens",
5
5
  "keywords": [
6
6
  "web-components",