lintje 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist-elements/actions.js +1 -1
- package/dist-elements/chunks/{base-Bg-IFOPG.js → base-CbmWxUig.js} +444 -272
- package/dist-elements/chunks/{controls-B1455oPG.js → controls-DxmnDSBr.js} +6 -0
- package/dist-elements/chunks/dialog-DChINFxD.js +28 -0
- package/dist-elements/chunks/{disclosure-BXTX04gM.js → disclosure-D39vAR5q.js} +1 -1
- package/dist-elements/chunks/{disclosure-CMXhX-Vb.js → disclosure-DLkXPUpV.js} +6 -6
- package/dist-elements/chunks/download-Ct9q2anY.js +206 -0
- package/dist-elements/chunks/{focus-trap-9BnE-xWv.js → focus-trap-BwOxE5BX.js} +1 -1
- package/dist-elements/chunks/input-CRW_exv_.js +195 -0
- package/dist-elements/chunks/{player-DXOZEyEy.js → player-B8QXJ0Z5.js} +26 -26
- package/dist-elements/chunks/{sentence-BI3lwEuT.js → sentence-B19AyZBS.js} +3 -3
- package/dist-elements/chunks/{stagger-qGD3wmhg.js → stagger-BHoOgy0g.js} +81 -75
- package/dist-elements/core.js +1 -1
- package/dist-elements/custom-elements.json +980 -670
- package/dist-elements/data-types.json +6798 -0
- package/dist-elements/feedback.js +2 -1
- package/dist-elements/frame.js +0 -2
- package/dist-elements/guides/dashboard.md +8 -0
- package/dist-elements/guides/events.md +4 -5
- package/dist-elements/guides/loading.md +8 -7
- package/dist-elements/guides/page-contents.md +110 -0
- package/dist-elements/guides/start.md +12 -0
- package/dist-elements/inputs.js +2 -1
- package/dist-elements/layout.js +1 -1
- package/dist-elements/lintje.js +6975 -6120
- package/dist-elements/overlays.js +2 -2
- package/dist-elements/skills/lintje/SKILL.md +1 -1
- package/dist-elements/tables.js +1 -1
- package/dist-elements/tag/activity-log.js +15 -15
- package/dist-elements/tag/ai-label.js +10 -10
- package/dist-elements/tag/announcement.js +36 -76
- package/dist-elements/tag/app-search.js +49 -49
- package/dist-elements/tag/audio-player.js +57 -57
- package/dist-elements/tag/badge.js +1 -1
- package/dist-elements/tag/breadcrumbs.js +15 -15
- package/dist-elements/tag/button.js +1 -1
- package/dist-elements/tag/card-list.js +12 -12
- package/dist-elements/tag/card.js +39 -44
- package/dist-elements/tag/chart.js +1050 -795
- package/dist-elements/tag/chat-answer.js +49 -49
- package/dist-elements/tag/chat-composer.js +75 -71
- package/dist-elements/tag/chat-message.js +8 -8
- package/dist-elements/tag/chat-strip.js +22 -22
- package/dist-elements/tag/chat-suggestions.js +12 -12
- package/dist-elements/tag/chat.js +56 -56
- package/dist-elements/tag/checkbox-group.d.ts +1 -0
- package/dist-elements/tag/checkbox-group.js +59 -0
- package/dist-elements/tag/checkbox.js +8 -8
- package/dist-elements/tag/code.js +9 -9
- package/dist-elements/tag/combobox.js +18 -18
- package/dist-elements/tag/conflict-alert.js +12 -12
- package/dist-elements/tag/copy-button.js +14 -14
- package/dist-elements/tag/data-table.js +878 -530
- package/dist-elements/tag/date-input.js +30 -30
- package/dist-elements/tag/date-range.js +37 -37
- package/dist-elements/tag/description-list.js +29 -32
- package/dist-elements/tag/dialog.d.ts +1 -0
- package/dist-elements/tag/dialog.js +144 -0
- package/dist-elements/tag/document-viewer.js +23 -23
- package/dist-elements/tag/drawer.js +28 -32
- package/dist-elements/tag/empty-state.js +19 -30
- package/dist-elements/tag/error-page.d.ts +1 -0
- package/dist-elements/tag/error-page.js +109 -0
- package/dist-elements/tag/error-summary.js +10 -10
- package/dist-elements/tag/expander.js +8 -8
- package/dist-elements/tag/explainer.js +11 -11
- package/dist-elements/tag/field.js +5 -5
- package/dist-elements/tag/file-upload.js +34 -34
- package/dist-elements/tag/filter-bar.js +56 -56
- package/dist-elements/tag/filter-sheet.js +11 -11
- package/dist-elements/tag/filter-zone.js +31 -31
- package/dist-elements/tag/footer.js +21 -21
- package/dist-elements/tag/form-actions.js +29 -25
- package/dist-elements/tag/form-section.js +6 -6
- package/dist-elements/tag/form.js +12 -12
- package/dist-elements/tag/gallery.js +14 -14
- package/dist-elements/tag/grid-item.js +1 -1
- package/dist-elements/tag/grid.js +1 -1
- package/dist-elements/tag/hero.js +12 -12
- package/dist-elements/tag/highlight.js +5 -5
- package/dist-elements/tag/icon-button.js +1 -1
- package/dist-elements/tag/icon.js +1 -1
- package/dist-elements/tag/job-list.js +22 -44
- package/dist-elements/tag/kpi-row.js +12 -10
- package/dist-elements/tag/kpi.js +146 -137
- package/dist-elements/tag/level-meter.js +11 -11
- package/dist-elements/tag/list.js +55 -55
- package/dist-elements/tag/logo.js +30 -30
- package/dist-elements/tag/map.js +690 -665
- package/dist-elements/tag/menu-button.js +70 -69
- package/dist-elements/tag/modal.js +28 -37
- package/dist-elements/tag/multiselect.js +34 -34
- package/dist-elements/tag/note.js +5 -5
- package/dist-elements/tag/notifications.js +36 -36
- package/dist-elements/tag/number-input.js +12 -12
- package/dist-elements/tag/page-header.js +140 -37
- package/dist-elements/tag/pagination.js +53 -48
- package/dist-elements/tag/popover.js +1 -1
- package/dist-elements/tag/progress-bar.js +1 -1
- package/dist-elements/tag/prose.js +6 -6
- package/dist-elements/tag/qr-code.js +7 -7
- package/dist-elements/tag/radio-group.js +12 -12
- package/dist-elements/tag/range.js +22 -22
- package/dist-elements/tag/recording-status.js +14 -14
- package/dist-elements/tag/repeater.js +10 -10
- package/dist-elements/tag/segmented.js +13 -13
- package/dist-elements/tag/select.js +10 -10
- package/dist-elements/tag/shell.js +356 -339
- package/dist-elements/tag/skeleton.js +1 -1
- package/dist-elements/tag/slot-picker.js +14 -14
- package/dist-elements/tag/sortable-list.js +14 -14
- package/dist-elements/tag/spinner.js +1 -1
- package/dist-elements/tag/split-pane.js +12 -12
- package/dist-elements/tag/status-dot.js +1 -1
- package/dist-elements/tag/stepper.js +21 -21
- package/dist-elements/tag/streaming-text.js +13 -13
- package/dist-elements/tag/sub-nav.js +39 -38
- package/dist-elements/tag/tabs.js +38 -38
- package/dist-elements/tag/tag-input.js +19 -19
- package/dist-elements/tag/text-editor.js +24 -24
- package/dist-elements/tag/text-input.js +14 -14
- package/dist-elements/tag/textarea.js +14 -14
- package/dist-elements/tag/tile.js +1 -1
- package/dist-elements/tag/time-input.js +19 -19
- package/dist-elements/tag/toast.js +32 -23
- package/dist-elements/tag/toggle.js +8 -8
- package/dist-elements/tag/toggletip.js +27 -27
- package/dist-elements/tag/tooltip.js +1 -1
- package/dist-elements/tag/transcript.js +48 -48
- package/dist-elements/tag/translator.js +13 -13
- package/dist-elements/tag/tree-view.js +13 -13
- package/dist-elements/tag/user-menu.js +37 -37
- package/dist-elements/tag/video-player.js +21 -21
- package/dist-elements/tokens.css +120 -96
- package/dist-elements/types/bundle/feedback.d.ts +1 -0
- package/dist-elements/types/bundle/frame.d.ts +0 -2
- package/dist-elements/types/bundle/inputs.d.ts +1 -0
- package/dist-elements/types/bundle/overlays.d.ts +1 -1
- package/dist-elements/types/components/actions/copy-button/copy-button.d.ts +6 -7
- package/dist-elements/types/components/actions/menu-button/menu-button.d.ts +13 -15
- package/dist-elements/types/components/actions/qr-code/qr-code.d.ts +9 -9
- package/dist-elements/types/components/charts/chart/chart.d.ts +5 -4
- package/dist-elements/types/components/charts/kpi/kpi.d.ts +16 -8
- package/dist-elements/types/components/charts/kpi-row/kpi-row.d.ts +1 -7
- package/dist-elements/types/components/charts/note/note.d.ts +1 -1
- package/dist-elements/types/components/chat/chat/chat.d.ts +8 -10
- package/dist-elements/types/components/chat/chat-answer/chat-answer.d.ts +7 -8
- package/dist-elements/types/components/chat/chat-composer/chat-composer.d.ts +8 -10
- package/dist-elements/types/components/chat/chat-message/chat-message.d.ts +6 -7
- package/dist-elements/types/components/chat/chat-strip/chat-strip.d.ts +5 -5
- package/dist-elements/types/components/chat/chat-suggestions/chat-suggestions.d.ts +9 -10
- package/dist-elements/types/components/content/audio-player/audio-player.d.ts +10 -12
- package/dist-elements/types/components/content/code/code.d.ts +2 -3
- package/dist-elements/types/components/content/document-viewer/document-viewer.d.ts +8 -9
- package/dist-elements/types/components/content/gallery/gallery.d.ts +5 -4
- package/dist-elements/types/components/content/highlight/highlight.d.ts +4 -3
- package/dist-elements/types/components/content/prose/prose.d.ts +2 -3
- package/dist-elements/types/components/content/transcript/transcript.d.ts +12 -25
- package/dist-elements/types/components/content/translator/translator.d.ts +11 -15
- package/dist-elements/types/components/content/video-player/video-player.d.ts +11 -13
- package/dist-elements/types/components/feedback/ai-label/ai-label.d.ts +3 -4
- package/dist-elements/types/components/feedback/announcement/announcement.d.ts +3 -7
- package/dist-elements/types/components/feedback/conflict-alert/conflict-alert.d.ts +3 -4
- package/dist-elements/types/components/feedback/empty-state/empty-state.d.ts +5 -8
- package/dist-elements/types/components/feedback/error-page/error-page.d.ts +52 -0
- package/dist-elements/types/components/feedback/job-list/job-list.d.ts +9 -12
- package/dist-elements/types/components/feedback/level-meter/level-meter.d.ts +4 -6
- package/dist-elements/types/components/feedback/recording-status/recording-status.d.ts +5 -6
- package/dist-elements/types/components/feedback/streaming-text/streaming-text.d.ts +10 -7
- package/dist-elements/types/components/feedback/toast/toast.d.ts +8 -9
- package/dist-elements/types/components/filters/filter-bar/filter-bar.d.ts +9 -4
- package/dist-elements/types/components/filters/filter-sheet/filter-sheet.d.ts +5 -5
- package/dist-elements/types/components/filters/filter-zone/filter-zone.d.ts +4 -4
- package/dist-elements/types/components/forms/error-summary/error-summary.d.ts +5 -6
- package/dist-elements/types/components/forms/form/form.d.ts +5 -5
- package/dist-elements/types/components/forms/form-actions/form-actions.d.ts +9 -7
- package/dist-elements/types/components/forms/form-section/form-section.d.ts +6 -5
- package/dist-elements/types/components/forms/repeater/repeater.d.ts +13 -7
- package/dist-elements/types/components/forms/stepper/stepper.d.ts +5 -4
- package/dist-elements/types/components/frame/app-search/app-search.d.ts +6 -7
- package/dist-elements/types/components/frame/breadcrumbs/breadcrumbs.d.ts +2 -2
- package/dist-elements/types/components/frame/footer/footer.d.ts +3 -2
- package/dist-elements/types/components/frame/hero/hero.d.ts +7 -9
- package/dist-elements/types/components/frame/notifications/notifications.d.ts +5 -9
- package/dist-elements/types/components/frame/page-header/page-header.d.ts +12 -15
- package/dist-elements/types/components/frame/shell/shell.d.ts +14 -13
- package/dist-elements/types/components/frame/sub-nav/sub-nav.d.ts +10 -6
- package/dist-elements/types/components/frame/user-menu/user-menu.d.ts +11 -10
- package/dist-elements/types/components/index.d.ts +8 -9
- package/dist-elements/types/components/inputs/checkbox/checkbox.d.ts +4 -4
- package/dist-elements/types/components/inputs/checkbox-group/checkbox-group.d.ts +33 -0
- package/dist-elements/types/components/inputs/combobox/combobox.d.ts +12 -6
- package/dist-elements/types/components/inputs/date-input/date-input.d.ts +5 -5
- package/dist-elements/types/components/inputs/date-range/date-range.d.ts +11 -6
- package/dist-elements/types/components/inputs/field/field.d.ts +5 -3
- package/dist-elements/types/components/inputs/file-upload/file-upload.d.ts +6 -8
- package/dist-elements/types/components/inputs/multiselect/multiselect.d.ts +4 -6
- package/dist-elements/types/components/inputs/number-input/number-input.d.ts +8 -7
- package/dist-elements/types/components/inputs/radio-group/radio-group.d.ts +2 -4
- package/dist-elements/types/components/inputs/range/range.d.ts +5 -6
- package/dist-elements/types/components/inputs/segmented/segmented.d.ts +7 -4
- package/dist-elements/types/components/inputs/select/select.d.ts +6 -3
- package/dist-elements/types/components/inputs/slot-picker/slot-picker.d.ts +6 -5
- package/dist-elements/types/components/inputs/tag-input/tag-input.d.ts +7 -5
- package/dist-elements/types/components/inputs/text-editor/text-editor.d.ts +6 -6
- package/dist-elements/types/components/inputs/text-input/text-input.d.ts +11 -6
- package/dist-elements/types/components/inputs/textarea/textarea.d.ts +12 -11
- package/dist-elements/types/components/inputs/time-input/time-input.d.ts +7 -8
- package/dist-elements/types/components/inputs/toggle/toggle.d.ts +3 -1
- package/dist-elements/types/components/layout/expander/expander.d.ts +9 -10
- package/dist-elements/types/components/layout/split-pane/split-pane.d.ts +6 -6
- package/dist-elements/types/components/layout/tabs/tabs.d.ts +11 -9
- package/dist-elements/types/components/map/map/map.d.ts +10 -9
- package/dist-elements/types/components/overlays/dialog/dialog.d.ts +49 -0
- package/dist-elements/types/components/overlays/drawer/drawer.d.ts +6 -5
- package/dist-elements/types/components/overlays/modal/modal.d.ts +7 -12
- package/dist-elements/types/components/overlays/toggletip/toggletip.d.ts +3 -7
- package/dist-elements/types/components/shared/charts/index.d.ts +4 -1
- package/dist-elements/types/components/shared/charts/kinds.d.ts +86 -0
- package/dist-elements/types/components/shared/charts/line-chart/line-chart.d.ts +2 -2
- package/dist-elements/types/components/shared/charts/map-chart/leaflet.d.ts +5 -0
- package/dist-elements/types/components/shared/charts/shared/chart-states.d.ts +8 -19
- package/dist-elements/types/components/shared/charts/shared/controller.d.ts +7 -0
- package/dist-elements/types/components/shared/charts/shared/types.d.ts +29 -0
- package/dist-elements/types/components/shared/charts/stacked-area-chart/stacked-area-chart.d.ts +13 -0
- package/dist-elements/types/components/shared/dialog.d.ts +9 -0
- package/dist-elements/types/components/shared/overflow.d.ts +58 -0
- package/dist-elements/types/components/tables/activity-log/activity-log.d.ts +2 -3
- package/dist-elements/types/components/tables/card/card.d.ts +14 -20
- package/dist-elements/types/components/tables/card-list/card-list.d.ts +9 -11
- package/dist-elements/types/components/tables/data-table/data-table.d.ts +85 -16
- package/dist-elements/types/components/tables/data-table/filters.d.ts +13 -4
- package/dist-elements/types/components/tables/description-list/description-list.d.ts +12 -11
- package/dist-elements/types/components/tables/list/list.d.ts +9 -20
- package/dist-elements/types/components/tables/pagination/pagination.d.ts +12 -11
- package/dist-elements/types/components/tables/sortable-list/sortable-list.d.ts +5 -6
- package/dist-elements/types/components/tables/tree-view/tree-view.d.ts +4 -4
- package/dist-elements/types/core/media.d.ts +2 -2
- package/dist-elements/types/core/motion.d.ts +5 -0
- package/dist-elements/types/core/print.d.ts +15 -0
- package/dist-elements/types/core/shortcuts.d.ts +2 -2
- package/dist-elements/types/icons/icon/icon.d.ts +2 -3
- package/dist-elements/types/icons/register.d.ts +1 -1
- package/dist-elements/types/primitives/badge/badge.d.ts +9 -5
- package/dist-elements/types/primitives/button/button.d.ts +12 -9
- package/dist-elements/types/primitives/grid/grid.d.ts +3 -3
- package/dist-elements/types/primitives/grid-item/grid-item.d.ts +1 -1
- package/dist-elements/types/primitives/icon-button/icon-button.d.ts +7 -5
- package/dist-elements/types/primitives/index.d.ts +3 -1
- package/dist-elements/types/primitives/popover/popover.d.ts +5 -4
- package/dist-elements/types/primitives/progress-bar/progress-bar.d.ts +8 -6
- package/dist-elements/types/primitives/shared/announcement-block.d.ts +38 -0
- package/dist-elements/types/primitives/shared/empty-state-block.d.ts +26 -0
- package/dist-elements/types/primitives/shared/tone.d.ts +18 -0
- package/dist-elements/types/primitives/skeleton/skeleton.d.ts +1 -1
- package/dist-elements/types/primitives/spinner/spinner.d.ts +1 -2
- package/dist-elements/types/primitives/status-dot/status-dot.d.ts +4 -5
- package/dist-elements/types/primitives/tile/tile.d.ts +17 -5
- package/dist-elements/types/primitives/tooltip/tooltip.d.ts +6 -6
- package/dist-elements/types/types.d.ts +70 -10
- package/dist-icons/functioneel-kolommen.svg +1 -0
- package/dist-icons/functioneel-trechter.svg +1 -0
- package/package.json +1 -1
- package/dist-elements/chunks/confirm-dialog-D5EVGuil.js +0 -4
- package/dist-elements/chunks/download-y528pIHP.js +0 -230
- package/dist-elements/chunks/input-BtuNFSWk.js +0 -195
- package/dist-elements/tag/confirm-dialog.d.ts +0 -1
- package/dist-elements/tag/confirm-dialog.js +0 -118
- package/dist-elements/tag/session-expiry.d.ts +0 -1
- package/dist-elements/tag/session-expiry.js +0 -184
- package/dist-elements/tag/shortcuts.d.ts +0 -1
- package/dist-elements/tag/shortcuts.js +0 -104
- package/dist-elements/types/components/frame/session-expiry/session-expiry.d.ts +0 -55
- package/dist-elements/types/components/frame/shortcuts/shortcuts.d.ts +0 -41
- package/dist-elements/types/components/overlays/confirm-dialog/confirm-dialog.d.ts +0 -41
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { t as p } from "../chunks/sentence-
|
|
1
|
+
import { Gt as e, I as t, Jt as n, Kt as r, Q as i, Ut as a, Yt as o, Zt as s, en as c, lt as l, nn as u, st as d, ut as f } from "../chunks/base-CbmWxUig.js";
|
|
2
|
+
import { t as p } from "../chunks/sentence-B19AyZBS.js";
|
|
3
3
|
function m(e) {
|
|
4
4
|
return e.open;
|
|
5
5
|
}
|
|
@@ -28,18 +28,18 @@ function g(e) {
|
|
|
28
28
|
}
|
|
29
29
|
//#endregion
|
|
30
30
|
//#region src/components/filters/filter-zone/filter-zone.css?inline
|
|
31
|
-
var _ = "/*\n * The filter zone's own box: header, controls row, sentence and summary bar. Rules that reach\n * into a control live in `filter-layout.css`, adopted by the elements that own the controls.\n */\n:host {\n display: block;\n}\n\n/* --- */\n\n.lintje-filter-bar {\n background: var(--color-bg-filter);\n border-top: 1px solid var(--color-border-filter);\n}\n\n.lintje-filter-bar__header {\n display: flex;\n align-items: center;\n gap: var(--space-3);\n height: var(--h-contextbar);\n padding: 0 calc(var(--space-6) + var(--page-gutter));\n /* An inset shadow, not a border: a border would shift the toggle half a pixel off the\n summary bar's. */\n box-shadow: inset 0 -1px 0 var(--color-border-filter);\n}\n.lintje-filter-bar__title { font-size: 1rem; font-weight: 700; }\n.lintje-filter-bar__hint { font: var(--text-small); color: var(--color-text-muted); }\n.lintje-filter-bar__spacer { flex: 1; }\n\n.lintje-filter-bar__counter {\n display: flex; align-items: center; gap: 6px;\n font: var(--text-small); color: var(--color-text-primary);\n}\n.lintje-filter-bar__dot {\n width: 8px; height: 8px; border-radius: 50%;\n background: var(--color-attention); flex: none;\n}\n.lintje-filter-bar__reset {\n display: flex; align-items: center;\n min-height: var(--h-target);\n font-size: 0.875rem; font-weight: 700;\n color: var(--color-link); text-decoration: underline;\n margin: 0 var(--space-2);\n}\n\n/* --- Opening and closing -------------------------------------------------- */\n/* `0fr -> 1fr` transitions to the content height without measuring it in JS. The body stays\n in the DOM, so the fade is a transition, not a keyframe. */\n.lintje-filter-bar__body {\n display: grid;\n grid-template-rows: 0fr;\n transition: grid-template-rows var(--dur-collapse) var(--ease-in-motion);\n}\n.lintje-filter-bar.is-open .lintje-filter-bar__body { grid-template-rows: 1fr; }\n\n.lintje-filter-bar__body-inner {\n min-height: 0;\n overflow: hidden;\n opacity: 0;\n /* Closed, out of the tab order and the accessibility tree; hiding waits for the collapse. */\n visibility: hidden;\n transition:\n opacity var(--dur-collapse) var(--ease-in-motion),\n visibility 0s linear var(--dur-collapse);\n}\n.lintje-filter-bar.is-open .lintje-filter-bar__body-inner {\n opacity: 1;\n visibility: visible;\n transition: opacity var(--dur-collapse) var(--ease-in-motion), visibility 0s;\n}\n/* Standing open, nothing clips: popovers hang out of the zone. */\n.lintje-filter-bar.is-settled .lintje-filter-bar__body-inner { overflow: visible; }\n\n.lintje-filter-bar__header,\n.lintje-summary-bar {\n animation: lintje-fade-in var(--dur-collapse) var(--ease-in-motion);\n}\n\n/* Aligned at the top: what a control carries below its box (the range's ticks) hangs below the\n line instead of pushing its neighbours down. */\n.lintje-filter-bar__controls {\n display: flex;\n gap: var(--grid-gutter);\n padding: 14px calc(var(--space-6) + var(--page-gutter)) 18px;\n align-items: flex-start;\n flex-wrap: wrap;\n}\n\n@media (min-width: 1440px) {\n .lintje-filter-bar__controls { flex-wrap: nowrap; }\n}\n@media (min-width: 768px) and (max-width: 1023px) {\n .lintje-filter-bar__controls { display: grid; grid-template-columns: 1fr 1fr; }\n}\n\n.lintje-filter-bar__summary {\n display: flex; align-items: center; gap: 10px;\n padding: 0 calc(var(--space-6) + var(--page-gutter)) 14px;\n font: var(--text-ui);\n color: var(--color-text-primary);\n}\n\n/* --- Collapsed summary bar (48 px) -------------------------------------- */\n.lintje-summary-bar {\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: var(--space-4);\n height: var(--h-contextbar);\n padding: 0 calc(var(--space-6) + var(--page-gutter));\n}\n.lintje-summary-bar__sentence {\n display: flex; align-items: center; gap: 10px;\n font: var(--text-ui);\n color: var(--color-text-primary);\n min-width: 0;\n white-space: nowrap; overflow: hidden; text-overflow: ellipsis;\n text-align: left;\n padding: 0 6px; margin: 0 -6px;\n height: 100%;\n}\n.lintje-summary-bar__sentence:hover { background: var(--color-bg-subtle); }\n.lintje-summary-bar__sentence .lintje-filter-summary__text { overflow: hidden; text-overflow: ellipsis; }\n.lintje-summary-bar__spacer { flex: 1; }\n.lintje-summary-bar__counter {\n display: flex; align-items: center; gap: 6px;\n font: var(--text-small); color: var(--color-text-muted); flex: none;\n}\n.lintje-summary-bar__dot {\n width: 6px; height: 6px; border-radius: 50%;\n background: var(--color-attention); flex: none;\n}\n.lintje-summary-bar__reset {\n display: flex; align-items: center;\n min-height: var(--h-target);\n font-size: 0.875rem; font-weight: 700;\n color: var(--color-link); text-decoration: underline;\n margin: 0 var(--space-2);\n}\n/* --- The one filter toggle ----------------------------------------------- */\n/* Last in the row in both states, so the second click lands on the toggle again. */\n.lintje-filter-toggle {\n position: relative;\n display: flex; align-items: center; gap: var(--space-2);\n height: var(--h-button-compact);\n padding: 0 var(--space-3);\n border: 1px solid var(--color-border-strong);\n background: transparent;\n font-size: 0.875rem; font-weight: 400;\n color: var(--color-text-primary);\n flex: none;\n transition: background var(--dur-hover) var(--ease-in-motion),\n border-color var(--dur-hover) var(--ease-in-motion);\n}\n.lintje-filter-toggle:hover { background: var(--color-bg-subtle); }\n/* A transparent hit area above and below reaches the full target height. */\n.lintje-filter-toggle::after {\n content: '';\n position: absolute;\n inset: min(0px, calc((100% - var(--h-target)) / 2)) 0;\n}\n.lintje-filter-toggle__chevron {\n transform-origin: 50% 50%;\n transition: transform var(--dur-collapse) var(--ease-in-motion);\n}\n.lintje-filter-toggle.is-expanded .lintje-filter-toggle__chevron { transform: rotate(180deg); }\n\n/* Before the filter bar: 1 px tall for the observer, -1 px margin so layout is unchanged. */\n.lintje-filter-bar__sentinel { height: 1px; margin-bottom: -1px; }\n/* Scrolled: the collapsed zone sticks below the top bar. */\n.lintje-filter-bar.is-sticky {\n position: sticky;\n top: var(--h-topbar);\n z-index: 19;\n box-shadow: inset 0 -1px 0 var(--color-border-filter), var(--shadow-sticky);\n /* Stuck, the top bar's line is the separator; this one goes transparent, keeping its pixel. */\n border-top-color: transparent;\n}\n\n/* Stuck and expanded: the zone unfolds where it stands; the z-index stays under the menu's 30. */\n.lintje-filter-bar.is-stuck-open {\n max-height: calc(100vh - var(--h-topbar));\n}\n/* Only when the panel does not fit (`LintjeFilterZone` measures it): scrolling clips popovers. */\n.lintje-filter-bar.is-stuck-open.is-scrollable { overflow-y: auto; }\n\n/* --- Mobile -------------------------------------------------------------- */\n.lintje-filter-bar--mobile {\n border-bottom: 1px solid var(--color-border-default);\n padding: var(--space-3) var(--space-4);\n box-shadow: var(--shadow-sticky);\n position: sticky;\n top: var(--h-mobile-header);\n z-index: 19;\n}\n.lintje-filter-bar__mobile-summary {\n display: flex; align-items: flex-start; gap: 10px;\n font: var(--text-ui); line-height: 1.4;\n}\n.lintje-filter-bar__mobile-summary .lintje-filter-summary__icon { margin-top: 2px; }\n\n/* --- Pinned instead of sticky ---------------------------------------------- */\n.lintje-filter-bar--fixed.is-sticky {\n position: fixed;\n left: var(--lintje-shell-left, 0px);\n right: 0;\n}\n.lintje-filter-bar__placeholder { height: var(--h-contextbar); }\n\n/* --- More than four filters ------------------------------------------------ */\n/* The one-line rule from 1440 px fits four controls; more wrap. */\n.lintje-filter-bar--wrap .lintje-filter-bar__controls { flex-wrap: wrap; }\n\n\n@media print {\n .lintje-filter-bar.is-sticky, .lintje-filter-bar--fixed.is-sticky { position: static; box-shadow: none; }\n .lintje-filter-toggle, .lintje-filter-bar__reset, .lintje-filter-bar__counter { display: none; }\n}\n\n/* Forced colours drop the fill and the inset shadow, so the row takes a real border. */\n@media (forced-colors: active) {\n .lintje-filter-bar__header { border-bottom: 1px solid CanvasText; }\n}\n", v = class extends
|
|
32
|
-
constructor(...
|
|
33
|
-
super(...
|
|
31
|
+
var _ = "/*\n * The filter zone's own box: header, controls row, sentence and summary bar. Rules that reach\n * into a control live in `filter-layout.css`, adopted by the elements that own the controls.\n */\n:host {\n display: block;\n}\n\n/* --- */\n\n.lintje-filter-bar {\n background: var(--color-bg-filter);\n border-top: 1px solid var(--color-border-filter);\n}\n\n.lintje-filter-bar__header {\n display: flex;\n align-items: center;\n gap: var(--space-3);\n height: var(--h-contextbar);\n padding: 0 calc(var(--space-6) + var(--page-gutter));\n /* An inset shadow, not a border: a border would shift the toggle half a pixel off the\n summary bar's. */\n box-shadow: inset 0 -1px 0 var(--color-border-filter);\n}\n.lintje-filter-bar__title { font-size: 1rem; font-weight: 700; }\n.lintje-filter-bar__hint { font: var(--text-small); color: var(--color-text-muted); }\n.lintje-filter-bar__spacer { flex: 1; }\n\n.lintje-filter-bar__counter {\n display: flex; align-items: center; gap: 6px;\n font: var(--text-small); color: var(--color-text-primary);\n}\n.lintje-filter-bar__dot {\n width: 8px; height: 8px; border-radius: 50%;\n background: var(--color-attention); flex: none;\n}\n.lintje-filter-bar__reset {\n display: flex; align-items: center;\n min-height: var(--h-target);\n font-size: 0.875rem; font-weight: 700;\n color: var(--color-link); text-decoration: underline;\n margin: 0 var(--space-2);\n}\n\n/* --- Opening and closing -------------------------------------------------- */\n/* `0fr -> 1fr` transitions to the content height without measuring it in JS. The body stays\n in the DOM, so the fade is a transition, not a keyframe. */\n.lintje-filter-bar__body {\n display: grid;\n grid-template-rows: 0fr;\n transition: grid-template-rows var(--dur-collapse) var(--ease-in-motion);\n}\n.lintje-filter-bar.is-open .lintje-filter-bar__body { grid-template-rows: 1fr; }\n\n.lintje-filter-bar__body-inner {\n min-height: 0;\n overflow: hidden;\n opacity: 0;\n /* Closed, out of the tab order and the accessibility tree; hiding waits for the collapse. */\n visibility: hidden;\n transition:\n opacity var(--dur-collapse) var(--ease-in-motion),\n visibility 0s linear var(--dur-collapse);\n}\n.lintje-filter-bar.is-open .lintje-filter-bar__body-inner {\n opacity: 1;\n visibility: visible;\n transition: opacity var(--dur-collapse) var(--ease-in-motion), visibility 0s;\n}\n/* Standing open, nothing clips: popovers hang out of the zone. */\n.lintje-filter-bar.is-settled .lintje-filter-bar__body-inner { overflow: visible; }\n\n.lintje-filter-bar__header,\n.lintje-summary-bar {\n animation: lintje-fade-in var(--dur-collapse) var(--ease-in-motion);\n}\n\n/* Aligned at the top: what a control carries below its box (the range's ticks) hangs below the\n line instead of pushing its neighbours down. */\n.lintje-filter-bar__controls {\n display: flex;\n gap: var(--grid-gutter);\n padding: 14px calc(var(--space-6) + var(--page-gutter)) 18px;\n align-items: flex-start;\n flex-wrap: wrap;\n}\n\n@media (min-width: 1440px) {\n .lintje-filter-bar__controls { flex-wrap: nowrap; }\n}\n@media (min-width: 768px) and (max-width: 1023px), print and (max-width: 1023px) {\n .lintje-filter-bar__controls { display: grid; grid-template-columns: 1fr 1fr; }\n}\n\n.lintje-filter-bar__summary {\n display: flex; align-items: center; gap: 10px;\n padding: 0 calc(var(--space-6) + var(--page-gutter)) 14px;\n font: var(--text-ui);\n color: var(--color-text-primary);\n}\n\n/* --- Collapsed summary bar (48 px) -------------------------------------- */\n.lintje-summary-bar {\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: var(--space-4);\n height: var(--h-contextbar);\n padding: 0 calc(var(--space-6) + var(--page-gutter));\n}\n.lintje-summary-bar__sentence {\n display: flex; align-items: center; gap: 10px;\n font: var(--text-ui);\n color: var(--color-text-primary);\n min-width: 0;\n white-space: nowrap; overflow: hidden; text-overflow: ellipsis;\n text-align: left;\n padding: 0 6px; margin: 0 -6px;\n height: 100%;\n}\n.lintje-summary-bar__sentence:hover { background: var(--color-bg-subtle); }\n.lintje-summary-bar__sentence .lintje-filter-summary__text { overflow: hidden; text-overflow: ellipsis; }\n.lintje-summary-bar__spacer { flex: 1; }\n.lintje-summary-bar__counter {\n display: flex; align-items: center; gap: 6px;\n font: var(--text-small); color: var(--color-text-muted); flex: none;\n}\n.lintje-summary-bar__dot {\n width: 6px; height: 6px; border-radius: 50%;\n background: var(--color-attention); flex: none;\n}\n.lintje-summary-bar__reset {\n display: flex; align-items: center;\n min-height: var(--h-target);\n font-size: 0.875rem; font-weight: 700;\n color: var(--color-link); text-decoration: underline;\n margin: 0 var(--space-2);\n}\n/* --- The one filter toggle ----------------------------------------------- */\n/* Last in the row in both states, so the second click lands on the toggle again. */\n.lintje-filter-toggle {\n position: relative;\n display: flex; align-items: center; gap: var(--space-2);\n height: var(--h-button-compact);\n padding: 0 var(--space-3);\n border: 1px solid var(--color-border-strong);\n background: transparent;\n font-size: 0.875rem; font-weight: 400;\n color: var(--color-text-primary);\n flex: none;\n transition: background var(--dur-hover) var(--ease-in-motion),\n border-color var(--dur-hover) var(--ease-in-motion);\n}\n.lintje-filter-toggle:hover { background: var(--color-bg-subtle); }\n/* A transparent hit area above and below reaches the full target height. */\n.lintje-filter-toggle::after {\n content: '';\n position: absolute;\n inset: min(0px, calc((100% - var(--h-target)) / 2)) 0;\n}\n.lintje-filter-toggle__chevron {\n transform-origin: 50% 50%;\n transition: transform var(--dur-collapse) var(--ease-in-motion);\n}\n.lintje-filter-toggle.is-expanded .lintje-filter-toggle__chevron { transform: rotate(180deg); }\n\n/* Before the filter bar: 1 px tall for the observer, -1 px margin so layout is unchanged. */\n.lintje-filter-bar__sentinel { height: 1px; margin-bottom: -1px; }\n/* Scrolled: the collapsed zone sticks below the top bar. */\n.lintje-filter-bar.is-sticky {\n position: sticky;\n top: var(--h-topbar);\n z-index: 19;\n box-shadow: inset 0 -1px 0 var(--color-border-filter), var(--shadow-sticky);\n /* Stuck, the top bar's line is the separator; this one goes transparent, keeping its pixel. */\n border-top-color: transparent;\n}\n\n/* Stuck and expanded: the zone unfolds where it stands; the z-index stays under the menu's 30. */\n.lintje-filter-bar.is-stuck-open {\n max-height: calc(100vh - var(--h-topbar));\n}\n/* Only when the panel does not fit (`LintjeFilterZone` measures it): scrolling clips popovers. */\n.lintje-filter-bar.is-stuck-open.is-scrollable { overflow-y: auto; }\n\n/* --- Mobile -------------------------------------------------------------- */\n.lintje-filter-bar--mobile {\n border-bottom: 1px solid var(--color-border-default);\n padding: var(--space-3) var(--space-4);\n box-shadow: var(--shadow-sticky);\n position: sticky;\n top: var(--h-mobile-header);\n z-index: 19;\n}\n.lintje-filter-bar__mobile-summary {\n display: flex; align-items: flex-start; gap: 10px;\n font: var(--text-ui); line-height: 1.4;\n}\n.lintje-filter-bar__mobile-summary .lintje-filter-summary__icon { margin-top: 2px; }\n\n/* --- Pinned instead of sticky ---------------------------------------------- */\n.lintje-filter-bar--fixed.is-sticky {\n position: fixed;\n left: var(--lintje-shell-left, 0px);\n right: 0;\n}\n.lintje-filter-bar__placeholder { height: var(--h-contextbar); }\n\n/* --- More than four filters ------------------------------------------------ */\n/* The one-line rule from 1440 px fits four controls; more wrap. */\n.lintje-filter-bar--wrap .lintje-filter-bar__controls { flex-wrap: wrap; }\n\n\n/* On paper the sentence stands at the paper's edge, in line with the content under it. */\n@media print {\n .lintje-filter-bar.is-sticky, .lintje-filter-bar--fixed.is-sticky { position: static; box-shadow: none; }\n .lintje-filter-toggle, .lintje-filter-bar__reset, .lintje-filter-bar__counter { display: none; }\n .lintje-filter-bar__header,\n .lintje-filter-bar__summary,\n .lintje-summary-bar { padding-inline: 0; }\n}\n\n/* Forced colours drop the fill and the inset shadow, so the row takes a real border. */\n@media (forced-colors: active) {\n .lintje-filter-bar__header { border-bottom: 1px solid CanvasText; }\n}\n", v = class extends n {
|
|
32
|
+
constructor(...t) {
|
|
33
|
+
super(...t), this.total = 0, this.modified = 0, this.open = !1, this.scrolled = !1, this.settled = !0, this.scrollable = !1, this.stick = "sticky", this.sentence = [], this.mobile = new r(this, e), this.observer = null, this.observed = void 0, this.wasExpanded = void 0, this.onResize = () => this.measureOverflow(), this.#e = !1, this.#t = 0, this.#n = null, this.onPageScroll = () => {
|
|
34
34
|
let e = this.renderRoot.querySelector(".lintje-filter-bar__body");
|
|
35
|
-
e &&
|
|
35
|
+
e && i(e) || this.act({
|
|
36
36
|
type: "page-scrolled",
|
|
37
37
|
distance: this.pageScroll() - this.#t
|
|
38
38
|
});
|
|
39
39
|
};
|
|
40
40
|
}
|
|
41
41
|
static {
|
|
42
|
-
this.styles = [
|
|
42
|
+
this.styles = [l, s(_)];
|
|
43
43
|
}
|
|
44
44
|
static {
|
|
45
45
|
this.properties = {
|
|
@@ -83,10 +83,10 @@ var _ = "/*\n * The filter zone's own box: header, controls row, sentence and su
|
|
|
83
83
|
willUpdate(e) {
|
|
84
84
|
if (super.willUpdate(e), !e.has("open") && !e.has("modified")) return;
|
|
85
85
|
let t = this.renderRoot.querySelector(".lintje-filter-bar__header, .lintje-summary-bar");
|
|
86
|
-
this.#e = this.#e || t != null &&
|
|
86
|
+
this.#e = this.#e || t != null && i(t);
|
|
87
87
|
}
|
|
88
88
|
updated(e) {
|
|
89
|
-
this.#e && (this.#e = !1,
|
|
89
|
+
this.#e && (this.#e = !1, i(this) || this.renderRoot.querySelector(".lintje-filter-toggle")?.focus());
|
|
90
90
|
let n = !this.mobile.matches && m(this.state);
|
|
91
91
|
if (n !== this.wasExpanded) {
|
|
92
92
|
let e = this.wasExpanded === void 0;
|
|
@@ -99,9 +99,9 @@ var _ = "/*\n * The filter zone's own box: header, controls row, sentence and su
|
|
|
99
99
|
this.report(!1);
|
|
100
100
|
return;
|
|
101
101
|
}
|
|
102
|
-
let
|
|
102
|
+
let a = t(r, "--h-topbar", 56);
|
|
103
103
|
this.observer = new IntersectionObserver(([e]) => this.report(!e.isIntersecting), {
|
|
104
|
-
rootMargin: `-${
|
|
104
|
+
rootMargin: `-${a}px 0px 0px 0px`,
|
|
105
105
|
threshold: 0
|
|
106
106
|
}), this.observer.observe(r);
|
|
107
107
|
}
|
|
@@ -110,14 +110,14 @@ var _ = "/*\n * The filter zone's own box: header, controls row, sentence and su
|
|
|
110
110
|
}
|
|
111
111
|
canPin() {
|
|
112
112
|
if (this.stick !== "fixed" || this.scrolled) return !0;
|
|
113
|
-
let e = this.renderRoot.querySelector(".lintje-filter-bar__sentinel"), n = this.renderRoot.querySelector(".lintje-filter-bar"), r =
|
|
113
|
+
let e = this.renderRoot.querySelector(".lintje-filter-bar__sentinel"), n = this.renderRoot.querySelector(".lintje-filter-bar"), r = a(), i = r && r !== document.scrollingElement ? r : document.scrollingElement;
|
|
114
114
|
if (!e || !n || !i) return !0;
|
|
115
|
-
let
|
|
115
|
+
let o = t(e, "--h-topbar", 56);
|
|
116
116
|
return g({
|
|
117
117
|
scrollHeight: i.scrollHeight,
|
|
118
118
|
viewportHeight: i.clientHeight,
|
|
119
119
|
lost: n.offsetHeight - t(n, "--h-contextbar", 48),
|
|
120
|
-
threshold: this.pageScroll() + e.getBoundingClientRect().top -
|
|
120
|
+
threshold: this.pageScroll() + e.getBoundingClientRect().top - o
|
|
121
121
|
});
|
|
122
122
|
}
|
|
123
123
|
get state() {
|
|
@@ -133,28 +133,28 @@ var _ = "/*\n * The filter zone's own box: header, controls row, sentence and su
|
|
|
133
133
|
#t;
|
|
134
134
|
#n;
|
|
135
135
|
pageScroll() {
|
|
136
|
-
let e =
|
|
136
|
+
let e = a();
|
|
137
137
|
return e && e !== document.scrollingElement ? e.scrollTop : window.scrollY;
|
|
138
138
|
}
|
|
139
139
|
watchPageScroll(e) {
|
|
140
140
|
if (this.#n?.removeEventListener("scroll", this.onPageScroll), this.#n = null, !e || this.mobile.matches) return;
|
|
141
|
-
let t =
|
|
141
|
+
let t = a();
|
|
142
142
|
this.#n = t && t !== document.scrollingElement ? t : window, this.#t = this.pageScroll(), this.#n.addEventListener("scroll", this.onPageScroll, { passive: !0 });
|
|
143
143
|
}
|
|
144
144
|
render() {
|
|
145
|
-
if (this.mobile.matches) return
|
|
145
|
+
if (this.mobile.matches) return u`<div class="lintje-filter-bar lintje-filter-bar--mobile">
|
|
146
146
|
<p class="lintje-filter-bar__mobile-summary">${p(this.sentence)}</p>
|
|
147
147
|
</div>`;
|
|
148
148
|
let e = m(this.state), t = this.scrolled && this.stick === "fixed";
|
|
149
|
-
return
|
|
149
|
+
return u`
|
|
150
150
|
<!-- The sentinel sits before the zone, not after it. After the zone it moves along
|
|
151
151
|
when the zone collapses (461 -> 334 px), so when scrolling back up the threshold
|
|
152
152
|
releases 127 px later than it triggered. Before the zone it stays put, and the
|
|
153
153
|
threshold triggers the moment the bar touches the top bar. -->
|
|
154
154
|
<div class="lintje-filter-bar__sentinel" aria-hidden="true"></div>
|
|
155
|
-
${t ?
|
|
155
|
+
${t ? u`<div class="lintje-filter-bar__placeholder" aria-hidden="true"></div>` : c}
|
|
156
156
|
<div
|
|
157
|
-
class=${
|
|
157
|
+
class=${d({
|
|
158
158
|
"lintje-filter-bar": !0,
|
|
159
159
|
"is-open": e,
|
|
160
160
|
"is-settled": e && this.settled,
|
|
@@ -180,13 +180,13 @@ var _ = "/*\n * The filter zone's own box: header, controls row, sentence and su
|
|
|
180
180
|
`;
|
|
181
181
|
}
|
|
182
182
|
renderHeader() {
|
|
183
|
-
return
|
|
183
|
+
return u`
|
|
184
184
|
<div class="lintje-filter-bar__header">
|
|
185
|
-
${
|
|
185
|
+
${f("functioneel-filters", { size: 16 })}
|
|
186
186
|
<span class="lintje-filter-bar__title">Filters</span>
|
|
187
187
|
<span class="lintje-filter-bar__hint">gelden voor alle cijfers op deze pagina</span>
|
|
188
188
|
<span class="lintje-filter-bar__spacer"></span>
|
|
189
|
-
${this.modified > 0 ?
|
|
189
|
+
${this.modified > 0 ? u`<span class="lintje-filter-bar__counter">
|
|
190
190
|
<span class="lintje-filter-bar__dot"></span>
|
|
191
191
|
${this.modified} van ${this.total} afwijkend
|
|
192
192
|
</span>
|
|
@@ -196,13 +196,13 @@ var _ = "/*\n * The filter zone's own box: header, controls row, sentence and su
|
|
|
196
196
|
@click=${() => this.emitLocal("lintje-filters-reset")}
|
|
197
197
|
>
|
|
198
198
|
Herstel standaard
|
|
199
|
-
</button>` :
|
|
199
|
+
</button>` : c}
|
|
200
200
|
${this.renderToggle(!0)}
|
|
201
201
|
</div>
|
|
202
202
|
`;
|
|
203
203
|
}
|
|
204
204
|
renderSummaryBar() {
|
|
205
|
-
return
|
|
205
|
+
return u`<div
|
|
206
206
|
class="lintje-summary-bar"
|
|
207
207
|
@click=${(e) => {
|
|
208
208
|
e.target.closest("button") || this.act({ type: "expand" });
|
|
@@ -218,7 +218,7 @@ var _ = "/*\n * The filter zone's own box: header, controls row, sentence and su
|
|
|
218
218
|
${p(this.sentence)}
|
|
219
219
|
</button>
|
|
220
220
|
<span class="lintje-summary-bar__spacer"></span>
|
|
221
|
-
${this.modified > 0 ?
|
|
221
|
+
${this.modified > 0 ? u`<span class="lintje-summary-bar__counter">
|
|
222
222
|
<span class="lintje-summary-bar__dot"></span>
|
|
223
223
|
${this.modified} afwijkend ·
|
|
224
224
|
<button
|
|
@@ -228,14 +228,14 @@ var _ = "/*\n * The filter zone's own box: header, controls row, sentence and su
|
|
|
228
228
|
>
|
|
229
229
|
herstel
|
|
230
230
|
</button>
|
|
231
|
-
</span>` :
|
|
231
|
+
</span>` : c}
|
|
232
232
|
${this.renderToggle(!1)}
|
|
233
233
|
</div>`;
|
|
234
234
|
}
|
|
235
235
|
renderToggle(e) {
|
|
236
|
-
return
|
|
236
|
+
return u`<button
|
|
237
237
|
type="button"
|
|
238
|
-
class=${
|
|
238
|
+
class=${d({
|
|
239
239
|
"lintje-filter-toggle": !0,
|
|
240
240
|
"is-expanded": e
|
|
241
241
|
})}
|
|
@@ -245,13 +245,13 @@ var _ = "/*\n * The filter zone's own box: header, controls row, sentence and su
|
|
|
245
245
|
@click=${() => this.act({ type: e ? "collapse" : "expand" })}
|
|
246
246
|
>
|
|
247
247
|
Filters
|
|
248
|
-
${
|
|
248
|
+
${f("functioneel-delta-omlaag", {
|
|
249
249
|
size: 16,
|
|
250
250
|
className: "lintje-filter-toggle__chevron"
|
|
251
251
|
})}
|
|
252
252
|
</button>`;
|
|
253
253
|
}
|
|
254
254
|
};
|
|
255
|
-
|
|
255
|
+
o("lintje-filter-zone", v);
|
|
256
256
|
//#endregion
|
|
257
257
|
export { v as LintjeFilterZone };
|
|
@@ -1,43 +1,43 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { H as e, Jt as t, Yt as n, Zt as r, en as i, nn as a, nt as o } from "../chunks/base-CbmWxUig.js";
|
|
2
2
|
//#region src/components/frame/footer/footer.css?inline
|
|
3
|
-
var
|
|
3
|
+
var s = ":host { display: block; min-width: 0; }\n:host([hidden]) { display: none; }\n\n/* ------------------------------------------------------------------------ */\n\n.lintje-footer {\n background: var(--color-footer-bg);\n color: var(--color-footer-text);\n font: var(--text-ui);\n}\n.lintje-footer :focus-visible { outline-color: var(--color-footer-focus); }\n\n/* The text keeps to the content column, as the bars above the page do. */\n.lintje-footer__inner {\n display: flex; flex-direction: column;\n gap: var(--space-8);\n padding: var(--space-10) calc(var(--page-pad-x) + var(--page-gutter)) var(--space-8);\n}\n\n.lintje-footer__tagline { margin: 0; font: var(--text-h2); }\n\n.lintje-footer__columns {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--w-footer-column)), 1fr));\n gap: var(--space-8) var(--grid-gutter);\n}\n.lintje-footer__column { display: flex; flex-direction: column; gap: var(--space-3); min-width: 0; }\n.lintje-footer__heading {\n margin: 0;\n font-size: var(--label-size); font-weight: var(--label-weight);\n letter-spacing: var(--label-tracking); text-transform: uppercase;\n}\n.lintje-footer__list,\n.lintje-footer__meta { list-style: none; margin: 0; padding: 0; }\n.lintje-footer__list { display: flex; flex-direction: column; gap: var(--space-3); }\n\n.lintje-footer__link,\n.lintje-footer__meta-link {\n display: inline-flex; align-items: center;\n min-height: var(--h-touch);\n color: inherit;\n text-decoration: none;\n}\n/* A list of text links keeps the house style's rhythm: a line high, 12 px apart. */\n.lintje-footer__link { min-height: var(--h-target-text); }\n.lintje-footer__link:hover,\n.lintje-footer__meta-link:hover { text-decoration: underline; text-underline-offset: 0.2em; }\n\n/* The links every page carries, apart from the columns by a line. */\n.lintje-footer__bottom {\n display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between;\n gap: var(--space-2) var(--space-6);\n padding-top: var(--space-4);\n border-top: 1px solid var(--color-footer-line);\n}\n.lintje-footer__meta { display: flex; flex-wrap: wrap; gap: 0 var(--space-6); }\n.lintje-footer__meta-link { font: var(--text-small); }\n/* The full text colour: a muted one would fall under 4.5:1 on the theme's fill. */\n.lintje-footer__note { margin: 0; font: var(--text-small); }\n\n@media screen and (max-width: 767px) {\n .lintje-footer__inner { padding-top: var(--space-8); }\n .lintje-footer__columns { grid-template-columns: minmax(0, 1fr); }\n}\n", c = class extends t {
|
|
4
4
|
static {
|
|
5
|
-
this.styles =
|
|
5
|
+
this.styles = [r(s), r(o)];
|
|
6
6
|
}
|
|
7
7
|
static {
|
|
8
8
|
this.properties = { data: { attribute: !1 } };
|
|
9
9
|
}
|
|
10
|
-
onLink(
|
|
11
|
-
|
|
10
|
+
onLink(t, n) {
|
|
11
|
+
e(t) && this.followLink(n, t);
|
|
12
12
|
}
|
|
13
13
|
link(e, t) {
|
|
14
|
-
return
|
|
14
|
+
return a`<a class=${t} href=${e.href} @click=${(t) => this.onLink(t, e.href)}
|
|
15
15
|
>${e.label}</a
|
|
16
16
|
>`;
|
|
17
17
|
}
|
|
18
18
|
render() {
|
|
19
|
-
let e = this.data ?? {},
|
|
20
|
-
return
|
|
19
|
+
let e = this.data ?? {}, t = e.columns ?? [], n = e.links ?? [];
|
|
20
|
+
return a`<footer class="lintje-footer">
|
|
21
21
|
<div class="lintje-footer__inner">
|
|
22
|
-
${e.tagline ?
|
|
23
|
-
${
|
|
24
|
-
${
|
|
22
|
+
${e.tagline ? a`<p class="lintje-footer__tagline">${e.tagline}</p>` : i}
|
|
23
|
+
${t.length ? a`<div class="lintje-footer__columns">
|
|
24
|
+
${t.map((e) => a`<section class="lintje-footer__column">
|
|
25
25
|
<h2 class="lintje-footer__heading">${e.heading}</h2>
|
|
26
26
|
<ul class="lintje-footer__list">
|
|
27
|
-
${e.links.map((e) =>
|
|
27
|
+
${e.links.map((e) => a`<li>${this.link(e, "lintje-footer__link")}</li>`)}
|
|
28
28
|
</ul>
|
|
29
29
|
</section>`)}
|
|
30
|
-
</div>` :
|
|
31
|
-
${
|
|
32
|
-
${
|
|
33
|
-
${
|
|
34
|
-
</ul>` :
|
|
35
|
-
${e.note ?
|
|
36
|
-
</div>` :
|
|
30
|
+
</div>` : i}
|
|
31
|
+
${n.length || e.note ? a`<div class="lintje-footer__bottom">
|
|
32
|
+
${n.length ? a`<ul class="lintje-footer__meta">
|
|
33
|
+
${n.map((e) => a`<li>${this.link(e, "lintje-footer__meta-link")}</li>`)}
|
|
34
|
+
</ul>` : i}
|
|
35
|
+
${e.note ? a`<p class="lintje-footer__note">${e.note}</p>` : i}
|
|
36
|
+
</div>` : i}
|
|
37
37
|
</div>
|
|
38
38
|
</footer>`;
|
|
39
39
|
}
|
|
40
40
|
};
|
|
41
|
-
|
|
41
|
+
n("lintje-footer", c);
|
|
42
42
|
//#endregion
|
|
43
|
-
export {
|
|
43
|
+
export { c as LintjeFooter };
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { n as
|
|
1
|
+
import { Gt as e, Jt as t, Kt as n, Ut as r, Yt as i, Zt as a, en as o, lt as s, nn as c, nt as l, ut as u } from "../chunks/base-CbmWxUig.js";
|
|
2
|
+
import { n as d, t as f } from "../chunks/controls-DxmnDSBr.js";
|
|
3
3
|
//#region src/components/forms/form-actions/form-actions.css?inline
|
|
4
|
-
var
|
|
5
|
-
function
|
|
4
|
+
var p = "/* The host is the sticky box. z-index 20: above the form, below the shell's menu (30) and popovers (46). */\n:host {\n display: block;\n min-width: 0;\n position: sticky;\n bottom: 0;\n z-index: 20;\n}\n:host([hidden]) { display: none; }\n\n/* ------------------------------------------------------------------------ */\n\n.lintje-form-actions {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n gap: var(--space-3) var(--space-4);\n padding: var(--space-3) var(--space-6);\n background: var(--color-bg-surface);\n border: 1px solid var(--color-border-default);\n border-top: 2px solid var(--color-accent-line);\n}\n\n/* The words carry the state; the dot and the check only support it (rule 13). */\n.lintje-form-actions__status {\n display: flex;\n align-items: center;\n gap: var(--space-2);\n min-width: 0;\n font: var(--text-small);\n color: var(--color-text-muted);\n}\n.lintje-form-actions__dot {\n flex: none;\n width: 6px;\n height: 6px;\n border-radius: var(--radius-round);\n background: var(--color-attention);\n}\n.lintje-form-actions__check {\n flex: none;\n color: var(--color-success);\n}\n\n.lintje-form-actions__buttons {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-end;\n gap: var(--space-2);\n margin-left: auto;\n}\n\n/* Phone: the bar sets `block` on each button, so it fills its row. */\n@media screen and (max-width: 767px) {\n .lintje-form-actions {\n flex-direction: column;\n align-items: stretch;\n }\n .lintje-form-actions__buttons {\n flex-direction: column-reverse;\n margin-left: 0;\n }\n}\n\n/* Forced colours: the dot is a fill only, which the palette drops; it keeps its drawing. */\n@media (forced-colors: active) {\n .lintje-form-actions__dot { forced-color-adjust: none; background: CanvasText; }\n}\n", m = "Wijzigingen nog niet opgeslagen", h = "Bezig met opslaan";
|
|
5
|
+
function g(e) {
|
|
6
6
|
if (!e) return "";
|
|
7
7
|
if (typeof e == "string" && /^\d{1,2}:\d{2}$/.test(e)) return e;
|
|
8
8
|
let t = e instanceof Date ? e : new Date(e);
|
|
@@ -10,25 +10,29 @@ function h(e) {
|
|
|
10
10
|
let n = (e) => String(e).padStart(2, "0");
|
|
11
11
|
return `${n(t.getHours())}:${n(t.getMinutes())}`;
|
|
12
12
|
}
|
|
13
|
-
var
|
|
14
|
-
function
|
|
15
|
-
let e = Math.max(0, ...
|
|
16
|
-
if (
|
|
17
|
-
|
|
13
|
+
var _ = /* @__PURE__ */ new Map(), v = null;
|
|
14
|
+
function y() {
|
|
15
|
+
let e = Math.max(0, ..._.values());
|
|
16
|
+
if (_.size === 0) {
|
|
17
|
+
v && (v.element.style.scrollPaddingBottom = v.before), v = null;
|
|
18
18
|
return;
|
|
19
19
|
}
|
|
20
|
-
let t =
|
|
21
|
-
t && (
|
|
20
|
+
let t = r();
|
|
21
|
+
t && (v?.element !== t && (v && (v.element.style.scrollPaddingBottom = v.before), v = {
|
|
22
22
|
element: t,
|
|
23
23
|
before: t.style.scrollPaddingBottom
|
|
24
24
|
}), t.style.scrollPaddingBottom = `${e}px`);
|
|
25
25
|
}
|
|
26
|
-
var
|
|
27
|
-
constructor(...
|
|
28
|
-
super(...
|
|
26
|
+
var b = class extends t {
|
|
27
|
+
constructor(...t) {
|
|
28
|
+
super(...t), this.state = "", this.#e = new n(this, e), this.#t = new d("busy"), this.#n = new d("disabled"), this.#r = new f("block"), this.#i = null;
|
|
29
29
|
}
|
|
30
30
|
static {
|
|
31
|
-
this.styles = [
|
|
31
|
+
this.styles = [
|
|
32
|
+
s,
|
|
33
|
+
a(p),
|
|
34
|
+
a(l)
|
|
35
|
+
];
|
|
32
36
|
}
|
|
33
37
|
static {
|
|
34
38
|
this.properties = {
|
|
@@ -48,8 +52,8 @@ var y = class extends l {
|
|
|
48
52
|
#r;
|
|
49
53
|
#i;
|
|
50
54
|
connectedCallback() {
|
|
51
|
-
super.connectedCallback(),
|
|
52
|
-
this.isConnected && (
|
|
55
|
+
super.connectedCallback(), _.set(this, this.offsetHeight), y(), typeof ResizeObserver < "u" && (this.#i = new ResizeObserver(() => {
|
|
56
|
+
this.isConnected && (_.set(this, this.offsetHeight), y());
|
|
53
57
|
}), this.#i.observe(this));
|
|
54
58
|
}
|
|
55
59
|
get buttons() {
|
|
@@ -60,7 +64,7 @@ var y = class extends l {
|
|
|
60
64
|
return e.filter((e) => e.getAttribute("variant") === "primary").at(-1) ?? e.at(-1) ?? null;
|
|
61
65
|
}
|
|
62
66
|
disconnectedCallback() {
|
|
63
|
-
this.#i?.disconnect(), this.#i = null,
|
|
67
|
+
this.#i?.disconnect(), this.#i = null, _.delete(this), y(), this.#t.release(), this.#n.release(), this.#r.release(), super.disconnectedCallback();
|
|
64
68
|
}
|
|
65
69
|
updated() {
|
|
66
70
|
this.#a();
|
|
@@ -73,19 +77,19 @@ var y = class extends l {
|
|
|
73
77
|
this.#e.matches ? this.#r.apply(this.buttons, !0) : this.#r.release();
|
|
74
78
|
}
|
|
75
79
|
renderStatus() {
|
|
76
|
-
let e =
|
|
80
|
+
let e = g(this.savedAt);
|
|
77
81
|
switch (this.state) {
|
|
78
|
-
case "dirty": return c`<span class="lintje-form-actions__dot" aria-hidden="true"></span>${
|
|
79
|
-
case "busy": return c`${
|
|
82
|
+
case "dirty": return c`<span class="lintje-form-actions__dot" aria-hidden="true"></span>${m}`;
|
|
83
|
+
case "busy": return c`${h}`;
|
|
80
84
|
case "saved":
|
|
81
85
|
case "draft": {
|
|
82
86
|
let t = this.state === "draft" ? "Concept opgeslagen" : "Opgeslagen";
|
|
83
|
-
return c`${
|
|
87
|
+
return c`${u("functioneel-vinkje", {
|
|
84
88
|
size: 16,
|
|
85
89
|
className: "lintje-form-actions__check"
|
|
86
90
|
})}${e ? `${t} om ${e}` : t}`;
|
|
87
91
|
}
|
|
88
|
-
default: return
|
|
92
|
+
default: return o;
|
|
89
93
|
}
|
|
90
94
|
}
|
|
91
95
|
render() {
|
|
@@ -97,6 +101,6 @@ var y = class extends l {
|
|
|
97
101
|
</div>`;
|
|
98
102
|
}
|
|
99
103
|
};
|
|
100
|
-
|
|
104
|
+
i("lintje-form-actions", b);
|
|
101
105
|
//#endregion
|
|
102
|
-
export {
|
|
106
|
+
export { b as LintjeFormActions, g as clockTime };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { a as o, n as s } from "../chunks/controls-
|
|
1
|
+
import { Jt as e, Yt as t, Zt as n, en as r, nn as i, st as a } from "../chunks/base-CbmWxUig.js";
|
|
2
|
+
import { a as o, n as s } from "../chunks/controls-DxmnDSBr.js";
|
|
3
3
|
//#region src/components/forms/form-section/form-section.css?inline
|
|
4
|
-
var c = "/* Slotted children keep clear of the sticky top bar when the error summary scrolls to them. */\n:host { display: block; min-width: 0; }\n:host([hidden]) { display: none; }\n::slotted(*) { scroll-margin-top: var(--h-sticky); }\n\n/* ------------------------------------------------------------------------ */\n\n/* The legend floats at full width so it lays out as a block, not on the fieldset's border. */\n.lintje-form-section {\n margin: 0;\n padding: 0;\n min-width: 0;\n border: 0;\n}\n.lintje-form-section__legend {\n float: left;\n width: 100%;\n padding: 0;\n font: var(--text-h2);\n color: var(--color-text-primary);\n}\n.lintje-form-section__description {\n clear: both;\n padding-top: var(--space-2);\n font: var(--text-small);\n color: var(--color-text-muted);\n}\n.lintje-form-section__fields {\n clear: both;\n display: flex;\n flex-direction: column;\n gap: var(--space-5);\n padding-top: var(--space-5);\n}\n\n/* Setting rows read as a list: a line between two of them. */\n.lintje-form-section__fields ::slotted([layout='row']:not(:first-child)) {\n padding-top: var(--space-5);\n border-top: 1px solid var(--color-border-default);\n}\n\n.lintje-form-section--tile {\n background: var(--color-bg-surface);\n border: 1px solid var(--color-border-default);\n border-radius: var(--radius);\n padding: var(--tile-pad-y) var(--tile-pad-x);\n}\n.lintje-form-section--tile .lintje-form-section__legend { font: var(--text-tile-title); }\n/* The heading takes the legend's look; it is there for the outline, not to restyle. */\n.lintje-form-section__heading { margin: 0; font: inherit; color: inherit; }\n", l = class extends
|
|
4
|
+
var c = "/* Slotted children keep clear of the sticky top bar when the error summary scrolls to them. */\n:host { display: block; min-width: 0; }\n:host([hidden]) { display: none; }\n::slotted(*) { scroll-margin-top: var(--h-sticky); }\n\n/* ------------------------------------------------------------------------ */\n\n/* The legend floats at full width so it lays out as a block, not on the fieldset's border. */\n.lintje-form-section {\n margin: 0;\n padding: 0;\n min-width: 0;\n border: 0;\n}\n.lintje-form-section__legend {\n float: left;\n width: 100%;\n padding: 0;\n font: var(--text-h2);\n color: var(--color-text-primary);\n}\n.lintje-form-section__description {\n clear: both;\n padding-top: var(--space-2);\n font: var(--text-small);\n color: var(--color-text-muted);\n}\n.lintje-form-section__fields {\n clear: both;\n display: flex;\n flex-direction: column;\n gap: var(--space-5);\n padding-top: var(--space-5);\n}\n\n/* Setting rows read as a list: a line between two of them. */\n.lintje-form-section__fields ::slotted([layout='row']:not(:first-child)) {\n padding-top: var(--space-5);\n border-top: 1px solid var(--color-border-default);\n}\n\n.lintje-form-section--tile {\n background: var(--color-bg-surface);\n border: 1px solid var(--color-border-default);\n border-radius: var(--radius);\n padding: var(--tile-pad-y) var(--tile-pad-x);\n}\n.lintje-form-section--tile .lintje-form-section__legend { font: var(--text-tile-title); }\n/* The heading takes the legend's look; it is there for the outline, not to restyle. */\n.lintje-form-section__heading { margin: 0; font: inherit; color: inherit; }\n", l = class extends e {
|
|
5
5
|
constructor(...e) {
|
|
6
6
|
super(...e), this.heading = "", this.variant = "plain", this.disabled = !1, this.#e = new s("disabled");
|
|
7
7
|
}
|
|
@@ -34,11 +34,11 @@ var c = "/* Slotted children keep clear of the sticky top bar when the error sum
|
|
|
34
34
|
}
|
|
35
35
|
render() {
|
|
36
36
|
return i`<fieldset
|
|
37
|
-
class=${
|
|
37
|
+
class=${a({
|
|
38
38
|
"lintje-form-section": !0,
|
|
39
39
|
"lintje-form-section--tile": this.variant === "tile"
|
|
40
40
|
})}
|
|
41
|
-
aria-describedby=${this.description ? "lintje-form-section-description" :
|
|
41
|
+
aria-describedby=${this.description ? "lintje-form-section-description" : r}
|
|
42
42
|
?disabled=${this.disabled}
|
|
43
43
|
>
|
|
44
44
|
<legend class="lintje-form-section__legend">
|
|
@@ -57,6 +57,6 @@ var c = "/* Slotted children keep clear of the sticky top bar when the error sum
|
|
|
57
57
|
</fieldset>`;
|
|
58
58
|
}
|
|
59
59
|
};
|
|
60
|
-
|
|
60
|
+
t("lintje-form-section", l);
|
|
61
61
|
//#endregion
|
|
62
62
|
export { l as LintjeFormSection };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { c as l, d as u, i as d, l as f, n as p, r as m, u as h } from "../chunks/controls-
|
|
1
|
+
import { Gt as e, Jt as t, Kt as n, Q as r, Yt as i, Z as a, Zt as o, en as s, nn as c } from "../chunks/base-CbmWxUig.js";
|
|
2
|
+
import { c as l, d as u, i as d, l as f, n as p, r as m, u as h } from "../chunks/controls-DxmnDSBr.js";
|
|
3
3
|
import "./error-summary.js";
|
|
4
4
|
import "./form-actions.js";
|
|
5
5
|
//#region src/components/forms/form/form.css?inline
|
|
@@ -28,9 +28,9 @@ function S(e, t, n = Date.now()) {
|
|
|
28
28
|
return null;
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
|
-
var C = class extends
|
|
32
|
-
constructor(...
|
|
33
|
-
super(...
|
|
31
|
+
var C = class extends t {
|
|
32
|
+
constructor(...t) {
|
|
33
|
+
super(...t), this.values = {}, this.busy = !1, this.draftTtl = 24, this.dirty = !1, this.phase = "", this.#e = {}, this.#t = !1, this.#n = !1, this.#r = null, this.#i = !1, this.#a = null, this.#o = new MutationObserver((e) => {
|
|
34
34
|
let t = [], n = [];
|
|
35
35
|
for (let r of e) {
|
|
36
36
|
for (let e of r.addedNodes) t.push(...f(e));
|
|
@@ -42,7 +42,7 @@ var C = class extends c {
|
|
|
42
42
|
let t = d(e);
|
|
43
43
|
!this.contains(e) && !r.has(t) && this.forget(t);
|
|
44
44
|
}
|
|
45
|
-
}), this.#s = new
|
|
45
|
+
}), this.#s = new n(this, e), this.#c = new p("disabled"), this.#l = new p("stacked"), this.#u = (e) => {
|
|
46
46
|
let t = e.target;
|
|
47
47
|
if (t === this) return;
|
|
48
48
|
let n = d(t);
|
|
@@ -68,7 +68,7 @@ var C = class extends c {
|
|
|
68
68
|
}, this.#h = "", this.#E = [], this.#D = !1, this.#O = !1;
|
|
69
69
|
}
|
|
70
70
|
static {
|
|
71
|
-
this.styles =
|
|
71
|
+
this.styles = o(g);
|
|
72
72
|
}
|
|
73
73
|
static {
|
|
74
74
|
this.properties = {
|
|
@@ -243,7 +243,7 @@ var C = class extends c {
|
|
|
243
243
|
return t;
|
|
244
244
|
}
|
|
245
245
|
willUpdate(e) {
|
|
246
|
-
super.willUpdate(e), this.#n || (this.#n = !0, this.#g(), this.#b(Object.keys(this.#e).length ? "dirty" : "")), e.has("savedAt") && this.hasUpdated && this.savedAt && this.phase !== "saved" && this.#y(), e.has("errors") && (this.#E = this.#T()), e.has("busy") && this.busy && (this.#a =
|
|
246
|
+
super.willUpdate(e), this.#n || (this.#n = !0, this.#g(), this.#b(Object.keys(this.#e).length ? "dirty" : "")), e.has("savedAt") && this.hasUpdated && this.savedAt && this.phase !== "saved" && this.#y(), e.has("errors") && (this.#E = this.#T()), e.has("busy") && this.busy && (this.#a = r(this) ? a() : null), e.has("dirty") && (this.dirty ? window.addEventListener("beforeunload", this.#m) : window.removeEventListener("beforeunload", this.#m));
|
|
247
247
|
}
|
|
248
248
|
#E;
|
|
249
249
|
#D;
|
|
@@ -260,7 +260,7 @@ var C = class extends c {
|
|
|
260
260
|
#A() {
|
|
261
261
|
let e = this.#a;
|
|
262
262
|
this.#a = null, e && requestAnimationFrame(() => {
|
|
263
|
-
let t =
|
|
263
|
+
let t = a();
|
|
264
264
|
t && t !== document.body || e.isConnected && e.focus();
|
|
265
265
|
});
|
|
266
266
|
}
|
|
@@ -275,10 +275,10 @@ var C = class extends c {
|
|
|
275
275
|
for (let n of this.querySelectorAll("lintje-form-actions")) n.state = e, n.savedAt = t;
|
|
276
276
|
}
|
|
277
277
|
render() {
|
|
278
|
-
return
|
|
278
|
+
return c`<form
|
|
279
279
|
class="lintje-form"
|
|
280
280
|
novalidate
|
|
281
|
-
aria-busy=${this.busy ? "true" :
|
|
281
|
+
aria-busy=${this.busy ? "true" : s}
|
|
282
282
|
@submit=${(e) => {
|
|
283
283
|
e.preventDefault(), this.submit();
|
|
284
284
|
}}
|
|
@@ -297,6 +297,6 @@ var C = class extends c {
|
|
|
297
297
|
</form>`;
|
|
298
298
|
}
|
|
299
299
|
};
|
|
300
|
-
|
|
300
|
+
i("lintje-form", C);
|
|
301
301
|
//#endregion
|
|
302
302
|
export { _ as DRAFT_PREFIX, C as LintjeForm, S as readDraft };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Jt as e, Yt as t, Zt as n, en as r, nn as i, st as a } from "../chunks/base-CbmWxUig.js";
|
|
2
2
|
//#region src/components/content/gallery/gallery.css?inline
|
|
3
|
-
var o = ":host { display: block; min-width: 0; }\n:host([hidden]) { display: none; }\n\n/* ------------------------------------------------------------------------ */\n\n.lintje-gallery { display: flex; flex-direction: column; gap: var(--space-3); }\n\n.lintje-gallery__figure { margin: 0; display: flex; flex-direction: column; gap: var(--space-2); }\n/* A screen whole, on the subtle surface: a screenshot is never cropped. */\n.lintje-gallery__image {\n display: block;\n width: 100%;\n aspect-ratio: 16 / 10;\n object-fit: contain;\n background: var(--color-bg-subtle);\n border: 1px solid var(--color-border-default);\n box-sizing: border-box;\n}\n.lintje-gallery__caption { font: var(--text-small); color: var(--color-text-muted); }\n\n.lintje-gallery__thumbs {\n list-style: none; margin: 0; padding: 0;\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(var(--w-gallery-thumb), 1fr));\n gap: var(--space-2);\n}\n.lintje-gallery__thumb {\n display: block;\n width: 100%;\n padding: 0;\n border: 1px solid var(--color-border-default);\n background: var(--color-bg-subtle);\n cursor: pointer;\n}\n.lintje-gallery__thumb:hover { border-color: var(--color-border-heavy); }\n/* The chosen one carries the selected edge, and aria-current says it in words. */\n.lintje-gallery__thumb.is-selected { outline: 2px solid var(--color-accent-line); outline-offset: -2px; }\n.lintje-gallery__thumb:focus-visible { outline: var(--focus-width) solid var(--color-focus); outline-offset: var(--focus-offset); }\n.lintje-gallery__thumb-image {\n display: block;\n width: 100%;\n aspect-ratio: 16 / 10;\n object-fit: cover;\n object-position: top left;\n}\n\n@media (forced-colors: active) {\n .lintje-gallery__thumb.is-selected { outline-color: Highlight; }\n}\n", s = class extends
|
|
3
|
+
var o = ":host { display: block; min-width: 0; }\n:host([hidden]) { display: none; }\n\n/* ------------------------------------------------------------------------ */\n\n.lintje-gallery { display: flex; flex-direction: column; gap: var(--space-3); }\n\n.lintje-gallery__figure { margin: 0; display: flex; flex-direction: column; gap: var(--space-2); }\n/* A screen whole, on the subtle surface: a screenshot is never cropped. */\n.lintje-gallery__image {\n display: block;\n width: 100%;\n aspect-ratio: 16 / 10;\n object-fit: contain;\n background: var(--color-bg-subtle);\n border: 1px solid var(--color-border-default);\n box-sizing: border-box;\n}\n.lintje-gallery__caption { font: var(--text-small); color: var(--color-text-muted); }\n\n.lintje-gallery__thumbs {\n list-style: none; margin: 0; padding: 0;\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(var(--w-gallery-thumb), 1fr));\n gap: var(--space-2);\n}\n.lintje-gallery__thumb {\n display: block;\n width: 100%;\n padding: 0;\n border: 1px solid var(--color-border-default);\n background: var(--color-bg-subtle);\n cursor: pointer;\n}\n.lintje-gallery__thumb:hover { border-color: var(--color-border-heavy); }\n/* The chosen one carries the selected edge, and aria-current says it in words. */\n.lintje-gallery__thumb.is-selected { outline: 2px solid var(--color-accent-line); outline-offset: -2px; }\n.lintje-gallery__thumb:focus-visible { outline: var(--focus-width) solid var(--color-focus); outline-offset: var(--focus-offset); }\n.lintje-gallery__thumb-image {\n display: block;\n width: 100%;\n aspect-ratio: 16 / 10;\n object-fit: cover;\n object-position: top left;\n}\n\n@media (forced-colors: active) {\n .lintje-gallery__thumb.is-selected { outline-color: Highlight; }\n}\n", s = class extends e {
|
|
4
4
|
constructor(...e) {
|
|
5
5
|
super(...e), this.items = [], this.selected = 0, this.label = "Afbeeldingen", this.spoken = "";
|
|
6
6
|
}
|
|
@@ -26,35 +26,35 @@ var o = ":host { display: block; min-width: 0; }\n:host([hidden]) { display: non
|
|
|
26
26
|
}
|
|
27
27
|
render() {
|
|
28
28
|
let e = this.items;
|
|
29
|
-
if (!e.length) return
|
|
30
|
-
let
|
|
29
|
+
if (!e.length) return r;
|
|
30
|
+
let t = this.shown, n = e[t];
|
|
31
31
|
return i`<div class="lintje-gallery">
|
|
32
32
|
<figure class="lintje-gallery__figure">
|
|
33
|
-
<img class="lintje-gallery__image" src=${
|
|
34
|
-
${
|
|
33
|
+
<img class="lintje-gallery__image" src=${n.src} alt=${n.alt} />
|
|
34
|
+
${n.caption ? i`<figcaption class="lintje-gallery__caption">${n.caption}</figcaption>` : r}
|
|
35
35
|
</figure>
|
|
36
36
|
${e.length > 1 ? i`<ul class="lintje-gallery__thumbs" aria-label=${this.label}>
|
|
37
|
-
${e.map((
|
|
37
|
+
${e.map((n, o) => i`<li>
|
|
38
38
|
<button
|
|
39
39
|
type="button"
|
|
40
|
-
class=${
|
|
40
|
+
class=${a({
|
|
41
41
|
"lintje-gallery__thumb": !0,
|
|
42
|
-
"is-selected": o ===
|
|
42
|
+
"is-selected": o === t
|
|
43
43
|
})}
|
|
44
|
-
aria-current=${o ===
|
|
44
|
+
aria-current=${o === t ? "true" : r}
|
|
45
45
|
@click=${() => this.choose(o)}
|
|
46
46
|
>
|
|
47
|
-
<img class="lintje-gallery__thumb-image" src=${
|
|
47
|
+
<img class="lintje-gallery__thumb-image" src=${n.src} alt="" />
|
|
48
48
|
<span class="visually-hidden"
|
|
49
|
-
>Afbeelding ${o + 1} van ${e.length}: ${
|
|
49
|
+
>Afbeelding ${o + 1} van ${e.length}: ${n.caption || n.alt}</span
|
|
50
50
|
>
|
|
51
51
|
</button>
|
|
52
52
|
</li>`)}
|
|
53
53
|
</ul>
|
|
54
|
-
<span class="visually-hidden" role="status">${this.spoken}</span>` :
|
|
54
|
+
<span class="visually-hidden" role="status">${this.spoken}</span>` : r}
|
|
55
55
|
</div>`;
|
|
56
56
|
}
|
|
57
57
|
};
|
|
58
|
-
|
|
58
|
+
t("lintje-gallery", s);
|
|
59
59
|
//#endregion
|
|
60
60
|
export { s as LintjeGallery };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { S as LintjeGridItem } from "../chunks/base-CbmWxUig.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { C as LintjeGrid } from "../chunks/base-CbmWxUig.js";
|