@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.
Files changed (126) hide show
  1. package/components/digi-bar-chart.js +67 -17
  2. package/components/digi-calendar-datepicker.js +1 -1
  3. package/components/digi-calendar-week-view.js +51 -6
  4. package/components/digi-calendar.js +1 -1
  5. package/components/digi-chart-line.js +57 -14
  6. package/components/digi-navigation-vertical-menu.js +27 -13
  7. package/components/digi-tablist.js +36 -13
  8. package/components/{p-CrUxQ9d0.js → p-C5A2t93y.js} +1 -1
  9. package/dist/cjs/{calendar-week-view-heading-level.enum-NEkm5SUq.js → calendar-week-view-heading-level.enum-BI2f9bbk.js} +7 -0
  10. package/dist/cjs/digi-arbetsformedlingen.cjs.js +1 -1
  11. package/dist/cjs/{digi-button_5.cjs.entry.js → digi-badge-notification_8.cjs.entry.js} +436 -7
  12. package/dist/cjs/digi-bar-chart.cjs.entry.js +67 -17
  13. package/dist/cjs/digi-calendar-datepicker.cjs.entry.js +1 -2
  14. package/dist/cjs/digi-calendar_2.cjs.entry.js +1 -1
  15. package/dist/cjs/digi-chart-line.cjs.entry.js +57 -14
  16. package/dist/cjs/digi-code-block_3.cjs.entry.js +1 -2
  17. package/dist/cjs/digi-dialog.cjs.entry.js +1 -2
  18. package/dist/cjs/digi-footer.cjs.entry.js +1 -2
  19. package/dist/cjs/digi-form-error-list.cjs.entry.js +1 -2
  20. package/dist/cjs/digi-form-receipt.cjs.entry.js +1 -2
  21. package/dist/cjs/digi-form-select-filter.cjs.entry.js +1 -2
  22. package/dist/cjs/digi-header-navigation.cjs.entry.js +1 -2
  23. package/dist/cjs/digi-header.cjs.entry.js +1 -2
  24. package/dist/cjs/digi-navigation-pagination.cjs.entry.js +1 -2
  25. package/dist/cjs/digi-navigation-vertical-menu.cjs.entry.js +27 -13
  26. package/dist/cjs/digi-notification-alert.cjs.entry.js +1 -2
  27. package/dist/cjs/digi-notification-error-page.cjs.entry.js +1 -2
  28. package/dist/cjs/digi-title-logo.cjs.entry.js +1 -2
  29. package/dist/cjs/digi-tools-feedback.cjs.entry.js +1 -2
  30. package/dist/cjs/index-Cn1hHaSy.js +2 -14
  31. package/dist/cjs/index.cjs.js +6 -7
  32. package/dist/cjs/loader.cjs.js +1 -1
  33. package/dist/collection/components/_calendar/calendar/calendar.css +5 -6
  34. package/dist/collection/components/_calendar/week-view/calendar-week-view.js +53 -8
  35. package/dist/collection/components/_chart/bar-chart/bar-chart.css +1 -1
  36. package/dist/collection/components/_chart/bar-chart/bar-chart.js +66 -16
  37. package/dist/collection/components/_chart/chart-line/chart-line.js +57 -14
  38. package/dist/collection/components/_navigation/navigation-tablist/navigation-tablist.js +36 -13
  39. package/dist/collection/components/_navigation/navigation-vertical-menu/navigation-vertical-menu.js +27 -13
  40. package/dist/collection/design-tokens/components/_logo.variables.scss +2 -0
  41. package/dist/digi-arbetsformedlingen/digi-arbetsformedlingen.esm.js +1 -1
  42. package/dist/digi-arbetsformedlingen/index.esm.js +1 -1
  43. package/dist/digi-arbetsformedlingen/p-0f7e995a.entry.js +1 -0
  44. package/dist/digi-arbetsformedlingen/p-26f6a310.entry.js +1 -0
  45. package/dist/digi-arbetsformedlingen/p-3b42582a.entry.js +1 -0
  46. package/dist/digi-arbetsformedlingen/p-4384644b.entry.js +1 -0
  47. package/dist/digi-arbetsformedlingen/p-47513f97.entry.js +1 -0
  48. package/dist/digi-arbetsformedlingen/p-569c628c.entry.js +1 -0
  49. package/dist/digi-arbetsformedlingen/p-668d38d9.entry.js +1 -0
  50. package/dist/digi-arbetsformedlingen/p-66f34ca5.entry.js +1 -0
  51. package/dist/digi-arbetsformedlingen/p-6cb1c6ea.entry.js +1 -0
  52. package/dist/digi-arbetsformedlingen/p-6e256f0c.entry.js +1 -0
  53. package/dist/digi-arbetsformedlingen/p-71a8478d.entry.js +1 -0
  54. package/dist/digi-arbetsformedlingen/p-9df345c4.entry.js +1 -0
  55. package/dist/digi-arbetsformedlingen/p-BBOpiDGx.js +1 -0
  56. package/dist/digi-arbetsformedlingen/p-a1deddb1.entry.js +1 -0
  57. package/dist/digi-arbetsformedlingen/p-beebbc90.entry.js +1 -0
  58. package/dist/digi-arbetsformedlingen/{p-ee58a938.entry.js → p-c7ade486.entry.js} +1 -1
  59. package/dist/digi-arbetsformedlingen/p-d065e751.entry.js +1 -0
  60. package/dist/digi-arbetsformedlingen/p-d150094c.entry.js +1 -0
  61. package/dist/digi-arbetsformedlingen/p-df8efa59.entry.js +1 -0
  62. package/dist/digi-arbetsformedlingen/p-e2b0b070.entry.js +1 -0
  63. package/dist/esm/{calendar-week-view-heading-level.enum-DH_-wpLB.js → calendar-week-view-heading-level.enum-BBOpiDGx.js} +8 -1
  64. package/dist/esm/digi-arbetsformedlingen.js +1 -1
  65. package/dist/esm/{digi-button_5.entry.js → digi-badge-notification_8.entry.js} +435 -9
  66. package/dist/esm/digi-bar-chart.entry.js +67 -17
  67. package/dist/esm/digi-calendar-datepicker.entry.js +1 -2
  68. package/dist/esm/digi-calendar_2.entry.js +1 -1
  69. package/dist/esm/digi-chart-line.entry.js +57 -14
  70. package/dist/esm/digi-code-block_3.entry.js +1 -2
  71. package/dist/esm/digi-dialog.entry.js +1 -2
  72. package/dist/esm/digi-footer.entry.js +1 -2
  73. package/dist/esm/digi-form-error-list.entry.js +1 -2
  74. package/dist/esm/digi-form-receipt.entry.js +1 -2
  75. package/dist/esm/digi-form-select-filter.entry.js +1 -2
  76. package/dist/esm/digi-header-navigation.entry.js +1 -2
  77. package/dist/esm/digi-header.entry.js +1 -2
  78. package/dist/esm/digi-navigation-pagination.entry.js +1 -2
  79. package/dist/esm/digi-navigation-vertical-menu.entry.js +27 -13
  80. package/dist/esm/digi-notification-alert.entry.js +1 -2
  81. package/dist/esm/digi-notification-error-page.entry.js +1 -2
  82. package/dist/esm/digi-title-logo.entry.js +1 -2
  83. package/dist/esm/digi-tools-feedback.entry.js +1 -2
  84. package/dist/esm/index-BnKuq1L7.js +2 -14
  85. package/dist/esm/index.js +1 -2
  86. package/dist/esm/loader.js +1 -1
  87. package/dist/types/components/_calendar/week-view/calendar-week-view.d.ts +4 -2
  88. package/dist/types/components/_chart/bar-chart/bar-chart.d.ts +4 -2
  89. package/dist/types/components/_chart/chart-line/chart-line.d.ts +3 -1
  90. package/dist/types/components/_navigation/navigation-tablist/navigation-tablist.d.ts +4 -2
  91. package/dist/types/components/_navigation/navigation-vertical-menu/navigation-vertical-menu.d.ts +7 -2
  92. package/dist/types/components.d.ts +3 -3
  93. package/hydrate/index.js +236 -64
  94. package/hydrate/index.mjs +236 -64
  95. package/package.json +1 -1
  96. package/dist/cjs/badge-notification-shape.enum-CEyEo2G5.js +0 -8
  97. package/dist/cjs/digi-badge-notification.cjs.entry.js +0 -65
  98. package/dist/cjs/digi-tablist-panel.cjs.entry.js +0 -20
  99. package/dist/cjs/digi-tablist.cjs.entry.js +0 -289
  100. package/dist/digi-arbetsformedlingen/p-0394e694.entry.js +0 -1
  101. package/dist/digi-arbetsformedlingen/p-09b52191.entry.js +0 -1
  102. package/dist/digi-arbetsformedlingen/p-0c88f210.entry.js +0 -1
  103. package/dist/digi-arbetsformedlingen/p-151248bf.entry.js +0 -1
  104. package/dist/digi-arbetsformedlingen/p-26099889.entry.js +0 -1
  105. package/dist/digi-arbetsformedlingen/p-52a27991.entry.js +0 -1
  106. package/dist/digi-arbetsformedlingen/p-5ee5766d.entry.js +0 -1
  107. package/dist/digi-arbetsformedlingen/p-626c1bf5.entry.js +0 -1
  108. package/dist/digi-arbetsformedlingen/p-674a7a94.entry.js +0 -1
  109. package/dist/digi-arbetsformedlingen/p-6c1fd994.entry.js +0 -1
  110. package/dist/digi-arbetsformedlingen/p-7682ad6f.entry.js +0 -1
  111. package/dist/digi-arbetsformedlingen/p-7f180ce2.entry.js +0 -1
  112. package/dist/digi-arbetsformedlingen/p-88bec555.entry.js +0 -1
  113. package/dist/digi-arbetsformedlingen/p-CKoZU0-H.js +0 -1
  114. package/dist/digi-arbetsformedlingen/p-DH_-wpLB.js +0 -1
  115. package/dist/digi-arbetsformedlingen/p-a556608d.entry.js +0 -1
  116. package/dist/digi-arbetsformedlingen/p-b3410fbd.entry.js +0 -1
  117. package/dist/digi-arbetsformedlingen/p-e002ceb8.entry.js +0 -1
  118. package/dist/digi-arbetsformedlingen/p-e6ee5a17.entry.js +0 -1
  119. package/dist/digi-arbetsformedlingen/p-ec6dd177.entry.js +0 -1
  120. package/dist/digi-arbetsformedlingen/p-eee1b91f.entry.js +0 -1
  121. package/dist/digi-arbetsformedlingen/p-fea63204.entry.js +0 -1
  122. package/dist/digi-arbetsformedlingen/p-ff73fa2f.entry.js +0 -1
  123. package/dist/esm/badge-notification-shape.enum-CKoZU0-H.js +0 -8
  124. package/dist/esm/digi-badge-notification.entry.js +0 -63
  125. package/dist/esm/digi-tablist-panel.entry.js +0 -18
  126. package/dist/esm/digi-tablist.entry.js +0 -287
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@designsystem-se/af",
3
3
  "author": "Arbetsförmedlingen",
4
- "version": "39.2.1",
4
+ "version": "39.2.2",
5
5
  "description": "Web Components for Digi Designsystem",
6
6
  "license": "Apache-2.0",
7
7
  "main": "./dist/index.cjs.js",
@@ -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}