@eui/eds 22.0.0-alpha.10 → 22.0.0-alpha.11
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/docs/changelog.html +21 -0
- package/docs/js/search/search_index.js +2 -2
- package/docs/json/documentation.json +33 -33
- package/docs/llms.txt +1 -1
- package/docs/properties.html +1 -1
- package/fesm2022/eui-eds-eds-button-group.mjs +1 -8
- package/fesm2022/eui-eds-eds-button-group.mjs.map +1 -1
- package/package.json +1 -1
- package/types/eui-eds-eds-button-group.d.ts +0 -1
- package/types/eui-eds-eds-button-group.d.ts.map +1 -1
|
@@ -22505,7 +22505,7 @@
|
|
|
22505
22505
|
},
|
|
22506
22506
|
{
|
|
22507
22507
|
"name": "EdsButtonGroup",
|
|
22508
|
-
"id": "component-EdsButtonGroup-
|
|
22508
|
+
"id": "component-EdsButtonGroup-383933f0ebcfc16fead53319fba987b7176de36749c9c1db472b1554c32f4dbe8a724aab794cbe892c4435edf6b485ccfddfef581b6e080e93a639ccf1605961",
|
|
22509
22509
|
"file": "packages/eds/eds-button-group/eds-button-group.ts",
|
|
22510
22510
|
"changeDetection": "ChangeDetectionStrategy.OnPush",
|
|
22511
22511
|
"encapsulation": [],
|
|
@@ -22546,7 +22546,7 @@
|
|
|
22546
22546
|
"indexKey": "",
|
|
22547
22547
|
"optional": false,
|
|
22548
22548
|
"description": "<p>Accessible label for the group (required for ARIA compliance).</p>\n",
|
|
22549
|
-
"line":
|
|
22549
|
+
"line": 88,
|
|
22550
22550
|
"rawdescription": "\n\nAccessible label for the group (required for ARIA compliance).\n",
|
|
22551
22551
|
"required": false
|
|
22552
22552
|
},
|
|
@@ -22560,20 +22560,20 @@
|
|
|
22560
22560
|
"indexKey": "",
|
|
22561
22561
|
"optional": false,
|
|
22562
22562
|
"description": "<p>Data attribute value for end-to-end testing identification.\n'eds-button-group'</p>\n",
|
|
22563
|
-
"line":
|
|
22563
|
+
"line": 94,
|
|
22564
22564
|
"rawdescription": "\n\nData attribute value for end-to-end testing identification.\n'eds-button-group'\n",
|
|
22565
22565
|
"jsdoctags": [
|
|
22566
22566
|
{
|
|
22567
|
-
"pos":
|
|
22568
|
-
"end":
|
|
22567
|
+
"pos": 3222,
|
|
22568
|
+
"end": 3255,
|
|
22569
22569
|
"kind": 328,
|
|
22570
22570
|
"id": 0,
|
|
22571
22571
|
"flags": 16842752,
|
|
22572
22572
|
"modifierFlagsCache": 0,
|
|
22573
22573
|
"transformFlags": 0,
|
|
22574
22574
|
"tagName": {
|
|
22575
|
-
"pos":
|
|
22576
|
-
"end":
|
|
22575
|
+
"pos": 3223,
|
|
22576
|
+
"end": 3230,
|
|
22577
22577
|
"kind": 80,
|
|
22578
22578
|
"id": 0,
|
|
22579
22579
|
"flags": 16842752,
|
|
@@ -22595,20 +22595,20 @@
|
|
|
22595
22595
|
"indexKey": "",
|
|
22596
22596
|
"optional": false,
|
|
22597
22597
|
"description": "<p>Renders the group in "connected" mode: no background container,\nbuttons are visually joined with shared borders (like a segmented control).\nWhen false (default), renders as a pill-shaped container with spaced items.\nfalse</p>\n",
|
|
22598
|
-
"line":
|
|
22598
|
+
"line": 77,
|
|
22599
22599
|
"rawdescription": "\n\nRenders the group in \"connected\" mode: no background container,\nbuttons are visually joined with shared borders (like a segmented control).\nWhen false (default), renders as a pill-shaped container with spaced items.\nfalse\n",
|
|
22600
22600
|
"jsdoctags": [
|
|
22601
22601
|
{
|
|
22602
|
-
"pos":
|
|
22603
|
-
"end":
|
|
22602
|
+
"pos": 2738,
|
|
22603
|
+
"end": 2758,
|
|
22604
22604
|
"kind": 328,
|
|
22605
22605
|
"id": 0,
|
|
22606
22606
|
"flags": 16842752,
|
|
22607
22607
|
"modifierFlagsCache": 0,
|
|
22608
22608
|
"transformFlags": 0,
|
|
22609
22609
|
"tagName": {
|
|
22610
|
-
"pos":
|
|
22611
|
-
"end":
|
|
22610
|
+
"pos": 2739,
|
|
22611
|
+
"end": 2746,
|
|
22612
22612
|
"kind": 80,
|
|
22613
22613
|
"id": 0,
|
|
22614
22614
|
"flags": 16842752,
|
|
@@ -22630,20 +22630,20 @@
|
|
|
22630
22630
|
"indexKey": "",
|
|
22631
22631
|
"optional": false,
|
|
22632
22632
|
"description": "<p>Whether items should expand to fill the available width equally.\nfalse</p>\n",
|
|
22633
|
-
"line":
|
|
22633
|
+
"line": 83,
|
|
22634
22634
|
"rawdescription": "\n\nWhether items should expand to fill the available width equally.\nfalse\n",
|
|
22635
22635
|
"jsdoctags": [
|
|
22636
22636
|
{
|
|
22637
|
-
"pos":
|
|
22638
|
-
"end":
|
|
22637
|
+
"pos": 2914,
|
|
22638
|
+
"end": 2934,
|
|
22639
22639
|
"kind": 328,
|
|
22640
22640
|
"id": 0,
|
|
22641
22641
|
"flags": 16842752,
|
|
22642
22642
|
"modifierFlagsCache": 0,
|
|
22643
22643
|
"transformFlags": 0,
|
|
22644
22644
|
"tagName": {
|
|
22645
|
-
"pos":
|
|
22646
|
-
"end":
|
|
22645
|
+
"pos": 2915,
|
|
22646
|
+
"end": 2922,
|
|
22647
22647
|
"kind": 80,
|
|
22648
22648
|
"id": 0,
|
|
22649
22649
|
"flags": 16842752,
|
|
@@ -22665,20 +22665,20 @@
|
|
|
22665
22665
|
"indexKey": "",
|
|
22666
22666
|
"optional": false,
|
|
22667
22667
|
"description": "<p>Whether multiple items can be selected at the same time.\nWhen false (default), exactly one item is always selected (radio behavior).\nfalse</p>\n",
|
|
22668
|
-
"line":
|
|
22668
|
+
"line": 69,
|
|
22669
22669
|
"rawdescription": "\n\nWhether multiple items can be selected at the same time.\nWhen false (default), exactly one item is always selected (radio behavior).\nfalse\n",
|
|
22670
22670
|
"jsdoctags": [
|
|
22671
22671
|
{
|
|
22672
|
-
"pos":
|
|
22673
|
-
"end":
|
|
22672
|
+
"pos": 2398,
|
|
22673
|
+
"end": 2418,
|
|
22674
22674
|
"kind": 328,
|
|
22675
22675
|
"id": 0,
|
|
22676
22676
|
"flags": 16842752,
|
|
22677
22677
|
"modifierFlagsCache": 0,
|
|
22678
22678
|
"transformFlags": 0,
|
|
22679
22679
|
"tagName": {
|
|
22680
|
-
"pos":
|
|
22681
|
-
"end":
|
|
22680
|
+
"pos": 2399,
|
|
22681
|
+
"end": 2406,
|
|
22682
22682
|
"kind": 80,
|
|
22683
22683
|
"id": 0,
|
|
22684
22684
|
"flags": 16842752,
|
|
@@ -22701,7 +22701,7 @@
|
|
|
22701
22701
|
"indexKey": "",
|
|
22702
22702
|
"optional": false,
|
|
22703
22703
|
"description": "<p>Emitted when any item in the group is clicked.\nPayload is the value of the clicked item.</p>\n",
|
|
22704
|
-
"line":
|
|
22704
|
+
"line": 106,
|
|
22705
22705
|
"rawdescription": "\n\nEmitted when any item in the group is clicked.\nPayload is the value of the clicked item.\n",
|
|
22706
22706
|
"required": false
|
|
22707
22707
|
},
|
|
@@ -22714,7 +22714,7 @@
|
|
|
22714
22714
|
"indexKey": "",
|
|
22715
22715
|
"optional": false,
|
|
22716
22716
|
"description": "<p>Emitted when the selection state changes.\nPayload is the array of currently selected item values.</p>\n",
|
|
22717
|
-
"line":
|
|
22717
|
+
"line": 100,
|
|
22718
22718
|
"rawdescription": "\n\nEmitted when the selection state changes.\nPayload is the array of currently selected item values.\n",
|
|
22719
22719
|
"required": false
|
|
22720
22720
|
}
|
|
@@ -22730,7 +22730,7 @@
|
|
|
22730
22730
|
"indexKey": "",
|
|
22731
22731
|
"optional": false,
|
|
22732
22732
|
"description": "<p>Dynamically resolves the ARIA role based on mode</p>\n",
|
|
22733
|
-
"line":
|
|
22733
|
+
"line": 125,
|
|
22734
22734
|
"rawdescription": "\nDynamically resolves the ARIA role based on mode"
|
|
22735
22735
|
},
|
|
22736
22736
|
{
|
|
@@ -22743,7 +22743,7 @@
|
|
|
22743
22743
|
"indexKey": "",
|
|
22744
22744
|
"optional": false,
|
|
22745
22745
|
"description": "",
|
|
22746
|
-
"line":
|
|
22746
|
+
"line": 112,
|
|
22747
22747
|
"rawdescription": "\n"
|
|
22748
22748
|
},
|
|
22749
22749
|
{
|
|
@@ -22756,7 +22756,7 @@
|
|
|
22756
22756
|
"indexKey": "",
|
|
22757
22757
|
"optional": false,
|
|
22758
22758
|
"description": "",
|
|
22759
|
-
"line":
|
|
22759
|
+
"line": 108,
|
|
22760
22760
|
"rawdescription": "\n"
|
|
22761
22761
|
},
|
|
22762
22762
|
{
|
|
@@ -22769,7 +22769,7 @@
|
|
|
22769
22769
|
"indexKey": "",
|
|
22770
22770
|
"optional": false,
|
|
22771
22771
|
"description": "",
|
|
22772
|
-
"line":
|
|
22772
|
+
"line": 110,
|
|
22773
22773
|
"rawdescription": "\n",
|
|
22774
22774
|
"modifierKind": [
|
|
22775
22775
|
124
|
|
@@ -22793,7 +22793,7 @@
|
|
|
22793
22793
|
"optional": false,
|
|
22794
22794
|
"returnType": "void",
|
|
22795
22795
|
"typeParameters": [],
|
|
22796
|
-
"line":
|
|
22796
|
+
"line": 174,
|
|
22797
22797
|
"deprecated": false,
|
|
22798
22798
|
"deprecationMessage": "",
|
|
22799
22799
|
"rawdescription": "\nHandle keyboard navigation on the group host",
|
|
@@ -22826,7 +22826,7 @@
|
|
|
22826
22826
|
"description": "<p><code>eds-button-group</code> is a styled selection group that renders as a pill-shaped\ncontainer with selectable button items inside.</p>\n<p>It supports two selection modes:</p>\n<ul>\n<li><strong>Single selection</strong> (default): One item is always selected (radio behavior).\nClicking another item deselects the previous. Cannot deselect the last item.</li>\n<li><strong>Multiple selection</strong> (<code>isMultiple</code>): Any number of items can be toggled independently.</li>\n</ul>\n<p>It supports two visual variants:</p>\n<ul>\n<li><strong>Default (pill)</strong>: Subtle grey background container with spaced items.</li>\n<li><strong>Connected</strong> (<code>isConnected</code>): Buttons joined together with shared borders, no background.</li>\n</ul>\n<p>Ideal for filter controls like "All | Draft | In Progress | Done".</p>\n<p>Implements WAI-ARIA patterns:</p>\n<ul>\n<li>Single mode: <code>role="radiogroup"</code> with child <code>role="radio"</code> + <code>aria-checked</code></li>\n<li>Multiple mode: <code>role="toolbar"</code> with child toggle buttons using <code>aria-pressed</code></li>\n</ul>\n<p>Keyboard navigation follows roving tabindex:</p>\n<ul>\n<li>Tab/Shift+Tab moves focus into/out of the group (single tab stop)</li>\n<li>Left/Right arrow keys move focus between items (skipping disabled items)</li>\n<li>Home/End move focus to first/last enabled item</li>\n<li>Space/Enter activate the focused item</li>\n<li>In single-select mode, arrow keys auto-select the focused item</li>\n</ul>\n",
|
|
22827
22827
|
"rawdescription": "\n\n`eds-button-group` is a styled selection group that renders as a pill-shaped\ncontainer with selectable button items inside.\n\nIt supports two selection modes:\n- **Single selection** (default): One item is always selected (radio behavior).\n Clicking another item deselects the previous. Cannot deselect the last item.\n- **Multiple selection** (`isMultiple`): Any number of items can be toggled independently.\n\nIt supports two visual variants:\n- **Default (pill)**: Subtle grey background container with spaced items.\n- **Connected** (`isConnected`): Buttons joined together with shared borders, no background.\n\nIdeal for filter controls like \"All | Draft | In Progress | Done\".\n\nImplements WAI-ARIA patterns:\n- Single mode: `role=\"radiogroup\"` with child `role=\"radio\"` + `aria-checked`\n- Multiple mode: `role=\"toolbar\"` with child toggle buttons using `aria-pressed`\n\nKeyboard navigation follows roving tabindex:\n- Tab/Shift+Tab moves focus into/out of the group (single tab stop)\n- Left/Right arrow keys move focus between items (skipping disabled items)\n- Home/End move focus to first/last enabled item\n- Space/Enter activate the focused item\n- In single-select mode, arrow keys auto-select the focused item\n",
|
|
22828
22828
|
"type": "component",
|
|
22829
|
-
"sourceCode": "import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n computed,\n contentChildren,\n booleanAttribute,\n
|
|
22829
|
+
"sourceCode": "import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n computed,\n contentChildren,\n booleanAttribute,\n effect,\n signal,\n inject,\n} from '@angular/core';\n\nimport { EdsSizeDirective } from '@eui/eds/shared';\nimport { EdsButtonGroupItem } from './eds-button-group-item';\n\n/**\n * `eds-button-group` is a styled selection group that renders as a pill-shaped\n * container with selectable button items inside.\n *\n * It supports two selection modes:\n * - **Single selection** (default): One item is always selected (radio behavior).\n * Clicking another item deselects the previous. Cannot deselect the last item.\n * - **Multiple selection** (`isMultiple`): Any number of items can be toggled independently.\n *\n * It supports two visual variants:\n * - **Default (pill)**: Subtle grey background container with spaced items.\n * - **Connected** (`isConnected`): Buttons joined together with shared borders, no background.\n *\n * Ideal for filter controls like \"All | Draft | In Progress | Done\".\n *\n * Implements WAI-ARIA patterns:\n * - Single mode: `role=\"radiogroup\"` with child `role=\"radio\"` + `aria-checked`\n * - Multiple mode: `role=\"toolbar\"` with child toggle buttons using `aria-pressed`\n *\n * Keyboard navigation follows roving tabindex:\n * - Tab/Shift+Tab moves focus into/out of the group (single tab stop)\n * - Left/Right arrow keys move focus between items (skipping disabled items)\n * - Home/End move focus to first/last enabled item\n * - Space/Enter activate the focused item\n * - In single-select mode, arrow keys auto-select the focused item\n */\n@Component({\n selector: 'eds-button-group',\n template: '<ng-content/>',\n styleUrl: './eds-button-group.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [\n {\n directive: EdsSizeDirective,\n inputs: ['edsSizeS', 'edsSizeM', 'edsSizeL', 'edsSizeVariant'],\n },\n ],\n host: {\n '[class]': 'hostClasses()',\n '[attr.data-e2e]': 'e2eAttr()',\n '[attr.role]': 'groupRole()',\n '[attr.aria-label]': 'ariaLabel()',\n '[attr.aria-orientation]': '\"horizontal\"',\n '(keydown)': 'onKeydown($event)',\n },\n})\nexport class EdsButtonGroup {\n /**\n * Whether multiple items can be selected at the same time.\n * When false (default), exactly one item is always selected (radio behavior).\n * @default false\n */\n isMultiple = input(false, { transform: booleanAttribute });\n\n /**\n * Renders the group in \"connected\" mode: no background container,\n * buttons are visually joined with shared borders (like a segmented control).\n * When false (default), renders as a pill-shaped container with spaced items.\n * @default false\n */\n isConnected = input(false, { transform: booleanAttribute });\n\n /**\n * Whether items should expand to fill the available width equally.\n * @default false\n */\n isFluid = input(false, { transform: booleanAttribute });\n\n /**\n * Accessible label for the group (required for ARIA compliance).\n */\n ariaLabel = input<string | undefined>(undefined);\n\n /**\n * Data attribute value for end-to-end testing identification.\n * @default 'eds-button-group'\n */\n e2eAttr = input('eds-button-group');\n\n /**\n * Emitted when the selection state changes.\n * Payload is the array of currently selected item values.\n */\n selectionChange = output<string[]>();\n\n /**\n * Emitted when any item in the group is clicked.\n * Payload is the value of the clicked item.\n */\n itemClick = output<string>();\n\n items = contentChildren(EdsButtonGroupItem);\n\n protected sizeDirective = inject(EdsSizeDirective);\n\n hostClasses = computed(() => {\n const sizeClass = this.sizeDirective.getCssClass('eds-button-group');\n return [\n 'eds-button-group',\n sizeClass || 'eds-button-group--size-m',\n this.isConnected() ? 'eds-button-group--connected' : '',\n this.isFluid() ? 'eds-button-group--fluid' : '',\n ]\n .join(' ')\n .trim();\n });\n\n /** Dynamically resolves the ARIA role based on mode */\n groupRole = computed(() => this.isMultiple() ? 'toolbar' : 'radiogroup');\n\n /** Index of the currently focused item (for roving tabindex) */\n private focusedIndex = signal(0);\n\n private boundItems = new WeakSet<EdsButtonGroupItem>();\n\n constructor() {\n effect(() => {\n const currentItems = this.items();\n if (currentItems.length === 0) return;\n\n // Propagate mode/variant flags to each item\n const isMultiple = this.isMultiple();\n const isConnected = this.isConnected();\n const isFluid = this.isFluid();\n currentItems.forEach(item => {\n item.isMultipleMode.set(isMultiple);\n item.isConnected.set(isConnected);\n item.isFluid.set(isFluid);\n });\n\n // Initialize roving tabindex: find first checked or first enabled\n let initialFocusIndex = currentItems.findIndex(item => item.isChecked());\n if (initialFocusIndex === -1) {\n initialFocusIndex = currentItems.findIndex(item => !item.disabled());\n }\n if (initialFocusIndex === -1) initialFocusIndex = 0;\n\n currentItems.forEach((item, index) => {\n item.tabIndex.set(index === initialFocusIndex ? 0 : -1);\n });\n this.focusedIndex.set(initialFocusIndex);\n\n // Bind click listeners (once per item)\n currentItems.forEach((item) => {\n if (!this.boundItems.has(item)) {\n this.boundItems.add(item);\n\n item.itemClick.subscribe(() => {\n const currentIndex = this.items().indexOf(item);\n if (currentIndex >= 0) this.handleItemClick(item, currentIndex);\n });\n }\n });\n });\n }\n\n /** Handle keyboard navigation on the group host */\n protected onKeydown(event: KeyboardEvent): void {\n const currentItems = this.items();\n const count = currentItems.length;\n if (count === 0) return;\n\n const currentIndex = this.focusedIndex();\n let newIndex = currentIndex;\n\n switch (event.key) {\n case 'ArrowRight':\n case 'ArrowDown':\n event.preventDefault();\n newIndex = this.findNextEnabledIndex(currentIndex, 1);\n break;\n case 'ArrowLeft':\n case 'ArrowUp':\n event.preventDefault();\n newIndex = this.findNextEnabledIndex(currentIndex, -1);\n break;\n case 'Home':\n event.preventDefault();\n newIndex = this.findNextEnabledIndex(-1, 1);\n break;\n case 'End':\n event.preventDefault();\n newIndex = this.findNextEnabledIndex(count, -1);\n break;\n default:\n return;\n }\n\n if (newIndex === currentIndex) return;\n\n this.setFocusedIndex(newIndex);\n currentItems[newIndex].focus();\n\n // APG Radio Group: arrow keys auto-select in single mode\n if (!this.isMultiple()) {\n this.handleItemClick(currentItems[newIndex], newIndex);\n }\n }\n\n private handleItemClick(item: EdsButtonGroupItem, index: number): void {\n if (item.disabled()) return;\n\n const currentItems = this.items();\n\n if (this.isMultiple()) {\n // Checkbox mode: toggle the clicked item\n item.isChecked.set(!item.isChecked());\n } else {\n // Radio mode: if already checked, do nothing (always one selected)\n if (item.isChecked()) {\n this.itemClick.emit(item.value());\n return;\n }\n // Uncheck all others, check clicked\n currentItems.forEach(i => i.isChecked.set(false));\n item.isChecked.set(true);\n }\n\n this.setFocusedIndex(index);\n this.itemClick.emit(item.value());\n this.selectionChange.emit(this.getSelectedValues());\n }\n\n private findNextEnabledIndex(fromIndex: number, direction: 1 | -1): number {\n const currentItems = this.items();\n const count = currentItems.length;\n\n for (let i = 1; i <= count; i++) {\n const candidateIndex = (fromIndex + i * direction + count) % count;\n if (!currentItems[candidateIndex].disabled()) {\n return candidateIndex;\n }\n }\n\n return Math.max(0, Math.min(fromIndex, count - 1));\n }\n\n private setFocusedIndex(index: number): void {\n const currentItems = this.items();\n const previousIndex = this.focusedIndex();\n\n if (previousIndex !== index && currentItems[previousIndex]) {\n currentItems[previousIndex].tabIndex.set(-1);\n }\n\n currentItems[index].tabIndex.set(0);\n this.focusedIndex.set(index);\n }\n\n private getSelectedValues(): string[] {\n return this.items()\n .filter(item => item.isChecked())\n .map(item => item.value());\n }\n}\n",
|
|
22830
22830
|
"styleUrl": "./eds-button-group.scss",
|
|
22831
22831
|
"assetsDirs": [],
|
|
22832
22832
|
"styleUrlsData": [
|
|
@@ -22838,8 +22838,8 @@
|
|
|
22838
22838
|
"stylesData": "",
|
|
22839
22839
|
"jsdoctags": [
|
|
22840
22840
|
{
|
|
22841
|
-
"pos":
|
|
22842
|
-
"end":
|
|
22841
|
+
"pos": 309,
|
|
22842
|
+
"end": 1593,
|
|
22843
22843
|
"kind": 321,
|
|
22844
22844
|
"id": 0,
|
|
22845
22845
|
"flags": 16777216,
|
|
@@ -22854,7 +22854,7 @@
|
|
|
22854
22854
|
"deprecated": false,
|
|
22855
22855
|
"deprecationMessage": "",
|
|
22856
22856
|
"args": [],
|
|
22857
|
-
"line":
|
|
22857
|
+
"line": 130,
|
|
22858
22858
|
"rawdescription": "\n"
|
|
22859
22859
|
},
|
|
22860
22860
|
"extends": [],
|
package/docs/llms.txt
CHANGED
package/docs/properties.html
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { input, model, booleanAttribute, output, inject, ElementRef, computed, ChangeDetectionStrategy, Component, contentChildren, signal,
|
|
2
|
+
import { input, model, booleanAttribute, output, inject, ElementRef, computed, ChangeDetectionStrategy, Component, contentChildren, signal, effect } from '@angular/core';
|
|
3
3
|
import * as i1 from '@eui/eds/shared';
|
|
4
4
|
import { EdsSizeDirective } from '@eui/eds/shared';
|
|
5
5
|
|
|
@@ -194,15 +194,8 @@ class EdsButtonGroup {
|
|
|
194
194
|
/** Index of the currently focused item (for roving tabindex) */
|
|
195
195
|
this.focusedIndex = signal(0, /* @ts-ignore */
|
|
196
196
|
...(ngDevMode ? [{ debugName: "focusedIndex" }] : /* istanbul ignore next */ []));
|
|
197
|
-
this.rendered = signal(false, /* @ts-ignore */
|
|
198
|
-
...(ngDevMode ? [{ debugName: "rendered" }] : /* istanbul ignore next */ []));
|
|
199
197
|
this.boundItems = new WeakSet();
|
|
200
|
-
afterNextRender(() => {
|
|
201
|
-
this.rendered.set(true);
|
|
202
|
-
});
|
|
203
198
|
effect(() => {
|
|
204
|
-
if (!this.rendered())
|
|
205
|
-
return;
|
|
206
199
|
const currentItems = this.items();
|
|
207
200
|
if (currentItems.length === 0)
|
|
208
201
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eui-eds-eds-button-group.mjs","sources":["../../eds-button-group/eds-button-group-item.ts","../../eds-button-group/eds-button-group.ts","../../eds-button-group/index.ts","../../eds-button-group/eui-eds-eds-button-group.ts"],"sourcesContent":["import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n computed,\n model,\n booleanAttribute,\n ElementRef,\n inject,\n} from '@angular/core';\n\n/**\n * A single selectable button item within `eds-button-group`.\n *\n * Renders a native `<button>` with appropriate ARIA attributes.\n * Selection state is managed by the parent group, but can be pre-set via `[isChecked]`.\n *\n * Supports projected content (text, icons, or both).\n */\n@Component({\n selector: 'eds-button-group-item',\n template: '<button (click)=\"onButtonClick()\" [attr.aria-pressed]=\"ariaPressed()\" [attr.aria-checked]=\"ariaChecked()\" [attr.role]=\"buttonRole()\" [disabled]=\"disabled()\" [tabindex]=\"tabIndex()\" type=\"button\"><ng-content/></button>',\n styleUrl: './eds-button-group-item.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n },\n})\nexport class EdsButtonGroupItem {\n /**\n * Unique value identifying this item in the group.\n * Used in the selection output and for tracking state.\n */\n value = input.required<string>();\n\n /**\n * Controls the checked/selected state of the item.\n * Managed by the parent group in single-select mode.\n * @default false\n */\n isChecked = model(false);\n\n /**\n * Whether this item is disabled and cannot be interacted with.\n * @default false\n */\n disabled = input(false, { transform: booleanAttribute });\n\n /**\n * The tabindex of the internal button, managed by the parent group\n * for roving tabindex keyboard navigation.\n * @default -1\n */\n tabIndex = model(-1);\n\n /**\n * Whether the parent group uses multiple selection (checkbox mode).\n * Set internally by the parent group — do not set manually.\n * @default false\n */\n isMultipleMode = model(false);\n\n /**\n * Whether the parent group is in connected visual mode.\n * Set internally by the parent group — do not set manually.\n * @default false\n */\n isConnected = model(false);\n\n /**\n * Whether the parent group is in fluid mode.\n * Set internally by the parent group — do not set manually.\n * @default false\n */\n isFluid = model(false);\n\n /**\n * Emitted when the item button is clicked.\n * Used internally by the parent EdsButtonGroup.\n */\n itemClick = output<EdsButtonGroupItem>();\n\n /** Reference to the host element for focus management */\n readonly elementRef = inject(ElementRef);\n\n hostClasses = computed(() => {\n return [\n 'eds-button-group-item',\n this.isChecked() ? 'eds-button-group-item--checked' : '',\n this.disabled() ? 'eds-button-group-item--disabled' : '',\n this.isConnected() ? 'eds-button-group-item--connected' : '',\n this.isFluid() ? 'eds-button-group-item--fluid' : '',\n ]\n .join(' ')\n .trim();\n });\n\n /** aria-pressed is used in checkbox/toggle mode */\n ariaPressed = computed(() => this.isMultipleMode() ? String(this.isChecked()) : null);\n\n /** aria-checked is used in single-select (radio) mode */\n ariaChecked = computed(() => !this.isMultipleMode() ? String(this.isChecked()) : null);\n\n /** Role: radio for single-select, nothing (implicit button) for multi */\n buttonRole = computed(() => !this.isMultipleMode() ? 'radio' : null);\n\n /** Focus the internal button element */\n focus(): void {\n const button = this.elementRef.nativeElement.querySelector('button') as HTMLButtonElement | null;\n button?.focus();\n }\n\n protected onButtonClick(): void {\n this.itemClick.emit(this);\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n computed,\n contentChildren,\n booleanAttribute,\n afterNextRender,\n effect,\n signal,\n inject,\n} from '@angular/core';\n\nimport { EdsSizeDirective } from '@eui/eds/shared';\nimport { EdsButtonGroupItem } from './eds-button-group-item';\n\n/**\n * `eds-button-group` is a styled selection group that renders as a pill-shaped\n * container with selectable button items inside.\n *\n * It supports two selection modes:\n * - **Single selection** (default): One item is always selected (radio behavior).\n * Clicking another item deselects the previous. Cannot deselect the last item.\n * - **Multiple selection** (`isMultiple`): Any number of items can be toggled independently.\n *\n * It supports two visual variants:\n * - **Default (pill)**: Subtle grey background container with spaced items.\n * - **Connected** (`isConnected`): Buttons joined together with shared borders, no background.\n *\n * Ideal for filter controls like \"All | Draft | In Progress | Done\".\n *\n * Implements WAI-ARIA patterns:\n * - Single mode: `role=\"radiogroup\"` with child `role=\"radio\"` + `aria-checked`\n * - Multiple mode: `role=\"toolbar\"` with child toggle buttons using `aria-pressed`\n *\n * Keyboard navigation follows roving tabindex:\n * - Tab/Shift+Tab moves focus into/out of the group (single tab stop)\n * - Left/Right arrow keys move focus between items (skipping disabled items)\n * - Home/End move focus to first/last enabled item\n * - Space/Enter activate the focused item\n * - In single-select mode, arrow keys auto-select the focused item\n */\n@Component({\n selector: 'eds-button-group',\n template: '<ng-content/>',\n styleUrl: './eds-button-group.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [\n {\n directive: EdsSizeDirective,\n inputs: ['edsSizeS', 'edsSizeM', 'edsSizeL', 'edsSizeVariant'],\n },\n ],\n host: {\n '[class]': 'hostClasses()',\n '[attr.data-e2e]': 'e2eAttr()',\n '[attr.role]': 'groupRole()',\n '[attr.aria-label]': 'ariaLabel()',\n '[attr.aria-orientation]': '\"horizontal\"',\n '(keydown)': 'onKeydown($event)',\n },\n})\nexport class EdsButtonGroup {\n /**\n * Whether multiple items can be selected at the same time.\n * When false (default), exactly one item is always selected (radio behavior).\n * @default false\n */\n isMultiple = input(false, { transform: booleanAttribute });\n\n /**\n * Renders the group in \"connected\" mode: no background container,\n * buttons are visually joined with shared borders (like a segmented control).\n * When false (default), renders as a pill-shaped container with spaced items.\n * @default false\n */\n isConnected = input(false, { transform: booleanAttribute });\n\n /**\n * Whether items should expand to fill the available width equally.\n * @default false\n */\n isFluid = input(false, { transform: booleanAttribute });\n\n /**\n * Accessible label for the group (required for ARIA compliance).\n */\n ariaLabel = input<string | undefined>(undefined);\n\n /**\n * Data attribute value for end-to-end testing identification.\n * @default 'eds-button-group'\n */\n e2eAttr = input('eds-button-group');\n\n /**\n * Emitted when the selection state changes.\n * Payload is the array of currently selected item values.\n */\n selectionChange = output<string[]>();\n\n /**\n * Emitted when any item in the group is clicked.\n * Payload is the value of the clicked item.\n */\n itemClick = output<string>();\n\n items = contentChildren(EdsButtonGroupItem);\n\n protected sizeDirective = inject(EdsSizeDirective);\n\n hostClasses = computed(() => {\n const sizeClass = this.sizeDirective.getCssClass('eds-button-group');\n return [\n 'eds-button-group',\n sizeClass || 'eds-button-group--size-m',\n this.isConnected() ? 'eds-button-group--connected' : '',\n this.isFluid() ? 'eds-button-group--fluid' : '',\n ]\n .join(' ')\n .trim();\n });\n\n /** Dynamically resolves the ARIA role based on mode */\n groupRole = computed(() => this.isMultiple() ? 'toolbar' : 'radiogroup');\n\n /** Index of the currently focused item (for roving tabindex) */\n private focusedIndex = signal(0);\n\n private rendered = signal(false);\n private boundItems = new WeakSet<EdsButtonGroupItem>();\n\n constructor() {\n afterNextRender(() => {\n this.rendered.set(true);\n });\n\n effect(() => {\n if (!this.rendered()) return;\n\n const currentItems = this.items();\n if (currentItems.length === 0) return;\n\n // Propagate mode/variant flags to each item\n const isMultiple = this.isMultiple();\n const isConnected = this.isConnected();\n const isFluid = this.isFluid();\n currentItems.forEach(item => {\n item.isMultipleMode.set(isMultiple);\n item.isConnected.set(isConnected);\n item.isFluid.set(isFluid);\n });\n\n // Initialize roving tabindex: find first checked or first enabled\n let initialFocusIndex = currentItems.findIndex(item => item.isChecked());\n if (initialFocusIndex === -1) {\n initialFocusIndex = currentItems.findIndex(item => !item.disabled());\n }\n if (initialFocusIndex === -1) initialFocusIndex = 0;\n\n currentItems.forEach((item, index) => {\n item.tabIndex.set(index === initialFocusIndex ? 0 : -1);\n });\n this.focusedIndex.set(initialFocusIndex);\n\n // Bind click listeners (once per item)\n currentItems.forEach((item) => {\n if (!this.boundItems.has(item)) {\n this.boundItems.add(item);\n\n item.itemClick.subscribe(() => {\n const currentIndex = this.items().indexOf(item);\n if (currentIndex >= 0) this.handleItemClick(item, currentIndex);\n });\n }\n });\n });\n }\n\n /** Handle keyboard navigation on the group host */\n protected onKeydown(event: KeyboardEvent): void {\n const currentItems = this.items();\n const count = currentItems.length;\n if (count === 0) return;\n\n const currentIndex = this.focusedIndex();\n let newIndex = currentIndex;\n\n switch (event.key) {\n case 'ArrowRight':\n case 'ArrowDown':\n event.preventDefault();\n newIndex = this.findNextEnabledIndex(currentIndex, 1);\n break;\n case 'ArrowLeft':\n case 'ArrowUp':\n event.preventDefault();\n newIndex = this.findNextEnabledIndex(currentIndex, -1);\n break;\n case 'Home':\n event.preventDefault();\n newIndex = this.findNextEnabledIndex(-1, 1);\n break;\n case 'End':\n event.preventDefault();\n newIndex = this.findNextEnabledIndex(count, -1);\n break;\n default:\n return;\n }\n\n if (newIndex === currentIndex) return;\n\n this.setFocusedIndex(newIndex);\n currentItems[newIndex].focus();\n\n // APG Radio Group: arrow keys auto-select in single mode\n if (!this.isMultiple()) {\n this.handleItemClick(currentItems[newIndex], newIndex);\n }\n }\n\n private handleItemClick(item: EdsButtonGroupItem, index: number): void {\n if (item.disabled()) return;\n\n const currentItems = this.items();\n\n if (this.isMultiple()) {\n // Checkbox mode: toggle the clicked item\n item.isChecked.set(!item.isChecked());\n } else {\n // Radio mode: if already checked, do nothing (always one selected)\n if (item.isChecked()) {\n this.itemClick.emit(item.value());\n return;\n }\n // Uncheck all others, check clicked\n currentItems.forEach(i => i.isChecked.set(false));\n item.isChecked.set(true);\n }\n\n this.setFocusedIndex(index);\n this.itemClick.emit(item.value());\n this.selectionChange.emit(this.getSelectedValues());\n }\n\n private findNextEnabledIndex(fromIndex: number, direction: 1 | -1): number {\n const currentItems = this.items();\n const count = currentItems.length;\n\n for (let i = 1; i <= count; i++) {\n const candidateIndex = (fromIndex + i * direction + count) % count;\n if (!currentItems[candidateIndex].disabled()) {\n return candidateIndex;\n }\n }\n\n return Math.max(0, Math.min(fromIndex, count - 1));\n }\n\n private setFocusedIndex(index: number): void {\n const currentItems = this.items();\n const previousIndex = this.focusedIndex();\n\n if (previousIndex !== index && currentItems[previousIndex]) {\n currentItems[previousIndex].tabIndex.set(-1);\n }\n\n currentItems[index].tabIndex.set(0);\n this.focusedIndex.set(index);\n }\n\n private getSelectedValues(): string[] {\n return this.items()\n .filter(item => item.isChecked())\n .map(item => item.value());\n }\n}\n","import { EdsButtonGroup } from './eds-button-group';\nimport { EdsButtonGroupItem } from './eds-button-group-item';\n\nexport { EdsButtonGroup, EdsButtonGroupItem };\n\n/** Convenience array for importing all eds-button-group components. */\nexport const EDS_BUTTON_GROUP = [\n EdsButtonGroup,\n EdsButtonGroupItem,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAYA;;;;;;;AAOG;MAUU,kBAAkB,CAAA;AAT/B,IAAA,WAAA,GAAA;AAUI;;;AAGG;QACH,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,QAAQ;kFAAU;AAEhC;;;;AAIG;QACH,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,KAAK;sFAAC;AAExB;;;AAGG;QACH,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAExD;;;;AAIG;AACH,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC;qFAAC;AAEpB;;;;AAIG;QACH,IAAA,CAAA,cAAc,GAAG,KAAK,CAAC,KAAK;2FAAC;AAE7B;;;;AAIG;QACH,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,KAAK;wFAAC;AAE1B;;;;AAIG;QACH,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,KAAK;oFAAC;AAEtB;;;AAGG;QACH,IAAA,CAAA,SAAS,GAAG,MAAM,EAAsB;;AAG/B,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAExC,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;YACxB,OAAO;gBACH,uBAAuB;gBACvB,IAAI,CAAC,SAAS,EAAE,GAAG,gCAAgC,GAAG,EAAE;gBACxD,IAAI,CAAC,QAAQ,EAAE,GAAG,iCAAiC,GAAG,EAAE;gBACxD,IAAI,CAAC,WAAW,EAAE,GAAG,kCAAkC,GAAG,EAAE;gBAC5D,IAAI,CAAC,OAAO,EAAE,GAAG,8BAA8B,GAAG,EAAE;AACvD;iBACI,IAAI,CAAC,GAAG;AACR,iBAAA,IAAI,EAAE;QACf,CAAC;wFAAC;;QAGF,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,GAAG,IAAI;wFAAC;;QAGrF,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,GAAG,IAAI;wFAAC;;AAGtF,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,OAAO,GAAG,IAAI;uFAAC;AAWvE,IAAA;;IARG,KAAK,GAAA;AACD,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,QAAQ,CAA6B;QAChG,MAAM,EAAE,KAAK,EAAE;IACnB;IAEU,aAAa,GAAA;AACnB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;IAC7B;8GAtFS,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,4uCAPjB,2NAA2N,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,45FAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAO5N,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAT9B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,YACvB,2NAA2N,EAAA,eAAA,EAEpN,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACF,wBAAA,SAAS,EAAE,eAAe;AAC7B,qBAAA,EAAA,MAAA,EAAA,CAAA,45FAAA,CAAA,EAAA;;;ACVL;;;;;;;;;;;;;;;;;;;;;;;;;AAyBG;MAqBU,cAAc,CAAA;AAsEvB,IAAA,WAAA,GAAA;AArEA;;;;AAIG;QACH,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,KAAK,kFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAE1D;;;;;AAKG;QACH,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,KAAK,mFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAE3D;;;AAGG;QACH,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,KAAK,+EAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAEvD;;AAEG;QACH,IAAA,CAAA,SAAS,GAAG,KAAK,CAAqB,SAAS;sFAAC;AAEhD;;;AAGG;QACH,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,kBAAkB;oFAAC;AAEnC;;;AAGG;QACH,IAAA,CAAA,eAAe,GAAG,MAAM,EAAY;AAEpC;;;AAGG;QACH,IAAA,CAAA,SAAS,GAAG,MAAM,EAAU;QAE5B,IAAA,CAAA,KAAK,GAAG,eAAe,CAAC,kBAAkB;kFAAC;AAEjC,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAElD,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;YACxB,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,kBAAkB,CAAC;YACpE,OAAO;gBACH,kBAAkB;AAClB,gBAAA,SAAS,IAAI,0BAA0B;gBACvC,IAAI,CAAC,WAAW,EAAE,GAAG,6BAA6B,GAAG,EAAE;gBACvD,IAAI,CAAC,OAAO,EAAE,GAAG,yBAAyB,GAAG,EAAE;AAClD;iBACI,IAAI,CAAC,GAAG;AACR,iBAAA,IAAI,EAAE;QACf,CAAC;wFAAC;;AAGF,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,GAAG,SAAS,GAAG,YAAY;sFAAC;;QAGhE,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,CAAC;yFAAC;QAExB,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,KAAK;qFAAC;AACxB,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,OAAO,EAAsB;QAGlD,eAAe,CAAC,MAAK;AACjB,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;AAC3B,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACR,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAAE;AAEtB,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,EAAE;AACjC,YAAA,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;gBAAE;;AAG/B,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE;AACpC,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE;AACtC,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAC9B,YAAA,YAAY,CAAC,OAAO,CAAC,IAAI,IAAG;AACxB,gBAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC;AACnC,gBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC;AACjC,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;AAC7B,YAAA,CAAC,CAAC;;AAGF,YAAA,IAAI,iBAAiB,GAAG,YAAY,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;AACxE,YAAA,IAAI,iBAAiB,KAAK,CAAC,CAAC,EAAE;AAC1B,gBAAA,iBAAiB,GAAG,YAAY,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACxE;YACA,IAAI,iBAAiB,KAAK,CAAC,CAAC;gBAAE,iBAAiB,GAAG,CAAC;YAEnD,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;AACjC,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,KAAK,iBAAiB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3D,YAAA,CAAC,CAAC;AACF,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,iBAAiB,CAAC;;AAGxC,YAAA,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;gBAC1B,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AAC5B,oBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;AAEzB,oBAAA,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAK;wBAC1B,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;wBAC/C,IAAI,YAAY,IAAI,CAAC;AAAE,4BAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,YAAY,CAAC;AACnE,oBAAA,CAAC,CAAC;gBACN;AACJ,YAAA,CAAC,CAAC;AACN,QAAA,CAAC,CAAC;IACN;;AAGU,IAAA,SAAS,CAAC,KAAoB,EAAA;AACpC,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,EAAE;AACjC,QAAA,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM;QACjC,IAAI,KAAK,KAAK,CAAC;YAAE;AAEjB,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE;QACxC,IAAI,QAAQ,GAAG,YAAY;AAE3B,QAAA,QAAQ,KAAK,CAAC,GAAG;AACb,YAAA,KAAK,YAAY;AACjB,YAAA,KAAK,WAAW;gBACZ,KAAK,CAAC,cAAc,EAAE;gBACtB,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC,CAAC;gBACrD;AACJ,YAAA,KAAK,WAAW;AAChB,YAAA,KAAK,SAAS;gBACV,KAAK,CAAC,cAAc,EAAE;gBACtB,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;gBACtD;AACJ,YAAA,KAAK,MAAM;gBACP,KAAK,CAAC,cAAc,EAAE;gBACtB,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC3C;AACJ,YAAA,KAAK,KAAK;gBACN,KAAK,CAAC,cAAc,EAAE;gBACtB,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;gBAC/C;AACJ,YAAA;gBACI;;QAGR,IAAI,QAAQ,KAAK,YAAY;YAAE;AAE/B,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC;AAC9B,QAAA,YAAY,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE;;AAG9B,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE;YACpB,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC;QAC1D;IACJ;IAEQ,eAAe,CAAC,IAAwB,EAAE,KAAa,EAAA;QAC3D,IAAI,IAAI,CAAC,QAAQ,EAAE;YAAE;AAErB,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,EAAE;AAEjC,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;;YAEnB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QACzC;aAAO;;AAEH,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;gBAClB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACjC;YACJ;;AAEA,YAAA,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACjD,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;QAC5B;AAEA,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACjC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;IACvD;IAEQ,oBAAoB,CAAC,SAAiB,EAAE,SAAiB,EAAA;AAC7D,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,EAAE;AACjC,QAAA,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM;AAEjC,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,EAAE,EAAE;AAC7B,YAAA,MAAM,cAAc,GAAG,CAAC,SAAS,GAAG,CAAC,GAAG,SAAS,GAAG,KAAK,IAAI,KAAK;YAClE,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,QAAQ,EAAE,EAAE;AAC1C,gBAAA,OAAO,cAAc;YACzB;QACJ;AAEA,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;IACtD;AAEQ,IAAA,eAAe,CAAC,KAAa,EAAA;AACjC,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,EAAE;AACjC,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,EAAE;QAEzC,IAAI,aAAa,KAAK,KAAK,IAAI,YAAY,CAAC,aAAa,CAAC,EAAE;YACxD,YAAY,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAChD;QAEA,YAAY,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AACnC,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;IAChC;IAEQ,iBAAiB,GAAA;QACrB,OAAO,IAAI,CAAC,KAAK;aACZ,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE;aAC/B,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;IAClC;8GAtNS,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,eAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EA6CC,kBAAkB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA/DhC,eAAe,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,+lCAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAkBhB,cAAc,EAAA,UAAA,EAAA,CAAA;kBApB1B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,YAClB,eAAe,EAAA,eAAA,EAER,uBAAuB,CAAC,MAAM,EAAA,cAAA,EAC/B;AACZ,wBAAA;AACI,4BAAA,SAAS,EAAE,gBAAgB;4BAC3B,MAAM,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,CAAC;AACjE,yBAAA;qBACJ,EAAA,IAAA,EACK;AACF,wBAAA,SAAS,EAAE,eAAe;AAC1B,wBAAA,iBAAiB,EAAE,WAAW;AAC9B,wBAAA,aAAa,EAAE,aAAa;AAC5B,wBAAA,mBAAmB,EAAE,aAAa;AAClC,wBAAA,yBAAyB,EAAE,cAAc;AACzC,wBAAA,WAAW,EAAE,mBAAmB;AACnC,qBAAA,EAAA,MAAA,EAAA,CAAA,+lCAAA,CAAA,EAAA;ytBA+CuB,kBAAkB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ACvG9C;AACO,MAAM,gBAAgB,GAAG;IAC5B,cAAc;IACd,kBAAkB;;;ACRtB;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"eui-eds-eds-button-group.mjs","sources":["../../eds-button-group/eds-button-group-item.ts","../../eds-button-group/eds-button-group.ts","../../eds-button-group/index.ts","../../eds-button-group/eui-eds-eds-button-group.ts"],"sourcesContent":["import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n computed,\n model,\n booleanAttribute,\n ElementRef,\n inject,\n} from '@angular/core';\n\n/**\n * A single selectable button item within `eds-button-group`.\n *\n * Renders a native `<button>` with appropriate ARIA attributes.\n * Selection state is managed by the parent group, but can be pre-set via `[isChecked]`.\n *\n * Supports projected content (text, icons, or both).\n */\n@Component({\n selector: 'eds-button-group-item',\n template: '<button (click)=\"onButtonClick()\" [attr.aria-pressed]=\"ariaPressed()\" [attr.aria-checked]=\"ariaChecked()\" [attr.role]=\"buttonRole()\" [disabled]=\"disabled()\" [tabindex]=\"tabIndex()\" type=\"button\"><ng-content/></button>',\n styleUrl: './eds-button-group-item.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n },\n})\nexport class EdsButtonGroupItem {\n /**\n * Unique value identifying this item in the group.\n * Used in the selection output and for tracking state.\n */\n value = input.required<string>();\n\n /**\n * Controls the checked/selected state of the item.\n * Managed by the parent group in single-select mode.\n * @default false\n */\n isChecked = model(false);\n\n /**\n * Whether this item is disabled and cannot be interacted with.\n * @default false\n */\n disabled = input(false, { transform: booleanAttribute });\n\n /**\n * The tabindex of the internal button, managed by the parent group\n * for roving tabindex keyboard navigation.\n * @default -1\n */\n tabIndex = model(-1);\n\n /**\n * Whether the parent group uses multiple selection (checkbox mode).\n * Set internally by the parent group — do not set manually.\n * @default false\n */\n isMultipleMode = model(false);\n\n /**\n * Whether the parent group is in connected visual mode.\n * Set internally by the parent group — do not set manually.\n * @default false\n */\n isConnected = model(false);\n\n /**\n * Whether the parent group is in fluid mode.\n * Set internally by the parent group — do not set manually.\n * @default false\n */\n isFluid = model(false);\n\n /**\n * Emitted when the item button is clicked.\n * Used internally by the parent EdsButtonGroup.\n */\n itemClick = output<EdsButtonGroupItem>();\n\n /** Reference to the host element for focus management */\n readonly elementRef = inject(ElementRef);\n\n hostClasses = computed(() => {\n return [\n 'eds-button-group-item',\n this.isChecked() ? 'eds-button-group-item--checked' : '',\n this.disabled() ? 'eds-button-group-item--disabled' : '',\n this.isConnected() ? 'eds-button-group-item--connected' : '',\n this.isFluid() ? 'eds-button-group-item--fluid' : '',\n ]\n .join(' ')\n .trim();\n });\n\n /** aria-pressed is used in checkbox/toggle mode */\n ariaPressed = computed(() => this.isMultipleMode() ? String(this.isChecked()) : null);\n\n /** aria-checked is used in single-select (radio) mode */\n ariaChecked = computed(() => !this.isMultipleMode() ? String(this.isChecked()) : null);\n\n /** Role: radio for single-select, nothing (implicit button) for multi */\n buttonRole = computed(() => !this.isMultipleMode() ? 'radio' : null);\n\n /** Focus the internal button element */\n focus(): void {\n const button = this.elementRef.nativeElement.querySelector('button') as HTMLButtonElement | null;\n button?.focus();\n }\n\n protected onButtonClick(): void {\n this.itemClick.emit(this);\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n computed,\n contentChildren,\n booleanAttribute,\n effect,\n signal,\n inject,\n} from '@angular/core';\n\nimport { EdsSizeDirective } from '@eui/eds/shared';\nimport { EdsButtonGroupItem } from './eds-button-group-item';\n\n/**\n * `eds-button-group` is a styled selection group that renders as a pill-shaped\n * container with selectable button items inside.\n *\n * It supports two selection modes:\n * - **Single selection** (default): One item is always selected (radio behavior).\n * Clicking another item deselects the previous. Cannot deselect the last item.\n * - **Multiple selection** (`isMultiple`): Any number of items can be toggled independently.\n *\n * It supports two visual variants:\n * - **Default (pill)**: Subtle grey background container with spaced items.\n * - **Connected** (`isConnected`): Buttons joined together with shared borders, no background.\n *\n * Ideal for filter controls like \"All | Draft | In Progress | Done\".\n *\n * Implements WAI-ARIA patterns:\n * - Single mode: `role=\"radiogroup\"` with child `role=\"radio\"` + `aria-checked`\n * - Multiple mode: `role=\"toolbar\"` with child toggle buttons using `aria-pressed`\n *\n * Keyboard navigation follows roving tabindex:\n * - Tab/Shift+Tab moves focus into/out of the group (single tab stop)\n * - Left/Right arrow keys move focus between items (skipping disabled items)\n * - Home/End move focus to first/last enabled item\n * - Space/Enter activate the focused item\n * - In single-select mode, arrow keys auto-select the focused item\n */\n@Component({\n selector: 'eds-button-group',\n template: '<ng-content/>',\n styleUrl: './eds-button-group.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [\n {\n directive: EdsSizeDirective,\n inputs: ['edsSizeS', 'edsSizeM', 'edsSizeL', 'edsSizeVariant'],\n },\n ],\n host: {\n '[class]': 'hostClasses()',\n '[attr.data-e2e]': 'e2eAttr()',\n '[attr.role]': 'groupRole()',\n '[attr.aria-label]': 'ariaLabel()',\n '[attr.aria-orientation]': '\"horizontal\"',\n '(keydown)': 'onKeydown($event)',\n },\n})\nexport class EdsButtonGroup {\n /**\n * Whether multiple items can be selected at the same time.\n * When false (default), exactly one item is always selected (radio behavior).\n * @default false\n */\n isMultiple = input(false, { transform: booleanAttribute });\n\n /**\n * Renders the group in \"connected\" mode: no background container,\n * buttons are visually joined with shared borders (like a segmented control).\n * When false (default), renders as a pill-shaped container with spaced items.\n * @default false\n */\n isConnected = input(false, { transform: booleanAttribute });\n\n /**\n * Whether items should expand to fill the available width equally.\n * @default false\n */\n isFluid = input(false, { transform: booleanAttribute });\n\n /**\n * Accessible label for the group (required for ARIA compliance).\n */\n ariaLabel = input<string | undefined>(undefined);\n\n /**\n * Data attribute value for end-to-end testing identification.\n * @default 'eds-button-group'\n */\n e2eAttr = input('eds-button-group');\n\n /**\n * Emitted when the selection state changes.\n * Payload is the array of currently selected item values.\n */\n selectionChange = output<string[]>();\n\n /**\n * Emitted when any item in the group is clicked.\n * Payload is the value of the clicked item.\n */\n itemClick = output<string>();\n\n items = contentChildren(EdsButtonGroupItem);\n\n protected sizeDirective = inject(EdsSizeDirective);\n\n hostClasses = computed(() => {\n const sizeClass = this.sizeDirective.getCssClass('eds-button-group');\n return [\n 'eds-button-group',\n sizeClass || 'eds-button-group--size-m',\n this.isConnected() ? 'eds-button-group--connected' : '',\n this.isFluid() ? 'eds-button-group--fluid' : '',\n ]\n .join(' ')\n .trim();\n });\n\n /** Dynamically resolves the ARIA role based on mode */\n groupRole = computed(() => this.isMultiple() ? 'toolbar' : 'radiogroup');\n\n /** Index of the currently focused item (for roving tabindex) */\n private focusedIndex = signal(0);\n\n private boundItems = new WeakSet<EdsButtonGroupItem>();\n\n constructor() {\n effect(() => {\n const currentItems = this.items();\n if (currentItems.length === 0) return;\n\n // Propagate mode/variant flags to each item\n const isMultiple = this.isMultiple();\n const isConnected = this.isConnected();\n const isFluid = this.isFluid();\n currentItems.forEach(item => {\n item.isMultipleMode.set(isMultiple);\n item.isConnected.set(isConnected);\n item.isFluid.set(isFluid);\n });\n\n // Initialize roving tabindex: find first checked or first enabled\n let initialFocusIndex = currentItems.findIndex(item => item.isChecked());\n if (initialFocusIndex === -1) {\n initialFocusIndex = currentItems.findIndex(item => !item.disabled());\n }\n if (initialFocusIndex === -1) initialFocusIndex = 0;\n\n currentItems.forEach((item, index) => {\n item.tabIndex.set(index === initialFocusIndex ? 0 : -1);\n });\n this.focusedIndex.set(initialFocusIndex);\n\n // Bind click listeners (once per item)\n currentItems.forEach((item) => {\n if (!this.boundItems.has(item)) {\n this.boundItems.add(item);\n\n item.itemClick.subscribe(() => {\n const currentIndex = this.items().indexOf(item);\n if (currentIndex >= 0) this.handleItemClick(item, currentIndex);\n });\n }\n });\n });\n }\n\n /** Handle keyboard navigation on the group host */\n protected onKeydown(event: KeyboardEvent): void {\n const currentItems = this.items();\n const count = currentItems.length;\n if (count === 0) return;\n\n const currentIndex = this.focusedIndex();\n let newIndex = currentIndex;\n\n switch (event.key) {\n case 'ArrowRight':\n case 'ArrowDown':\n event.preventDefault();\n newIndex = this.findNextEnabledIndex(currentIndex, 1);\n break;\n case 'ArrowLeft':\n case 'ArrowUp':\n event.preventDefault();\n newIndex = this.findNextEnabledIndex(currentIndex, -1);\n break;\n case 'Home':\n event.preventDefault();\n newIndex = this.findNextEnabledIndex(-1, 1);\n break;\n case 'End':\n event.preventDefault();\n newIndex = this.findNextEnabledIndex(count, -1);\n break;\n default:\n return;\n }\n\n if (newIndex === currentIndex) return;\n\n this.setFocusedIndex(newIndex);\n currentItems[newIndex].focus();\n\n // APG Radio Group: arrow keys auto-select in single mode\n if (!this.isMultiple()) {\n this.handleItemClick(currentItems[newIndex], newIndex);\n }\n }\n\n private handleItemClick(item: EdsButtonGroupItem, index: number): void {\n if (item.disabled()) return;\n\n const currentItems = this.items();\n\n if (this.isMultiple()) {\n // Checkbox mode: toggle the clicked item\n item.isChecked.set(!item.isChecked());\n } else {\n // Radio mode: if already checked, do nothing (always one selected)\n if (item.isChecked()) {\n this.itemClick.emit(item.value());\n return;\n }\n // Uncheck all others, check clicked\n currentItems.forEach(i => i.isChecked.set(false));\n item.isChecked.set(true);\n }\n\n this.setFocusedIndex(index);\n this.itemClick.emit(item.value());\n this.selectionChange.emit(this.getSelectedValues());\n }\n\n private findNextEnabledIndex(fromIndex: number, direction: 1 | -1): number {\n const currentItems = this.items();\n const count = currentItems.length;\n\n for (let i = 1; i <= count; i++) {\n const candidateIndex = (fromIndex + i * direction + count) % count;\n if (!currentItems[candidateIndex].disabled()) {\n return candidateIndex;\n }\n }\n\n return Math.max(0, Math.min(fromIndex, count - 1));\n }\n\n private setFocusedIndex(index: number): void {\n const currentItems = this.items();\n const previousIndex = this.focusedIndex();\n\n if (previousIndex !== index && currentItems[previousIndex]) {\n currentItems[previousIndex].tabIndex.set(-1);\n }\n\n currentItems[index].tabIndex.set(0);\n this.focusedIndex.set(index);\n }\n\n private getSelectedValues(): string[] {\n return this.items()\n .filter(item => item.isChecked())\n .map(item => item.value());\n }\n}\n","import { EdsButtonGroup } from './eds-button-group';\nimport { EdsButtonGroupItem } from './eds-button-group-item';\n\nexport { EdsButtonGroup, EdsButtonGroupItem };\n\n/** Convenience array for importing all eds-button-group components. */\nexport const EDS_BUTTON_GROUP = [\n EdsButtonGroup,\n EdsButtonGroupItem,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -144,7 +144,6 @@ declare class EdsButtonGroup {
|
|
|
144
144
|
groupRole: _angular_core.Signal<"toolbar" | "radiogroup">;
|
|
145
145
|
/** Index of the currently focused item (for roving tabindex) */
|
|
146
146
|
private focusedIndex;
|
|
147
|
-
private rendered;
|
|
148
147
|
private boundItems;
|
|
149
148
|
constructor();
|
|
150
149
|
/** Handle keyboard navigation on the group host */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eui-eds-eds-button-group.d.ts","sources":["../../eds-button-group/eds-button-group-item.ts","../../eds-button-group/eds-button-group.ts","../../eds-button-group/index.ts"],"mappings":";;;;;AAYA;;;;;;;AAOG;AACH,cASa,kBAAkB;AAC3B;;;AAGG;AACH,WAAK,aAAA,CAAA,WAAA;AAEL;;;;AAIG;AACH,eAAS,aAAA,CAAA,WAAA;AAET;;;AAGG;AACH,cAAQ,aAAA,CAAA,wBAAA;AAER;;;;AAIG;AACH,cAAQ,aAAA,CAAA,WAAA;AAER;;;;AAIG;AACH,oBAAc,aAAA,CAAA,WAAA;AAEd;;;;AAIG;AACH,iBAAW,aAAA,CAAA,WAAA;AAEX;;;;AAIG;AACH,aAAO,aAAA,CAAA,WAAA;AAEP;;;AAGG;AACH,eAAS,aAAA,CAAA,gBAAA,CAAA,kBAAA;;yBAGU,UAAA;AAEnB,iBAAW,aAAA,CAAA,MAAA;;AAaX,iBAAW,aAAA,CAAA,MAAA;;AAGX,iBAAW,aAAA,CAAA,MAAA;;AAGX,gBAAU,aAAA,CAAA,MAAA;;AAGV;;oDA/ES,kBAAkB;sDAAlB,kBAAkB;AAuF9B;;
|
|
1
|
+
{"version":3,"file":"eui-eds-eds-button-group.d.ts","sources":["../../eds-button-group/eds-button-group-item.ts","../../eds-button-group/eds-button-group.ts","../../eds-button-group/index.ts"],"mappings":";;;;;AAYA;;;;;;;AAOG;AACH,cASa,kBAAkB;AAC3B;;;AAGG;AACH,WAAK,aAAA,CAAA,WAAA;AAEL;;;;AAIG;AACH,eAAS,aAAA,CAAA,WAAA;AAET;;;AAGG;AACH,cAAQ,aAAA,CAAA,wBAAA;AAER;;;;AAIG;AACH,cAAQ,aAAA,CAAA,WAAA;AAER;;;;AAIG;AACH,oBAAc,aAAA,CAAA,WAAA;AAEd;;;;AAIG;AACH,iBAAW,aAAA,CAAA,WAAA;AAEX;;;;AAIG;AACH,aAAO,aAAA,CAAA,WAAA;AAEP;;;AAGG;AACH,eAAS,aAAA,CAAA,gBAAA,CAAA,kBAAA;;yBAGU,UAAA;AAEnB,iBAAW,aAAA,CAAA,MAAA;;AAaX,iBAAW,aAAA,CAAA,MAAA;;AAGX,iBAAW,aAAA,CAAA,MAAA;;AAGX,gBAAU,aAAA,CAAA,MAAA;;AAGV;;oDA/ES,kBAAkB;sDAAlB,kBAAkB;AAuF9B;;ACpGD;;;;;;;;;;;;;;;;;;;;;;;;;AAyBG;AACH,cAoBa,cAAc;AACvB;;;;AAIG;AACH,gBAAU,aAAA,CAAA,wBAAA;AAEV;;;;;AAKG;AACH,iBAAW,aAAA,CAAA,wBAAA;AAEX;;;AAGG;AACH,aAAO,aAAA,CAAA,wBAAA;AAEP;;AAEG;AACH,eAAS,aAAA,CAAA,WAAA;AAET;;;AAGG;AACH,aAAO,aAAA,CAAA,WAAA;AAEP;;;AAGG;AACH,qBAAe,aAAA,CAAA,gBAAA;AAEf;;;AAGG;AACH,eAAS,aAAA,CAAA,gBAAA;AAET,WAAK,aAAA,CAAA,MAAA,UAAA,kBAAA;6BAEkB,gBAAA;AAEvB,iBAAW,aAAA,CAAA,MAAA;;AAaX,eAAS,aAAA,CAAA,MAAA;;;;;;AAiDT,+BAA2B,aAAa;AA0CxC;AAwBA;AAcA;AAYA;oDA3MS,cAAc;sDAAd,cAAc,mhBAAA,EAAA,CAAA,gBAAA;AAgN1B;;ACzQD;AACA,cAAa,gBAAgB,mBAAA,cAAA,SAAA,kBAAA;;;;","names":[]}
|