@designsystem-se/af 39.2.1 → 39.2.2
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/components/digi-bar-chart.js +67 -17
- package/components/digi-calendar-datepicker.js +1 -1
- package/components/digi-calendar-week-view.js +51 -6
- package/components/digi-calendar.js +1 -1
- package/components/digi-chart-line.js +57 -14
- package/components/digi-navigation-vertical-menu.js +27 -13
- package/components/digi-tablist.js +36 -13
- package/components/{p-CrUxQ9d0.js → p-C5A2t93y.js} +1 -1
- package/dist/cjs/{calendar-week-view-heading-level.enum-NEkm5SUq.js → calendar-week-view-heading-level.enum-BI2f9bbk.js} +7 -0
- package/dist/cjs/digi-arbetsformedlingen.cjs.js +1 -1
- package/dist/cjs/{digi-button_5.cjs.entry.js → digi-badge-notification_8.cjs.entry.js} +436 -7
- package/dist/cjs/digi-bar-chart.cjs.entry.js +67 -17
- package/dist/cjs/digi-calendar-datepicker.cjs.entry.js +1 -2
- package/dist/cjs/digi-calendar_2.cjs.entry.js +1 -1
- package/dist/cjs/digi-chart-line.cjs.entry.js +57 -14
- package/dist/cjs/digi-code-block_3.cjs.entry.js +1 -2
- package/dist/cjs/digi-dialog.cjs.entry.js +1 -2
- package/dist/cjs/digi-footer.cjs.entry.js +1 -2
- package/dist/cjs/digi-form-error-list.cjs.entry.js +1 -2
- package/dist/cjs/digi-form-receipt.cjs.entry.js +1 -2
- package/dist/cjs/digi-form-select-filter.cjs.entry.js +1 -2
- package/dist/cjs/digi-header-navigation.cjs.entry.js +1 -2
- package/dist/cjs/digi-header.cjs.entry.js +1 -2
- package/dist/cjs/digi-navigation-pagination.cjs.entry.js +1 -2
- package/dist/cjs/digi-navigation-vertical-menu.cjs.entry.js +27 -13
- package/dist/cjs/digi-notification-alert.cjs.entry.js +1 -2
- package/dist/cjs/digi-notification-error-page.cjs.entry.js +1 -2
- package/dist/cjs/digi-title-logo.cjs.entry.js +1 -2
- package/dist/cjs/digi-tools-feedback.cjs.entry.js +1 -2
- package/dist/cjs/index-Cn1hHaSy.js +2 -14
- package/dist/cjs/index.cjs.js +6 -7
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/collection/components/_calendar/calendar/calendar.css +5 -6
- package/dist/collection/components/_calendar/week-view/calendar-week-view.js +53 -8
- package/dist/collection/components/_chart/bar-chart/bar-chart.css +1 -1
- package/dist/collection/components/_chart/bar-chart/bar-chart.js +66 -16
- package/dist/collection/components/_chart/chart-line/chart-line.js +57 -14
- package/dist/collection/components/_navigation/navigation-tablist/navigation-tablist.js +36 -13
- package/dist/collection/components/_navigation/navigation-vertical-menu/navigation-vertical-menu.js +27 -13
- package/dist/collection/design-tokens/components/_logo.variables.scss +2 -0
- package/dist/digi-arbetsformedlingen/digi-arbetsformedlingen.esm.js +1 -1
- package/dist/digi-arbetsformedlingen/index.esm.js +1 -1
- package/dist/digi-arbetsformedlingen/p-0f7e995a.entry.js +1 -0
- package/dist/digi-arbetsformedlingen/p-26f6a310.entry.js +1 -0
- package/dist/digi-arbetsformedlingen/p-3b42582a.entry.js +1 -0
- package/dist/digi-arbetsformedlingen/p-4384644b.entry.js +1 -0
- package/dist/digi-arbetsformedlingen/p-47513f97.entry.js +1 -0
- package/dist/digi-arbetsformedlingen/p-569c628c.entry.js +1 -0
- package/dist/digi-arbetsformedlingen/p-668d38d9.entry.js +1 -0
- package/dist/digi-arbetsformedlingen/p-66f34ca5.entry.js +1 -0
- package/dist/digi-arbetsformedlingen/p-6cb1c6ea.entry.js +1 -0
- package/dist/digi-arbetsformedlingen/p-6e256f0c.entry.js +1 -0
- package/dist/digi-arbetsformedlingen/p-71a8478d.entry.js +1 -0
- package/dist/digi-arbetsformedlingen/p-9df345c4.entry.js +1 -0
- package/dist/digi-arbetsformedlingen/p-BBOpiDGx.js +1 -0
- package/dist/digi-arbetsformedlingen/p-a1deddb1.entry.js +1 -0
- package/dist/digi-arbetsformedlingen/p-beebbc90.entry.js +1 -0
- package/dist/digi-arbetsformedlingen/{p-ee58a938.entry.js → p-c7ade486.entry.js} +1 -1
- package/dist/digi-arbetsformedlingen/p-d065e751.entry.js +1 -0
- package/dist/digi-arbetsformedlingen/p-d150094c.entry.js +1 -0
- package/dist/digi-arbetsformedlingen/p-df8efa59.entry.js +1 -0
- package/dist/digi-arbetsformedlingen/p-e2b0b070.entry.js +1 -0
- package/dist/esm/{calendar-week-view-heading-level.enum-DH_-wpLB.js → calendar-week-view-heading-level.enum-BBOpiDGx.js} +8 -1
- package/dist/esm/digi-arbetsformedlingen.js +1 -1
- package/dist/esm/{digi-button_5.entry.js → digi-badge-notification_8.entry.js} +435 -9
- package/dist/esm/digi-bar-chart.entry.js +67 -17
- package/dist/esm/digi-calendar-datepicker.entry.js +1 -2
- package/dist/esm/digi-calendar_2.entry.js +1 -1
- package/dist/esm/digi-chart-line.entry.js +57 -14
- package/dist/esm/digi-code-block_3.entry.js +1 -2
- package/dist/esm/digi-dialog.entry.js +1 -2
- package/dist/esm/digi-footer.entry.js +1 -2
- package/dist/esm/digi-form-error-list.entry.js +1 -2
- package/dist/esm/digi-form-receipt.entry.js +1 -2
- package/dist/esm/digi-form-select-filter.entry.js +1 -2
- package/dist/esm/digi-header-navigation.entry.js +1 -2
- package/dist/esm/digi-header.entry.js +1 -2
- package/dist/esm/digi-navigation-pagination.entry.js +1 -2
- package/dist/esm/digi-navigation-vertical-menu.entry.js +27 -13
- package/dist/esm/digi-notification-alert.entry.js +1 -2
- package/dist/esm/digi-notification-error-page.entry.js +1 -2
- package/dist/esm/digi-title-logo.entry.js +1 -2
- package/dist/esm/digi-tools-feedback.entry.js +1 -2
- package/dist/esm/index-BnKuq1L7.js +2 -14
- package/dist/esm/index.js +1 -2
- package/dist/esm/loader.js +1 -1
- package/dist/types/components/_calendar/week-view/calendar-week-view.d.ts +4 -2
- package/dist/types/components/_chart/bar-chart/bar-chart.d.ts +4 -2
- package/dist/types/components/_chart/chart-line/chart-line.d.ts +3 -1
- package/dist/types/components/_navigation/navigation-tablist/navigation-tablist.d.ts +4 -2
- package/dist/types/components/_navigation/navigation-vertical-menu/navigation-vertical-menu.d.ts +7 -2
- package/dist/types/components.d.ts +3 -3
- package/hydrate/index.js +236 -64
- package/hydrate/index.mjs +236 -64
- package/package.json +1 -1
- package/dist/cjs/badge-notification-shape.enum-CEyEo2G5.js +0 -8
- package/dist/cjs/digi-badge-notification.cjs.entry.js +0 -65
- package/dist/cjs/digi-tablist-panel.cjs.entry.js +0 -20
- package/dist/cjs/digi-tablist.cjs.entry.js +0 -289
- package/dist/digi-arbetsformedlingen/p-0394e694.entry.js +0 -1
- package/dist/digi-arbetsformedlingen/p-09b52191.entry.js +0 -1
- package/dist/digi-arbetsformedlingen/p-0c88f210.entry.js +0 -1
- package/dist/digi-arbetsformedlingen/p-151248bf.entry.js +0 -1
- package/dist/digi-arbetsformedlingen/p-26099889.entry.js +0 -1
- package/dist/digi-arbetsformedlingen/p-52a27991.entry.js +0 -1
- package/dist/digi-arbetsformedlingen/p-5ee5766d.entry.js +0 -1
- package/dist/digi-arbetsformedlingen/p-626c1bf5.entry.js +0 -1
- package/dist/digi-arbetsformedlingen/p-674a7a94.entry.js +0 -1
- package/dist/digi-arbetsformedlingen/p-6c1fd994.entry.js +0 -1
- package/dist/digi-arbetsformedlingen/p-7682ad6f.entry.js +0 -1
- package/dist/digi-arbetsformedlingen/p-7f180ce2.entry.js +0 -1
- package/dist/digi-arbetsformedlingen/p-88bec555.entry.js +0 -1
- package/dist/digi-arbetsformedlingen/p-CKoZU0-H.js +0 -1
- package/dist/digi-arbetsformedlingen/p-DH_-wpLB.js +0 -1
- package/dist/digi-arbetsformedlingen/p-a556608d.entry.js +0 -1
- package/dist/digi-arbetsformedlingen/p-b3410fbd.entry.js +0 -1
- package/dist/digi-arbetsformedlingen/p-e002ceb8.entry.js +0 -1
- package/dist/digi-arbetsformedlingen/p-e6ee5a17.entry.js +0 -1
- package/dist/digi-arbetsformedlingen/p-ec6dd177.entry.js +0 -1
- package/dist/digi-arbetsformedlingen/p-eee1b91f.entry.js +0 -1
- package/dist/digi-arbetsformedlingen/p-fea63204.entry.js +0 -1
- package/dist/digi-arbetsformedlingen/p-ff73fa2f.entry.js +0 -1
- package/dist/esm/badge-notification-shape.enum-CKoZU0-H.js +0 -8
- package/dist/esm/digi-badge-notification.entry.js +0 -63
- package/dist/esm/digi-tablist-panel.entry.js +0 -18
- package/dist/esm/digi-tablist.entry.js +0 -287
package/package.json
CHANGED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
exports.BadgeNotificationShape = void 0;
|
|
4
|
-
(function (BadgeNotificationShape) {
|
|
5
|
-
BadgeNotificationShape["CIRCLE"] = "circle";
|
|
6
|
-
BadgeNotificationShape["OVAL"] = "oval";
|
|
7
|
-
BadgeNotificationShape["PILL"] = "pill";
|
|
8
|
-
})(exports.BadgeNotificationShape || (exports.BadgeNotificationShape = {}));
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var index = require('./index-Cn1hHaSy.js');
|
|
4
|
-
var badgeNotificationShape_enum = require('./badge-notification-shape.enum-CEyEo2G5.js');
|
|
5
|
-
|
|
6
|
-
const badgeNotificationCss = () => `.sc-digi-badge-notification-h{--digi--badge-notification--color--text:var(--digi--color--text--secondary);--digi--badge-notification--color--border:var(--digi--color--border--notification);--digi--badge-notification--background-color:var(--digi--color--background--notification);--digi--badge-notification--font-weight:var(--digi--global--typography--font-weight--semibold)}.sc-digi-badge-notification-h .digi-badge-notification.sc-digi-badge-notification{font-size:0.75rem;font-weight:var(--digi--badge-notification--font-weight);border-width:var(--digi--border-width--secondary);border-style:solid;color:var(--digi--badge-notification--color--text);background-color:var(--digi--badge-notification--background-color);border-color:var(--BORDER-COLOR)}.sc-digi-badge-notification-h .digi-badge-notification--circle.sc-digi-badge-notification{--BORDER-COLOR:var(--digi--badge-notification--color--border);display:flex;justify-content:center;align-items:center;white-space:nowrap;text-align:center;border-radius:50%;height:1.25rem;width:1.25rem}.sc-digi-badge-notification-h .digi-badge-notification--oval.sc-digi-badge-notification{--BORDER-COLOR:var(--digi--badge-notification--color--border);display:flex;justify-content:center;align-items:center;white-space:nowrap;text-align:center;border-radius:0.75rem;height:1.125rem;width:1.5625rem;padding-left:0.25rem;padding-right:0.25rem}.sc-digi-badge-notification-h .digi-badge-notification--pill.sc-digi-badge-notification{--BORDER-COLOR:var(--digi--badge-notification--color--border);display:inline-block;padding-left:0.5rem;padding-right:0.5rem;border-radius:0.75rem;height:1.125rem}`;
|
|
7
|
-
|
|
8
|
-
const BadgeNotification = class {
|
|
9
|
-
constructor(hostRef) {
|
|
10
|
-
index.registerInstance(this, hostRef);
|
|
11
|
-
this.afShape = badgeNotificationShape_enum.BadgeNotificationShape.PILL;
|
|
12
|
-
/**
|
|
13
|
-
* Värdet som ska skrivas ut i notifieringen.
|
|
14
|
-
* @en The value to be displayed in the badge.
|
|
15
|
-
*/
|
|
16
|
-
this.afValue = '';
|
|
17
|
-
}
|
|
18
|
-
afValueChangeHandler() {
|
|
19
|
-
this.checkProps();
|
|
20
|
-
}
|
|
21
|
-
get cssModifiers() {
|
|
22
|
-
return {
|
|
23
|
-
'digi-badge-notification--circle': this.afShape === badgeNotificationShape_enum.BadgeNotificationShape.CIRCLE,
|
|
24
|
-
'digi-badge-notification--oval': this.afShape === badgeNotificationShape_enum.BadgeNotificationShape.OVAL,
|
|
25
|
-
'digi-badge-notification--pill': this.afShape === badgeNotificationShape_enum.BadgeNotificationShape.PILL
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
componentWillLoad() {
|
|
29
|
-
this.checkProps();
|
|
30
|
-
}
|
|
31
|
-
checkProps() {
|
|
32
|
-
let valueAsNumber;
|
|
33
|
-
if (this.afValue !== null &&
|
|
34
|
-
this.afValue !== undefined &&
|
|
35
|
-
this.afValue !== '') {
|
|
36
|
-
valueAsNumber = Number(this.afValue);
|
|
37
|
-
}
|
|
38
|
-
if (!isNaN(valueAsNumber)) {
|
|
39
|
-
if (valueAsNumber >= 100) {
|
|
40
|
-
this.afValue = '+99';
|
|
41
|
-
this.afShape = badgeNotificationShape_enum.BadgeNotificationShape.PILL;
|
|
42
|
-
}
|
|
43
|
-
else if (valueAsNumber < 100 && valueAsNumber >= 10) {
|
|
44
|
-
this.afShape = badgeNotificationShape_enum.BadgeNotificationShape.OVAL;
|
|
45
|
-
}
|
|
46
|
-
else {
|
|
47
|
-
this.afShape = badgeNotificationShape_enum.BadgeNotificationShape.CIRCLE;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
else {
|
|
51
|
-
this.afShape = badgeNotificationShape_enum.BadgeNotificationShape.PILL;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
render() {
|
|
55
|
-
return (index.h(index.Host, { key: '2a3f82fe0bf3d3b43ee858a0184fb7d0045656f7' }, index.h("div", { key: 'f652cc5b76bdc72b4778fd16a1a9d270fe2400ea', class: Object.assign({ 'digi-badge-notification': true }, this.cssModifiers), "aria-label": this.afAriaLabel }, index.h("div", { key: 'ece907bc0004e24eafd221ead41300f7acd803ea', class: `${this.afShape}` }, index.h("span", { key: 'c83210ebbbcad768073095e52b601adc80a0645d' }, this.afValue)))));
|
|
56
|
-
}
|
|
57
|
-
static get watchers() { return {
|
|
58
|
-
"afValue": [{
|
|
59
|
-
"afValueChangeHandler": 0
|
|
60
|
-
}]
|
|
61
|
-
}; }
|
|
62
|
-
};
|
|
63
|
-
BadgeNotification.style = badgeNotificationCss();
|
|
64
|
-
|
|
65
|
-
exports.digi_badge_notification = BadgeNotification;
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var index = require('./index-Cn1hHaSy.js');
|
|
4
|
-
|
|
5
|
-
const NavigationTabPanel = class {
|
|
6
|
-
constructor(hostRef) {
|
|
7
|
-
index.registerInstance(this, hostRef);
|
|
8
|
-
this.isVisible = false;
|
|
9
|
-
}
|
|
10
|
-
render() {
|
|
11
|
-
return (index.h(index.Host, { key: '253b1c6e0b466c8e806aeec2a6e99f86172b3324' }, index.h("div", { key: '9639af8c2a404a738c2c07c437f0537f81f5a72f', id: `tabpanel-${this.tab}`, role: "tabpanel", "aria-labelledby": `tab-${this.tab}`, style: {
|
|
12
|
-
display: this.isVisible ? 'initial' : 'none',
|
|
13
|
-
overflowX: 'hidden',
|
|
14
|
-
overflowY: 'auto'
|
|
15
|
-
} }, index.h("slot", { key: '3383cb70665259583d172e82f9c2dd38a81cec3c' }))));
|
|
16
|
-
}
|
|
17
|
-
get hostElement() { return index.getElement(this); }
|
|
18
|
-
};
|
|
19
|
-
|
|
20
|
-
exports.digi_tablist_panel = NavigationTabPanel;
|
|
@@ -1,289 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var index = require('./index-Cn1hHaSy.js');
|
|
4
|
-
var navigationTablist_types = require('./navigation-tablist.types-B5QU-sSH.js');
|
|
5
|
-
|
|
6
|
-
const navigationTablistCss = () => `.sc-digi-tablist-h{--tab-active-border-color:var(--digi--color--marking--navigation--selected);--tab-text-color:var(--digi--color--text--primary);--tab-icon-primary--color:var(--digi--color--icon--primary);--tab-icon-primary--color-hover:var(--digi--color--icon--primary);--tab-icon-primary--color-active:var(--digi--color--icon--primary)}.sc-digi-tablist-h .digi-tablist.sc-digi-tablist{font-family:var(--digi--global--typography--font-family--default);color:var(--digi--color--text--primary);position:relative;display:flex;gap:1rem;background-color:var(--digi--color--background--primary);margin-bottom:2.875rem;border-bottom:1px solid var(--digi--color--divider--secondary)}.sc-digi-tablist-h .digi-tablist--overflow-scroll.sc-digi-tablist .control-wrapper.sc-digi-tablist{display:none !important}.sc-digi-tablist-h .digi-tablist--overflow-scroll.sc-digi-tablist [role=tablist].sc-digi-tablist{overflow-x:auto}.sc-digi-tablist-h .digi-tablist--overflow-controls.sc-digi-tablist [role=tablist].sc-digi-tablist{overflow-x:hidden}.sc-digi-tablist-h .digi-tablist.sc-digi-tablist button.sc-digi-tablist{background:none;border:none;padding:0;font-family:inherit}.sc-digi-tablist-h .digi-tablist.sc-digi-tablist [role=tablist].sc-digi-tablist{display:flex;font-weight:bold;flex-grow:1;width:100%}.sc-digi-tablist-h .digi-tablist.sc-digi-tablist .control-wrapper.sc-digi-tablist{position:absolute;z-index:20;display:flex;align-items:center;justify-content:center;height:100%}.sc-digi-tablist-h .digi-tablist.sc-digi-tablist .control-wrapper.sc-digi-tablist .tab-control-button.sc-digi-tablist{display:flex;align-items:center;justify-content:center;background-color:var(--digi--color--background--interactive--default--tertiary);border-radius:6px;min-height:auto;padding:0.75rem;aspect-ratio:1;cursor:pointer}.sc-digi-tablist-h .digi-tablist.sc-digi-tablist .control-wrapper.sc-digi-tablist .tab-control-button.sc-digi-tablist digi-icon-chevron-right.sc-digi-tablist,.sc-digi-tablist-h .digi-tablist.sc-digi-tablist .control-wrapper.sc-digi-tablist .tab-control-button.sc-digi-tablist digi-icon-chevron-left.sc-digi-tablist{--digi--icon--color:var(--digi--color--icon--cta)}.sc-digi-tablist-h .digi-tablist.sc-digi-tablist .digi-tab.sc-digi-tablist{cursor:pointer;white-space:nowrap}.sc-digi-tablist-h .digi-tablist.sc-digi-tablist .digi-tab.sc-digi-tablist .content-wrapper.sc-digi-tablist{position:relative;height:2.75rem;display:flex;flex-direction:column;transition:background-color 0.1s linear}.sc-digi-tablist-h .digi-tablist.sc-digi-tablist .digi-tab.sc-digi-tablist .tablist-content.sc-digi-tablist{flex:1;display:flex;padding-right:0.75rem;padding-left:0.75rem}.sc-digi-tablist-h .digi-tablist.sc-digi-tablist .digi-tab.sc-digi-tablist [class*=digi-icon-].sc-digi-tablist:not(svg){--digi--icon--width:1rem;--digi--icon--color:var(--tab-icon-primary--color);padding-right:var(--digi--gutter--smaller)}.sc-digi-tablist-h .digi-tablist.sc-digi-tablist .digi-tab.sc-digi-tablist digi-badge-notification.sc-digi-tablist{margin-left:-0.125rem}.sc-digi-tablist-h .digi-tablist.sc-digi-tablist .digi-tab.sc-digi-tablist .title.sc-digi-tablist{font-size:1rem;flex-direction:column;display:flex;align-items:center;justify-content:center;font-weight:normal;color:var(--tab-text-color)}.sc-digi-tablist-h .digi-tablist.sc-digi-tablist .digi-tab.sc-digi-tablist .title.sc-digi-tablist::after{content:attr(data-text);content:attr(data-text)/"";height:0;visibility:hidden;overflow:hidden;user-select:none;pointer-events:none;font-weight:bold}.sc-digi-tablist-h .digi-tablist.sc-digi-tablist .digi-tab.sc-digi-tablist .indicator.sc-digi-tablist{height:0.25rem;width:100%;visibility:hidden;background-color:var(--tab-active-border-color)}.sc-digi-tablist-h .digi-tablist.sc-digi-tablist .digi-tab.sc-digi-tablist:focus{outline:none;box-shadow:none}.sc-digi-tablist-h .digi-tablist.sc-digi-tablist .digi-tab.sc-digi-tablist:focus-visible{z-index:10;outline:2px solid black;outline-offset:-3px;box-shadow:0px 0px 0px 5px inset white}.sc-digi-tablist-h .digi-tablist.sc-digi-tablist .digi-tab.sc-digi-tablist:hover:not(.is-active) .title.sc-digi-tablist{color:var(--digi--color--text--interactive--primary);text-decoration:underline}.sc-digi-tablist-h .digi-tablist.sc-digi-tablist .digi-tab.sc-digi-tablist:hover:not(.is-active) [class*=digi-icon-].sc-digi-tablist:not(svg){--tab-icon-primary--color:var(--tab-icon-primary--color-hover)}.sc-digi-tablist-h .digi-tablist.sc-digi-tablist .digi-tab.is-active.sc-digi-tablist .title.sc-digi-tablist{font-weight:bold}.sc-digi-tablist-h .digi-tablist.sc-digi-tablist .digi-tab.is-active.sc-digi-tablist svg.sc-digi-tablist{transform:translateX(-0.125rem)}.sc-digi-tablist-h .digi-tablist.sc-digi-tablist .digi-tab.is-active.sc-digi-tablist [class*=digi-icon-].sc-digi-tablist:not(svg){--tab-icon-primary--color:var(--tab-icon-primary--color-active)}.sc-digi-tablist-h .digi-tablist.sc-digi-tablist .digi-tab.is-active.sc-digi-tablist .indicator.sc-digi-tablist{visibility:visible}`;
|
|
7
|
-
|
|
8
|
-
const NavigationTablist = class {
|
|
9
|
-
constructor(hostRef) {
|
|
10
|
-
index.registerInstance(this, hostRef);
|
|
11
|
-
this.afTabChange = index.createEvent(this, "afTabChange", 7);
|
|
12
|
-
this.afTabFocusChange = index.createEvent(this, "afTabFocusChange", 7);
|
|
13
|
-
this.tabRefs = {};
|
|
14
|
-
this.activeTab = 0;
|
|
15
|
-
this.selectedTab = 0;
|
|
16
|
-
this.windowTab = 0;
|
|
17
|
-
this.tabs = [];
|
|
18
|
-
this.listOverflows = false;
|
|
19
|
-
this.showPrev = false;
|
|
20
|
-
this.showNext = false;
|
|
21
|
-
/**
|
|
22
|
-
* Bestämmer beteende då flikar överflödar
|
|
23
|
-
* * @en Set overflow behaviour
|
|
24
|
-
*/
|
|
25
|
-
this.afOverflowMode = navigationTablist_types.OverflowMode.Controls;
|
|
26
|
-
this.handleResize = () => {
|
|
27
|
-
if (!this.tablistRef)
|
|
28
|
-
return;
|
|
29
|
-
// Ensure we measure after any layout/paint from the resize
|
|
30
|
-
if (this._requestAnimationFrame)
|
|
31
|
-
cancelAnimationFrame(this._requestAnimationFrame);
|
|
32
|
-
this._requestAnimationFrame = requestAnimationFrame(() => {
|
|
33
|
-
var _a, _b;
|
|
34
|
-
const el = this.tablistRef;
|
|
35
|
-
const containerWidth = el.clientWidth;
|
|
36
|
-
const contentWidth = el.scrollWidth;
|
|
37
|
-
// Tolerance ≈ 1 physical pixel to absorb zoom/subpixel jitter
|
|
38
|
-
const tolerance = 1 / ((window === null || window === void 0 ? void 0 : window.devicePixelRatio) || 1);
|
|
39
|
-
// Guard against div-by-zero
|
|
40
|
-
const tabsCount = Math.max((_b = (_a = this.tabs) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0, 1);
|
|
41
|
-
const avgTabWidth = contentWidth / tabsCount;
|
|
42
|
-
// How many whole tabs fit? Nudge by tolerance to avoid off-by-one at zoom edges
|
|
43
|
-
const tabsPerWindow = Math.floor((containerWidth + tolerance) / avgTabWidth);
|
|
44
|
-
this.tabsPerWindow = Math.max(1, Math.min(tabsPerWindow, tabsCount));
|
|
45
|
-
// Ensure windowTab stays within valid bounds after resize
|
|
46
|
-
const maxValidWindowTab = Math.max(0, tabsCount - this.tabsPerWindow);
|
|
47
|
-
if (this.windowTab > maxValidWindowTab) {
|
|
48
|
-
this.windowTab = maxValidWindowTab;
|
|
49
|
-
}
|
|
50
|
-
// Overflow check with tolerance
|
|
51
|
-
this.listOverflows = contentWidth - containerWidth > tolerance;
|
|
52
|
-
// (Optional) if you have left/right “handles”, compute visibility too:
|
|
53
|
-
this.showPrev = el.scrollLeft > tolerance;
|
|
54
|
-
this.showNext =
|
|
55
|
-
el.scrollLeft + el.clientWidth < el.scrollWidth - tolerance;
|
|
56
|
-
});
|
|
57
|
-
};
|
|
58
|
-
}
|
|
59
|
-
handleKey(e) {
|
|
60
|
-
if (this.focusCaptured()) {
|
|
61
|
-
let captureKey = true;
|
|
62
|
-
switch (e.key) {
|
|
63
|
-
case ' ':
|
|
64
|
-
case 'Enter':
|
|
65
|
-
return this.setActiveTabAndFocus(this.selectedTab);
|
|
66
|
-
case 'ArrowLeft':
|
|
67
|
-
if (e.shiftKey) {
|
|
68
|
-
this.handleTabControl(navigationTablist_types.Direction.Previous);
|
|
69
|
-
}
|
|
70
|
-
else {
|
|
71
|
-
this.focusTab(this.selectedTab - 1);
|
|
72
|
-
}
|
|
73
|
-
break;
|
|
74
|
-
case 'ArrowRight':
|
|
75
|
-
if (e.shiftKey) {
|
|
76
|
-
this.handleTabControl(navigationTablist_types.Direction.Next);
|
|
77
|
-
}
|
|
78
|
-
else {
|
|
79
|
-
this.focusTab(this.selectedTab + 1);
|
|
80
|
-
}
|
|
81
|
-
break;
|
|
82
|
-
case 'Home':
|
|
83
|
-
if (e.shiftKey) {
|
|
84
|
-
return this.focusTab(0);
|
|
85
|
-
}
|
|
86
|
-
else {
|
|
87
|
-
return this.moveWindow(0);
|
|
88
|
-
}
|
|
89
|
-
case 'End':
|
|
90
|
-
if (e.shiftKey) {
|
|
91
|
-
return this.focusTab(this.tabs.length - 1);
|
|
92
|
-
}
|
|
93
|
-
else {
|
|
94
|
-
return this.moveWindow(this.tabs.length - 1);
|
|
95
|
-
}
|
|
96
|
-
default:
|
|
97
|
-
captureKey = false;
|
|
98
|
-
}
|
|
99
|
-
if (captureKey) {
|
|
100
|
-
e.preventDefault();
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
syncPanels() {
|
|
105
|
-
// side-effect
|
|
106
|
-
if (this.panelsRef != null) {
|
|
107
|
-
const panels = this.panelsRef.querySelectorAll(':scope>digi-tablist-panel');
|
|
108
|
-
for (let i = 0; i < panels.length; i++) {
|
|
109
|
-
const panel = panels[i];
|
|
110
|
-
const showPanel = panel.tab === this.tabs[this.activeTab].id;
|
|
111
|
-
panel.isVisible = showPanel;
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
handleTabPropChange(tabId) {
|
|
116
|
-
this.setActiveTabById(tabId);
|
|
117
|
-
}
|
|
118
|
-
syncControls() {
|
|
119
|
-
const tabGroup = Math.floor(this.windowTab / this.tabsPerWindow);
|
|
120
|
-
const numberOfGroups = Math.ceil(this.tabs.length / this.tabsPerWindow);
|
|
121
|
-
this.showPrev = tabGroup > 0;
|
|
122
|
-
this.showNext = tabGroup < numberOfGroups - 1;
|
|
123
|
-
}
|
|
124
|
-
syncWindow(tabIdx) {
|
|
125
|
-
const tab = this.tabs[tabIdx];
|
|
126
|
-
const tabRef = this.tabRefs[tab.id];
|
|
127
|
-
const listBox = this.tablistRef.getBoundingClientRect();
|
|
128
|
-
const tabBox = tabRef.getBoundingClientRect();
|
|
129
|
-
const centeredOffset = tabRef.offsetLeft - listBox.width / 2 + tabBox.width / 2;
|
|
130
|
-
const maxLeft = this.tablistRef.scrollWidth - listBox.width;
|
|
131
|
-
const left = Math.max(Math.min(centeredOffset, maxLeft), 0);
|
|
132
|
-
this.tablistRef.scrollTo({
|
|
133
|
-
left,
|
|
134
|
-
behavior: 'smooth'
|
|
135
|
-
});
|
|
136
|
-
}
|
|
137
|
-
syncFocus(tabIdx) {
|
|
138
|
-
const tabRef = this.tabRefs[this.tabs[tabIdx].id];
|
|
139
|
-
tabRef.focus({ preventScroll: true });
|
|
140
|
-
this.windowTab = tabIdx;
|
|
141
|
-
}
|
|
142
|
-
setupTabs(tabs) {
|
|
143
|
-
if (typeof tabs === 'string') {
|
|
144
|
-
this.tabs = JSON.parse(tabs);
|
|
145
|
-
}
|
|
146
|
-
else if (Array.isArray(tabs)) {
|
|
147
|
-
this.tabs = tabs;
|
|
148
|
-
}
|
|
149
|
-
else {
|
|
150
|
-
throw new Error('Invalid format or no tabs supplied');
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
setActiveTabById(id) {
|
|
154
|
-
const tabIdx = this.tabs.findIndex((tab) => tab.id === id);
|
|
155
|
-
if (tabIdx > -1) {
|
|
156
|
-
this.activeTab = tabIdx;
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
setupInitialTab() {
|
|
160
|
-
if (this.afActiveTab != null) {
|
|
161
|
-
return this.setActiveTabById(this.afActiveTab);
|
|
162
|
-
}
|
|
163
|
-
else if (this.afInitialTab != null) {
|
|
164
|
-
return this.setActiveTabById(this.afInitialTab);
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
setupResizeHandler() {
|
|
168
|
-
this.resizeObserver = new ResizeObserver(() => this.handleResize());
|
|
169
|
-
this.resizeObserver.observe(this.tablistRef);
|
|
170
|
-
}
|
|
171
|
-
handleTabChange(tab) {
|
|
172
|
-
const idx = this.tabs.findIndex(({ id }) => id === tab.id);
|
|
173
|
-
this.setActiveTabAndFocus(idx);
|
|
174
|
-
this.afTabChange.emit(tab);
|
|
175
|
-
}
|
|
176
|
-
handleTabControl(direction) {
|
|
177
|
-
// Calculate the current window group
|
|
178
|
-
const currentGroup = Math.floor(this.windowTab / this.tabsPerWindow);
|
|
179
|
-
const totalGroups = Math.ceil(this.tabs.length / this.tabsPerWindow);
|
|
180
|
-
let newGroup;
|
|
181
|
-
if (direction === navigationTablist_types.Direction.Next) {
|
|
182
|
-
newGroup = Math.min(currentGroup + 1, totalGroups - 1);
|
|
183
|
-
}
|
|
184
|
-
else {
|
|
185
|
-
newGroup = Math.max(currentGroup - 1, 0);
|
|
186
|
-
}
|
|
187
|
-
// Move to the first tab of the target group
|
|
188
|
-
const newWindowTab = newGroup * this.tabsPerWindow;
|
|
189
|
-
this.moveWindow(newWindowTab);
|
|
190
|
-
}
|
|
191
|
-
setActiveTabAndFocus(tabIdx) {
|
|
192
|
-
this.activeTab = tabIdx;
|
|
193
|
-
this.focusTab(tabIdx);
|
|
194
|
-
}
|
|
195
|
-
focusTab(tabIdx) {
|
|
196
|
-
this.selectedTab = this.nextTabIdx(tabIdx);
|
|
197
|
-
const currentTab = this.tabs[this.selectedTab];
|
|
198
|
-
this.afTabFocusChange.emit(currentTab);
|
|
199
|
-
}
|
|
200
|
-
moveWindow(tabIdx) {
|
|
201
|
-
tabIdx = Math.max(0, Math.min(tabIdx, this.tabs.length - 1));
|
|
202
|
-
this.windowTab = tabIdx;
|
|
203
|
-
}
|
|
204
|
-
nextTabIdx(tabIdx) {
|
|
205
|
-
if (tabIdx >= this.tabs.length) {
|
|
206
|
-
return 0;
|
|
207
|
-
}
|
|
208
|
-
else if (tabIdx < 0) {
|
|
209
|
-
return this.tabs.length - 1;
|
|
210
|
-
}
|
|
211
|
-
return tabIdx;
|
|
212
|
-
}
|
|
213
|
-
focusCaptured() {
|
|
214
|
-
return this.tabs.some((tab) => this.tabRefs[tab.id] === document.activeElement);
|
|
215
|
-
}
|
|
216
|
-
componentWillLoad() {
|
|
217
|
-
this.setupTabs(this.afTabs);
|
|
218
|
-
this.setupInitialTab();
|
|
219
|
-
}
|
|
220
|
-
componentDidLoad() {
|
|
221
|
-
var _a, _b, _c;
|
|
222
|
-
// Also listen to window resize for viewport zoom changes
|
|
223
|
-
if (window) {
|
|
224
|
-
window.addEventListener('resize', this.handleResize, { passive: true });
|
|
225
|
-
}
|
|
226
|
-
// Recalculate once fonts finish loading (text width changes with webfonts)
|
|
227
|
-
(_c = (_b = (_a = document.fonts) === null || _a === void 0 ? void 0 : _a.ready) === null || _b === void 0 ? void 0 : _b.then) === null || _c === void 0 ? void 0 : _c.call(_b, () => this.handleResize());
|
|
228
|
-
this.setupResizeHandler();
|
|
229
|
-
this.handleResize();
|
|
230
|
-
this.syncPanels();
|
|
231
|
-
this.syncControls();
|
|
232
|
-
}
|
|
233
|
-
disconnectedCallback() {
|
|
234
|
-
var _a;
|
|
235
|
-
if (window) {
|
|
236
|
-
window.removeEventListener('resize', this.handleResize);
|
|
237
|
-
}
|
|
238
|
-
(_a = this.resizeObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
|
|
239
|
-
if (this._requestAnimationFrame)
|
|
240
|
-
cancelAnimationFrame(this._requestAnimationFrame);
|
|
241
|
-
}
|
|
242
|
-
render() {
|
|
243
|
-
return (index.h(index.Host, { key: '8bdab05cd034b9940aefcb9f38b16d09b6f0b0c7' }, index.h("div", { key: '2d2266a9600dcc5817130ed4ece38868779e0b69', class: {
|
|
244
|
-
'digi-tablist': true,
|
|
245
|
-
'digi-tablist--overflow-scroll': this.afOverflowMode === navigationTablist_types.OverflowMode.Scroll,
|
|
246
|
-
'digi-tablist--overflow-controls': this.afOverflowMode === navigationTablist_types.OverflowMode.Controls
|
|
247
|
-
} }, index.h("div", { key: 'a96cd5d9a2eec5b2b52f0d1a00b2810c28e8d4bd', class: "control-wrapper", style: {
|
|
248
|
-
left: '0',
|
|
249
|
-
visibility: this.showPrev ? 'visible' : 'hidden'
|
|
250
|
-
} }, index.h("button", { key: '7a9810781c300bd44aa7ce3f3f76f651b1799023', tabIndex: -1, type: "button", "aria-hidden": "true", class: { 'tab-control-button': true }, onClick: () => this.handleTabControl(navigationTablist_types.Direction.Previous) }, index.h("digi-icon-chevron-left", { key: '8f65c019aa2a60f8d10025c147ad2448d30cdf1d' }))), index.h("div", { key: '7be08fe744f17f71fab7358d63d010f17e5c977d', role: "tablist", ref: (ref) => (this.tablistRef = ref), "aria-labelledby": this.afAriaLabelledby, "aria-label": this.afAriaLabel }, this.tabs.map((tab) => {
|
|
251
|
-
const focusable = tab.id === this.tabs[this.selectedTab].id;
|
|
252
|
-
const isActive = tab.id === this.tabs[this.activeTab].id;
|
|
253
|
-
const Icon = `digi-icon-${tab.icon}`;
|
|
254
|
-
const badgeValue = tab.badgeValue;
|
|
255
|
-
return (index.h("button", { ref: (ref) => (this.tabRefs[tab.id] = ref), class: {
|
|
256
|
-
'digi-tab': true,
|
|
257
|
-
'is-active': isActive
|
|
258
|
-
}, id: `tab-${tab.id}`, role: "tab", type: "button", tabindex: focusable ? '0' : '-1', "aria-label": tab.ariaLabel, "aria-selected": isActive.toString(), "aria-controls": `tabpanel-${tab.id}`, onClick: () => this.handleTabChange(tab) }, index.h("div", { class: "content-wrapper" }, index.h("span", { class: "tablist-content" }, tab.icon && index.h(Icon, { "aria-hidden": "true" }), index.h("span", { class: "title", "data-text": tab.title }, tab.title), tab.badgeValue && (index.h("digi-badge-notification", { afValue: badgeValue, "aria-hidden": "true" }))), index.h("div", { class: "indicator" }))));
|
|
259
|
-
})), index.h("div", { key: 'b79ea56eb945fe5c4b2e34529d8b1985018ac46c', class: "control-wrapper", style: {
|
|
260
|
-
right: '0',
|
|
261
|
-
visibility: this.showNext ? 'visible' : 'hidden'
|
|
262
|
-
} }, index.h("button", { key: '3d581fe07f9591f21fef85e700259d3b44332631', tabIndex: -1, type: "button", "aria-hidden": "true", class: { 'tab-control-button': true }, onClick: () => this.handleTabControl(navigationTablist_types.Direction.Next) }, index.h("digi-icon-chevron-right", { key: '1f3a564d4eff7851ad13901c492e663c5c43d384' })))), index.h("div", { key: '2cd9aa7d409b36395febee9dfd26eb6e82b02f35', ref: (ref) => (this.panelsRef = ref), role: "presentation" }, index.h("slot", { key: 'b9f82031b00032dfb1df2358546a8a35934033a0' }))));
|
|
263
|
-
}
|
|
264
|
-
static get watchers() { return {
|
|
265
|
-
"activeTab": [{
|
|
266
|
-
"syncPanels": 0
|
|
267
|
-
}],
|
|
268
|
-
"afActiveTab": [{
|
|
269
|
-
"handleTabPropChange": 0
|
|
270
|
-
}],
|
|
271
|
-
"windowTab": [{
|
|
272
|
-
"syncControls": 0
|
|
273
|
-
}, {
|
|
274
|
-
"syncWindow": 0
|
|
275
|
-
}],
|
|
276
|
-
"listOverflows": [{
|
|
277
|
-
"syncControls": 0
|
|
278
|
-
}],
|
|
279
|
-
"selectedTab": [{
|
|
280
|
-
"syncFocus": 0
|
|
281
|
-
}],
|
|
282
|
-
"afTabs": [{
|
|
283
|
-
"setupTabs": 0
|
|
284
|
-
}]
|
|
285
|
-
}; }
|
|
286
|
-
};
|
|
287
|
-
NavigationTablist.style = navigationTablistCss();
|
|
288
|
-
|
|
289
|
-
exports.digi_tablist = NavigationTablist;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as i,h as t,a}from"./p-BnKuq1L7.js";import{B as e}from"./p-CKoZU0-H.js";const o=class{constructor(t){i(this,t),this.afShape=e.PILL,this.afValue=""}afValueChangeHandler(){this.checkProps()}get cssModifiers(){return{"digi-badge-notification--circle":this.afShape===e.CIRCLE,"digi-badge-notification--oval":this.afShape===e.OVAL,"digi-badge-notification--pill":this.afShape===e.PILL}}componentWillLoad(){this.checkProps()}checkProps(){let i;null!=this.afValue&&""!==this.afValue&&(i=Number(this.afValue)),isNaN(i)?this.afShape=e.PILL:i>=100?(this.afValue="+99",this.afShape=e.PILL):this.afShape=i<100&&i>=10?e.OVAL:e.CIRCLE}render(){return t(a,{key:"2a3f82fe0bf3d3b43ee858a0184fb7d0045656f7"},t("div",{key:"f652cc5b76bdc72b4778fd16a1a9d270fe2400ea",class:Object.assign({"digi-badge-notification":!0},this.cssModifiers),"aria-label":this.afAriaLabel},t("div",{key:"ece907bc0004e24eafd221ead41300f7acd803ea",class:`${this.afShape}`},t("span",{key:"c83210ebbbcad768073095e52b601adc80a0645d"},this.afValue))))}static get watchers(){return{afValue:[{afValueChangeHandler:0}]}}};o.style=".sc-digi-badge-notification-h{--digi--badge-notification--color--text:var(--digi--color--text--secondary);--digi--badge-notification--color--border:var(--digi--color--border--notification);--digi--badge-notification--background-color:var(--digi--color--background--notification);--digi--badge-notification--font-weight:var(--digi--global--typography--font-weight--semibold)}.sc-digi-badge-notification-h .digi-badge-notification.sc-digi-badge-notification{font-size:0.75rem;font-weight:var(--digi--badge-notification--font-weight);border-width:var(--digi--border-width--secondary);border-style:solid;color:var(--digi--badge-notification--color--text);background-color:var(--digi--badge-notification--background-color);border-color:var(--BORDER-COLOR)}.sc-digi-badge-notification-h .digi-badge-notification--circle.sc-digi-badge-notification{--BORDER-COLOR:var(--digi--badge-notification--color--border);display:flex;justify-content:center;align-items:center;white-space:nowrap;text-align:center;border-radius:50%;height:1.25rem;width:1.25rem}.sc-digi-badge-notification-h .digi-badge-notification--oval.sc-digi-badge-notification{--BORDER-COLOR:var(--digi--badge-notification--color--border);display:flex;justify-content:center;align-items:center;white-space:nowrap;text-align:center;border-radius:0.75rem;height:1.125rem;width:1.5625rem;padding-left:0.25rem;padding-right:0.25rem}.sc-digi-badge-notification-h .digi-badge-notification--pill.sc-digi-badge-notification{--BORDER-COLOR:var(--digi--badge-notification--color--border);display:inline-block;padding-left:0.5rem;padding-right:0.5rem;border-radius:0.75rem;height:1.125rem}";export{o as digi_badge_notification}
|