@mattilsynet/design 2.11.0-canary → 3.0.1
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/analytics/analytics.d.ts +1 -1
- package/mtds/analytics/analytics.js +72 -67
- package/mtds/analytics/analytics.js.map +1 -1
- package/mtds/app/app-observer.js +27 -26
- package/mtds/app/app-observer.js.map +1 -1
- package/mtds/app/app-toggle.js +10 -26
- package/mtds/app/app-toggle.js.map +1 -1
- package/mtds/app/app-toggle2.js +26 -10
- package/mtds/app/app-toggle2.js.map +1 -1
- package/mtds/app/app.d.ts +5 -5
- package/mtds/app/app.js +39 -29
- package/mtds/app/app.js.map +1 -1
- package/mtds/app/app.stories.d.ts +1 -0
- package/mtds/atlas/atlas-element.d.ts +50 -0
- package/mtds/atlas/atlas-element.js +103 -0
- package/mtds/atlas/atlas-element.js.map +1 -0
- package/mtds/atlas/atlas-marker.d.ts +20 -0
- package/mtds/atlas/atlas-marker.js +53 -0
- package/mtds/atlas/atlas-marker.js.map +1 -0
- package/mtds/atlas/atlas-matgeo.d.ts +32 -0
- package/mtds/atlas/atlas-matgeo.js +63 -0
- package/mtds/atlas/atlas-matgeo.js.map +1 -0
- package/mtds/atlas/atlas-wms.d.ts +17 -0
- package/mtds/atlas/atlas-wms.js +29 -0
- package/mtds/atlas/atlas-wms.js.map +1 -0
- package/mtds/atlas/atlas.css.js +138 -0
- package/mtds/atlas/atlas.css.js.map +1 -0
- package/mtds/atlas/atlas.d.ts +51 -0
- package/mtds/atlas/atlas.js +38 -0
- package/mtds/atlas/atlas.js.map +1 -0
- package/mtds/atlas/atlas.stories.d.ts +26 -0
- package/mtds/atlas/cluster.js +1149 -0
- package/mtds/atlas/cluster.js.map +1 -0
- package/mtds/atlas.d.ts +1 -0
- package/mtds/atlas.iife.js +737 -0
- package/mtds/atlas.js +14 -0
- package/mtds/atlas.js.map +1 -0
- package/mtds/badge/badge.d.ts +2 -2
- package/mtds/breadcrumbs/breadcrumbs.d.ts +9 -8
- package/mtds/breadcrumbs/breadcrumbs.js +8 -10
- package/mtds/breadcrumbs/breadcrumbs.js.map +1 -1
- package/mtds/button/button.d.ts +7 -0
- package/mtds/button/button.js +9 -8
- package/mtds/button/button.js.map +1 -1
- package/mtds/button/button.stories.d.ts +1 -0
- package/mtds/card/card.stories.d.ts +1 -0
- package/mtds/chart/chart-element.d.ts +6 -2
- package/mtds/chart/chart-element.js +45 -45
- package/mtds/chart/chart-element.js.map +1 -1
- package/mtds/chart/chart.css.js +60 -260
- package/mtds/chart/chart.css.js.map +1 -1
- package/mtds/chart/chart.d.ts +7 -13
- package/mtds/chart/chart.js +46 -11
- package/mtds/chart/chart.js.map +1 -1
- package/mtds/chart/chart.stories.d.ts +2 -0
- package/mtds/chip/chip.stories.d.ts +1 -0
- package/mtds/deprecations.js +135 -0
- package/mtds/deprecations.js.map +1 -0
- package/mtds/details/details.d.ts +3 -3
- package/mtds/details/details.js +18 -11
- package/mtds/details/details.js.map +1 -1
- package/mtds/dialog/dialog.d.ts +22 -2
- package/mtds/dialog/dialog.js +9 -8
- package/mtds/dialog/dialog.js.map +1 -1
- package/mtds/dialog/dialog.stories.d.ts +1 -0
- package/mtds/divider/divider.d.ts +2 -2
- package/mtds/errorsummary/errorsummary.d.ts +4 -2
- package/mtds/errorsummary/errorsummary.js +14 -18
- package/mtds/errorsummary/errorsummary.js.map +1 -1
- package/mtds/external/@turf/boolean-point-in-polygon/dist/esm/index.js +27 -0
- package/mtds/external/@turf/boolean-point-in-polygon/dist/esm/index.js.map +1 -0
- package/mtds/external/@turf/helpers/dist/esm/index.js +27 -0
- package/mtds/external/@turf/helpers/dist/esm/index.js.map +1 -0
- package/mtds/external/@turf/invariant/dist/esm/index.js +21 -0
- package/mtds/external/@turf/invariant/dist/esm/index.js.map +1 -0
- package/mtds/external/@u-elements/u-combobox/dist/u-combobox.js +284 -0
- package/mtds/external/@u-elements/u-combobox/dist/u-combobox.js.map +1 -0
- package/mtds/external/@u-elements/u-tabs/dist/u-tabs.js +201 -0
- package/mtds/external/@u-elements/u-tabs/dist/u-tabs.js.map +1 -0
- package/mtds/external/leaflet/dist/leaflet-src.js +6265 -0
- package/mtds/external/leaflet/dist/leaflet-src.js.map +1 -0
- package/mtds/external/leaflet/dist/leaflet.css.js +607 -0
- package/mtds/external/leaflet/dist/leaflet.css.js.map +1 -0
- package/mtds/external/point-in-polygon-hao/dist/esm/index.js +26 -0
- package/mtds/external/point-in-polygon-hao/dist/esm/index.js.map +1 -0
- package/mtds/external/robust-predicates/esm/orient2d.js +24 -0
- package/mtds/external/robust-predicates/esm/orient2d.js.map +1 -0
- package/mtds/external/robust-predicates/esm/util.js +31 -0
- package/mtds/external/robust-predicates/esm/util.js.map +1 -0
- package/mtds/field/field.d.ts +45 -15
- package/mtds/field/field.js +167 -124
- package/mtds/field/field.js.map +1 -1
- package/mtds/field/field.stories.d.ts +11 -9
- package/mtds/fieldset/fieldset.d.ts +7 -1
- package/mtds/fieldset/fieldset.js +23 -12
- package/mtds/fieldset/fieldset.js.map +1 -1
- package/mtds/fieldset/fieldset.stories.d.ts +2 -0
- package/mtds/fileupload/fileupload.d.ts +6 -0
- package/mtds/fileupload/fileupload.js +13 -0
- package/mtds/fileupload/fileupload.js.map +1 -0
- package/mtds/{lawpicker/lawpicker.stories.d.ts → fileupload/fileupload.stories.d.ts} +2 -0
- package/mtds/helptext/helptext.d.ts +1 -1
- package/mtds/icons/cosmetics.svg +1 -1
- package/mtds/icons/megaphone.svg +3 -0
- package/mtds/illustrations/byggning-1-gronn.svg +1 -0
- package/mtds/illustrations/byggning-1-mattilsynet.svg +1 -0
- package/mtds/illustrations/byggning-2-gronn.svg +1 -0
- package/mtds/illustrations/byggning-3-gronn.svg +1 -0
- package/mtds/illustrations/byggning-4-gronn.svg +1 -0
- package/mtds/illustrations/byggning-5-gronn.svg +1 -0
- package/mtds/illustrations/byggning-6-blaa.svg +1 -0
- package/mtds/illustrations/byggning-7-blaa.svg +1 -0
- package/mtds/illustrations/byggning-8-blaa.svg +1 -0
- package/mtds/illustrations/byggningsrekke-1-gronn.svg +1 -0
- package/mtds/illustrations/byggningsrekke-1-mattilsynet.svg +1 -0
- package/mtds/illustrations/byggningsrekke-2-gronn.svg +1 -0
- package/mtds/illustrations/byggningsrekke-3-blaa.svg +1 -0
- package/mtds/illustrations/car-logo.svg +1 -0
- package/mtds/illustrations/car.svg +1 -0
- package/mtds/illustrations/cheese.svg +1 -0
- package/mtds/illustrations/cloud-1.svg +1 -0
- package/mtds/illustrations/cloud-2.svg +1 -0
- package/mtds/illustrations/cloud-sun.svg +1 -0
- package/mtds/illustrations/cloud-sunshine.svg +1 -0
- package/mtds/illustrations/debatt.svg +1 -0
- package/mtds/illustrations/egg-boat.svg +1 -0
- package/mtds/illustrations/egg-half.svg +1 -0
- package/mtds/illustrations/egg.svg +1 -0
- package/mtds/illustrations/flagg-aaland.svg +1 -0
- package/mtds/illustrations/flagg-danmark.svg +1 -0
- package/mtds/illustrations/flagg-faeroyene.svg +1 -0
- package/mtds/illustrations/flagg-finland.svg +1 -0
- package/mtds/illustrations/flagg-gronland.svg +1 -0
- package/mtds/illustrations/flagg-island.svg +1 -0
- package/mtds/illustrations/flagg-norge.svg +1 -0
- package/mtds/illustrations/flagg-sapmi.svg +1 -0
- package/mtds/illustrations/flagg-sverige.svg +1 -0
- package/mtds/illustrations/foodtruck-logo.svg +1 -0
- package/mtds/illustrations/foodtruck.svg +1 -0
- package/mtds/illustrations/forstorrelsesglass.svg +1 -0
- package/mtds/illustrations/hengelas.svg +1 -0
- package/mtds/illustrations/house.svg +1 -0
- package/mtds/illustrations/index.json +242 -10
- package/mtds/illustrations/kompass.svg +1 -0
- package/mtds/illustrations/paragraph.svg +1 -0
- package/mtds/illustrations/person-child-puppy.svg +1 -0
- package/mtds/illustrations/person-family-house.svg +1 -0
- package/mtds/illustrations/person-family.svg +1 -0
- package/mtds/illustrations/person-paragraph.svg +1 -0
- package/mtds/illustrations/plane-solo.svg +1 -0
- package/mtds/illustrations/skinke.svg +1 -0
- package/mtds/illustrations/sunshine.svg +1 -0
- package/mtds/illustrations/system-stotte.svg +1 -0
- package/mtds/illustrations/system.svg +1 -0
- package/mtds/illustrations/tractor.svg +1 -0
- package/mtds/illustrations/tre-1.svg +1 -0
- package/mtds/illustrations/tre-2.svg +1 -0
- package/mtds/illustrations/tre-3.svg +1 -0
- package/mtds/illustrations/wind.svg +1 -0
- package/mtds/index.d.ts +8 -3
- package/mtds/index.iife.js +235 -283
- package/mtds/index.js +42 -28
- package/mtds/index.js.map +1 -1
- package/mtds/input/input.d.ts +3 -3
- package/mtds/input/input.js +40 -18
- package/mtds/input/input.js.map +1 -1
- package/mtds/law/law-helper.d.ts +42 -0
- package/mtds/law/law-helper.js +94 -0
- package/mtds/law/law-helper.js.map +1 -0
- package/mtds/law/law.d.ts +6 -0
- package/mtds/law/law.js +10 -0
- package/mtds/law/law.js.map +1 -0
- package/mtds/law/law.stories.d.ts +17 -0
- package/mtds/law/vinforskriften-new.d.ts +1 -0
- package/mtds/law/vinforskriften-old.d.ts +1 -0
- package/mtds/logo/logo-observer.js +13 -14
- package/mtds/logo/logo-observer.js.map +1 -1
- package/mtds/package.json.js +2 -2
- package/mtds/pagination/pagination.d.ts +19 -2
- package/mtds/pagination/pagination.js +19 -21
- package/mtds/pagination/pagination.js.map +1 -1
- package/mtds/popover/popover.d.ts +4 -0
- package/mtds/popover/popover.js +9 -7
- package/mtds/popover/popover.js.map +1 -1
- package/mtds/print/print.css.js +155 -0
- package/mtds/print/print.css.js.map +1 -0
- package/mtds/print/print.stories.d.ts +15 -0
- package/mtds/progress/progress.d.ts +1 -1
- package/mtds/react-atlas.d.ts +1 -0
- package/mtds/react-atlas.js +16 -0
- package/mtds/react-atlas.js.map +1 -0
- package/mtds/react-types.d.ts +9 -1
- package/mtds/react.d.ts +2 -0
- package/mtds/react.js +57 -52
- package/mtds/react.js.map +1 -1
- package/mtds/spinner/spinner.d.ts +2 -2
- package/mtds/steps/steps.d.ts +2 -2
- package/mtds/styles.css +1 -1
- package/mtds/styles.json +44 -41
- package/mtds/styles.module.css.js +96 -92
- package/mtds/styles.module.css.js.map +1 -1
- package/mtds/table/table-observer.js +18 -20
- package/mtds/table/table-observer.js.map +1 -1
- package/mtds/table/table.d.ts +11 -4
- package/mtds/table/table.js +41 -14
- package/mtds/table/table.js.map +1 -1
- package/mtds/table/table.stories.d.ts +1 -0
- package/mtds/tabs/tabs.d.ts +10 -9
- package/mtds/tabs/tabs.js +8 -8
- package/mtds/tabs/tabs.js.map +1 -1
- package/mtds/tabs/tabs.stories.d.ts +1 -0
- package/mtds/tailwind.css +0 -2
- package/mtds/toast/toast-helper.js +13 -13
- package/mtds/toast/toast-helper.js.map +1 -1
- package/mtds/toast/toast-observer.js +10 -9
- package/mtds/toast/toast-observer.js.map +1 -1
- package/mtds/toast/toast.js +32 -28
- package/mtds/toast/toast.js.map +1 -1
- package/mtds/togglegroup/togglegroup.d.ts +8 -9
- package/mtds/togglegroup/togglegroup.js +26 -15
- package/mtds/togglegroup/togglegroup.js.map +1 -1
- package/mtds/tooltip/tooltip-element.js +8 -0
- package/mtds/tooltip/tooltip-element.js.map +1 -0
- package/mtds/utils.d.ts +30 -30
- package/mtds/utils.js +59 -96
- package/mtds/utils.js.map +1 -1
- package/mtds/validation/validation-observer.js +36 -0
- package/mtds/validation/validation-observer.js.map +1 -0
- package/mtds/validation/validation.d.ts +1 -1
- package/mtds/validation/validation.js +6 -5
- package/mtds/validation/validation.js.map +1 -1
- package/package.json +42 -37
- package/mtds/breadcrumbs/breadcrumbs-observer.js +0 -17
- package/mtds/breadcrumbs/breadcrumbs-observer.js.map +0 -1
- package/mtds/dialog/dialog-observer.js +0 -32
- package/mtds/dialog/dialog-observer.js.map +0 -1
- package/mtds/errorsummary/errorsummary-observer.js +0 -11
- package/mtds/errorsummary/errorsummary-observer.js.map +0 -1
- package/mtds/field/field-observer.d.ts +0 -1
- package/mtds/field/field-observer.js +0 -73
- package/mtds/field/field-observer.js.map +0 -1
- package/mtds/fieldset/fieldset-observer.d.ts +0 -1
- package/mtds/fieldset/fieldset-observer.js +0 -22
- package/mtds/fieldset/fieldset-observer.js.map +0 -1
- package/mtds/lawpicker/lawpicker-element.d.ts +0 -18
- package/mtds/map/map-element.d.ts +0 -47
- package/mtds/map/map-element.js +0 -76
- package/mtds/map/map-element.js.map +0 -1
- package/mtds/map/map.css.js +0 -46
- package/mtds/map/map.css.js.map +0 -1
- package/mtds/map/map.stories.d.ts +0 -10
- package/mtds/map.d.ts +0 -1
- package/mtds/map.iife.js +0 -722
- package/mtds/map.js +0 -8
- package/mtds/map.js.map +0 -1
- package/mtds/pagination/pagination-helper.d.ts +0 -13
- package/mtds/pagination/pagination-helper.js +0 -16
- package/mtds/pagination/pagination-helper.js.map +0 -1
- package/mtds/popover/popover-observer.d.ts +0 -1
- package/mtds/popover/popover-observer.js +0 -34
- package/mtds/popover/popover-observer.js.map +0 -1
- package/mtds/togglegroup/togglegroup-observer.d.ts +0 -1
- package/mtds/togglegroup/togglegroup-observer.js +0 -13
- package/mtds/togglegroup/togglegroup-observer.js.map +0 -1
- package/mtds/tooltip/tooltip-observer.d.ts +0 -1
- package/mtds/tooltip/tooltip-observer.js +0 -35
- package/mtds/tooltip/tooltip-observer.js.map +0 -1
- /package/mtds/{breadcrumbs/breadcrumbs-observer.d.ts → deprecations.d.ts} +0 -0
- /package/mtds/{dialog/dialog-observer.d.ts → tooltip/tooltip-element.d.ts} +0 -0
- /package/mtds/{errorsummary/errorsummary-observer.d.ts → validation/validation-observer.d.ts} +0 -0
|
@@ -1,120 +1,125 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
const k = `.${
|
|
4
|
-
function
|
|
5
|
-
if (g) {
|
|
6
|
-
if (window._paq || (window._paq = [], window._paq.push(["HeatmapSessionRecording::disable"]), window._paq.push(["enableLinkTracking"]), window._paq.push(["setTrackerUrl", `https://${p}/matomo.php`])), window._mtm || (window._mtm = window._mtm || [], window._mtm.push({ "mtm.startTime": Date.now(), event: "mtm.Start" })),
|
|
1
|
+
import d from "../styles.module.css.js";
|
|
2
|
+
import { onHotReload as w, isBrowser as g, tag as b, on as y, QUICK_EVENT as _, attr as s } from "../utils.js";
|
|
3
|
+
const S = `[data-command="toggle-app-expanded"],.${d.app.split(" ")[0]} > [command="show-modal"]`, k = `.${d.breadcrumbs.split(" ")[0]}`, T = `.${d.card.split(" ")[0]}`, u = `.${d.chip.split(" ")[0]}`, v = `.${d.helptext.split(" ")[0]}`, C = `.${d.pagination.split(" ")[0]}`, x = 'summary,u-summary,a,button,[role="tab"],[role="button"]', p = "mattilsynet.matomo.cloud", $ = ["setCustomUrl", "setDocumentTitle", "setReferrerUrl"], i = "mtds-analytics-banner", q = "https://www.mattilsynet.no/om-mattilsynet/personvernerklaering/informasjonskapsler";
|
|
4
|
+
function A(o, a = {}) {
|
|
5
|
+
if (g()) {
|
|
6
|
+
if (window._paq || (window._paq = [], window._paq.push(["HeatmapSessionRecording::disable"]), window._paq.push(["enableLinkTracking"]), window._paq.push(["setTrackerUrl", `https://${p}/matomo.php`])), window._mtm || (window._mtm = window._mtm || [], window._mtm.push({ "mtm.startTime": Date.now(), event: "mtm.Start" })), o === "init") {
|
|
7
7
|
window._mtdsTracking = {
|
|
8
8
|
enabled: window.location.hostname !== "localhost",
|
|
9
9
|
...window._mtdsTracking,
|
|
10
10
|
...a
|
|
11
11
|
};
|
|
12
|
-
const { consent: e, enabled:
|
|
13
|
-
if (n && window._paq.push(["setSiteId", n]),
|
|
14
|
-
e !== "custom" &&
|
|
12
|
+
const { consent: e, enabled: t, matomoId: n, matomoTagManagerId: r } = window._mtdsTracking;
|
|
13
|
+
if (n && window._paq.push(["setSiteId", n]), t) {
|
|
14
|
+
e !== "custom" && E();
|
|
15
15
|
const l = r ? `https://cdn.matomo.cloud/${p}/container_${r}.js` : `https://cdn.matomo.cloud/${p}/matomo.js`;
|
|
16
16
|
document.querySelector(`script[src="${l}"]`) || document.head.append(b("script", { async: "", src: l }));
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
19
|
if (window._mtdsTracking?.enabled !== !1) {
|
|
20
20
|
if (window._mtdsTracking?.enabled === "debug")
|
|
21
|
-
return console.info(`analytics
|
|
22
|
-
if (
|
|
23
|
-
const { url: e, title:
|
|
24
|
-
window._paq.push(["setCustomUrl", e || location.href]), window._paq.push(["setDocumentTitle",
|
|
25
|
-
} else if (
|
|
26
|
-
const { category: e, action:
|
|
21
|
+
return console.info(`analytics ${o}:`, a);
|
|
22
|
+
if (o === "pageview") {
|
|
23
|
+
const { url: e, title: t } = a;
|
|
24
|
+
window._paq.push(["setCustomUrl", e || location.href]), window._paq.push(["setDocumentTitle", t || document.title]), window._paq.push(["trackPageView"]);
|
|
25
|
+
} else if (o === "event") {
|
|
26
|
+
const { category: e, action: t, name: n, value: r } = a, l = ["trackEvent", e, t, n, r];
|
|
27
27
|
let c = location.href;
|
|
28
28
|
window._paq.push([
|
|
29
29
|
function() {
|
|
30
30
|
c = this.getCurrentUrl();
|
|
31
31
|
}
|
|
32
32
|
]), window._paq.push(["setCustomUrl", c.split("#")[0]]), window._paq.push(l.filter((h) => h !== void 0)), window._paq.push(["setCustomUrl", c]);
|
|
33
|
-
} else if (
|
|
33
|
+
} else if (o === "search") {
|
|
34
34
|
const {
|
|
35
35
|
query: e,
|
|
36
|
-
category:
|
|
36
|
+
category: t = !1,
|
|
37
37
|
results: n = !1
|
|
38
38
|
} = a;
|
|
39
|
-
window._paq.push(["trackSiteSearch", e,
|
|
40
|
-
} else
|
|
39
|
+
window._paq.push(["trackSiteSearch", e, t, n]);
|
|
40
|
+
} else if (o === "matomo") {
|
|
41
|
+
const e = a;
|
|
42
|
+
$.includes(e?.[0]) && typeof e[1] != "string" && (e[1] = `${e[1] ?? ""}`), window._paq.push(e);
|
|
43
|
+
}
|
|
41
44
|
}
|
|
42
45
|
}
|
|
43
46
|
}
|
|
44
|
-
function
|
|
45
|
-
if (document.getElementById(
|
|
47
|
+
function E() {
|
|
48
|
+
if (document.getElementById(i) || window.localStorage.getItem(i)) return;
|
|
46
49
|
document.body.insertAdjacentHTML(
|
|
47
50
|
"afterbegin",
|
|
48
|
-
`<dialog id="${
|
|
49
|
-
#${
|
|
50
|
-
#${
|
|
51
|
-
#${
|
|
52
|
-
#${
|
|
53
|
-
#${
|
|
54
|
-
#${
|
|
51
|
+
`<dialog id="${i}" data-analytics="ignore"><style>
|
|
52
|
+
#${i}[open] { box-sizing: border-box; display: flex; align-items: center; background: #116e6b; border-radius: .5em; border: 0; box-shadow: 0 .25em .5em rgba(0,0,0,.3); color: #fff; font-size: .875em; inset: auto auto 1em 1em; max-width: calc(100vw - 2em); outline: 0; padding: .5em; position: fixed; z-index: 99999 }
|
|
53
|
+
#${i} button { all: unset; box-sizing: border-box; cursor: pointer; display: flex; width: 1.5em; height: 1.5em; font: 300 1.5em/1.35 sans-serif; border-radius: .25em; place-content: center; transition: .2s; transition-property: background, scale }
|
|
54
|
+
#${i} button:focus-visible { outline: 2px solid }
|
|
55
|
+
#${i} button:hover { background: #0a4e4f }
|
|
56
|
+
#${i} button:active { background: #054449; scale: .9 }
|
|
57
|
+
#${i} p { margin: 0 .25em }
|
|
55
58
|
</style>
|
|
56
|
-
<p>Vi bruker <a href="${
|
|
59
|
+
<p>Vi bruker <a href="${q}" target="_blank">informasjonskapsler</a> for å forbedre brukeropplevelsen.</p>
|
|
57
60
|
<form method="dialog" data-analytics="ignore"><button type="submit" aria-label="OK">×</button></form>
|
|
58
61
|
</dialog>`
|
|
59
62
|
);
|
|
60
|
-
const a = document.getElementById(
|
|
63
|
+
const a = document.getElementById(i), e = () => window.localStorage.setItem(i, "seen");
|
|
61
64
|
a.addEventListener("close", e, { once: !0 }), a.show();
|
|
62
65
|
}
|
|
63
|
-
function
|
|
64
|
-
window._mtdsTracking?.enabled && setTimeout(
|
|
66
|
+
function I(o) {
|
|
67
|
+
window._mtdsTracking?.enabled && setTimeout(M, 0, o);
|
|
65
68
|
}
|
|
66
|
-
function
|
|
67
|
-
const e =
|
|
69
|
+
function M({ type: o, target: a }) {
|
|
70
|
+
const e = o === "click" ? a?.closest?.(x) : a;
|
|
68
71
|
if (!(e instanceof Element) || e.closest('[data-analytics="ignore"]'))
|
|
69
72
|
return;
|
|
70
|
-
let
|
|
71
|
-
if (
|
|
72
|
-
n = "Form",
|
|
73
|
-
else if (
|
|
73
|
+
let t = "click", n = "Button", r = f(e) || R(e) || s(e, "data-tooltip") || "";
|
|
74
|
+
if (o === "submit")
|
|
75
|
+
n = "Form", t = "submit", r = r || document.title;
|
|
76
|
+
else if (o === "toggle") {
|
|
74
77
|
if (!e.matches("dialog:modal")) return;
|
|
75
|
-
n = "Dialog",
|
|
76
|
-
} else if (
|
|
77
|
-
const l =
|
|
78
|
-
n = e.closest(u) ? "Chip" : "Form",
|
|
79
|
-
} else if (
|
|
80
|
-
n = "Tab",
|
|
81
|
-
else if (
|
|
78
|
+
n = "Dialog", t = "open";
|
|
79
|
+
} else if (o === "change") {
|
|
80
|
+
const l = s(e, "type"), c = l === "checkbox" || l === "radio" ? e.closest("fieldset") : null;
|
|
81
|
+
n = e.closest(u) ? "Chip" : "Form", t = "change", r = f(c || e) || m(c?.querySelector("legend")) || m(e?.labels?.[0]);
|
|
82
|
+
} else if (s(e, "role") === "tab")
|
|
83
|
+
n = "Tab", t = "navigate";
|
|
84
|
+
else if (s(e, "popovertarget")) {
|
|
82
85
|
if (!B(e)?.matches(":popover-open")) return;
|
|
83
|
-
n = e.closest(v) ? "HelpText" : "Popover",
|
|
86
|
+
n = e.closest(v) ? "HelpText" : "Popover", t = "open";
|
|
84
87
|
} else if (e.nodeName.endsWith("SUMMARY")) {
|
|
85
88
|
if (!e.parentElement.open) return;
|
|
86
|
-
n = "Details",
|
|
87
|
-
} else if (
|
|
89
|
+
n = "Details", t = "open";
|
|
90
|
+
} else if (e.matches(S)) {
|
|
88
91
|
const l = L(e, "--mtds-tooltip-position") === "none";
|
|
89
|
-
n = "Sidebar",
|
|
92
|
+
n = "Sidebar", t = l ? "expand" : "minimize", r = l && s(e, "data-tooltip") || m(e);
|
|
90
93
|
} else if (e.closest(k))
|
|
91
|
-
n = "Breadcrumbs",
|
|
94
|
+
n = "Breadcrumbs", t = "navigate";
|
|
95
|
+
else if (e.closest(C))
|
|
96
|
+
n = "Pagination", t = "navigate";
|
|
92
97
|
else if (e.closest(T))
|
|
93
|
-
n = "
|
|
94
|
-
else if (e.closest(S))
|
|
95
|
-
n = "Card", o = e instanceof HTMLAnchorElement ? "navigate" : "click";
|
|
98
|
+
n = "Card", t = e instanceof HTMLAnchorElement ? "navigate" : "click";
|
|
96
99
|
else if (e.closest(u))
|
|
97
|
-
n = "Chip",
|
|
100
|
+
n = "Chip", t = e.hasAttribute("data-removable") ? "remove" : "click";
|
|
98
101
|
else if (e.closest("th[aria-sort]"))
|
|
99
|
-
n = "Table",
|
|
102
|
+
n = "Table", t = "sort";
|
|
100
103
|
else if (e instanceof HTMLAnchorElement)
|
|
101
|
-
n = "Link",
|
|
104
|
+
n = "Link", t = e.protocol === "mailto:" ? "email" : "navigate", e.hasAttribute("download") ? t = "download" : e.hash && e.href.startsWith(location.href.split("#")[0]) && (t = "anchor");
|
|
102
105
|
else if (e.hasAttribute("aria-expanded")) {
|
|
103
|
-
if (
|
|
104
|
-
n = "Expand",
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
category:
|
|
108
|
-
action:
|
|
109
|
-
name:
|
|
106
|
+
if (s(e, "aria-expanded") !== "true") return;
|
|
107
|
+
n = "Expand", t = "open";
|
|
108
|
+
} else e.nodeName.startsWith("MTDS-ATLAS-") && (n = "Map Marker", t = "open");
|
|
109
|
+
A("event", {
|
|
110
|
+
category: s(e, "data-analytics-category") ?? n,
|
|
111
|
+
action: s(e, "data-analytics-action") ?? t,
|
|
112
|
+
name: s(e, "data-analytics-name") ?? r
|
|
110
113
|
});
|
|
111
114
|
}
|
|
112
|
-
const
|
|
113
|
-
const a =
|
|
115
|
+
const m = (o) => o?.textContent?.trim() || "", f = (o) => o && s(o, "aria-label") || "", B = (o) => document.getElementById(s(o, "popovertarget") || ""), L = (o, a) => window.getComputedStyle(o).getPropertyValue(a)?.trim(), R = (o) => {
|
|
116
|
+
const a = m(o), e = m(o.querySelector("h1,h2,h3,h4,h5,h6"));
|
|
114
117
|
return a.startsWith(e) && e || a.slice(0, 100).trim();
|
|
115
118
|
};
|
|
116
|
-
w(() =>
|
|
119
|
+
w("analytics", () => [
|
|
120
|
+
y(document, "click toggle submit change", I, _)
|
|
121
|
+
]);
|
|
117
122
|
export {
|
|
118
|
-
|
|
123
|
+
A as analytics
|
|
119
124
|
};
|
|
120
125
|
//# sourceMappingURL=analytics.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analytics.js","sources":["../../designsystem/analytics/analytics.ts"],"sourcesContent":["import styles from \"../styles.module.css\";\nimport { attr, IS_BROWSER, on, onLoaded, QUICK_EVENT, tag } from \"../utils\";\n\nconst CSS_BREADCRUMBS = `.${styles.breadcrumbs.split(\" \")[0]}`;\nconst CSS_CARD = `.${styles.card.split(\" \")[0]}`;\nconst CSS_CHIP = `.${styles.chip.split(\" \")[0]}`;\nconst CSS_HELPTEXT = `.${styles.helptext.split(\" \")[0]}`;\nconst CSS_PAGINATION = `.${styles.pagination.split(\" \")[0]}`;\nconst CLICKS = `summary,u-summary,a,button,[role=\"tab\"],[role=\"button\"]`;\nconst EVENTS = \"click,toggle,submit,change\";\nconst MATOMO = \"mattilsynet.matomo.cloud\";\nconst BANNER = \"mtds-analytics-banner\"; // Dialog to show Matomo script loading\nconst BANNER_URL =\n\t\"https://www.mattilsynet.no/om-mattilsynet/personvernerklaering/informasjonskapsler\";\n\ntype Matomo = (\n\t| string\n\t| number\n\t| boolean\n\t| Document\n\t| Element\n\t| ((this: Record<string, <T>() => T>) => void)\n)[];\ndeclare global {\n\tinterface Window {\n\t\t_paq?: Matomo[];\n\t\t_mtm?: Record<string, string | number>[];\n\t\t_mtdsTracking?: AnalyticsActions[\"init\"];\n\t\t_mtdsUntrack?: () => void;\n\t}\n}\n\nexport type AnalyticsActions = {\n\tinit: {\n\t\tenabled?: boolean | \"debug\";\n\t\tconsent?: \"custom\" | true;\n\t} & (\n\t\t| {\n\t\t\t\tmatomoId: number | string;\n\t\t\t\tmatomoTagManagerId?: never;\n\t\t }\n\t\t| {\n\t\t\t\tmatomoId?: never;\n\t\t\t\tmatomoTagManagerId: string;\n\t\t }\n\t);\n\tpageview: {\n\t\turl?: string;\n\t\ttitle?: string;\n\t};\n\tevent: {\n\t\tcategory: string;\n\t\taction: string;\n\t\tname?: string;\n\t\tvalue?: number;\n\t};\n\tsearch: {\n\t\tquery: string;\n\t\tcategory?: string;\n\t\tresults?: number;\n\t};\n\tmatomo: Matomo;\n};\n\nexport function analytics<Action extends keyof AnalyticsActions>(\n\taction: Action,\n\targs = {} as AnalyticsActions[Action],\n) {\n\tif (!IS_BROWSER) return;\n\tif (!window._paq) {\n\t\twindow._paq = [];\n\t\twindow._paq.push([\"HeatmapSessionRecording::disable\"]); // Disable heatmaps by default as this require cookies\n\t\twindow._paq.push([\"enableLinkTracking\"]);\n\t\twindow._paq.push([\"setTrackerUrl\", `https://${MATOMO}/matomo.php`]);\n\t}\n\tif (!window._mtm) {\n\t\twindow._mtm = window._mtm || []; // Prepare Matomo Tag Manager\n\t\twindow._mtm.push({ \"mtm.startTime\": Date.now(), event: \"mtm.Start\" });\n\t}\n\n\tif (action === \"init\") {\n\t\twindow._mtdsTracking = {\n\t\t\tenabled: window.location.hostname !== \"localhost\",\n\t\t\t...window._mtdsTracking,\n\t\t\t...args,\n\t\t} as AnalyticsActions[\"init\"];\n\t\tconst { consent, enabled, matomoId, matomoTagManagerId } =\n\t\t\twindow._mtdsTracking;\n\n\t\tif (matomoId) window._paq.push([\"setSiteId\", matomoId]);\n\t\tif (enabled) {\n\t\t\tif (consent !== \"custom\") renderBanner();\n\t\t\tconst src = matomoTagManagerId\n\t\t\t\t? `https://cdn.matomo.cloud/${MATOMO}/container_${matomoTagManagerId}.js`\n\t\t\t\t: `https://cdn.matomo.cloud/${MATOMO}/matomo.js`;\n\n\t\t\tdocument.querySelector(`script[src=\"${src}\"]`) ||\n\t\t\t\tdocument.head.append(tag(\"script\", { async: \"\", src }));\n\t\t}\n\t}\n\n\tif (window._mtdsTracking?.enabled === false) return;\n\tif (window._mtdsTracking?.enabled === \"debug\")\n\t\treturn console.info(`analytics(\"${action}\", `, args, \")\");\n\n\tif (action === \"pageview\") {\n\t\tconst { url, title } = args as AnalyticsActions[\"pageview\"];\n\t\twindow._paq.push([\"setCustomUrl\", url || location.href]);\n\t\twindow._paq.push([\"setDocumentTitle\", title || document.title]);\n\t\twindow._paq.push([\"trackPageView\"]);\n\t} else if (action === \"event\") {\n\t\tconst { category, action, name, value } = args as AnalyticsActions[\"event\"];\n\t\tconst event = [\"trackEvent\", category, action, name, value];\n\n\t\t// We do not want to track events with hash in URL as this causes hard-to-read data,\n\t\t// so temporarily remove the hash part, and add it back after the event is pushed\n\t\tlet url = location.href;\n\t\twindow._paq.push([\n\t\t\tfunction () {\n\t\t\t\turl = this.getCurrentUrl<string>();\n\t\t\t},\n\t\t]);\n\t\twindow._paq.push([\"setCustomUrl\", url.split(\"#\")[0]]); // Skip hash part of URL\n\t\twindow._paq.push(event.filter((v) => v !== undefined)); // Push event\n\t\twindow._paq.push([\"setCustomUrl\", url]); // Reverrt to original URL with hash\n\t} else if (action === \"search\") {\n\t\tconst {\n\t\t\tquery,\n\t\t\tcategory = false,\n\t\t\tresults = false,\n\t\t} = args as AnalyticsActions[\"search\"];\n\t\twindow._paq.push([\"trackSiteSearch\", query, category, results]);\n\t} else if (action === \"matomo\") {\n\t\twindow._paq.push(args as AnalyticsActions[\"matomo\"]);\n\t}\n}\n\nfunction renderBanner() {\n\tconst hasSeenBanner =\n\t\tdocument.getElementById(BANNER) || window.localStorage.getItem(BANNER);\n\n\tif (hasSeenBanner) return;\n\n\tdocument.body.insertAdjacentHTML(\n\t\t\"afterbegin\",\n\t\t`<dialog id=\"${BANNER}\" data-analytics=\"ignore\"><style>\n\t\t\t\t#${BANNER}[open] { box-sizing: border-box; display: flex; align-items: center; background: #116e6b; border-radius: .5em; border: 0; box-shadow: 0 .25em .5em rgba(0,0,0,.3); color: #fff; font-size: .875em; inset: auto auto 1em 1em; max-width: calc(100vw - 2em); outline: 0; padding: .5em; position: fixed; z-index: 99999 }\n\t\t\t\t#${BANNER} button { all: unset; box-sizing: border-box; cursor: pointer; display: flex; width: 1.5em; height: 1.5em; font: 300 1.5em/1.35 sans-serif; border-radius: .25em; place-content: center; transition: .2s; transition-property: background, scale }\n\t\t\t\t#${BANNER} button:focus-visible { outline: 2px solid }\n\t\t\t\t#${BANNER} button:hover { background: #0a4e4f }\n\t\t\t\t#${BANNER} button:active { background: #054449; scale: .9 }\n\t\t\t\t#${BANNER} p { margin: 0 .25em }\n\t\t\t</style>\n\t\t\t<p>Vi bruker <a href=\"${BANNER_URL}\" target=\"_blank\">informasjonskapsler</a> for å forbedre brukeropplevelsen.</p>\n\t\t\t<form method=\"dialog\" data-analytics=\"ignore\"><button type=\"submit\" aria-label=\"OK\">×</button></form>\n\t\t</dialog>`,\n\t);\n\tconst banner = document.getElementById(BANNER) as HTMLDialogElement;\n\tconst onClose = () => window.localStorage.setItem(BANNER, \"seen\");\n\tbanner.addEventListener(\"close\", onClose, { once: true });\n\tbanner.show();\n}\n\nfunction handleTrack(event: Event) {\n\tif (window._mtdsTracking?.enabled) setTimeout(processTrack, 0, event); // Let other events process first\n}\n\nfunction processTrack({ type, target }: Event) {\n\tconst el = type === \"click\" ? (target as Element)?.closest?.(CLICKS) : target;\n\tif (!(el instanceof Element) || el.closest('[data-analytics=\"ignore\"]'))\n\t\treturn;\n\n\tlet action = \"click\";\n\tlet category = \"Button\";\n\tlet name = label(el) || heading(el) || attr(el, \"data-tooltip\") || \"\";\n\n\tif (type === \"submit\") {\n\t\tcategory = \"Form\";\n\t\taction = \"submit\";\n\t\tname = name || document.title;\n\t} else if (type === \"toggle\") {\n\t\tif (!el.matches(\"dialog:modal\")) return; // Skip non-modal dialogs\n\t\tcategory = \"Dialog\";\n\t\taction = \"open\";\n\t} else if (type === \"change\") {\n\t\tconst type = attr(el, \"type\");\n\t\tconst group =\n\t\t\ttype === \"checkbox\" || type === \"radio\" ? el.closest(\"fieldset\") : null;\n\n\t\tcategory = el.closest(CSS_CHIP) ? \"Chip\" : \"Form\";\n\t\taction = \"change\";\n\t\tname =\n\t\t\tlabel(group || el) ||\n\t\t\ttext(group?.querySelector(\"legend\")) ||\n\t\t\ttext((el as HTMLInputElement)?.labels?.[0]);\n\t} else if (attr(el, \"role\") === \"tab\") {\n\t\tcategory = \"Tab\";\n\t\taction = \"navigate\";\n\t} else if (attr(el, \"popovertarget\")) {\n\t\tif (!popover(el)?.matches(\":popover-open\")) return; // Skip if not open\n\t\tcategory = el.closest(CSS_HELPTEXT) ? \"HelpText\" : \"Popover\";\n\t\taction = \"open\";\n\t} else if (el.nodeName.endsWith(\"SUMMARY\")) {\n\t\tif (!(el.parentElement as HTMLDetailsElement).open) return; // Skip if not open\n\t\tcategory = \"Details\";\n\t\taction = \"open\";\n\t} else if (attr(el, \"data-command\") === \"toggle-app-expanded\") {\n\t\tconst open = style(el, \"--mtds-tooltip-position\") === \"none\";\n\t\tcategory = \"Sidebar\";\n\t\taction = open ? \"expand\" : \"minimize\";\n\t\tname = (open && attr(el, \"data-tooltip\")) || text(el);\n\t} else if (el.closest(CSS_BREADCRUMBS)) {\n\t\tcategory = \"Breadcrumbs\";\n\t\taction = \"navigate\";\n\t} else if (el.closest(CSS_PAGINATION)) {\n\t\tcategory = \"Pagintation\";\n\t\taction = \"navigate\";\n\t} else if (el.closest(CSS_CARD)) {\n\t\tcategory = \"Card\";\n\t\taction = el instanceof HTMLAnchorElement ? \"navigate\" : \"click\";\n\t} else if (el.closest(CSS_CHIP)) {\n\t\tcategory = \"Chip\";\n\t\taction = el.hasAttribute(\"data-removable\") ? \"remove\" : \"click\";\n\t} else if (el.closest(\"th[aria-sort]\")) {\n\t\tcategory = \"Table\";\n\t\taction = \"sort\";\n\t} else if (el instanceof HTMLAnchorElement) {\n\t\tcategory = \"Link\";\n\t\taction = el.protocol === \"mailto:\" ? \"email\" : \"navigate\";\n\t\tif (el.hasAttribute(\"download\")) action = \"download\";\n\t\telse if (el.hash && el.href.startsWith(location.href.split(\"#\")[0]))\n\t\t\taction = \"anchor\"; // Only track as anchor if same page\n\t} else if (el.hasAttribute(\"aria-expanded\")) {\n\t\tif (attr(el, \"aria-expanded\") !== \"true\") return; // Skip if not open\n\t\tcategory = \"Expand\";\n\t\taction = \"open\";\n\t}\n\n\t// Respect attributes and send\n\tanalytics(\"event\", {\n\t\tcategory: attr(el, \"data-analytics-category\") ?? category,\n\t\taction: attr(el, \"data-analytics-action\") ?? action,\n\t\tname: attr(el, \"data-analytics-name\") ?? name,\n\t});\n}\n\n// Utilities\nconst text = (el?: Element | null) => el?.textContent?.trim() || \"\";\nconst label = (el?: Element | null) => (el && attr(el, \"aria-label\")) || \"\";\nconst popover = (el: Element) =>\n\tdocument.getElementById(attr(el, \"popovertarget\") || \"\");\nconst style = (el: Element, key: string) =>\n\twindow.getComputedStyle(el).getPropertyValue(key)?.trim();\nconst heading = (el: Element) => {\n\tconst body = text(el);\n\tconst head = text(el.querySelector(\"h1,h2,h3,h4,h5,h6\")); // Note: head might be empty string ''\n\treturn (body.startsWith(head) && head) || body.slice(0, 100).trim(); // Limit to 100 characters\n};\n\nonLoaded(() => on(document, EVENTS, handleTrack, QUICK_EVENT));\n"],"names":["CSS_BREADCRUMBS","styles","CSS_CARD","CSS_CHIP","CSS_HELPTEXT","CSS_PAGINATION","CLICKS","EVENTS","MATOMO","BANNER","BANNER_URL","analytics","action","args","IS_BROWSER","consent","enabled","matomoId","matomoTagManagerId","renderBanner","src","tag","url","title","category","name","value","event","v","query","results","banner","onClose","handleTrack","processTrack","type","target","el","label","heading","attr","group","text","popover","open","style","key","body","head","onLoaded","on","QUICK_EVENT"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"analytics.js","sources":["../../designsystem/analytics/analytics.ts"],"sourcesContent":["import styles from \"../styles.module.css\";\nimport { attr, isBrowser, on, onHotReload, QUICK_EVENT, tag } from \"../utils\";\n\n/*\n * IMPORTANT: [data-command=\"toggle-app-expanded\"] is deprecated but kept for backward compatibility.\n * Please use [command=\"show-modal\"] instead.\n */\nconst CSS_APP_TOGGLE = `[data-command=\"toggle-app-expanded\"],.${styles.app.split(\" \")[0]} > [command=\"show-modal\"]`;\nconst CSS_BREADCRUMBS = `.${styles.breadcrumbs.split(\" \")[0]}`;\nconst CSS_CARD = `.${styles.card.split(\" \")[0]}`;\nconst CSS_CHIP = `.${styles.chip.split(\" \")[0]}`;\nconst CSS_HELPTEXT = `.${styles.helptext.split(\" \")[0]}`;\nconst CSS_PAGINATION = `.${styles.pagination.split(\" \")[0]}`;\nconst CLICKS = `summary,u-summary,a,button,[role=\"tab\"],[role=\"button\"]`;\nconst MATOMO = \"mattilsynet.matomo.cloud\";\nconst MATOMO_STRINGS = [\"setCustomUrl\", \"setDocumentTitle\", \"setReferrerUrl\"];\nconst BANNER = \"mtds-analytics-banner\"; // Dialog to show Matomo script loading\nconst BANNER_URL =\n\t\"https://www.mattilsynet.no/om-mattilsynet/personvernerklaering/informasjonskapsler\";\n\ntype Matomo = (\n\t| string\n\t| number\n\t| boolean\n\t| Document\n\t| Element\n\t| ((this: Record<string, <T>() => T>) => void)\n)[];\ndeclare global {\n\tinterface Window {\n\t\t_paq?: Matomo[];\n\t\t_mtm?: Record<string, string | number>[];\n\t\t_mtdsTracking?: AnalyticsActions[\"init\"];\n\t\t_mtdsUntrack?: () => void;\n\t}\n}\n\nexport type AnalyticsActions = {\n\tinit: {\n\t\tenabled?: boolean | \"debug\";\n\t\tconsent?: \"custom\" | true;\n\t} & (\n\t\t| {\n\t\t\t\tmatomoId: number | string;\n\t\t\t\tmatomoTagManagerId?: never;\n\t\t }\n\t\t| {\n\t\t\t\tmatomoId?: number | string;\n\t\t\t\tmatomoTagManagerId: string;\n\t\t }\n\t);\n\tpageview: {\n\t\turl?: string;\n\t\ttitle?: string;\n\t};\n\tevent: {\n\t\tcategory: string;\n\t\taction: string;\n\t\tname?: string;\n\t\tvalue?: number;\n\t};\n\tsearch: {\n\t\tquery: string;\n\t\tcategory?: string;\n\t\tresults?: number;\n\t};\n\tmatomo: Matomo;\n};\n\nexport function analytics<Action extends keyof AnalyticsActions>(\n\taction: Action,\n\targs = {} as AnalyticsActions[Action],\n) {\n\tif (!isBrowser()) return;\n\tif (!window._paq) {\n\t\twindow._paq = [];\n\t\twindow._paq.push([\"HeatmapSessionRecording::disable\"]); // Disable heatmaps by default as this require cookies\n\t\twindow._paq.push([\"enableLinkTracking\"]);\n\t\twindow._paq.push([\"setTrackerUrl\", `https://${MATOMO}/matomo.php`]);\n\t}\n\tif (!window._mtm) {\n\t\twindow._mtm = window._mtm || []; // Prepare Matomo Tag Manager\n\t\twindow._mtm.push({ \"mtm.startTime\": Date.now(), event: \"mtm.Start\" });\n\t}\n\n\tif (action === \"init\") {\n\t\twindow._mtdsTracking = {\n\t\t\tenabled: window.location.hostname !== \"localhost\",\n\t\t\t...window._mtdsTracking,\n\t\t\t...args,\n\t\t} as AnalyticsActions[\"init\"];\n\t\tconst { consent, enabled, matomoId, matomoTagManagerId } =\n\t\t\twindow._mtdsTracking;\n\n\t\tif (matomoId) window._paq.push([\"setSiteId\", matomoId]);\n\t\tif (enabled) {\n\t\t\tif (consent !== \"custom\") renderBanner();\n\t\t\tconst src = matomoTagManagerId\n\t\t\t\t? `https://cdn.matomo.cloud/${MATOMO}/container_${matomoTagManagerId}.js`\n\t\t\t\t: `https://cdn.matomo.cloud/${MATOMO}/matomo.js`;\n\n\t\t\tdocument.querySelector(`script[src=\"${src}\"]`) ||\n\t\t\t\tdocument.head.append(tag(\"script\", { async: \"\", src }));\n\t\t}\n\t}\n\n\tif (window._mtdsTracking?.enabled === false) return;\n\tif (window._mtdsTracking?.enabled === \"debug\")\n\t\treturn console.info(`analytics ${action}:`, args);\n\n\tif (action === \"pageview\") {\n\t\tconst { url, title } = args as AnalyticsActions[\"pageview\"];\n\t\twindow._paq.push([\"setCustomUrl\", url || location.href]);\n\t\twindow._paq.push([\"setDocumentTitle\", title || document.title]);\n\t\twindow._paq.push([\"trackPageView\"]);\n\t} else if (action === \"event\") {\n\t\tconst { category, action, name, value } = args as AnalyticsActions[\"event\"];\n\t\tconst event = [\"trackEvent\", category, action, name, value];\n\n\t\t// We do not want to track events with hash in URL as this causes hard-to-read data,\n\t\t// so temporarily remove the hash part, and add it back after the event is pushed\n\t\tlet url = location.href;\n\t\twindow._paq.push([\n\t\t\tfunction () {\n\t\t\t\turl = this.getCurrentUrl<string>();\n\t\t\t},\n\t\t]);\n\t\twindow._paq.push([\"setCustomUrl\", url.split(\"#\")[0]]); // Skip hash part of URL\n\t\twindow._paq.push(event.filter((v) => v !== undefined)); // Push event\n\t\twindow._paq.push([\"setCustomUrl\", url]); // Reverrt to original URL with hash\n\t} else if (action === \"search\") {\n\t\tconst {\n\t\t\tquery,\n\t\t\tcategory = false,\n\t\t\tresults = false,\n\t\t} = args as AnalyticsActions[\"search\"];\n\t\twindow._paq.push([\"trackSiteSearch\", query, category, results]);\n\t} else if (action === \"matomo\") {\n\t\tconst props = args as AnalyticsActions[\"matomo\"];\n\t\tconst needStr = MATOMO_STRINGS.includes(props?.[0] as string);\n\t\tif (needStr && typeof props[1] !== \"string\") props[1] = `${props[1] ?? \"\"}`; // Matomo dies if not string\n\t\twindow._paq.push(props);\n\t}\n}\n\nfunction renderBanner() {\n\tconst hasSeenBanner =\n\t\tdocument.getElementById(BANNER) || window.localStorage.getItem(BANNER);\n\n\tif (hasSeenBanner) return;\n\n\tdocument.body.insertAdjacentHTML(\n\t\t\"afterbegin\",\n\t\t`<dialog id=\"${BANNER}\" data-analytics=\"ignore\"><style>\n\t\t\t\t#${BANNER}[open] { box-sizing: border-box; display: flex; align-items: center; background: #116e6b; border-radius: .5em; border: 0; box-shadow: 0 .25em .5em rgba(0,0,0,.3); color: #fff; font-size: .875em; inset: auto auto 1em 1em; max-width: calc(100vw - 2em); outline: 0; padding: .5em; position: fixed; z-index: 99999 }\n\t\t\t\t#${BANNER} button { all: unset; box-sizing: border-box; cursor: pointer; display: flex; width: 1.5em; height: 1.5em; font: 300 1.5em/1.35 sans-serif; border-radius: .25em; place-content: center; transition: .2s; transition-property: background, scale }\n\t\t\t\t#${BANNER} button:focus-visible { outline: 2px solid }\n\t\t\t\t#${BANNER} button:hover { background: #0a4e4f }\n\t\t\t\t#${BANNER} button:active { background: #054449; scale: .9 }\n\t\t\t\t#${BANNER} p { margin: 0 .25em }\n\t\t\t</style>\n\t\t\t<p>Vi bruker <a href=\"${BANNER_URL}\" target=\"_blank\">informasjonskapsler</a> for å forbedre brukeropplevelsen.</p>\n\t\t\t<form method=\"dialog\" data-analytics=\"ignore\"><button type=\"submit\" aria-label=\"OK\">×</button></form>\n\t\t</dialog>`,\n\t);\n\tconst banner = document.getElementById(BANNER) as HTMLDialogElement;\n\tconst onClose = () => window.localStorage.setItem(BANNER, \"seen\");\n\tbanner.addEventListener(\"close\", onClose, { once: true });\n\tbanner.show();\n}\n\nfunction handleAnalyticsTrack(event: Event) {\n\tif (window._mtdsTracking?.enabled) setTimeout(processTrack, 0, event); // Let other events process first\n}\n\nfunction processTrack({ type, target }: Event) {\n\tconst el = type === \"click\" ? (target as Element)?.closest?.(CLICKS) : target;\n\tif (!(el instanceof Element) || el.closest('[data-analytics=\"ignore\"]'))\n\t\treturn;\n\n\tlet action = \"click\";\n\tlet category = \"Button\";\n\tlet name = label(el) || heading(el) || attr(el, \"data-tooltip\") || \"\";\n\n\tif (type === \"submit\") {\n\t\tcategory = \"Form\";\n\t\taction = \"submit\";\n\t\tname = name || document.title;\n\t} else if (type === \"toggle\") {\n\t\tif (!el.matches(\"dialog:modal\")) return; // Skip non-modal dialogs\n\t\tcategory = \"Dialog\";\n\t\taction = \"open\";\n\t} else if (type === \"change\") {\n\t\tconst type = attr(el, \"type\");\n\t\tconst group =\n\t\t\ttype === \"checkbox\" || type === \"radio\" ? el.closest(\"fieldset\") : null;\n\n\t\tcategory = el.closest(CSS_CHIP) ? \"Chip\" : \"Form\";\n\t\taction = \"change\";\n\t\tname =\n\t\t\tlabel(group || el) ||\n\t\t\ttext(group?.querySelector(\"legend\")) ||\n\t\t\ttext((el as HTMLInputElement)?.labels?.[0]);\n\t} else if (attr(el, \"role\") === \"tab\") {\n\t\tcategory = \"Tab\";\n\t\taction = \"navigate\";\n\t} else if (attr(el, \"popovertarget\")) {\n\t\tif (!popover(el)?.matches(\":popover-open\")) return; // Skip if not open\n\t\tcategory = el.closest(CSS_HELPTEXT) ? \"HelpText\" : \"Popover\";\n\t\taction = \"open\";\n\t} else if (el.nodeName.endsWith(\"SUMMARY\")) {\n\t\tif (!(el.parentElement as HTMLDetailsElement).open) return; // Skip if not open\n\t\tcategory = \"Details\";\n\t\taction = \"open\";\n\t} else if (el.matches(CSS_APP_TOGGLE)) {\n\t\tconst open = style(el, \"--mtds-tooltip-position\") === \"none\";\n\t\tcategory = \"Sidebar\";\n\t\taction = open ? \"expand\" : \"minimize\";\n\t\tname = (open && attr(el, \"data-tooltip\")) || text(el);\n\t} else if (el.closest(CSS_BREADCRUMBS)) {\n\t\tcategory = \"Breadcrumbs\";\n\t\taction = \"navigate\";\n\t} else if (el.closest(CSS_PAGINATION)) {\n\t\tcategory = \"Pagination\";\n\t\taction = \"navigate\";\n\t} else if (el.closest(CSS_CARD)) {\n\t\tcategory = \"Card\";\n\t\taction = el instanceof HTMLAnchorElement ? \"navigate\" : \"click\";\n\t} else if (el.closest(CSS_CHIP)) {\n\t\tcategory = \"Chip\";\n\t\taction = el.hasAttribute(\"data-removable\") ? \"remove\" : \"click\";\n\t} else if (el.closest(\"th[aria-sort]\")) {\n\t\tcategory = \"Table\";\n\t\taction = \"sort\";\n\t} else if (el instanceof HTMLAnchorElement) {\n\t\tcategory = \"Link\";\n\t\taction = el.protocol === \"mailto:\" ? \"email\" : \"navigate\";\n\t\tif (el.hasAttribute(\"download\")) action = \"download\";\n\t\telse if (el.hash && el.href.startsWith(location.href.split(\"#\")[0]))\n\t\t\taction = \"anchor\"; // Only track as anchor if same page\n\t} else if (el.hasAttribute(\"aria-expanded\")) {\n\t\tif (attr(el, \"aria-expanded\") !== \"true\") return; // Skip if not open\n\t\tcategory = \"Expand\";\n\t\taction = \"open\";\n\t} else if (el.nodeName.startsWith(\"MTDS-ATLAS-\")) {\n\t\tcategory = \"Map Marker\";\n\t\taction = \"open\";\n\t}\n\n\t// Respect attributes and send\n\tanalytics(\"event\", {\n\t\tcategory: attr(el, \"data-analytics-category\") ?? category,\n\t\taction: attr(el, \"data-analytics-action\") ?? action,\n\t\tname: attr(el, \"data-analytics-name\") ?? name,\n\t});\n}\n\n// Utilities\nconst text = (el?: Element | null) => el?.textContent?.trim() || \"\";\nconst label = (el?: Element | null) => (el && attr(el, \"aria-label\")) || \"\";\nconst popover = (el: Element) =>\n\tdocument.getElementById(attr(el, \"popovertarget\") || \"\");\nconst style = (el: Element, key: string) =>\n\twindow.getComputedStyle(el).getPropertyValue(key)?.trim();\nconst heading = (el: Element) => {\n\tconst body = text(el);\n\tconst head = text(el.querySelector(\"h1,h2,h3,h4,h5,h6\")); // Note: head might be empty string ''\n\treturn (body.startsWith(head) && head) || body.slice(0, 100).trim(); // Limit to 100 characters\n};\n\nonHotReload(\"analytics\", () => [\n\ton(document, \"click toggle submit change\", handleAnalyticsTrack, QUICK_EVENT),\n]);\n"],"names":["CSS_APP_TOGGLE","styles","CSS_BREADCRUMBS","CSS_CARD","CSS_CHIP","CSS_HELPTEXT","CSS_PAGINATION","CLICKS","MATOMO","MATOMO_STRINGS","BANNER","BANNER_URL","analytics","action","args","isBrowser","consent","enabled","matomoId","matomoTagManagerId","renderBanner","src","tag","url","title","category","name","value","event","v","query","results","props","banner","onClose","handleAnalyticsTrack","processTrack","type","target","el","label","heading","attr","group","text","popover","open","style","key","body","head","onHotReload","on","QUICK_EVENT"],"mappings":";;AAOA,MAAMA,IAAiB,yCAAyCC,EAAO,IAAI,MAAM,GAAG,EAAE,CAAC,CAAC,6BAClFC,IAAkB,IAAID,EAAO,YAAY,MAAM,GAAG,EAAE,CAAC,CAAC,IACtDE,IAAW,IAAIF,EAAO,KAAK,MAAM,GAAG,EAAE,CAAC,CAAC,IACxCG,IAAW,IAAIH,EAAO,KAAK,MAAM,GAAG,EAAE,CAAC,CAAC,IACxCI,IAAe,IAAIJ,EAAO,SAAS,MAAM,GAAG,EAAE,CAAC,CAAC,IAChDK,IAAiB,IAAIL,EAAO,WAAW,MAAM,GAAG,EAAE,CAAC,CAAC,IACpDM,IAAS,2DACTC,IAAS,4BACTC,IAAiB,CAAC,gBAAgB,oBAAoB,gBAAgB,GACtEC,IAAS,yBACTC,IACL;AAmDM,SAASC,EACfC,GACAC,IAAO,IACN;AACD,MAAKC,KAYL;AAAA,QAXK,OAAO,SACX,OAAO,OAAO,CAAA,GACd,OAAO,KAAK,KAAK,CAAC,kCAAkC,CAAC,GACrD,OAAO,KAAK,KAAK,CAAC,oBAAoB,CAAC,GACvC,OAAO,KAAK,KAAK,CAAC,iBAAiB,WAAWP,CAAM,aAAa,CAAC,IAE9D,OAAO,SACX,OAAO,OAAO,OAAO,QAAQ,CAAA,GAC7B,OAAO,KAAK,KAAK,EAAE,iBAAiB,KAAK,IAAA,GAAO,OAAO,aAAa,IAGjEK,MAAW,QAAQ;AACtB,aAAO,gBAAgB;AAAA,QACtB,SAAS,OAAO,SAAS,aAAa;AAAA,QACtC,GAAG,OAAO;AAAA,QACV,GAAGC;AAAA,MAAA;AAEJ,YAAM,EAAE,SAAAE,GAAS,SAAAC,GAAS,UAAAC,GAAU,oBAAAC,EAAA,IACnC,OAAO;AAGR,UADID,KAAU,OAAO,KAAK,KAAK,CAAC,aAAaA,CAAQ,CAAC,GAClDD,GAAS;AACZ,QAAID,MAAY,YAAUI,EAAA;AAC1B,cAAMC,IAAMF,IACT,4BAA4BX,CAAM,cAAcW,CAAkB,QAClE,4BAA4BX,CAAM;AAErC,iBAAS,cAAc,eAAea,CAAG,IAAI,KAC5C,SAAS,KAAK,OAAOC,EAAI,UAAU,EAAE,OAAO,IAAI,KAAAD,EAAA,CAAK,CAAC;AAAA,MACxD;AAAA,IACD;AAEA,QAAI,OAAO,eAAe,YAAY,IACtC;AAAA,UAAI,OAAO,eAAe,YAAY;AACrC,eAAO,QAAQ,KAAK,aAAaR,CAAM,KAAKC,CAAI;AAEjD,UAAID,MAAW,YAAY;AAC1B,cAAM,EAAE,KAAAU,GAAK,OAAAC,EAAA,IAAUV;AACvB,eAAO,KAAK,KAAK,CAAC,gBAAgBS,KAAO,SAAS,IAAI,CAAC,GACvD,OAAO,KAAK,KAAK,CAAC,oBAAoBC,KAAS,SAAS,KAAK,CAAC,GAC9D,OAAO,KAAK,KAAK,CAAC,eAAe,CAAC;AAAA,MACnC,WAAWX,MAAW,SAAS;AAC9B,cAAM,EAAE,UAAAY,GAAU,QAAAZ,GAAQ,MAAAa,GAAM,OAAAC,MAAUb,GACpCc,IAAQ,CAAC,cAAcH,GAAUZ,GAAQa,GAAMC,CAAK;AAI1D,YAAIJ,IAAM,SAAS;AACnB,eAAO,KAAK,KAAK;AAAA,UAChB,WAAY;AACX,YAAAA,IAAM,KAAK,cAAA;AAAA,UACZ;AAAA,QAAA,CACA,GACD,OAAO,KAAK,KAAK,CAAC,gBAAgBA,EAAI,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GACpD,OAAO,KAAK,KAAKK,EAAM,OAAO,CAACC,MAAMA,MAAM,MAAS,CAAC,GACrD,OAAO,KAAK,KAAK,CAAC,gBAAgBN,CAAG,CAAC;AAAA,MACvC,WAAWV,MAAW,UAAU;AAC/B,cAAM;AAAA,UACL,OAAAiB;AAAA,UACA,UAAAL,IAAW;AAAA,UACX,SAAAM,IAAU;AAAA,QAAA,IACPjB;AACJ,eAAO,KAAK,KAAK,CAAC,mBAAmBgB,GAAOL,GAAUM,CAAO,CAAC;AAAA,MAC/D,WAAWlB,MAAW,UAAU;AAC/B,cAAMmB,IAAQlB;AAEd,QADgBL,EAAe,SAASuB,IAAQ,CAAC,CAAW,KAC7C,OAAOA,EAAM,CAAC,KAAM,aAAUA,EAAM,CAAC,IAAI,GAAGA,EAAM,CAAC,KAAK,EAAE,KACzE,OAAO,KAAK,KAAKA,CAAK;AAAA,MACvB;AAAA;AAAA;AACD;AAEA,SAASZ,IAAe;AAIvB,MAFC,SAAS,eAAeV,CAAM,KAAK,OAAO,aAAa,QAAQA,CAAM,EAEnD;AAEnB,WAAS,KAAK;AAAA,IACb;AAAA,IACA,eAAeA,CAAM;AAAA,OAChBA,CAAM;AAAA,OACNA,CAAM;AAAA,OACNA,CAAM;AAAA,OACNA,CAAM;AAAA,OACNA,CAAM;AAAA,OACNA,CAAM;AAAA;AAAA,2BAEcC,CAAU;AAAA;AAAA;AAAA,EAAA;AAIpC,QAAMsB,IAAS,SAAS,eAAevB,CAAM,GACvCwB,IAAU,MAAM,OAAO,aAAa,QAAQxB,GAAQ,MAAM;AAChE,EAAAuB,EAAO,iBAAiB,SAASC,GAAS,EAAE,MAAM,IAAM,GACxDD,EAAO,KAAA;AACR;AAEA,SAASE,EAAqBP,GAAc;AAC3C,EAAI,OAAO,eAAe,WAAS,WAAWQ,GAAc,GAAGR,CAAK;AACrE;AAEA,SAASQ,EAAa,EAAE,MAAAC,GAAM,QAAAC,KAAiB;AAC9C,QAAMC,IAAKF,MAAS,UAAWC,GAAoB,UAAU/B,CAAM,IAAI+B;AACvE,MAAI,EAAEC,aAAc,YAAYA,EAAG,QAAQ,2BAA2B;AACrE;AAED,MAAI1B,IAAS,SACTY,IAAW,UACXC,IAAOc,EAAMD,CAAE,KAAKE,EAAQF,CAAE,KAAKG,EAAKH,GAAI,cAAc,KAAK;AAEnE,MAAIF,MAAS;AACZ,IAAAZ,IAAW,QACXZ,IAAS,UACTa,IAAOA,KAAQ,SAAS;AAAA,WACdW,MAAS,UAAU;AAC7B,QAAI,CAACE,EAAG,QAAQ,cAAc,EAAG;AACjC,IAAAd,IAAW,UACXZ,IAAS;AAAA,EACV,WAAWwB,MAAS,UAAU;AAC7B,UAAMA,IAAOK,EAAKH,GAAI,MAAM,GACtBI,IACLN,MAAS,cAAcA,MAAS,UAAUE,EAAG,QAAQ,UAAU,IAAI;AAEpE,IAAAd,IAAWc,EAAG,QAAQnC,CAAQ,IAAI,SAAS,QAC3CS,IAAS,UACTa,IACCc,EAAMG,KAASJ,CAAE,KACjBK,EAAKD,GAAO,cAAc,QAAQ,CAAC,KACnCC,EAAML,GAAyB,SAAS,CAAC,CAAC;AAAA,EAC5C,WAAWG,EAAKH,GAAI,MAAM,MAAM;AAC/B,IAAAd,IAAW,OACXZ,IAAS;AAAA,WACC6B,EAAKH,GAAI,eAAe,GAAG;AACrC,QAAI,CAACM,EAAQN,CAAE,GAAG,QAAQ,eAAe,EAAG;AAC5C,IAAAd,IAAWc,EAAG,QAAQlC,CAAY,IAAI,aAAa,WACnDQ,IAAS;AAAA,EACV,WAAW0B,EAAG,SAAS,SAAS,SAAS,GAAG;AAC3C,QAAI,CAAEA,EAAG,cAAqC,KAAM;AACpD,IAAAd,IAAW,WACXZ,IAAS;AAAA,EACV,WAAW0B,EAAG,QAAQvC,CAAc,GAAG;AACtC,UAAM8C,IAAOC,EAAMR,GAAI,yBAAyB,MAAM;AACtD,IAAAd,IAAW,WACXZ,IAASiC,IAAO,WAAW,YAC3BpB,IAAQoB,KAAQJ,EAAKH,GAAI,cAAc,KAAMK,EAAKL,CAAE;AAAA,EACrD,WAAWA,EAAG,QAAQrC,CAAe;AACpC,IAAAuB,IAAW,eACXZ,IAAS;AAAA,WACC0B,EAAG,QAAQjC,CAAc;AACnC,IAAAmB,IAAW,cACXZ,IAAS;AAAA,WACC0B,EAAG,QAAQpC,CAAQ;AAC7B,IAAAsB,IAAW,QACXZ,IAAS0B,aAAc,oBAAoB,aAAa;AAAA,WAC9CA,EAAG,QAAQnC,CAAQ;AAC7B,IAAAqB,IAAW,QACXZ,IAAS0B,EAAG,aAAa,gBAAgB,IAAI,WAAW;AAAA,WAC9CA,EAAG,QAAQ,eAAe;AACpC,IAAAd,IAAW,SACXZ,IAAS;AAAA,WACC0B,aAAc;AACxB,IAAAd,IAAW,QACXZ,IAAS0B,EAAG,aAAa,YAAY,UAAU,YAC3CA,EAAG,aAAa,UAAU,IAAG1B,IAAS,aACjC0B,EAAG,QAAQA,EAAG,KAAK,WAAW,SAAS,KAAK,MAAM,GAAG,EAAE,CAAC,CAAC,MACjE1B,IAAS;AAAA,WACA0B,EAAG,aAAa,eAAe,GAAG;AAC5C,QAAIG,EAAKH,GAAI,eAAe,MAAM,OAAQ;AAC1C,IAAAd,IAAW,UACXZ,IAAS;AAAA,EACV,MAAA,CAAW0B,EAAG,SAAS,WAAW,aAAa,MAC9Cd,IAAW,cACXZ,IAAS;AAIV,EAAAD,EAAU,SAAS;AAAA,IAClB,UAAU8B,EAAKH,GAAI,yBAAyB,KAAKd;AAAA,IACjD,QAAQiB,EAAKH,GAAI,uBAAuB,KAAK1B;AAAA,IAC7C,MAAM6B,EAAKH,GAAI,qBAAqB,KAAKb;AAAA,EAAA,CACzC;AACF;AAGA,MAAMkB,IAAO,CAACL,MAAwBA,GAAI,aAAa,UAAU,IAC3DC,IAAQ,CAACD,MAAyBA,KAAMG,EAAKH,GAAI,YAAY,KAAM,IACnEM,IAAU,CAACN,MAChB,SAAS,eAAeG,EAAKH,GAAI,eAAe,KAAK,EAAE,GAClDQ,IAAQ,CAACR,GAAaS,MAC3B,OAAO,iBAAiBT,CAAE,EAAE,iBAAiBS,CAAG,GAAG,KAAA,GAC9CP,IAAU,CAACF,MAAgB;AAChC,QAAMU,IAAOL,EAAKL,CAAE,GACdW,IAAON,EAAKL,EAAG,cAAc,mBAAmB,CAAC;AACvD,SAAQU,EAAK,WAAWC,CAAI,KAAKA,KAASD,EAAK,MAAM,GAAG,GAAG,EAAE,KAAA;AAC9D;AAEAE,EAAY,aAAa,MAAM;AAAA,EAC9BC,EAAG,UAAU,8BAA8BjB,GAAsBkB,CAAW;AAC7E,CAAC;"}
|
package/mtds/app/app-observer.js
CHANGED
|
@@ -1,38 +1,39 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import "./app-
|
|
4
|
-
const
|
|
1
|
+
import P from "../styles.module.css.js";
|
|
2
|
+
import { getByCSSModule as _, onHotReload as h, on as r, QUICK_EVENT as m, debounce as E } from "../utils.js";
|
|
3
|
+
import "./app-toggle.js";
|
|
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) => (
|
|
7
7
|
// @ts-expect-error window.mtdsAppToggle comes from app-toggle.js
|
|
8
|
-
|
|
8
|
+
w(() => window.mtdsToggleAppExpanded?.(t))
|
|
9
9
|
);
|
|
10
|
-
function
|
|
11
|
-
const f =
|
|
12
|
-
if (f?.closest("dialog") && f?.closest(
|
|
13
|
-
return
|
|
14
|
-
if (
|
|
10
|
+
function H(t) {
|
|
11
|
+
const { target: o, defaultPrevented: l } = t, f = o?.closest?.("a");
|
|
12
|
+
if (f?.closest("dialog") && f?.closest(u))
|
|
13
|
+
return C();
|
|
14
|
+
if (l || !(o instanceof HTMLButtonElement) || !o.matches(I))
|
|
15
15
|
return;
|
|
16
|
-
getComputedStyle(
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
const T = getComputedStyle(o).position === "sticky";
|
|
17
|
+
t.preventDefault(), T ? x() : w(() => {
|
|
18
|
+
const g = document.querySelector(u);
|
|
19
|
+
g?.setAttribute("closedby", "any"), g?.showModal();
|
|
19
20
|
});
|
|
20
21
|
}
|
|
21
|
-
function
|
|
22
|
-
document.querySelector(
|
|
22
|
+
function C() {
|
|
23
|
+
document.querySelector(u)?.close();
|
|
23
24
|
}
|
|
24
|
-
let
|
|
25
|
-
function
|
|
26
|
-
|
|
25
|
+
let p = 0, n, e = 0, c = 0, i = 0, d = !1, a = 0, s = 0;
|
|
26
|
+
function k() {
|
|
27
|
+
if (!S?.length) return;
|
|
28
|
+
const t = S[0], o = window.scrollY, l = o < s;
|
|
29
|
+
s = o, l !== n && (p = (t.parentElement?.getBoundingClientRect().top || 0) + s, n = l, c = t.offsetHeight, i = t.getBoundingClientRect().top + s, d = t.offsetHeight <= window.innerHeight, a = window.innerHeight), !(e === -1 && d) && (e !== -1 && (d || n && s <= i) ? (t.style.setProperty("--pos", "sticky"), t.style.setProperty("--top", "0px"), e = -1) : e === -1 && !n ? (t.style.setProperty("--pos", "relative"), t.style.setProperty("--top", `${Math.max(0, s - p)}px`), e = 0) : e !== 1 && !n && s + a >= i + c ? (t.style.setProperty("--pos", "sticky"), t.style.setProperty("--top", `${a - c}px`), e = 1) : e === 1 && n && (t.style.setProperty("--pos", "relative"), t.style.setProperty("--top", `${i - p}px`), e = 0));
|
|
27
30
|
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
P(document.documentElement, h, A), r(document, "click", k, p), r(window, "resize", E(T, 100), p), r(window, "scroll", w, p);
|
|
35
|
-
});
|
|
31
|
+
h("app", () => [
|
|
32
|
+
r(document, "click", H, !0),
|
|
33
|
+
// Use capture to run before other click handlers
|
|
34
|
+
r(window, "resize", E(C, 100), m),
|
|
35
|
+
r(window, "scroll", k, m)
|
|
36
|
+
]);
|
|
36
37
|
export {
|
|
37
38
|
x as toggleAppExpanded
|
|
38
39
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-observer.js","sources":["../../designsystem/app/app-observer.ts"],"sourcesContent":["import styles from \"../styles.module.css\";\nimport {
|
|
1
|
+
{"version":3,"file":"app-observer.js","sources":["../../designsystem/app/app-observer.ts"],"sourcesContent":["import styles from \"../styles.module.css\";\nimport {\n\tdebounce,\n\tgetByCSSModule,\n\ton,\n\tonHotReload,\n\tQUICK_EVENT,\n} from \"../utils\";\nimport \"./app-toggle\";\n\nconst CSS_APP = styles.app.split(\" \")[0];\nconst CSS_TOGGLE = `[data-command=\"toggle-app-expanded\"],.${CSS_APP} > [command=\"show-modal\"]`;\nconst CSS_SIDEBAR = `.${CSS_APP} > dialog,.${CSS_APP} dialog ~ main`;\nconst STICKIES = getByCSSModule(\"sticky\");\n\nconst useTransition = (callback: () => void) => {\n\tif (!document.startViewTransition) callback();\n\telse document.startViewTransition(callback);\n};\n\nexport const toggleAppExpanded = (force?: boolean) =>\n\t// @ts-expect-error window.mtdsAppToggle comes from app-toggle.js\n\tuseTransition(() => window.mtdsToggleAppExpanded?.(force));\n\nfunction handleAppToggleClick(event: Event) {\n\tconst { target: el, defaultPrevented: stop } = event;\n\tconst link = (el as Element)?.closest?.(\"a\");\n\tif (link?.closest(\"dialog\") && link?.closest(CSS_SIDEBAR))\n\t\treturn closeSidebar(); // Close sidebar if link is clicked inside sidebar\n\n\tif (stop || !(el instanceof HTMLButtonElement) || !el.matches(CSS_TOGGLE))\n\t\treturn;\n\tconst isDesktop = getComputedStyle(el).position === \"sticky\";\n\tevent.preventDefault(); // Prevent default Invoker Command action so we can animate\n\n\tif (isDesktop) toggleAppExpanded();\n\telse\n\t\tuseTransition(() => {\n\t\t\tconst sidebar = document.querySelector<HTMLDialogElement>(CSS_SIDEBAR);\n\t\t\tsidebar?.setAttribute(\"closedby\", \"any\"); // Allow closing by clicking outside\n\t\t\tsidebar?.showModal();\n\t\t});\n}\n\nfunction closeSidebar() {\n\tdocument.querySelector<HTMLDialogElement>(CSS_SIDEBAR)?.close();\n}\n\n// Scroll state\nlet MIN_Y = 0; // Offset to avoid scroll jump when sticky is set to relative\nlet SCROLL_UP: boolean;\nlet STICK = 0; // -1 = stick top, 0 = relative, 1 = stick bottom\nlet STICK_H = 0;\nlet STICK_Y = 0;\nlet STUCK = false; // Used to figure if nav is larger than viewport\nlet WIN_H = 0;\nlet WIN_Y = 0;\n\nfunction handleAppScroll() {\n\tif (!STICKIES?.length) return;\n\tconst el = STICKIES[0] as HTMLElement;\n\tconst NEXT_Y = window.scrollY;\n\tconst NEXT_UP = NEXT_Y < WIN_Y;\n\tWIN_Y = NEXT_Y;\n\n\t// Only calculate if scroll direction has changed\n\tif (NEXT_UP !== SCROLL_UP) {\n\t\tMIN_Y = (el.parentElement?.getBoundingClientRect().top || 0) + WIN_Y;\n\t\tSCROLL_UP = NEXT_UP;\n\t\tSTICK_H = el.offsetHeight;\n\t\tSTICK_Y = el.getBoundingClientRect().top + WIN_Y;\n\t\tSTUCK = el.offsetHeight <= window.innerHeight;\n\t\tWIN_H = window.innerHeight;\n\t}\n\n\tif (STICK === -1 && STUCK) return; // Allways sticky when sidebar is smaller than viewport\n\tif (STICK !== -1 && (STUCK || (SCROLL_UP && WIN_Y <= STICK_Y))) {\n\t\tel.style.setProperty(\"--pos\", \"sticky\");\n\t\tel.style.setProperty(\"--top\", \"0px\");\n\t\tSTICK = -1; // Not sticking to top and sidebar is smaller than viewport or scrolling up\n\t} else if (STICK === -1 && !SCROLL_UP) {\n\t\tel.style.setProperty(\"--pos\", \"relative\");\n\t\tel.style.setProperty(\"--top\", `${Math.max(0, WIN_Y - MIN_Y)}px`);\n\t\tSTICK = 0; // Sticking to top and scrolling down\n\t} else if (STICK !== 1 && !SCROLL_UP && WIN_Y + WIN_H >= STICK_Y + STICK_H) {\n\t\tel.style.setProperty(\"--pos\", \"sticky\");\n\t\tel.style.setProperty(\"--top\", `${WIN_H - STICK_H}px`);\n\t\tSTICK = 1; // Not sticking to bottom and scrolling down\n\t} else if (STICK === 1 && SCROLL_UP) {\n\t\tel.style.setProperty(\"--pos\", \"relative\");\n\t\tel.style.setProperty(\"--top\", `${STICK_Y - MIN_Y}px`);\n\t\tSTICK = 0; // Sticking to bottom and scrolling up\n\t}\n}\n\nonHotReload(\"app\", () => [\n\ton(document, \"click\", handleAppToggleClick, true), // Use capture to run before other click handlers\n\ton(window, \"resize\", debounce(closeSidebar, 100), QUICK_EVENT),\n\ton(window, \"scroll\", handleAppScroll, QUICK_EVENT),\n]);\n"],"names":["CSS_APP","styles","CSS_TOGGLE","CSS_SIDEBAR","STICKIES","getByCSSModule","useTransition","callback","toggleAppExpanded","force","handleAppToggleClick","event","el","stop","link","closeSidebar","isDesktop","sidebar","MIN_Y","SCROLL_UP","STICK","STICK_H","STICK_Y","STUCK","WIN_H","WIN_Y","handleAppScroll","NEXT_Y","NEXT_UP","onHotReload","on","debounce","QUICK_EVENT"],"mappings":";;;AAUA,MAAMA,IAAUC,EAAO,IAAI,MAAM,GAAG,EAAE,CAAC,GACjCC,IAAa,yCAAyCF,CAAO,6BAC7DG,IAAc,IAAIH,CAAO,cAAcA,CAAO,kBAC9CI,IAAWC,EAAe,QAAQ,GAElCC,IAAgB,CAACC,MAAyB;AAC/C,EAAK,SAAS,sBACT,SAAS,oBAAoBA,CAAQ,IADPA,EAAA;AAEpC,GAEaC,IAAoB,CAACC;AAAA;AAAA,EAEjCH,EAAc,MAAM,OAAO,wBAAwBG,CAAK,CAAC;AAAA;AAE1D,SAASC,EAAqBC,GAAc;AAC3C,QAAM,EAAE,QAAQC,GAAI,kBAAkBC,MAASF,GACzCG,IAAQF,GAAgB,UAAU,GAAG;AAC3C,MAAIE,GAAM,QAAQ,QAAQ,KAAKA,GAAM,QAAQX,CAAW;AACvD,WAAOY,EAAA;AAER,MAAIF,KAAQ,EAAED,aAAc,sBAAsB,CAACA,EAAG,QAAQV,CAAU;AACvE;AACD,QAAMc,IAAY,iBAAiBJ,CAAE,EAAE,aAAa;AACpD,EAAAD,EAAM,eAAA,GAEFK,IAAWR,EAAA,IAEdF,EAAc,MAAM;AACnB,UAAMW,IAAU,SAAS,cAAiCd,CAAW;AACrE,IAAAc,GAAS,aAAa,YAAY,KAAK,GACvCA,GAAS,UAAA;AAAA,EACV,CAAC;AACH;AAEA,SAASF,IAAe;AACvB,WAAS,cAAiCZ,CAAW,GAAG,MAAA;AACzD;AAGA,IAAIe,IAAQ,GACRC,GACAC,IAAQ,GACRC,IAAU,GACVC,IAAU,GACVC,IAAQ,IACRC,IAAQ,GACRC,IAAQ;AAEZ,SAASC,IAAkB;AAC1B,MAAI,CAACtB,GAAU,OAAQ;AACvB,QAAMQ,IAAKR,EAAS,CAAC,GACfuB,IAAS,OAAO,SAChBC,IAAUD,IAASF;AAazB,EAZAA,IAAQE,GAGJC,MAAYT,MACfD,KAASN,EAAG,eAAe,sBAAA,EAAwB,OAAO,KAAKa,GAC/DN,IAAYS,GACZP,IAAUT,EAAG,cACbU,IAAUV,EAAG,sBAAA,EAAwB,MAAMa,GAC3CF,IAAQX,EAAG,gBAAgB,OAAO,aAClCY,IAAQ,OAAO,cAGZ,EAAAJ,MAAU,MAAMG,OAChBH,MAAU,OAAOG,KAAUJ,KAAaM,KAASH,MACpDV,EAAG,MAAM,YAAY,SAAS,QAAQ,GACtCA,EAAG,MAAM,YAAY,SAAS,KAAK,GACnCQ,IAAQ,MACEA,MAAU,MAAM,CAACD,KAC3BP,EAAG,MAAM,YAAY,SAAS,UAAU,GACxCA,EAAG,MAAM,YAAY,SAAS,GAAG,KAAK,IAAI,GAAGa,IAAQP,CAAK,CAAC,IAAI,GAC/DE,IAAQ,KACEA,MAAU,KAAK,CAACD,KAAaM,IAAQD,KAASF,IAAUD,KAClET,EAAG,MAAM,YAAY,SAAS,QAAQ,GACtCA,EAAG,MAAM,YAAY,SAAS,GAAGY,IAAQH,CAAO,IAAI,GACpDD,IAAQ,KACEA,MAAU,KAAKD,MACzBP,EAAG,MAAM,YAAY,SAAS,UAAU,GACxCA,EAAG,MAAM,YAAY,SAAS,GAAGU,IAAUJ,CAAK,IAAI,GACpDE,IAAQ;AAEV;AAEAS,EAAY,OAAO,MAAM;AAAA,EACxBC,EAAG,UAAU,SAASpB,GAAsB,EAAI;AAAA;AAAA,EAChDoB,EAAG,QAAQ,UAAUC,EAAShB,GAAc,GAAG,GAAGiB,CAAW;AAAA,EAC7DF,EAAG,QAAQ,UAAUJ,GAAiBM,CAAW;AAClD,CAAC;"}
|
package/mtds/app/app-toggle.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-toggle.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-toggle.js","sources":["../../designsystem/app/app-toggle.js
|
|
1
|
+
{"version":3,"file":"app-toggle.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-toggle2.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-toggle2.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-toggle2.js","sources":["../../designsystem/app/app-toggle.js"],"sourcesContent":["if (
|
|
1
|
+
{"version":3,"file":"app-toggle2.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.d.ts
CHANGED
|
@@ -9,12 +9,12 @@ export type AppFooterProps = React.ComponentPropsWithoutRef<"footer">;
|
|
|
9
9
|
export type AppProps<As extends React.ElementType = "div"> = PolymorphicComponentPropWithRef<As>;
|
|
10
10
|
type AppComponent = <As extends React.ElementType = "div">(props: AppProps<As>) => JSX.Element;
|
|
11
11
|
export declare const App: AppComponent & {
|
|
12
|
-
Header:
|
|
13
|
-
Sidebar:
|
|
12
|
+
Header: import('react').ForwardRefExoticComponent<Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLElement>, HTMLElement>, "ref"> & import('react').RefAttributes<HTMLElement>>;
|
|
13
|
+
Sidebar: import('react').ForwardRefExoticComponent<Omit<import('react').DetailedHTMLProps<import('react').DialogHTMLAttributes<HTMLDialogElement>, HTMLDialogElement>, "ref"> & import('react').RefAttributes<HTMLDialogElement>>;
|
|
14
14
|
Sticky: AppComponent;
|
|
15
|
-
Toggle:
|
|
16
|
-
Main:
|
|
17
|
-
Footer:
|
|
15
|
+
Toggle: import('react').ForwardRefExoticComponent<Omit<ButtonProps<"button">, "ref"> & import('react').RefAttributes<HTMLButtonElement>>;
|
|
16
|
+
Main: import('react').ForwardRefExoticComponent<Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLElement>, HTMLElement>, "ref"> & import('react').RefAttributes<HTMLElement>>;
|
|
17
|
+
Footer: import('react').ForwardRefExoticComponent<Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLElement>, HTMLElement>, "ref"> & import('react').RefAttributes<HTMLElement>>;
|
|
18
18
|
Script: () => import("react/jsx-runtime").JSX.Element;
|
|
19
19
|
};
|
|
20
20
|
export {};
|