@scania/tegel 1.27.0-toast-aria-live.0 → 1.27.1
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/cjs/loader.cjs.js +1 -1
- package/dist/cjs/tds-dropdown_2.cjs.entry.js +8 -8
- package/dist/cjs/tds-footer-group.cjs.entry.js +27 -5
- package/dist/cjs/tds-footer-item.cjs.entry.js +2 -2
- package/dist/cjs/tds-footer.cjs.entry.js +1 -1
- package/dist/cjs/tds-header-brand-symbol.cjs.entry.js +6 -2
- package/dist/cjs/tds-header-dropdown.cjs.entry.js +26 -3
- package/dist/cjs/tds-header-hamburger.cjs.entry.js +7 -1
- package/dist/cjs/tds-header-launcher-button.cjs.entry.js +2 -1
- package/dist/cjs/tds-header-launcher.cjs.entry.js +23 -2
- package/dist/cjs/tds-icon.cjs.entry.js +3 -2
- package/dist/cjs/tds-inline-tabs.cjs.entry.js +1 -1
- package/dist/cjs/tds-modal.cjs.entry.js +1 -1
- package/dist/cjs/tds-navigation-tabs.cjs.entry.js +1 -1
- package/dist/cjs/tds-popover-canvas.cjs.entry.js +3 -2
- package/dist/cjs/tds-popover-core.cjs.entry.js +55 -11
- package/dist/cjs/tds-popover-menu-item.cjs.entry.js +2 -2
- package/dist/cjs/tds-popover-menu.cjs.entry.js +1 -1
- package/dist/cjs/tds-radio-button.cjs.entry.js +3 -1
- package/dist/cjs/tds-spinner.cjs.entry.js +1 -1
- package/dist/cjs/tds-step.cjs.entry.js +2 -1
- package/dist/cjs/tds-stepper.cjs.entry.js +2 -1
- package/dist/cjs/tds-text-field.cjs.entry.js +31 -16
- package/dist/cjs/tds-textarea.cjs.entry.js +9 -3
- package/dist/cjs/tds-toast.cjs.entry.js +3 -3
- package/dist/cjs/tds-toggle.cjs.entry.js +2 -2
- package/dist/cjs/tds-tooltip.cjs.entry.js +2 -2
- package/dist/cjs/tegel.cjs.js +1 -1
- package/dist/collection/components/dropdown/dropdown.js +8 -8
- package/dist/collection/components/footer/footer-group/footer-group.css +23 -21
- package/dist/collection/components/footer/footer-group/footer-group.js +55 -5
- package/dist/collection/components/footer/footer-item/footer-item.css +17 -17
- package/dist/collection/components/footer/footer-item/footer-item.js +2 -2
- package/dist/collection/components/footer/footer.css +1 -1
- package/dist/collection/components/header/header-brand-symbol/header-brand-symbol.css +1 -1
- package/dist/collection/components/header/header-brand-symbol/header-brand-symbol.js +6 -2
- package/dist/collection/components/header/header-dropdown/header-dropdown.js +49 -3
- package/dist/collection/components/header/header-hamburger/header-hamburger.js +30 -1
- package/dist/collection/components/header/header-launcher/header-launcher.js +50 -2
- package/dist/collection/components/header/header-launcher-button/header-launcher-button.js +19 -1
- package/dist/collection/components/icon/icon.js +21 -2
- package/dist/collection/components/modal/modal.css +48 -43
- package/dist/collection/components/popover-canvas/popover-canvas.js +21 -2
- package/dist/collection/components/popover-core/popover-core.js +63 -10
- package/dist/collection/components/popover-core/tds-popover-core.css +31 -40
- package/dist/collection/components/popover-menu/popover-menu-item/popover-menu-item.js +2 -2
- package/dist/collection/components/popover-menu/popover-menu.js +1 -1
- package/dist/collection/components/radio-button/radio-button.js +37 -1
- package/dist/collection/components/spinner/spinner.css +62 -39
- package/dist/collection/components/stepper/step/step.js +19 -1
- package/dist/collection/components/stepper/stepper.js +20 -1
- package/dist/collection/components/tabs/inline-tabs/inline-tabs.css +0 -1
- package/dist/collection/components/tabs/navigation-tabs/navigation-tabs.css +2 -3
- package/dist/collection/components/text-field/text-field.css +21 -9
- package/dist/collection/components/text-field/text-field.js +48 -15
- package/dist/collection/components/textarea/textarea.js +26 -3
- package/dist/collection/components/toast/toast.js +3 -3
- package/dist/collection/components/toggle/toggle.js +2 -2
- package/dist/collection/components/tooltip/tooltip.js +2 -2
- package/dist/components/{p-2d93a742.js → p-1c606f82.js} +1 -1
- package/dist/components/{p-e71e3b2e.js → p-252f3d4d.js} +59 -13
- package/dist/components/{p-17338bcb.js → p-3dcfe1f4.js} +3 -3
- package/dist/components/{p-60ff84f2.js → p-789bb453.js} +5 -3
- package/dist/components/{p-4487c541.js → p-92fb75a7.js} +4 -2
- package/dist/components/{p-663b8e51.js → p-c0b84c59.js} +9 -9
- package/dist/components/{p-83db8b35.js → p-f8a36676.js} +5 -3
- package/dist/components/tds-accordion-item.js +1 -1
- package/dist/components/tds-banner.js +1 -1
- package/dist/components/tds-datetime.js +1 -1
- package/dist/components/tds-dropdown-option.js +1 -1
- package/dist/components/tds-dropdown.js +1 -1
- package/dist/components/tds-folder-tabs.js +1 -1
- package/dist/components/tds-footer-group.js +32 -8
- package/dist/components/tds-footer-item.js +3 -3
- package/dist/components/tds-footer.js +1 -1
- package/dist/components/tds-header-brand-symbol.js +6 -2
- package/dist/components/tds-header-cell.js +1 -1
- package/dist/components/tds-header-dropdown.js +31 -7
- package/dist/components/tds-header-hamburger.js +11 -3
- package/dist/components/tds-header-launcher-button.js +1 -1
- package/dist/components/tds-header-launcher.js +29 -7
- package/dist/components/tds-icon.js +1 -1
- package/dist/components/tds-inline-tabs.js +2 -2
- package/dist/components/tds-message.js +1 -1
- package/dist/components/tds-modal.js +2 -2
- package/dist/components/tds-navigation-tabs.js +2 -2
- package/dist/components/tds-popover-canvas.js +1 -1
- package/dist/components/tds-popover-core.js +1 -1
- package/dist/components/tds-popover-menu-item.js +2 -2
- package/dist/components/tds-popover-menu.js +2 -2
- package/dist/components/tds-radio-button.js +6 -2
- package/dist/components/tds-side-menu-close-button.js +1 -1
- package/dist/components/tds-side-menu-dropdown.js +1 -1
- package/dist/components/tds-slider.js +1 -1
- package/dist/components/tds-spinner.js +1 -1
- package/dist/components/tds-step.js +4 -2
- package/dist/components/tds-stepper.js +4 -2
- package/dist/components/tds-table-body-input-wrapper.js +1 -1
- package/dist/components/tds-table-footer.js +3 -3
- package/dist/components/tds-table-header-input-wrapper.js +1 -1
- package/dist/components/tds-table-toolbar.js +1 -1
- package/dist/components/tds-text-field.js +33 -17
- package/dist/components/tds-textarea.js +13 -6
- package/dist/components/tds-toast.js +4 -4
- package/dist/components/tds-toggle.js +2 -2
- package/dist/components/tds-tooltip.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/tds-dropdown_2.entry.js +8 -8
- package/dist/esm/tds-footer-group.entry.js +27 -5
- package/dist/esm/tds-footer-item.entry.js +3 -3
- package/dist/esm/tds-footer.entry.js +1 -1
- package/dist/esm/tds-header-brand-symbol.entry.js +6 -2
- package/dist/esm/tds-header-dropdown.entry.js +26 -3
- package/dist/esm/tds-header-hamburger.entry.js +7 -1
- package/dist/esm/tds-header-launcher-button.entry.js +2 -1
- package/dist/esm/tds-header-launcher.entry.js +23 -2
- package/dist/esm/tds-icon.entry.js +3 -2
- package/dist/esm/tds-inline-tabs.entry.js +1 -1
- package/dist/esm/tds-modal.entry.js +1 -1
- package/dist/esm/tds-navigation-tabs.entry.js +1 -1
- package/dist/esm/tds-popover-canvas.entry.js +3 -2
- package/dist/esm/tds-popover-core.entry.js +55 -11
- package/dist/esm/tds-popover-menu-item.entry.js +2 -2
- package/dist/esm/tds-popover-menu.entry.js +1 -1
- package/dist/esm/tds-radio-button.entry.js +3 -1
- package/dist/esm/tds-spinner.entry.js +1 -1
- package/dist/esm/tds-step.entry.js +2 -1
- package/dist/esm/tds-stepper.entry.js +2 -1
- package/dist/esm/tds-text-field.entry.js +31 -16
- package/dist/esm/tds-textarea.entry.js +9 -3
- package/dist/esm/tds-toast.entry.js +3 -3
- package/dist/esm/tds-toggle.entry.js +2 -2
- package/dist/esm/tds-tooltip.entry.js +2 -2
- package/dist/esm/tegel.js +1 -1
- package/dist/tegel/{p-ad9a2141.entry.js → p-033d991e.entry.js} +1 -1
- package/dist/tegel/p-24db6b5b.entry.js +1 -0
- package/dist/tegel/p-27a4a7d0.entry.js +1 -0
- package/dist/tegel/p-28cf7204.entry.js +1 -0
- package/dist/tegel/p-302fea99.entry.js +1 -0
- package/dist/tegel/p-31bc440c.entry.js +1 -0
- package/dist/tegel/p-3e9ca19a.entry.js +1 -0
- package/dist/tegel/p-44ac6a20.entry.js +1 -0
- package/dist/tegel/{p-769d0503.entry.js → p-46205cfb.entry.js} +1 -1
- package/dist/tegel/p-54a20280.entry.js +1 -0
- package/dist/tegel/p-5a3ff0d3.entry.js +1 -0
- package/dist/tegel/p-660176d6.entry.js +1 -0
- package/dist/tegel/p-68e10acc.entry.js +1 -0
- package/dist/tegel/{p-eaa279dd.entry.js → p-81111221.entry.js} +1 -1
- package/dist/tegel/{p-668b7662.entry.js → p-8d7bf652.entry.js} +1 -1
- package/dist/tegel/p-b58f68f0.entry.js +1 -0
- package/dist/tegel/{p-5ba254ee.entry.js → p-c10be10e.entry.js} +1 -1
- package/dist/tegel/p-c71acb02.entry.js +1 -0
- package/dist/tegel/p-e1abd593.entry.js +1 -0
- package/dist/tegel/p-e3c3bdac.entry.js +1 -0
- package/dist/tegel/p-e46744bc.entry.js +1 -0
- package/dist/tegel/p-ea9e7345.entry.js +1 -0
- package/dist/tegel/{p-97f10223.entry.js → p-eec22b6b.entry.js} +1 -1
- package/dist/tegel/p-f034fc0c.entry.js +1 -0
- package/dist/tegel/p-fa342278.entry.js +1 -0
- package/dist/tegel/{p-b9f81e53.entry.js → p-fc6196c4.entry.js} +1 -1
- package/dist/tegel/tegel.css +2 -2
- package/dist/tegel/tegel.esm.js +1 -1
- package/dist/types/components/footer/footer-group/footer-group.d.ts +7 -0
- package/dist/types/components/header/header-brand-symbol/header-brand-symbol.d.ts +1 -1
- package/dist/types/components/header/header-dropdown/header-dropdown.d.ts +4 -0
- package/dist/types/components/header/header-hamburger/header-hamburger.d.ts +3 -0
- package/dist/types/components/header/header-launcher/header-launcher.d.ts +4 -0
- package/dist/types/components/header/header-launcher-button/header-launcher-button.d.ts +2 -0
- package/dist/types/components/icon/icon.d.ts +2 -0
- package/dist/types/components/popover-canvas/popover-canvas.d.ts +2 -0
- package/dist/types/components/popover-core/popover-core.d.ts +4 -0
- package/dist/types/components/radio-button/radio-button.d.ts +4 -0
- package/dist/types/components/stepper/step/step.d.ts +1 -0
- package/dist/types/components/stepper/stepper.d.ts +2 -0
- package/dist/types/components/text-field/text-field.d.ts +6 -4
- package/dist/types/components/textarea/textarea.d.ts +3 -0
- package/dist/types/components.d.ts +98 -0
- package/package.json +1 -1
- package/dist/tegel/p-035e58e6.entry.js +0 -1
- package/dist/tegel/p-125a6b06.entry.js +0 -1
- package/dist/tegel/p-28517288.entry.js +0 -1
- package/dist/tegel/p-288a09ef.entry.js +0 -1
- package/dist/tegel/p-4f5f152a.entry.js +0 -1
- package/dist/tegel/p-542d7b3e.entry.js +0 -1
- package/dist/tegel/p-5a7110b8.entry.js +0 -1
- package/dist/tegel/p-5db5c8f4.entry.js +0 -1
- package/dist/tegel/p-654785d2.entry.js +0 -1
- package/dist/tegel/p-746e2927.entry.js +0 -1
- package/dist/tegel/p-754a4921.entry.js +0 -1
- package/dist/tegel/p-843413ba.entry.js +0 -1
- package/dist/tegel/p-aef6b130.entry.js +0 -1
- package/dist/tegel/p-b114ec3d.entry.js +0 -1
- package/dist/tegel/p-b39ffad4.entry.js +0 -1
- package/dist/tegel/p-c56be8d1.entry.js +0 -1
- package/dist/tegel/p-dfbbaefd.entry.js +0 -1
- package/dist/tegel/p-ea3e071f.entry.js +0 -1
- package/dist/tegel/p-ee7f07ae.entry.js +0 -1
|
@@ -30,7 +30,7 @@ export class TdsDropdown {
|
|
|
30
30
|
return this.selectedOptions
|
|
31
31
|
.map((stringValue) => {
|
|
32
32
|
var _a;
|
|
33
|
-
const matchingElement = (_a = this.getChildren()) === null || _a === void 0 ? void 0 : _a.find((element) => element.value === stringValue);
|
|
33
|
+
const matchingElement = (_a = this.getChildren()) === null || _a === void 0 ? void 0 : _a.find((element) => convertToString(element.value) === convertToString(stringValue));
|
|
34
34
|
return matchingElement;
|
|
35
35
|
})
|
|
36
36
|
.filter(Boolean);
|
|
@@ -166,7 +166,7 @@ export class TdsDropdown {
|
|
|
166
166
|
}
|
|
167
167
|
}
|
|
168
168
|
normalizeValue(value) {
|
|
169
|
-
if (
|
|
169
|
+
if (value === null || value === undefined || value === '')
|
|
170
170
|
return [];
|
|
171
171
|
// For single select, ensure we handle both string and array inputs
|
|
172
172
|
if (!this.multiselect) {
|
|
@@ -361,7 +361,7 @@ export class TdsDropdown {
|
|
|
361
361
|
const defaultValueStr = convertToString(this.defaultValue);
|
|
362
362
|
const initialValue = this.multiselect
|
|
363
363
|
? defaultValueStr.split(',').map(convertToString)
|
|
364
|
-
: [
|
|
364
|
+
: [defaultValueStr];
|
|
365
365
|
this.updateDropdownStateInternal(initialValue);
|
|
366
366
|
}
|
|
367
367
|
}
|
|
@@ -403,9 +403,9 @@ export class TdsDropdown {
|
|
|
403
403
|
}
|
|
404
404
|
render() {
|
|
405
405
|
appendHiddenInput(this.host, this.name, this.selectedOptions.join(','), this.disabled);
|
|
406
|
-
return (h(Host, { key: '
|
|
406
|
+
return (h(Host, { key: 'b8c418ebe609789c1610178d764a7d620e2231c2', class: {
|
|
407
407
|
[`tds-mode-variant-${this.modeVariant}`]: Boolean(this.modeVariant),
|
|
408
|
-
} }, this.label && this.labelPosition === 'outside' && (h("div", { key: '
|
|
408
|
+
} }, this.label && this.labelPosition === 'outside' && (h("div", { key: 'ee5c005d5020e2226ce54c93a90f2098e081a6df', class: `label-outside ${this.disabled ? 'disabled' : ''}` }, this.label)), h("div", { key: 'ca674a2361f1301886bb855b7093c67b999a500a', class: {
|
|
409
409
|
'dropdown-select': true,
|
|
410
410
|
[this.size]: true,
|
|
411
411
|
'disabled': this.disabled,
|
|
@@ -455,7 +455,7 @@ export class TdsDropdown {
|
|
|
455
455
|
label-inside-as-placeholder
|
|
456
456
|
${this.size}
|
|
457
457
|
${this.selectedOptions.length ? 'selected' : ''}
|
|
458
|
-
` }, this.label)), h("div", { class: `placeholder ${this.size}` }, this.selectedOptions.length ? this.getValue() : this.placeholder), h("tds-icon", { "aria-label": "Open/Close dropdown", svgTitle: "Open/Close dropdown", class: `menu-icon ${this.open ? 'open' : 'closed'}`, name: "chevron_down", size: "16px" }))))), h("div", { key: '
|
|
458
|
+
` }, this.label)), h("div", { class: `placeholder ${this.size}` }, this.selectedOptions.length ? this.getValue() : this.placeholder), h("tds-icon", { "aria-label": "Open/Close dropdown", svgTitle: "Open/Close dropdown", class: `menu-icon ${this.open ? 'open' : 'closed'}`, name: "chevron_down", size: "16px" }))))), h("div", { key: '14558013e5903958942dc7dd3ef2d3a49f79b245', role: "listbox", "aria-label": this.tdsAriaLabel, "aria-orientation": "vertical", "aria-multiselectable": this.multiselect, ref: (element) => {
|
|
459
459
|
this.dropdownList = element;
|
|
460
460
|
}, class: {
|
|
461
461
|
'dropdown-list': true,
|
|
@@ -466,11 +466,11 @@ export class TdsDropdown {
|
|
|
466
466
|
'closed': !this.open,
|
|
467
467
|
[`animation-enter-${this.animation}`]: this.animation !== 'none' && this.open,
|
|
468
468
|
[`animation-exit-${this.animation}`]: this.animation !== 'none' && !this.open,
|
|
469
|
-
} }, h("slot", { key: '
|
|
469
|
+
} }, h("slot", { key: '5f69c2fcb5b6a130888d7cd92d4cb882122e3e58', onSlotchange: () => this.handleSlotChange() }), this.filterResult === 0 && this.noResultText !== '' && (h("div", { key: 'bae7a62960f90cd7b679ac4956a677dbff378ac7', class: `no-result ${this.size}` }, this.noResultText))), this.helper && (h("div", { key: 'be5fe56a1e19e812fa983c22f130c0d3001da55b', class: {
|
|
470
470
|
helper: true,
|
|
471
471
|
error: this.error,
|
|
472
472
|
disabled: this.disabled,
|
|
473
|
-
} }, this.error && h("tds-icon", { key: '
|
|
473
|
+
} }, this.error && h("tds-icon", { key: 'c0ccc491caa1aca628aff12e02d8a917a74e9c86', name: "error", size: "16px" }), this.helper))));
|
|
474
474
|
}
|
|
475
475
|
static get is() { return "tds-dropdown"; }
|
|
476
476
|
static get encapsulation() { return "shadow"; }
|
|
@@ -8,8 +8,11 @@
|
|
|
8
8
|
color: var(--tds-footer-top-links);
|
|
9
9
|
padding-bottom: 8px;
|
|
10
10
|
}
|
|
11
|
+
:host .footer-top-title *,
|
|
12
|
+
:host .footer-top-title ::slotted(*) {
|
|
13
|
+
margin: 0;
|
|
14
|
+
}
|
|
11
15
|
:host button.footer-top-title-button {
|
|
12
|
-
display: none;
|
|
13
16
|
border: none;
|
|
14
17
|
width: 100%;
|
|
15
18
|
font: var(--tds-headline-07);
|
|
@@ -21,6 +24,10 @@
|
|
|
21
24
|
justify-content: space-between;
|
|
22
25
|
border-bottom: 1px solid var(--tds-footer-top-divider);
|
|
23
26
|
}
|
|
27
|
+
:host button.footer-top-title-button *,
|
|
28
|
+
:host button.footer-top-title-button ::slotted(*) {
|
|
29
|
+
margin: 0;
|
|
30
|
+
}
|
|
24
31
|
:host button.footer-top-title-button.expanded {
|
|
25
32
|
border-bottom: none;
|
|
26
33
|
}
|
|
@@ -53,24 +60,19 @@
|
|
|
53
60
|
:host [role=list].top-part-child {
|
|
54
61
|
flex-direction: column;
|
|
55
62
|
}
|
|
56
|
-
|
|
57
|
-
:
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
:
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
:
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
:
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
:
|
|
70
|
-
|
|
71
|
-
}
|
|
72
|
-
:host button.footer-top-title-button {
|
|
73
|
-
display: flex;
|
|
74
|
-
align-items: center;
|
|
75
|
-
}
|
|
63
|
+
:host .mobile-view [role=list].start:not(.top-part-child) {
|
|
64
|
+
flex-direction: column;
|
|
65
|
+
}
|
|
66
|
+
:host .mobile-view [role=list].start:not(.top-part-child).start, :host .mobile-view [role=list].start:not(.top-part-child).end {
|
|
67
|
+
gap: 8px;
|
|
68
|
+
}
|
|
69
|
+
:host .mobile-view [role=list].top-part-child.closed {
|
|
70
|
+
display: none;
|
|
71
|
+
}
|
|
72
|
+
:host .mobile-view [role=list].top-part-child {
|
|
73
|
+
gap: 0;
|
|
74
|
+
}
|
|
75
|
+
:host .mobile-view button.footer-top-title-button {
|
|
76
|
+
display: flex;
|
|
77
|
+
align-items: center;
|
|
76
78
|
}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { Host, h } from "@stencil/core";
|
|
2
|
+
import hasSlot from "../../../utils/hasSlot";
|
|
2
3
|
/**
|
|
3
4
|
* @slot <default> - <b>Unnamed slot.</b> For footer items.
|
|
5
|
+
* @slot title - Slot for the title of the group. Should contain a heading element adjusted to the rest of the website in terms of heading nesting, for accessibility.
|
|
4
6
|
*/
|
|
5
7
|
export class TdsFooterGroup {
|
|
6
8
|
constructor() {
|
|
@@ -10,20 +12,41 @@ export class TdsFooterGroup {
|
|
|
10
12
|
/** Indicates if a group is part of the top part of the Footer. */
|
|
11
13
|
this.topPartGroup = false;
|
|
12
14
|
this.titleText = undefined;
|
|
15
|
+
this.tdsListAriaLabel = undefined;
|
|
13
16
|
this.open = false;
|
|
17
|
+
this.isMobile = undefined;
|
|
18
|
+
}
|
|
19
|
+
updateIsMobile() {
|
|
20
|
+
this.isMobile = window.innerWidth <= 992;
|
|
14
21
|
}
|
|
15
22
|
connectedCallback() {
|
|
23
|
+
this.updateIsMobile();
|
|
16
24
|
this.topPartGroup = this.host.parentElement.slot === 'top';
|
|
17
25
|
if (!this.topPartGroup) {
|
|
18
26
|
this.slotPosition = this.host.parentElement.slot === 'end' ? 'end' : 'start';
|
|
19
27
|
}
|
|
28
|
+
if (!this.tdsListAriaLabel) {
|
|
29
|
+
console.warn('Tegel Footer Group component: missing tdsListAriaLabel prop');
|
|
30
|
+
}
|
|
31
|
+
if (this.titleText) {
|
|
32
|
+
console.warn('Tegel Footer Group component: to ensure accessibility, please use the title slot instead of the titleText prop. titleText will be deprecated in the future.');
|
|
33
|
+
}
|
|
34
|
+
const hasTitleSlot = hasSlot('title', this.host);
|
|
35
|
+
if (hasTitleSlot && this.titleText) {
|
|
36
|
+
console.warn('Tegel Footer Group component: titleText prop is set but title slot is used. The titleText prop will be ignored.');
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
handleResize() {
|
|
40
|
+
this.updateIsMobile();
|
|
20
41
|
}
|
|
21
42
|
render() {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
43
|
+
const hasTitleSlot = hasSlot('title', this.host);
|
|
44
|
+
return (h(Host, { key: '4074cd5312d985c58e5136cc0c2c2c5deb9cd6e7', "aria-expanded": this.open ? 'true' : 'false' }, h("div", { key: '1a7817d838cadd10f4fed05b1153fa13be41a042', class: this.isMobile ? 'mobile-view' : '' }, this.topPartGroup &&
|
|
45
|
+
(this.isMobile ? (h("button", { onClick: () => {
|
|
46
|
+
this.open = !this.open;
|
|
47
|
+
}, class: `footer-top-title-button ${this.open ? 'expanded' : 'closed'}` }, hasTitleSlot ? h("slot", { name: "title" }) : this.titleText, h("tds-icon", { name: "chevron_down", size: "20px", "aria-hidden": "true" }))) : (h("div", { class: "footer-top-title" }, hasTitleSlot ? h("slot", { name: "title" }) : this.titleText))), h("nav", { key: '758bd18ac07eca8dda21b077a494ce8d770c6794', "aria-label": this.tdsListAriaLabel }, h("div", { key: '536e6c65893378fce91dd7fe3577dcdaaa4e5596', role: "list", class: `${this.slotPosition ? this.slotPosition : ''}
|
|
25
48
|
${this.topPartGroup ? 'top-part-child' : ''}
|
|
26
|
-
${this.open ? 'expanded' : 'closed'}` }, h("slot", { key: '
|
|
49
|
+
${this.open ? 'expanded' : 'closed'}` }, h("slot", { key: '0d1d147e8b955fb39e83a441595c80610843e34c' }))))));
|
|
27
50
|
}
|
|
28
51
|
static get is() { return "tds-footer-group"; }
|
|
29
52
|
static get encapsulation() { return "shadow"; }
|
|
@@ -55,13 +78,40 @@ export class TdsFooterGroup {
|
|
|
55
78
|
},
|
|
56
79
|
"attribute": "title-text",
|
|
57
80
|
"reflect": false
|
|
81
|
+
},
|
|
82
|
+
"tdsListAriaLabel": {
|
|
83
|
+
"type": "string",
|
|
84
|
+
"mutable": false,
|
|
85
|
+
"complexType": {
|
|
86
|
+
"original": "string",
|
|
87
|
+
"resolved": "string",
|
|
88
|
+
"references": {}
|
|
89
|
+
},
|
|
90
|
+
"required": false,
|
|
91
|
+
"optional": false,
|
|
92
|
+
"docs": {
|
|
93
|
+
"tags": [],
|
|
94
|
+
"text": "Value to be used for the aria-label attribute for the nav element wrapping the list. Should be unique for accessibility."
|
|
95
|
+
},
|
|
96
|
+
"attribute": "tds-list-aria-label",
|
|
97
|
+
"reflect": false
|
|
58
98
|
}
|
|
59
99
|
};
|
|
60
100
|
}
|
|
61
101
|
static get states() {
|
|
62
102
|
return {
|
|
63
|
-
"open": {}
|
|
103
|
+
"open": {},
|
|
104
|
+
"isMobile": {}
|
|
64
105
|
};
|
|
65
106
|
}
|
|
66
107
|
static get elementRef() { return "host"; }
|
|
108
|
+
static get listeners() {
|
|
109
|
+
return [{
|
|
110
|
+
"name": "resize",
|
|
111
|
+
"method": "handleResize",
|
|
112
|
+
"target": "window",
|
|
113
|
+
"capture": false,
|
|
114
|
+
"passive": true
|
|
115
|
+
}];
|
|
116
|
+
}
|
|
67
117
|
}
|
|
@@ -1,50 +1,50 @@
|
|
|
1
|
-
[role=listitem] ::slotted(a),
|
|
2
|
-
[role=listitem] ::slotted(button) {
|
|
1
|
+
:host([role=listitem]) div ::slotted(a),
|
|
2
|
+
:host([role=listitem]) div ::slotted(button) {
|
|
3
3
|
font: var(--tds-headline-07);
|
|
4
4
|
letter-spacing: var(--tds-headline-07-ls);
|
|
5
5
|
color: var(--tds-footer-main-links);
|
|
6
6
|
opacity: var(--tds-footer-main-links-opacity);
|
|
7
7
|
text-decoration: none;
|
|
8
8
|
}
|
|
9
|
-
[role=listitem] ::slotted(a:focus-visible),
|
|
10
|
-
[role=listitem] ::slotted(button:focus-visible) {
|
|
9
|
+
:host([role=listitem]) div ::slotted(a:focus-visible),
|
|
10
|
+
:host([role=listitem]) div ::slotted(button:focus-visible) {
|
|
11
11
|
outline: 2px solid var(--tds-blue-400);
|
|
12
12
|
outline-offset: -2px;
|
|
13
13
|
}
|
|
14
|
-
[role=listitem] ::slotted(a:hover),
|
|
15
|
-
[role=listitem] ::slotted(button:hover) {
|
|
14
|
+
:host([role=listitem]) div ::slotted(a:hover),
|
|
15
|
+
:host([role=listitem]) div ::slotted(button:hover) {
|
|
16
16
|
text-decoration: underline;
|
|
17
17
|
}
|
|
18
|
-
[role=listitem].top-part-child ::slotted(a),
|
|
19
|
-
[role=listitem].top-part-child ::slotted(button) {
|
|
18
|
+
:host([role=listitem]) div.top-part-child ::slotted(a),
|
|
19
|
+
:host([role=listitem]) div.top-part-child ::slotted(button) {
|
|
20
20
|
font: var(--tds-headline-07);
|
|
21
21
|
letter-spacing: var(--tds-headline-07-ls);
|
|
22
22
|
color: var(--tds-footer-top-links);
|
|
23
23
|
}
|
|
24
|
-
[role=listitem].top-part-child ::slotted(a:focus-visible),
|
|
25
|
-
[role=listitem].top-part-child ::slotted(button:focus-visible) {
|
|
24
|
+
:host([role=listitem]) div.top-part-child ::slotted(a:focus-visible),
|
|
25
|
+
:host([role=listitem]) div.top-part-child ::slotted(button:focus-visible) {
|
|
26
26
|
outline: 2px solid var(--tds-blue-400);
|
|
27
27
|
outline-offset: -2px;
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
@media all and (max-width: 992px) {
|
|
31
|
-
[role=listitem].top-part-child {
|
|
31
|
+
:host([role=listitem]) div.top-part-child {
|
|
32
32
|
border-bottom: 1px solid var(--tds-footer-top-divider);
|
|
33
33
|
}
|
|
34
|
-
[role=listitem].top-part-child ::slotted(a),
|
|
35
|
-
[role=listitem].top-part-child ::slotted(button) {
|
|
34
|
+
:host([role=listitem]) div.top-part-child ::slotted(a),
|
|
35
|
+
:host([role=listitem]) div.top-part-child ::slotted(button) {
|
|
36
36
|
display: block;
|
|
37
37
|
height: 100%;
|
|
38
38
|
padding: 19px 40px;
|
|
39
39
|
font-weight: normal;
|
|
40
40
|
}
|
|
41
|
-
[role=listitem].top-part-child ::slotted(a:hover),
|
|
42
|
-
[role=listitem].top-part-child ::slotted(button:hover) {
|
|
41
|
+
:host([role=listitem]) div.top-part-child ::slotted(a:hover),
|
|
42
|
+
:host([role=listitem]) div.top-part-child ::slotted(button:hover) {
|
|
43
43
|
text-decoration: underline;
|
|
44
44
|
background-color: var(--tds-footer-top-links-background-hover);
|
|
45
45
|
}
|
|
46
|
-
[role=listitem].top-part-child ::slotted(a:focus-visible),
|
|
47
|
-
[role=listitem].top-part-child ::slotted(button:focus-visible) {
|
|
46
|
+
:host([role=listitem]) div.top-part-child ::slotted(a:focus-visible),
|
|
47
|
+
:host([role=listitem]) div.top-part-child ::slotted(button:focus-visible) {
|
|
48
48
|
outline: 2px solid var(--tds-blue-400);
|
|
49
49
|
outline-offset: -2px;
|
|
50
50
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { h } from "@stencil/core";
|
|
1
|
+
import { h, Host } from "@stencil/core";
|
|
2
2
|
/**
|
|
3
3
|
* @slot <default> - <b>Unnamed slot.</b> For slotting a link, button, or similar.
|
|
4
4
|
*/
|
|
@@ -10,7 +10,7 @@ export class TdsFooterItem {
|
|
|
10
10
|
this.parentIsTopPart = this.host.closest('tds-footer-group').parentElement.slot === 'top';
|
|
11
11
|
}
|
|
12
12
|
render() {
|
|
13
|
-
return (h(
|
|
13
|
+
return (h(Host, { key: '04f8f1262940c57846f1f2ca372d181475381de3', role: "listitem" }, h("div", { key: '8a9c806cf008c4c247ab33935d00ba86e65a9f06', class: `${this.parentIsTopPart ? 'top-part-child' : ''}` }, h("slot", { key: '3510b66d43bf2b892902d3b7540a6b718eac1be4' }))));
|
|
14
14
|
}
|
|
15
15
|
static get is() { return "tds-footer-item"; }
|
|
16
16
|
static get encapsulation() { return "shadow"; }
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
color: var(--tds-footer-main-copyright);
|
|
45
45
|
}
|
|
46
46
|
:host .footer-main-bottom .brand {
|
|
47
|
-
background-image: var(--tds-background-image-scania-wordmark-white-svg);
|
|
47
|
+
background-image: var(--tds-background-image-scania-wordmark-white-svg), var(--tds-background-image-scania-wordmark-white-svg-local);
|
|
48
48
|
background-repeat: no-repeat;
|
|
49
49
|
background-size: 117px;
|
|
50
50
|
background-position: right;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
display: none;
|
|
3
3
|
}
|
|
4
4
|
:host tds-header-item ::slotted(*) {
|
|
5
|
-
background-image: var(--tds-background-image-scania-symbol-svg), var(--tds-background-image-scania-symbol-
|
|
5
|
+
background-image: var(--tds-background-image-scania-symbol-svg), var(--tds-background-image-scania-symbol-svg-local);
|
|
6
6
|
background-size: 30px auto;
|
|
7
7
|
background-position: center;
|
|
8
8
|
background-repeat: no-repeat;
|
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
import { h, Host } from "@stencil/core";
|
|
2
2
|
/**
|
|
3
|
-
* @slot <default> - <b>Unnamed slot.</b> For a link.
|
|
3
|
+
* @slot <default> - <b>Unnamed slot.</b> For a link. When using an <a> tag, use the aria-label attribute for accessibility.
|
|
4
4
|
*/
|
|
5
5
|
export class TdsHeaderBrandSymbol {
|
|
6
6
|
render() {
|
|
7
|
-
|
|
7
|
+
const aTag = this.host.querySelector('a');
|
|
8
|
+
if (!aTag.hasAttribute('aria-label')) {
|
|
9
|
+
console.warn('Tegel Header Brand Symbol component: missing aria-label attribute for <a> tag inside slot');
|
|
10
|
+
}
|
|
11
|
+
return (h(Host, { key: '18ba2b11b49c7b85f9655881094611b3d2c6e175' }, h("tds-header-item", { key: '36f37aeec7f4d3e412efc2f75baeedeb30d25421' }, h("slot", { key: 'fce5727e5b3b70e92c716ad7fca689b93a25935b' }))));
|
|
8
12
|
}
|
|
9
13
|
static get is() { return "tds-header-brand-symbol"; }
|
|
10
14
|
static get encapsulation() { return "shadow"; }
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { h, Host } from "@stencil/core";
|
|
2
2
|
import generateUniqueId from "../../../utils/generateUniqueId";
|
|
3
|
+
import hasSlot from "../../../utils/hasSlot";
|
|
3
4
|
/**
|
|
4
5
|
* @slot <default> - <b>Unnamed slot.</b> For injecting a dropdown list.
|
|
5
6
|
* @slot icon - Slot for an Icon in the dropdown button.
|
|
@@ -17,6 +18,7 @@ export class TdsHeaderDropdown {
|
|
|
17
18
|
this.label = undefined;
|
|
18
19
|
this.noDropdownIcon = false;
|
|
19
20
|
this.selected = false;
|
|
21
|
+
this.tdsAriaLabel = undefined;
|
|
20
22
|
this.open = false;
|
|
21
23
|
this.buttonEl = undefined;
|
|
22
24
|
}
|
|
@@ -27,17 +29,38 @@ export class TdsHeaderDropdown {
|
|
|
27
29
|
this.open = false;
|
|
28
30
|
}
|
|
29
31
|
}
|
|
32
|
+
handleKeyDown(event) {
|
|
33
|
+
if (event.key === 'Escape' && this.open) {
|
|
34
|
+
this.open = false;
|
|
35
|
+
this.buttonEl.focus();
|
|
36
|
+
}
|
|
37
|
+
}
|
|
30
38
|
toggleDropdown() {
|
|
31
39
|
this.open = !this.open;
|
|
40
|
+
if (this.open) {
|
|
41
|
+
requestAnimationFrame(() => {
|
|
42
|
+
const selectors = "a, [tabindex='0']";
|
|
43
|
+
const firstFocusableElement = this.host.shadowRoot.querySelector(selectors) || this.host.querySelector(selectors);
|
|
44
|
+
if (firstFocusableElement instanceof HTMLElement) {
|
|
45
|
+
firstFocusableElement.focus();
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
connectedCallback() {
|
|
51
|
+
const hasLabelSlot = hasSlot('label', this.host);
|
|
52
|
+
if (!this.tdsAriaLabel && !hasLabelSlot) {
|
|
53
|
+
console.warn('Tegel Header Dropdown component: use label slot or specify tdsAriaLabel prop');
|
|
54
|
+
}
|
|
32
55
|
}
|
|
33
56
|
render() {
|
|
34
|
-
return (h(Host, { key: '
|
|
57
|
+
return (h(Host, { key: '1bbf8ce73b5f0067b2ffe8d634ba0a3efd6f4fdb' }, h("div", { key: 'd2c548b3989a81a74c2b2985bae4a0afb10bbe06', class: {
|
|
35
58
|
'state-open': this.open,
|
|
36
|
-
} }, h("tds-header-item", { key: '
|
|
59
|
+
} }, h("tds-header-item", { key: '2300d57edbebbc66ed1b27a60a9fcb235ddb4b88', class: "button", active: this.open, selected: this.selected }, h("button", { key: 'da6f8271968491b092b18bc835b815e1796af935', ref: (el) => {
|
|
37
60
|
this.buttonEl = el;
|
|
38
61
|
}, "aria-expanded": `${this.open}`, "aria-controls": `launcher-${this.uuid}`, "aria-current": this.selected ? 'location' : 'false', onClick: () => {
|
|
39
62
|
this.toggleDropdown();
|
|
40
|
-
} }, h("slot", { key: '
|
|
63
|
+
}, "aria-label": this.tdsAriaLabel }, h("slot", { key: 'a9c1c657944cdbd826672e53ffce819df1b261de', name: "icon" }), this.label, h("slot", { key: 'a47173535a91f2a5b94060b6745b7ff60e380b19', name: "label" }), !this.noDropdownIcon && (h("tds-icon", { key: '4e2d7e29d2775ef65b636faf0eb16739575f0bed', class: "dropdown-icon", name: "chevron_down", size: "16px", svgTitle: "Dropdown icon" })))), this.buttonEl && (h("tds-popover-canvas", { key: '67ec32703a4fe306ac8b1a5b3e7ed4d48c257161', id: `tds-dropdown-${this.uuid}`, class: "menu", referenceEl: this.buttonEl, placement: "bottom-start", show: this.open, offsetDistance: 0, modifiers: [
|
|
41
64
|
{
|
|
42
65
|
name: 'flip',
|
|
43
66
|
options: {
|
|
@@ -112,6 +135,23 @@ export class TdsHeaderDropdown {
|
|
|
112
135
|
"attribute": "selected",
|
|
113
136
|
"reflect": false,
|
|
114
137
|
"defaultValue": "false"
|
|
138
|
+
},
|
|
139
|
+
"tdsAriaLabel": {
|
|
140
|
+
"type": "string",
|
|
141
|
+
"mutable": false,
|
|
142
|
+
"complexType": {
|
|
143
|
+
"original": "string",
|
|
144
|
+
"resolved": "string",
|
|
145
|
+
"references": {}
|
|
146
|
+
},
|
|
147
|
+
"required": false,
|
|
148
|
+
"optional": false,
|
|
149
|
+
"docs": {
|
|
150
|
+
"tags": [],
|
|
151
|
+
"text": "Value to be used by the aria-label attribute"
|
|
152
|
+
},
|
|
153
|
+
"attribute": "tds-aria-label",
|
|
154
|
+
"reflect": false
|
|
115
155
|
}
|
|
116
156
|
};
|
|
117
157
|
}
|
|
@@ -129,6 +169,12 @@ export class TdsHeaderDropdown {
|
|
|
129
169
|
"target": "document",
|
|
130
170
|
"capture": false,
|
|
131
171
|
"passive": false
|
|
172
|
+
}, {
|
|
173
|
+
"name": "keydown",
|
|
174
|
+
"method": "handleKeyDown",
|
|
175
|
+
"target": "window",
|
|
176
|
+
"capture": false,
|
|
177
|
+
"passive": false
|
|
132
178
|
}];
|
|
133
179
|
}
|
|
134
180
|
}
|
|
@@ -1,9 +1,17 @@
|
|
|
1
1
|
import { h, Host } from "@stencil/core";
|
|
2
2
|
import inheritAriaAttributes from "../../../utils/inheritAriaAttributes";
|
|
3
3
|
export class TdsHeaderHamburger {
|
|
4
|
+
constructor() {
|
|
5
|
+
this.tdsAriaLabel = undefined;
|
|
6
|
+
}
|
|
7
|
+
connectedCallback() {
|
|
8
|
+
if (!this.tdsAriaLabel) {
|
|
9
|
+
console.warn('Tegel Header Hamburger component: missing tdsAriaLabel prop');
|
|
10
|
+
}
|
|
11
|
+
}
|
|
4
12
|
render() {
|
|
5
13
|
const inheritedButtonProps = Object.assign({}, inheritAriaAttributes(this.host));
|
|
6
|
-
return (h(Host, { key: '
|
|
14
|
+
return (h(Host, { key: '774d1727624bfe4f8606d2efea75236532f2e9b2' }, h("tds-header-item", { key: '70cbf14a6b7ea638465d56780780ef3e9b5e0f4e' }, h("button", Object.assign({ key: 'af50f354dca1b518b13216ae0ce6cc85488f7df3' }, inheritedButtonProps, { "aria-label": this.tdsAriaLabel }), h("tds-icon", { key: '7978cd71ad41001dee4dbdb12894e22e716f3164', class: "icon", name: "burger", size: "20px" })))));
|
|
7
15
|
}
|
|
8
16
|
static get is() { return "tds-header-hamburger"; }
|
|
9
17
|
static get encapsulation() { return "shadow"; }
|
|
@@ -17,5 +25,26 @@ export class TdsHeaderHamburger {
|
|
|
17
25
|
"$": ["header-hamburger.css"]
|
|
18
26
|
};
|
|
19
27
|
}
|
|
28
|
+
static get properties() {
|
|
29
|
+
return {
|
|
30
|
+
"tdsAriaLabel": {
|
|
31
|
+
"type": "string",
|
|
32
|
+
"mutable": false,
|
|
33
|
+
"complexType": {
|
|
34
|
+
"original": "string",
|
|
35
|
+
"resolved": "string",
|
|
36
|
+
"references": {}
|
|
37
|
+
},
|
|
38
|
+
"required": false,
|
|
39
|
+
"optional": false,
|
|
40
|
+
"docs": {
|
|
41
|
+
"tags": [],
|
|
42
|
+
"text": "Value to be used by the aria-label attribute"
|
|
43
|
+
},
|
|
44
|
+
"attribute": "tds-aria-label",
|
|
45
|
+
"reflect": false
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
}
|
|
20
49
|
static get elementRef() { return "host"; }
|
|
21
50
|
}
|
|
@@ -10,6 +10,7 @@ export class TdsHeaderLauncher {
|
|
|
10
10
|
this.open = false;
|
|
11
11
|
this.buttonEl = undefined;
|
|
12
12
|
this.hasListTypeMenu = false;
|
|
13
|
+
this.tdsAriaLabel = undefined;
|
|
13
14
|
}
|
|
14
15
|
onAnyClick(event) {
|
|
15
16
|
// Source: https://lamplightdev.com/blog/2021/04/10/how-to-detect-clicks-outside-of-a-web-component/
|
|
@@ -18,12 +19,32 @@ export class TdsHeaderLauncher {
|
|
|
18
19
|
this.open = false;
|
|
19
20
|
}
|
|
20
21
|
}
|
|
22
|
+
handleKeyDown(event) {
|
|
23
|
+
if (event.key === 'Escape' && this.open) {
|
|
24
|
+
this.open = false;
|
|
25
|
+
this.buttonEl.shadowRoot.querySelector('button').focus();
|
|
26
|
+
}
|
|
27
|
+
}
|
|
21
28
|
componentDidLoad() {
|
|
22
29
|
const hasListTypeMenu = !!this.host.querySelector('tds-header-launcher-list');
|
|
23
30
|
this.hasListTypeMenu = hasListTypeMenu;
|
|
24
31
|
}
|
|
25
32
|
toggleLauncher() {
|
|
26
33
|
this.open = !this.open;
|
|
34
|
+
if (this.open) {
|
|
35
|
+
requestAnimationFrame(() => {
|
|
36
|
+
const selectors = "a, [tabindex='0']";
|
|
37
|
+
const firstFocusableElement = this.host.shadowRoot.querySelector(selectors) || this.host.querySelector(selectors);
|
|
38
|
+
if (firstFocusableElement instanceof HTMLElement) {
|
|
39
|
+
firstFocusableElement.focus();
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
connectedCallback() {
|
|
45
|
+
if (!this.tdsAriaLabel) {
|
|
46
|
+
console.warn('Tegel Header Launcher component: missing tdsAriaLabel prop');
|
|
47
|
+
}
|
|
27
48
|
}
|
|
28
49
|
render() {
|
|
29
50
|
this.ariaAttributes = Object.assign(Object.assign({}, this.ariaAttributes), inheritAriaAttributes(this.host, ['role']));
|
|
@@ -32,11 +53,11 @@ export class TdsHeaderLauncher {
|
|
|
32
53
|
}, 'ref': (el) => {
|
|
33
54
|
this.buttonEl = el;
|
|
34
55
|
} });
|
|
35
|
-
return (h(Host, { key: '
|
|
56
|
+
return (h(Host, { key: '3a0100f1429a1e09a5745c6b74835bddb6ba5157' }, h("div", { key: '50220e92372ac5496a4b589441e4920375169e79', class: {
|
|
36
57
|
'wrapper': true,
|
|
37
58
|
'state-open': this.open,
|
|
38
59
|
'state-list-type-menu': this.hasListTypeMenu,
|
|
39
|
-
} }, h("tds-header-launcher-button", Object.assign({ key: '
|
|
60
|
+
} }, h("tds-header-launcher-button", Object.assign({ key: 'd58c3ba5f08809487eeca1e6ce8a31879f0c52d9' }, buttonAttributes, { "tds-aria-label": this.tdsAriaLabel })), this.buttonEl && (h("tds-popover-canvas", { key: '4806b02e07aef32a640eedc1f0f76285950ec384', id: `tds-launcher-${this.uuid}`, class: "menu", referenceEl: this.buttonEl, placement: "bottom-start", show: this.open, offsetDistance: 0, modifiers: [
|
|
40
61
|
{
|
|
41
62
|
name: 'flip',
|
|
42
63
|
options: {
|
|
@@ -57,6 +78,27 @@ export class TdsHeaderLauncher {
|
|
|
57
78
|
"$": ["header-launcher.css"]
|
|
58
79
|
};
|
|
59
80
|
}
|
|
81
|
+
static get properties() {
|
|
82
|
+
return {
|
|
83
|
+
"tdsAriaLabel": {
|
|
84
|
+
"type": "string",
|
|
85
|
+
"mutable": false,
|
|
86
|
+
"complexType": {
|
|
87
|
+
"original": "string",
|
|
88
|
+
"resolved": "string",
|
|
89
|
+
"references": {}
|
|
90
|
+
},
|
|
91
|
+
"required": false,
|
|
92
|
+
"optional": false,
|
|
93
|
+
"docs": {
|
|
94
|
+
"tags": [],
|
|
95
|
+
"text": "Value to be used by the aria-label attribute of the launcher button"
|
|
96
|
+
},
|
|
97
|
+
"attribute": "tds-aria-label",
|
|
98
|
+
"reflect": false
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
}
|
|
60
102
|
static get states() {
|
|
61
103
|
return {
|
|
62
104
|
"open": {},
|
|
@@ -72,6 +114,12 @@ export class TdsHeaderLauncher {
|
|
|
72
114
|
"target": "window",
|
|
73
115
|
"capture": false,
|
|
74
116
|
"passive": false
|
|
117
|
+
}, {
|
|
118
|
+
"name": "keydown",
|
|
119
|
+
"method": "handleKeyDown",
|
|
120
|
+
"target": "window",
|
|
121
|
+
"capture": false,
|
|
122
|
+
"passive": false
|
|
75
123
|
}];
|
|
76
124
|
}
|
|
77
125
|
}
|
|
@@ -3,11 +3,12 @@ import inheritAriaAttributes from "../../../utils/inheritAriaAttributes";
|
|
|
3
3
|
export class TdsHeaderLauncherButton {
|
|
4
4
|
constructor() {
|
|
5
5
|
this.active = false;
|
|
6
|
+
this.tdsAriaLabel = undefined;
|
|
6
7
|
}
|
|
7
8
|
render() {
|
|
8
9
|
this.ariaAttributes = Object.assign(Object.assign({}, this.ariaAttributes), inheritAriaAttributes(this.host));
|
|
9
10
|
const buttonProps = Object.assign({}, this.ariaAttributes);
|
|
10
|
-
return (h(Host, { key: '
|
|
11
|
+
return (h(Host, { key: '445f5863dd96c417c99e460248bd0f2c2a224f0a' }, h("tds-header-item", { key: '792692a34c1192d37e81322a8e75387e51954ebe', active: this.active }, h("button", Object.assign({ key: '7be3e9e148ceab7b361f37b1029dfad474db7b16' }, buttonProps, { "aria-label": this.tdsAriaLabel }), h("tds-icon", { key: '5001f19dfa40ade6a9c64052caa4c38de901a5d4', class: "icon", name: "bento", size: "20px", "svg-title": this.tdsAriaLabel })))));
|
|
11
12
|
}
|
|
12
13
|
static get is() { return "tds-header-launcher-button"; }
|
|
13
14
|
static get encapsulation() { return "shadow"; }
|
|
@@ -40,6 +41,23 @@ export class TdsHeaderLauncherButton {
|
|
|
40
41
|
"attribute": "active",
|
|
41
42
|
"reflect": false,
|
|
42
43
|
"defaultValue": "false"
|
|
44
|
+
},
|
|
45
|
+
"tdsAriaLabel": {
|
|
46
|
+
"type": "string",
|
|
47
|
+
"mutable": false,
|
|
48
|
+
"complexType": {
|
|
49
|
+
"original": "string",
|
|
50
|
+
"resolved": "string",
|
|
51
|
+
"references": {}
|
|
52
|
+
},
|
|
53
|
+
"required": false,
|
|
54
|
+
"optional": false,
|
|
55
|
+
"docs": {
|
|
56
|
+
"tags": [],
|
|
57
|
+
"text": "Value to be used by the aria-label attribute"
|
|
58
|
+
},
|
|
59
|
+
"attribute": "tds-aria-label",
|
|
60
|
+
"reflect": false
|
|
43
61
|
}
|
|
44
62
|
};
|
|
45
63
|
}
|