@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
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"timestamp": "2026-08-
|
|
2
|
+
"timestamp": "2026-08-18T21:50:11",
|
|
3
3
|
"compiler": {
|
|
4
4
|
"name": "@stencil/core",
|
|
5
5
|
"version": "4.43.5",
|
|
@@ -24624,6 +24624,180 @@
|
|
|
24624
24624
|
"getter": false,
|
|
24625
24625
|
"setter": false
|
|
24626
24626
|
},
|
|
24627
|
+
{
|
|
24628
|
+
"name": "groupEndOfResultsLabel",
|
|
24629
|
+
"type": "string",
|
|
24630
|
+
"complexType": {
|
|
24631
|
+
"original": "string",
|
|
24632
|
+
"resolved": "string",
|
|
24633
|
+
"references": {}
|
|
24634
|
+
},
|
|
24635
|
+
"mutable": false,
|
|
24636
|
+
"attr": "group-end-of-results-label",
|
|
24637
|
+
"reflectToAttr": false,
|
|
24638
|
+
"docs": "Supports the {group} placeholder.",
|
|
24639
|
+
"docsTags": [
|
|
24640
|
+
{
|
|
24641
|
+
"name": "default",
|
|
24642
|
+
"text": "'All {group} results loaded'"
|
|
24643
|
+
}
|
|
24644
|
+
],
|
|
24645
|
+
"default": "'All {group} results loaded'",
|
|
24646
|
+
"values": [
|
|
24647
|
+
{
|
|
24648
|
+
"type": "string"
|
|
24649
|
+
}
|
|
24650
|
+
],
|
|
24651
|
+
"optional": false,
|
|
24652
|
+
"required": false,
|
|
24653
|
+
"getter": false,
|
|
24654
|
+
"setter": false
|
|
24655
|
+
},
|
|
24656
|
+
{
|
|
24657
|
+
"name": "groupLoadMoreAriaLabel",
|
|
24658
|
+
"type": "string",
|
|
24659
|
+
"complexType": {
|
|
24660
|
+
"original": "string",
|
|
24661
|
+
"resolved": "string",
|
|
24662
|
+
"references": {}
|
|
24663
|
+
},
|
|
24664
|
+
"mutable": false,
|
|
24665
|
+
"attr": "group-load-more-aria-label",
|
|
24666
|
+
"reflectToAttr": false,
|
|
24667
|
+
"docs": "Supports the {group} placeholder.",
|
|
24668
|
+
"docsTags": [
|
|
24669
|
+
{
|
|
24670
|
+
"name": "default",
|
|
24671
|
+
"text": "'Load more {group} results'"
|
|
24672
|
+
}
|
|
24673
|
+
],
|
|
24674
|
+
"default": "'Load more {group} results'",
|
|
24675
|
+
"values": [
|
|
24676
|
+
{
|
|
24677
|
+
"type": "string"
|
|
24678
|
+
}
|
|
24679
|
+
],
|
|
24680
|
+
"optional": false,
|
|
24681
|
+
"required": false,
|
|
24682
|
+
"getter": false,
|
|
24683
|
+
"setter": false
|
|
24684
|
+
},
|
|
24685
|
+
{
|
|
24686
|
+
"name": "groupLoadMoreLabel",
|
|
24687
|
+
"type": "string",
|
|
24688
|
+
"complexType": {
|
|
24689
|
+
"original": "string",
|
|
24690
|
+
"resolved": "string",
|
|
24691
|
+
"references": {}
|
|
24692
|
+
},
|
|
24693
|
+
"mutable": false,
|
|
24694
|
+
"attr": "group-load-more-label",
|
|
24695
|
+
"reflectToAttr": false,
|
|
24696
|
+
"docs": "",
|
|
24697
|
+
"docsTags": [
|
|
24698
|
+
{
|
|
24699
|
+
"name": "default",
|
|
24700
|
+
"text": "'Load more'"
|
|
24701
|
+
}
|
|
24702
|
+
],
|
|
24703
|
+
"default": "'Load more'",
|
|
24704
|
+
"values": [
|
|
24705
|
+
{
|
|
24706
|
+
"type": "string"
|
|
24707
|
+
}
|
|
24708
|
+
],
|
|
24709
|
+
"optional": false,
|
|
24710
|
+
"required": false,
|
|
24711
|
+
"getter": false,
|
|
24712
|
+
"setter": false
|
|
24713
|
+
},
|
|
24714
|
+
{
|
|
24715
|
+
"name": "groupLoadingMoreLabel",
|
|
24716
|
+
"type": "string",
|
|
24717
|
+
"complexType": {
|
|
24718
|
+
"original": "string",
|
|
24719
|
+
"resolved": "string",
|
|
24720
|
+
"references": {}
|
|
24721
|
+
},
|
|
24722
|
+
"mutable": false,
|
|
24723
|
+
"attr": "group-loading-more-label",
|
|
24724
|
+
"reflectToAttr": false,
|
|
24725
|
+
"docs": "Supports the {group} placeholder.",
|
|
24726
|
+
"docsTags": [
|
|
24727
|
+
{
|
|
24728
|
+
"name": "default",
|
|
24729
|
+
"text": "'Loading more items'"
|
|
24730
|
+
}
|
|
24731
|
+
],
|
|
24732
|
+
"default": "'Loading more items'",
|
|
24733
|
+
"values": [
|
|
24734
|
+
{
|
|
24735
|
+
"type": "string"
|
|
24736
|
+
}
|
|
24737
|
+
],
|
|
24738
|
+
"optional": false,
|
|
24739
|
+
"required": false,
|
|
24740
|
+
"getter": false,
|
|
24741
|
+
"setter": false
|
|
24742
|
+
},
|
|
24743
|
+
{
|
|
24744
|
+
"name": "groupRetryLabel",
|
|
24745
|
+
"type": "string",
|
|
24746
|
+
"complexType": {
|
|
24747
|
+
"original": "string",
|
|
24748
|
+
"resolved": "string",
|
|
24749
|
+
"references": {}
|
|
24750
|
+
},
|
|
24751
|
+
"mutable": false,
|
|
24752
|
+
"attr": "group-retry-label",
|
|
24753
|
+
"reflectToAttr": false,
|
|
24754
|
+
"docs": "Supports the {group} placeholder.",
|
|
24755
|
+
"docsTags": [
|
|
24756
|
+
{
|
|
24757
|
+
"name": "default",
|
|
24758
|
+
"text": "'Retry loading {group} results'"
|
|
24759
|
+
}
|
|
24760
|
+
],
|
|
24761
|
+
"default": "'Retry loading {group} results'",
|
|
24762
|
+
"values": [
|
|
24763
|
+
{
|
|
24764
|
+
"type": "string"
|
|
24765
|
+
}
|
|
24766
|
+
],
|
|
24767
|
+
"optional": false,
|
|
24768
|
+
"required": false,
|
|
24769
|
+
"getter": false,
|
|
24770
|
+
"setter": false
|
|
24771
|
+
},
|
|
24772
|
+
{
|
|
24773
|
+
"name": "groupRowsLoadedLabel",
|
|
24774
|
+
"type": "string",
|
|
24775
|
+
"complexType": {
|
|
24776
|
+
"original": "string",
|
|
24777
|
+
"resolved": "string",
|
|
24778
|
+
"references": {}
|
|
24779
|
+
},
|
|
24780
|
+
"mutable": false,
|
|
24781
|
+
"attr": "group-rows-loaded-label",
|
|
24782
|
+
"reflectToAttr": false,
|
|
24783
|
+
"docs": "Supports {group}, {count}, {loaded}, and {total} placeholders.",
|
|
24784
|
+
"docsTags": [
|
|
24785
|
+
{
|
|
24786
|
+
"name": "default",
|
|
24787
|
+
"text": "'{count} more rows loaded in {group}. {loaded} of {total} rows loaded.'"
|
|
24788
|
+
}
|
|
24789
|
+
],
|
|
24790
|
+
"default": "'{count} more rows loaded in {group}. {loaded} of {total} rows loaded.'",
|
|
24791
|
+
"values": [
|
|
24792
|
+
{
|
|
24793
|
+
"type": "string"
|
|
24794
|
+
}
|
|
24795
|
+
],
|
|
24796
|
+
"optional": false,
|
|
24797
|
+
"required": false,
|
|
24798
|
+
"getter": false,
|
|
24799
|
+
"setter": false
|
|
24800
|
+
},
|
|
24627
24801
|
{
|
|
24628
24802
|
"name": "grouping",
|
|
24629
24803
|
"type": "TableGroupingState | null",
|
|
@@ -25014,10 +25188,10 @@
|
|
|
25014
25188
|
"docsTags": [
|
|
25015
25189
|
{
|
|
25016
25190
|
"name": "default",
|
|
25017
|
-
"text": "'Loading more
|
|
25191
|
+
"text": "'Loading more items'"
|
|
25018
25192
|
}
|
|
25019
25193
|
],
|
|
25020
|
-
"default": "'Loading more
|
|
25194
|
+
"default": "'Loading more items'",
|
|
25021
25195
|
"values": [
|
|
25022
25196
|
{
|
|
25023
25197
|
"type": "string"
|
|
@@ -25505,6 +25679,27 @@
|
|
|
25505
25679
|
"docs": "",
|
|
25506
25680
|
"docsTags": []
|
|
25507
25681
|
},
|
|
25682
|
+
{
|
|
25683
|
+
"event": "dsGroupLoadMore",
|
|
25684
|
+
"detail": "TableGroupLoadMoreDetail",
|
|
25685
|
+
"bubbles": true,
|
|
25686
|
+
"complexType": {
|
|
25687
|
+
"original": "TableGroupLoadMoreDetail",
|
|
25688
|
+
"resolved": "TableGroupLoadMoreDetail",
|
|
25689
|
+
"references": {
|
|
25690
|
+
"TableGroupLoadMoreDetail": {
|
|
25691
|
+
"location": "import",
|
|
25692
|
+
"path": "./table-types",
|
|
25693
|
+
"id": "src/wc/components/Table/table-types.ts::TableGroupLoadMoreDetail",
|
|
25694
|
+
"referenceLocation": "TableGroupLoadMoreDetail"
|
|
25695
|
+
}
|
|
25696
|
+
}
|
|
25697
|
+
},
|
|
25698
|
+
"cancelable": true,
|
|
25699
|
+
"composed": true,
|
|
25700
|
+
"docs": "",
|
|
25701
|
+
"docsTags": []
|
|
25702
|
+
},
|
|
25508
25703
|
{
|
|
25509
25704
|
"event": "dsLoadMore",
|
|
25510
25705
|
"detail": "TableLoadMoreDetail",
|
|
@@ -25602,9 +25797,9 @@
|
|
|
25602
25797
|
"ds-text",
|
|
25603
25798
|
"ds-icon",
|
|
25604
25799
|
"ds-tag",
|
|
25800
|
+
"ds-loader",
|
|
25605
25801
|
"ds-skeleton",
|
|
25606
|
-
"ds-empty-state"
|
|
25607
|
-
"ds-loader"
|
|
25802
|
+
"ds-empty-state"
|
|
25608
25803
|
],
|
|
25609
25804
|
"dependencyGraph": {
|
|
25610
25805
|
"ds-table": [
|
|
@@ -25613,9 +25808,9 @@
|
|
|
25613
25808
|
"ds-text",
|
|
25614
25809
|
"ds-icon",
|
|
25615
25810
|
"ds-tag",
|
|
25811
|
+
"ds-loader",
|
|
25616
25812
|
"ds-skeleton",
|
|
25617
|
-
"ds-empty-state"
|
|
25618
|
-
"ds-loader"
|
|
25813
|
+
"ds-empty-state"
|
|
25619
25814
|
],
|
|
25620
25815
|
"ds-checkbox": [
|
|
25621
25816
|
"ds-text"
|
|
@@ -28845,7 +29040,7 @@
|
|
|
28845
29040
|
"path": "src/wc/components/Table/table-types.ts"
|
|
28846
29041
|
},
|
|
28847
29042
|
"src/wc/components/Table/table-types.ts::TableGroup": {
|
|
28848
|
-
"declaration": "export interface TableGroup {\n /** Stable group identity. */\n id: string;\n label: string;\n value?: string | number;\n /** Total server-side member count; may exceed the currently loaded row count. */\n totalCount?: number;\n /** Optional localized accessible count phrase such as “18 vehicles”; the visible tag remains numeric. */\n countLabel?: string;\n /**\n * Optional semantic intent for the group section header. Applies a faint\n * intent background and bold intent title color.\n */\n intent?: TableGroupIntent;\n rows: TableRow[];\n}",
|
|
29043
|
+
"declaration": "export interface TableGroup {\n /** Stable group identity. */\n id: string;\n label: string;\n value?: string | number;\n /** Total server-side member count; may exceed the currently loaded row count. */\n totalCount?: number;\n /** Optional localized accessible count phrase such as “18 vehicles”; the visible tag remains numeric. */\n countLabel?: string;\n /**\n * Optional semantic intent for the group section header. Applies a faint\n * intent background and bold intent title color.\n */\n intent?: TableGroupIntent;\n /** Whether this group has more member rows available to load. */\n hasMore?: boolean;\n /** Controlled incremental loading state for this group's member rows. */\n loadingMore?: boolean;\n /** Controlled incremental loading failure for this group's member rows. */\n loadMoreError?: string;\n /** Reset key for this group's query, sort, or filter state. Defaults to the group ID. */\n loadIdentity?: string | number;\n rows: TableRow[];\n}",
|
|
28849
29044
|
"docstring": "",
|
|
28850
29045
|
"path": "src/wc/components/Table/table-types.ts"
|
|
28851
29046
|
},
|
|
@@ -28894,6 +29089,11 @@
|
|
|
28894
29089
|
"docstring": "",
|
|
28895
29090
|
"path": "src/wc/components/Table/table-types.ts"
|
|
28896
29091
|
},
|
|
29092
|
+
"src/wc/components/Table/table-types.ts::TableGroupLoadMoreDetail": {
|
|
29093
|
+
"declaration": "export interface TableGroupLoadMoreDetail extends TableLoadMoreDetail {\n groupId: string;\n}",
|
|
29094
|
+
"docstring": "",
|
|
29095
|
+
"path": "src/wc/components/Table/table-types.ts"
|
|
29096
|
+
},
|
|
28897
29097
|
"src/wc/components/Table/table-types.ts::TableCellActionDetail": {
|
|
28898
29098
|
"declaration": "export interface TableCellActionDetail {\n actionId: string;\n rowId: string;\n columnId: string;\n}",
|
|
28899
29099
|
"docstring": "",
|
|
@@ -8585,7 +8585,7 @@
|
|
|
8585
8585
|
"Small, medium, and large use the shared 24px, 32px, and 40px control-density recipes for the outer track. Each segment uses the same-size inset recipe at 20px, 28px, and 36px while preserving that density's typography, icon, gap, and label metrics.",
|
|
8586
8586
|
"Use one consistent content variant across every selectable tab in a group.",
|
|
8587
8587
|
"Omitted background is for primary and secondary surfaces; pass the faint context explicitly on faint surfaces.",
|
|
8588
|
-
"Only the omitted default context emphasizes visible selected label text and keeps the filled track; explicit
|
|
8588
|
+
"Only the omitted default context emphasizes visible selected label text and keeps the filled track; every explicit surface context uses a transparent track, stable text weight, surface border, and its context-matched neutral active fill rather than a brand active fill.",
|
|
8589
8589
|
"Dividers visually separate related subsets inside one tab list but do not create nested navigation or independent selection groups."
|
|
8590
8590
|
],
|
|
8591
8591
|
"responsiveBehavior": [
|
|
@@ -8707,7 +8707,7 @@
|
|
|
8707
8707
|
"Selection controls expose checkbox semantics and explicit row names; select-all affects selectable loaded rows only and preserves selected identities outside the loaded window. When grouping is active with multi-selection, each group section header also exposes a checkbox that selects or clears that group's selectable loaded rows.",
|
|
8708
8708
|
"Interactive rows are focusable as native rows, activate with Enter or Space, and do not steal activation from their nested selection or action controls.",
|
|
8709
8709
|
"Scrollable table regions become keyboard focusable and named only when overflow exists.",
|
|
8710
|
-
"Incremental loading, newly appended row counts, failures, and end-of-results transitions are announced through a polite status region without replacing visible state.",
|
|
8710
|
+
"Incremental loading, newly appended row counts, failures, and end-of-results transitions are announced through a polite status region without replacing visible state. In grouped tables, announcements name the independently loading group.",
|
|
8711
8711
|
"An optional result summary footer appears below the table frame when both displayedCount and totalCount are finite, formatting Displaying {displayed} of {total} in text-body-medium secondary. The footer slot can replace that copy, while footer-leading and footer-trailing compose actions into the same compact-bar anatomy. Authored footer content can also opt into the 48px footer without controlled counts."
|
|
8712
8712
|
],
|
|
8713
8713
|
"states": [
|
|
@@ -8715,8 +8715,8 @@
|
|
|
8715
8715
|
"Grouping supports one level. The application supplies groups in a fixed product-defined order and supplies ordered member rows independently. Group section headers show an emphasized text-body-medium label followed by a rounded sm Tag containing only the numeric count. The Tag uses the group's faint intent surface (neutral when intent is absent) and a small-elevation, button-hugging wrapper; a localized countLabel remains available to assistive technology. Groups may declare an optional intent (brand, neutral, negative, warning, caution, positive) that paints an LTR gradient from the faint intent surface at the label edge into faint neutral at the trailing edge, plus a bold intent title color. Neutral groups remain solid faint neutral. Section separators are painted inside that viewport-width surface so translucent border tokens composite with each intent background; the final collapsed section does not duplicate the terminal table edge. A trailing visually neutral icon-only ButtonUnfilled uses the 24px md double-inset action recipe and toggles controlled collapsedGroupIds, showing ChevronUp while expanded and ChevronDown while collapsed. While any group remains expanded, a ChevronDownUp action uses the xs sort-control recipe widened to a table-owned 24px lane and collapses every group. It appears at the inline-end edge of the trailing column declared with kind action when one exists; otherwise a button-hugging 24px by 16px medium-elevation surface floats at the visible scrollport's header edge so the action remains reachable while member columns scroll beneath it. With stickyHeader enabled, each contained section uses its one real section row as a native sticky header inside its real row-group boundary. The browser therefore owns pinning, push-off, scrolling, and resize layout in one pass without a duplicated lane, active-section state, transforms, or scroll-time geometry. Shared grid tracks retain exact header and member-cell alignment. The section surface also stays pinned to the visible horizontal scrollport and spans the smaller of the visible viewport or table width.",
|
|
8716
8716
|
"An active member sort toggles only between ascending and descending; activating a different sortable label moves the one sorting state to that key. Applications may still clear the controlled sort state explicitly. Grouping does not introduce another interactive direction.",
|
|
8717
8717
|
"Compound headers can expose multiple related labels with independent sort keys. Each label owns only its content-width interaction target while the active direction remains in the column's alignment-aware sort lane.",
|
|
8718
|
-
"Initial loading uses row-shaped skeletons that preserve the standard single-line cell padding, row dividers, column dividers, selection lane, and sticky-lane boundaries. Empty, initial error, load-more, retry, loading-more, and terminal bands remain fixed to the visible table width while data columns scroll horizontally beneath them. Incremental loading retains existing rows and supports automatic sentinel, manual load-more, retry, and terminal states.",
|
|
8719
|
-
"Lazy loading replaces pagination. The application owns requests, cancellation, cursors, deduplication, appended records, and query identity
|
|
8718
|
+
"Initial loading uses row-shaped skeletons that preserve the standard single-line cell padding, row dividers, column dividers, selection lane, and sticky-lane boundaries. Empty, initial error, load-more, retry, loading-more, and terminal bands remain fixed to the visible table width while data columns scroll horizontally beneath them. Incremental loading retains existing rows and supports automatic sentinel, manual load-more, retry, and terminal states. When grouping is active, each expanded group owns its load band at the end of its member rows; the global bottom-of-table loader is not rendered.",
|
|
8719
|
+
"Lazy loading replaces pagination. The application owns requests, cancellation, cursors, deduplication, appended records, and query identity. Ungrouped requests use loadIdentity and dsLoadMore. Grouped requests use each TableGroup's hasMore, loadingMore, loadMoreError, and loadIdentity state and emit dsGroupLoadMore with the group ID; authoritative totalCount remains stable while member rows append.",
|
|
8720
8720
|
"Rows opt into complete-row activation with interactive and emit dsRowActivate without owning navigation. Selection paints through the shared selected ::before layer; interactive hover and press paint through the shared ::after layer.",
|
|
8721
8721
|
"Row selection owns the single sticky start lane. One explicitly sized application column can own the sticky end lane, or the start lane when selection is absent. Each sticky boundary owns one fixed divider and a row-clipped directional shadow that paints into the adjacent scrolling columns only while more inline content remains beyond that edge.",
|
|
8722
8722
|
"Cells accept scalar content, standard primary-and-secondary or dual-primary text primitives, declarative Tag, icon-only, 16:9 Image, or ButtonUnfilled Action content, or explicit Empty and Blank absence values. Standard secondary copy defaults to the secondary foreground and may declare a semantic Text color when the application data carries intent; dual-primary copy keeps both tracks primary unless explicitly colored. Single-track text, selection, tag-only, icon-only, Action, Empty, and Blank cells resolve a 40px base contract while multi-track cells grow downward. Tag cells use the double-inset Tag recipe; the md tag-only recipe is 24px inside 8px padding, while compound tag tracks preserve their peer text alignment. Action cells primarily use an icon-only Ellipses treatment, render a 24px small ButtonUnfilled inside 8px padding, default to unbordered, and emit row, column, and action identities through dsCellAction. Image cells render a 48px-high 16:9 bordered preview inside 8px outer padding, establishing a 64px row and a 102px column recipe, and fall back to an accessible placeholder when no source is supplied. Empty means the data applies but has no value and renders an em dash with localized assistive text; Blank means the data is not applicable and renders no content. Nullish values remain backward-compatible Empty values. Stable type and variant hooks keep every cell family independently styleable.",
|
|
@@ -8735,11 +8735,11 @@
|
|
|
8735
8735
|
"frameworkCaveats": {
|
|
8736
8736
|
"customElements": [
|
|
8737
8737
|
"Assign columns, rows, groups, grouping, sort, selectedRowIds, collapsedGroupIds, displayedCount, and totalCount through JavaScript properties rather than HTML attribute strings.",
|
|
8738
|
-
"Replace controlled property values in response to dsSortChange, dsGroupCollapseChange, dsSelectionChange, and
|
|
8738
|
+
"Replace controlled property values in response to dsSortChange, dsGroupCollapseChange, dsSelectionChange, dsLoadMore, and dsGroupLoadMore; route dsRowActivate in the application owner."
|
|
8739
8739
|
],
|
|
8740
8740
|
"react": [
|
|
8741
8741
|
"Pass new array and state-object references when the controlled data or query state changes.",
|
|
8742
|
-
"Apply emitted sort, collapse, selection, action, or loading detail to application state and perform data transformations in the owning layer."
|
|
8742
|
+
"Apply emitted sort, collapse, selection, action, or global/group loading detail to application state and perform data transformations in the owning layer."
|
|
8743
8743
|
],
|
|
8744
8744
|
"angular": [
|
|
8745
8745
|
"Bind complex table inputs as properties and update the controlled values from the corresponding output events.",
|
|
@@ -8810,6 +8810,30 @@
|
|
|
8810
8810
|
"type": "boolean",
|
|
8811
8811
|
"required": false
|
|
8812
8812
|
},
|
|
8813
|
+
"groupEndOfResultsLabel": {
|
|
8814
|
+
"type": "string",
|
|
8815
|
+
"required": false
|
|
8816
|
+
},
|
|
8817
|
+
"groupLoadMoreAriaLabel": {
|
|
8818
|
+
"type": "string",
|
|
8819
|
+
"required": false
|
|
8820
|
+
},
|
|
8821
|
+
"groupLoadMoreLabel": {
|
|
8822
|
+
"type": "string",
|
|
8823
|
+
"required": false
|
|
8824
|
+
},
|
|
8825
|
+
"groupLoadingMoreLabel": {
|
|
8826
|
+
"type": "string",
|
|
8827
|
+
"required": false
|
|
8828
|
+
},
|
|
8829
|
+
"groupRetryLabel": {
|
|
8830
|
+
"type": "string",
|
|
8831
|
+
"required": false
|
|
8832
|
+
},
|
|
8833
|
+
"groupRowsLoadedLabel": {
|
|
8834
|
+
"type": "string",
|
|
8835
|
+
"required": false
|
|
8836
|
+
},
|
|
8813
8837
|
"grouping": {
|
|
8814
8838
|
"type": "TableGroupingState | null",
|
|
8815
8839
|
"required": false
|
|
@@ -8928,6 +8952,10 @@
|
|
|
8928
8952
|
"name": "dsGroupCollapseChange",
|
|
8929
8953
|
"detail": "TableGroupCollapseChangeDetail"
|
|
8930
8954
|
},
|
|
8955
|
+
{
|
|
8956
|
+
"name": "dsGroupLoadMore",
|
|
8957
|
+
"detail": "TableGroupLoadMoreDetail"
|
|
8958
|
+
},
|
|
8931
8959
|
{
|
|
8932
8960
|
"name": "dsLoadMore",
|
|
8933
8961
|
"detail": "TableLoadMoreDetail"
|
|
@@ -69,7 +69,7 @@
|
|
|
69
69
|
"Small, medium, and large use the shared 24px, 32px, and 40px control-density recipes for the outer track. Each segment uses the same-size inset recipe at 20px, 28px, and 36px while preserving that density's typography, icon, gap, and label metrics.",
|
|
70
70
|
"Use one consistent content variant across every selectable tab in a group.",
|
|
71
71
|
"Omitted background is for primary and secondary surfaces; pass the faint context explicitly on faint surfaces.",
|
|
72
|
-
"Only the omitted default context emphasizes visible selected label text and keeps the filled track; explicit
|
|
72
|
+
"Only the omitted default context emphasizes visible selected label text and keeps the filled track; every explicit surface context uses a transparent track, stable text weight, surface border, and its context-matched neutral active fill rather than a brand active fill.",
|
|
73
73
|
"Dividers visually separate related subsets inside one tab list but do not create nested navigation or independent selection groups."
|
|
74
74
|
],
|
|
75
75
|
"responsiveBehavior": [
|
|
@@ -277,7 +277,7 @@
|
|
|
277
277
|
"files": [
|
|
278
278
|
{
|
|
279
279
|
"path": "src/wc/components/TabGroup/TabGroup.css",
|
|
280
|
-
"content": "@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(--
|
|
280
|
+
"content": "@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-faint) {\n --_tab-group-selected-fill: var(--color-interaction-active);\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 --_tab-group-selected-fill: var(--color-interaction-on-medium-background-active);\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 --_tab-group-selected-fill: var(--color-interaction-on-bold-background-active);\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 --_tab-group-selected-fill: var(--color-interaction-on-strong-background-active);\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 --_tab-group-selected-fill: var(--color-translucent-interaction-active);\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 --_tab-group-selected-fill: var(--color-inverted-interaction-active);\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 --_tab-group-selected-fill: var(--color-media-interaction-active);\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 --_tab-group-selected-fill: var(--color-always-dark-interaction-active);\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(--_tab-group-selected-fill);\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",
|
|
281
281
|
"type": "registry:ui"
|
|
282
282
|
},
|
|
283
283
|
{
|