@mattilsynet/design 3.2.8 → 3.3.0
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/mtds/ai/AGENTS.md +892 -0
- package/mtds/ai/alert.mdx +63 -0
- package/mtds/ai/alert.stories.tsx +128 -0
- package/mtds/ai/analytics.mdx +185 -0
- package/mtds/ai/app.mdx +60 -0
- package/mtds/ai/app.stories.tsx +897 -0
- package/mtds/ai/atlas.mdx +82 -0
- package/mtds/ai/atlas.stories.tsx +424 -0
- package/mtds/ai/avatar.mdx +45 -0
- package/mtds/ai/avatar.stories.tsx +109 -0
- package/mtds/ai/badge.mdx +70 -0
- package/mtds/ai/badge.stories.tsx +122 -0
- package/mtds/ai/breadcrumbs.mdx +36 -0
- package/mtds/ai/breadcrumbs.stories.tsx +158 -0
- package/mtds/ai/button.mdx +179 -0
- package/mtds/ai/button.stories.tsx +440 -0
- package/mtds/ai/card.mdx +51 -0
- package/mtds/ai/card.stories.tsx +469 -0
- package/mtds/ai/chart.mdx +67 -0
- package/mtds/ai/chart.stories.tsx +519 -0
- package/mtds/ai/chip.mdx +71 -0
- package/mtds/ai/chip.stories.tsx +211 -0
- package/mtds/ai/details.mdx +33 -0
- package/mtds/ai/details.stories.tsx +91 -0
- package/mtds/ai/dialog.mdx +38 -0
- package/mtds/ai/dialog.stories.tsx +373 -0
- package/mtds/ai/divider.mdx +19 -0
- package/mtds/ai/divider.stories.tsx +50 -0
- package/mtds/ai/errorsummary.mdx +26 -0
- package/mtds/ai/errorsummary.stories.tsx +137 -0
- package/mtds/ai/field.mdx +86 -0
- package/mtds/ai/field.stories.tsx +863 -0
- package/mtds/ai/fieldset.mdx +126 -0
- package/mtds/ai/fieldset.stories.tsx +298 -0
- package/mtds/ai/fileupload.mdx +16 -0
- package/mtds/ai/fileupload.stories.tsx +126 -0
- package/mtds/ai/helptext.mdx +24 -0
- package/mtds/ai/helptext.stories.tsx +106 -0
- package/mtds/ai/input.mdx +223 -0
- package/mtds/ai/input.stories.tsx +352 -0
- package/mtds/ai/law.mdx +115 -0
- package/mtds/ai/law.stories.tsx +168 -0
- package/mtds/ai/layout.mdx +145 -0
- package/mtds/ai/layout.stories.tsx +443 -0
- package/mtds/ai/link.mdx +45 -0
- package/mtds/ai/link.stories.tsx +44 -0
- package/mtds/ai/logo.mdx +86 -0
- package/mtds/ai/logo.stories.tsx +146 -0
- package/mtds/ai/pagination.mdx +136 -0
- package/mtds/ai/pagination.stories.tsx +404 -0
- package/mtds/ai/popover.mdx +86 -0
- package/mtds/ai/popover.stories.tsx +355 -0
- package/mtds/ai/print.mdx +96 -0
- package/mtds/ai/print.stories.tsx +839 -0
- package/mtds/ai/progress.mdx +41 -0
- package/mtds/ai/progress.stories.tsx +141 -0
- package/mtds/ai/skeleton.mdx +26 -0
- package/mtds/ai/skeleton.stories.tsx +131 -0
- package/mtds/ai/spinner.mdx +26 -0
- package/mtds/ai/spinner.stories.tsx +72 -0
- package/mtds/ai/steps.mdx +37 -0
- package/mtds/ai/steps.stories.tsx +568 -0
- package/mtds/ai/table.mdx +124 -0
- package/mtds/ai/table.stories.tsx +1715 -0
- package/mtds/ai/tabs.mdx +106 -0
- package/mtds/ai/tabs.stories.tsx +159 -0
- package/mtds/ai/tag.mdx +49 -0
- package/mtds/ai/tag.stories.tsx +111 -0
- package/mtds/ai/toast.mdx +67 -0
- package/mtds/ai/toast.stories.tsx +215 -0
- package/mtds/ai/togglegroup.mdx +75 -0
- package/mtds/ai/togglegroup.stories.tsx +96 -0
- package/mtds/ai/tooltip.mdx +32 -0
- package/mtds/ai/tooltip.stories.tsx +34 -0
- package/mtds/ai/typography.mdx +67 -0
- package/mtds/ai/typography.stories.tsx +798 -0
- package/mtds/ai/validation.mdx +19 -0
- package/mtds/ai/validation.stories.tsx +45 -0
- package/mtds/app/app-observer.js +1 -1
- package/mtds/app/app-toggle.js +26 -10
- package/mtds/app/app-toggle.js.map +1 -1
- package/mtds/app/app-toggle2.js +10 -26
- package/mtds/app/app-toggle2.js.map +1 -1
- package/mtds/app/app.js +1 -1
- package/mtds/atlas/atlas-element.js +1 -1
- package/mtds/breadcrumbs/breadcrumbs.d.ts +1 -1
- package/mtds/breadcrumbs/breadcrumbs.js.map +1 -1
- package/mtds/chart/chart-lines.js +19 -19
- package/mtds/chart/chart-lines.js.map +1 -1
- package/mtds/chart/chart.css.js +16 -1
- package/mtds/chart/chart.css.js.map +1 -1
- package/mtds/chart/chart.stories.d.ts +1 -0
- package/mtds/deprecations.js +6 -5
- package/mtds/deprecations.js.map +1 -1
- package/mtds/errorsummary/errorsummary.d.ts +1 -1
- package/mtds/errorsummary/errorsummary.js.map +1 -1
- package/mtds/field/field.d.ts +1 -1
- package/mtds/field/field.js.map +1 -1
- package/mtds/index.d.ts +1 -2
- package/mtds/index.iife.js +29 -18
- package/mtds/index.js +32 -37
- package/mtds/index.js.map +1 -1
- package/mtds/package.json.js +1 -1
- package/mtds/pagination/pagination.d.ts +1 -1
- package/mtds/pagination/pagination.js +9 -8
- package/mtds/pagination/pagination.js.map +1 -1
- package/mtds/styles.css +1 -1
- package/mtds/styles.json +23 -23
- package/mtds/styles.module.css.js +33 -33
- package/mtds/table/table-observer.js +26 -15
- package/mtds/table/table-observer.js.map +1 -1
- package/mtds/tabs/tabs.d.ts +1 -1
- package/mtds/tabs/tabs.js.map +1 -1
- package/mtds/tailwind.css +0 -1
- package/mtds/tooltip/tooltip-element.js +7 -6
- package/mtds/tooltip/tooltip-element.js.map +1 -1
- package/package.json +8 -6
- package/mtds/external/@u-elements/u-datalist/dist/u-datalist.js +0 -238
- package/mtds/external/@u-elements/u-datalist/dist/u-datalist.js.map +0 -1
- package/mtds/external/@u-elements/u-details/dist/u-details.js +0 -101
- package/mtds/external/@u-elements/u-details/dist/u-details.js.map +0 -1
- package/mtds/external/@u-elements/u-tabs/dist/u-tabs.js +0 -235
- package/mtds/external/@u-elements/u-tabs/dist/u-tabs.js.map +0 -1
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Meta, Canvas } from '@storybook/addon-docs/blocks';
|
|
2
|
+
import { CssVariables } from '../../.storybook/blocks';
|
|
3
|
+
import * as stories from './validation.stories';
|
|
4
|
+
|
|
5
|
+
<Meta of={stories} />
|
|
6
|
+
|
|
7
|
+
# Validation
|
|
8
|
+
> Validation sjekker om dataene brukeren har angitt i et skjema eller et input-felt er gyldige i forhold til forhåndsdefinerte regler. Den gir tilbakemelding til brukeren om eventuelle feil og forhindrer at ugyldige data sendes videre til systemet.
|
|
9
|
+
|
|
10
|
+
## Kode
|
|
11
|
+
- Legg klassen `validation` på typisk `<div>`
|
|
12
|
+
- Bruk `data-field="validation"` eller `data-field="counter"` for å knytte validering til et [field](?path=/docs/designsystem-field--docs)
|
|
13
|
+
<Canvas of={stories.Default} />
|
|
14
|
+
|
|
15
|
+
# Farger
|
|
16
|
+
- Bruk `data-color="danger | success | info | warning"`
|
|
17
|
+
<Canvas of={stories.Colors} />
|
|
18
|
+
|
|
19
|
+
<CssVariables component="validation" />
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from "@storybook/react-vite";
|
|
2
|
+
import { Field, Grid, Input, Validation } from "../react";
|
|
3
|
+
import styles from "../styles.module.css";
|
|
4
|
+
|
|
5
|
+
const meta = {
|
|
6
|
+
title: "Designsystem/Validation",
|
|
7
|
+
} satisfies Meta;
|
|
8
|
+
|
|
9
|
+
export default meta;
|
|
10
|
+
type Story = StoryObj<typeof meta>;
|
|
11
|
+
|
|
12
|
+
export const Default: Story = {
|
|
13
|
+
render: () => (
|
|
14
|
+
<ds-field className={styles.field}>
|
|
15
|
+
<label>Ledetekst</label>
|
|
16
|
+
<p data-field="desciption">Beskrivelse</p>
|
|
17
|
+
<input type="text" className={styles.input} />
|
|
18
|
+
<div className={styles.validation} data-field="validation">
|
|
19
|
+
Feilmelding
|
|
20
|
+
</div>
|
|
21
|
+
</ds-field>
|
|
22
|
+
),
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
export const React: Story = {
|
|
26
|
+
render: () => (
|
|
27
|
+
<Field>
|
|
28
|
+
<Field.Label>Ledetekst</Field.Label>
|
|
29
|
+
<Field.Description>Beskrivelse</Field.Description>
|
|
30
|
+
<Input />
|
|
31
|
+
<Validation>Feilmelding</Validation>
|
|
32
|
+
</Field>
|
|
33
|
+
),
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
export const Colors: Story = {
|
|
37
|
+
render: () => (
|
|
38
|
+
<Grid>
|
|
39
|
+
<Validation data-color="danger">Feilmelding</Validation>
|
|
40
|
+
<Validation data-color="success">Suksess</Validation>
|
|
41
|
+
<Validation data-color="info">Informasjon</Validation>
|
|
42
|
+
<Validation data-color="warning">Advarsel</Validation>
|
|
43
|
+
</Grid>
|
|
44
|
+
),
|
|
45
|
+
};
|
package/mtds/app/app-observer.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import P from "../styles.module.css.js";
|
|
2
2
|
import { getByCSSModule as _, onHotReload as h, on as r, QUICK_EVENT as m, debounce as E } from "../utils.js";
|
|
3
|
-
import "./app-
|
|
3
|
+
import "./app-toggle2.js";
|
|
4
4
|
const y = P.app.split(" ")[0], I = `[data-command="toggle-app-expanded"],.${y} > [command="show-modal"]`, u = `.${y} > dialog,.${y} dialog ~ main`, S = _("sticky"), w = (t) => {
|
|
5
5
|
document.startViewTransition ? document.startViewTransition(t) : t();
|
|
6
6
|
}, x = (t) => (
|
package/mtds/app/app-toggle.js
CHANGED
|
@@ -1,11 +1,27 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
1
|
+
const t = `if (
|
|
2
|
+
typeof window !== "undefined" &&
|
|
3
|
+
window.CSSStyleSheet &&
|
|
4
|
+
document.adoptedStyleSheets
|
|
5
|
+
)
|
|
6
|
+
(() => {
|
|
7
|
+
const key = "--mtds-app-expanded";
|
|
8
|
+
const sheet = new CSSStyleSheet();
|
|
9
|
+
const prev = () => !window.localStorage.getItem(key)?.includes("false");
|
|
10
|
+
|
|
11
|
+
document.adoptedStyleSheets.push(sheet);
|
|
12
|
+
window.mtdsToggleAppExpanded = (force) => {
|
|
13
|
+
try {
|
|
14
|
+
const next = force ?? !prev();
|
|
15
|
+
sheet.replaceSync?.(\`:root { \${key}: var(\${key}--\${next})}\`);
|
|
16
|
+
window.localStorage.setItem(key, next);
|
|
17
|
+
} catch (_err) {} // localStorage is full or replaceSync is not supported
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
// Set and store initial state
|
|
21
|
+
window.mtdsToggleAppExpanded(prev());
|
|
22
|
+
})();
|
|
23
|
+
`;
|
|
24
|
+
export {
|
|
25
|
+
t as default
|
|
26
|
+
};
|
|
11
27
|
//# sourceMappingURL=app-toggle.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-toggle.js","sources":["../../designsystem/app/app-toggle.js"],"sourcesContent":["if (
|
|
1
|
+
{"version":3,"file":"app-toggle.js","sources":["../../designsystem/app/app-toggle.js?raw"],"sourcesContent":["export default \"if (\\n\\ttypeof window !== \\\"undefined\\\" &&\\n\\twindow.CSSStyleSheet &&\\n\\tdocument.adoptedStyleSheets\\n)\\n\\t(() => {\\n\\t\\tconst key = \\\"--mtds-app-expanded\\\";\\n\\t\\tconst sheet = new CSSStyleSheet();\\n\\t\\tconst prev = () => !window.localStorage.getItem(key)?.includes(\\\"false\\\");\\n\\n\\t\\tdocument.adoptedStyleSheets.push(sheet);\\n\\t\\twindow.mtdsToggleAppExpanded = (force) => {\\n\\t\\t\\ttry {\\n\\t\\t\\t\\tconst next = force ?? !prev();\\n\\t\\t\\t\\tsheet.replaceSync?.(`:root { ${key}: var(${key}--${next})}`);\\n\\t\\t\\t\\twindow.localStorage.setItem(key, next);\\n\\t\\t\\t} catch (_err) {} // localStorage is full or replaceSync is not supported\\n\\t\\t};\\n\\n\\t\\t// Set and store initial state\\n\\t\\twindow.mtdsToggleAppExpanded(prev());\\n\\t})();\\n\""],"names":["script"],"mappings":"AAAA,MAAAA,IAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}
|
package/mtds/app/app-toggle2.js
CHANGED
|
@@ -1,27 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
)
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
document.adoptedStyleSheets.push(sheet);
|
|
12
|
-
window.mtdsToggleAppExpanded = (force) => {
|
|
13
|
-
try {
|
|
14
|
-
const next = force ?? !prev();
|
|
15
|
-
sheet.replaceSync?.(\`:root { \${key}: var(\${key}--\${next})}\`);
|
|
16
|
-
window.localStorage.setItem(key, next);
|
|
17
|
-
} catch (_err) {} // localStorage is full or replaceSync is not supported
|
|
18
|
-
};
|
|
19
|
-
|
|
20
|
-
// Set and store initial state
|
|
21
|
-
window.mtdsToggleAppExpanded(prev());
|
|
22
|
-
})();
|
|
23
|
-
`;
|
|
24
|
-
export {
|
|
25
|
-
t as default
|
|
26
|
-
};
|
|
1
|
+
typeof window < "u" && window.CSSStyleSheet && document.adoptedStyleSheets && (() => {
|
|
2
|
+
const e = "--mtds-app-expanded", d = new CSSStyleSheet(), o = () => !window.localStorage.getItem(e)?.includes("false");
|
|
3
|
+
document.adoptedStyleSheets.push(d), window.mtdsToggleAppExpanded = (n) => {
|
|
4
|
+
try {
|
|
5
|
+
const t = n ?? !o();
|
|
6
|
+
d.replaceSync?.(`:root { ${e}: var(${e}--${t})}`), window.localStorage.setItem(e, t);
|
|
7
|
+
} catch {
|
|
8
|
+
}
|
|
9
|
+
}, window.mtdsToggleAppExpanded(o());
|
|
10
|
+
})();
|
|
27
11
|
//# sourceMappingURL=app-toggle2.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-toggle2.js","sources":["../../designsystem/app/app-toggle.js
|
|
1
|
+
{"version":3,"file":"app-toggle2.js","sources":["../../designsystem/app/app-toggle.js"],"sourcesContent":["if (\n\ttypeof window !== \"undefined\" &&\n\twindow.CSSStyleSheet &&\n\tdocument.adoptedStyleSheets\n)\n\t(() => {\n\t\tconst key = \"--mtds-app-expanded\";\n\t\tconst sheet = new CSSStyleSheet();\n\t\tconst prev = () => !window.localStorage.getItem(key)?.includes(\"false\");\n\n\t\tdocument.adoptedStyleSheets.push(sheet);\n\t\twindow.mtdsToggleAppExpanded = (force) => {\n\t\t\ttry {\n\t\t\t\tconst next = force ?? !prev();\n\t\t\t\tsheet.replaceSync?.(`:root { ${key}: var(${key}--${next})}`);\n\t\t\t\twindow.localStorage.setItem(key, next);\n\t\t\t} catch (_err) {} // localStorage is full or replaceSync is not supported\n\t\t};\n\n\t\t// Set and store initial state\n\t\twindow.mtdsToggleAppExpanded(prev());\n\t})();\n"],"names":["key","sheet","prev","force","next"],"mappings":"AACC,OAAO,SAAW,OAClB,OAAO,iBACP,SAAS,uBAER,MAAM;AACN,QAAMA,IAAM,uBACNC,IAAQ,IAAI,cAAa,GACzBC,IAAO,MAAM,CAAC,OAAO,aAAa,QAAQF,CAAG,GAAG,SAAS,OAAO;AAEtE,WAAS,mBAAmB,KAAKC,CAAK,GACtC,OAAO,wBAAwB,CAACE,MAAU;AACzC,QAAI;AACH,YAAMC,IAAOD,KAAS,CAACD,EAAI;AAC3B,MAAAD,EAAM,cAAc,WAAWD,CAAG,SAASA,CAAG,KAAKI,CAAI,IAAI,GAC3D,OAAO,aAAa,QAAQJ,GAAKI,CAAI;AAAA,IACtC,QAAe;AAAA,IAAC;AAAA,EACjB,GAGA,OAAO,sBAAsBF,GAAM;AACpC,GAAC;"}
|
package/mtds/app/app.js
CHANGED
|
@@ -3,7 +3,7 @@ import a from "clsx";
|
|
|
3
3
|
import { forwardRef as n } from "react";
|
|
4
4
|
import { Button as m } from "../button/button.js";
|
|
5
5
|
import s from "../styles.module.css.js";
|
|
6
|
-
import d from "./app-
|
|
6
|
+
import d from "./app-toggle.js";
|
|
7
7
|
const u = n(function({ as: r, className: t, ...p }, e) {
|
|
8
8
|
return /* @__PURE__ */ o(r || "div", { className: a(s.app, t), ref: e, ...p });
|
|
9
9
|
}), f = n(function({ as: r, className: t, ...p }, e) {
|
|
@@ -19,7 +19,7 @@ class r extends g {
|
|
|
19
19
|
}
|
|
20
20
|
constructor() {
|
|
21
21
|
super(), this.attachShadow({ mode: "open" }).append(m("figure")), C(this, `@layer leaflet{${h}}
|
|
22
|
-
@layer mt.v3-
|
|
22
|
+
@layer mt.v3-3-0design{${b}`);
|
|
23
23
|
}
|
|
24
24
|
connectedCallback() {
|
|
25
25
|
const t = this.shadowRoot?.lastElementChild, e = a(this, "data-cluster") ?? "false", o = new i.TileLayer(k, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"breadcrumbs.js","sources":["../../designsystem/breadcrumbs/breadcrumbs.tsx"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"breadcrumbs.js","sources":["../../designsystem/breadcrumbs/breadcrumbs.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport type { DSBreadcrumbsElement } from \"..\";\nimport type { CustomReactElementProps } from \"../react-types\";\nimport styles from \"../styles.module.css\";\nimport { toCustomElementProps } from \"../utils\";\n\nexport type BreadcrumbsProps = CustomReactElementProps<DSBreadcrumbsElement> & {\n\t/**\n\t * @deprecated `as` prop is no longer supported.\n\t */\n\tas?: never; // Remove `as` prop support\n};\n\nexport const Breadcrumbs = forwardRef<DSBreadcrumbsElement, BreadcrumbsProps>(\n\tfunction Breadcrumbs(rest, ref) {\n\t\treturn (\n\t\t\t<ds-breadcrumbs\n\t\t\t\tref={ref}\n\t\t\t\t{...toCustomElementProps(rest, styles.breadcrumbs)}\n\t\t\t/>\n\t\t);\n\t},\n);\n"],"names":["Breadcrumbs","forwardRef","rest","ref","jsx","toCustomElementProps","styles"],"mappings":";;;;AAaO,MAAMA,IAAcC;AAAA,EAC1B,SAAqBC,GAAMC,GAAK;AAC/B,WACC,gBAAAC;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,KAAAD;AAAA,QACC,GAAGE,EAAqBH,GAAMI,EAAO,WAAW;AAAA,MAAA;AAAA,IAAA;AAAA,EAGpD;AACD;"}
|
|
@@ -1,39 +1,39 @@
|
|
|
1
1
|
import { tag as m, attr as c } from "../utils.js";
|
|
2
|
-
function
|
|
3
|
-
const s = Number.parseFloat(n || "0") || 0,
|
|
4
|
-
return
|
|
2
|
+
function N(e, { total: t, type: n, variant: o }) {
|
|
3
|
+
const s = Number.parseFloat(n || "0") || 0, r = m("div", { class: "axisGroup" });
|
|
4
|
+
return e.slice(1).forEach(([, ...p]) => {
|
|
5
5
|
const i = m("div", { class: "lineContainer", role: "list" });
|
|
6
6
|
i.style.setProperty("--color", p[0].color);
|
|
7
|
-
const h =
|
|
8
|
-
p.map(({ number:
|
|
9
|
-
100 / (
|
|
10
|
-
100 -
|
|
7
|
+
const h = x(
|
|
8
|
+
p.map(({ number: a }, u, { length: v }) => [
|
|
9
|
+
100 / (v - 1) * u,
|
|
10
|
+
100 - a / t * 100
|
|
11
11
|
]),
|
|
12
12
|
s / 100
|
|
13
13
|
), d = document.createElementNS("http://www.w3.org/2000/svg", "svg");
|
|
14
14
|
c(d, "aria-hidden", "true"), c(d, "preserveAspectRatio", "none"), c(d, "viewBox", "0 0 100 100");
|
|
15
15
|
const l = document.createElementNS("http://www.w3.org/2000/svg", "path");
|
|
16
16
|
if (c(l, "class", "line"), c(l, "d", h), c(l, "fill", "none"), c(l, "stroke", "currentColor"), o === "area") {
|
|
17
|
-
const
|
|
18
|
-
c(
|
|
17
|
+
const a = l.cloneNode(!0);
|
|
18
|
+
c(a, "d", `M-100,100 L${h.slice(1)}L200,100`), c(a, "class", "lineShade"), d.append(a);
|
|
19
19
|
}
|
|
20
|
-
p.forEach(({ number:
|
|
21
|
-
const
|
|
20
|
+
p.forEach(({ number: a, tooltip: u, event: v }, b) => {
|
|
21
|
+
const $ = m("div", { role: "listitem" }), g = m("div", {
|
|
22
22
|
"aria-label": u,
|
|
23
|
-
"data-event":
|
|
23
|
+
"data-event": v,
|
|
24
24
|
tabindex: "0",
|
|
25
25
|
class: "linePoint",
|
|
26
26
|
role: "img"
|
|
27
27
|
});
|
|
28
|
-
|
|
29
|
-
}), i.appendChild(d).append(l),
|
|
30
|
-
}),
|
|
28
|
+
c($, "data-label", e[0][b + 1]?.value), g.style.setProperty("--value", `${a}`), $.appendChild(g), i.append($);
|
|
29
|
+
}), i.appendChild(d).append(l), r.append(i);
|
|
30
|
+
}), r;
|
|
31
31
|
}
|
|
32
|
-
const
|
|
33
|
-
const o = e
|
|
34
|
-
return `C ${
|
|
32
|
+
const x = (e, t) => e.map(([n, o], s, r) => s ? y(s, r, t) : `M${n},${o}`).join(" "), w = ([e, t], [n, o]) => [e + n, t + o], f = ([e, t], [n, o]) => [e - n, t - o], C = (e, [t, n]) => [e * t, e * n], y = (e, t, n) => {
|
|
33
|
+
const o = t[e - 1], s = t[e], [r, p] = w(o, C(n, f(s, t[e - 2] || o))), [i, h] = w(s, C(n, f(o, t[e + 1] || s)));
|
|
34
|
+
return `C ${r},${p} ${i},${h} ${s[0]},${s[1]}`;
|
|
35
35
|
};
|
|
36
36
|
export {
|
|
37
|
-
|
|
37
|
+
N as toLines
|
|
38
38
|
};
|
|
39
39
|
//# sourceMappingURL=chart-lines.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chart-lines.js","sources":["../../designsystem/chart/chart-lines.ts"],"sourcesContent":["import { attr, tag } from \"../utils\";\nimport type { ChartData } from \"./chart-element\";\n\ntype Config = {\n\ttotal: number;\n\ttype: string;\n\tvariant: string;\n};\n\nexport function toLines(data: ChartData, { total, type, variant }: Config) {\n\tconst smoothing = Number.parseFloat(type || \"0\") || 0;\n\tconst group = tag(\"div\", { class: \"axisGroup\" });\n\tdata.slice(1).forEach(([, ...values]) => {\n\t\tconst lineContainer = tag(\"div\", { class: `lineContainer`, role: \"list\" });\n\t\tlineContainer.style.setProperty(\"--color\", values[0].color); // Use color of first column as default for line\n\n\t\tconst pathDefintion = toPath(\n\t\t\tvalues.map(({ number }, index, { length }) => [\n\t\t\t\t(100 / (length - 1)) * index,\n\t\t\t\t100 - (number / total) * 100,\n\t\t\t]),\n\t\t\tsmoothing / 100,\n\t\t);\n\n\t\tconst line = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n\t\tattr(line, \"aria-hidden\", \"true\");\n\t\tattr(line, \"preserveAspectRatio\", \"none\");\n\t\tattr(line, \"viewBox\", \"0 0 100 100\");\n\n\t\tconst path = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n\t\tattr(path, \"class\", \"line\");\n\t\tattr(path, \"d\", pathDefintion);\n\t\tattr(path, \"fill\", \"none\");\n\t\tattr(path, \"stroke\", \"currentColor\");\n\n\t\tif (variant === \"area\") {\n\t\t\tconst lineShade = path.cloneNode(true) as SVGPathElement;\n\t\t\tattr(lineShade, \"d\", `M-100,100 L${pathDefintion.slice(1)}L200,100`);\n\t\t\tattr(lineShade, \"class\", \"lineShade\");\n\t\t\tline.append(lineShade);\n\t\t}\n\n\t\tvalues.forEach(({ number, tooltip, event }) => {\n\t\t\tconst col = tag(\"div\", { role: \"listitem\" });\n\t\t\tconst point = tag(\"div\", {\n\t\t\t\t\"aria-label\": tooltip,\n\t\t\t\t\"data-event\": event,\n\t\t\t\ttabindex: \"0\",\n\t\t\t\tclass: \"linePoint\",\n\t\t\t\trole: \"img\",\n\t\t\t});\n\n\t\t\tpoint.style.setProperty(\"--value\", `${number}`); // Use color of first column as default for point\n\t\t\tcol.appendChild(point);\n\t\t\tlineContainer.append(col);\n\t\t});\n\n\t\tlineContainer.appendChild(line).append(path);\n\t\tgroup.append(lineContainer);\n\t});\n\treturn group;\n}\n\n// Based on https://observablehq.com/@ndry/smooth-a-svg-path-with-cubic-bezier-curves\nconst toPath = (points: number[][], s: number) =>\n\tpoints.map(([x, y], i, a) => (i ? smooth(i, a, s) : `M${x},${y}`)).join(\" \");\nconst add = ([ax, ay]: number[], [bx, by]: number[]) => [ax + bx, ay + by];\nconst sub = ([ax, ay]: number[], [bx, by]: number[]) => [ax - bx, ay - by];\nconst scale = (s: number, [x, y]: number[]) => [s * x, s * y];\nconst smooth = (i: number, all: number[][], smooth: number) => {\n\tconst start = all[i - 1];\n\tconst end = all[i];\n\tconst [csX, csY] = add(start, scale(smooth, sub(end, all[i - 2] || start))); // start control point\n\tconst [ceX, ceY] = add(end, scale(smooth, sub(start, all[i + 1] || end))); // end control point\n\treturn `C ${csX},${csY} ${ceX},${ceY} ${end[0]},${end[1]}`;\n};\n"],"names":["toLines","data","total","type","variant","smoothing","group","tag","lineContainer","values","pathDefintion","toPath","number","index","length","line","attr","path","lineShade","tooltip","event","col","point","points","s","x","y","i","smooth","add","ax","ay","bx","by","sub","scale","all","start","end","csX","csY","ceX","ceY"],"mappings":";AASO,SAASA,EAAQC,GAAiB,EAAE,OAAAC,GAAO,MAAAC,GAAM,SAAAC,KAAmB;AAC1E,QAAMC,IAAY,OAAO,WAAWF,KAAQ,GAAG,KAAK,GAC9CG,IAAQC,EAAI,OAAO,EAAE,OAAO,aAAa;AAC/C,SAAAN,EAAK,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAA,MAAY,MAAM;AACxC,UAAMO,IAAgBD,EAAI,OAAO,EAAE,OAAO,iBAAiB,MAAM,QAAQ;AACzE,IAAAC,EAAc,MAAM,YAAY,WAAWC,EAAO,CAAC,EAAE,KAAK;AAE1D,UAAMC,IAAgBC;AAAA,MACrBF,EAAO,IAAI,CAAC,EAAE,QAAAG,KAAUC,GAAO,EAAE,QAAAC,QAAa;AAAA,QAC5C,OAAOA,IAAS,KAAMD;AAAA,QACvB,MAAOD,IAASV,IAAS;AAAA,MAAA,CACzB;AAAA,MACDG,IAAY;AAAA,IAAA,GAGPU,IAAO,SAAS,gBAAgB,8BAA8B,KAAK;AACzE,IAAAC,EAAKD,GAAM,eAAe,MAAM,GAChCC,EAAKD,GAAM,uBAAuB,MAAM,GACxCC,EAAKD,GAAM,WAAW,aAAa;AAEnC,UAAME,IAAO,SAAS,gBAAgB,8BAA8B,MAAM;AAM1E,QALAD,EAAKC,GAAM,SAAS,MAAM,GAC1BD,EAAKC,GAAM,KAAKP,CAAa,GAC7BM,EAAKC,GAAM,QAAQ,MAAM,GACzBD,EAAKC,GAAM,UAAU,cAAc,GAE/Bb,MAAY,QAAQ;AACvB,YAAMc,IAAYD,EAAK,UAAU,EAAI;AACrC,MAAAD,EAAKE,GAAW,KAAK,cAAcR,EAAc,MAAM,CAAC,CAAC,UAAU,GACnEM,EAAKE,GAAW,SAAS,WAAW,GACpCH,EAAK,OAAOG,CAAS;AAAA,IACtB;AAEA,IAAAT,EAAO,QAAQ,CAAC,EAAE,QAAAG,GAAQ,SAAAO,GAAS,OAAAC,
|
|
1
|
+
{"version":3,"file":"chart-lines.js","sources":["../../designsystem/chart/chart-lines.ts"],"sourcesContent":["import { attr, tag } from \"../utils\";\nimport type { ChartData } from \"./chart-element\";\n\ntype Config = {\n\ttotal: number;\n\ttype: string;\n\tvariant: string;\n};\n\nexport function toLines(data: ChartData, { total, type, variant }: Config) {\n\tconst smoothing = Number.parseFloat(type || \"0\") || 0;\n\tconst group = tag(\"div\", { class: \"axisGroup\" });\n\tdata.slice(1).forEach(([, ...values]) => {\n\t\tconst lineContainer = tag(\"div\", { class: `lineContainer`, role: \"list\" });\n\t\tlineContainer.style.setProperty(\"--color\", values[0].color); // Use color of first column as default for line\n\n\t\tconst pathDefintion = toPath(\n\t\t\tvalues.map(({ number }, index, { length }) => [\n\t\t\t\t(100 / (length - 1)) * index,\n\t\t\t\t100 - (number / total) * 100,\n\t\t\t]),\n\t\t\tsmoothing / 100,\n\t\t);\n\n\t\tconst line = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n\t\tattr(line, \"aria-hidden\", \"true\");\n\t\tattr(line, \"preserveAspectRatio\", \"none\");\n\t\tattr(line, \"viewBox\", \"0 0 100 100\");\n\n\t\tconst path = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n\t\tattr(path, \"class\", \"line\");\n\t\tattr(path, \"d\", pathDefintion);\n\t\tattr(path, \"fill\", \"none\");\n\t\tattr(path, \"stroke\", \"currentColor\");\n\n\t\tif (variant === \"area\") {\n\t\t\tconst lineShade = path.cloneNode(true) as SVGPathElement;\n\t\t\tattr(lineShade, \"d\", `M-100,100 L${pathDefintion.slice(1)}L200,100`);\n\t\t\tattr(lineShade, \"class\", \"lineShade\");\n\t\t\tline.append(lineShade);\n\t\t}\n\n\t\tvalues.forEach(({ number, tooltip, event }, index) => {\n\t\t\tconst col = tag(\"div\", { role: \"listitem\" });\n\t\t\tconst point = tag(\"div\", {\n\t\t\t\t\"aria-label\": tooltip,\n\t\t\t\t\"data-event\": event,\n\t\t\t\ttabindex: \"0\",\n\t\t\t\tclass: \"linePoint\",\n\t\t\t\trole: \"img\",\n\t\t\t});\n\n\t\t\tattr(col, \"data-label\", data[0][index + 1]?.value);\n\t\t\tpoint.style.setProperty(\"--value\", `${number}`); // Use color of first column as default for point\n\t\t\tcol.appendChild(point);\n\t\t\tlineContainer.append(col);\n\t\t});\n\n\t\tlineContainer.appendChild(line).append(path);\n\t\tgroup.append(lineContainer);\n\t});\n\treturn group;\n}\n\n// Based on https://observablehq.com/@ndry/smooth-a-svg-path-with-cubic-bezier-curves\nconst toPath = (points: number[][], s: number) =>\n\tpoints.map(([x, y], i, a) => (i ? smooth(i, a, s) : `M${x},${y}`)).join(\" \");\nconst add = ([ax, ay]: number[], [bx, by]: number[]) => [ax + bx, ay + by];\nconst sub = ([ax, ay]: number[], [bx, by]: number[]) => [ax - bx, ay - by];\nconst scale = (s: number, [x, y]: number[]) => [s * x, s * y];\nconst smooth = (i: number, all: number[][], smooth: number) => {\n\tconst start = all[i - 1];\n\tconst end = all[i];\n\tconst [csX, csY] = add(start, scale(smooth, sub(end, all[i - 2] || start))); // start control point\n\tconst [ceX, ceY] = add(end, scale(smooth, sub(start, all[i + 1] || end))); // end control point\n\treturn `C ${csX},${csY} ${ceX},${ceY} ${end[0]},${end[1]}`;\n};\n"],"names":["toLines","data","total","type","variant","smoothing","group","tag","lineContainer","values","pathDefintion","toPath","number","index","length","line","attr","path","lineShade","tooltip","event","col","point","points","s","x","y","i","a","smooth","add","ax","ay","bx","by","sub","scale","all","start","end","csX","csY","ceX","ceY"],"mappings":"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"}
|
package/mtds/chart/chart.css.js
CHANGED
|
@@ -18,6 +18,8 @@ const t = `/* NOTE: Using --mtds- not --mtds- since we're inside shadow dom */
|
|
|
18
18
|
:host([data-variant="doughnut"]) .axis,
|
|
19
19
|
:host([data-variant="pie"]) .axis { display: none }
|
|
20
20
|
:host([data-labels="false"]) .axisGroup::before { position: absolute; pointer-events: none; opacity: 0 } /* Keep available for screen readers */
|
|
21
|
+
:host([data-labels="false"]) .lineContainer > div::before,
|
|
22
|
+
:host([data-labels="false"]) .lineContainer > div::after { display: none }
|
|
21
23
|
|
|
22
24
|
.axis {
|
|
23
25
|
display: grid;
|
|
@@ -122,7 +124,20 @@ const t = `/* NOTE: Using --mtds- not --mtds- since we're inside shadow dom */
|
|
|
122
124
|
.lineContainer { align-items: flex-start; display: flex; justify-content: space-between; pointer-events: none; grid-row: chart }
|
|
123
125
|
.lineContainer > svg, .lineContainer { position: absolute; width: 100%; height: 100% }
|
|
124
126
|
.lineContainer > svg { overflow: clip visible }
|
|
125
|
-
.lineContainer > div
|
|
127
|
+
.lineContainer > div { position: relative; height: 100% }
|
|
128
|
+
.lineContainer > div + div::before {
|
|
129
|
+
border-left: var(--mtdsc-chart-axis-border);
|
|
130
|
+
content: '';
|
|
131
|
+
inset: 0 auto 0 0;
|
|
132
|
+
position: absolute;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
.lineContainer > div::after {
|
|
136
|
+
content: attr(data-label) / '';
|
|
137
|
+
position: absolute;
|
|
138
|
+
top: 100%;
|
|
139
|
+
translate: -50%;
|
|
140
|
+
}
|
|
126
141
|
|
|
127
142
|
:host([data-variant|="line"]) .axisGroups,
|
|
128
143
|
:host([data-variant|="area"]) .axisGroups { padding: 0 }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chart.css.js","sources":["../../designsystem/chart/chart.css?raw"],"sourcesContent":["export default \"/* NOTE: Using --mtds- not --mtds- since we're inside shadow dom */\\n:host(:not([hidden])) { display: grid; gap: var(--mtds-6) }\\n[data-event] { cursor: pointer } /* Used to forward clicks from Chart ShaowDOM to relevant cell in child table */\\n\\n.pie { overflow: visible; aspect-ratio: var(--mtdsc-chart-aspect) }\\n.pie > path {\\n\\tfill: var(--color);\\n\\toutline: none;\\n\\tstroke-width: var(--mtdsc-chart-border-width);\\n\\tstroke: var(--mtdsc-chart-border-color);\\n\\ttransform-origin: center;\\n\\ttransition: scale 0.2s;\\n\\tvector-effect: non-scaling-stroke;\\n}\\n.pie > path:focus-visible,\\n.pie > path:hover { scale: 1.05 }\\n:host([data-steps=\\\"false\\\"]) .axisStep::before,\\n:host([data-variant=\\\"doughnut\\\"]) .axis,\\n:host([data-variant=\\\"pie\\\"]) .axis { display: none }\\n:host([data-labels=\\\"false\\\"]) .axisGroup::before { position: absolute; pointer-events: none; opacity: 0 } /* Keep available for screen readers */\\n\\n.axis {\\n\\tdisplay: grid;\\n\\tfont-size: var(--mtds-body-sm-font-size);\\n\\tgap: var(--mtdsc-chart-axis-gap);\\n\\tgrid-template-columns: fit-content(7em) 1fr;\\n\\tgrid-template-rows: 1fr auto;\\n\\tgrid-template-areas:\\n\\t\\t\\\"y-axis chart\\\"\\n\\t\\t\\\"y-axis x-axis\\\";\\n}\\n\\n.axis::before {\\n\\tborder-bottom-left-radius: var(--mtdsc-chart-axis-edge-radius);\\n\\tborder-color: var(--mtdsc-chart-axis-edge-color);\\n\\tborder-style: solid;\\n\\tborder-width: 0 0 var(--mtdsc-chart-axis-edge-width) var(--mtdsc-chart-axis-edge-width);\\n\\tcontent: \\\"\\\";\\n\\tgrid-area: chart;\\n\\tpointer-events: none;\\n\\tz-index: 2;\\n}\\n\\n.axisSteps,\\n.axisStep,\\n.axisGroups,\\n.axisGroup { box-sizing: border-box; display: grid; position: relative } /* Help .lineContainer positioning */\\n.axisGroups {\\n\\t--gap: max(1px, clamp(.5%, calc(10% / var(--bars) * var(--groups)), var(--mtdsc-chart-axis-gap)));\\n\\tgap: var(--mtdsc-chart-axis-gap) var(--gap);\\n\\tgrid-area: chart / chart / x-axis / chart;\\n\\tgrid-auto-columns: 1fr;\\n\\tgrid-template-rows: subgrid;\\n\\tpadding: 0 var(--mtdsc-chart-axis-gap);\\n\\ttext-align: center;\\n}\\n.axisGroup { grid-row: inherit; grid-template: inherit }\\n.axisGroup::before { order: 1; content: attr(data-label); direction: ltr; min-width: 0 } /* Allow word-wrapping */\\n:host(:not([data-variant|=\\\"bar\\\"])) { .axisGroup::before { justify-self: center; text-align: start; writing-mode: vertical-rl } }\\n\\n.axisSteps { align-items: end; aspect-ratio: var(--mtdsc-chart-aspect); grid-area: chart / y-axis / chart / chart; grid-auto-rows: 1fr; grid-template: 1px / subgrid }\\n.axisStep { align-items: start; grid-column: inherit; grid-template-columns: inherit; height: 1px; text-align: right }\\n.axisStep::after { border-bottom: var(--mtdsc-chart-axis-border); content: \\\"\\\" }\\n.axisStep::before { content: attr(data-label) / \\\"\\\"; translate: 0 -50% } /* Hide form screen readers */\\n.axisStep[data-label=\\\"0\\\"]::after { opacity: 0 } /* Hide 0 line as it overlapps with .axis::before */\\n\\n/* Reduce amount of steps if small space */\\n:host(:not([data-variant|=\\\"bar\\\"])) .axisStepsYHalf .axisStep:nth-last-child(even) { display: none }\\n:host(:not([data-variant|=\\\"bar\\\"])) .axisStepsYHalf .axisSteps:has(.axisStep:nth-last-child(even):first-child) { grid-template-rows: 0.5fr }\\n:host([data-variant|=\\\"bar\\\"]) .axisStepsXHalf .axisStep:nth-last-child(even) { display: none }\\n:host([data-variant|=\\\"bar\\\"]) .axisStepsXHalf .axisSteps:has(.axisStep:nth-last-child(even):first-child) { grid-template-columns: 0.5fr }\\n\\n:host([data-variant|=\\\"bar\\\"]) .axisSteps,\\n:host([data-variant|=\\\"bar\\\"]) .axisGroup { direction: rtl }\\n:host([data-variant|=\\\"bar\\\"]) .axisSteps > *,\\n:host([data-variant|=\\\"bar\\\"]) .axisGroup > * { direction: ltr }\\n:host([data-variant|=\\\"bar\\\"]) .axisGroups {\\n\\taspect-ratio: var(--mtdsc-chart-aspect);\\n\\tgap: 1% var(--mtdsc-chart-axis-gap);\\n\\tgrid-area: chart / y-axis / chart / chart;\\n\\tgrid-template: none / subgrid;\\n\\tpadding: var(--mtdsc-chart-axis-gap) 0;\\n\\trow-gap: var(--mtdsc-chart-axis-gap);\\n\\ttext-align: right;\\n}\\n:host([data-variant|=\\\"bar\\\"]) .axisGroup::before { align-self: center }\\n:host([data-variant|=\\\"bar\\\"]) .axisGroup { grid-column: inherit; grid-row: auto }\\n:host([data-variant|=\\\"bar\\\"]) .axisSteps { align-items: stretch; aspect-ratio: auto; grid-area: chart / chart / x-axis / chart; grid-auto-columns: 1fr; grid-template: subgrid / 1px }\\n:host([data-variant|=\\\"bar\\\"]) .axisStep { align-items: stretch; grid-row: inherit; grid-column: auto; grid-template-rows: inherit; grid-template-columns: none; text-align: center }\\n:host([data-variant|=\\\"bar\\\"]) .axisStep::after { order: -1; border-left: var(--mtdsc-chart-axis-border); border-bottom: 0 }\\n:host([data-variant|=\\\"bar\\\"]) .axisStep::before { translate: -50% 0 }\\n\\n.axisGroupContent { display: flex }\\n:host([data-variant=\\\"column-stacked\\\"]) .axisGroupContent { flex-direction: column-reverse }\\n:host([data-variant=\\\"bar\\\"]) .axisGroupContent { flex-direction: column }\\n:host([data-variant=\\\"bar-stacked\\\"]) .axisGroupContent { flex-direction: row }\\n\\n.bar {\\n\\t--size: calc(var(--value) / var(--total, 1) * 100%);\\n\\talign-self: end;\\n\\tbackground: var(--color);\\n\\tborder: var(--mtdsc-chart-border-color) solid var(--mtdsc-chart-border-width);\\n\\tborder-radius: var(--mtds-border-radius-sm) var(--mtds-border-radius-sm) 0 0;\\n\\tbox-sizing: border-box;\\n\\theight: var(--size);\\n\\twidth: 100%;\\n}\\n.bar:focus-visible,\\n.linePoint:focus-visible { box-shadow: var(--mtdsc-focus-boxShadow); outline: var(--mtdsc-focus-outline); outline-offset: var(--mtds-border-width-focus); z-index: 2 }\\n:host([data-variant|=\\\"bar\\\"]) .bar { border-radius: 0 var(--mtds-border-radius-sm) var(--mtds-border-radius-sm) 0; width: var(--size); height: 100%; align-self: start }\\n\\n/* Prevent double border - using margin to see border around bars */\\n/* Prevent double border - using border to avoid affecting size */\\n:host(:not([data-variant])) .bar + .bar,\\n:host([data-variant=\\\"column\\\"]) .bar + .bar { margin-left: -1px }\\n:host([data-variant=\\\"column-stacked\\\"]) .bar:not(:last-child) { border-radius: 0 }\\n:host([data-variant=\\\"column-stacked\\\"]) .bar + .bar { border-bottom: none }\\n:host([data-variant=\\\"bar\\\"]) .bar + .bar { margin-top: -1px }\\n:host([data-variant=\\\"bar-stacked\\\"]) .bar:not(:last-child) { border-radius: 0 }\\n:host([data-variant=\\\"bar-stacked\\\"]) .bar + .bar { border-left: none }\\n\\n.lineContainer { align-items: flex-start; display: flex; justify-content: space-between; pointer-events: none; grid-row: chart }\\n.lineContainer > svg, .lineContainer { position: absolute; width: 100%; height: 100% }\\n.lineContainer > svg { overflow: clip visible }\\n.lineContainer > div[role=\\\"listitem\\\"] { display: contents }\\n\\n:host([data-variant|=\\\"line\\\"]) .axisGroups,\\n:host([data-variant|=\\\"area\\\"]) .axisGroups { padding: 0 }\\n.lineShade, .line { fill: none; stroke: var(--color); stroke-linejoin: round; stroke-linecap: round; stroke-width: 1.5; vector-effect: non-scaling-stroke }\\n.lineShade { stroke: none; fill: var(--color); opacity: 0.3; mask: linear-gradient(to bottom, black, transparent) }\\n\\n.linePoint, .line, :host:has(.linePoint) .legend::before { filter: var(--_mtdsc-chart-line-filter) } /* Ensure more contrast for line colors */\\n.linePoint {\\n\\t--size: var(--mtds-2);\\n\\tbackground: var(--color);\\n\\tborder-radius: var(--mtds-border-radius-full);\\n\\tborder: var(--mtdsc-chart-border-width) solid var(--mtdsc-chart-border-color);\\n\\tbox-sizing: border-box;\\n\\theight: var(--size);\\n\\tmargin: calc(var(--size) / -2);\\n\\tpadding: 0;\\n\\tpointer-events: all;\\n\\tposition: relative;\\n\\ttop: calc(100% - var(--value) / var(--total, 1) * 100%);\\n\\ttransition: scale 0.2s;\\n\\twidth: var(--size);\\n\\tz-index: 2;\\n}\\n.linePoint:focus-visible,\\n.linePoint:hover { scale: 1.3 }\\n.linePoint::before { content: \\\"\\\"; position: absolute; inset: calc(var(--mtds-3) * -1); /* Increase click surface */ }\\n:host([data-dots=\\\"false\\\"]) .linePoint { background: none; border: none }\\n\\n:host([data-legend=\\\"false\\\"]) .legends { display: none }\\n.legends { align-items: center; display: flex; flex-wrap: wrap; gap: var(--mtds-2) var(--mtds-5); justify-content: center }\\n.legend { display: flex; align-items: center; gap: var(--mtds-2) }\\n.legend::before {\\n\\tbackground: var(--color);\\n\\tborder-radius: var(--mtds-border-radius-full);\\n\\tborder: var(--mtdsc-chart-border-color) solid var(--mtdsc-chart-border-width);\\n\\tbox-sizing: border-box;\\n\\tcontent: \\\"\\\";\\n\\tdisplay: inline-block;\\n\\theight: var(--mtds-5);\\n\\tvertical-align: middle;\\n\\twidth: var(--mtds-5);\\n}\\n\""],"names":["css"],"mappings":"AAAA,MAAAA,IAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}
|
|
1
|
+
{"version":3,"file":"chart.css.js","sources":["../../designsystem/chart/chart.css?raw"],"sourcesContent":["export default \"/* NOTE: Using --mtds- not --mtds- since we're inside shadow dom */\\n:host(:not([hidden])) { display: grid; gap: var(--mtds-6) }\\n[data-event] { cursor: pointer } /* Used to forward clicks from Chart ShaowDOM to relevant cell in child table */\\n\\n.pie { overflow: visible; aspect-ratio: var(--mtdsc-chart-aspect) }\\n.pie > path {\\n\\tfill: var(--color);\\n\\toutline: none;\\n\\tstroke-width: var(--mtdsc-chart-border-width);\\n\\tstroke: var(--mtdsc-chart-border-color);\\n\\ttransform-origin: center;\\n\\ttransition: scale 0.2s;\\n\\tvector-effect: non-scaling-stroke;\\n}\\n.pie > path:focus-visible,\\n.pie > path:hover { scale: 1.05 }\\n:host([data-steps=\\\"false\\\"]) .axisStep::before,\\n:host([data-variant=\\\"doughnut\\\"]) .axis,\\n:host([data-variant=\\\"pie\\\"]) .axis { display: none }\\n:host([data-labels=\\\"false\\\"]) .axisGroup::before { position: absolute; pointer-events: none; opacity: 0 } /* Keep available for screen readers */\\n:host([data-labels=\\\"false\\\"]) .lineContainer > div::before,\\n:host([data-labels=\\\"false\\\"]) .lineContainer > div::after { display: none }\\n\\n.axis {\\n\\tdisplay: grid;\\n\\tfont-size: var(--mtds-body-sm-font-size);\\n\\tgap: var(--mtdsc-chart-axis-gap);\\n\\tgrid-template-columns: fit-content(7em) 1fr;\\n\\tgrid-template-rows: 1fr auto;\\n\\tgrid-template-areas:\\n\\t\\t\\\"y-axis chart\\\"\\n\\t\\t\\\"y-axis x-axis\\\";\\n}\\n\\n.axis::before {\\n\\tborder-bottom-left-radius: var(--mtdsc-chart-axis-edge-radius);\\n\\tborder-color: var(--mtdsc-chart-axis-edge-color);\\n\\tborder-style: solid;\\n\\tborder-width: 0 0 var(--mtdsc-chart-axis-edge-width) var(--mtdsc-chart-axis-edge-width);\\n\\tcontent: \\\"\\\";\\n\\tgrid-area: chart;\\n\\tpointer-events: none;\\n\\tz-index: 2;\\n}\\n\\n.axisSteps,\\n.axisStep,\\n.axisGroups,\\n.axisGroup { box-sizing: border-box; display: grid; position: relative } /* Help .lineContainer positioning */\\n.axisGroups {\\n\\t--gap: max(1px, clamp(.5%, calc(10% / var(--bars) * var(--groups)), var(--mtdsc-chart-axis-gap)));\\n\\tgap: var(--mtdsc-chart-axis-gap) var(--gap);\\n\\tgrid-area: chart / chart / x-axis / chart;\\n\\tgrid-auto-columns: 1fr;\\n\\tgrid-template-rows: subgrid;\\n\\tpadding: 0 var(--mtdsc-chart-axis-gap);\\n\\ttext-align: center;\\n}\\n.axisGroup { grid-row: inherit; grid-template: inherit }\\n.axisGroup::before { order: 1; content: attr(data-label); direction: ltr; min-width: 0 } /* Allow word-wrapping */\\n:host(:not([data-variant|=\\\"bar\\\"])) { .axisGroup::before { justify-self: center; text-align: start; writing-mode: vertical-rl } }\\n\\n.axisSteps { align-items: end; aspect-ratio: var(--mtdsc-chart-aspect); grid-area: chart / y-axis / chart / chart; grid-auto-rows: 1fr; grid-template: 1px / subgrid }\\n.axisStep { align-items: start; grid-column: inherit; grid-template-columns: inherit; height: 1px; text-align: right }\\n.axisStep::after { border-bottom: var(--mtdsc-chart-axis-border); content: \\\"\\\" }\\n.axisStep::before { content: attr(data-label) / \\\"\\\"; translate: 0 -50% } /* Hide form screen readers */\\n.axisStep[data-label=\\\"0\\\"]::after { opacity: 0 } /* Hide 0 line as it overlapps with .axis::before */\\n\\n/* Reduce amount of steps if small space */\\n:host(:not([data-variant|=\\\"bar\\\"])) .axisStepsYHalf .axisStep:nth-last-child(even) { display: none }\\n:host(:not([data-variant|=\\\"bar\\\"])) .axisStepsYHalf .axisSteps:has(.axisStep:nth-last-child(even):first-child) { grid-template-rows: 0.5fr }\\n:host([data-variant|=\\\"bar\\\"]) .axisStepsXHalf .axisStep:nth-last-child(even) { display: none }\\n:host([data-variant|=\\\"bar\\\"]) .axisStepsXHalf .axisSteps:has(.axisStep:nth-last-child(even):first-child) { grid-template-columns: 0.5fr }\\n\\n:host([data-variant|=\\\"bar\\\"]) .axisSteps,\\n:host([data-variant|=\\\"bar\\\"]) .axisGroup { direction: rtl }\\n:host([data-variant|=\\\"bar\\\"]) .axisSteps > *,\\n:host([data-variant|=\\\"bar\\\"]) .axisGroup > * { direction: ltr }\\n:host([data-variant|=\\\"bar\\\"]) .axisGroups {\\n\\taspect-ratio: var(--mtdsc-chart-aspect);\\n\\tgap: 1% var(--mtdsc-chart-axis-gap);\\n\\tgrid-area: chart / y-axis / chart / chart;\\n\\tgrid-template: none / subgrid;\\n\\tpadding: var(--mtdsc-chart-axis-gap) 0;\\n\\trow-gap: var(--mtdsc-chart-axis-gap);\\n\\ttext-align: right;\\n}\\n:host([data-variant|=\\\"bar\\\"]) .axisGroup::before { align-self: center }\\n:host([data-variant|=\\\"bar\\\"]) .axisGroup { grid-column: inherit; grid-row: auto }\\n:host([data-variant|=\\\"bar\\\"]) .axisSteps { align-items: stretch; aspect-ratio: auto; grid-area: chart / chart / x-axis / chart; grid-auto-columns: 1fr; grid-template: subgrid / 1px }\\n:host([data-variant|=\\\"bar\\\"]) .axisStep { align-items: stretch; grid-row: inherit; grid-column: auto; grid-template-rows: inherit; grid-template-columns: none; text-align: center }\\n:host([data-variant|=\\\"bar\\\"]) .axisStep::after { order: -1; border-left: var(--mtdsc-chart-axis-border); border-bottom: 0 }\\n:host([data-variant|=\\\"bar\\\"]) .axisStep::before { translate: -50% 0 }\\n\\n.axisGroupContent { display: flex }\\n:host([data-variant=\\\"column-stacked\\\"]) .axisGroupContent { flex-direction: column-reverse }\\n:host([data-variant=\\\"bar\\\"]) .axisGroupContent { flex-direction: column }\\n:host([data-variant=\\\"bar-stacked\\\"]) .axisGroupContent { flex-direction: row }\\n\\n.bar {\\n\\t--size: calc(var(--value) / var(--total, 1) * 100%);\\n\\talign-self: end;\\n\\tbackground: var(--color);\\n\\tborder: var(--mtdsc-chart-border-color) solid var(--mtdsc-chart-border-width);\\n\\tborder-radius: var(--mtds-border-radius-sm) var(--mtds-border-radius-sm) 0 0;\\n\\tbox-sizing: border-box;\\n\\theight: var(--size);\\n\\twidth: 100%;\\n}\\n.bar:focus-visible,\\n.linePoint:focus-visible { box-shadow: var(--mtdsc-focus-boxShadow); outline: var(--mtdsc-focus-outline); outline-offset: var(--mtds-border-width-focus); z-index: 2 }\\n:host([data-variant|=\\\"bar\\\"]) .bar { border-radius: 0 var(--mtds-border-radius-sm) var(--mtds-border-radius-sm) 0; width: var(--size); height: 100%; align-self: start }\\n\\n/* Prevent double border - using margin to see border around bars */\\n/* Prevent double border - using border to avoid affecting size */\\n:host(:not([data-variant])) .bar + .bar,\\n:host([data-variant=\\\"column\\\"]) .bar + .bar { margin-left: -1px }\\n:host([data-variant=\\\"column-stacked\\\"]) .bar:not(:last-child) { border-radius: 0 }\\n:host([data-variant=\\\"column-stacked\\\"]) .bar + .bar { border-bottom: none }\\n:host([data-variant=\\\"bar\\\"]) .bar + .bar { margin-top: -1px }\\n:host([data-variant=\\\"bar-stacked\\\"]) .bar:not(:last-child) { border-radius: 0 }\\n:host([data-variant=\\\"bar-stacked\\\"]) .bar + .bar { border-left: none }\\n\\n.lineContainer { align-items: flex-start; display: flex; justify-content: space-between; pointer-events: none; grid-row: chart }\\n.lineContainer > svg, .lineContainer { position: absolute; width: 100%; height: 100% }\\n.lineContainer > svg { overflow: clip visible }\\n.lineContainer > div { position: relative; height: 100% }\\n.lineContainer > div + div::before {\\n\\tborder-left: var(--mtdsc-chart-axis-border);\\n\\tcontent: '';\\n\\tinset: 0 auto 0 0;\\n\\tposition: absolute;\\n}\\n\\n.lineContainer > div::after {\\n\\tcontent: attr(data-label) / '';\\n\\tposition: absolute;\\n\\ttop: 100%;\\n\\ttranslate: -50%;\\n}\\n\\n:host([data-variant|=\\\"line\\\"]) .axisGroups,\\n:host([data-variant|=\\\"area\\\"]) .axisGroups { padding: 0 }\\n.lineShade, .line { fill: none; stroke: var(--color); stroke-linejoin: round; stroke-linecap: round; stroke-width: 1.5; vector-effect: non-scaling-stroke }\\n.lineShade { stroke: none; fill: var(--color); opacity: 0.3; mask: linear-gradient(to bottom, black, transparent) }\\n\\n.linePoint, .line, :host:has(.linePoint) .legend::before { filter: var(--_mtdsc-chart-line-filter) } /* Ensure more contrast for line colors */\\n.linePoint {\\n\\t--size: var(--mtds-2);\\n\\tbackground: var(--color);\\n\\tborder-radius: var(--mtds-border-radius-full);\\n\\tborder: var(--mtdsc-chart-border-width) solid var(--mtdsc-chart-border-color);\\n\\tbox-sizing: border-box;\\n\\theight: var(--size);\\n\\tmargin: calc(var(--size) / -2);\\n\\tpadding: 0;\\n\\tpointer-events: all;\\n\\tposition: relative;\\n\\ttop: calc(100% - var(--value) / var(--total, 1) * 100%);\\n\\ttransition: scale 0.2s;\\n\\twidth: var(--size);\\n\\tz-index: 2;\\n}\\n.linePoint:focus-visible,\\n.linePoint:hover { scale: 1.3 }\\n.linePoint::before { content: \\\"\\\"; position: absolute; inset: calc(var(--mtds-3) * -1); /* Increase click surface */ }\\n:host([data-dots=\\\"false\\\"]) .linePoint { background: none; border: none }\\n\\n:host([data-legend=\\\"false\\\"]) .legends { display: none }\\n.legends { align-items: center; display: flex; flex-wrap: wrap; gap: var(--mtds-2) var(--mtds-5); justify-content: center }\\n.legend { display: flex; align-items: center; gap: var(--mtds-2) }\\n.legend::before {\\n\\tbackground: var(--color);\\n\\tborder-radius: var(--mtds-border-radius-full);\\n\\tborder: var(--mtdsc-chart-border-color) solid var(--mtdsc-chart-border-width);\\n\\tbox-sizing: border-box;\\n\\tcontent: \\\"\\\";\\n\\tdisplay: inline-block;\\n\\theight: var(--mtds-5);\\n\\tvertical-align: middle;\\n\\twidth: var(--mtds-5);\\n}\\n\""],"names":["css"],"mappings":"AAAA,MAAAA,IAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}
|
package/mtds/deprecations.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import
|
|
1
|
+
import "./index.js";
|
|
2
2
|
import l from "./styles.module.css.js";
|
|
3
3
|
import { getByCSSModule as n, isBrowser as d, onHotReload as y, on as u, QUICK_EVENT as S, onMutation as E, attr as s, debounce as D } from "./utils.js";
|
|
4
|
+
import { DSFieldElement as g } from "@digdir/designsystemet-web";
|
|
4
5
|
const f = /* @__PURE__ */ new WeakSet(), a = (t) => !f.has(t) && f.add(t), o = (t, e, r) => window.dsWarnings === !1 || console.warn(
|
|
5
6
|
`\x1B[1m@mattilsynet/design:\x1B[m ${t} is deprecated, please use ${e}:`,
|
|
6
7
|
r
|
|
7
|
-
), A = n("togglegroup"),
|
|
8
|
+
), A = n("togglegroup"), p = l.button.split(" "), L = () => {
|
|
8
9
|
for (const t of A) {
|
|
9
10
|
a(t) && !t.hasAttribute("data-toggle-group") && (s(t, "data-toggle-group", "Valgknapper"), o(
|
|
10
11
|
'Only setting class="styles.togglegroup"',
|
|
@@ -12,7 +13,7 @@ const f = /* @__PURE__ */ new WeakSet(), a = (t) => !f.has(t) && f.add(t), o = (
|
|
|
12
13
|
t
|
|
13
14
|
));
|
|
14
15
|
for (const e of t.getElementsByTagName("label"))
|
|
15
|
-
a(e) && !e.classList.contains(
|
|
16
|
+
a(e) && !e.classList.contains(p[0]) && (e.classList.add(...p), o(
|
|
16
17
|
'Only setting class="styles.button"',
|
|
17
18
|
'<label class="styles.button">',
|
|
18
19
|
e
|
|
@@ -99,10 +100,10 @@ const f = /* @__PURE__ */ new WeakSet(), a = (t) => !f.has(t) && f.add(t), o = (
|
|
|
99
100
|
'Only setting class="styles.field"',
|
|
100
101
|
'<ds-field class="styles.field">',
|
|
101
102
|
t
|
|
102
|
-
), !c.has(t) && c.add(t) &&
|
|
103
|
+
), !c.has(t) && c.add(t) && g.prototype.connectedCallback.call(t));
|
|
103
104
|
}, G = () => {
|
|
104
105
|
for (const t of c)
|
|
105
|
-
|
|
106
|
+
g.prototype.disconnectedCallback.call(t), c.delete(t);
|
|
106
107
|
}, x = `[data-description], .${l.field.split(" ")[0]} label + p`, q = () => {
|
|
107
108
|
for (const t of document.querySelectorAll(x))
|
|
108
109
|
a(t) && t.getAttribute("data-field") !== "description" && (s(t, "data-field", "description"), o(
|
package/mtds/deprecations.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deprecations.js","sources":["../designsystem/deprecations.ts"],"sourcesContent":["import { DSFieldElement } from \"@digdir/designsystemet-web\";\nimport styles from \"./styles.module.css\";\nimport {\n\tattr,\n\tdebounce,\n\tgetByCSSModule,\n\tisBrowser,\n\ton,\n\tonHotReload,\n\tonMutation,\n\tQUICK_EVENT,\n} from \"./utils\";\n\nconst DEPRECATIONS = new WeakSet<Element>();\nconst deprecate = (el: Element) =>\n\t!DEPRECATIONS.has(el) && DEPRECATIONS.add(el);\n\nconst warn = (from: string, to: string, el: Element) =>\n\twindow.dsWarnings === false ||\n\tconsole.warn(\n\t\t`\\x1B[1m@mattilsynet/design:\\x1B[m ${from} is deprecated, please use ${to}:`,\n\t\tel,\n\t);\n\n// Deprecate togglegroup without data-toggle-group attribute\nconst TOGGLEGROUPS = getByCSSModule(\"togglegroup\");\nconst CSS_BUTTON = styles.button.split(\" \");\nconst deprecateToggleGroup = () => {\n\tfor (const el of TOGGLEGROUPS) {\n\t\tif (deprecate(el) && !el.hasAttribute(\"data-toggle-group\")) {\n\t\t\tattr(el, \"data-toggle-group\", \"Valgknapper\");\n\t\t\twarn(\n\t\t\t\t'Only setting class=\"styles.togglegroup\"',\n\t\t\t\t'data-toggle-group=\"LABEL-HERE\" attribute also for better accessibility',\n\t\t\t\tel,\n\t\t\t);\n\t\t}\n\t\tfor (const label of el.getElementsByTagName(\"label\")) {\n\t\t\tif (deprecate(label) && !label.classList.contains(CSS_BUTTON[0])) {\n\t\t\t\tlabel.classList.add(...CSS_BUTTON);\n\t\t\t\twarn(\n\t\t\t\t\t'Only setting class=\"styles.button\"',\n\t\t\t\t\t`<label class=\"styles.button\">`,\n\t\t\t\t\tlabel,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Deprecate errorsummary without ds-error-summary element\nconst BREADCRUMBS = getByCSSModule(\"breadcrumbs\");\nconst deprecateBreadcrumbs = () => {\n\tfor (const el of BREADCRUMBS)\n\t\tif (deprecate(el) && el.nodeName !== \"DS-BREADCRUMBS\") {\n\t\t\tel.classList.add(...styles.breadcrumbs.split(\" \"));\n\t\t\twarn(\n\t\t\t\t'Only setting class=\"styles.breadcrumbs\"',\n\t\t\t\t'<ds-breadcrumbs class=\"styles.breadcrumbs\">',\n\t\t\t\tel,\n\t\t\t);\n\t\t}\n};\n\n// Deprecate errorsummary without ds-error-summary element\nconst ERRORSUMMARYS = getByCSSModule(\"errorsummary\");\nconst deprecateErrorSummary = () => {\n\tfor (const el of ERRORSUMMARYS)\n\t\tif (deprecate(el) && el.nodeName !== \"DS-ERROR-SUMMARY\") {\n\t\t\twarn(\n\t\t\t\t'Only setting class=\"styles.errorsummary\"',\n\t\t\t\t'<ds-error-summary class=\"styles.errorsummary\">',\n\t\t\t\tel,\n\t\t\t);\n\t\t}\n};\n\n// Deprecate data-variant and data-modal and data-closedby on dialogs\nconst DIALOGS = getByCSSModule(\"dialog\") as HTMLCollectionOf<HTMLDialogElement>;\nconst deprecateDialog = () => {\n\tfor (const el of DIALOGS) {\n\t\tif (deprecate(el)) {\n\t\t\tconst closedby = attr(el, \"data-closedby\");\n\t\t\tif (closedby) {\n\t\t\t\tattr(el, \"closedby\", closedby);\n\t\t\t\twarn(\n\t\t\t\t\t`<dialog data-closedby=\"${closedby}\">`,\n\t\t\t\t\t`<dialog closedby=\"${closedby}\">`,\n\t\t\t\t\tel,\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (el.hasAttribute(\"data-variant\")) {\n\t\t\t\twarn(\n\t\t\t\t\t'<dialog data-variant=\"drawer\">',\n\t\t\t\t\t'<dialog data-placement=\"center|left|right|top|bottom\">',\n\t\t\t\t\tel,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\tif (el.isConnected && el.showModal && el.close) {\n\t\t\tif (\n\t\t\t\tel.matches('[open][data-modal]:not([data-modal=\"false\"]):not(:modal)')\n\t\t\t) {\n\t\t\t\twarn(\n\t\t\t\t\t'<dialog data-modal=\"true\">',\n\t\t\t\t\t'.showModal() or <button command=\"show-modal\" commandfor=\"DIALOG-ID\"></button>',\n\t\t\t\t\tel,\n\t\t\t\t);\n\t\t\t\tattr(el, \"open\", null); // Using attribute instead of .close to avoid `close` event\n\t\t\t\tel.showModal();\n\t\t\t} else if (el.matches(\":modal:not([open])\")) {\n\t\t\t\tattr(el, \"open\", \"\"); // Set as open\n\t\t\t\tel.close(); // So we correctly can call .close, removing <dialog> from #top-layer\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Deprecate data-count in favor of data-limit\nconst deprecateCounter = () => {\n\tfor (const el of document.querySelectorAll(\"[data-count]\"))\n\t\tif (deprecate(el)) {\n\t\t\tconst count = attr(el, \"data-count\");\n\t\t\tel.classList.add(...styles.validation.split(\" \"));\n\t\t\tattr(el, \"data-limit\", count);\n\t\t\twarn(\n\t\t\t\t`data-count=\"${count}\"`,\n\t\t\t\t`class=\"styles.validation\" data-field=\"counter\" data-limit=\"${count}\"`,\n\t\t\t\tel,\n\t\t\t);\n\t\t}\n};\n\n// Deprecate data-command on buttons and other elements\nconst deprecateDataCommand = () => {\n\tfor (const el of document.querySelectorAll(\"[data-command]\"))\n\t\tif (deprecate(el)) {\n\t\t\tconst command = attr(el, \"data-command\");\n\n\t\t\tif (command === \"row\")\n\t\t\t\twarn(\n\t\t\t\t\t`<${el.nodeName.toLowerCase()} data-command=\"${command}\">`,\n\t\t\t\t\t`<tr data-clickdelegatefor=\"${el.nodeName}-ID\">`,\n\t\t\t\t\tel,\n\t\t\t\t);\n\t\t\telse\n\t\t\t\twarn(\n\t\t\t\t\t`<button data-command=\"${command}\">`,\n\t\t\t\t\t`<button command=\"${command?.replace(\"toggle-app-expanded\", \"show-modal\")}\" commandfor=\"TARGET-ID\">`,\n\t\t\t\t\tel,\n\t\t\t\t);\n\t\t}\n};\n\n// Deprecate u-tabs\nconst TABS = isBrowser() ? document.getElementsByTagName(\"u-tabs\") : [];\nconst deprecateUTabs = () => {\n\tfor (const el of TABS) if (deprecate(el)) warn(\"u-tabs\", \"ds-tabs\", el);\n};\n\n// Deprecate u-combobox and add class to ds-suggestion\nconst CSS_SUGGESTION = styles.suggestion.split(\" \");\nconst OLD = isBrowser() ? document.getElementsByTagName(\"u-combobox\") : [];\nconst NEW = isBrowser() ? document.getElementsByTagName(\"ds-suggestion\") : [];\nconst deprecateUCombobox = () => {\n\tfor (const el of OLD)\n\t\tif (deprecate(el)) {\n\t\t\tel.classList.add(...CSS_SUGGESTION);\n\t\t\twarn(\"<u-combobox>\", `<ds-suggestion class=\"styles.suggestion\">`, el);\n\t\t}\n\tfor (const el of NEW)\n\t\tif (deprecate(el) && !el.classList.contains(CSS_SUGGESTION[0])) {\n\t\t\tel.classList.add(...CSS_SUGGESTION);\n\t\t\twarn(\n\t\t\t\t\"Only using <ds-suggestion>\",\n\t\t\t\t`<ds-suggestion class=\"styles.suggestion\">`,\n\t\t\t\tel,\n\t\t\t);\n\t\t}\n};\n\nconst handleCommandClick = ({ target: el }: Event) => {\n\tif (el instanceof Element === false) return;\n\tconst row = el?.closest(\"tr\")?.querySelector('[data-command=\"row\"]');\n\tconst click =\n\t\trow && !el?.closest('a,button,label,input,select,textarea,[role=\"button\"]');\n\tif (click) (row as HTMLElement).click(); // Forward click to data-command=\"row\" element\n\n\tconst dialog = el?.closest(\"dialog\");\n\tconst close = dialog && el?.closest('[data-command=\"close\"]');\n\tif (close) dialog.close();\n};\n\n// Deprecate fields without ds-field element\nconst FIELDS = getByCSSModule(\"field\");\nconst FIELD_UNBIND = new Set<Element>();\nconst deprecateField = () => {\n\tfor (const el of FIELDS)\n\t\tif (el.nodeName !== \"DS-FIELD\") {\n\t\t\tif (!deprecate(el))\n\t\t\t\twarn(\n\t\t\t\t\t'Only setting class=\"styles.field\"',\n\t\t\t\t\t'<ds-field class=\"styles.field\">',\n\t\t\t\t\tel,\n\t\t\t\t);\n\t\t\tif (!FIELD_UNBIND.has(el) && FIELD_UNBIND.add(el)) {\n\t\t\t\tDSFieldElement.prototype.connectedCallback.call(el as DSFieldElement);\n\t\t\t}\n\t\t}\n};\nconst unbindFields = () => {\n\tfor (const el of FIELD_UNBIND) {\n\t\tDSFieldElement.prototype.disconnectedCallback.call(el as DSFieldElement);\n\t\tFIELD_UNBIND.delete(el);\n\t}\n};\n\n// Deprecate validation without data-field=\"validation\"\nconst CSS_DESCRIPTIONS = `[data-description], .${styles.field.split(\" \")[0]} label + p`;\nconst deprecateFeildDescription = () => {\n\tfor (const el of document.querySelectorAll(CSS_DESCRIPTIONS))\n\t\tif (deprecate(el) && el.getAttribute(\"data-field\") !== \"description\") {\n\t\t\tattr(el, \"data-field\", \"description\");\n\t\t\twarn(\n\t\t\t\t\"Descriptions created by data-description of <p> only\",\n\t\t\t\t'data-field=\"data-description\"',\n\t\t\t\tel,\n\t\t\t);\n\t\t}\n};\n\n// Deprecate validation without data-field=\"validation\"\nconst VALIDATIONS = getByCSSModule(\"validation\");\nconst deprecateFieldValidation = () => {\n\tfor (const el of VALIDATIONS)\n\t\tif (deprecate(el) && !el.hasAttribute(\"data-field\")) {\n\t\t\tattr(el, \"data-field\", \"validation\");\n\t\t\twarn(\n\t\t\t\t'Only setting class=\"styles.validation\"',\n\t\t\t\t'class=\"styles.validation\" data-field=\"validation\"',\n\t\t\t\tel,\n\t\t\t);\n\t\t}\n};\n\nconst deprecatePopoverPosition = () => {\n\tfor (const el of document.querySelectorAll(\"[popover][data-position]\"))\n\t\tif (deprecate(el)) {\n\t\t\tattr(el, \"data-placement\", attr(el, \"data-position\"));\n\t\t\twarn(\"data-position\", \"data-placement\", el);\n\t\t}\n};\n\nconst handleDeprecations = debounce(() => {\n\tif (!isBrowser()) return; // Check if document is still available, since this can run in test environments after document is destroyed\n\tdeprecateCounter();\n\tdeprecateDataCommand();\n\tdeprecateBreadcrumbs();\n\tdeprecateDialog();\n\tdeprecateErrorSummary();\n\tdeprecateFeildDescription();\n\tdeprecateFieldValidation();\n\tdeprecatePopoverPosition();\n\tdeprecateField(); // Should run after other field deprecations to access correct data-attributes\n\tdeprecateToggleGroup();\n\tdeprecateUCombobox();\n\tdeprecateUTabs();\n}, 200);\n\nonHotReload(\"deprecations\", () => [\n\tunbindFields, // Return as cleanup function\n\ton(document, \"click\", handleCommandClick, QUICK_EVENT),\n\ton(document, \"toggle\", deprecateDialog, true),\n\tonMutation(document, handleDeprecations, {\n\t\tattributeFilter: [\n\t\t\t\"class\",\n\t\t\t\"data-command\",\n\t\t\t\"data-count\",\n\t\t\t\"data-description\",\n\t\t\t\"data-variant\",\n\t\t\t\"open\",\n\t\t],\n\t\tattributes: true,\n\t\tchildList: true,\n\t\tsubtree: true,\n\t}),\n]);\n"],"names":["DEPRECATIONS","deprecate","el","warn","from","to","TOGGLEGROUPS","getByCSSModule","CSS_BUTTON","styles","deprecateToggleGroup","attr","label","BREADCRUMBS","deprecateBreadcrumbs","ERRORSUMMARYS","deprecateErrorSummary","DIALOGS","deprecateDialog","closedby","deprecateCounter","count","deprecateDataCommand","command","TABS","isBrowser","deprecateUTabs","CSS_SUGGESTION","OLD","NEW","deprecateUCombobox","handleCommandClick","row","dialog","FIELDS","FIELD_UNBIND","deprecateField","DSFieldElement","unbindFields","CSS_DESCRIPTIONS","deprecateFeildDescription","VALIDATIONS","deprecateFieldValidation","deprecatePopoverPosition","handleDeprecations","debounce","onHotReload","on","QUICK_EVENT","onMutation"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"deprecations.js","sources":["../designsystem/deprecations.ts"],"sourcesContent":["import { DSFieldElement } from \".\";\nimport styles from \"./styles.module.css\";\nimport {\n\tattr,\n\tdebounce,\n\tgetByCSSModule,\n\tisBrowser,\n\ton,\n\tonHotReload,\n\tonMutation,\n\tQUICK_EVENT,\n} from \"./utils\";\n\nconst DEPRECATIONS = new WeakSet<Element>();\nconst deprecate = (el: Element) =>\n\t!DEPRECATIONS.has(el) && DEPRECATIONS.add(el);\n\nconst warn = (from: string, to: string, el: Element) =>\n\twindow.dsWarnings === false ||\n\tconsole.warn(\n\t\t`\\x1B[1m@mattilsynet/design:\\x1B[m ${from} is deprecated, please use ${to}:`,\n\t\tel,\n\t);\n\n// Deprecate togglegroup without data-toggle-group attribute\nconst TOGGLEGROUPS = getByCSSModule(\"togglegroup\");\nconst CSS_BUTTON = styles.button.split(\" \");\nconst deprecateToggleGroup = () => {\n\tfor (const el of TOGGLEGROUPS) {\n\t\tif (deprecate(el) && !el.hasAttribute(\"data-toggle-group\")) {\n\t\t\tattr(el, \"data-toggle-group\", \"Valgknapper\");\n\t\t\twarn(\n\t\t\t\t'Only setting class=\"styles.togglegroup\"',\n\t\t\t\t'data-toggle-group=\"LABEL-HERE\" attribute also for better accessibility',\n\t\t\t\tel,\n\t\t\t);\n\t\t}\n\t\tfor (const label of el.getElementsByTagName(\"label\")) {\n\t\t\tif (deprecate(label) && !label.classList.contains(CSS_BUTTON[0])) {\n\t\t\t\tlabel.classList.add(...CSS_BUTTON);\n\t\t\t\twarn(\n\t\t\t\t\t'Only setting class=\"styles.button\"',\n\t\t\t\t\t`<label class=\"styles.button\">`,\n\t\t\t\t\tlabel,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Deprecate errorsummary without ds-error-summary element\nconst BREADCRUMBS = getByCSSModule(\"breadcrumbs\");\nconst deprecateBreadcrumbs = () => {\n\tfor (const el of BREADCRUMBS)\n\t\tif (deprecate(el) && el.nodeName !== \"DS-BREADCRUMBS\") {\n\t\t\tel.classList.add(...styles.breadcrumbs.split(\" \"));\n\t\t\twarn(\n\t\t\t\t'Only setting class=\"styles.breadcrumbs\"',\n\t\t\t\t'<ds-breadcrumbs class=\"styles.breadcrumbs\">',\n\t\t\t\tel,\n\t\t\t);\n\t\t}\n};\n\n// Deprecate errorsummary without ds-error-summary element\nconst ERRORSUMMARYS = getByCSSModule(\"errorsummary\");\nconst deprecateErrorSummary = () => {\n\tfor (const el of ERRORSUMMARYS)\n\t\tif (deprecate(el) && el.nodeName !== \"DS-ERROR-SUMMARY\") {\n\t\t\twarn(\n\t\t\t\t'Only setting class=\"styles.errorsummary\"',\n\t\t\t\t'<ds-error-summary class=\"styles.errorsummary\">',\n\t\t\t\tel,\n\t\t\t);\n\t\t}\n};\n\n// Deprecate data-variant and data-modal and data-closedby on dialogs\nconst DIALOGS = getByCSSModule(\"dialog\") as HTMLCollectionOf<HTMLDialogElement>;\nconst deprecateDialog = () => {\n\tfor (const el of DIALOGS) {\n\t\tif (deprecate(el)) {\n\t\t\tconst closedby = attr(el, \"data-closedby\");\n\t\t\tif (closedby) {\n\t\t\t\tattr(el, \"closedby\", closedby);\n\t\t\t\twarn(\n\t\t\t\t\t`<dialog data-closedby=\"${closedby}\">`,\n\t\t\t\t\t`<dialog closedby=\"${closedby}\">`,\n\t\t\t\t\tel,\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (el.hasAttribute(\"data-variant\")) {\n\t\t\t\twarn(\n\t\t\t\t\t'<dialog data-variant=\"drawer\">',\n\t\t\t\t\t'<dialog data-placement=\"center|left|right|top|bottom\">',\n\t\t\t\t\tel,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\tif (el.isConnected && el.showModal && el.close) {\n\t\t\tif (\n\t\t\t\tel.matches('[open][data-modal]:not([data-modal=\"false\"]):not(:modal)')\n\t\t\t) {\n\t\t\t\twarn(\n\t\t\t\t\t'<dialog data-modal=\"true\">',\n\t\t\t\t\t'.showModal() or <button command=\"show-modal\" commandfor=\"DIALOG-ID\"></button>',\n\t\t\t\t\tel,\n\t\t\t\t);\n\t\t\t\tattr(el, \"open\", null); // Using attribute instead of .close to avoid `close` event\n\t\t\t\tel.showModal();\n\t\t\t} else if (el.matches(\":modal:not([open])\")) {\n\t\t\t\tattr(el, \"open\", \"\"); // Set as open\n\t\t\t\tel.close(); // So we correctly can call .close, removing <dialog> from #top-layer\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Deprecate data-count in favor of data-limit\nconst deprecateCounter = () => {\n\tfor (const el of document.querySelectorAll(\"[data-count]\"))\n\t\tif (deprecate(el)) {\n\t\t\tconst count = attr(el, \"data-count\");\n\t\t\tel.classList.add(...styles.validation.split(\" \"));\n\t\t\tattr(el, \"data-limit\", count);\n\t\t\twarn(\n\t\t\t\t`data-count=\"${count}\"`,\n\t\t\t\t`class=\"styles.validation\" data-field=\"counter\" data-limit=\"${count}\"`,\n\t\t\t\tel,\n\t\t\t);\n\t\t}\n};\n\n// Deprecate data-command on buttons and other elements\nconst deprecateDataCommand = () => {\n\tfor (const el of document.querySelectorAll(\"[data-command]\"))\n\t\tif (deprecate(el)) {\n\t\t\tconst command = attr(el, \"data-command\");\n\n\t\t\tif (command === \"row\")\n\t\t\t\twarn(\n\t\t\t\t\t`<${el.nodeName.toLowerCase()} data-command=\"${command}\">`,\n\t\t\t\t\t`<tr data-clickdelegatefor=\"${el.nodeName}-ID\">`,\n\t\t\t\t\tel,\n\t\t\t\t);\n\t\t\telse\n\t\t\t\twarn(\n\t\t\t\t\t`<button data-command=\"${command}\">`,\n\t\t\t\t\t`<button command=\"${command?.replace(\"toggle-app-expanded\", \"show-modal\")}\" commandfor=\"TARGET-ID\">`,\n\t\t\t\t\tel,\n\t\t\t\t);\n\t\t}\n};\n\n// Deprecate u-tabs\nconst TABS = isBrowser() ? document.getElementsByTagName(\"u-tabs\") : [];\nconst deprecateUTabs = () => {\n\tfor (const el of TABS) if (deprecate(el)) warn(\"u-tabs\", \"ds-tabs\", el);\n};\n\n// Deprecate u-combobox and add class to ds-suggestion\nconst CSS_SUGGESTION = styles.suggestion.split(\" \");\nconst OLD = isBrowser() ? document.getElementsByTagName(\"u-combobox\") : [];\nconst NEW = isBrowser() ? document.getElementsByTagName(\"ds-suggestion\") : [];\nconst deprecateUCombobox = () => {\n\tfor (const el of OLD)\n\t\tif (deprecate(el)) {\n\t\t\tel.classList.add(...CSS_SUGGESTION);\n\t\t\twarn(\"<u-combobox>\", `<ds-suggestion class=\"styles.suggestion\">`, el);\n\t\t}\n\tfor (const el of NEW)\n\t\tif (deprecate(el) && !el.classList.contains(CSS_SUGGESTION[0])) {\n\t\t\tel.classList.add(...CSS_SUGGESTION);\n\t\t\twarn(\n\t\t\t\t\"Only using <ds-suggestion>\",\n\t\t\t\t`<ds-suggestion class=\"styles.suggestion\">`,\n\t\t\t\tel,\n\t\t\t);\n\t\t}\n};\n\nconst handleCommandClick = ({ target: el }: Event) => {\n\tif (el instanceof Element === false) return;\n\tconst row = el?.closest(\"tr\")?.querySelector('[data-command=\"row\"]');\n\tconst click =\n\t\trow && !el?.closest('a,button,label,input,select,textarea,[role=\"button\"]');\n\tif (click) (row as HTMLElement).click(); // Forward click to data-command=\"row\" element\n\n\tconst dialog = el?.closest(\"dialog\");\n\tconst close = dialog && el?.closest('[data-command=\"close\"]');\n\tif (close) dialog.close();\n};\n\n// Deprecate fields without ds-field element\nconst FIELDS = getByCSSModule(\"field\");\nconst FIELD_UNBIND = new Set<Element>();\nconst deprecateField = () => {\n\tfor (const el of FIELDS)\n\t\tif (el.nodeName !== \"DS-FIELD\") {\n\t\t\tif (!deprecate(el))\n\t\t\t\twarn(\n\t\t\t\t\t'Only setting class=\"styles.field\"',\n\t\t\t\t\t'<ds-field class=\"styles.field\">',\n\t\t\t\t\tel,\n\t\t\t\t);\n\t\t\tif (!FIELD_UNBIND.has(el) && FIELD_UNBIND.add(el)) {\n\t\t\t\tDSFieldElement.prototype.connectedCallback.call(el as DSFieldElement);\n\t\t\t}\n\t\t}\n};\nconst unbindFields = () => {\n\tfor (const el of FIELD_UNBIND) {\n\t\tDSFieldElement.prototype.disconnectedCallback.call(el as DSFieldElement);\n\t\tFIELD_UNBIND.delete(el);\n\t}\n};\n\n// Deprecate validation without data-field=\"validation\"\nconst CSS_DESCRIPTIONS = `[data-description], .${styles.field.split(\" \")[0]} label + p`;\nconst deprecateFeildDescription = () => {\n\tfor (const el of document.querySelectorAll(CSS_DESCRIPTIONS))\n\t\tif (deprecate(el) && el.getAttribute(\"data-field\") !== \"description\") {\n\t\t\tattr(el, \"data-field\", \"description\");\n\t\t\twarn(\n\t\t\t\t\"Descriptions created by data-description of <p> only\",\n\t\t\t\t'data-field=\"data-description\"',\n\t\t\t\tel,\n\t\t\t);\n\t\t}\n};\n\n// Deprecate validation without data-field=\"validation\"\nconst VALIDATIONS = getByCSSModule(\"validation\");\nconst deprecateFieldValidation = () => {\n\tfor (const el of VALIDATIONS)\n\t\tif (deprecate(el) && !el.hasAttribute(\"data-field\")) {\n\t\t\tattr(el, \"data-field\", \"validation\");\n\t\t\twarn(\n\t\t\t\t'Only setting class=\"styles.validation\"',\n\t\t\t\t'class=\"styles.validation\" data-field=\"validation\"',\n\t\t\t\tel,\n\t\t\t);\n\t\t}\n};\n\nconst deprecatePopoverPosition = () => {\n\tfor (const el of document.querySelectorAll(\"[popover][data-position]\"))\n\t\tif (deprecate(el)) {\n\t\t\tattr(el, \"data-placement\", attr(el, \"data-position\"));\n\t\t\twarn(\"data-position\", \"data-placement\", el);\n\t\t}\n};\n\nconst handleDeprecations = debounce(() => {\n\tif (!isBrowser()) return; // Check if document is still available, since this can run in test environments after document is destroyed\n\tdeprecateCounter();\n\tdeprecateDataCommand();\n\tdeprecateBreadcrumbs();\n\tdeprecateDialog();\n\tdeprecateErrorSummary();\n\tdeprecateFeildDescription();\n\tdeprecateFieldValidation();\n\tdeprecatePopoverPosition();\n\tdeprecateField(); // Should run after other field deprecations to access correct data-attributes\n\tdeprecateToggleGroup();\n\tdeprecateUCombobox();\n\tdeprecateUTabs();\n}, 200);\n\nonHotReload(\"deprecations\", () => [\n\tunbindFields, // Return as cleanup function\n\ton(document, \"click\", handleCommandClick, QUICK_EVENT),\n\ton(document, \"toggle\", deprecateDialog, true),\n\tonMutation(document, handleDeprecations, {\n\t\tattributeFilter: [\n\t\t\t\"class\",\n\t\t\t\"data-command\",\n\t\t\t\"data-count\",\n\t\t\t\"data-description\",\n\t\t\t\"data-variant\",\n\t\t\t\"open\",\n\t\t],\n\t\tattributes: true,\n\t\tchildList: true,\n\t\tsubtree: true,\n\t}),\n]);\n"],"names":["DEPRECATIONS","deprecate","el","warn","from","to","TOGGLEGROUPS","getByCSSModule","CSS_BUTTON","styles","deprecateToggleGroup","attr","label","BREADCRUMBS","deprecateBreadcrumbs","ERRORSUMMARYS","deprecateErrorSummary","DIALOGS","deprecateDialog","closedby","deprecateCounter","count","deprecateDataCommand","command","TABS","isBrowser","deprecateUTabs","CSS_SUGGESTION","OLD","NEW","deprecateUCombobox","handleCommandClick","row","dialog","FIELDS","FIELD_UNBIND","deprecateField","DSFieldElement","unbindFields","CSS_DESCRIPTIONS","deprecateFeildDescription","VALIDATIONS","deprecateFieldValidation","deprecatePopoverPosition","handleDeprecations","debounce","onHotReload","on","QUICK_EVENT","onMutation"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DSErrorSummaryElement } from '
|
|
1
|
+
import { DSErrorSummaryElement } from '../';
|
|
2
2
|
import { CustomReactElementProps } from '../react-types';
|
|
3
3
|
export type ErrorsummaryProps = CustomReactElementProps<DSErrorSummaryElement>;
|
|
4
4
|
export declare const Errorsummary: import('react').ForwardRefExoticComponent<Omit<ErrorsummaryProps, "ref"> & import('react').RefAttributes<DSErrorSummaryElement>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errorsummary.js","sources":["../../designsystem/errorsummary/errorsummary.tsx"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"errorsummary.js","sources":["../../designsystem/errorsummary/errorsummary.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport type { DSErrorSummaryElement } from \"../\";\nimport type { CustomReactElementProps } from \"../react-types\";\nimport styles from \"../styles.module.css\";\nimport { toCustomElementProps } from \"../utils\";\n\nexport type ErrorsummaryProps = CustomReactElementProps<DSErrorSummaryElement>;\n\nexport const Errorsummary = forwardRef<\n\tDSErrorSummaryElement,\n\tErrorsummaryProps\n>(function Errorsummary(rest, ref) {\n\treturn (\n\t\t<ds-error-summary\n\t\t\tref={ref}\n\t\t\t{...toCustomElementProps(rest, styles.errorsummary)}\n\t\t/>\n\t);\n});\n"],"names":["Errorsummary","forwardRef","rest","ref","jsx","toCustomElementProps","styles"],"mappings":";;;;AAQO,MAAMA,IAAeC,EAG1B,SAAsBC,GAAMC,GAAK;AAClC,SACC,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,KAAAD;AAAA,MACC,GAAGE,EAAqBH,GAAMI,EAAO,YAAY;AAAA,IAAA;AAAA,EAAA;AAGrD,CAAC;"}
|
package/mtds/field/field.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { DSSuggestionElement } from '@digdir/designsystemet-web';
|
|
2
1
|
import { Placement } from '@floating-ui/dom';
|
|
3
2
|
import { JSX } from 'react';
|
|
3
|
+
import { DSSuggestionElement } from '..';
|
|
4
4
|
import { InputProps } from '../input/input';
|
|
5
5
|
import { CustomReactElementProps, PolymorphicComponentPropWithRef } from '../react-types';
|
|
6
6
|
type FieldBaseProps = {
|