@ds-mo/ui 13.11.1 → 13.12.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 +288 -10
- package/dist/angular/ds-mobile-header.d.ts +1 -1
- package/dist/angular/ds-mobile-header.js +3 -3
- package/dist/angular/ds-tab-group.d.ts +1 -1
- package/dist/angular/ds-tab-group.js +3 -3
- package/dist/angular/ds-table.d.ts +28 -0
- package/dist/angular/ds-table.js +54 -0
- package/dist/angular/ds-tag.d.ts +1 -1
- package/dist/angular/ds-tag.js +3 -3
- package/dist/angular/index.d.ts +1 -1
- package/dist/angular/index.js +1 -0
- package/dist/angular/proxies.d.ts +1 -0
- package/dist/angular/proxies.js +1 -0
- package/dist/components/ds-bar-nav.js +1 -1
- package/dist/components/ds-bar-title.js +1 -1
- package/dist/components/ds-bar-workflow.js +1 -1
- package/dist/components/ds-bar-workflow.js.map +1 -1
- package/dist/components/ds-card-overview.js +1 -1
- package/dist/components/ds-menu.js +1 -1
- package/dist/components/ds-mobile-header.js +1 -1
- package/dist/components/ds-mobile-section-switcher.js +1 -1
- package/dist/components/ds-mobile-sheet-nav.js +1 -1
- package/dist/components/ds-modal.js +1 -1
- package/dist/components/ds-panel-sub-nav.js +1 -1
- package/dist/components/ds-radio.js +1 -1
- package/dist/components/ds-scroll-overlay.js +1 -1
- package/dist/components/ds-scroll-overlay.js.map +1 -1
- package/dist/components/ds-select.js +1 -1
- package/dist/components/ds-shell-app.js +1 -1
- package/dist/components/ds-shell-app.js.map +1 -1
- package/dist/components/ds-shell-tools.js +1 -1
- package/dist/components/ds-skeleton.js +1 -1
- package/dist/components/ds-slider.js +1 -1
- package/dist/components/ds-switch.js +1 -1
- package/dist/components/ds-tab-group.js +1 -1
- package/dist/components/ds-table.d.ts +11 -0
- package/dist/components/ds-table.js +2 -0
- package/dist/components/ds-table.js.map +1 -0
- package/dist/components/ds-tag.js +1 -1
- package/dist/components/ds-tag.js.map +1 -1
- package/dist/components/ds-toast.js +1 -1
- package/dist/components/ds-typing-indicator.js +1 -1
- package/dist/components/index.d.ts +30 -0
- package/dist/components/{p-BHb3Ws8e.js → p-BFXN4ioL.js} +2 -2
- package/dist/components/{p-DgglLVCj.js → p-BYre-ZDg.js} +2 -2
- package/dist/components/p-B_eqa09C.js +2 -0
- package/dist/components/p-B_eqa09C.js.map +1 -0
- package/dist/components/{p-BnGJrBPG.js → p-Bj7KrXzw.js} +2 -2
- package/dist/components/p-BxJurXEn.js +2 -0
- package/dist/components/p-BxJurXEn.js.map +1 -0
- package/dist/components/{p-Dg9qiMDa.js → p-C9StMCWg.js} +2 -2
- package/dist/components/p-CFNG0K3m.js +2 -0
- package/dist/components/p-CFNG0K3m.js.map +1 -0
- package/dist/components/{p-BQ7Nzx9A.js → p-Ch5yT3UA.js} +2 -2
- package/dist/components/{p-DJGdoPMG.js → p-DKftz0O8.js} +2 -2
- package/dist/components/p-DxygUurH.js +2 -0
- package/dist/components/p-DxygUurH.js.map +1 -0
- package/dist/components/{p-DCN04sgt.js → p-x9jO4lZ7.js} +2 -2
- package/dist/components/{p-DCN04sgt.js.map → p-x9jO4lZ7.js.map} +1 -1
- package/dist/docs/components.json +1547 -100
- package/dist/lib/components/MobileHeader/mobile-header-types.d.ts +3 -2
- package/dist/mcp-data/registry/mobile-header.json +48 -10
- package/dist/mcp-data/registry/mobile-sheet-nav.json +2 -2
- package/dist/mcp-data/registry/registry.json +290 -9
- package/dist/mcp-data/registry/shell-app.json +4 -2
- package/dist/mcp-data/registry/shell-tools.json +4 -4
- package/dist/mcp-data/registry/tab-group.json +22 -2
- package/dist/mcp-data/registry/table.json +758 -0
- package/dist/mcp-data/registry/tag.json +22 -3
- package/dist/react/components.d.ts +1 -0
- package/dist/react/components.js +1 -0
- package/dist/react/ds-table.d.ts +16 -0
- package/dist/react/ds-table.js +18 -0
- package/dist/styles/table.css +677 -0
- package/dist/types/components/MobileHeader/MobileHeader.d.ts +8 -3
- package/dist/types/components/MobileHeader/index.d.ts +1 -1
- package/dist/types/components/MobileHeader/mobile-header-types.d.ts +3 -2
- package/dist/types/components/ShellApp/ShellApp.d.ts +8 -0
- package/dist/types/components/TabGroup/TabGroup.d.ts +3 -0
- package/dist/types/components/Table/Table.d.ts +115 -0
- package/dist/types/components/Table/index.d.ts +2 -0
- package/dist/types/components/Table/table-model.d.ts +29 -0
- package/dist/types/components/Table/table-types.d.ts +178 -0
- package/dist/types/components/Tag/Tag.d.ts +2 -0
- package/dist/types/components.d.ts +393 -6
- package/package.json +3 -2
- package/dist/components/p-CVmtbj-6.js +0 -2
- package/dist/components/p-CVmtbj-6.js.map +0 -1
- package/dist/components/p-DW9p068S.js +0 -2
- package/dist/components/p-DW9p068S.js.map +0 -1
- package/dist/components/p-Xftomzsv.js +0 -2
- package/dist/components/p-Xftomzsv.js.map +0 -1
- /package/dist/components/{p-BHb3Ws8e.js.map → p-BFXN4ioL.js.map} +0 -0
- /package/dist/components/{p-DgglLVCj.js.map → p-BYre-ZDg.js.map} +0 -0
- /package/dist/components/{p-BnGJrBPG.js.map → p-Bj7KrXzw.js.map} +0 -0
- /package/dist/components/{p-Dg9qiMDa.js.map → p-C9StMCWg.js.map} +0 -0
- /package/dist/components/{p-BQ7Nzx9A.js.map → p-Ch5yT3UA.js.map} +0 -0
- /package/dist/components/{p-DJGdoPMG.js.map → p-DKftz0O8.js.map} +0 -0
|
@@ -40,8 +40,9 @@ import { MessageBubbleVariant } from "./components/MessageBubble/MessageBubble";
|
|
|
40
40
|
import { ButtonFilledIntent as ButtonFilledIntent1 } from "./components/ButtonFilled/ButtonFilled";
|
|
41
41
|
import { PanelNavGroup, PanelNavItem, PanelNavRouterMode, PanelNavUserActionDetail } from "./components/PanelNav/panel-nav-types";
|
|
42
42
|
import { MobileBarNavDestinationDetail } from "./components/MobileBarNav/mobile-bar-nav-types";
|
|
43
|
-
import { MobileHeaderHeadingLevel, MobileHeaderTone } from "./components/MobileHeader/mobile-header-types";
|
|
43
|
+
import { MobileHeaderHeadingLevel, MobileHeaderSectionsPresentation, MobileHeaderTone } from "./components/MobileHeader/mobile-header-types";
|
|
44
44
|
import { TabGroupItem, TabItem } from "./components/TabGroup/tab-item-utils";
|
|
45
|
+
import { TabGroupSize } from "./components/TabGroup/TabGroup";
|
|
45
46
|
import { ModalCloseDetail, ModalWidth } from "./components/Modal/Modal";
|
|
46
47
|
import { ChromeTransitionDetail } from "./shell/chrome-transition";
|
|
47
48
|
import { PanelSubNavItem } from "./components/PanelSubNav/panel-sub-nav-types";
|
|
@@ -59,7 +60,8 @@ import { ControlSize } from "./utils/control-text";
|
|
|
59
60
|
import { SliderOrientation, SliderSize, SliderThumbAlignment, SliderValue } from "./components/Slider/Slider";
|
|
60
61
|
import { SwatchPickerOption, SwatchPickerSection } from "./components/SwatchPicker/swatch-picker-types";
|
|
61
62
|
import { SwitchSize } from "./components/Switch/Switch";
|
|
62
|
-
import { TabBackground } from "./components/TabGroup/TabGroup";
|
|
63
|
+
import { TabBackground, TabGroupSize as TabGroupSize1 } from "./components/TabGroup/TabGroup";
|
|
64
|
+
import { TableCaptionVisibility, TableCellActionDetail, TableColumn, TableGroup, TableGroupingChangeDetail, TableGroupingState, TableLoadMoreDetail, TableLoadMoreMode, TableRow, TableSelectionChangeDetail, TableSelectionMode, TableSortChangeDetail, TableSortState } from "./components/Table/table-types";
|
|
63
65
|
import { TagContrast, TagIntent, TagSize } from "./components/Tag/Tag";
|
|
64
66
|
import { ToastActionEventDetail, ToastCloseEventDetail, ToastEventDetail, ToastManager, ToastSwipeDirection } from "./toast";
|
|
65
67
|
import { TooltipAlign, TooltipSide, TooltipSize } from "./components/Tooltip/Tooltip";
|
|
@@ -99,8 +101,9 @@ export { MessageBubbleVariant } from "./components/MessageBubble/MessageBubble";
|
|
|
99
101
|
export { ButtonFilledIntent as ButtonFilledIntent1 } from "./components/ButtonFilled/ButtonFilled";
|
|
100
102
|
export { PanelNavGroup, PanelNavItem, PanelNavRouterMode, PanelNavUserActionDetail } from "./components/PanelNav/panel-nav-types";
|
|
101
103
|
export { MobileBarNavDestinationDetail } from "./components/MobileBarNav/mobile-bar-nav-types";
|
|
102
|
-
export { MobileHeaderHeadingLevel, MobileHeaderTone } from "./components/MobileHeader/mobile-header-types";
|
|
104
|
+
export { MobileHeaderHeadingLevel, MobileHeaderSectionsPresentation, MobileHeaderTone } from "./components/MobileHeader/mobile-header-types";
|
|
103
105
|
export { TabGroupItem, TabItem } from "./components/TabGroup/tab-item-utils";
|
|
106
|
+
export { TabGroupSize } from "./components/TabGroup/TabGroup";
|
|
104
107
|
export { ModalCloseDetail, ModalWidth } from "./components/Modal/Modal";
|
|
105
108
|
export { ChromeTransitionDetail } from "./shell/chrome-transition";
|
|
106
109
|
export { PanelSubNavItem } from "./components/PanelSubNav/panel-sub-nav-types";
|
|
@@ -118,7 +121,8 @@ export { ControlSize } from "./utils/control-text";
|
|
|
118
121
|
export { SliderOrientation, SliderSize, SliderThumbAlignment, SliderValue } from "./components/Slider/Slider";
|
|
119
122
|
export { SwatchPickerOption, SwatchPickerSection } from "./components/SwatchPicker/swatch-picker-types";
|
|
120
123
|
export { SwitchSize } from "./components/Switch/Switch";
|
|
121
|
-
export { TabBackground } from "./components/TabGroup/TabGroup";
|
|
124
|
+
export { TabBackground, TabGroupSize as TabGroupSize1 } from "./components/TabGroup/TabGroup";
|
|
125
|
+
export { TableCaptionVisibility, TableCellActionDetail, TableColumn, TableGroup, TableGroupingChangeDetail, TableGroupingState, TableLoadMoreDetail, TableLoadMoreMode, TableRow, TableSelectionChangeDetail, TableSelectionMode, TableSortChangeDetail, TableSortState } from "./components/Table/table-types";
|
|
122
126
|
export { TagContrast, TagIntent, TagSize } from "./components/Tag/Tag";
|
|
123
127
|
export { ToastActionEventDetail, ToastCloseEventDetail, ToastEventDetail, ToastManager, ToastSwipeDirection } from "./toast";
|
|
124
128
|
export { TooltipAlign, TooltipSide, TooltipSize } from "./components/Tooltip/Tooltip";
|
|
@@ -1462,12 +1466,22 @@ export namespace Components {
|
|
|
1462
1466
|
* Controlled peer sections. Their selected label replaces the static title.
|
|
1463
1467
|
* @default []
|
|
1464
1468
|
*/
|
|
1465
|
-
"sections":
|
|
1469
|
+
"sections": TabGroupItem[];
|
|
1466
1470
|
/**
|
|
1467
1471
|
* Accessible name for the section chooser.
|
|
1468
1472
|
* @default 'Change page section'
|
|
1469
1473
|
*/
|
|
1470
1474
|
"sectionsAriaLabel": string;
|
|
1475
|
+
/**
|
|
1476
|
+
* Popup switcher or an inline segmented TabGroup for peer sections.
|
|
1477
|
+
* @default 'switcher'
|
|
1478
|
+
*/
|
|
1479
|
+
"sectionsPresentation": MobileHeaderSectionsPresentation;
|
|
1480
|
+
/**
|
|
1481
|
+
* Density for the segmented sections presentation.
|
|
1482
|
+
* @default 'md'
|
|
1483
|
+
*/
|
|
1484
|
+
"sectionsSize": TabGroupSize;
|
|
1471
1485
|
/**
|
|
1472
1486
|
* Controlled child sections within the selected page or detail screen.
|
|
1473
1487
|
* @default []
|
|
@@ -2475,6 +2489,11 @@ export namespace Components {
|
|
|
2475
2489
|
"ariaLabel": string | null;
|
|
2476
2490
|
"ariaLabelledby": string | undefined;
|
|
2477
2491
|
"background": TabBackground | undefined;
|
|
2492
|
+
/**
|
|
2493
|
+
* Control density: 24px small, 32px medium, or 40px large track.
|
|
2494
|
+
* @default 'md'
|
|
2495
|
+
*/
|
|
2496
|
+
"size": TabGroupSize1;
|
|
2478
2497
|
/**
|
|
2479
2498
|
* @default []
|
|
2480
2499
|
*/
|
|
@@ -2484,6 +2503,145 @@ export namespace Components {
|
|
|
2484
2503
|
*/
|
|
2485
2504
|
"value": string;
|
|
2486
2505
|
}
|
|
2506
|
+
interface DsTable {
|
|
2507
|
+
/**
|
|
2508
|
+
* Required accessible table name, rendered as a native caption.
|
|
2509
|
+
*/
|
|
2510
|
+
"caption": string;
|
|
2511
|
+
/**
|
|
2512
|
+
* @default 'hidden'
|
|
2513
|
+
*/
|
|
2514
|
+
"captionVisibility": TableCaptionVisibility;
|
|
2515
|
+
/**
|
|
2516
|
+
* Stable column definitions. Assign through JavaScript.
|
|
2517
|
+
* @default []
|
|
2518
|
+
*/
|
|
2519
|
+
"columns": TableColumn[];
|
|
2520
|
+
/**
|
|
2521
|
+
* @default 'No data is available.'
|
|
2522
|
+
*/
|
|
2523
|
+
"emptyBody": string;
|
|
2524
|
+
/**
|
|
2525
|
+
* @default 'Not available'
|
|
2526
|
+
*/
|
|
2527
|
+
"emptyCellLabel": string;
|
|
2528
|
+
/**
|
|
2529
|
+
* @default 'No results'
|
|
2530
|
+
*/
|
|
2531
|
+
"emptyHeading": string;
|
|
2532
|
+
/**
|
|
2533
|
+
* @default 'All results loaded'
|
|
2534
|
+
*/
|
|
2535
|
+
"endOfResultsLabel": string;
|
|
2536
|
+
/**
|
|
2537
|
+
* Initial error state. Existing rows stay visible; incremental failures use loadMoreError.
|
|
2538
|
+
* @default false
|
|
2539
|
+
*/
|
|
2540
|
+
"error": boolean;
|
|
2541
|
+
/**
|
|
2542
|
+
* @default 'The data could not be loaded.'
|
|
2543
|
+
*/
|
|
2544
|
+
"errorBody": string;
|
|
2545
|
+
/**
|
|
2546
|
+
* @default 'Unable to load data'
|
|
2547
|
+
*/
|
|
2548
|
+
"errorHeading": string;
|
|
2549
|
+
/**
|
|
2550
|
+
* Controlled grouping column and group-order direction.
|
|
2551
|
+
* @default null
|
|
2552
|
+
*/
|
|
2553
|
+
"grouping": TableGroupingState | null;
|
|
2554
|
+
/**
|
|
2555
|
+
* One level of application-owned grouped data. Assign through JavaScript.
|
|
2556
|
+
* @default []
|
|
2557
|
+
*/
|
|
2558
|
+
"groups": TableGroup[];
|
|
2559
|
+
/**
|
|
2560
|
+
* @default false
|
|
2561
|
+
*/
|
|
2562
|
+
"hasMore": boolean;
|
|
2563
|
+
/**
|
|
2564
|
+
* Enable application-owned incremental loading without pagination.
|
|
2565
|
+
* @default false
|
|
2566
|
+
*/
|
|
2567
|
+
"lazyLoading": boolean;
|
|
2568
|
+
/**
|
|
2569
|
+
* Reset key for a new query/group/sort dataset.
|
|
2570
|
+
* @default 'default'
|
|
2571
|
+
*/
|
|
2572
|
+
"loadIdentity": string | number;
|
|
2573
|
+
"loadMoreError": string | undefined;
|
|
2574
|
+
/**
|
|
2575
|
+
* @default 'Load more'
|
|
2576
|
+
*/
|
|
2577
|
+
"loadMoreLabel": string;
|
|
2578
|
+
/**
|
|
2579
|
+
* @default 'auto'
|
|
2580
|
+
*/
|
|
2581
|
+
"loadMoreMode": TableLoadMoreMode;
|
|
2582
|
+
/**
|
|
2583
|
+
* IntersectionObserver root margin in CSS pixels.
|
|
2584
|
+
* @default 0
|
|
2585
|
+
*/
|
|
2586
|
+
"loadMoreThreshold": number;
|
|
2587
|
+
/**
|
|
2588
|
+
* Initial loading state. Existing rows stay visible; incremental loading uses loadingMore.
|
|
2589
|
+
* @default false
|
|
2590
|
+
*/
|
|
2591
|
+
"loading": boolean;
|
|
2592
|
+
/**
|
|
2593
|
+
* @default false
|
|
2594
|
+
*/
|
|
2595
|
+
"loadingMore": boolean;
|
|
2596
|
+
/**
|
|
2597
|
+
* @default 'Loading more results'
|
|
2598
|
+
*/
|
|
2599
|
+
"loadingMoreLabel": string;
|
|
2600
|
+
/**
|
|
2601
|
+
* Maximum scroll-region height. Numbers resolve to CSS pixels.
|
|
2602
|
+
*/
|
|
2603
|
+
"maxHeight": string | number | undefined;
|
|
2604
|
+
/**
|
|
2605
|
+
* @default 'Retry'
|
|
2606
|
+
*/
|
|
2607
|
+
"retryLabel": string;
|
|
2608
|
+
/**
|
|
2609
|
+
* Ungrouped row data. Ignored while grouping is active. Assign through JavaScript.
|
|
2610
|
+
* @default []
|
|
2611
|
+
*/
|
|
2612
|
+
"rows": TableRow[];
|
|
2613
|
+
/**
|
|
2614
|
+
* Supports {count} and {total} placeholders.
|
|
2615
|
+
* @default '{count} more rows loaded. {total} rows loaded.'
|
|
2616
|
+
*/
|
|
2617
|
+
"rowsLoadedLabel": string;
|
|
2618
|
+
/**
|
|
2619
|
+
* Optional explicit label for the horizontal/vertical scroll region.
|
|
2620
|
+
*/
|
|
2621
|
+
"scrollLabel": string | undefined;
|
|
2622
|
+
/**
|
|
2623
|
+
* Controlled selected row identities. IDs outside the loaded rows are preserved.
|
|
2624
|
+
* @default []
|
|
2625
|
+
*/
|
|
2626
|
+
"selectedRowIds": string[];
|
|
2627
|
+
/**
|
|
2628
|
+
* @default 'none'
|
|
2629
|
+
*/
|
|
2630
|
+
"selectionMode": TableSelectionMode;
|
|
2631
|
+
/**
|
|
2632
|
+
* @default 5
|
|
2633
|
+
*/
|
|
2634
|
+
"skeletonRows": number;
|
|
2635
|
+
/**
|
|
2636
|
+
* Controlled member-row sort state.
|
|
2637
|
+
* @default null
|
|
2638
|
+
*/
|
|
2639
|
+
"sort": TableSortState | null;
|
|
2640
|
+
/**
|
|
2641
|
+
* @default false
|
|
2642
|
+
*/
|
|
2643
|
+
"stickyHeader": boolean;
|
|
2644
|
+
}
|
|
2487
2645
|
interface DsTag {
|
|
2488
2646
|
/**
|
|
2489
2647
|
* ID of the menu controlled by an interactive Tag.
|
|
@@ -2517,6 +2675,11 @@ export namespace Components {
|
|
|
2517
2675
|
* @default false
|
|
2518
2676
|
*/
|
|
2519
2677
|
"isInactive": boolean;
|
|
2678
|
+
/**
|
|
2679
|
+
* Use the reduced outer geometry when nested inside a control of the same size.
|
|
2680
|
+
* @default false
|
|
2681
|
+
*/
|
|
2682
|
+
"isInset": boolean;
|
|
2520
2683
|
"label": string;
|
|
2521
2684
|
"maxWidth": string | number | undefined;
|
|
2522
2685
|
/**
|
|
@@ -2871,6 +3034,10 @@ export interface DsTabGroupCustomEvent<T> extends CustomEvent<T> {
|
|
|
2871
3034
|
detail: T;
|
|
2872
3035
|
target: HTMLDsTabGroupElement;
|
|
2873
3036
|
}
|
|
3037
|
+
export interface DsTableCustomEvent<T> extends CustomEvent<T> {
|
|
3038
|
+
detail: T;
|
|
3039
|
+
target: HTMLDsTableElement;
|
|
3040
|
+
}
|
|
2874
3041
|
export interface DsTagCustomEvent<T> extends CustomEvent<T> {
|
|
2875
3042
|
detail: T;
|
|
2876
3043
|
target: HTMLDsTagElement;
|
|
@@ -3752,6 +3919,27 @@ declare global {
|
|
|
3752
3919
|
prototype: HTMLDsTabGroupElement;
|
|
3753
3920
|
new (): HTMLDsTabGroupElement;
|
|
3754
3921
|
};
|
|
3922
|
+
interface HTMLDsTableElementEventMap {
|
|
3923
|
+
"dsSortChange": TableSortChangeDetail;
|
|
3924
|
+
"dsGroupingChange": TableGroupingChangeDetail;
|
|
3925
|
+
"dsSelectionChange": TableSelectionChangeDetail;
|
|
3926
|
+
"dsLoadMore": TableLoadMoreDetail;
|
|
3927
|
+
"dsCellAction": TableCellActionDetail;
|
|
3928
|
+
}
|
|
3929
|
+
interface HTMLDsTableElement extends Components.DsTable, HTMLStencilElement {
|
|
3930
|
+
addEventListener<K extends keyof HTMLDsTableElementEventMap>(type: K, listener: (this: HTMLDsTableElement, ev: DsTableCustomEvent<HTMLDsTableElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
|
|
3931
|
+
addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
3932
|
+
addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
3933
|
+
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
|
|
3934
|
+
removeEventListener<K extends keyof HTMLDsTableElementEventMap>(type: K, listener: (this: HTMLDsTableElement, ev: DsTableCustomEvent<HTMLDsTableElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
|
|
3935
|
+
removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
3936
|
+
removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
3937
|
+
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
|
|
3938
|
+
}
|
|
3939
|
+
var HTMLDsTableElement: {
|
|
3940
|
+
prototype: HTMLDsTableElement;
|
|
3941
|
+
new (): HTMLDsTableElement;
|
|
3942
|
+
};
|
|
3755
3943
|
interface HTMLDsTagElementEventMap {
|
|
3756
3944
|
"dsClick": MouseEvent;
|
|
3757
3945
|
}
|
|
@@ -3892,6 +4080,7 @@ declare global {
|
|
|
3892
4080
|
"ds-swatch-picker": HTMLDsSwatchPickerElement;
|
|
3893
4081
|
"ds-switch": HTMLDsSwitchElement;
|
|
3894
4082
|
"ds-tab-group": HTMLDsTabGroupElement;
|
|
4083
|
+
"ds-table": HTMLDsTableElement;
|
|
3895
4084
|
"ds-tag": HTMLDsTagElement;
|
|
3896
4085
|
"ds-text": HTMLDsTextElement;
|
|
3897
4086
|
"ds-toast": HTMLDsToastElement;
|
|
@@ -5345,12 +5534,22 @@ declare namespace LocalJSX {
|
|
|
5345
5534
|
* Controlled peer sections. Their selected label replaces the static title.
|
|
5346
5535
|
* @default []
|
|
5347
5536
|
*/
|
|
5348
|
-
"sections"?:
|
|
5537
|
+
"sections"?: TabGroupItem[];
|
|
5349
5538
|
/**
|
|
5350
5539
|
* Accessible name for the section chooser.
|
|
5351
5540
|
* @default 'Change page section'
|
|
5352
5541
|
*/
|
|
5353
5542
|
"sectionsAriaLabel"?: string;
|
|
5543
|
+
/**
|
|
5544
|
+
* Popup switcher or an inline segmented TabGroup for peer sections.
|
|
5545
|
+
* @default 'switcher'
|
|
5546
|
+
*/
|
|
5547
|
+
"sectionsPresentation"?: MobileHeaderSectionsPresentation;
|
|
5548
|
+
/**
|
|
5549
|
+
* Density for the segmented sections presentation.
|
|
5550
|
+
* @default 'md'
|
|
5551
|
+
*/
|
|
5552
|
+
"sectionsSize"?: TabGroupSize;
|
|
5354
5553
|
/**
|
|
5355
5554
|
* Controlled child sections within the selected page or detail screen.
|
|
5356
5555
|
* @default []
|
|
@@ -6480,6 +6679,11 @@ declare namespace LocalJSX {
|
|
|
6480
6679
|
"ariaLabelledby"?: string | undefined;
|
|
6481
6680
|
"background"?: TabBackground | undefined;
|
|
6482
6681
|
"onDsChange"?: (event: DsTabGroupCustomEvent<string>) => void;
|
|
6682
|
+
/**
|
|
6683
|
+
* Control density: 24px small, 32px medium, or 40px large track.
|
|
6684
|
+
* @default 'md'
|
|
6685
|
+
*/
|
|
6686
|
+
"size"?: TabGroupSize1;
|
|
6483
6687
|
/**
|
|
6484
6688
|
* @default []
|
|
6485
6689
|
*/
|
|
@@ -6489,6 +6693,150 @@ declare namespace LocalJSX {
|
|
|
6489
6693
|
*/
|
|
6490
6694
|
"value"?: string;
|
|
6491
6695
|
}
|
|
6696
|
+
interface DsTable {
|
|
6697
|
+
/**
|
|
6698
|
+
* Required accessible table name, rendered as a native caption.
|
|
6699
|
+
*/
|
|
6700
|
+
"caption": string;
|
|
6701
|
+
/**
|
|
6702
|
+
* @default 'hidden'
|
|
6703
|
+
*/
|
|
6704
|
+
"captionVisibility"?: TableCaptionVisibility;
|
|
6705
|
+
/**
|
|
6706
|
+
* Stable column definitions. Assign through JavaScript.
|
|
6707
|
+
* @default []
|
|
6708
|
+
*/
|
|
6709
|
+
"columns"?: TableColumn[];
|
|
6710
|
+
/**
|
|
6711
|
+
* @default 'No data is available.'
|
|
6712
|
+
*/
|
|
6713
|
+
"emptyBody"?: string;
|
|
6714
|
+
/**
|
|
6715
|
+
* @default 'Not available'
|
|
6716
|
+
*/
|
|
6717
|
+
"emptyCellLabel"?: string;
|
|
6718
|
+
/**
|
|
6719
|
+
* @default 'No results'
|
|
6720
|
+
*/
|
|
6721
|
+
"emptyHeading"?: string;
|
|
6722
|
+
/**
|
|
6723
|
+
* @default 'All results loaded'
|
|
6724
|
+
*/
|
|
6725
|
+
"endOfResultsLabel"?: string;
|
|
6726
|
+
/**
|
|
6727
|
+
* Initial error state. Existing rows stay visible; incremental failures use loadMoreError.
|
|
6728
|
+
* @default false
|
|
6729
|
+
*/
|
|
6730
|
+
"error"?: boolean;
|
|
6731
|
+
/**
|
|
6732
|
+
* @default 'The data could not be loaded.'
|
|
6733
|
+
*/
|
|
6734
|
+
"errorBody"?: string;
|
|
6735
|
+
/**
|
|
6736
|
+
* @default 'Unable to load data'
|
|
6737
|
+
*/
|
|
6738
|
+
"errorHeading"?: string;
|
|
6739
|
+
/**
|
|
6740
|
+
* Controlled grouping column and group-order direction.
|
|
6741
|
+
* @default null
|
|
6742
|
+
*/
|
|
6743
|
+
"grouping"?: TableGroupingState | null;
|
|
6744
|
+
/**
|
|
6745
|
+
* One level of application-owned grouped data. Assign through JavaScript.
|
|
6746
|
+
* @default []
|
|
6747
|
+
*/
|
|
6748
|
+
"groups"?: TableGroup[];
|
|
6749
|
+
/**
|
|
6750
|
+
* @default false
|
|
6751
|
+
*/
|
|
6752
|
+
"hasMore"?: boolean;
|
|
6753
|
+
/**
|
|
6754
|
+
* Enable application-owned incremental loading without pagination.
|
|
6755
|
+
* @default false
|
|
6756
|
+
*/
|
|
6757
|
+
"lazyLoading"?: boolean;
|
|
6758
|
+
/**
|
|
6759
|
+
* Reset key for a new query/group/sort dataset.
|
|
6760
|
+
* @default 'default'
|
|
6761
|
+
*/
|
|
6762
|
+
"loadIdentity"?: string | number;
|
|
6763
|
+
"loadMoreError"?: string | undefined;
|
|
6764
|
+
/**
|
|
6765
|
+
* @default 'Load more'
|
|
6766
|
+
*/
|
|
6767
|
+
"loadMoreLabel"?: string;
|
|
6768
|
+
/**
|
|
6769
|
+
* @default 'auto'
|
|
6770
|
+
*/
|
|
6771
|
+
"loadMoreMode"?: TableLoadMoreMode;
|
|
6772
|
+
/**
|
|
6773
|
+
* IntersectionObserver root margin in CSS pixels.
|
|
6774
|
+
* @default 0
|
|
6775
|
+
*/
|
|
6776
|
+
"loadMoreThreshold"?: number;
|
|
6777
|
+
/**
|
|
6778
|
+
* Initial loading state. Existing rows stay visible; incremental loading uses loadingMore.
|
|
6779
|
+
* @default false
|
|
6780
|
+
*/
|
|
6781
|
+
"loading"?: boolean;
|
|
6782
|
+
/**
|
|
6783
|
+
* @default false
|
|
6784
|
+
*/
|
|
6785
|
+
"loadingMore"?: boolean;
|
|
6786
|
+
/**
|
|
6787
|
+
* @default 'Loading more results'
|
|
6788
|
+
*/
|
|
6789
|
+
"loadingMoreLabel"?: string;
|
|
6790
|
+
/**
|
|
6791
|
+
* Maximum scroll-region height. Numbers resolve to CSS pixels.
|
|
6792
|
+
*/
|
|
6793
|
+
"maxHeight"?: string | number | undefined;
|
|
6794
|
+
"onDsCellAction"?: (event: DsTableCustomEvent<TableCellActionDetail>) => void;
|
|
6795
|
+
"onDsGroupingChange"?: (event: DsTableCustomEvent<TableGroupingChangeDetail>) => void;
|
|
6796
|
+
"onDsLoadMore"?: (event: DsTableCustomEvent<TableLoadMoreDetail>) => void;
|
|
6797
|
+
"onDsSelectionChange"?: (event: DsTableCustomEvent<TableSelectionChangeDetail>) => void;
|
|
6798
|
+
"onDsSortChange"?: (event: DsTableCustomEvent<TableSortChangeDetail>) => void;
|
|
6799
|
+
/**
|
|
6800
|
+
* @default 'Retry'
|
|
6801
|
+
*/
|
|
6802
|
+
"retryLabel"?: string;
|
|
6803
|
+
/**
|
|
6804
|
+
* Ungrouped row data. Ignored while grouping is active. Assign through JavaScript.
|
|
6805
|
+
* @default []
|
|
6806
|
+
*/
|
|
6807
|
+
"rows"?: TableRow[];
|
|
6808
|
+
/**
|
|
6809
|
+
* Supports {count} and {total} placeholders.
|
|
6810
|
+
* @default '{count} more rows loaded. {total} rows loaded.'
|
|
6811
|
+
*/
|
|
6812
|
+
"rowsLoadedLabel"?: string;
|
|
6813
|
+
/**
|
|
6814
|
+
* Optional explicit label for the horizontal/vertical scroll region.
|
|
6815
|
+
*/
|
|
6816
|
+
"scrollLabel"?: string | undefined;
|
|
6817
|
+
/**
|
|
6818
|
+
* Controlled selected row identities. IDs outside the loaded rows are preserved.
|
|
6819
|
+
* @default []
|
|
6820
|
+
*/
|
|
6821
|
+
"selectedRowIds"?: string[];
|
|
6822
|
+
/**
|
|
6823
|
+
* @default 'none'
|
|
6824
|
+
*/
|
|
6825
|
+
"selectionMode"?: TableSelectionMode;
|
|
6826
|
+
/**
|
|
6827
|
+
* @default 5
|
|
6828
|
+
*/
|
|
6829
|
+
"skeletonRows"?: number;
|
|
6830
|
+
/**
|
|
6831
|
+
* Controlled member-row sort state.
|
|
6832
|
+
* @default null
|
|
6833
|
+
*/
|
|
6834
|
+
"sort"?: TableSortState | null;
|
|
6835
|
+
/**
|
|
6836
|
+
* @default false
|
|
6837
|
+
*/
|
|
6838
|
+
"stickyHeader"?: boolean;
|
|
6839
|
+
}
|
|
6492
6840
|
interface DsTag {
|
|
6493
6841
|
/**
|
|
6494
6842
|
* ID of the menu controlled by an interactive Tag.
|
|
@@ -6522,6 +6870,11 @@ declare namespace LocalJSX {
|
|
|
6522
6870
|
* @default false
|
|
6523
6871
|
*/
|
|
6524
6872
|
"isInactive"?: boolean;
|
|
6873
|
+
/**
|
|
6874
|
+
* Use the reduced outer geometry when nested inside a control of the same size.
|
|
6875
|
+
* @default false
|
|
6876
|
+
*/
|
|
6877
|
+
"isInset"?: boolean;
|
|
6525
6878
|
"label": string;
|
|
6526
6879
|
"maxWidth"?: string | number | undefined;
|
|
6527
6880
|
/**
|
|
@@ -7073,6 +7426,8 @@ declare namespace LocalJSX {
|
|
|
7073
7426
|
"headingLevel": MobileHeaderHeadingLevel;
|
|
7074
7427
|
"value": string;
|
|
7075
7428
|
"sectionsAriaLabel": string;
|
|
7429
|
+
"sectionsPresentation": MobileHeaderSectionsPresentation;
|
|
7430
|
+
"sectionsSize": TabGroupSize;
|
|
7076
7431
|
"subvalue": string;
|
|
7077
7432
|
"subsectionsAriaLabel": string;
|
|
7078
7433
|
"tone": MobileHeaderTone;
|
|
@@ -7292,16 +7647,46 @@ declare namespace LocalJSX {
|
|
|
7292
7647
|
}
|
|
7293
7648
|
interface DsTabGroupAttributes {
|
|
7294
7649
|
"value": string;
|
|
7650
|
+
"size": TabGroupSize;
|
|
7295
7651
|
"background": TabBackground | undefined;
|
|
7296
7652
|
"ariaLabel": string | null;
|
|
7297
7653
|
"ariaLabelledby": string | undefined;
|
|
7298
7654
|
}
|
|
7655
|
+
interface DsTableAttributes {
|
|
7656
|
+
"caption": string;
|
|
7657
|
+
"captionVisibility": TableCaptionVisibility;
|
|
7658
|
+
"stickyHeader": boolean;
|
|
7659
|
+
"maxHeight": string;
|
|
7660
|
+
"scrollLabel": string | undefined;
|
|
7661
|
+
"selectionMode": TableSelectionMode;
|
|
7662
|
+
"loading": boolean;
|
|
7663
|
+
"skeletonRows": number;
|
|
7664
|
+
"emptyHeading": string;
|
|
7665
|
+
"emptyBody": string;
|
|
7666
|
+
"error": boolean;
|
|
7667
|
+
"errorHeading": string;
|
|
7668
|
+
"errorBody": string;
|
|
7669
|
+
"emptyCellLabel": string;
|
|
7670
|
+
"lazyLoading": boolean;
|
|
7671
|
+
"loadMoreMode": TableLoadMoreMode;
|
|
7672
|
+
"hasMore": boolean;
|
|
7673
|
+
"loadingMore": boolean;
|
|
7674
|
+
"loadMoreError": string | undefined;
|
|
7675
|
+
"loadIdentity": string;
|
|
7676
|
+
"loadMoreThreshold": number;
|
|
7677
|
+
"loadMoreLabel": string;
|
|
7678
|
+
"retryLabel": string;
|
|
7679
|
+
"loadingMoreLabel": string;
|
|
7680
|
+
"endOfResultsLabel": string;
|
|
7681
|
+
"rowsLoadedLabel": string;
|
|
7682
|
+
}
|
|
7299
7683
|
interface DsTagAttributes {
|
|
7300
7684
|
"label": string;
|
|
7301
7685
|
"icon": string;
|
|
7302
7686
|
"intent": TagIntent;
|
|
7303
7687
|
"contrast": TagContrast;
|
|
7304
7688
|
"size": TagSize;
|
|
7689
|
+
"isInset": boolean;
|
|
7305
7690
|
"rounded": boolean;
|
|
7306
7691
|
"maxWidth": string;
|
|
7307
7692
|
"interactive": boolean;
|
|
@@ -7414,6 +7799,7 @@ declare namespace LocalJSX {
|
|
|
7414
7799
|
"ds-swatch-picker": Omit<DsSwatchPicker, keyof DsSwatchPickerAttributes> & { [K in keyof DsSwatchPicker & keyof DsSwatchPickerAttributes]?: DsSwatchPicker[K] } & { [K in keyof DsSwatchPicker & keyof DsSwatchPickerAttributes as `attr:${K}`]?: DsSwatchPickerAttributes[K] } & { [K in keyof DsSwatchPicker & keyof DsSwatchPickerAttributes as `prop:${K}`]?: DsSwatchPicker[K] };
|
|
7415
7800
|
"ds-switch": Omit<DsSwitch, keyof DsSwitchAttributes> & { [K in keyof DsSwitch & keyof DsSwitchAttributes]?: DsSwitch[K] } & { [K in keyof DsSwitch & keyof DsSwitchAttributes as `attr:${K}`]?: DsSwitchAttributes[K] } & { [K in keyof DsSwitch & keyof DsSwitchAttributes as `prop:${K}`]?: DsSwitch[K] };
|
|
7416
7801
|
"ds-tab-group": Omit<DsTabGroup, keyof DsTabGroupAttributes> & { [K in keyof DsTabGroup & keyof DsTabGroupAttributes]?: DsTabGroup[K] } & { [K in keyof DsTabGroup & keyof DsTabGroupAttributes as `attr:${K}`]?: DsTabGroupAttributes[K] } & { [K in keyof DsTabGroup & keyof DsTabGroupAttributes as `prop:${K}`]?: DsTabGroup[K] };
|
|
7802
|
+
"ds-table": Omit<DsTable, keyof DsTableAttributes> & { [K in keyof DsTable & keyof DsTableAttributes]?: DsTable[K] } & { [K in keyof DsTable & keyof DsTableAttributes as `attr:${K}`]?: DsTableAttributes[K] } & { [K in keyof DsTable & keyof DsTableAttributes as `prop:${K}`]?: DsTable[K] } & OneOf<"caption", DsTable["caption"], DsTableAttributes["caption"]>;
|
|
7417
7803
|
"ds-tag": Omit<DsTag, keyof DsTagAttributes> & { [K in keyof DsTag & keyof DsTagAttributes]?: DsTag[K] } & { [K in keyof DsTag & keyof DsTagAttributes as `attr:${K}`]?: DsTagAttributes[K] } & { [K in keyof DsTag & keyof DsTagAttributes as `prop:${K}`]?: DsTag[K] } & OneOf<"label", DsTag["label"], DsTagAttributes["label"]>;
|
|
7418
7804
|
"ds-text": Omit<DsText, keyof DsTextAttributes> & { [K in keyof DsText & keyof DsTextAttributes]?: DsText[K] } & { [K in keyof DsText & keyof DsTextAttributes as `attr:${K}`]?: DsTextAttributes[K] } & { [K in keyof DsText & keyof DsTextAttributes as `prop:${K}`]?: DsText[K] };
|
|
7419
7805
|
"ds-toast": Omit<DsToast, keyof DsToastAttributes> & { [K in keyof DsToast & keyof DsToastAttributes]?: DsToast[K] } & { [K in keyof DsToast & keyof DsToastAttributes as `attr:${K}`]?: DsToastAttributes[K] } & { [K in keyof DsToast & keyof DsToastAttributes as `prop:${K}`]?: DsToast[K] };
|
|
@@ -7501,6 +7887,7 @@ declare module "@stencil/core" {
|
|
|
7501
7887
|
"ds-swatch-picker": LocalJSX.IntrinsicElements["ds-swatch-picker"] & JSXBase.HTMLAttributes<HTMLDsSwatchPickerElement>;
|
|
7502
7888
|
"ds-switch": LocalJSX.IntrinsicElements["ds-switch"] & JSXBase.HTMLAttributes<HTMLDsSwitchElement>;
|
|
7503
7889
|
"ds-tab-group": LocalJSX.IntrinsicElements["ds-tab-group"] & JSXBase.HTMLAttributes<HTMLDsTabGroupElement>;
|
|
7890
|
+
"ds-table": LocalJSX.IntrinsicElements["ds-table"] & JSXBase.HTMLAttributes<HTMLDsTableElement>;
|
|
7504
7891
|
"ds-tag": LocalJSX.IntrinsicElements["ds-tag"] & JSXBase.HTMLAttributes<HTMLDsTagElement>;
|
|
7505
7892
|
"ds-text": LocalJSX.IntrinsicElements["ds-text"] & JSXBase.HTMLAttributes<HTMLDsTextElement>;
|
|
7506
7893
|
"ds-toast": LocalJSX.IntrinsicElements["ds-toast"] & JSXBase.HTMLAttributes<HTMLDsToastElement>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ds-mo/ui",
|
|
3
|
-
"version": "13.
|
|
3
|
+
"version": "13.12.0",
|
|
4
4
|
"description": "CompoMo — composable web components styled with TokoMo design tokens",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"web-components",
|
|
@@ -66,6 +66,7 @@
|
|
|
66
66
|
},
|
|
67
67
|
"./control-elevation.css": "./dist/styles/control-elevation.css",
|
|
68
68
|
"./prose.css": "./dist/styles/prose.css",
|
|
69
|
+
"./table.css": "./dist/styles/table.css",
|
|
69
70
|
"./agent": "./dist/agent.json",
|
|
70
71
|
"./agent/patterns": "./dist/agent-patterns.json",
|
|
71
72
|
"./dist/components/*": "./dist/components/*",
|
|
@@ -137,7 +138,7 @@
|
|
|
137
138
|
"@angular/forms": "^22.0.7",
|
|
138
139
|
"@axe-core/playwright": "^4.12.1",
|
|
139
140
|
"@ds-mo/icons": "^6.5.0",
|
|
140
|
-
"@ds-mo/tokens": "^6.0
|
|
141
|
+
"@ds-mo/tokens": "^6.1.0",
|
|
141
142
|
"@eslint/js": "^10.0.1",
|
|
142
143
|
"@modelcontextprotocol/client": "^2.0.0",
|
|
143
144
|
"@modelcontextprotocol/server": "^2.0.0",
|
|
@@ -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-DkhE3BsH.js";import{i as c,r as m}from"./p-DNpE0RBz.js";import{d as u}from"./p-DwKC_9u2.js";import{d as b}from"./p-c1pY-Mqq.js";import{d as p}from"./p-DumWT7NN.js";import{d as f}from"./p-Ca-I2UnB.js";import{d as g}from"./p-BnGJrBPG.js";import{d as v}from"./p-DW9p068S.js";import{d as w}from"./p-DgglLVCj.js";import{d as k}from"./p-BRajO-Za.js";import{d as _}from"./p-DLwM1RNL.js";import{d as y}from"./p-BQ7Nzx9A.js";import{d as C}from"./p-BNiIyZCn.js";import{d as E}from"./p-CCYgBUUS.js";const j=()=>`.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 x=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?this.availableInboxTools.map((s=>({id:s,label:this.toolLabel(s)}))):[];return o("ds-mobile-header",{class:"shell-tools__mobile-header",heading:i,headingLevel:"h2",sections:a,value:s,sectionsAriaLabel:this.inboxNavigationLabel,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,isActive:!!e.expanded,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:"912937cbcf2428d74ef2b98810d133d0117bbe06",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 j()}},[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 D(){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-text","ds-tooltip"];s.forEach((s=>{switch(s){case"ds-shell-tools":if(!customElements.get(l(s))){customElements.define(l(s),x)}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))){w()}break;case"ds-panel-tool-header":if(!customElements.get(l(s))){k()}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))){y()}break;case"ds-text":if(!customElements.get(l(s))){C()}break;case"ds-tooltip":if(!customElements.get(l(s))){E()}break}}))}D();export{x as S,D as d};
|
|
2
|
-
//# sourceMappingURL=p-CVmtbj-6.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["shellToolsCss","ShellTools","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","responsiveMode","open","activeTool","presentation","fullscreenHeaderMode","items","headers","storageKey","toolsLabel","toolShortcutsLabel","inboxLabel","inboxNavigationLabel","panelToolsEl","selectInboxTool","event","id","detail","availableInboxTools","includes","mobileActiveTool","dsToolChange","emit","selected","handlePanelToolChange","handlePanelPresentationChange","handleMobileHeaderAction","tool","stopPropagation","dsHeaderAction","presentationChanged","next","previous","getAttribute","setAttribute","resolvedItems","filter","item","isInactive","mobileDestination","isShellInboxTool","map","mobileViewOrder","orderPanelToolsItems","toolLabel","find","candidate","label","ariaLabel","PANEL_TOOLS_LABELS","inbox","resolveAvailableInboxTool","componentWillLoad","reconcileAvailability","handleItemsChange","reconcilePanelToolsAvailability","resolvedHeaders","activeHeader","activateMobileTool","entry","resolvePanelToolActivation","activateTool","closeDrawer","focusHeaderAction","action","el","querySelector","CSS","escape","setFocus","renderForwardedSlots","flatMap","h","name","slot","renderDesktop","class","ref","element","onDsToolChange","onDsPresentationChange","renderMobileHeader","header","configuredTitle","title","trim","actions","sections","showBack","heading","headingLevel","value","sectionsAriaLabel","onDsSectionChange","backAriaLabel","side","size","variant","icon","backIcon","activeFill","hasBorder","onDsClick","dsHeaderBack","key","triggerId","undefined","haspopup","controls","expanded","pressed","isActive","renderMobile","inert","active","hidden","render","mobile","Host","role"],"sources":["src/wc/components/ShellTools/ShellTools.css?tag=ds-shell-tools&encapsulation=scoped","src/wc/components/ShellTools/ShellTools.tsx"],"sourcesContent":[":host {\n display: block;\n min-width: 0;\n min-height: 0;\n height: 100%;\n background: transparent;\n}\n\n:host([responsive-mode='mobile']) {\n width: 100%;\n background: var(--color-background-primary);\n}\n\n.shell-tools__desktop,\n.shell-tools__desktop ds-panel-tools,\n.shell-tools__mobile {\n display: block;\n min-width: 0;\n min-height: 0;\n height: 100%;\n}\n\n.shell-tools__mobile {\n display: grid;\n grid-template-rows: auto minmax(0, 1fr);\n background: var(--color-background-primary);\n}\n\n.shell-tools__mobile-header {\n grid-row: 1;\n}\n\n.shell-tools__mobile-body,\n.shell-tools__view {\n min-width: 0;\n min-height: 0;\n height: 100%;\n}\n\n.shell-tools__mobile-body {\n grid-row: 2;\n overflow: hidden;\n}\n\n.shell-tools__view {\n overflow: auto;\n overscroll-behavior: contain;\n}\n\n.shell-tools__view[hidden] {\n display: none;\n}\n\n.shell-tools__view ::slotted(*) {\n min-height: 0;\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Method,\n Prop,\n Watch,\n} from '@stencil/core';\nimport {\n PANEL_TOOLS_LABELS,\n type PanelToolsHeaderConfig,\n type PanelToolsHeaders,\n type PanelToolsItem,\n type PanelToolsToolId,\n} from '../PanelTools/panel-tools-types';\nimport {\n orderPanelToolsItems,\n reconcilePanelToolsAvailability,\n resolvePanelToolActivation,\n} from '../PanelTools/panel-tools-utils';\nimport {\n isShellInboxTool,\n resolveAvailableInboxTool,\n type ShellInboxToolId,\n type ShellResponsiveMode,\n} from '../../shell/shell-responsive';\n\n@Component({\n tag: 'ds-shell-tools',\n styleUrl: 'ShellTools.css',\n scoped: true,\n})\nexport class ShellTools {\n @Element() el!: HTMLElement;\n\n /** Resolved by ShellApp; mobile uses a full-stage tool presentation. */\n @Prop({ attribute: 'responsive-mode', reflect: true })\n responsiveMode: ShellResponsiveMode = 'desktop';\n @Prop({ mutable: true, reflect: true }) open: boolean = false;\n @Prop({ mutable: true, attribute: 'active-tool', reflect: true })\n activeTool: PanelToolsToolId | '' = '';\n @Prop({ mutable: true, reflect: true }) presentation: 'drawer' | 'fullscreen' = 'drawer';\n @Prop({ attribute: 'fullscreen-header-mode', reflect: true })\n fullscreenHeaderMode: 'shared' | 'split' = 'shared';\n @Prop() items: PanelToolsItem[] = [];\n @Prop() headers: PanelToolsHeaders = {};\n @Prop({ attribute: 'storage-key' }) storageKey: string = '';\n @Prop() toolsLabel: string = 'Tools';\n @Prop() toolShortcutsLabel: string = 'Tool shortcuts';\n @Prop() inboxLabel: string = 'Inbox';\n @Prop() inboxNavigationLabel: string = 'Inbox sections';\n\n @Watch('presentation')\n presentationChanged(next: 'drawer' | 'fullscreen', previous: 'drawer' | 'fullscreen') {\n if (next === previous) return;\n\n /*\n * Consumers update ShellTools and their slotted master/detail layout in the\n * same render. Forward the request immediately so PanelTools can conceal\n * its surface until its matching render class commits on the next frame.\n */\n if (this.panelToolsEl && this.panelToolsEl.getAttribute('presentation') !== next) {\n this.panelToolsEl.setAttribute('presentation', next);\n }\n }\n\n @Event({ bubbles: true, composed: true }) dsToolChange!: EventEmitter<{\n id: PanelToolsToolId;\n selected: boolean;\n }>;\n @Event({ bubbles: true, composed: true }) dsPresentationChange!: EventEmitter<{\n presentation: 'drawer' | 'fullscreen';\n }>;\n @Event({ bubbles: true, composed: true }) dsHeaderBack!: EventEmitter<{\n tool: PanelToolsToolId;\n }>;\n @Event({ bubbles: true, composed: true }) dsHeaderAction!: EventEmitter<{\n tool: PanelToolsToolId;\n id: string;\n }>;\n\n private panelToolsEl: HTMLDsPanelToolsElement | null = null;\n\n private get resolvedItems(): PanelToolsItem[] {\n return this.items ?? [];\n }\n\n private get availableInboxTools(): ShellInboxToolId[] {\n return this.resolvedItems\n .filter(\n item =>\n !item.isInactive &&\n (item.mobileDestination === 'inbox' || isShellInboxTool(item.id))\n )\n .map(item => item.id as ShellInboxToolId);\n }\n\n private get mobileViewOrder(): PanelToolsToolId[] {\n return orderPanelToolsItems(this.resolvedItems).map(item => item.id);\n }\n\n private toolLabel(id: PanelToolsToolId): string {\n const item = this.resolvedItems.find(candidate => candidate.id === id);\n return (\n item?.label ??\n item?.ariaLabel ??\n PANEL_TOOLS_LABELS[id as keyof typeof PANEL_TOOLS_LABELS] ??\n id\n );\n }\n\n private get mobileActiveTool(): PanelToolsToolId | '' {\n const item = this.resolvedItems.find(candidate => candidate.id === this.activeTool);\n const inbox =\n item?.mobileDestination === 'inbox' || isShellInboxTool(this.activeTool);\n if (!inbox) return this.activeTool;\n return resolveAvailableInboxTool(this.activeTool, this.availableInboxTools);\n }\n\n componentWillLoad() {\n this.reconcileAvailability();\n }\n\n @Watch('items')\n handleItemsChange() {\n this.reconcileAvailability();\n }\n\n private reconcileAvailability() {\n const next = reconcilePanelToolsAvailability(this.resolvedItems, this.open, this.activeTool);\n this.open = next.open;\n this.activeTool = next.activeTool;\n }\n\n private resolvedHeaders(): PanelToolsHeaders {\n return this.headers ?? {};\n }\n\n private activeHeader(tool: PanelToolsToolId): PanelToolsHeaderConfig {\n return this.resolvedHeaders()[tool] ?? {};\n }\n\n private activateMobileTool(id: PanelToolsToolId) {\n const item = this.resolvedItems.find(entry => entry.id === id);\n if (!item || item.isInactive) return;\n const next = resolvePanelToolActivation(this.open, this.activeTool, id);\n this.open = next.open;\n this.activeTool = next.activeTool;\n this.dsToolChange.emit({ id, selected: next.selected });\n }\n\n private selectInboxTool = (event: CustomEvent<string>) => {\n const id = event.detail;\n if (!this.availableInboxTools.includes(id) || id === this.mobileActiveTool) return;\n this.open = true;\n this.activeTool = id;\n this.dsToolChange.emit({ id, selected: true });\n };\n\n private handlePanelToolChange = (\n event: CustomEvent<{ id: PanelToolsToolId; selected: boolean }>\n ) => {\n this.activeTool = event.detail.id;\n this.open = event.detail.selected;\n };\n\n private handlePanelPresentationChange = (\n event: CustomEvent<{ presentation: 'drawer' | 'fullscreen' }>\n ) => {\n this.presentation = event.detail.presentation;\n };\n\n private handleMobileHeaderAction = (\n tool: PanelToolsToolId,\n id: string,\n event: CustomEvent<MouseEvent>\n ) => {\n event.stopPropagation();\n this.dsHeaderAction.emit({ tool, id });\n };\n\n /** Match PanelTools' imperative activation contract in every responsive mode. */\n @Method()\n async activateTool(id: PanelToolsToolId) {\n if (this.responsiveMode !== 'mobile') {\n await this.panelToolsEl?.activateTool(id);\n return;\n }\n this.activateMobileTool(id);\n }\n\n /** Close the active global tool surface. */\n @Method()\n async closeDrawer() {\n if (this.responsiveMode !== 'mobile') {\n await this.panelToolsEl?.closeDrawer();\n return;\n }\n if (!this.open) return;\n const id = this.activeTool;\n this.open = false;\n if (id) this.dsToolChange.emit({ id, selected: false });\n }\n\n /** Focus an application-owned action in the visible shared tool header. */\n @Method()\n async focusHeaderAction(id: string) {\n if (this.responsiveMode !== 'mobile') {\n await this.panelToolsEl?.focusHeaderAction(id);\n return;\n }\n const action = this.el.querySelector(`[data-header-action-id=\"${CSS.escape(id)}\"]`) as\n | (HTMLElement & { setFocus?: () => Promise<void> })\n | null;\n await action?.setFocus?.();\n }\n\n private renderForwardedSlots() {\n return this.mobileViewOrder.flatMap(id => [\n <slot name={id} slot={id} />,\n <slot name={`${id}-view`} slot={`${id}-view`} />,\n ]);\n }\n\n private renderDesktop() {\n return (\n <div class=\"shell-tools__desktop\">\n <ds-panel-tools\n open={this.open}\n activeTool={this.activeTool}\n presentation={this.presentation}\n fullscreenHeaderMode={this.fullscreenHeaderMode}\n items={this.resolvedItems}\n headers={this.resolvedHeaders()}\n storageKey={this.storageKey}\n toolsLabel={this.toolsLabel}\n toolShortcutsLabel={this.toolShortcutsLabel}\n ref={element => {\n this.panelToolsEl = element as HTMLDsPanelToolsElement | null;\n }}\n onDsToolChange={this.handlePanelToolChange}\n onDsPresentationChange={this.handlePanelPresentationChange}\n >\n {this.renderForwardedSlots()}\n </ds-panel-tools>\n </div>\n );\n }\n\n private renderMobileHeader(tool: PanelToolsToolId) {\n const header = this.activeHeader(tool);\n const configuredTitle = header.title?.trim();\n const title = configuredTitle || this.toolLabel(tool);\n const actions = (header.actions ?? []).filter(action => action.id !== 'fullscreen');\n const sections =\n isShellInboxTool(tool) && !header.showBack\n ? this.availableInboxTools.map(id => ({\n id,\n label: this.toolLabel(id),\n }))\n : [];\n\n return (\n <ds-mobile-header\n class=\"shell-tools__mobile-header\"\n heading={title}\n headingLevel=\"h2\"\n sections={sections}\n value={tool}\n sectionsAriaLabel={this.inboxNavigationLabel}\n onDsSectionChange={this.selectInboxTool}\n >\n {header.showBack ? (\n <ds-tooltip\n slot=\"leading\"\n label={header.backAriaLabel || 'Back'}\n side=\"bottom\"\n size=\"sm\"\n >\n <ds-button-unfilled\n variant=\"icon\"\n icon={header.backIcon || 'ChevronLeft'}\n size=\"md\"\n aria-label={header.backAriaLabel || 'Back'}\n activeFill={false}\n hasBorder={false}\n onDsClick={() => this.dsHeaderBack.emit({ tool })}\n />\n </ds-tooltip>\n ) : null}\n {actions.map(action => (\n <ds-tooltip\n slot=\"trailing\"\n key={action.id}\n label={action.ariaLabel}\n side=\"bottom\"\n size=\"sm\"\n >\n <ds-button-unfilled\n id={action.triggerId || undefined}\n data-header-action-id={action.id}\n variant=\"icon\"\n icon={action.icon}\n size=\"md\"\n aria-label={action.ariaLabel}\n haspopup={action.haspopup}\n controls={action.controls}\n expanded={action.expanded}\n pressed={action.pressed}\n isActive={!!action.expanded}\n isInactive={action.isInactive}\n activeFill={false}\n hasBorder={false}\n onDsClick={(event: CustomEvent<MouseEvent>) =>\n this.handleMobileHeaderAction(tool, action.id, event)}\n />\n </ds-tooltip>\n ))}\n </ds-mobile-header>\n );\n }\n\n private renderMobile() {\n const tool = this.mobileActiveTool;\n return (\n <div\n class=\"shell-tools__mobile\"\n aria-hidden={this.open && tool ? undefined : 'true'}\n inert={this.open && tool ? undefined : true}\n >\n {tool ? this.renderMobileHeader(tool) : null}\n <div class=\"shell-tools__mobile-body\">\n {this.mobileViewOrder.map(id => {\n const active = this.open && id === tool;\n return (\n <div\n class={{\n 'shell-tools__view': true,\n 'shell-tools__view--active': active,\n }}\n hidden={!active}\n aria-hidden={active ? undefined : 'true'}\n inert={active ? undefined : true}\n >\n <slot name={`${id}-view`}>\n <slot name={id} />\n </slot>\n </div>\n );\n })}\n </div>\n </div>\n );\n }\n\n render() {\n const mobile = this.responsiveMode === 'mobile';\n return (\n <Host\n role={\n mobile\n ? this.presentation === 'fullscreen'\n ? 'dialog'\n : 'complementary'\n : undefined\n }\n aria-modal={mobile && this.presentation === 'fullscreen' ? 'true' : undefined}\n aria-label={mobile ? this.toolsLabel : undefined}\n >\n {mobile ? this.renderMobile() : this.renderDesktop()}\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|