scb-wc 0.1.37 → 0.1.39
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/README.md +41 -22
- package/all.js +0 -2
- package/index.js +88 -90
- package/mvc/components/all.js +0 -2
- package/mvc/components/scb-accordion/scb-accordion-item.js +1 -1
- package/mvc/components/scb-dropdown/scb-dropdown.js +1 -1
- package/mvc/components/scb-menu/scb-menu-item.js +1 -1
- package/mvc/components/scb-select/scb-select.js +1 -1
- package/mvc/components/scb-textfield/scb-textfield.js +319 -24
- package/mvc/components/scb-toc/scb-toc-item.js +21 -3
- package/mvc/{components/scb-chevron → vendor}/scb-chevron.js +1 -1
- package/package.json +2 -2
- package/scb-chevron/scb-chevron.js +0 -1
- package/scb-datepicker/scb-datepicker.js +0 -1
- package/scb-toc/scb-toc-item.js +21 -2
- package/scb-wc-public-entry/index.d.ts +92 -0
- package/scb-wc.bundle.js +235 -217
- package/scb-wc.d.ts +184 -188
- package/mvc/components/scb-datepicker/scb-datepicker.js +0 -296
- package/scb-components/index.d.ts +0 -94
- package/scb-components/scb-chevron/scb-chevron.d.ts +0 -11
- package/scb-components/scb-datepicker/scb-datepicker.d.ts +0 -39
package/README.md
CHANGED
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
# Om SCB Web Components
|
|
1
|
+
# Om SCB Web Components
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
> Installera `scb-wc` via `@next` för komponenter under utveckling. API, utseende och beteende kan ändras eller tas bort mellan versioner.
|
|
5
|
-
|
|
6
|
-
SCB Web Components(test) finns för att underlätta skapandet av enhetliga, tillgängliga och användbara webbapplikationer.
|
|
3
|
+
SCB Web Components finns för att underlätta skapandet av enhetliga, tillgängliga och användbara webbapplikationer.
|
|
7
4
|
|
|
8
5
|
Komponenterna bygger på:
|
|
9
6
|
- [Lit](https://lit.dev/)
|
|
@@ -11,32 +8,54 @@ Komponenterna bygger på:
|
|
|
11
8
|
|
|
12
9
|
## Storybook och dokumentation (internt)
|
|
13
10
|
|
|
14
|
-
|
|
11
|
+
Produktionskomponenterna dokumenteras och demonstreras i Storybook på SCB:s interna adress:
|
|
15
12
|
|
|
16
|
-
-
|
|
13
|
+
- Prod: https://webcomponents.scb.intra
|
|
17
14
|
|
|
18
|
-
|
|
15
|
+
Testkomponenterna finns på:
|
|
19
16
|
|
|
20
|
-
-
|
|
17
|
+
- Test: https://webcomponentstest.scb.intra
|
|
21
18
|
|
|
22
19
|
---
|
|
23
20
|
|
|
24
21
|
## Kom igång
|
|
25
22
|
|
|
26
|
-
|
|
27
|
-
|
|
23
|
+
Rekommenderad startväg:
|
|
24
|
+
|
|
25
|
+
```sh
|
|
26
|
+
npx scb-wc init html my-app
|
|
27
|
+
npx scb-wc init html-service my-service
|
|
28
|
+
npx scb-wc init react my-react-app
|
|
29
|
+
npx scb-wc init react-service my-react-service
|
|
30
|
+
npx scb-wc init blazor my-blazor-app
|
|
31
|
+
npx scb-wc init blazor-service my-blazor-service
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Webbplatsmallarna skapar en liten starterapp med:
|
|
35
|
+
- `scb-header`
|
|
36
|
+
- `scb-footer`
|
|
37
|
+
- `scb-grid`
|
|
38
|
+
- några vanliga komponenter
|
|
39
|
+
|
|
40
|
+
Webbtjänstmallarna skapar en starterapp med:
|
|
41
|
+
- `scb-app-bar`
|
|
42
|
+
- `scb-search`
|
|
43
|
+
- `scb-table-advanced`
|
|
44
|
+
- komponenter för actions och status
|
|
45
|
+
|
|
46
|
+
Välj sedan den starter som ligger närmast din app och kör `npm install` i den nya mappen.
|
|
28
47
|
|
|
29
|
-
|
|
48
|
+
Om du redan har en app med `package.json`, kör kommandon i den mappen och installera paketet:
|
|
30
49
|
|
|
31
50
|
```sh
|
|
32
|
-
npm install scb-wc
|
|
51
|
+
npm install scb-wc
|
|
33
52
|
```
|
|
34
53
|
|
|
35
54
|
---
|
|
36
55
|
|
|
37
56
|
## Alternativ 1: Använd som ES‑moduler (t.ex. i React, Vue, SPA)
|
|
38
57
|
|
|
39
|
-
Importera CSS och de
|
|
58
|
+
Importera CSS och de komponenter du använder (bäst för tree‑shaking):
|
|
40
59
|
|
|
41
60
|
```js
|
|
42
61
|
// Global CSS + tokens (måste bara importeras en gång)
|
|
@@ -72,7 +91,7 @@ Då används paketets egna fontfiler under `node_modules/scb-wc/fonts/`.
|
|
|
72
91
|
|
|
73
92
|
## Alternativ 2: Använd i MVC/MPA via `<script type="module">`
|
|
74
93
|
|
|
75
|
-
Det här läget använder den färdig‑
|
|
94
|
+
Det här läget använder den färdig‑splittrade **MVC‑ESM**‑builden som följer med paketet under:
|
|
76
95
|
|
|
77
96
|
```text
|
|
78
97
|
node_modules/scb-wc/mvc/
|
|
@@ -85,7 +104,7 @@ Lägg till i din apps `package.json`:
|
|
|
85
104
|
```jsonc
|
|
86
105
|
{
|
|
87
106
|
"scripts": {
|
|
88
|
-
"ui:install": "node -e \"const fs=require('fs'),p=require('path');const src=p.resolve('node_modules/scb-wc/mvc');if(!fs.existsSync(src)){console.error('Hittar inte '+src+'. Har du kört npm install scb-wc
|
|
107
|
+
"ui:install": "node -e \"const fs=require('fs'),p=require('path');const src=p.resolve('node_modules/scb-wc/mvc');if(!fs.existsSync(src)){console.error('Hittar inte '+src+'. Har du kört npm install scb-wc?');process.exit(1);}const start=process.env.INIT_CWD||process.cwd();const ov=process.env.npm_config_ui_wwwroot;function findBase(){if(ov){return p.isAbsolute(ov)?ov:p.resolve(start,ov);}let d=start;while(true){const cand=p.join(d,'wwwroot');if(fs.existsSync(cand)) return cand;const up=p.dirname(d);if(up===d) return p.resolve(start,'wwwroot');d=up;}}const base=findBase();const dst=p.resolve(base,'ui');fs.rmSync(dst,{recursive:true,force:true});fs.mkdirSync(base,{recursive:true});fs.cpSync(src,dst,{recursive:true});console.log('Kopierade '+src+' → '+dst);\""
|
|
89
108
|
}
|
|
90
109
|
}
|
|
91
110
|
```
|
|
@@ -132,7 +151,7 @@ Behöver du en annan webbrotsökväg (t.ex. om din `wwwroot` ligger någon annan
|
|
|
132
151
|
|
|
133
152
|
## Alternativ 3: Bundlad version (IIFE) för äldre miljöer
|
|
134
153
|
|
|
135
|
-
Om ESM inte stöds kan du använda den bundlade
|
|
154
|
+
Om ESM inte stöds kan du använda den bundlade varianten från paketroten.
|
|
136
155
|
Flytta följande tre filer från `node_modules/scb-wc` och använd dem i applikationen:
|
|
137
156
|
|
|
138
157
|
```text
|
|
@@ -155,7 +174,7 @@ node_modules/scb-wc/scb-typography.css
|
|
|
155
174
|
|
|
156
175
|
SCB Web Components fungerar även i Blazor‑appar när du vill använda samma komponenter i både MVC/MPA och Blazor.
|
|
157
176
|
|
|
158
|
-
Grundprincipen är
|
|
177
|
+
Grundprincipen är:
|
|
159
178
|
|
|
160
179
|
1. Använd MVC‑ESM‑builden (`node_modules/scb-wc/mvc`) och kopiera den till `wwwroot/ui` med `ui:install`.
|
|
161
180
|
2. Ladda `scb-blazor-bridge.js` från `wwwroot/ui` i din Blazor‑layout.
|
|
@@ -168,8 +187,8 @@ Lägg till ett script som kopierar interop-filen från `node_modules` till ditt
|
|
|
168
187
|
```jsonc
|
|
169
188
|
{
|
|
170
189
|
"scripts": {
|
|
171
|
-
"ui:install": "node -e \"const fs=require('fs'),p=require('path');const src=p.resolve('node_modules/scb-wc/mvc');if(!fs.existsSync(src)){console.error('Hittar inte '+src+'. Har du kört npm install scb-wc
|
|
172
|
-
"ui:blazor:interop": "node -e \"const fs=require('fs'),p=require('path');const start=process.env.INIT_CWD||process.cwd();const src=p.resolve('node_modules/scb-wc/blazor/ScbBlazorInteropBase.cs');if(!fs.existsSync(src)){console.error('Hittar inte '+src+'. Har du kört npm install scb-wc
|
|
190
|
+
"ui:install": "node -e \"const fs=require('fs'),p=require('path');const src=p.resolve('node_modules/scb-wc/mvc');if(!fs.existsSync(src)){console.error('Hittar inte '+src+'. Har du kört npm install scb-wc?');process.exit(1);}const start=process.env.INIT_CWD||process.cwd();const ov=process.env.npm_config_ui_wwwroot;function findBase(){if(ov){return p.isAbsolute(ov)?ov:p.resolve(start,ov);}let d=start;while(true){const cand=p.join(d,'wwwroot');if(fs.existsSync(cand)) return cand;const up=p.dirname(d);if(up===d) return p.resolve(start,'wwwroot');d=up;}}const base=findBase();const dst=p.resolve(base,'ui');fs.rmSync(dst,{recursive:true,force:true});fs.mkdirSync(base,{recursive:true});fs.cpSync(src,dst,{recursive:true});console.log('Kopierade '+src+' → '+dst);\"",
|
|
191
|
+
"ui:blazor:interop": "node -e \"const fs=require('fs'),p=require('path');const start=process.env.INIT_CWD||process.cwd();const src=p.resolve('node_modules/scb-wc/blazor/ScbBlazorInteropBase.cs');if(!fs.existsSync(src)){console.error('Hittar inte '+src+'. Har du kört npm install scb-wc?');process.exit(1);}const dst=p.resolve(start,'ScbBlazor/ScbBlazorInteropBase.cs');fs.mkdirSync(p.dirname(dst),{recursive:true});fs.copyFileSync(src,dst);console.log('Kopierade '+src+' → '+dst);\""
|
|
173
192
|
}
|
|
174
193
|
}
|
|
175
194
|
```
|
|
@@ -183,13 +202,13 @@ Exempel på layout:
|
|
|
183
202
|
<script type="module" src="~/ui/scb-blazor-bridge.js"></script>
|
|
184
203
|
```
|
|
185
204
|
|
|
186
|
-
`ScbBlazorInteropBase`
|
|
205
|
+
`ScbBlazorInteropBase` kan återanvändas mellan projekt som använder både `scb-wc@latest` och `scb-wc@next`.
|
|
187
206
|
|
|
188
207
|
---
|
|
189
208
|
|
|
190
209
|
## Viktigt
|
|
191
210
|
|
|
192
|
-
- `scb-wc@
|
|
211
|
+
- `scb-wc@latest` är produktionskanalen. Använd `scb-wc@next` för komponenter under utveckling och experiment.
|
|
193
212
|
- **Kör kommandon i mappen med din `package.json`.** Placeringen av `package.json` styr standardmål för `ui:install` (rot → `wwwroot/ui`, `ClientApp/` → använd `--ui_wwwroot=../wwwroot`).
|
|
194
213
|
- **Blanda inte MVC‑ESM och IIFE på samma sida.** Välj en distributionsform per sida/app.
|
|
195
214
|
- **Blazor:** Se till att `scb-blazor-bridge.js` laddas efter att komponent‑JS:et finns på sidan, och att `ScbBlazorInteropBase` inte dupliceras i flera namespaces i samma lösning.
|
package/all.js
CHANGED
|
@@ -17,11 +17,9 @@ import './scb-card/scb-list-card.js';
|
|
|
17
17
|
import './scb-card/scb-social-card.js';
|
|
18
18
|
import './scb-checkbox/scb-checkbox-group.js';
|
|
19
19
|
import './scb-checkbox/scb-checkbox.js';
|
|
20
|
-
import './scb-chevron/scb-chevron.js';
|
|
21
20
|
import './scb-chip/scb-chip.js';
|
|
22
21
|
import './scb-collapse/scb-collapse.js';
|
|
23
22
|
import './scb-cookies-consent/scb-cookies-consent.js';
|
|
24
|
-
import './scb-datepicker/scb-datepicker.js';
|
|
25
23
|
import './scb-dialog/scb-dialog.js';
|
|
26
24
|
import './scb-divider/scb-divider.js';
|
|
27
25
|
import './scb-drawer/scb-drawer.js';
|
package/index.js
CHANGED
|
@@ -1,95 +1,93 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
20
|
-
import {
|
|
21
|
-
import {
|
|
22
|
-
import {
|
|
23
|
-
import {
|
|
24
|
-
import {
|
|
25
|
-
import {
|
|
26
|
-
import {
|
|
27
|
-
import {
|
|
28
|
-
import { ScbTooltip as D } from "./scb-tooltip/scb-tooltip.js";
|
|
29
|
-
import { ScbActionCard as O, ScbCard as k, ScbContainerCard as A, ScbLinkCard as j, ScbListCard as M, ScbSocialCard as N } from "./scb-card/scb-card.js";
|
|
1
|
+
import { ScbAccordionItem as e } from "./scb-accordion/scb-accordion-item.js";
|
|
2
|
+
import { ScbButton as t } from "./scb-button/scb-button.js";
|
|
3
|
+
import { ScbAccordion as n } from "./scb-accordion/scb-accordion.js";
|
|
4
|
+
import { ScbIconButton as r } from "./scb-icon-button/scb-icon-button.js";
|
|
5
|
+
import { ScbListItem as i } from "./scb-list/scb-list-item.js";
|
|
6
|
+
import { ScbList as a } from "./scb-list/scb-list.js";
|
|
7
|
+
import { ScbSearch as o } from "./scb-search/scb-search.js";
|
|
8
|
+
import { ScbAvatar as s } from "./scb-avatar/scb-avatar.js";
|
|
9
|
+
import { ScbAppBar as c } from "./scb-app-bar/scb-app-bar.js";
|
|
10
|
+
import { ScbBadge as l } from "./scb-badge/scb-badge.js";
|
|
11
|
+
import { ScbLink as u } from "./scb-link/scb-link.js";
|
|
12
|
+
import { SCBBreadcrumbItem as d } from "./scb-breadcrumb/scb-breadcrumb-item.js";
|
|
13
|
+
import { SCBBreadcrumb as f } from "./scb-breadcrumb/scb-breadcrumb.js";
|
|
14
|
+
import { ScbCalendarEvent as p } from "./scb-calendar/scb-calendar-event.js";
|
|
15
|
+
import { ScbDivider as m } from "./scb-divider/scb-divider.js";
|
|
16
|
+
import { ScbTextField as h } from "./scb-textfield/scb-textfield.js";
|
|
17
|
+
import { ScbCheckboxGroup as g } from "./scb-checkbox/scb-checkbox-group.js";
|
|
18
|
+
import { ScbCheckbox as _ } from "./scb-checkbox/scb-checkbox.js";
|
|
19
|
+
import { ScbRadioGroup as v } from "./scb-radio-button/scb-radio-group.js";
|
|
20
|
+
import { ScbRadioButton as y } from "./scb-radio-button/scb-radio-button.js";
|
|
21
|
+
import { ScbSwitch as b } from "./scb-switch/scb-switch.js";
|
|
22
|
+
import { ScbChip as x } from "./scb-chip/scb-chip.js";
|
|
23
|
+
import { ScbDialog as S } from "./scb-dialog/scb-dialog.js";
|
|
24
|
+
import { ScbCalendar as C } from "./scb-calendar/scb-calendar.js";
|
|
25
|
+
import { ScbCalendarCard as w } from "./scb-calendar-card/scb-calendar-card.js";
|
|
26
|
+
import { ScbTooltip as T } from "./scb-tooltip/scb-tooltip.js";
|
|
27
|
+
import { ScbActionCard as E, ScbCard as D, ScbContainerCard as O, ScbLinkCard as k, ScbListCard as A, ScbSocialCard as j } from "./scb-card/scb-card.js";
|
|
30
28
|
import "./scb-card/scb-action-card.js";
|
|
31
29
|
import "./scb-card/scb-container-card.js";
|
|
32
30
|
import "./scb-card/scb-link-card.js";
|
|
33
31
|
import "./scb-card/scb-list-card.js";
|
|
34
32
|
import "./scb-card/scb-social-card.js";
|
|
35
|
-
import { ScbCollapse as
|
|
36
|
-
import { ScbCookiesConsent as
|
|
37
|
-
import { ScbDrawer as
|
|
38
|
-
import { ScbDropZone as
|
|
39
|
-
import { ScbOptionsMenuItem as
|
|
40
|
-
import { ScbOptionsSubMenu as
|
|
41
|
-
import { ScbOptionsMenu as
|
|
42
|
-
import { ScbDropdown as
|
|
43
|
-
import { ScbFab as
|
|
44
|
-
import { ScbFactCardContent as
|
|
45
|
-
import { ScbFactCard as
|
|
46
|
-
import { ScbFooterSection as
|
|
47
|
-
import { ScbGridItem as
|
|
48
|
-
import { ScbStack as
|
|
49
|
-
import { ScbGrid as
|
|
50
|
-
import { ScbFooter as
|
|
51
|
-
import { ScbHorizontalScroller as
|
|
52
|
-
import { ScbOverlay as
|
|
53
|
-
import { ScbGalleryGrid as
|
|
54
|
-
import { ScbHeaderMenuGroup as
|
|
55
|
-
import { ScbHeaderMenuItem as
|
|
56
|
-
import { ScbHeaderTab as
|
|
57
|
-
import { ScbHeaderUtility as
|
|
58
|
-
import { ScbMenuItem as
|
|
59
|
-
import { ScbmenuSection as
|
|
60
|
-
import { ScbSubmenu as
|
|
61
|
-
import { ScbMenu as
|
|
62
|
-
import { ScbSkeleton as
|
|
63
|
-
import { ScbHeader as
|
|
64
|
-
import { ScbKeyFigureCard as
|
|
65
|
-
import { ScbNavItem as
|
|
66
|
-
import { ScbNav as
|
|
67
|
-
import { ScbNotificationCard as
|
|
68
|
-
import { ScbPagination as
|
|
69
|
-
import { ScbProgressIndicator as
|
|
70
|
-
import { ScbProgressStep as
|
|
71
|
-
import { ScbProgressStepper as
|
|
72
|
-
import { ScbScrollspy as
|
|
73
|
-
import { ScbSegmentedItem as
|
|
74
|
-
import { ScbSegmentedButton as
|
|
75
|
-
import { ScbSelectOption as
|
|
76
|
-
import { ScbSelect as
|
|
77
|
-
import { ScbSlider as
|
|
78
|
-
import { ScbSnackbar as
|
|
79
|
-
import { ScbStatusPill as
|
|
80
|
-
import { ScbStep as
|
|
81
|
-
import { ScbStepper as
|
|
82
|
-
import { ScbTable as
|
|
83
|
-
import { ScbTableAdvanced as
|
|
84
|
-
import { ScbPrimaryTab as
|
|
85
|
-
import { ScbSecondaryTab as
|
|
86
|
-
import { ScbTabs as
|
|
87
|
-
import { ScbTocItem as
|
|
88
|
-
import { ScbToc as
|
|
89
|
-
import { buildScbVizExportFileName as
|
|
90
|
-
import { buildScbVizPrintDocumentHtml as
|
|
91
|
-
import { appendScbVizSeriesDifferentiationPatternMarks as
|
|
92
|
-
import { clearScbVizSeriesDifferentiationColorClass as
|
|
93
|
-
import { buildScbVizResolvedTableView as
|
|
94
|
-
import { ScbViz as
|
|
95
|
-
export {
|
|
33
|
+
import { ScbCollapse as M } from "./scb-collapse/scb-collapse.js";
|
|
34
|
+
import { ScbCookiesConsent as N } from "./scb-cookies-consent/scb-cookies-consent.js";
|
|
35
|
+
import { ScbDrawer as P } from "./scb-drawer/scb-drawer.js";
|
|
36
|
+
import { ScbDropZone as F } from "./scb-drop-zone/scb-drop-zone.js";
|
|
37
|
+
import { ScbOptionsMenuItem as I } from "./scb-options-menu/scb-options-menu-item.js";
|
|
38
|
+
import { ScbOptionsSubMenu as L } from "./scb-options-menu/scb-options-sub-menu.js";
|
|
39
|
+
import { ScbOptionsMenu as R } from "./scb-options-menu/scb-options-menu.js";
|
|
40
|
+
import { ScbDropdown as z } from "./scb-dropdown/scb-dropdown.js";
|
|
41
|
+
import { ScbFab as B } from "./scb-fab/scb-fab.js";
|
|
42
|
+
import { ScbFactCardContent as V } from "./scb-fact-card/scb-fact-card-content.js";
|
|
43
|
+
import { ScbFactCard as H } from "./scb-fact-card/scb-fact-card.js";
|
|
44
|
+
import { ScbFooterSection as U } from "./scb-footer/scb-footer-section.js";
|
|
45
|
+
import { ScbGridItem as W } from "./scb-grid/scb-grid-item.js";
|
|
46
|
+
import { ScbStack as G } from "./scb-grid/scb-stack.js";
|
|
47
|
+
import { ScbGrid as K } from "./scb-grid/scb-grid.js";
|
|
48
|
+
import { ScbFooter as q } from "./scb-footer/scb-footer.js";
|
|
49
|
+
import { ScbHorizontalScroller as J } from "./scb-horizontal-scroller/scb-horizontal-scroller.js";
|
|
50
|
+
import { ScbOverlay as Y } from "./scb-overlay/scb-overlay.js";
|
|
51
|
+
import { ScbGalleryGrid as X } from "./scb-gallery-grid/scb-gallery-grid.js";
|
|
52
|
+
import { ScbHeaderMenuGroup as Z } from "./scb-header/scb-header-menu-group.js";
|
|
53
|
+
import { ScbHeaderMenuItem as Q } from "./scb-header/scb-header-menu-item.js";
|
|
54
|
+
import { ScbHeaderTab as $ } from "./scb-header/scb-header-tab.js";
|
|
55
|
+
import { ScbHeaderUtility as ee } from "./scb-header/scb-header-utility.js";
|
|
56
|
+
import { ScbMenuItem as te } from "./scb-menu/scb-menu-item.js";
|
|
57
|
+
import { ScbmenuSection as ne } from "./scb-menu/scb-menu-section.js";
|
|
58
|
+
import { ScbSubmenu as re } from "./scb-menu/scb-sub-menu.js";
|
|
59
|
+
import { ScbMenu as ie } from "./scb-menu/scb-menu.js";
|
|
60
|
+
import { ScbSkeleton as ae } from "./scb-skeleton/scb-skeleton.js";
|
|
61
|
+
import { ScbHeader as oe } from "./scb-header/scb-header.js";
|
|
62
|
+
import { ScbKeyFigureCard as se } from "./scb-keyfigure-card/scb-keyfigure-card.js";
|
|
63
|
+
import { ScbNavItem as ce } from "./scb-nav/scb-nav-item.js";
|
|
64
|
+
import { ScbNav as le } from "./scb-nav/scb-nav.js";
|
|
65
|
+
import { ScbNotificationCard as ue } from "./scb-notification-card/scb-notification-card.js";
|
|
66
|
+
import { ScbPagination as de } from "./scb-pagination/scb-pagination.js";
|
|
67
|
+
import { ScbProgressIndicator as fe } from "./scb-progress-indicator/scb-progress-indicator.js";
|
|
68
|
+
import { ScbProgressStep as pe } from "./scb-progress-stepper/scb-progress-step.js";
|
|
69
|
+
import { ScbProgressStepper as me } from "./scb-progress-stepper/scb-progress-stepper.js";
|
|
70
|
+
import { ScbScrollspy as he } from "./scb-scrollspy/scb-scrollspy.js";
|
|
71
|
+
import { ScbSegmentedItem as ge } from "./scb-segmented-button/scb-segmented-item.js";
|
|
72
|
+
import { ScbSegmentedButton as _e } from "./scb-segmented-button/scb-segmented-button.js";
|
|
73
|
+
import { ScbSelectOption as ve } from "./scb-select/scb-select-option.js";
|
|
74
|
+
import { ScbSelect as ye } from "./scb-select/scb-select.js";
|
|
75
|
+
import { ScbSlider as be } from "./scb-slider/scb-slider.js";
|
|
76
|
+
import { ScbSnackbar as xe } from "./scb-snackbar/scb-snackbar.js";
|
|
77
|
+
import { ScbStatusPill as Se } from "./scb-status-pill/scb-status-pill.js";
|
|
78
|
+
import { ScbStep as Ce } from "./scb-stepper/scb-step.js";
|
|
79
|
+
import { ScbStepper as we } from "./scb-stepper/scb-stepper.js";
|
|
80
|
+
import { ScbTable as Te } from "./scb-table/scb-table.js";
|
|
81
|
+
import { ScbTableAdvanced as Ee } from "./scb-table-advanced/scb-table-advanced.js";
|
|
82
|
+
import { ScbPrimaryTab as De } from "./scb-tabs/scb-primary-tab.js";
|
|
83
|
+
import { ScbSecondaryTab as Oe } from "./scb-tabs/scb-secondary-tab.js";
|
|
84
|
+
import { ScbTabs as ke } from "./scb-tabs/scb-tabs.js";
|
|
85
|
+
import { ScbTocItem as Ae } from "./scb-toc/scb-toc-item.js";
|
|
86
|
+
import { ScbToc as je } from "./scb-toc/scb-toc.js";
|
|
87
|
+
import { buildScbVizExportFileName as Me, createScbVizCsvBlob as Ne, createScbVizRasterBlobFromElement as Pe, createScbVizRasterDataUrlFromElement as Fe, downloadScbVizBlob as Ie, getScbVizCurrentFullscreenElement as Le, getScbVizExportBaseFileName as Re, getScbVizFullscreenDocument as ze, isScbVizFullscreenSupported as Be, openScbVizPrintFrame as Ve, runWithScbVizForcedPrintLightMode as He, toggleScbVizFullscreen as Ue } from "./scb-viz/scb-viz-actions-runtime.js";
|
|
88
|
+
import { buildScbVizPrintDocumentHtml as We, buildScbVizPrintableFooterHtml as Ge, buildScbVizPrintableTableHtml as Ke } from "./scb-viz/scb-viz-print-runtime.js";
|
|
89
|
+
import { appendScbVizSeriesDifferentiationPatternMarks as qe, getScbVizSeriesDifferentiationPatternDefinition as Je, getScbVizSeriesDifferentiationPatternKinds as Ye, getScbVizSeriesDifferentiationRegistry as Xe, getScbVizSeriesDifferentiationVariant as Ze, scbVizSeriesDifferentiationRegistry as Qe } from "./scb-viz/scb-viz-series-differentiation-registry.js";
|
|
90
|
+
import { clearScbVizSeriesDifferentiationColorClass as $e, clearScbVizSeriesDifferentiationMetadata as et, ensureScbVizGroupedSeriesDifferentiationStore as tt, ensureScbVizStyledModeSeriesPattern as nt, getScbVizGroupedSeriesDifferentiationKey as rt, getScbVizGroupedSeriesDifferentiationVariant as it, getScbVizGroupedSeriesDifferentiationVariantIndex as at, getScbVizHighchartsColorClassName as ot, getScbVizHighchartsSvgElement as st, getScbVizHighchartsSvgRoot as ct, getScbVizLegendSeriesDifferentiationTargets as lt, getScbVizSeriesDifferentiationColorIndex as ut, getScbVizSeriesDifferentiationVariantByIndex as dt, isScbVizGroupedSeriesDifferentiationChart as ft, isScbVizHighchartsStyledMode as pt, setScbVizSeriesDifferentiationColorClass as mt, setScbVizSeriesDifferentiationMetadata as ht, shouldShowScbVizSeriesDifferentiationAction as gt, usesScbVizGroupedPointDifferentiation as _t } from "./scb-viz/scb-viz-series-differentiation-runtime.js";
|
|
91
|
+
import { buildScbVizResolvedTableView as vt, createScbVizCsvRows as yt, inferScbVizTableAlignments as bt, normalizeScbVizRenderableCell as xt, readScbVizTableDataFromSlot as St } from "./scb-viz/scb-viz-table-runtime.js";
|
|
92
|
+
import { ScbViz as Ct } from "./scb-viz/scb-viz.js";
|
|
93
|
+
export { f as SCBBreadcrumb, d as SCBBreadcrumbItem, n as ScbAccordion, e as ScbAccordionItem, E as ScbActionCard, c as ScbAppBar, s as ScbAvatar, l as ScbBadge, t as ScbButton, C as ScbCalendar, w as ScbCalendarCard, p as ScbCalendarEvent, D as ScbCard, _ as ScbCheckbox, g as ScbCheckboxGroup, x as ScbChip, M as ScbCollapse, O as ScbContainerCard, N as ScbCookiesConsent, S as ScbDialog, m as ScbDivider, P as ScbDrawer, F as ScbDropZone, z as ScbDropdown, B as ScbFab, H as ScbFactCard, V as ScbFactCardContent, q as ScbFooter, U as ScbFooterSection, X as ScbGalleryGrid, K as ScbGrid, W as ScbGridItem, oe as ScbHeader, Z as ScbHeaderMenuGroup, Q as ScbHeaderMenuItem, $ as ScbHeaderTab, ee as ScbHeaderUtility, J as ScbHorizontalScroller, r as ScbIconButton, se as ScbKeyFigureCard, u as ScbLink, k as ScbLinkCard, a as ScbList, A as ScbListCard, i as ScbListItem, ie as ScbMenu, te as ScbMenuItem, le as ScbNav, ce as ScbNavItem, ue as ScbNotificationCard, R as ScbOptionsMenu, I as ScbOptionsMenuItem, L as ScbOptionsSubMenu, Y as ScbOverlay, de as ScbPagination, De as ScbPrimaryTab, fe as ScbProgressIndicator, pe as ScbProgressStep, me as ScbProgressStepper, y as ScbRadioButton, v as ScbRadioGroup, he as ScbScrollspy, o as ScbSearch, Oe as ScbSecondaryTab, _e as ScbSegmentedButton, ge as ScbSegmentedItem, ye as ScbSelect, ve as ScbSelectOption, ae as ScbSkeleton, be as ScbSlider, xe as ScbSnackbar, j as ScbSocialCard, G as ScbStack, Se as ScbStatusPill, Ce as ScbStep, we as ScbStepper, re as ScbSubmenu, b as ScbSwitch, Te as ScbTable, Ee as ScbTableAdvanced, ke as ScbTabs, h as ScbTextField, je as ScbToc, Ae as ScbTocItem, T as ScbTooltip, Ct as ScbViz, ne as ScbmenuSection, qe as appendScbVizSeriesDifferentiationPatternMarks, Me as buildScbVizExportFileName, We as buildScbVizPrintDocumentHtml, Ge as buildScbVizPrintableFooterHtml, Ke as buildScbVizPrintableTableHtml, vt as buildScbVizResolvedTableView, $e as clearScbVizSeriesDifferentiationColorClass, et as clearScbVizSeriesDifferentiationMetadata, Ne as createScbVizCsvBlob, yt as createScbVizCsvRows, Pe as createScbVizRasterBlobFromElement, Fe as createScbVizRasterDataUrlFromElement, Ie as downloadScbVizBlob, tt as ensureScbVizGroupedSeriesDifferentiationStore, nt as ensureScbVizStyledModeSeriesPattern, Le as getScbVizCurrentFullscreenElement, Re as getScbVizExportBaseFileName, ze as getScbVizFullscreenDocument, rt as getScbVizGroupedSeriesDifferentiationKey, it as getScbVizGroupedSeriesDifferentiationVariant, at as getScbVizGroupedSeriesDifferentiationVariantIndex, ot as getScbVizHighchartsColorClassName, st as getScbVizHighchartsSvgElement, ct as getScbVizHighchartsSvgRoot, lt as getScbVizLegendSeriesDifferentiationTargets, ut as getScbVizSeriesDifferentiationColorIndex, Je as getScbVizSeriesDifferentiationPatternDefinition, Ye as getScbVizSeriesDifferentiationPatternKinds, Xe as getScbVizSeriesDifferentiationRegistry, Ze as getScbVizSeriesDifferentiationVariant, dt as getScbVizSeriesDifferentiationVariantByIndex, bt as inferScbVizTableAlignments, Be as isScbVizFullscreenSupported, ft as isScbVizGroupedSeriesDifferentiationChart, pt as isScbVizHighchartsStyledMode, xt as normalizeScbVizRenderableCell, Ve as openScbVizPrintFrame, St as readScbVizTableDataFromSlot, He as runWithScbVizForcedPrintLightMode, Qe as scbVizSeriesDifferentiationRegistry, mt as setScbVizSeriesDifferentiationColorClass, ht as setScbVizSeriesDifferentiationMetadata, gt as shouldShowScbVizSeriesDifferentiationAction, Ue as toggleScbVizFullscreen, _t as usesScbVizGroupedPointDifferentiation };
|
package/mvc/components/all.js
CHANGED
|
@@ -17,11 +17,9 @@ import './scb-card/scb-list-card.js';
|
|
|
17
17
|
import './scb-card/scb-social-card.js';
|
|
18
18
|
import './scb-checkbox/scb-checkbox.js';
|
|
19
19
|
import './scb-checkbox/scb-checkbox-group.js';
|
|
20
|
-
import './scb-chevron/scb-chevron.js';
|
|
21
20
|
import './scb-chip/scb-chip.js';
|
|
22
21
|
import './scb-collapse/scb-collapse.js';
|
|
23
22
|
import './scb-cookies-consent/scb-cookies-consent.js';
|
|
24
|
-
import './scb-datepicker/scb-datepicker.js';
|
|
25
23
|
import './scb-dialog/scb-dialog.js';
|
|
26
24
|
import './scb-divider/scb-divider.js';
|
|
27
25
|
import './scb-drawer/scb-drawer.js';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import"../../vendor/vendor-material.js";import{_ as b,b as m,g as h,h as o,v as l,y as s}from"../../vendor/vendor.js";import"../../vendor/vendor-lit.js";import{t as r}from"../../vendor/decorate.js";import"
|
|
1
|
+
import"../../vendor/vendor-material.js";import{_ as b,b as m,g as h,h as o,v as l,y as s}from"../../vendor/vendor.js";import"../../vendor/vendor-lit.js";import{t as r}from"../../vendor/decorate.js";import"../../vendor/scb-chevron.js";(function(){try{var g=typeof globalThis<"u"?globalThis:window;if(!g.__scb_ce_guard_installed__){g.__scb_ce_guard_installed__=!0;var i=customElements.define.bind(customElements);customElements.define=function(t,e,v){try{customElements.get(t)||i(t,e,v)}catch(c){var n=String(c||"");if(n.indexOf("already been used")===-1&&n.indexOf("NotSupportedError")===-1)throw c}}}}catch{}})();var d,p,a=(d=class extends b{constructor(...i){super(...i),this.open=!1,this.title="",this.content="",this.overline="",this.supportingText="",this.leading=!1,this.leadingVariant="",this.leadingIcon="",this.imgHrefImage="",this.avatarLabel="",this.avatarAlt="",this.avatarVariant="icon",this.avatarSrc="",this.density=0,this._unique=p._uid(),this._ignoreNextNativeTitleAttrChange=!1,this._onSummaryClick=t=>{t.preventDefault();const e=!this.open;this.closest("scb-accordion")?.onItemToggled?.(this,e),this.setOpen(e)},this._onToggle=t=>{const e=t.currentTarget;e.open||(e.open=!0),this._applyInertByOpen()}}static _uid(){return globalThis.crypto?.randomUUID?.()??`${p._uidPrefix}-${++p._uidSeq}`}static get observedAttributes(){const i=super.observedAttributes||[];return i.includes("title")?i:[...i,"title"]}attributeChangedCallback(i,t,e){if(i==="title"&&this._ignoreNextNativeTitleAttrChange){this._ignoreNextNativeTitleAttrChange=!1;return}super.attributeChangedCallback(i,t,e),i==="title"&&e!==null&&(this._ignoreNextNativeTitleAttrChange=!0,this.removeAttribute("title"))}firstUpdated(){this._applyInertByOpen()}_applyInertByOpen(){const i=this.renderRoot.querySelector(".scb-accordion-bottom");i&&(this.open?(i.removeAttribute("inert"),i.setAttribute("aria-hidden","false")):(i.setAttribute("inert",""),i.setAttribute("aria-hidden","true")))}_onKeyDown(i){const t=this.closest("scb-accordion"),e=Array.from(t?.querySelectorAll("scb-accordion-item")||[]).map(c=>c.renderRoot.querySelector("details")?.querySelector(".scb-accordion-top")||null).filter(c=>!!c),v=i.currentTarget,n=e.indexOf(v);switch(i.key){case"ArrowDown":i.preventDefault(),n<e.length-1&&e[n+1].focus();break;case"ArrowUp":i.preventDefault(),n>0&&e[n-1].focus();break;case"Home":i.preventDefault(),e.length&&e[0].focus();break;case"End":i.preventDefault(),e.length&&e[e.length-1].focus();break}}setOpen(i){this.open=!!i;const t=this.renderRoot.querySelector("details");t&&!t.open&&(t.open=!0),this._applyInertByOpen()}updated(i){if(i.has("open")){const t=this.renderRoot.querySelector("details");t&&!t.open&&(t.open=!0),this._applyInertByOpen(),this.dispatchEvent(new CustomEvent("open-changed",{detail:{open:this.open,title:this.title},bubbles:!0,composed:!0}))}}render(){const i=`bottom-${this._unique}`,t=`header-${this._unique}`,e=this.leading?this.leadingVariant==="image"&&this.imgHrefImage?s`<img part="leading-image" class="img" src="${this.imgHrefImage}" alt="" />`:this.leadingVariant==="avatar"?s`
|
|
2
2
|
<scb-avatar
|
|
3
3
|
label=${this.avatarLabel}
|
|
4
4
|
alt=${this.avatarAlt}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import"../../vendor/vendor-material.js";import{_ as y,b as v,g as w,h as d,p as b,v as f,y as m}from"../../vendor/vendor.js";import"../../vendor/vendor-lit.js";import{t as a}from"../../vendor/decorate.js";import"
|
|
1
|
+
import"../../vendor/vendor-material.js";import{_ as y,b as v,g as w,h as d,p as b,v as f,y as m}from"../../vendor/vendor.js";import"../../vendor/vendor-lit.js";import{t as a}from"../../vendor/decorate.js";import"../../vendor/scb-chevron.js";import"../scb-button/scb-button.js";import"../scb-options-menu/scb-options-menu.js";(function(){try{var h=typeof globalThis<"u"?globalThis:window;if(!h.__scb_ce_guard_installed__){h.__scb_ce_guard_installed__=!0;var t=customElements.define.bind(customElements);customElements.define=function(e,i,s){try{customElements.get(e)||t(e,i,s)}catch(o){var n=String(o||"");if(n.indexOf("already been used")===-1&&n.indexOf("NotSupportedError")===-1)throw o}}}}catch{}})();var g,_=()=>{if(typeof window>"u"||typeof document>"u"||!("customElements"in window)||document.head.querySelector("style[data-scb-dropdown-pre-upgrade]"))return;const h=document.createElement("style");h.setAttribute("data-scb-dropdown-pre-upgrade",""),h.textContent=`
|
|
2
2
|
scb-dropdown:not(:defined) {
|
|
3
3
|
display: inline-block;
|
|
4
4
|
position: relative;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../../vendor/vendor-material.js","../../vendor/vendor.js","../../vendor/vendor-lit.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{_ as b,b as g,g as _,h as c,m as f,v as u,y as d}from"../../vendor/vendor.js";import"../../vendor/vendor-lit.js";import{t as o}from"../../vendor/decorate.js";import"
|
|
2
|
+
import{_ as b,b as g,g as _,h as c,m as f,v as u,y as d}from"../../vendor/vendor.js";import"../../vendor/vendor-lit.js";import{t as o}from"../../vendor/decorate.js";import"../../vendor/scb-chevron.js";import{t as m}from"../../vendor/preload-helper.js";(function(){try{var l=typeof globalThis<"u"?globalThis:window;if(!l.__scb_ce_guard_installed__){l.__scb_ce_guard_installed__=!0;var e=customElements.define.bind(customElements);customElements.define=function(t,n,a){try{customElements.get(t)||e(t,n,a)}catch(h){var p=String(h||"");if(p.indexOf("already been used")===-1&&p.indexOf("NotSupportedError")===-1)throw h}}}}catch{}})();var r,s,i=(r=class extends b{constructor(...e){super(...e),this.label="",this.selected=!1,this.noHighlightSelected=!1,this.leadingIcon="",this.itemHref="",this.hasSlotContent=!1,this.expanded=!1,this.__submenuId=`sub-${Math.random().toString(36).slice(2)}`,this.__focusId=`f-${Math.random().toString(36).slice(2)}`,this._toggleExpand=t=>{t&&t.stopPropagation(),this.hasSlotContent&&this.__setExpanded(!this.expanded)},this._onButtonClick=t=>{t.stopPropagation(),this._dispatchSelect(),this._toggleExpand()},this._onLinkClick=()=>{this._dispatchSelect()},this._onKeyDown=t=>{const n=Array.from(this.closest("scb-sub-menu, scb-menu")?.querySelectorAll("scb-menu-item")||[]),a=n.indexOf(this);switch(t.key){case"ArrowDown":t.preventDefault(),(n[a+1]||n[0]).shadowRoot?.querySelector(".scb-menu-label-text")?.focus();break;case"ArrowUp":t.preventDefault(),(n[a-1]||n[n.length-1]).shadowRoot?.querySelector(".scb-menu-label-text")?.focus();break;case"Home":t.preventDefault(),n[0].shadowRoot?.querySelector(".scb-menu-label-text")?.focus();break;case"End":t.preventDefault(),n[n.length-1].shadowRoot?.querySelector(".scb-menu-label-text")?.focus();break}}}get __submenuEl(){return this.renderRoot.querySelector(`#${this.__submenuId}`)}async __ensureDepsLoaded(){s.__rippleLoaded||(await m(()=>import("../../vendor/vendor-material.js").then(e=>e.f),__vite__mapDeps([0,1,2]),import.meta.url),s.__rippleLoaded=!0),s.__focusRingLoaded||(await m(()=>import("../../vendor/vendor-material.js").then(e=>e.m),__vite__mapDeps([0,1,2]),import.meta.url),s.__focusRingLoaded=!0),this.leadingIcon&&!s.__iconLoaded&&(await m(()=>import("../../vendor/vendor-material.js").then(e=>e.p),__vite__mapDeps([0,1,2]),import.meta.url),s.__iconLoaded=!0)}__syncHasSlotContentFromLightDom(){const e=Array.from(this.children);this.hasSlotContent=e.length>0&&e.every(t=>t.tagName==="SCB-SUB-MENU")}connectedCallback(){super.connectedCallback(),this.__syncHasSlotContentFromLightDom()}_onSlotChange(e){const t=e.target.assignedElements({flatten:!0});this.hasSlotContent=t.length>0&&t.every(n=>n.tagName==="SCB-SUB-MENU")}__setExpanded(e){this.hasSlotContent&&(this.expanded=e,this.dispatchEvent(new CustomEvent("scb-menu-expand",{bubbles:!0,composed:!0,detail:{item:this,expanded:e}})),this.dispatchEvent(new CustomEvent("scbmenuexpand",{bubbles:!0,composed:!0,detail:{item:this,expanded:e}})))}_dispatchSelect(){this.dispatchEvent(new CustomEvent("scb-menu-select",{bubbles:!0,composed:!0,detail:{item:this}})),this.dispatchEvent(new CustomEvent("scbmenuselect",{bubbles:!0,composed:!0,detail:{item:this}}))}async firstUpdated(){await this.__ensureDepsLoaded()}updated(e){e.has("leadingIcon")&&this.leadingIcon&&this.__ensureDepsLoaded(),e.has("hasSlotContent")&&this.hasSlotContent&&this.__ensureDepsLoaded(),e.has("expanded")&&this.__applyInert()}__applyInert(){const e=this.__submenuEl;e&&(this.expanded?(e.removeAttribute("inert"),e.setAttribute("aria-hidden","false")):(e.setAttribute("inert",""),e.setAttribute("aria-hidden","true")))}render(){const e=!!this.leadingIcon,t=!!this.itemHref,n=this.hasSlotContent;return d`
|
|
3
3
|
<div class="scb-menu-item">
|
|
4
4
|
<div class="scb-menu-item-label" ?selected=${this.selected} ?no-highlight-selected=${this.noHighlightSelected}>
|
|
5
5
|
${t?d`
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import"../../vendor/vendor-material.js";import{_ as h,b as u,g as b,h as a,s as g,y as d}from"../../vendor/vendor.js";import"../../vendor/vendor-lit.js";import{t as l}from"../../vendor/decorate.js";import"
|
|
1
|
+
import"../../vendor/vendor-material.js";import{_ as h,b as u,g as b,h as a,s as g,y as d}from"../../vendor/vendor.js";import"../../vendor/vendor-lit.js";import{t as l}from"../../vendor/decorate.js";import"../../vendor/scb-chevron.js";import"./scb-select-option.js";(function(){try{var p=typeof globalThis<"u"?globalThis:window;if(!p.__scb_ce_guard_installed__){p.__scb_ce_guard_installed__=!0;var e=customElements.define.bind(customElements);customElements.define=function(t,s,r){try{customElements.get(t)||e(t,s,r)}catch(o){var n=String(o||"");if(n.indexOf("already been used")===-1&&n.indexOf("NotSupportedError")===-1)throw o}}}}catch{}})();var c,i=(c=class extends h{constructor(){super(),this._optionsObserver=null,this._internals=null,this.focusedIndex=-1,this.variant="single-select",this.value="",this.values=[],this.disabled=!1,this.required=!1,this.open=!1,this.label="",this.name="",this.placeholder="",this.supportingText="",this.withRadiobuttons=!1,this.noHighlightSelected=!1,this.size="large",this.spacing=void 0,this.spacingTop=void 0,this.spacingBottom=void 0,this.spacingLeft=void 0,this.spacingRight=void 0,this.zIndex=void 0,this._form=null,this._formResetHandler=null,this._formSubmitHandler=null,this._initialValue="",this._initialValues=[],this._customValidationMessage="",this._onDocumentClick=e=>{this.open&&(e.composedPath().includes(this)||this._setOpen(!1))},this._onSlotClick=e=>{const t=this.shadowRoot?.querySelector("slot");if(!t)return;const s=t.assignedElements({flatten:!0}).filter(o=>o.tagName.toLowerCase()==="scb-select-option"),r=e.composedPath(),n=s.find(o=>r.includes(o));n&&(this._selectOption(n),e.stopPropagation())},this._onKeyDown=e=>{(e.key==="Enter"||e.key===" ")&&(e.preventDefault(),this._toggleOpen())},this._onOptionKeyDown=e=>{if(e.key==="Enter"||e.key===" "){e.preventDefault();const t=this.shadowRoot?.querySelector("slot");if(!t)return;const s=t.assignedElements({flatten:!0}).filter(o=>o.tagName.toLowerCase()==="scb-select-option"),r=e.composedPath(),n=s.find(o=>r.includes(o));n&&this._selectOption(n)}},"attachInternals"in this&&(this._internals=this.attachInternals())}_syncDensityForSize(){this.size==="extra-small"?this.setAttribute("data-density","-5"):this.size==="small"?this.setAttribute("data-density","-4"):this.size==="medium"?this.setAttribute("data-density","-2"):this.removeAttribute("data-density")}connectedCallback(){super.connectedCallback(),document.addEventListener("mousedown",this._onDocumentClick),this._optionsObserver=new MutationObserver(()=>{this.requestUpdate()}),this._optionsObserver.observe(this,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["label","value","disabled"]}),this._syncDensityForSize(),this._initialValue=this.value,this._initialValues=Array.isArray(this.values)?[...this.values]:[],this._form=this.closest("form"),this._form&&(this._formResetHandler=()=>{this.value=this._initialValue,this.values=Array.isArray(this._initialValues)?[...this._initialValues]:[],this._syncFormValue(),this._syncValidity(),this.requestUpdate()},this._formSubmitHandler=e=>{this.reportValidity()||(e.preventDefault(),e.stopPropagation())},this._form.addEventListener("reset",this._formResetHandler,!0),this._form.addEventListener("submit",this._formSubmitHandler,!0))}disconnectedCallback(){document.removeEventListener("mousedown",this._onDocumentClick),this._form&&this._formResetHandler&&this._form.removeEventListener("reset",this._formResetHandler,!0),this._form&&this._formSubmitHandler&&this._form.removeEventListener("submit",this._formSubmitHandler,!0),this._optionsObserver?.disconnect(),this._optionsObserver=null,super.disconnectedCallback()}_getMultiValues(){return Array.isArray(this.values)&&this.values.length>0?this.values:this.value?this.value.split(",").map(e=>e.trim()).filter(Boolean):[]}_mapSpacingToken(e){if(!e)return;const t=String(e).trim();if(t)return/^\d+$/.test(t)?`var(--spacing-${Math.max(0,Math.min(14,parseInt(t,10)))})`:t}_applySpacing(){const e=this._mapSpacingToken(this.spacing),t=this._mapSpacingToken(this.spacingTop)??e,s=this._mapSpacingToken(this.spacingBottom)??e,r=this._mapSpacingToken(this.spacingLeft),n=this._mapSpacingToken(this.spacingRight);t?this.style.setProperty("--scb-select-spacing-block-start",t):this.style.removeProperty("--scb-select-spacing-block-start"),s?this.style.setProperty("--scb-select-spacing-block-end",s):this.style.removeProperty("--scb-select-spacing-block-end"),r?this.style.setProperty("--scb-select-spacing-inline-start",r):this.style.removeProperty("--scb-select-spacing-inline-start"),n?this.style.setProperty("--scb-select-spacing-inline-end",n):this.style.removeProperty("--scb-select-spacing-inline-end")}_setOpen(e){this.open!==e&&(this.open=e,e?(this.focusedIndex=0,this.requestUpdate()):this.focusedIndex=-1)}_toggleOpen(){this.disabled||this._setOpen(!this.open)}_hasMoreThanFourOptions(){const e=this.shadowRoot?.querySelector("slot");if(!e)return!1;const t=e.assignedElements({flatten:!0}).filter(s=>s.tagName.toLowerCase()==="scb-select-option");return["extra-small","small","medium"].includes(this.size)?t.length>5:t.length>4}_selectOption(e){if(!e.disabled){if(this.variant==="multi-select"){const t=this._getMultiValues();t.indexOf(e.value)>-1?this.values=t.filter(s=>s!==e.value):this.values=[...t,e.value],this.value=this.values.join(","),this.dispatchEvent(new CustomEvent("change",{detail:{values:this.values},bubbles:!0,composed:!0}))}else this.variant==="single-select"&&this.withRadiobuttons?(this.value=e.value,this.dispatchEvent(new CustomEvent("change",{detail:{value:this.value},bubbles:!0,composed:!0}))):(this.value=e.value,this._setOpen(!1),this.dispatchEvent(new CustomEvent("change",{detail:{value:this.value},bubbles:!0,composed:!0})));this._updateOptionsChecked(),this.requestUpdate()}}_getOptionLabel(e){return e.label||e.textContent?.trim()||""}_getSelectedLabel(){const e=this.shadowRoot?.querySelector("slot");if(!e)return"";const t=e.assignedElements({flatten:!0}).filter(s=>s.tagName.toLowerCase()==="scb-select-option");if(this.variant==="multi-select"){const s=this._getMultiValues(),r=t.filter(n=>s.includes(n.value));return r&&r.length>0?r.map(n=>this._getOptionLabel(n)).join(", "):""}else{const s=t.find(r=>r.value===this.value);return s?this._getOptionLabel(s):""}}firstUpdated(){this._updateOptionsChecked(),this._syncFormValue(),this._syncValidity(),this._applySpacing()}updated(e){this._updateOptionsChecked(),this._syncFormValue(),this._syncValidity(),e.has("size")&&this._syncDensityForSize(),(e.has("spacing")||e.has("spacingTop")||e.has("spacingBottom")||e.has("spacingLeft")||e.has("spacingRight"))&&this._applySpacing()}_syncFormValue(){if(this._internals){if(this.disabled||!this.name){this._internals.setFormValue(null);return}if(this.variant==="multi-select"){const e=this._getMultiValues();if(e.length===0){this._internals.setFormValue(null);return}const t=new FormData;e.forEach(s=>t.append(this.name,s)),this._internals.setFormValue(t);return}this._internals.setFormValue(this.value||null)}}_getValidationMessage(){return this._customValidationMessage?this._customValidationMessage:this.required&&!(this.variant==="multi-select"?this._getMultiValues().length>0:this.value)?"Välj ett alternativ.":""}_syncValidity(){if(!this._internals)return;const e=this.disabled?"":this._getValidationMessage(),t=this.shadowRoot?.querySelector(".selected-value");if(!e){this._internals.setValidity({}),this.removeAttribute("aria-invalid"),t&&t.setCustomValidity("");return}t&&t.setCustomValidity(e),this._internals.setValidity({valueMissing:!0},e,t??void 0),this.setAttribute("aria-invalid","true")}checkValidity(){return!this._getValidationMessage()}reportValidity(){return this._syncValidity(),this._internals?this._internals.reportValidity():this.checkValidity()}setCustomValidity(e){this._customValidationMessage=e,this._syncValidity()}get validity(){return this._internals?.validity}get validationMessage(){return this._internals?.validationMessage??this._getValidationMessage()}get willValidate(){return this._internals?.willValidate??!0}_updateOptionsChecked(){const e=this.shadowRoot?.querySelector("slot");e&&e.assignedElements({flatten:!0}).filter(t=>t.tagName.toLowerCase()==="scb-select-option").forEach(t=>{if(this.noHighlightSelected?t.setAttribute("no-highlight-selected",""):t.removeAttribute("no-highlight-selected"),this.variant==="multi-select"){const s=this._getMultiValues();t.showCheckbox=!0,t.checked=s.includes(t.value),t.showRadio=!1}else t.showCheckbox=!1,t.checked=this.value===t.value,this.withRadiobuttons&&(t.showRadio=!0)})}render(){return d`
|
|
2
2
|
${this.label?d`
|
|
3
3
|
<label
|
|
4
4
|
class="select-label ${this.supportingText?"":"select-label--without-supporting"}"
|