@ds-mo/ui 14.1.0 → 14.2.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.
- package/dist/.package-ready.json +1 -1
- package/dist/agent-patterns.json +1 -1
- package/dist/agent.json +35 -7
- package/dist/angular/ds-table.d.ts +4 -1
- package/dist/angular/ds-table.js +7 -4
- package/dist/components/ds-bar-workflow.js +1 -1
- package/dist/components/ds-mobile-header.js +1 -1
- package/dist/components/ds-mobile-sheet-nav.js +1 -1
- package/dist/components/ds-shell-app.js +1 -1
- package/dist/components/ds-shell-tools.js +1 -1
- package/dist/components/ds-tab-group.js +1 -1
- package/dist/components/ds-table.js +1 -1
- package/dist/components/ds-table.js.map +1 -1
- package/dist/components/{p-CZncU32j.js → p-BMJcBo8B.js} +2 -2
- package/dist/components/{p-CrjsT3s7.js → p-C-GNvCk0.js} +2 -2
- package/dist/components/p-CTVMXN9s.js +2 -0
- package/dist/components/{p-Dly2SR-q.js.map → p-CTVMXN9s.js.map} +1 -1
- package/dist/components/{p-D4bL9H8v.js → p-CbfmzgdW.js} +2 -2
- package/dist/components/p-CbfmzgdW.js.map +1 -0
- package/dist/components/p-NdahPypA.js.map +1 -1
- package/dist/docs/components.json +208 -8
- package/dist/mcp-data/registry/registry.json +34 -6
- package/dist/mcp-data/registry/tab-group.json +2 -2
- package/dist/mcp-data/registry/table.json +135 -10
- package/dist/react/ds-table.d.ts +2 -1
- package/dist/react/ds-table.js +1 -0
- package/dist/styles/table.css +1 -5
- package/dist/types/components/Table/Table.d.ts +17 -1
- package/dist/types/components/Table/index.d.ts +1 -1
- package/dist/types/components/Table/table-group-load-controller.d.ts +40 -0
- package/dist/types/components/Table/table-types.d.ts +11 -0
- package/dist/types/components.d.ts +70 -4
- package/package.json +2 -2
- package/dist/components/p-D4bL9H8v.js.map +0 -1
- package/dist/components/p-Dly2SR-q.js +0 -2
- /package/dist/components/{p-CZncU32j.js.map → p-BMJcBo8B.js.map} +0 -0
- /package/dist/components/{p-CrjsT3s7.js.map → p-C-GNvCk0.js.map} +0 -0
package/dist/react/ds-table.d.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Changes to this file may cause incorrect behavior and will be lost if the code is regenerated.
|
|
4
4
|
*/
|
|
5
5
|
import type { EventName, StencilReactComponent } from './react-runtime.js';
|
|
6
|
-
import { type DsTableCustomEvent, type TableCellActionDetail, type TableGroupCollapseChangeDetail, type TableLoadMoreDetail, type TableRowActivateDetail, type TableSelectionChangeDetail, type TableSortChangeDetail } from "@ds-mo/ui";
|
|
6
|
+
import { type DsTableCustomEvent, type TableCellActionDetail, type TableGroupCollapseChangeDetail, type TableGroupLoadMoreDetail, type TableLoadMoreDetail, type TableRowActivateDetail, type TableSelectionChangeDetail, type TableSortChangeDetail } from "@ds-mo/ui";
|
|
7
7
|
import type { Components } from "@ds-mo/ui/dist/components";
|
|
8
8
|
import { DsTable as DsTableElement } from "@ds-mo/ui/dist/components/ds-table.js";
|
|
9
9
|
export type DsTableEvents = {
|
|
@@ -11,6 +11,7 @@ export type DsTableEvents = {
|
|
|
11
11
|
onDsGroupCollapseChange: EventName<DsTableCustomEvent<TableGroupCollapseChangeDetail>>;
|
|
12
12
|
onDsSelectionChange: EventName<DsTableCustomEvent<TableSelectionChangeDetail>>;
|
|
13
13
|
onDsLoadMore: EventName<DsTableCustomEvent<TableLoadMoreDetail>>;
|
|
14
|
+
onDsGroupLoadMore: EventName<DsTableCustomEvent<TableGroupLoadMoreDetail>>;
|
|
14
15
|
onDsCellAction: EventName<DsTableCustomEvent<TableCellActionDetail>>;
|
|
15
16
|
onDsRowActivate: EventName<DsTableCustomEvent<TableRowActivateDetail>>;
|
|
16
17
|
};
|
package/dist/react/ds-table.js
CHANGED
|
@@ -12,6 +12,7 @@ export const DsTable = /*@__PURE__*/ createComponent({
|
|
|
12
12
|
onDsGroupCollapseChange: 'dsGroupCollapseChange',
|
|
13
13
|
onDsSelectionChange: 'dsSelectionChange',
|
|
14
14
|
onDsLoadMore: 'dsLoadMore',
|
|
15
|
+
onDsGroupLoadMore: 'dsGroupLoadMore',
|
|
15
16
|
onDsCellAction: 'dsCellAction',
|
|
16
17
|
onDsRowActivate: 'dsRowActivate'
|
|
17
18
|
},
|
package/dist/styles/table.css
CHANGED
|
@@ -1172,10 +1172,6 @@
|
|
|
1172
1172
|
pointer-events: none;
|
|
1173
1173
|
}
|
|
1174
1174
|
|
|
1175
|
-
:where(.ds-table__group:last-child[data-collapsed='true'] .ds-table__group-content)::after {
|
|
1176
|
-
display: none;
|
|
1177
|
-
}
|
|
1178
|
-
|
|
1179
1175
|
:where(.ds-table__table--selectable .ds-table__group-content),
|
|
1180
1176
|
:where(.ds-table__sticky-group--selectable .ds-table__group-content) {
|
|
1181
1177
|
/* Selection lane is the real 40px column — don't add start pad or flex gap. */
|
|
@@ -1290,7 +1286,7 @@
|
|
|
1290
1286
|
}
|
|
1291
1287
|
|
|
1292
1288
|
:where(.ds-table__skeleton-row:last-child .ds-table__cell),
|
|
1293
|
-
:where(.ds-table__load-row:last-child .ds-table__load-cell),
|
|
1289
|
+
:where(.ds-table__load-body .ds-table__load-row:last-child .ds-table__load-cell),
|
|
1294
1290
|
:where(.ds-table__state-row:last-child .ds-table__state-cell),
|
|
1295
1291
|
:where(.ds-table__body:last-child .ds-table__row:last-child .ds-table__cell) {
|
|
1296
1292
|
border-block-end: 0;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { EventEmitter } from '../../stencil-public-runtime';
|
|
2
|
-
import type { TableCaptionVisibility, TableCellActionDetail, TableColumn, TableGroup, TableGroupCollapseChangeDetail, TableGroupingState, TableLoadMoreDetail, TableLoadMoreMode, TableRow, TableRowActivateDetail, TableSelectionChangeDetail, TableSelectionMode, TableSortChangeDetail, TableSortState } from './table-types';
|
|
2
|
+
import type { TableCaptionVisibility, TableCellActionDetail, TableColumn, TableGroup, TableGroupCollapseChangeDetail, TableGroupLoadMoreDetail, TableGroupingState, TableLoadMoreDetail, TableLoadMoreMode, TableRow, TableRowActivateDetail, TableSelectionChangeDetail, TableSelectionMode, TableSortChangeDetail, TableSortState } from './table-types';
|
|
3
3
|
export declare class Table {
|
|
4
4
|
el: HTMLElement;
|
|
5
5
|
/** Stable column definitions. Assign through JavaScript. */
|
|
@@ -68,10 +68,22 @@ export declare class Table {
|
|
|
68
68
|
endOfResultsLabel: string;
|
|
69
69
|
/** Supports {count} and {total} placeholders. */
|
|
70
70
|
rowsLoadedLabel: string;
|
|
71
|
+
groupLoadMoreLabel: string;
|
|
72
|
+
/** Supports the {group} placeholder. */
|
|
73
|
+
groupLoadMoreAriaLabel: string;
|
|
74
|
+
/** Supports the {group} placeholder. */
|
|
75
|
+
groupRetryLabel: string;
|
|
76
|
+
/** Supports the {group} placeholder. */
|
|
77
|
+
groupLoadingMoreLabel: string;
|
|
78
|
+
/** Supports the {group} placeholder. */
|
|
79
|
+
groupEndOfResultsLabel: string;
|
|
80
|
+
/** Supports {group}, {count}, {loaded}, and {total} placeholders. */
|
|
81
|
+
groupRowsLoadedLabel: string;
|
|
71
82
|
dsSortChange: EventEmitter<TableSortChangeDetail>;
|
|
72
83
|
dsGroupCollapseChange: EventEmitter<TableGroupCollapseChangeDetail>;
|
|
73
84
|
dsSelectionChange: EventEmitter<TableSelectionChangeDetail>;
|
|
74
85
|
dsLoadMore: EventEmitter<TableLoadMoreDetail>;
|
|
86
|
+
dsGroupLoadMore: EventEmitter<TableGroupLoadMoreDetail>;
|
|
75
87
|
dsCellAction: EventEmitter<TableCellActionDetail>;
|
|
76
88
|
dsRowActivate: EventEmitter<TableRowActivateDetail>;
|
|
77
89
|
private overflowStart;
|
|
@@ -89,6 +101,7 @@ export declare class Table {
|
|
|
89
101
|
private stickyHeaderTableEl;
|
|
90
102
|
private tableEl;
|
|
91
103
|
private sentinelEl;
|
|
104
|
+
private readonly groupSentinelEls;
|
|
92
105
|
private previousModelWarning;
|
|
93
106
|
private hasLoaded;
|
|
94
107
|
private renderedModel;
|
|
@@ -96,6 +109,7 @@ export declare class Table {
|
|
|
96
109
|
private headerSlotObserver;
|
|
97
110
|
private readonly layoutController;
|
|
98
111
|
private readonly loadController;
|
|
112
|
+
private readonly groupLoadController;
|
|
99
113
|
private readonly viewportFitController;
|
|
100
114
|
componentWillLoad(): void;
|
|
101
115
|
componentDidLoad(): void;
|
|
@@ -147,6 +161,8 @@ export declare class Table {
|
|
|
147
161
|
private emitGroupCollapse;
|
|
148
162
|
private emitAllGroupsCollapse;
|
|
149
163
|
private renderGroupContent;
|
|
164
|
+
private formatGroupLoadLabel;
|
|
165
|
+
private renderGroupLoadRow;
|
|
150
166
|
private renderStickyGroup;
|
|
151
167
|
private renderDataBodies;
|
|
152
168
|
private renderSkeletonBody;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export type { TableCaptionVisibility, TableCellAlign, TableCellAction, TableCellActionDetail, TableCellBlank, TableCellEmpty, TableCellIcon, TableCellImage, TableCellPrimaryText, TableCellText, TableCellTag, TableCellTagVariant, TableCellValue, TableColumn, TableColumnSticky, TableColumnWidth, TableGroup, TableGroupCollapseChangeDetail, TableGroupIntent, TableHeaderSegment, TableGroupingState, TableLoadMoreDetail, TableLoadMoreMode, TableLoadMoreReason, TableRow, TableRowActivateDetail, TableSelectionChangeDetail, TableSelectionMode, TableSortChangeDetail, TableSortDirection, TableSortState, } from './table-types';
|
|
1
|
+
export type { TableCaptionVisibility, TableCellAlign, TableCellAction, TableCellActionDetail, TableCellBlank, TableCellEmpty, TableCellIcon, TableCellImage, TableCellPrimaryText, TableCellText, TableCellTag, TableCellTagVariant, TableCellValue, TableColumn, TableColumnSticky, TableColumnWidth, TableGroup, TableGroupCollapseChangeDetail, TableGroupLoadMoreDetail, TableGroupIntent, TableHeaderSegment, TableGroupingState, TableLoadMoreDetail, TableLoadMoreMode, TableLoadMoreReason, TableRow, TableRowActivateDetail, TableSelectionChangeDetail, TableSelectionMode, TableSortChangeDetail, TableSortDirection, TableSortState, } from './table-types';
|
|
2
2
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { TableGroup, TableGroupLoadMoreDetail, TableLoadMoreMode, TableLoadMoreReason } from './table-types';
|
|
2
|
+
export interface TableGroupLoadControllerState {
|
|
3
|
+
enabled: boolean;
|
|
4
|
+
loadMoreMode: TableLoadMoreMode;
|
|
5
|
+
loadMoreThreshold: number;
|
|
6
|
+
containedScroll: boolean;
|
|
7
|
+
groups: TableGroup[];
|
|
8
|
+
viewport: HTMLElement | null;
|
|
9
|
+
sentinels: ReadonlyMap<string, HTMLElement>;
|
|
10
|
+
loadingMoreLabel: string;
|
|
11
|
+
endOfResultsLabel: string;
|
|
12
|
+
rowsLoadedLabel: string;
|
|
13
|
+
}
|
|
14
|
+
export interface TableGroupLoadControllerOptions {
|
|
15
|
+
state: () => TableGroupLoadControllerState;
|
|
16
|
+
announce: (message: string) => void;
|
|
17
|
+
request: (detail: TableGroupLoadMoreDetail) => void;
|
|
18
|
+
}
|
|
19
|
+
/** Owns request guards, announcements, and observation for independently loaded groups. */
|
|
20
|
+
export declare class TableGroupLoadController {
|
|
21
|
+
private readonly options;
|
|
22
|
+
readonly intersectionSupported: boolean;
|
|
23
|
+
private connected;
|
|
24
|
+
private intersectionObserver;
|
|
25
|
+
private snapshots;
|
|
26
|
+
private pending;
|
|
27
|
+
constructor(options: TableGroupLoadControllerOptions);
|
|
28
|
+
initialize(): void;
|
|
29
|
+
connect(): void;
|
|
30
|
+
disconnect(): void;
|
|
31
|
+
refresh(): void;
|
|
32
|
+
structureChanged(): void;
|
|
33
|
+
dataChanged(): void;
|
|
34
|
+
configurationChanged(): void;
|
|
35
|
+
request(groupId: string, reason: TableLoadMoreReason): void;
|
|
36
|
+
private createSnapshots;
|
|
37
|
+
private snapshot;
|
|
38
|
+
private disconnectObserver;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=table-group-load-controller.d.ts.map
|
|
@@ -173,6 +173,14 @@ export interface TableGroup {
|
|
|
173
173
|
* intent background and bold intent title color.
|
|
174
174
|
*/
|
|
175
175
|
intent?: TableGroupIntent;
|
|
176
|
+
/** Whether this group has more member rows available to load. */
|
|
177
|
+
hasMore?: boolean;
|
|
178
|
+
/** Controlled incremental loading state for this group's member rows. */
|
|
179
|
+
loadingMore?: boolean;
|
|
180
|
+
/** Controlled incremental loading failure for this group's member rows. */
|
|
181
|
+
loadMoreError?: string;
|
|
182
|
+
/** Reset key for this group's query, sort, or filter state. Defaults to the group ID. */
|
|
183
|
+
loadIdentity?: string | number;
|
|
176
184
|
rows: TableRow[];
|
|
177
185
|
}
|
|
178
186
|
export interface TableSortChangeDetail {
|
|
@@ -191,6 +199,9 @@ export interface TableLoadMoreDetail {
|
|
|
191
199
|
loadIdentity: string | number;
|
|
192
200
|
loadedRowCount: number;
|
|
193
201
|
}
|
|
202
|
+
export interface TableGroupLoadMoreDetail extends TableLoadMoreDetail {
|
|
203
|
+
groupId: string;
|
|
204
|
+
}
|
|
194
205
|
export interface TableCellActionDetail {
|
|
195
206
|
actionId: string;
|
|
196
207
|
rowId: string;
|
|
@@ -63,7 +63,7 @@ import { SliderOrientation, SliderSize, SliderThumbAlignment, SliderValue } from
|
|
|
63
63
|
import { SwatchPickerOption, SwatchPickerSection } from "./components/SwatchPicker/swatch-picker-types";
|
|
64
64
|
import { SwitchSize } from "./components/Switch/Switch";
|
|
65
65
|
import { TabBackground, TabGroupSize as TabGroupSize1, TabGroupWidth } from "./components/TabGroup/TabGroup";
|
|
66
|
-
import { TableCaptionVisibility, TableCellActionDetail, TableColumn, TableGroup, TableGroupCollapseChangeDetail, TableGroupingState, TableLoadMoreDetail, TableLoadMoreMode, TableRow, TableRowActivateDetail, TableSelectionChangeDetail, TableSelectionMode, TableSortChangeDetail, TableSortState } from "./components/Table/table-types";
|
|
66
|
+
import { TableCaptionVisibility, TableCellActionDetail, TableColumn, TableGroup, TableGroupCollapseChangeDetail, TableGroupingState, TableGroupLoadMoreDetail, TableLoadMoreDetail, TableLoadMoreMode, TableRow, TableRowActivateDetail, TableSelectionChangeDetail, TableSelectionMode, TableSortChangeDetail, TableSortState } from "./components/Table/table-types";
|
|
67
67
|
import { TagContrast, TagIntent, TagSize } from "./components/Tag/Tag";
|
|
68
68
|
import { ToastActionEventDetail, ToastCloseEventDetail, ToastEventDetail, ToastManager, ToastSwipeDirection } from "./toast";
|
|
69
69
|
import { TooltipAlign, TooltipSide, TooltipSize } from "./components/Tooltip/Tooltip";
|
|
@@ -126,7 +126,7 @@ export { SliderOrientation, SliderSize, SliderThumbAlignment, SliderValue } from
|
|
|
126
126
|
export { SwatchPickerOption, SwatchPickerSection } from "./components/SwatchPicker/swatch-picker-types";
|
|
127
127
|
export { SwitchSize } from "./components/Switch/Switch";
|
|
128
128
|
export { TabBackground, TabGroupSize as TabGroupSize1, TabGroupWidth } from "./components/TabGroup/TabGroup";
|
|
129
|
-
export { TableCaptionVisibility, TableCellActionDetail, TableColumn, TableGroup, TableGroupCollapseChangeDetail, TableGroupingState, TableLoadMoreDetail, TableLoadMoreMode, TableRow, TableRowActivateDetail, TableSelectionChangeDetail, TableSelectionMode, TableSortChangeDetail, TableSortState } from "./components/Table/table-types";
|
|
129
|
+
export { TableCaptionVisibility, TableCellActionDetail, TableColumn, TableGroup, TableGroupCollapseChangeDetail, TableGroupingState, TableGroupLoadMoreDetail, TableLoadMoreDetail, TableLoadMoreMode, TableRow, TableRowActivateDetail, TableSelectionChangeDetail, TableSelectionMode, TableSortChangeDetail, TableSortState } from "./components/Table/table-types";
|
|
130
130
|
export { TagContrast, TagIntent, TagSize } from "./components/Tag/Tag";
|
|
131
131
|
export { ToastActionEventDetail, ToastCloseEventDetail, ToastEventDetail, ToastManager, ToastSwipeDirection } from "./toast";
|
|
132
132
|
export { TooltipAlign, TooltipSide, TooltipSize } from "./components/Tooltip/Tooltip";
|
|
@@ -2825,6 +2825,35 @@ export namespace Components {
|
|
|
2825
2825
|
* @default false
|
|
2826
2826
|
*/
|
|
2827
2827
|
"fitViewport": boolean;
|
|
2828
|
+
/**
|
|
2829
|
+
* Supports the {group} placeholder.
|
|
2830
|
+
* @default 'All {group} results loaded'
|
|
2831
|
+
*/
|
|
2832
|
+
"groupEndOfResultsLabel": string;
|
|
2833
|
+
/**
|
|
2834
|
+
* Supports the {group} placeholder.
|
|
2835
|
+
* @default 'Load more {group} results'
|
|
2836
|
+
*/
|
|
2837
|
+
"groupLoadMoreAriaLabel": string;
|
|
2838
|
+
/**
|
|
2839
|
+
* @default 'Load more'
|
|
2840
|
+
*/
|
|
2841
|
+
"groupLoadMoreLabel": string;
|
|
2842
|
+
/**
|
|
2843
|
+
* Supports the {group} placeholder.
|
|
2844
|
+
* @default 'Loading more items'
|
|
2845
|
+
*/
|
|
2846
|
+
"groupLoadingMoreLabel": string;
|
|
2847
|
+
/**
|
|
2848
|
+
* Supports the {group} placeholder.
|
|
2849
|
+
* @default 'Retry loading {group} results'
|
|
2850
|
+
*/
|
|
2851
|
+
"groupRetryLabel": string;
|
|
2852
|
+
/**
|
|
2853
|
+
* Supports {group}, {count}, {loaded}, and {total} placeholders.
|
|
2854
|
+
* @default '{count} more rows loaded in {group}. {loaded} of {total} rows loaded.'
|
|
2855
|
+
*/
|
|
2856
|
+
"groupRowsLoadedLabel": string;
|
|
2828
2857
|
/**
|
|
2829
2858
|
* Controlled grouping column. Applications supply groups in their final fixed order.
|
|
2830
2859
|
* @default null
|
|
@@ -2877,7 +2906,7 @@ export namespace Components {
|
|
|
2877
2906
|
*/
|
|
2878
2907
|
"loadingMore": boolean;
|
|
2879
2908
|
/**
|
|
2880
|
-
* @default 'Loading more
|
|
2909
|
+
* @default 'Loading more items'
|
|
2881
2910
|
*/
|
|
2882
2911
|
"loadingMoreLabel": string;
|
|
2883
2912
|
/**
|
|
@@ -4329,6 +4358,7 @@ declare global {
|
|
|
4329
4358
|
"dsGroupCollapseChange": TableGroupCollapseChangeDetail;
|
|
4330
4359
|
"dsSelectionChange": TableSelectionChangeDetail;
|
|
4331
4360
|
"dsLoadMore": TableLoadMoreDetail;
|
|
4361
|
+
"dsGroupLoadMore": TableGroupLoadMoreDetail;
|
|
4332
4362
|
"dsCellAction": TableCellActionDetail;
|
|
4333
4363
|
"dsRowActivate": TableRowActivateDetail;
|
|
4334
4364
|
}
|
|
@@ -7455,6 +7485,35 @@ declare namespace LocalJSX {
|
|
|
7455
7485
|
* @default false
|
|
7456
7486
|
*/
|
|
7457
7487
|
"fitViewport"?: boolean;
|
|
7488
|
+
/**
|
|
7489
|
+
* Supports the {group} placeholder.
|
|
7490
|
+
* @default 'All {group} results loaded'
|
|
7491
|
+
*/
|
|
7492
|
+
"groupEndOfResultsLabel"?: string;
|
|
7493
|
+
/**
|
|
7494
|
+
* Supports the {group} placeholder.
|
|
7495
|
+
* @default 'Load more {group} results'
|
|
7496
|
+
*/
|
|
7497
|
+
"groupLoadMoreAriaLabel"?: string;
|
|
7498
|
+
/**
|
|
7499
|
+
* @default 'Load more'
|
|
7500
|
+
*/
|
|
7501
|
+
"groupLoadMoreLabel"?: string;
|
|
7502
|
+
/**
|
|
7503
|
+
* Supports the {group} placeholder.
|
|
7504
|
+
* @default 'Loading more items'
|
|
7505
|
+
*/
|
|
7506
|
+
"groupLoadingMoreLabel"?: string;
|
|
7507
|
+
/**
|
|
7508
|
+
* Supports the {group} placeholder.
|
|
7509
|
+
* @default 'Retry loading {group} results'
|
|
7510
|
+
*/
|
|
7511
|
+
"groupRetryLabel"?: string;
|
|
7512
|
+
/**
|
|
7513
|
+
* Supports {group}, {count}, {loaded}, and {total} placeholders.
|
|
7514
|
+
* @default '{count} more rows loaded in {group}. {loaded} of {total} rows loaded.'
|
|
7515
|
+
*/
|
|
7516
|
+
"groupRowsLoadedLabel"?: string;
|
|
7458
7517
|
/**
|
|
7459
7518
|
* Controlled grouping column. Applications supply groups in their final fixed order.
|
|
7460
7519
|
* @default null
|
|
@@ -7507,7 +7566,7 @@ declare namespace LocalJSX {
|
|
|
7507
7566
|
*/
|
|
7508
7567
|
"loadingMore"?: boolean;
|
|
7509
7568
|
/**
|
|
7510
|
-
* @default 'Loading more
|
|
7569
|
+
* @default 'Loading more items'
|
|
7511
7570
|
*/
|
|
7512
7571
|
"loadingMoreLabel"?: string;
|
|
7513
7572
|
/**
|
|
@@ -7516,6 +7575,7 @@ declare namespace LocalJSX {
|
|
|
7516
7575
|
"maxHeight"?: string | number | undefined;
|
|
7517
7576
|
"onDsCellAction"?: (event: DsTableCustomEvent<TableCellActionDetail>) => void;
|
|
7518
7577
|
"onDsGroupCollapseChange"?: (event: DsTableCustomEvent<TableGroupCollapseChangeDetail>) => void;
|
|
7578
|
+
"onDsGroupLoadMore"?: (event: DsTableCustomEvent<TableGroupLoadMoreDetail>) => void;
|
|
7519
7579
|
"onDsLoadMore"?: (event: DsTableCustomEvent<TableLoadMoreDetail>) => void;
|
|
7520
7580
|
"onDsRowActivate"?: (event: DsTableCustomEvent<TableRowActivateDetail>) => void;
|
|
7521
7581
|
"onDsSelectionChange"?: (event: DsTableCustomEvent<TableSelectionChangeDetail>) => void;
|
|
@@ -8487,6 +8547,12 @@ declare namespace LocalJSX {
|
|
|
8487
8547
|
"loadingMoreLabel": string;
|
|
8488
8548
|
"endOfResultsLabel": string;
|
|
8489
8549
|
"rowsLoadedLabel": string;
|
|
8550
|
+
"groupLoadMoreLabel": string;
|
|
8551
|
+
"groupLoadMoreAriaLabel": string;
|
|
8552
|
+
"groupRetryLabel": string;
|
|
8553
|
+
"groupLoadingMoreLabel": string;
|
|
8554
|
+
"groupEndOfResultsLabel": string;
|
|
8555
|
+
"groupRowsLoadedLabel": string;
|
|
8490
8556
|
}
|
|
8491
8557
|
interface DsTagAttributes {
|
|
8492
8558
|
"label": string;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ds-mo/ui",
|
|
3
|
-
"version": "14.
|
|
3
|
+
"version": "14.2.0",
|
|
4
4
|
"description": "CompoMo — composable web components styled with TokoMo design tokens",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"web-components",
|
|
@@ -139,7 +139,7 @@
|
|
|
139
139
|
"@angular/forms": "^22.0.7",
|
|
140
140
|
"@axe-core/playwright": "^4.12.1",
|
|
141
141
|
"@ds-mo/icons": "^7.0.0",
|
|
142
|
-
"@ds-mo/tokens": "^6.
|
|
142
|
+
"@ds-mo/tokens": "^6.5.0",
|
|
143
143
|
"@eslint/js": "^10.0.1",
|
|
144
144
|
"@fontsource-variable/inter": "^5.3.0",
|
|
145
145
|
"@fontsource/fira-code": "^5.3.0",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["tabGroupCss","TabGroup","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","value","tabs","size","width","ariaLabel","selectableTabs","getSelectableTabs","focusableTabId","some","tab","id","isInactive","find","selectTab","options","dsChange","emit","focus","focusTab","btn","el","querySelector","preventScroll","onValueChange","next","prev","undefined","requestAnimationFrame","active","document","activeElement","contains","activeId","getAttribute","focusId","nextTab","blur","findEnabled","from","step","len","length","n","i","handleKeyDown","e","focusedId","target","closest","dataset","currentIdx","findIndex","t","nextIdx","key","first","lastEnabled","reverse","preventDefault","getBgClass","background","render","bgClass","h","Host","class","controlWidthClass","role","ariaLabelledby","map","index","isTabDivider","isSelected","variant","showIcon","showLabel","emphasizeLabel","type","label","panelId","disabled","tabIndex","onClick","tab__content","dot","name","icon","color","as","CONTROL_TEXT_VARIANT","emphasis","hasRing"],"sources":["src/wc/components/TabGroup/TabGroup.css?tag=ds-tab-group&encapsulation=scoped","src/wc/components/TabGroup/TabGroup.tsx"],"sourcesContent":["@import '../../utils/control-density.css';\n@import '../../utils/control-density-inset.css';\n@import '../../utils/control-width.css';\n@import '../../utils/focus-ring.css';\n@import '../../utils/interaction-fill.css';\n@import '../../utils/control-inactive.css';\n\n:host {\n display: block;\n --_tab-group-surface-border: var(--color-border-tertiary);\n --_tab-group-divider: var(--color-border-secondary);\n}\n\n:host(.tab-group-host--on-medium) {\n --_tab-group-surface-border: var(--color-border-on-medium-background-tertiary);\n --_tab-group-divider: var(--color-border-on-medium-background-secondary);\n}\n\n:host(.tab-group-host--on-bold) {\n --_tab-group-surface-border: var(--color-border-on-bold-background-tertiary);\n --_tab-group-divider: var(--color-border-on-bold-background-secondary);\n}\n\n:host(.tab-group-host--on-strong) {\n --_tab-group-surface-border: var(--color-border-on-strong-background-tertiary);\n --_tab-group-divider: var(--color-border-on-strong-background-secondary);\n}\n\n:host(.tab-group-host--on-translucent) {\n --_tab-group-surface-border: var(--color-translucent-border-tertiary);\n --_tab-group-divider: var(--color-translucent-border-secondary);\n}\n\n:host(.tab-group-host--on-inverted) {\n --_tab-group-surface-border: var(--color-inverted-border-tertiary);\n --_tab-group-divider: var(--color-inverted-border-secondary);\n}\n\n:host(.tab-group-host--on-media) {\n --_tab-group-surface-border: var(--color-media-border-tertiary);\n --_tab-group-divider: var(--color-media-border-secondary);\n}\n\n:host(.tab-group-host--on-always-dark) {\n --_tab-group-surface-border: var(--color-always-dark-border-tertiary);\n --_tab-group-divider: var(--color-always-dark-border-secondary);\n}\n\n.tab-list {\n display: flex;\n align-items: center;\n gap: var(--ds-control-gap);\n position: relative;\n width: max-content;\n max-width: 100%;\n height: var(--ds-control-height);\n padding: calc(var(--dimension-space-025) - var(--dimension-stroke-width-012));\n background-color: var(--color-background-secondary);\n border: var(--dimension-stroke-width-012) solid var(--_tab-group-surface-border);\n border-radius: var(--dimension-radius-half);\n box-sizing: border-box;\n}\n\n:host(.ds-control-width--fill) .tab-list {\n width: 100%;\n}\n\n:host(.tab-group-host--surface) .tab-list {\n background-color: transparent;\n}\n\n.tab {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--ds-control-gap);\n padding: 0 var(--ds-control-padding-inline);\n background-color: transparent;\n border: none;\n border-radius: var(--dimension-radius-half);\n cursor: default;\n -webkit-user-select: none;\n user-select: none;\n color: var(--color-foreground-secondary);\n transition: color var(--effect-motion-short-2);\n flex-shrink: 0;\n height: var(--ds-control-height);\n min-width: var(--ds-control-height);\n box-sizing: border-box;\n --_dot: var(--color-foreground-bold-brand);\n /* Hover/press: `.ds-interaction-fill` fills cover the complete segment. */\n}\n\n:host(.ds-control-width--fill) .tab {\n flex: 1 1 0;\n min-width: 0;\n overflow: hidden;\n}\n\n:host(.ds-control-width--fill) .tab__content {\n max-width: 100%;\n overflow: hidden;\n}\n\n:host(.ds-control-width--fill) .tab__label {\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.tab--selected {\n color: var(--color-foreground-primary);\n background-color: var(--color-background-primary);\n /* Inset stroke on interaction-fill ::after — stays above hover wash. */\n --ds-interaction-border-width: var(--dimension-stroke-width-012);\n --ds-interaction-border-color: var(--_tab-group-surface-border);\n}\n\n:host(.tab-group-host--surface) .tab--selected {\n background-color: var(--ds-interaction-active);\n}\n\n/* Preserve text contrast on the mid-tone bold surface in both color schemes. */\n:host(.tab-group-host--on-bold) .tab--selected {\n background-color: var(--color-interaction-active);\n}\n\n.tab--selected:not(.ds-interaction-fill) {\n box-shadow: inset 0 0 0 var(--ds-interaction-border-width) var(--ds-interaction-border-color);\n}\n\n/* Inactive: `.ds-control-inactive` (50% opacity) — applied via class in TSX. */\n\n.tab__content {\n position: relative;\n z-index: 2;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--ds-control-gap);\n min-width: 0;\n}\n\n.tab__content--dot {\n padding-right: var(--dimension-space-050);\n}\n\n.tab__label {\n padding: 0 var(--ds-control-label-inset);\n white-space: nowrap;\n}\n\n.tab__icon {\n flex-shrink: 0;\n}\n\n.tab__dot {\n position: absolute;\n top: 0;\n right: 0;\n z-index: 2;\n pointer-events: none;\n}\n\n.on-medium {\n color: var(--color-foreground-on-medium-background-secondary);\n}\n\n.on-medium.tab--selected { color: var(--color-foreground-on-medium-background-primary); }\n\n.on-bold {\n color: var(--color-foreground-on-bold-background-secondary);\n}\n\n.on-bold.tab--selected { color: var(--color-foreground-on-bold-background-primary); }\n\n.on-strong {\n color: var(--color-foreground-on-strong-background-secondary);\n}\n\n.on-strong.tab--selected { color: var(--color-foreground-on-strong-background-primary); }\n\n.on-translucent { color: var(--color-translucent-foreground-secondary); }\n\n.on-translucent.tab--selected { color: var(--color-translucent-foreground-primary); }\n\n.on-inverted { color: var(--color-inverted-foreground-secondary); }\n\n.on-inverted.tab--selected { color: var(--color-inverted-foreground-primary); }\n\n.on-media { color: var(--color-media-foreground-secondary); }\n\n.on-media.tab--selected { color: var(--color-media-foreground-primary); }\n\n.on-always-dark {\n color: var(--color-always-dark-foreground-secondary);\n}\n\n.on-always-dark.tab--selected { color: var(--color-always-dark-foreground-primary); }\n\n.tab-divider {\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n width: var(--dimension-stroke-width-012);\n align-self: center;\n padding: 0;\n flex-shrink: 0;\n pointer-events: none;\n}\n\n.tab-divider__line {\n width: var(--dimension-stroke-width-012);\n height: var(--typography-lineheight-sm);\n flex-shrink: 0;\n background-color: var(--_tab-group-divider);\n}\n","import { Component, Prop, Event, EventEmitter, Element, Listen, Watch, h, Host } from '@stencil/core';\nimport { controlWidthClass, CONTROL_TEXT_VARIANT, type ControlWidth } from '../../utils';\nimport {\n getSelectableTabs,\n isTabDivider,\n type TabGroupItem,\n type TabItemTab,\n} from './tab-item-utils';\n\nexport type TabBackground =\n | 'faint'\n | 'medium'\n | 'bold'\n | 'strong'\n | 'translucent'\n | 'inverted'\n | 'media'\n | 'always-dark';\n\nexport type TabGroupSize = 'sm' | 'md' | 'lg';\nexport type TabGroupWidth = ControlWidth;\n\n@Component({\n tag: 'ds-tab-group',\n styleUrl: 'TabGroup.css',\n scoped: true,\n})\nexport class TabGroup {\n @Element() el!: HTMLElement;\n\n @Prop({ mutable: true }) value: string = '';\n @Prop() tabs: TabGroupItem[] = [];\n /** Control density: 24px small, 32px medium, or 40px large track. */\n @Prop() size: TabGroupSize = 'md';\n /** Width fit — hug content (default) or fill the parent with equal-width segments. */\n @Prop() width: TabGroupWidth = 'hug';\n @Prop() background: TabBackground | undefined;\n @Prop({ attribute: 'aria-label' }) ariaLabel: string | null = null;\n @Prop({ attribute: 'aria-labelledby' }) ariaLabelledby: string | undefined;\n\n @Event() dsChange!: EventEmitter<string>;\n\n private get selectableTabs(): TabItemTab[] {\n return getSelectableTabs(this.tabs);\n }\n\n private get focusableTabId(): string {\n return this.selectableTabs.some(tab => tab.id === this.value && !tab.isInactive)\n ? this.value\n : (this.selectableTabs.find(tab => !tab.isInactive)?.id ?? '');\n }\n\n private selectTab(id: string, options?: { focus?: boolean }) {\n this.value = id;\n this.dsChange.emit(id);\n if (options?.focus !== false) {\n this.focusTab(id);\n }\n }\n\n private focusTab(id: string) {\n const btn = this.el.querySelector(`[data-tab-id=\"${id}\"]`) as HTMLElement | null;\n btn?.focus({ preventScroll: true });\n }\n\n /** Keep focus on the selected tab when value changes externally (e.g. BarNav menu). */\n @Watch('value')\n onValueChange(next: string, prev: string | undefined) {\n if (prev === undefined || next === prev) return;\n\n requestAnimationFrame(() => {\n const active = document.activeElement as HTMLElement | null;\n if (!active || !this.el.contains(active)) return;\n\n const activeId = active.getAttribute('data-tab-id');\n if (activeId === next) return;\n\n const focusId = this.selectableTabs.some(tab => tab.id === next && !tab.isInactive)\n ? next\n : this.focusableTabId;\n const nextTab = this.el.querySelector(`[data-tab-id=\"${focusId}\"]`) as HTMLElement | null;\n if (nextTab) {\n nextTab.focus({ preventScroll: true });\n } else {\n active.blur();\n }\n });\n }\n\n /**\n * Find the next non-inactive tab index relative to `from`, stepping by `step`.\n * Returns `from` unchanged if no other enabled tab exists.\n */\n private findEnabled(from: number, step: 1 | -1): number {\n const tabs = this.selectableTabs;\n const len = tabs.length;\n for (let n = 0; n < len; n++) {\n const i = (from + step * (n + 1) + len * (n + 1)) % len;\n if (!tabs[i]?.isInactive) return i;\n }\n return from;\n }\n\n @Listen('keydown')\n handleKeyDown(e: KeyboardEvent) {\n const tabs = this.selectableTabs;\n if (!tabs.length) return;\n\n const focusedId = (e.target as Element | null)?.closest<HTMLElement>('[data-tab-id]')?.dataset['tabId'];\n const currentIdx = tabs.findIndex(t => t.id === (focusedId ?? this.focusableTabId));\n\n let nextIdx: number | null = null;\n\n if (e.key === 'ArrowRight') {\n nextIdx = this.findEnabled(currentIdx, 1);\n } else if (e.key === 'ArrowLeft') {\n nextIdx = this.findEnabled(currentIdx, -1);\n }\n\n if (e.key === 'Home') {\n const first = tabs.findIndex(t => !t.isInactive);\n nextIdx = first === -1 ? null : first;\n } else if (e.key === 'End') {\n const lastEnabled = [...tabs].reverse().findIndex(t => !t.isInactive);\n nextIdx = lastEnabled === -1 ? null : tabs.length - 1 - lastEnabled;\n }\n\n if (nextIdx !== null) {\n e.preventDefault();\n const next = tabs[nextIdx];\n this.selectTab(next.id);\n }\n }\n\n private getBgClass(): string {\n if (!this.background) return '';\n if (this.background === 'always-dark') return 'on-always-dark';\n return `on-${this.background}`;\n }\n\n render() {\n const bgClass = this.getBgClass();\n const focusableTabId = this.focusableTabId;\n\n return (\n <Host\n class={{\n 'tab-group-host': true,\n [`tab-group-host--${this.size}`]: true,\n [`ds-control--${this.size}`]: true,\n 'tab-group-host--surface': !!bgClass,\n [`tab-group-host--${bgClass}`]: !!bgClass,\n ...controlWidthClass(this.width),\n }}\n >\n <div\n role=\"tablist\"\n class=\"tab-list\"\n aria-label={this.ariaLabel}\n aria-labelledby={this.ariaLabelledby}\n >\n {this.tabs.map((tab, index) => {\n if (isTabDivider(tab)) {\n return (\n <div\n key={`divider-${index}`}\n class=\"tab-divider\"\n aria-hidden=\"true\"\n >\n <div class=\"tab-divider__line\" />\n </div>\n );\n }\n\n const isSelected = tab.id === this.value;\n const variant = tab.variant ?? 'label';\n const showIcon = variant === 'icon' || variant === 'icon-label';\n const showLabel = variant === 'label' || variant === 'icon-label';\n const emphasizeLabel = isSelected && !bgClass;\n return (\n <button\n key={tab.id}\n type=\"button\"\n role=\"tab\"\n data-tab-id={tab.id}\n class={{\n tab: true,\n 'tab--selected': isSelected,\n [`ds-control--${this.size}`]: true,\n 'ds-control--inset': true,\n 'ds-focus-ring-inset': true,\n 'ds-interaction-fill': !tab.isInactive,\n 'ds-interaction-fill--on-faint': bgClass === 'on-faint',\n 'ds-interaction-fill--on-medium': bgClass === 'on-medium',\n 'ds-interaction-fill--on-bold': bgClass === 'on-bold',\n 'ds-interaction-fill--on-strong': bgClass === 'on-strong',\n 'ds-interaction-fill--on-translucent': bgClass === 'on-translucent',\n 'ds-interaction-fill--on-inverted': bgClass === 'on-inverted',\n 'ds-interaction-fill--on-media': bgClass === 'on-media',\n 'ds-interaction-fill--on-always-dark': bgClass === 'on-always-dark',\n 'ds-control-inactive': !!tab.isInactive,\n [bgClass]: !!bgClass,\n }}\n aria-label={variant === 'icon' ? tab.label : undefined}\n aria-selected={isSelected}\n aria-disabled={tab.isInactive ? 'true' : undefined}\n aria-controls={tab.panelId ?? undefined}\n disabled={tab.isInactive}\n tabIndex={tab.id === focusableTabId ? 0 : -1}\n onClick={() => !tab.isInactive && this.selectTab(tab.id)}\n >\n <span class={{\n tab__content: true,\n [`tab__content--${variant}`]: true,\n 'tab__content--dot': !!tab.dot,\n }}>\n {showIcon && (\n <ds-icon\n class=\"tab__icon\"\n name={tab.icon}\n size={this.size}\n color=\"inherit\"\n />\n )}\n {showLabel && (\n <ds-text\n class=\"tab__label\"\n as=\"span\"\n variant={CONTROL_TEXT_VARIANT[this.size]}\n emphasis={emphasizeLabel}\n color=\"inherit\"\n >\n {tab.label}\n </ds-text>\n )}\n {tab.dot && (\n <ds-badge\n class=\"tab__dot\"\n variant=\"dot\"\n hasRing={false}\n label=\"\"\n aria-hidden=\"true\"\n />\n )}\n </span>\n </button>\n );\n })}\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{p as s,H as e,c as t,h as o,a as i,t as l}from"./index.js";import{o as a,a as n,r,b as h,d}from"./p-c9QiNOc7.js";import{i as c,r as m}from"./p-DNpE0RBz.js";import{d as u}from"./p-D8nnhQNJ.js";import{d as b}from"./p-CTTDiW33.js";import{d as p}from"./p-BFfLvMZd.js";import{d as f}from"./p-Ca-I2UnB.js";import{d as g}from"./p-DJ_FsLCc.js";import{d as v}from"./p-CrjsT3s7.js";import{d as k}from"./p-CRjpqqAI.js";import{d as w}from"./p-BnPcWBA8.js";import{d as _}from"./p-BDCrM8-1.js";import{d as C}from"./p-BOCrvs-v.js";import{d as y}from"./p-D4bL9H8v.js";import{d as j}from"./p-jMCRaxQW.js";import{d as E}from"./p-DZFilC--.js";import{d as x}from"./p-CtSxm6PI.js";const D=()=>`.sc-ds-shell-tools-h{display:block;min-width:0;min-height:0;height:100%;background:transparent}[responsive-mode='mobile'].sc-ds-shell-tools-h{width:100%;background:var(--color-background-primary)}.shell-tools__desktop.sc-ds-shell-tools,.shell-tools__desktop.sc-ds-shell-tools ds-panel-tools.sc-ds-shell-tools,.shell-tools__mobile.sc-ds-shell-tools{display:block;min-width:0;min-height:0;height:100%}.shell-tools__mobile.sc-ds-shell-tools{display:grid;grid-template-rows:auto minmax(0, 1fr);background:var(--color-background-primary)}.shell-tools__mobile-header.sc-ds-shell-tools{grid-row:1}.shell-tools__mobile-body.sc-ds-shell-tools,.shell-tools__view.sc-ds-shell-tools{min-width:0;min-height:0;height:100%}.shell-tools__mobile-body.sc-ds-shell-tools{grid-row:2;overflow:hidden}.shell-tools__view.sc-ds-shell-tools{overflow:auto;overscroll-behavior:contain}.shell-tools__view[hidden].sc-ds-shell-tools{display:none}.shell-tools__view.sc-ds-shell-tools-s>*,.shell-tools__view .sc-ds-shell-tools-s>*{min-height:0}`;const L=s(class s extends e{constructor(s){super();if(s!==false){this.__registerHost()}this.dsToolChange=t(this,"dsToolChange");this.dsPresentationChange=t(this,"dsPresentationChange");this.dsHeaderBack=t(this,"dsHeaderBack");this.dsHeaderAction=t(this,"dsHeaderAction");this.responsiveMode="desktop";this.open=false;this.activeTool="";this.presentation="drawer";this.fullscreenHeaderMode="shared";this.items=[];this.headers={};this.storageKey="";this.toolsLabel="Tools";this.toolShortcutsLabel="Tool shortcuts";this.inboxLabel="Inbox";this.inboxNavigationLabel="Inbox sections";this.panelToolsEl=null;this.selectInboxTool=s=>{const e=s.detail;if(!this.availableInboxTools.includes(e)||e===this.mobileActiveTool)return;this.open=true;this.activeTool=e;this.dsToolChange.emit({id:e,selected:true})};this.handlePanelToolChange=s=>{this.activeTool=s.detail.id;this.open=s.detail.selected};this.handlePanelPresentationChange=s=>{this.presentation=s.detail.presentation};this.handleMobileHeaderAction=(s,e,t)=>{t.stopPropagation();this.dsHeaderAction.emit({tool:s,id:e})}}presentationChanged(s,e){if(s===e)return;if(this.panelToolsEl&&this.panelToolsEl.getAttribute("presentation")!==s){this.panelToolsEl.setAttribute("presentation",s)}}get resolvedItems(){return this.items??[]}get availableInboxTools(){return this.resolvedItems.filter((s=>!s.isInactive&&(s.mobileDestination==="inbox"||c(s.id)))).map((s=>s.id))}get mobileViewOrder(){return a(this.resolvedItems).map((s=>s.id))}toolLabel(s){const e=this.resolvedItems.find((e=>e.id===s));return e?.label??e?.ariaLabel??n[s]??s}get mobileActiveTool(){const s=this.resolvedItems.find((s=>s.id===this.activeTool));const e=s?.mobileDestination==="inbox"||c(this.activeTool);if(!e)return this.activeTool;return m(this.activeTool,this.availableInboxTools)}componentWillLoad(){this.reconcileAvailability()}handleItemsChange(){this.reconcileAvailability()}reconcileAvailability(){const s=r(this.resolvedItems,this.open,this.activeTool);this.open=s.open;this.activeTool=s.activeTool}resolvedHeaders(){return this.headers??{}}activeHeader(s){return this.resolvedHeaders()[s]??{}}activateMobileTool(s){const e=this.resolvedItems.find((e=>e.id===s));if(!e||e.isInactive)return;const t=h(this.open,this.activeTool,s);this.open=t.open;this.activeTool=t.activeTool;this.dsToolChange.emit({id:s,selected:t.selected})}async activateTool(s){if(this.responsiveMode!=="mobile"){await(this.panelToolsEl?.activateTool(s));return}this.activateMobileTool(s)}async closeDrawer(){if(this.responsiveMode!=="mobile"){await(this.panelToolsEl?.closeDrawer());return}if(!this.open)return;const s=this.activeTool;this.open=false;if(s)this.dsToolChange.emit({id:s,selected:false})}async focusHeaderAction(s){if(this.responsiveMode!=="mobile"){await(this.panelToolsEl?.focusHeaderAction(s));return}const e=this.el.querySelector(`[data-header-action-id="${CSS.escape(s)}"]`);await(e?.setFocus?.())}renderForwardedSlots(){return this.mobileViewOrder.flatMap((s=>[o("slot",{name:s,slot:s}),o("slot",{name:`${s}-view`,slot:`${s}-view`})]))}renderDesktop(){return o("div",{class:"shell-tools__desktop"},o("ds-panel-tools",{open:this.open,activeTool:this.activeTool,presentation:this.presentation,fullscreenHeaderMode:this.fullscreenHeaderMode,items:this.resolvedItems,headers:this.resolvedHeaders(),storageKey:this.storageKey,toolsLabel:this.toolsLabel,toolShortcutsLabel:this.toolShortcutsLabel,ref:s=>{this.panelToolsEl=s},onDsToolChange:this.handlePanelToolChange,onDsPresentationChange:this.handlePanelPresentationChange},this.renderForwardedSlots()))}renderMobileHeader(s){const e=this.activeHeader(s);const t=e.title?.trim();const i=t||this.toolLabel(s);const l=(e.actions??[]).filter((s=>s.id!=="fullscreen"));const a=c(s)&&!e.showBack;const n=a?this.availableInboxTools.map((s=>{const e=this.resolvedItems.find((e=>e.id===s));return{id:s,label:this.toolLabel(s),variant:"label",dot:e?.dot}})):[];return o("ds-mobile-header",{class:"shell-tools__mobile-header",heading:i,headingLevel:"h2",sections:n,value:s,sectionsAriaLabel:this.inboxNavigationLabel,sectionsPresentation:a?"segmented":"switcher",sectionsSize:"lg",onDsSectionChange:this.selectInboxTool},e.showBack?o("ds-tooltip",{slot:"leading",label:e.backAriaLabel||"Back",side:"bottom",size:"sm"},o("ds-button-unfilled",{variant:"icon",icon:e.backIcon||"ChevronLeft",size:"md","aria-label":e.backAriaLabel||"Back",activeFill:false,hasBorder:false,onDsClick:()=>this.dsHeaderBack.emit({tool:s})})):null,l.map((e=>o("ds-tooltip",{slot:"trailing",key:e.id,label:e.ariaLabel,side:"bottom",size:"sm"},o("ds-button-unfilled",{id:e.triggerId||undefined,"data-header-action-id":e.id,variant:"icon",icon:e.icon,size:"md","aria-label":e.ariaLabel,haspopup:e.haspopup,controls:e.controls,expanded:e.expanded,pressed:e.pressed,isInactive:e.isInactive,activeFill:false,hasBorder:false,onDsClick:t=>this.handleMobileHeaderAction(s,e.id,t)})))))}renderMobile(){const s=this.mobileActiveTool;return o("div",{class:"shell-tools__mobile","aria-hidden":this.open&&s?undefined:"true",inert:this.open&&s?undefined:true},s?this.renderMobileHeader(s):null,o("div",{class:"shell-tools__mobile-body"},this.mobileViewOrder.map((e=>{const t=this.open&&e===s;return o("div",{class:{"shell-tools__view":true,"shell-tools__view--active":t},hidden:!t,"aria-hidden":t?undefined:"true",inert:t?undefined:true},o("slot",{name:`${e}-view`},o("slot",{name:e})))}))))}render(){const s=this.responsiveMode==="mobile";return o(i,{key:"761ba5e3e8b49122d348f8a242a7477a98b08334",role:s?this.presentation==="fullscreen"?"dialog":"complementary":undefined,"aria-modal":s&&this.presentation==="fullscreen"?"true":undefined,"aria-label":s?this.toolsLabel:undefined},s?this.renderMobile():this.renderDesktop())}get el(){return this}static get watchers(){return{presentation:[{presentationChanged:0}],items:[{handleItemsChange:0}]}}static get style(){return D()}},[262,"ds-shell-tools",{responsiveMode:[513,"responsive-mode"],open:[1540],activeTool:[1537,"active-tool"],presentation:[1537],fullscreenHeaderMode:[513,"fullscreen-header-mode"],items:[16],headers:[16],storageKey:[1,"storage-key"],toolsLabel:[1,"tools-label"],toolShortcutsLabel:[1,"tool-shortcuts-label"],inboxLabel:[1,"inbox-label"],inboxNavigationLabel:[1,"inbox-navigation-label"],activateTool:[64],closeDrawer:[64],focusHeaderAction:[64]},undefined,{presentation:[{presentationChanged:0}],items:[{handleItemsChange:0}]}]);function T(){if(typeof customElements==="undefined"){return}const s=["ds-shell-tools","ds-badge","ds-button-unfilled","ds-icon","ds-loader","ds-menu","ds-mobile-header","ds-mobile-section-switcher","ds-panel-tool-header","ds-panel-tools","ds-swatch-picker","ds-switch","ds-tab-group","ds-tag","ds-text","ds-tooltip"];s.forEach((s=>{switch(s){case"ds-shell-tools":if(!customElements.get(l(s))){customElements.define(l(s),L)}break;case"ds-badge":if(!customElements.get(l(s))){u()}break;case"ds-button-unfilled":if(!customElements.get(l(s))){b()}break;case"ds-icon":if(!customElements.get(l(s))){p()}break;case"ds-loader":if(!customElements.get(l(s))){f()}break;case"ds-menu":if(!customElements.get(l(s))){g()}break;case"ds-mobile-header":if(!customElements.get(l(s))){v()}break;case"ds-mobile-section-switcher":if(!customElements.get(l(s))){k()}break;case"ds-panel-tool-header":if(!customElements.get(l(s))){w()}break;case"ds-panel-tools":if(!customElements.get(l(s))){d()}break;case"ds-swatch-picker":if(!customElements.get(l(s))){_()}break;case"ds-switch":if(!customElements.get(l(s))){C()}break;case"ds-tab-group":if(!customElements.get(l(s))){y()}break;case"ds-tag":if(!customElements.get(l(s))){j()}break;case"ds-text":if(!customElements.get(l(s))){E()}break;case"ds-tooltip":if(!customElements.get(l(s))){x()}break}}))}T();export{L as S,T as d};
|
|
2
|
-
//# sourceMappingURL=p-Dly2SR-q.js.map
|
|
File without changes
|
|
File without changes
|