scb-wc 0.1.1 → 0.1.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/README.md CHANGED
@@ -1,128 +1,164 @@
1
- # Om SCB Web Components
2
-
3
- SCB Web Components finns för att underlätta skapandet av enhetliga, tillgängliga och användbara webbapplikationer.
4
-
5
- ---
6
-
7
- ## Kom igång
8
-
9
- **Obs:** Kör alla kommandon i mappen där din `package.json` ligger. Har du ingen? Kör `npm init -y` i projektroten (eller annan lämplig mapp).
10
-
11
- Installera paketet:
12
- ```sh
13
- npm install scb-wc
14
- ```
15
-
16
- ---
17
-
18
- ## Alternativ 1: Använd som ES-moduler (i exempelvis React)
19
-
20
- Importera enskilda komponenter (bäst för tree-shaking):
21
- ```js
22
- import 'scb-wc/scb-wc.css';
23
- import 'scb-wc/scb-button';
24
- import 'scb-wc/scb-accordion';
25
- ```
26
-
27
- Importera allt (ej rekommenderat, men möjligt):
28
- ```js
29
- import 'scb-wc/scb-wc.css';
30
- import 'scb-wc/all';
31
- ```
32
-
33
- ---
34
-
35
- ## Alternativ 2: Använd i MVC/MPA via `<script type="module">`
36
-
37
- Det här läget använder den färdig-splittrade **MVC-ESM**-builden som följer med paketet under `node_modules/scb-wc/mvc/`.
38
-
39
- ### Rekommenderat: ett npm-script
40
-
41
- Lägg till i din apps `package.json`:
42
- ```jsonc
43
- {
44
- "scripts": {
45
- "ui:install": "node -e \"const fs=require('fs'),p=require('path');const base=(process.env.npm_config_ui_wwwroot)||'wwwroot';const src=p.resolve('node_modules/scb-wc/mvc');const dst=p.resolve(base,'ui');if(!fs.existsSync(src)){console.error('Hittar inte '+src+'. Har du kört npm install scb-wc?');process.exit(1);}fs.rmSync(dst,{recursive:true,force:true});fs.mkdirSync(base,{recursive:true});fs.cpSync(src,dst,{recursive:true});console.log('Kopierade '+src+' → '+dst);\""
46
- }
47
- }
48
- ```
49
-
50
- Kör sedan:
51
- ```sh
52
- npm run ui:install
53
- ```
54
-
55
- Det kopierar hela `mvc/` till `wwwroot/ui/` (komponenter, vendor och CSS).
56
-
57
- #### Vanliga lägen (var ligger din `package.json`?)
58
-
59
- **A) Standard MVC-projekt**
60
- `package.json` ligger i **projektroten** (vid sidan av `.csproj`).
61
- Kör bara:
62
- ```sh
63
- npm run ui:install
64
- ```
65
- Resultat: filer kopieras till `./wwwroot/ui/`.
66
-
67
- **B) Frontend i `ClientApp/`**
68
- `package.json` ligger i **ClientApp/** och webbroten är `../wwwroot`.
69
- Kör med flagga:
70
- ```sh
71
- npm run ui:install --ui_wwwroot=../wwwroot
72
- ```
73
- Resultat: filer kopieras till `../wwwroot/ui/`.
74
-
75
- ### Ladda filer i din layout
76
-
77
- ```html
78
- <!-- Lägg helst i <head> -->
79
- <link rel="stylesheet" href="~/ui/scb-wc.css" />
80
-
81
- <!-- Ladda ENDAST de komponenter du använder på sidan, gärna precis före </body> -->
82
- <script type="module" src="~/ui/components/scb-link/scb-link.js"></script>
83
- <script type="module" src="~/ui/components/scb-button/scb-button.js"></script>
84
-
85
- <!-- För demosida: ladda alla -->
86
- <!-- <script type="module" src="~/ui/components/all.js"></script> -->
87
- ```
88
-
89
- ---
90
-
91
- ### 2.1) CI/CD (exempel)
92
-
93
- Kör samma script i din pipeline:
94
- ```yaml
95
- steps:
96
- - script: npm ci
97
- - script: npm run ui:install
98
- ```
99
-
100
- Behöver du annan webbrotsökväg i pipelinen? Lägg till flaggan:
101
- ```yaml
102
- - script: npm run ui:install --ui_wwwroot=../wwwroot
103
- ```
104
-
105
- ---
106
-
107
- ## Alternativ 3: Använd bundlad version (IIFE)
108
-
109
- Om ESM inte stöds, använd den bundlade varianten från paketroten.
110
- Flytta följande två filer från `node_modules/scb-wc` och använd dem i applikationen:
111
-
112
- ```
113
- node_modules/scb-wc/scb-wc.bundle.js
114
- node_modules/scb-wc/scb-wc.css
115
- ```
116
-
117
- ```html
118
- <link rel="stylesheet" href="scb-wc.css">
119
- <script src="scb-wc.bundle.js"></script>
120
- ```
121
-
122
- ---
123
-
124
- ## Viktigt
125
-
126
- - **Stå i mappen med din `package.json`** när du kör `npm install` och kopieringskommandon.
127
- - **Placeringen av `package.json` styr defaultmål**: roten → `wwwroot/ui`, `ClientApp/` → använd `--ui_wwwroot=../wwwroot`.
128
- - **Blanda inte** MVC-ESM och IIFE på samma sida.
1
+ # Om SCB Web Components
2
+
3
+ SCB Web Components finns för att underlätta skapandet av enhetliga, tillgängliga och användbara webbapplikationer.
4
+
5
+ Komponenterna bygger på:
6
+ - [Lit](https://lit.dev/)
7
+ - [Material Web Components](https://material-web.dev/about/intro/)
8
+
9
+ ## Storybook och dokumentation (internt)
10
+
11
+ Produktionskomponenterna dokumenteras och demonstreras i Storybook på SCB:s interna adress:
12
+
13
+ - Prod: https://webcomponents.scb.intra
14
+
15
+ Testkomponenterna finns på:
16
+
17
+ - Test: https://webcomponentstest.scb.intra
18
+
19
+ ---
20
+
21
+ ## Kom igång
22
+
23
+ > **Obs:** Kör alla kommandon i mappen där din `package.json` ligger.
24
+ > Har du ingen? Kör `npm init -y` i projektroten (eller annan lämplig mapp).
25
+
26
+ Installera paketet:
27
+
28
+ ```sh
29
+ npm install scb-wc
30
+ ```
31
+
32
+ ---
33
+
34
+ ## Alternativ 1: Använd som ES‑moduler (t.ex. i React, Vue, SPA)
35
+
36
+ Importera CSS och de komponenter du använder (bäst för tree‑shaking):
37
+
38
+ ```js
39
+ // Global CSS + tokens (måste bara importeras en gång)
40
+ import 'scb-wc/scb-wc.css';
41
+ import 'scb-wc/scb-typography.css';
42
+
43
+ // Enskilda web components
44
+ import 'scb-wc/scb-button';
45
+ import 'scb-wc/scb-accordion';
46
+ ```
47
+
48
+ Vill du ladda allt finns en samlingsfil (inte rekommenderat i större appar):
49
+
50
+ ```js
51
+ import 'scb-wc/scb-wc.css';
52
+ import 'scb-wc/scb-typography.css';
53
+ import 'scb-wc/all';
54
+ ```
55
+
56
+ ---
57
+
58
+ ## Alternativ 2: Använd i MVC/MPA via `<script type="module">`
59
+
60
+ Det här läget använder den färdig‑splittrade **MVC‑ESM**‑builden som följer med paketet under:
61
+
62
+ ```text
63
+ node_modules/scb-wc/mvc/
64
+ ```
65
+
66
+ ### 2.1) Rekommenderat: ett npm‑script för att kopiera UI‑filer
67
+
68
+ Lägg till i din apps `package.json`:
69
+
70
+ ```jsonc
71
+ {
72
+ "scripts": {
73
+ "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);\""
74
+ }
75
+ }
76
+ ```
77
+
78
+ Kör sedan:
79
+
80
+ ```sh
81
+ npm run ui:install
82
+ ```
83
+
84
+ Det kopierar hela `node_modules/scb-wc/mvc/` till `wwwroot/ui/` i din applikation (komponenter, vendor och CSS).
85
+
86
+ ### 2.2) Ladda filer i din layout (Razor, .cshtml, klassisk MVC)
87
+
88
+ ```html
89
+ <!-- Lägg helst i <head> -->
90
+ <link rel="stylesheet" href="~/ui/scb-wc.css" />
91
+ <link rel="stylesheet" href="~/ui/scb-typography.css" />
92
+
93
+ <!-- Ladda ENDAST de komponenter du använder på sidan, gärna precis före </body> -->
94
+ <script type="module" src="~/ui/components/scb-link/scb-link.js"></script>
95
+ <script type="module" src="~/ui/components/scb-button/scb-button.js"></script>
96
+ ```
97
+
98
+ ### 2.3) CI/CD‑exempel
99
+
100
+ Kör samma script i din pipeline:
101
+
102
+ ```yaml
103
+ steps:
104
+ - script: npm ci
105
+ - script: npm run ui:install
106
+ ```
107
+
108
+ Behöver du en annan webbrotsökväg (t.ex. om din `wwwroot` ligger någon annanstans) kan du ange flaggan:
109
+
110
+ ```yaml
111
+ - script: npm run ui:install --ui_wwwroot=../wwwroot
112
+ ```
113
+
114
+ ---
115
+
116
+ ## Alternativ 3: Bundlad version (IIFE) för äldre miljöer
117
+
118
+ Om ESM inte stöds kan du använda den bundlade varianten från paketroten.
119
+ Flytta följande två filer från `node_modules/scb-wc` och använd dem i applikationen:
120
+
121
+ ```text
122
+ node_modules/scb-wc/scb-wc.bundle.js
123
+ node_modules/scb-wc/scb-wc.css
124
+ ```
125
+
126
+ ```html
127
+ <link rel="stylesheet" href="scb-wc.css">
128
+ <link rel="stylesheet" href="scb-typography.css" />
129
+ <script src="scb-wc.bundle.js"></script>
130
+ ```
131
+
132
+ > **Obs:** Blanda inte MVC‑ESM och IIFE på samma sida.
133
+
134
+ ---
135
+
136
+ ## Alternativ 4: Blazor (Server och WebAssembly)
137
+
138
+ SCB Web Components fungerar även i Blazor‑appar när du vill använda samma komponenter i både MVC/MPA och Blazor.
139
+
140
+ Grundprincipen är:
141
+
142
+ 1. Använd MVC‑ESM‑builden (`node_modules/scb-wc/mvc`) och kopiera den till `wwwroot/ui` med `ui:install`.
143
+ 2. Ladda `scb-blazor-bridge.js` från `wwwroot/ui` i din Blazor‑layout.
144
+ 3. Lägg till (eller återanvänd) `ScbBlazorInteropBase` i din lösning.
145
+
146
+ Exempel på layout:
147
+
148
+ ```html
149
+ <link rel="stylesheet" href="~/ui/scb-wc.css" />
150
+ <link rel="stylesheet" href="~/ui/scb-typography.css" />
151
+
152
+ <script type="module" src="~/ui/scb-blazor-bridge.js"></script>
153
+ ```
154
+
155
+ `ScbBlazorInteropBase` kan återanvändas mellan projekt som använder både `scb-wc` och `scb-wc-test`.
156
+
157
+ ---
158
+
159
+ ## Viktigt
160
+
161
+ - `scb-wc` är produktionspaketet. Använd `scb-wc-test` för komponenter under utveckling och experiment.
162
+ - **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`).
163
+ - **Blanda inte MVC‑ESM och IIFE på samma sida.** Välj en distributionsform per sida/app.
164
+ - **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
@@ -1 +1,6 @@
1
+ import './all.js';
2
+ import './blazor/scb-blazor-bridge.js';
1
3
  import './index.js';
4
+ import './mvc/components/all.js';
5
+ import './mvc/components/index.js';
6
+ import './mvc/scb-blazor-bridge.js';