lintje 0.1.1 → 0.2.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/dist-elements/actions.js +1 -1
- package/dist-elements/charts.js +1 -1
- package/dist-elements/chunks/{base-rBLTcEIv.js → base-Bg-IFOPG.js} +134 -105
- package/dist-elements/chunks/{date-format-B5DPGjAw.js → date-format-mHtZyBys.js} +28 -2
- package/dist-elements/chunks/disclosure-BXTX04gM.js +4 -0
- package/dist-elements/chunks/{disclosure-CHasOudX.js → disclosure-CMXhX-Vb.js} +7 -7
- package/dist-elements/chunks/download-y528pIHP.js +230 -0
- package/dist-elements/chunks/{focus-trap-w3vCamJ6.js → focus-trap-9BnE-xWv.js} +1 -1
- package/dist-elements/chunks/{input-jQVTln7H.js → input-BtuNFSWk.js} +13 -13
- package/dist-elements/chunks/{player-Bq9YGnpt.js → player-DXOZEyEy.js} +24 -24
- package/dist-elements/chunks/{sentence-CLNJOeXz.js → sentence-BI3lwEuT.js} +3 -3
- package/dist-elements/chunks/{stagger-9hYzxhMG.js → stagger-qGD3wmhg.js} +145 -123
- package/dist-elements/core.js +1 -1
- package/dist-elements/custom-elements.json +436 -26
- package/dist-elements/feedback.js +1 -1
- package/dist-elements/guides/dashboard.md +1 -1
- package/dist-elements/guides/events.md +3 -2
- package/dist-elements/guides/loading.md +3 -3
- package/dist-elements/guides/start.md +1 -1
- package/dist-elements/inputs.js +1 -0
- package/dist-elements/layout.js +1 -1
- package/dist-elements/lintje.js +22659 -22216
- package/dist-elements/map.js +1 -1
- package/dist-elements/overlays.js +1 -1
- package/dist-elements/tag/activity-log.js +11 -11
- package/dist-elements/tag/ai-label.js +7 -7
- package/dist-elements/tag/announcement.js +19 -19
- package/dist-elements/tag/app-search.js +21 -21
- package/dist-elements/tag/audio-player.js +34 -34
- package/dist-elements/tag/badge.js +1 -1
- package/dist-elements/tag/breadcrumbs.js +11 -11
- package/dist-elements/tag/button.js +1 -1
- package/dist-elements/tag/card-list.js +1 -1
- package/dist-elements/tag/card.js +25 -25
- package/dist-elements/tag/chart.d.ts +1 -0
- package/dist-elements/tag/chart.js +1868 -0
- package/dist-elements/tag/chat-answer.js +28 -28
- package/dist-elements/tag/chat-composer.js +20 -20
- package/dist-elements/tag/chat-message.js +9 -9
- package/dist-elements/tag/chat-strip.js +16 -16
- package/dist-elements/tag/chat-suggestions.js +1 -1
- package/dist-elements/tag/chat.js +27 -27
- package/dist-elements/tag/checkbox.js +6 -6
- package/dist-elements/tag/code.js +8 -8
- package/dist-elements/tag/combobox.js +13 -13
- package/dist-elements/tag/confirm-dialog.js +6 -6
- package/dist-elements/tag/conflict-alert.js +5 -5
- package/dist-elements/tag/copy-button.js +7 -7
- package/dist-elements/tag/data-table.js +179 -179
- package/dist-elements/tag/date-input.js +34 -42
- package/dist-elements/tag/date-range.js +33 -33
- package/dist-elements/tag/description-list.js +20 -20
- package/dist-elements/tag/document-viewer.js +19 -19
- package/dist-elements/tag/drawer.js +7 -7
- package/dist-elements/tag/empty-state.js +11 -11
- package/dist-elements/tag/error-summary.js +8 -8
- package/dist-elements/tag/expander.js +7 -7
- package/dist-elements/tag/explainer.js +9 -9
- package/dist-elements/tag/field.js +4 -4
- package/dist-elements/tag/file-upload.js +20 -20
- package/dist-elements/tag/filter-bar.js +35 -35
- package/dist-elements/tag/filter-sheet.js +6 -6
- package/dist-elements/tag/filter-zone.js +21 -21
- package/dist-elements/tag/footer.js +1 -1
- package/dist-elements/tag/form-actions.js +7 -7
- package/dist-elements/tag/form-section.js +3 -3
- package/dist-elements/tag/form.js +4 -4
- package/dist-elements/tag/gallery.js +6 -6
- package/dist-elements/tag/grid-item.js +1 -1
- package/dist-elements/tag/grid.js +1 -1
- package/dist-elements/tag/hero.js +6 -6
- package/dist-elements/tag/highlight.js +6 -6
- package/dist-elements/tag/icon-button.js +1 -1
- package/dist-elements/tag/icon.js +1 -1
- package/dist-elements/tag/job-list.js +6 -6
- package/dist-elements/tag/kpi-row.js +7 -5
- package/dist-elements/tag/kpi.js +259 -69
- package/dist-elements/tag/level-meter.js +5 -5
- package/dist-elements/tag/list.js +28 -28
- package/dist-elements/tag/logo.js +9 -9
- package/dist-elements/tag/map.d.ts +1 -0
- package/dist-elements/tag/map.js +21910 -0
- package/dist-elements/tag/menu-button.js +48 -47
- package/dist-elements/tag/modal.js +9 -9
- package/dist-elements/tag/multiselect.js +18 -18
- package/dist-elements/tag/note.js +4 -4
- package/dist-elements/tag/notifications.js +24 -24
- package/dist-elements/tag/number-input.js +8 -8
- package/dist-elements/tag/page-header.js +13 -13
- package/dist-elements/tag/pagination.js +27 -27
- package/dist-elements/tag/popover.js +1 -1
- package/dist-elements/tag/progress-bar.js +1 -1
- package/dist-elements/tag/prose.js +4 -4
- package/dist-elements/tag/qr-code.js +6 -6
- package/dist-elements/tag/radio-group.js +7 -7
- package/dist-elements/tag/range.js +13 -13
- package/dist-elements/tag/recording-status.js +8 -8
- package/dist-elements/tag/repeater.js +1 -1
- package/dist-elements/tag/segmented.js +7 -7
- package/dist-elements/tag/select.js +6 -6
- package/dist-elements/tag/session-expiry.js +13 -13
- package/dist-elements/tag/shell.js +168 -168
- package/dist-elements/tag/shortcuts.js +8 -8
- package/dist-elements/tag/skeleton.js +1 -1
- package/dist-elements/tag/slot-picker.d.ts +1 -0
- package/dist-elements/tag/slot-picker.js +74 -0
- package/dist-elements/tag/sortable-list.js +11 -11
- package/dist-elements/tag/spinner.js +1 -1
- package/dist-elements/tag/split-pane.js +4 -4
- package/dist-elements/tag/status-dot.js +1 -1
- package/dist-elements/tag/stepper.js +13 -13
- package/dist-elements/tag/streaming-text.js +15 -15
- package/dist-elements/tag/sub-nav.js +26 -26
- package/dist-elements/tag/tabs.js +13 -13
- package/dist-elements/tag/tag-input.js +14 -14
- package/dist-elements/tag/text-editor.js +7 -7
- package/dist-elements/tag/text-input.js +10 -10
- package/dist-elements/tag/textarea.js +6 -6
- package/dist-elements/tag/tile.js +1 -1
- package/dist-elements/tag/time-input.js +136 -42
- package/dist-elements/tag/toast.js +10 -10
- package/dist-elements/tag/toggle.js +6 -6
- package/dist-elements/tag/toggletip.js +11 -11
- package/dist-elements/tag/tooltip.js +1 -1
- package/dist-elements/tag/transcript.js +31 -31
- package/dist-elements/tag/translator.js +7 -7
- package/dist-elements/tag/tree-view.js +12 -12
- package/dist-elements/tag/user-menu.js +31 -30
- package/dist-elements/tag/video-player.js +13 -13
- package/dist-elements/tokens.css +2 -0
- package/dist-elements/types/bundle/charts.d.ts +1 -1
- package/dist-elements/types/bundle/index.d.ts +1 -1
- package/dist-elements/types/bundle/inputs.d.ts +1 -0
- package/dist-elements/types/bundle/map.d.ts +1 -1
- package/dist-elements/types/components/charts/{chart-tile/chart-tile.d.ts → chart/chart.d.ts} +7 -7
- package/dist-elements/types/components/charts/kpi/gauge.d.ts +18 -0
- package/dist-elements/types/components/charts/kpi/kpi.d.ts +28 -3
- package/dist-elements/types/components/chat/chat-answer/chat-answer.d.ts +1 -1
- package/dist-elements/types/components/index.d.ts +8 -5
- package/dist-elements/types/components/inputs/date-input/date-format.d.ts +4 -0
- package/dist-elements/types/components/inputs/slot-picker/slot-picker.d.ts +41 -0
- package/dist-elements/types/components/inputs/time-input/time-format.d.ts +4 -0
- package/dist-elements/types/components/inputs/time-input/time-input.d.ts +25 -6
- package/dist-elements/types/components/map/{map-tile/map-tile.d.ts → map/map.d.ts} +10 -6
- package/dist-elements/types/components/shared/charts/histogram-chart/histogram-chart.d.ts +33 -0
- package/dist-elements/types/components/shared/charts/index.d.ts +3 -1
- package/dist-elements/types/components/shared/charts/map-chart/area.d.ts +16 -0
- package/dist-elements/types/components/shared/charts/map-chart/drawings.d.ts +6 -2
- package/dist-elements/types/components/shared/charts/map-chart/geo.d.ts +6 -0
- package/dist-elements/types/components/shared/charts/map-chart/leaflet.d.ts +40 -2
- package/dist-elements/types/components/shared/charts/map-chart/map-chart.d.ts +17 -3
- package/dist-elements/types/components/shared/charts/map-chart/map-legend.d.ts +26 -0
- package/dist-elements/types/components/shared/charts/map-chart/marks.d.ts +47 -0
- package/dist-elements/types/components/shared/charts/map-chart/reveal.d.ts +1 -1
- package/dist-elements/types/components/shared/charts/scatter-chart/scatter-chart.d.ts +29 -0
- package/dist-elements/types/components/shared/charts/shared/axes.d.ts +21 -4
- package/dist-elements/types/components/shared/charts/shared/chart-icons.d.ts +4 -3
- package/dist-elements/types/components/shared/charts/shared/controller.d.ts +27 -15
- package/dist-elements/types/components/shared/charts/shared/types.d.ts +112 -6
- package/dist-elements/types/core/format.d.ts +5 -2
- package/dist-elements/types/icons/register.d.ts +1 -1
- package/dist-elements/types/primitives/shared/place.d.ts +1 -1
- package/dist-elements/types/primitives/tooltip/tooltip.d.ts +2 -0
- package/dist-elements/types/types.d.ts +37 -7
- package/dist-icons/functioneel-cirkelselectie.svg +1 -0
- package/dist-icons/functioneel-lasso.svg +1 -0
- package/dist-icons/functioneel-punaise-outline.svg +1 -0
- package/dist-icons/functioneel-punaise.svg +1 -0
- package/dist-icons/functioneel-rechthoekselectie.svg +1 -0
- package/dist-icons/functioneel-selectie.svg +1 -0
- package/package.json +1 -1
- package/dist-elements/chunks/disclosure-Z7Ny17sS.js +0 -4
- package/dist-elements/chunks/download-lFooAfD1.js +0 -226
- package/dist-elements/tag/chart-tile.d.ts +0 -1
- package/dist-elements/tag/chart-tile.js +0 -1474
- package/dist-elements/tag/map-tile.d.ts +0 -1
- package/dist-elements/tag/map-tile.js +0 -22292
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
import { $ as e, B as t, Bt as n, G as r, Gt as i, Ht as a, I as o,
|
|
2
|
-
//#region src/components/
|
|
3
|
-
var p = "/* The host is the trigger's box, with the busy sentence beside it; the menu is a fixed popover\n and takes no space. */\n:host {\n display: inline-flex; flex-wrap: wrap; align-items: center;\n gap: var(--space-2) var(--space-3);\n min-width: 0;\n vertical-align: middle;\n}\n:host([hidden]) { display: none; }\n\n/* ------------------------------------------------------------------------ */\n\n.lintje-menu-button__trigger.lintje-button--secondary.is-open { background: var(--color-bg-selected); }\n.lintje-menu-button__trigger.lintje-button--tertiary.is-open { background: var(--color-bg-subtle); }\n.lintje-menu-button__trigger.lintje-icon-button--outlined.is-open { background: var(--color-bg-selected); }\n.lintje-menu-button__trigger.lintje-icon-button--flat.is-open { background: var(--color-bg-subtle); }\n\n\n.lintje-menu-button__trigger.lintje-button { padding-right: var(--space-3); }\n.lintje-menu-button__trigger--flat.lintje-button { padding: 0 var(--space-2); border-color: transparent; }\n/* Split: two halves of one button, the page showing through the 1 px between them. */\n.lintje-menu-button__split { display: inline-flex; gap: 1px; min-width: 0; }\n.lintje-menu-button__split .lintje-menu-button__trigger--split.lintje-button { width: var(--h-button); padding: 0; }\n/* Busy, a split button's ring takes its icon's square: the label stays and nothing moves. */\n.lintje-menu-button__busy {\n flex: none;\n width: 16px; height: 16px;\n margin: 2px;\n border: 2px solid currentColor;\n border-top-color: transparent;\n border-radius: var(--radius-round);\n animation: lintje-spin var(--dur-skeleton) linear infinite;\n}\n.lintje-menu-button__split .is-working { cursor: progress; }\n@media (prefers-reduced-motion: reduce) {\n .lintje-menu-button__busy { animation: none; }\n}\n.lintje-menu-button__trigger.lintje-button--primary.is-open { background: var(--color-action-primary-hover); }\n/* Disabled, like the link button, it only loses its ink. */\n.lintje-menu-button__trigger--flat.lintje-button.is-disabled { background: none; border-color: transparent; }\n\n/* Without a sentence the live region stays in the tree but takes no room, and no gap. */\n.lintje-menu-button__status { position: absolute; }\n.lintje-menu-button__status.is-busy {\n position: static;\n display: flex; align-items: center; gap: var(--space-2);\n font: var(--text-ui);\n color: var(--color-text-primary);\n}\n\n/* The breadcrumbs' \"…\" sits in a line of text, so it reaches the 48 px target upwards and\n downwards only, through a transparent hit area. */\n.lintje-menu-button__trigger--ellipsis {\n position: relative;\n display: inline-flex; align-items: center; justify-content: center;\n min-width: var(--h-chip-field); height: var(--h-chip-field);\n padding: 0 var(--space-2);\n background: var(--color-bg-subtle);\n color: var(--color-accent-text);\n font: var(--text-small);\n font-weight: 700;\n transition: background var(--dur-hover) var(--ease-in-motion);\n}\n.lintje-menu-button__trigger--ellipsis::after {\n content: '';\n position: absolute;\n inset: min(0px, calc((100% - var(--h-target)) / 2)) 0;\n}\n.lintje-menu-button__trigger--ellipsis:hover:not(.is-disabled),\n.lintje-menu-button__trigger--ellipsis.is-open { background: var(--color-bg-selected); }\n.lintje-menu-button__trigger--ellipsis.is-disabled { color: var(--color-text-disabled); cursor: not-allowed; }\n\n
|
|
4
|
-
function
|
|
1
|
+
import { $ as e, B as t, Bt as n, G as r, Gt as i, Ht as a, I as o, Z as s, et as c, j as l, q as u, qt as d, zt as f } from "../chunks/base-Bg-IFOPG.js";
|
|
2
|
+
//#region src/components/shared/menu.css?inline
|
|
3
|
+
var p = "/* The rows of a menu, in the popover of a menu button, the user menu or a map's select button.\n The trigger is the owner's. */\n\n.lintje-menu {\n display: flex; flex-direction: column;\n min-width: 240px;\n padding: var(--space-1) 0;\n}\n\n.lintje-menu__row {\n display: flex; align-items: center; gap: var(--space-2);\n width: 100%;\n height: var(--h-control);\n padding: 0 var(--space-4);\n font: var(--text-ui);\n color: var(--color-text-primary);\n text-align: left;\n text-decoration: none;\n white-space: nowrap;\n transition: background var(--dur-hover) var(--ease-in-motion);\n}\n.lintje-menu__row:hover:not(.is-disabled) { background: var(--color-bg-subtle); }\n.lintje-menu__icon { flex: none; }\n.lintje-menu__slot { width: 16px; height: 16px; }\n.lintje-menu__check { color: var(--color-accent-text); }\n/* One of a choice: the form's radio, at the size of the menu's icons. */\n.lintje-menu__radio {\n box-sizing: border-box;\n width: 16px; height: 16px;\n border: 2px solid var(--color-border-choice);\n border-radius: var(--radius-round);\n background: var(--color-bg-surface);\n display: inline-flex; align-items: center; justify-content: center;\n}\n.lintje-menu__radio.is-checked { border-color: var(--color-accent-line); }\n.lintje-menu__radio.is-checked::after {\n content: '';\n width: 6px; height: 6px;\n border-radius: var(--radius-round);\n background: var(--color-accent);\n}\n@media (forced-colors: active) {\n .lintje-menu__radio.is-checked::after { forced-color-adjust: none; background: Highlight; }\n}\n.lintje-menu__label { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; }\n.lintje-menu__hint {\n flex: none;\n margin-left: var(--space-4);\n font-family: var(--font-mono);\n font-size: 0.875rem;\n color: var(--color-text-muted);\n}\n\n.lintje-menu__row.is-disabled { color: var(--color-text-disabled); cursor: not-allowed; }\n.lintje-menu__row.is-disabled .lintje-menu__hint { color: var(--color-text-disabled); }\n.lintje-menu__row.is-danger { color: var(--color-error-text); font-weight: 700; }\n\n.lintje-menu__separator {\n height: 1px;\n margin: var(--space-1) 0;\n background: var(--color-border-default);\n}\n\n.lintje-menu__tip { display: flex; }\n\n/* The heading stands in line with the labels: the row's padding, the icon and the gap. */\n/* A group's name stands at the menu's edge, over the checks and circles of its rows. */\n.lintje-menu__heading {\n padding: var(--space-1) var(--space-4);\n font: var(--text-small);\n font-weight: 700;\n color: var(--color-text-muted);\n}\n\n@media (max-width: 767px) {\n .lintje-menu__row { height: var(--h-touch); }\n}\n", m = "/* The host is the trigger's box, with the busy sentence beside it; the menu is a fixed popover\n and takes no space. */\n:host {\n display: inline-flex; flex-wrap: wrap; align-items: center;\n gap: var(--space-2) var(--space-3);\n min-width: 0;\n vertical-align: middle;\n}\n:host([hidden]) { display: none; }\n\n/* ------------------------------------------------------------------------ */\n\n.lintje-menu-button__trigger.lintje-button--secondary.is-open { background: var(--color-bg-selected); }\n.lintje-menu-button__trigger.lintje-button--tertiary.is-open { background: var(--color-bg-subtle); }\n.lintje-menu-button__trigger.lintje-icon-button--outlined.is-open { background: var(--color-bg-selected); }\n.lintje-menu-button__trigger.lintje-icon-button--flat.is-open { background: var(--color-bg-subtle); }\n\n\n.lintje-menu-button__trigger.lintje-button { padding-right: var(--space-3); }\n.lintje-menu-button__trigger--flat.lintje-button { padding: 0 var(--space-2); border-color: transparent; }\n/* Split: two halves of one button, the page showing through the 1 px between them. */\n.lintje-menu-button__split { display: inline-flex; gap: 1px; min-width: 0; }\n.lintje-menu-button__split .lintje-menu-button__trigger--split.lintje-button { width: var(--h-button); padding: 0; }\n/* Busy, a split button's ring takes its icon's square: the label stays and nothing moves. */\n.lintje-menu-button__busy {\n flex: none;\n width: 16px; height: 16px;\n margin: 2px;\n border: 2px solid currentColor;\n border-top-color: transparent;\n border-radius: var(--radius-round);\n animation: lintje-spin var(--dur-skeleton) linear infinite;\n}\n.lintje-menu-button__split .is-working { cursor: progress; }\n@media (prefers-reduced-motion: reduce) {\n .lintje-menu-button__busy { animation: none; }\n}\n.lintje-menu-button__trigger.lintje-button--primary.is-open { background: var(--color-action-primary-hover); }\n/* Disabled, like the link button, it only loses its ink. */\n.lintje-menu-button__trigger--flat.lintje-button.is-disabled { background: none; border-color: transparent; }\n\n/* Without a sentence the live region stays in the tree but takes no room, and no gap. */\n.lintje-menu-button__status { position: absolute; }\n.lintje-menu-button__status.is-busy {\n position: static;\n display: flex; align-items: center; gap: var(--space-2);\n font: var(--text-ui);\n color: var(--color-text-primary);\n}\n\n/* The breadcrumbs' \"…\" sits in a line of text, so it reaches the 48 px target upwards and\n downwards only, through a transparent hit area. */\n.lintje-menu-button__trigger--ellipsis {\n position: relative;\n display: inline-flex; align-items: center; justify-content: center;\n min-width: var(--h-chip-field); height: var(--h-chip-field);\n padding: 0 var(--space-2);\n background: var(--color-bg-subtle);\n color: var(--color-accent-text);\n font: var(--text-small);\n font-weight: 700;\n transition: background var(--dur-hover) var(--ease-in-motion);\n}\n.lintje-menu-button__trigger--ellipsis::after {\n content: '';\n position: absolute;\n inset: min(0px, calc((100% - var(--h-target)) / 2)) 0;\n}\n.lintje-menu-button__trigger--ellipsis:hover:not(.is-disabled),\n.lintje-menu-button__trigger--ellipsis.is-open { background: var(--color-bg-selected); }\n.lintje-menu-button__trigger--ellipsis.is-disabled { color: var(--color-text-disabled); cursor: not-allowed; }\n\n/* Forced colours: the disabled \"…\" is `aria-disabled`, so the browser does not gray it. */\n@media (forced-colors: active) {\n .lintje-menu-button__trigger--ellipsis.is-disabled { color: GrayText; }\n}\n", h = (e) => e !== "separator" && !("heading" in e), g = 0;
|
|
4
|
+
function _(e, t, n) {
|
|
5
5
|
let r = [], i = null, a = () => {
|
|
6
6
|
if (!i) return;
|
|
7
7
|
let e = `${t}-group-${r.length}`;
|
|
8
|
-
r.push(
|
|
8
|
+
r.push(d`<div class="lintje-menu__group" role="group" aria-labelledby=${e}>
|
|
9
9
|
<div class="lintje-menu__heading" id=${e} role="presentation">${i.heading}</div>
|
|
10
10
|
${i.rows}
|
|
11
11
|
</div>`), i = null;
|
|
12
12
|
};
|
|
13
|
-
for (let t of e) t === "separator" ? (a(), r.push(
|
|
13
|
+
for (let t of e) t === "separator" ? (a(), r.push(d`<div class="lintje-menu__separator" role="separator"></div>`)) : h(t) ? i ? i.rows.push(n(t)) : r.push(n(t)) : (a(), i = {
|
|
14
14
|
heading: t.heading,
|
|
15
15
|
rows: []
|
|
16
16
|
});
|
|
17
17
|
return a(), r;
|
|
18
18
|
}
|
|
19
|
-
function
|
|
19
|
+
function v(e, t, n) {
|
|
20
20
|
let r = e.length;
|
|
21
21
|
return r === 0 ? -1 : ((t + n) % r + r) % r;
|
|
22
22
|
}
|
|
23
|
-
function
|
|
23
|
+
function y(e, t, n) {
|
|
24
24
|
let r = n.toLocaleLowerCase("nl"), i = e.length;
|
|
25
25
|
for (let n = 1; n <= i; n++) {
|
|
26
26
|
let a = (t + n) % i, o = e[a];
|
|
@@ -28,13 +28,14 @@ function v(e, t, n) {
|
|
|
28
28
|
}
|
|
29
29
|
return -1;
|
|
30
30
|
}
|
|
31
|
-
var
|
|
31
|
+
var b = class extends f {
|
|
32
32
|
static {
|
|
33
33
|
this.styles = [
|
|
34
34
|
e,
|
|
35
|
-
a(d),
|
|
36
35
|
a(u),
|
|
37
|
-
a(
|
|
36
|
+
a(l),
|
|
37
|
+
a(p),
|
|
38
|
+
a(m)
|
|
38
39
|
];
|
|
39
40
|
}
|
|
40
41
|
static {
|
|
@@ -81,7 +82,7 @@ var y = class extends f {
|
|
|
81
82
|
return this.disabled || !!this.busyLabel;
|
|
82
83
|
}
|
|
83
84
|
get rows() {
|
|
84
|
-
return this.items.filter(
|
|
85
|
+
return this.items.filter(h);
|
|
85
86
|
}
|
|
86
87
|
get trigger() {
|
|
87
88
|
return this.renderRoot.querySelector(".lintje-menu-button__trigger");
|
|
@@ -91,13 +92,13 @@ var y = class extends f {
|
|
|
91
92
|
}
|
|
92
93
|
show(e) {
|
|
93
94
|
let t = this.rows;
|
|
94
|
-
this.pendingFocus =
|
|
95
|
+
this.pendingFocus = v(t, e === "first" ? -1 : t.length, e === "first" ? 1 : -1), this.open = !0;
|
|
95
96
|
}
|
|
96
97
|
hide(e) {
|
|
97
98
|
this.open = !1, e && this.trigger?.focus();
|
|
98
99
|
}
|
|
99
100
|
constructor() {
|
|
100
|
-
super(), this.label = "", this.accessibleLabel = "", this.variant = "secondary", this.icon = !1, this.leadingIcon = "", this.disabled = !1, this.busyLabel = "", this.placement = "bottom-start", this.items = [], this.open = !1, this.split = !1, this.action = "", this.menuId = `lintje-menu-${++
|
|
101
|
+
super(), this.label = "", this.accessibleLabel = "", this.variant = "secondary", this.icon = !1, this.leadingIcon = "", this.disabled = !1, this.busyLabel = "", this.placement = "bottom-start", this.items = [], this.open = !1, this.split = !1, this.action = "", this.menuId = `lintje-menu-${++g}`, this.pendingFocus = null, this.onFocusOut = (e) => {
|
|
101
102
|
let t = e.relatedTarget;
|
|
102
103
|
this.open && t && !r(t, this) && !r(this, t) && this.hide(!1);
|
|
103
104
|
}, this.onTriggerKeydown = (e) => {
|
|
@@ -108,16 +109,16 @@ var y = class extends f {
|
|
|
108
109
|
let t = this.rows, n = this.currentRow();
|
|
109
110
|
switch (e.key) {
|
|
110
111
|
case "ArrowDown":
|
|
111
|
-
e.preventDefault(), this.focusRow(
|
|
112
|
+
e.preventDefault(), this.focusRow(v(t, n, 1));
|
|
112
113
|
return;
|
|
113
114
|
case "ArrowUp":
|
|
114
|
-
e.preventDefault(), this.focusRow(
|
|
115
|
+
e.preventDefault(), this.focusRow(v(t, n < 0 ? t.length : n, -1));
|
|
115
116
|
return;
|
|
116
117
|
case "Home":
|
|
117
|
-
e.preventDefault(), this.focusRow(
|
|
118
|
+
e.preventDefault(), this.focusRow(v(t, -1, 1));
|
|
118
119
|
return;
|
|
119
120
|
case "End":
|
|
120
|
-
e.preventDefault(), this.focusRow(
|
|
121
|
+
e.preventDefault(), this.focusRow(v(t, t.length, -1));
|
|
121
122
|
return;
|
|
122
123
|
case "Tab":
|
|
123
124
|
e.shiftKey || this.trigger?.focus(), this.hide(!1);
|
|
@@ -127,7 +128,7 @@ var y = class extends f {
|
|
|
127
128
|
t instanceof HTMLAnchorElement && (e.preventDefault(), t.click());
|
|
128
129
|
return;
|
|
129
130
|
}
|
|
130
|
-
default: e.key.length === 1 && e.key !== " " && !e.ctrlKey && !e.metaKey && this.focusRow(
|
|
131
|
+
default: e.key.length === 1 && e.key !== " " && !e.ctrlKey && !e.metaKey && this.focusRow(y(t, n, e.key));
|
|
131
132
|
}
|
|
132
133
|
}, this.addEventListener("focusout", this.onFocusOut);
|
|
133
134
|
}
|
|
@@ -159,10 +160,10 @@ var y = class extends f {
|
|
|
159
160
|
}
|
|
160
161
|
renderSplit() {
|
|
161
162
|
let e = this.disabled ? "true" : i, t = !!this.busyLabel, n = this.variant === "flat" ? "tertiary" : this.variant;
|
|
162
|
-
return
|
|
163
|
+
return d`<span class="lintje-menu-button__split">
|
|
163
164
|
<button
|
|
164
165
|
type="button"
|
|
165
|
-
class=${
|
|
166
|
+
class=${s({
|
|
166
167
|
"lintje-button": !0,
|
|
167
168
|
[`lintje-button--${n}`]: !0,
|
|
168
169
|
"lintje-menu-button__main": !0,
|
|
@@ -175,7 +176,7 @@ var y = class extends f {
|
|
|
175
176
|
this.unavailable || this.emit("lintje-action", this.action);
|
|
176
177
|
}}
|
|
177
178
|
>
|
|
178
|
-
${t ?
|
|
179
|
+
${t ? d`<span class="lintje-menu-button__busy" aria-hidden="true"></span>` : this.leadingIcon ? c(this.leadingIcon, {
|
|
179
180
|
size: 20,
|
|
180
181
|
className: "lintje-button__icon"
|
|
181
182
|
}) : i}
|
|
@@ -183,7 +184,7 @@ var y = class extends f {
|
|
|
183
184
|
</button>
|
|
184
185
|
<button
|
|
185
186
|
type="button"
|
|
186
|
-
class=${
|
|
187
|
+
class=${s({
|
|
187
188
|
"lintje-button": !0,
|
|
188
189
|
[`lintje-button--${n}`]: !0,
|
|
189
190
|
"lintje-menu-button__trigger": !0,
|
|
@@ -200,7 +201,7 @@ var y = class extends f {
|
|
|
200
201
|
@click=${this.onTriggerClick}
|
|
201
202
|
@keydown=${this.onTriggerKeydown}
|
|
202
203
|
>
|
|
203
|
-
${
|
|
204
|
+
${c("functioneel-delta-omlaag", {
|
|
204
205
|
size: 20,
|
|
205
206
|
rotate: this.open ? 180 : void 0,
|
|
206
207
|
className: "lintje-button__icon"
|
|
@@ -215,9 +216,9 @@ var y = class extends f {
|
|
|
215
216
|
"is-open": this.open,
|
|
216
217
|
"is-disabled": this.unavailable
|
|
217
218
|
}, t = this.unavailable ? "true" : i;
|
|
218
|
-
return this.icon ?
|
|
219
|
+
return this.icon ? d`<button
|
|
219
220
|
type="button"
|
|
220
|
-
class=${
|
|
221
|
+
class=${s({
|
|
221
222
|
...e,
|
|
222
223
|
"lintje-icon-button": !0,
|
|
223
224
|
"lintje-icon-button--outlined": this.variant !== "tertiary",
|
|
@@ -232,10 +233,10 @@ var y = class extends f {
|
|
|
232
233
|
@click=${this.onTriggerClick}
|
|
233
234
|
@keydown=${this.onTriggerKeydown}
|
|
234
235
|
>
|
|
235
|
-
${
|
|
236
|
-
</button>` : this.variant === "ellipsis" ?
|
|
236
|
+
${c("functioneel-meer", { size: 16 })}
|
|
237
|
+
</button>` : this.variant === "ellipsis" ? d`<button
|
|
237
238
|
type="button"
|
|
238
|
-
class=${
|
|
239
|
+
class=${s({
|
|
239
240
|
...e,
|
|
240
241
|
"lintje-menu-button__trigger--ellipsis": !0
|
|
241
242
|
})}
|
|
@@ -248,9 +249,9 @@ var y = class extends f {
|
|
|
248
249
|
@keydown=${this.onTriggerKeydown}
|
|
249
250
|
>
|
|
250
251
|
…
|
|
251
|
-
</button>` :
|
|
252
|
+
</button>` : d`<button
|
|
252
253
|
type="button"
|
|
253
|
-
class=${
|
|
254
|
+
class=${s({
|
|
254
255
|
...e,
|
|
255
256
|
"lintje-button": !0,
|
|
256
257
|
[`lintje-button--${this.variant === "flat" ? "tertiary" : this.variant}`]: !0,
|
|
@@ -264,12 +265,12 @@ var y = class extends f {
|
|
|
264
265
|
@click=${this.onTriggerClick}
|
|
265
266
|
@keydown=${this.onTriggerKeydown}
|
|
266
267
|
>
|
|
267
|
-
${this.leadingIcon ?
|
|
268
|
+
${this.leadingIcon ? c(this.leadingIcon, {
|
|
268
269
|
size: 16,
|
|
269
270
|
className: "lintje-button__icon"
|
|
270
271
|
}) : i}
|
|
271
272
|
<span class="lintje-button__label">${this.label}</span>
|
|
272
|
-
${
|
|
273
|
+
${c("functioneel-delta-omlaag", {
|
|
273
274
|
size: 16,
|
|
274
275
|
rotate: this.open ? 180 : void 0,
|
|
275
276
|
className: "lintje-button__icon"
|
|
@@ -277,33 +278,33 @@ var y = class extends f {
|
|
|
277
278
|
</button>`;
|
|
278
279
|
}
|
|
279
280
|
renderRow(e) {
|
|
280
|
-
let t =
|
|
281
|
+
let t = s({
|
|
281
282
|
"lintje-menu__row": !0,
|
|
282
283
|
"focus-inset": !0,
|
|
283
284
|
"is-danger": !!e.danger,
|
|
284
285
|
"is-disabled": !!e.disabled
|
|
285
286
|
}), n = e.checked !== void 0, r = n ? e.radio ? "menuitemradio" : "menuitemcheckbox" : "menuitem", a = i;
|
|
286
|
-
n && e.radio ? a =
|
|
287
|
-
class=${
|
|
287
|
+
n && e.radio ? a = d`<span
|
|
288
|
+
class=${s({
|
|
288
289
|
"lintje-menu__icon": !0,
|
|
289
290
|
"lintje-menu__radio": !0,
|
|
290
291
|
"is-checked": !!e.checked
|
|
291
292
|
})}
|
|
292
|
-
></span>` : n ? a = e.checked ?
|
|
293
|
+
></span>` : n ? a = e.checked ? c("functioneel-vinkje", {
|
|
293
294
|
size: 16,
|
|
294
295
|
className: "lintje-menu__icon lintje-menu__check"
|
|
295
|
-
}) :
|
|
296
|
+
}) : d`<span class="lintje-menu__icon lintje-menu__slot"></span>` : e.icon && (a = c(e.icon, {
|
|
296
297
|
size: 16,
|
|
297
298
|
className: "lintje-menu__icon"
|
|
298
299
|
}));
|
|
299
|
-
let o =
|
|
300
|
+
let o = d`${a}<span class="lintje-menu__label">${e.label}</span>${e.hint ? d`<span class="lintje-menu__hint">${e.hint}</span>` : i}`, l = e.href && !e.disabled ? d`<a
|
|
300
301
|
class=${t}
|
|
301
302
|
role="menuitem"
|
|
302
303
|
tabindex="-1"
|
|
303
304
|
href=${e.href}
|
|
304
305
|
@click=${(t) => this.choose(e, t)}
|
|
305
306
|
>${o}</a
|
|
306
|
-
>` :
|
|
307
|
+
>` : d`<button
|
|
307
308
|
type="button"
|
|
308
309
|
class=${t}
|
|
309
310
|
role=${r}
|
|
@@ -314,11 +315,11 @@ var y = class extends f {
|
|
|
314
315
|
>
|
|
315
316
|
${o}
|
|
316
317
|
</button>`;
|
|
317
|
-
return e.disabled && e.reason ?
|
|
318
|
+
return e.disabled && e.reason ? d`<lintje-tooltip class="lintje-menu__tip" text=${e.reason}>${l}</lintje-tooltip>` : l;
|
|
318
319
|
}
|
|
319
320
|
render() {
|
|
320
321
|
let e = !!this.busyLabel;
|
|
321
|
-
return
|
|
322
|
+
return d`${this.renderTrigger()}<lintje-popover
|
|
322
323
|
id=${this.menuId}
|
|
323
324
|
panel-role="menu"
|
|
324
325
|
label=${t(this.accessibleLabel || this.label || void 0)}
|
|
@@ -326,18 +327,18 @@ var y = class extends f {
|
|
|
326
327
|
?open=${this.open}
|
|
327
328
|
@lintje-close=${this.onPopoverClose}
|
|
328
329
|
>
|
|
329
|
-
<div class="lintje-menu" @keydown=${this.onMenuKeydown}>${
|
|
330
|
+
<div class="lintje-menu" @keydown=${this.onMenuKeydown}>${_(this.items, this.menuId, (e) => this.renderRow(e))}</div>
|
|
330
331
|
</lintje-popover
|
|
331
332
|
><div
|
|
332
|
-
class=${
|
|
333
|
+
class=${s({
|
|
333
334
|
"lintje-menu-button__status": !0,
|
|
334
335
|
"is-busy": e && !this.split,
|
|
335
336
|
"visually-hidden": e && this.split
|
|
336
337
|
})}
|
|
337
338
|
role="status"
|
|
338
|
-
>${e ?
|
|
339
|
+
>${e ? d`<lintje-spinner></lintje-spinner><span>${this.busyLabel}</span>` : i}</div>`;
|
|
339
340
|
}
|
|
340
341
|
};
|
|
341
|
-
n("lintje-menu-button",
|
|
342
|
+
n("lintje-menu-button", b);
|
|
342
343
|
//#endregion
|
|
343
|
-
export {
|
|
344
|
+
export { b as LintjeMenuButton, p as n, v as nextRow, _ as renderMenuEntries, y as rowByLetter, m as t };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { $ as e, Bt as t, Gt as n, Ht as r,
|
|
2
|
-
import { t as c } from "../chunks/focus-trap-
|
|
1
|
+
import { $ as e, Bt as t, Gt as n, Ht as r, Nt as i, et as a, qt as o, zt as s } from "../chunks/base-Bg-IFOPG.js";
|
|
2
|
+
import { t as c } from "../chunks/focus-trap-9BnE-xWv.js";
|
|
3
3
|
import { t as l } from "../chunks/dialog-close-u75fVEw4.js";
|
|
4
4
|
//#region src/components/overlays/modal/modal.css?inline
|
|
5
5
|
var u = "/* `display: contents` keeps the host out of its parent's flex or grid layout. */\n:host {\n display: contents;\n}\n\n/* ------------------------------------------------------------------------ */\n\n/* Covers the whole viewport, above the shell's menu (z-index 30). */\n.lintje-modal__scrim {\n position: fixed; z-index: 80;\n inset: 0;\n background: var(--color-overlay-page);\n display: flex; align-items: center; justify-content: center;\n padding: var(--space-6);\n animation: lintje-fade-in var(--dur-scrim) var(--ease-in-motion);\n}\n.lintje-modal {\n width: min(1200px, 100%);\n height: 100%;\n max-height: 100%;\n display: flex; flex-direction: column;\n background: var(--color-bg-surface);\n border: 1px solid var(--color-border-strong);\n box-shadow: var(--shadow-popover);\n animation: lintje-rise var(--dur-modal) var(--ease-in-motion);\n}\n.lintje-modal:focus { outline: none; }\n\n.lintje-modal__header {\n display: flex; align-items: flex-start; justify-content: space-between; gap: var(--space-4);\n padding: var(--space-5) var(--space-6);\n border-bottom: 1px solid var(--color-border-default);\n}\n.lintje-modal__title { font: var(--text-h2); }\n.lintje-modal__subtitle { font: var(--text-tile-sub); color: var(--color-text-muted); margin-top: var(--space-1); }\n.lintje-modal__close:hover { color: var(--color-text-primary); }\n\n.lintje-modal__body {\n flex: 1; min-height: 0; overflow: auto;\n padding: var(--space-5) var(--space-6);\n /* LintjeModal sets --chart-h-expanded on this body; a chart reads its own height token. */\n --chart-h-main: var(--chart-h-expanded);\n --chart-h-small: var(--chart-h-expanded);\n}\n\n.lintje-modal__footer {\n display: flex; align-items: center; justify-content: space-between; gap: var(--space-4);\n padding: var(--space-3) var(--space-6);\n border-top: 1px solid var(--color-border-default);\n font: var(--text-meta); color: var(--color-text-muted);\n}\n.lintje-modal__actions { display: flex; gap: var(--space-2); }\n.lintje-modal__actions[hidden] { display: none; }\n/* Narrow: a dialog with a form, as high as it needs and as wide as a form reads. */\n:host([narrow]) .lintje-modal { width: min(calc(15 * var(--space-10)), 100%); height: auto; }\n/* A form's dialog has a title of one line: the close button stands in line with it. */\n:host([narrow]) .lintje-modal__header { align-items: center; padding-block: var(--space-4); }\n:host([narrow]) .lintje-modal__footer { font: var(--text-ui); color: var(--color-text-primary); }\n\n@media (max-width: 767px) {\n .lintje-modal__scrim { padding: 0; align-items: stretch; }\n .lintje-modal { max-height: 100%; height: 100%; }\n .lintje-modal__body { --chart-h-main: 320px; --chart-h-small: 320px; }\n}\n", d = class extends s {
|
|
@@ -60,7 +60,7 @@ var u = "/* `display: contents` keeps the host out of its parent's flex or grid
|
|
|
60
60
|
this.emit("lintje-close");
|
|
61
61
|
}
|
|
62
62
|
#a() {
|
|
63
|
-
this.#e =
|
|
63
|
+
this.#e = i(), document.addEventListener("keydown", this.#r);
|
|
64
64
|
let e = this.renderRoot.querySelector(".lintje-modal");
|
|
65
65
|
e && this.#t.activate(e);
|
|
66
66
|
}
|
|
@@ -68,7 +68,7 @@ var u = "/* `display: contents` keeps the host out of its parent's flex or grid
|
|
|
68
68
|
this.#e && (this.#n?.disconnect(), this.#n = null, document.removeEventListener("keydown", this.#r), this.#e(), this.#e = null, this.#t.deactivate());
|
|
69
69
|
}
|
|
70
70
|
render() {
|
|
71
|
-
return this.open ?
|
|
71
|
+
return this.open ? o`<div class="lintje-modal__scrim" @click=${() => this.close()}>
|
|
72
72
|
<div
|
|
73
73
|
class="lintje-modal"
|
|
74
74
|
role="dialog"
|
|
@@ -80,7 +80,7 @@ var u = "/* `display: contents` keeps the host out of its parent's flex or grid
|
|
|
80
80
|
<header class="lintje-modal__header">
|
|
81
81
|
<div>
|
|
82
82
|
<h2 class="lintje-modal__title">${this.heading}</h2>
|
|
83
|
-
${this.subtitle ?
|
|
83
|
+
${this.subtitle ? o`<p class="lintje-modal__subtitle">${this.subtitle}</p>` : n}
|
|
84
84
|
</div>
|
|
85
85
|
<button
|
|
86
86
|
type="button"
|
|
@@ -88,7 +88,7 @@ var u = "/* `display: contents` keeps the host out of its parent's flex or grid
|
|
|
88
88
|
aria-label="Sluiten"
|
|
89
89
|
@click=${() => this.close()}
|
|
90
90
|
>
|
|
91
|
-
${
|
|
91
|
+
${a("functioneel-kruis", { size: 16 })}
|
|
92
92
|
</button>
|
|
93
93
|
</header>
|
|
94
94
|
|
|
@@ -101,15 +101,15 @@ var u = "/* `display: contents` keeps the host out of its parent's flex or grid
|
|
|
101
101
|
<span><slot name="footer" @slotchange=${this.onFooterSlotChange}></slot></span>
|
|
102
102
|
<div class="lintje-modal__actions" ?hidden=${!this.csv && !this.png && !this.actionsSlotted}>
|
|
103
103
|
<slot name="actions" @slotchange=${this.onActionsSlotChange}></slot>
|
|
104
|
-
${this.csv || this.png ?
|
|
105
|
-
${this.csv ?
|
|
104
|
+
${this.csv || this.png ? o`
|
|
105
|
+
${this.csv ? o`<lintje-button
|
|
106
106
|
variant="tertiary"
|
|
107
107
|
size="compact"
|
|
108
108
|
icon="functioneel-downloaden"
|
|
109
109
|
@click=${() => this.emit("lintje-download-csv")}
|
|
110
110
|
>CSV</lintje-button
|
|
111
111
|
>` : n}
|
|
112
|
-
${this.png ?
|
|
112
|
+
${this.png ? o`<lintje-button
|
|
113
113
|
variant="tertiary"
|
|
114
114
|
size="compact"
|
|
115
115
|
icon="functioneel-downloaden"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { $ as e, Bt as t, G as n, Gt as r, Ht as i,
|
|
2
|
-
import "../chunks/focus-trap-
|
|
3
|
-
import { r as d, t as f } from "../chunks/input-
|
|
1
|
+
import { $ as e, Bt as t, G as n, Gt as r, Ht as i, U as a, W as o, Z as s, et as c, qt as l, ut as u } from "../chunks/base-Bg-IFOPG.js";
|
|
2
|
+
import "../chunks/focus-trap-9BnE-xWv.js";
|
|
3
|
+
import { r as d, t as f } from "../chunks/input-BtuNFSWk.js";
|
|
4
4
|
import "./checkbox.js";
|
|
5
5
|
//#region src/components/inputs/multiselect/multiselect.css?inline
|
|
6
6
|
var p = "/* The multi-select's trigger, chips and list. */\n\n/* --- Multi-select --------------------------------------------------------- */\n.lintje-multiselect { position: relative; }\n.lintje-multiselect__field {\n display: flex; align-items: center; gap: 6px; flex-wrap: nowrap;\n width: 100%; min-height: var(--h-control);\n padding: 0 var(--space-2);\n border: 1px solid var(--color-border-field);\n background: var(--color-bg-surface);\n text-align: left;\n overflow: hidden;\n}\n.lintje-multiselect__shown { display: contents; }\n.lintje-multiselect__field.is-error { border: 2px solid var(--color-error); }\n.lintje-multiselect__field:disabled {\n border: 1px solid var(--color-border-strong);\n background: var(--color-bg-subtle);\n color: var(--color-text-disabled);\n cursor: not-allowed;\n}\n.lintje-multiselect__summary {\n flex: 1 1 auto; min-width: 0;\n padding-left: var(--space-1);\n font: var(--text-ui);\n overflow: hidden; text-overflow: ellipsis; white-space: nowrap;\n}\n.lintje-multiselect__placeholder { color: var(--color-text-placeholder); font-size: 1rem; padding-left: 6px; }\n.lintje-multiselect__chip {\n display: inline-flex; align-items: center; gap: 6px;\n height: var(--h-chip-field);\n padding: 0 0 0 var(--space-2);\n background: var(--color-bg-subtle);\n border: 1px solid var(--color-border-default);\n font-size: 0.875rem; white-space: nowrap;\n /* The label shortens with an ellipsis, the cross and counter never shrink; the whole\n selection is in the field's `title`. */\n flex: 0 1 auto; min-width: 0;\n}\n.lintje-multiselect__chip-label { overflow: hidden; text-overflow: ellipsis; min-width: 2ch; }\n/* A transparent hit area reaches the target height, not sideways: the label opens the list. */\n.lintje-multiselect__chip-remove {\n position: relative;\n flex: none;\n width: var(--space-6); align-self: stretch;\n display: flex; align-items: center; justify-content: center;\n cursor: pointer; color: var(--color-text-muted); font-size: 1rem;\n}\n.lintje-multiselect__chip-remove::after {\n content: '';\n position: absolute;\n inset: min(0px, calc((var(--h-chip-field) - var(--h-target)) / 2)) 0;\n}\n.lintje-multiselect__overflow { font-size: 0.875rem; color: var(--color-text-muted); flex: none; }\n.lintje-multiselect__scrim { position: fixed; inset: 0; z-index: 45; }\n/* Fixed to the viewport: an absolute popover is cut off by a scrolling box around it. A column,\n so the list shrinks when the room is short. */\n.lintje-multiselect__popover {\n position: fixed; z-index: 46;\n min-width: 260px;\n max-height: var(--lintje-multiselect-space, none);\n display: flex; flex-direction: column;\n background: var(--color-bg-surface);\n border: 1px solid var(--color-border-popover);\n box-shadow: var(--shadow-popover);\n animation: lintje-popover-in var(--dur-popover) var(--ease-in-motion);\n}\n.lintje-multiselect__search { flex: none; padding: var(--space-2); border-bottom: 1px solid var(--color-border-default); }\n.lintje-multiselect__search-input {\n width: 100%; height: var(--h-control); padding: 0 var(--space-2);\n border: 1px solid var(--color-border-field);\n background: var(--color-bg-surface); color: var(--color-text-primary); font-size: 1rem;\n}\n.lintje-multiselect__search-input::placeholder { color: var(--color-text-placeholder); opacity: 1; }\n.lintje-multiselect__list {\n flex: 1 1 auto; min-height: 0;\n max-height: 220px; overflow-y: auto;\n padding: var(--space-2);\n display: flex; flex-direction: column; gap: 2px;\n}\n/* The `lintje-checkbox` row reads `--h-target` in its shadow root: point it at the option height. */\n.lintje-multiselect__option { --h-target: var(--h-option); }\n.lintje-multiselect__no-results { font: var(--text-small); color: var(--color-text-muted); padding: var(--space-2); }\n.lintje-multiselect__footer {\n flex: none;\n display: flex; align-items: center; justify-content: space-between;\n padding: var(--space-2) var(--space-3);\n border-top: 1px solid var(--color-border-default);\n font: var(--text-small); color: var(--color-text-muted);\n}\n.lintje-multiselect__clear {\n min-height: var(--h-target);\n color: var(--color-link); font-weight: 700; text-decoration: underline;\n}\n", m = 4, h = 8, g = 260, _ = 180, v = "lintje-multiselect-value", y = "lintje-multiselect-shown";
|
|
@@ -21,7 +21,7 @@ var S = (e) => e === 1 ? "1 resultaat" : `${e} resultaten`, C = class extends d
|
|
|
21
21
|
super(...e), this.placeholder = "Kies één of meer…", this.stacked = !1, this.open = !1, this.query = "", this.anchor = null, this.news = "", this.reflowFrame = 0, this.onOutsideClick = (e) => {
|
|
22
22
|
this.open && (e.composedPath().includes(this) || (this.open = !1));
|
|
23
23
|
}, this.onEscape = (e) => {
|
|
24
|
-
this.open && e.key === "Escape" &&
|
|
24
|
+
this.open && e.key === "Escape" && o(this) && (e.stopPropagation(), this.close());
|
|
25
25
|
}, this.onReflow = () => {
|
|
26
26
|
this.open && !this.reflowFrame && (this.reflowFrame = requestAnimationFrame(() => {
|
|
27
27
|
this.reflowFrame = 0, this.measure();
|
|
@@ -58,7 +58,7 @@ var S = (e) => e === 1 ? "1 resultaat" : `${e} resultaten`, C = class extends d
|
|
|
58
58
|
return this.renderRoot.querySelector(".lintje-multiselect__field");
|
|
59
59
|
}
|
|
60
60
|
async close() {
|
|
61
|
-
let e = this.renderRoot.querySelector(".lintje-multiselect__popover"), t = e !== null &&
|
|
61
|
+
let e = this.renderRoot.querySelector(".lintje-multiselect__popover"), t = e !== null && a(e);
|
|
62
62
|
this.open = !1, this.query = "", await this.updateComplete, t && this.trigger?.focus();
|
|
63
63
|
}
|
|
64
64
|
onFocusOut(e) {
|
|
@@ -109,23 +109,23 @@ var S = (e) => e === 1 ? "1 resultaat" : `${e} resultaten`, C = class extends d
|
|
|
109
109
|
let t = this.selected ?? [];
|
|
110
110
|
this.choose(t.includes(e) ? t.filter((t) => t !== e) : [...t, e]);
|
|
111
111
|
}
|
|
112
|
-
checkbox(e, t, n, i,
|
|
113
|
-
return
|
|
112
|
+
checkbox(e, t, n, i, a) {
|
|
113
|
+
return l`<lintje-checkbox
|
|
114
114
|
class="lintje-multiselect__option"
|
|
115
115
|
label=${e}
|
|
116
|
-
hint=${
|
|
116
|
+
hint=${a ?? r}
|
|
117
117
|
?checked=${t}
|
|
118
118
|
?indeterminate=${n && !t}
|
|
119
119
|
@lintje-change=${(e) => i(e.detail)}
|
|
120
120
|
></lintje-checkbox>`;
|
|
121
121
|
}
|
|
122
122
|
render() {
|
|
123
|
-
let e = this.options ?? [], t = this.selected ?? [], n = this.query.trim().toLowerCase(), i = e.filter((e) => x(e).toLowerCase().includes(n)),
|
|
124
|
-
return
|
|
123
|
+
let e = this.options ?? [], t = this.selected ?? [], n = this.query.trim().toLowerCase(), i = e.filter((e) => x(e).toLowerCase().includes(n)), a = t.length === e.length, o = t.length > 0 && !a, d = t.slice(0, 2), f = t.length - d.length, p = t.map((t) => e.find((e) => e.value === t)?.label ?? t);
|
|
124
|
+
return l`<div class="lintje-field lintje-multiselect" @focusout=${this.onFocusOut}>
|
|
125
125
|
${this.renderLabel()}
|
|
126
126
|
<button
|
|
127
127
|
type="button"
|
|
128
|
-
class=${
|
|
128
|
+
class=${s({
|
|
129
129
|
"lintje-multiselect__field": !0,
|
|
130
130
|
"is-error": !!this.error
|
|
131
131
|
})}
|
|
@@ -142,9 +142,9 @@ var S = (e) => e === 1 ? "1 resultaat" : `${e} resultaten`, C = class extends d
|
|
|
142
142
|
>
|
|
143
143
|
<span id=${v} class="visually-hidden">${this.valueText(p)}</span>
|
|
144
144
|
<!-- What the button shows is part of its name, so a voice command can use it (WCAG 2.5.3). -->
|
|
145
|
-
<span id=${y} class="lintje-multiselect__shown"> ${this.summary ?
|
|
146
|
-
${t.length === 0 && !this.summary ?
|
|
147
|
-
${(this.summary ? [] : d).map((t) =>
|
|
145
|
+
<span id=${y} class="lintje-multiselect__shown"> ${this.summary ? l`<span class="lintje-multiselect__summary">${this.summary}</span>${c("functioneel-delta-omlaag", { size: 16 })}` : r}
|
|
146
|
+
${t.length === 0 && !this.summary ? l`<span class="lintje-multiselect__placeholder">${this.placeholder}</span>` : r}
|
|
147
|
+
${(this.summary ? [] : d).map((t) => l`<span class="lintje-multiselect__chip">
|
|
148
148
|
<span class="lintje-multiselect__chip-label"
|
|
149
149
|
>${e.find((e) => e.value === t)?.label}</span
|
|
150
150
|
>
|
|
@@ -160,11 +160,11 @@ var S = (e) => e === 1 ? "1 resultaat" : `${e} resultaten`, C = class extends d
|
|
|
160
160
|
>×</span
|
|
161
161
|
>
|
|
162
162
|
</span>`)}
|
|
163
|
-
${f > 0 && !this.summary ?
|
|
163
|
+
${f > 0 && !this.summary ? l`<span class="lintje-multiselect__overflow">+${f}</span>` : r}</span
|
|
164
164
|
>
|
|
165
165
|
</button>
|
|
166
166
|
|
|
167
|
-
${this.open ?
|
|
167
|
+
${this.open ? l`<span
|
|
168
168
|
class="lintje-multiselect__scrim"
|
|
169
169
|
@click=${() => void this.close()}
|
|
170
170
|
></span>
|
|
@@ -184,9 +184,9 @@ var S = (e) => e === 1 ? "1 resultaat" : `${e} resultaten`, C = class extends d
|
|
|
184
184
|
/>
|
|
185
185
|
</div>
|
|
186
186
|
<div class="lintje-multiselect__list">
|
|
187
|
-
${this.checkbox(`Alles selecteren (${e.length})`,
|
|
187
|
+
${this.checkbox(`Alles selecteren (${e.length})`, a, o, (t) => this.choose(t ? e.map((e) => e.value) : []))}
|
|
188
188
|
${i.map((e) => this.checkbox(x(e), t.includes(e.value), !1, () => this.toggleOption(e.value), e.description))}
|
|
189
|
-
${i.length === 0 ?
|
|
189
|
+
${i.length === 0 ? l`<p class="lintje-multiselect__no-results">
|
|
190
190
|
Geen waarde met “${this.query}”.
|
|
191
191
|
</p>` : r}
|
|
192
192
|
</div>
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { Bt as e, Gt as t, Ht as n,
|
|
1
|
+
import { Bt as e, Gt as t, Ht as n, O as r, k as i, qt as a } from "../chunks/base-Bg-IFOPG.js";
|
|
2
2
|
//#region src/components/charts/note/note.css?inline
|
|
3
|
-
var o = ":host {\n display: block;\n min-width: 0;\n}\n:host([hidden]) { display: none; }\n.lintje-note { height: 100%; }\n\n/* ------------------------------------------------------------------------ */\n\n.lintje-note {\n background: var(--color-bg-surface);\n border: 1px solid var(--color-border-default);\n padding: var(--tile-pad-y) var(--tile-pad-x);\n display: flex; flex-direction: column; gap: var(--space-2);\n min-width: 0;\n}\n.lintje-note__header { display: flex; align-items: baseline; justify-content: space-between; gap: var(--space-3); }\n.lintje-note__title { font: var(--text-tile-title); }\n.lintje-note__date { font: var(--text-tile-sub); color: var(--color-text-muted); }\n.lintje-note__text { font: var(--text-small); line-height: 1.55; color: var(--color-text-secondary); }\n.lintje-note__author { font: var(--text-meta); color: var(--color-text-muted); }\n", s = class extends
|
|
3
|
+
var o = ":host {\n display: block;\n min-width: 0;\n}\n:host([hidden]) { display: none; }\n.lintje-note { height: 100%; }\n\n/* ------------------------------------------------------------------------ */\n\n.lintje-note {\n background: var(--color-bg-surface);\n border: 1px solid var(--color-border-default);\n padding: var(--tile-pad-y) var(--tile-pad-x);\n display: flex; flex-direction: column; gap: var(--space-2);\n min-width: 0;\n}\n.lintje-note__header { display: flex; align-items: baseline; justify-content: space-between; gap: var(--space-3); }\n.lintje-note__title { font: var(--text-tile-title); }\n.lintje-note__date { font: var(--text-tile-sub); color: var(--color-text-muted); }\n.lintje-note__text { font: var(--text-small); line-height: 1.55; color: var(--color-text-secondary); }\n.lintje-note__author { font: var(--text-meta); color: var(--color-text-muted); }\n", s = class extends r {
|
|
4
4
|
static {
|
|
5
|
-
this.styles = [
|
|
5
|
+
this.styles = [i, n(o)];
|
|
6
6
|
}
|
|
7
7
|
static {
|
|
8
8
|
this.properties = { data: { attribute: !1 } };
|
|
@@ -12,7 +12,7 @@ var o = ":host {\n display: block;\n min-width: 0;\n}\n:host([hidden]) { displ
|
|
|
12
12
|
}
|
|
13
13
|
render() {
|
|
14
14
|
let e = this.data;
|
|
15
|
-
return e ?
|
|
15
|
+
return e ? a`<section class="lintje-note">
|
|
16
16
|
<header class="lintje-note__header">
|
|
17
17
|
<h3 class="lintje-note__title">${e.title ?? "Toelichting analist"}</h3>
|
|
18
18
|
<span class="lintje-note__date">${e.date}</span>
|