@oslokommune/punkt-elements 16.26.7 → 17.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +110 -0
- package/dist/accordion-CbXDxOho.cjs +47 -0
- package/dist/{accordion-CBdIk9gw.js → accordion-DEUHQ4JD.js} +45 -35
- package/dist/{alert-HHTGY0sp.js → alert-CbtVGrHD.js} +31 -17
- package/dist/{alert-B8dLsiTz.cjs → alert-CkUnbPdA.cjs} +5 -5
- package/dist/base-elements/input-element.d.ts +1 -0
- package/dist/button-Cod17rKo.js +115 -0
- package/dist/{button-B5tQpKeG.cjs → button-gvDXtBMC.cjs} +5 -2
- package/dist/{calendar-DIzGBdbh.cjs → calendar-BVXW8DqC.cjs} +1 -1
- package/dist/{calendar-CjlUA-Lb.js → calendar-CjC4qlh6.js} +1 -1
- package/dist/{checkbox-Bt_sC_90.cjs → checkbox-8uxbeU30.cjs} +1 -1
- package/dist/{checkbox-D03BC2Va.js → checkbox-DJDphhqz.js} +1 -1
- package/dist/{combobox-CoQBTWqL.js → combobox-Du5yr-xM.js} +16 -2
- package/dist/combobox-hKrbYLUe.cjs +136 -0
- package/dist/components/accordion/accordion-context.d.ts +7 -0
- package/dist/components/accordion/accordion.d.ts +2 -0
- package/dist/components/accordion/accordionitem.d.ts +1 -0
- package/dist/components/alert/alert.d.ts +5 -0
- package/dist/components/alert/alert.test.d.ts +1 -0
- package/dist/components/button/button.d.ts +4 -1
- package/dist/components/datepicker/datepicker-base.d.ts +2 -0
- package/dist/components/datepicker/datepicker-utils.d.ts +2 -2
- package/dist/components/footer/footer-base.d.ts +44 -0
- package/dist/components/footer/footer-simple.d.ts +20 -0
- package/dist/components/footer/footer.accessibility.test.d.ts +0 -0
- package/dist/components/footer/footer.d.ts +22 -0
- package/dist/components/footer/footer.test.d.ts +0 -0
- package/dist/components/footer/index.d.ts +3 -0
- package/dist/components/footer/types.d.ts +16 -0
- package/dist/components/header/header-chrome-controller.d.ts +44 -0
- package/dist/components/header/header-global.accessibility.test.d.ts +0 -0
- package/dist/components/header/header-global.d.ts +78 -0
- package/dist/components/header/header-global.test.d.ts +0 -0
- package/dist/components/header/header-service.accessibility.test.d.ts +0 -0
- package/dist/components/header/header-service.d.ts +6 -21
- package/dist/components/header/header-service.test.d.ts +1 -1
- package/dist/components/header/header.d.ts +11 -3
- package/dist/components/header/header.test.d.ts +0 -0
- package/dist/components/header/index.d.ts +2 -1
- package/dist/components/header/types.d.ts +28 -2
- package/dist/components/header-menu/header-menu.d.ts +4 -5
- package/dist/components/header-menu/types.d.ts +1 -1
- package/dist/components/index.d.ts +5 -3
- package/dist/components/input-wrapper/input-wrapper.d.ts +2 -0
- package/dist/components/input-wrapper/input-wrapper.test.d.ts +1 -0
- package/dist/components/searchinput/searchinput.d.ts +5 -0
- package/dist/components/select/index.d.ts +1 -1
- package/dist/components/select/select.d.ts +2 -2
- package/dist/components/select/select.test.d.ts +1 -0
- package/dist/components/textarea/textarea.test.d.ts +2 -0
- package/dist/components/textinput/textinput.test.d.ts +1 -0
- package/dist/components/timepicker/timepicker.d.ts +2 -0
- package/dist/components/timepicker/timepicker.test.d.ts +3 -0
- package/dist/consent--Nw43WFU.cjs +18 -0
- package/dist/{consent-D5sY6JK3.js → consent-B2hSTCGC.js} +14 -7
- package/dist/consume-BiOhrhEy.js +167 -0
- package/dist/consume-DKf5SmP9.cjs +1 -0
- package/dist/{converters-BKGBRBpS.js → converters-BBfsEJV5.js} +25 -25
- package/dist/{converters-9jHlXDyy.cjs → converters-Cd0fPEly.cjs} +1 -1
- package/dist/{datepicker-BE5Ll0W4.js → datepicker--Fq8q-J3.js} +30 -12
- package/dist/{datepicker-x4xM3KQz.cjs → datepicker-CEoBYTBU.cjs} +11 -7
- package/dist/docs/components/alert.d.ts +3 -0
- package/dist/docs/components/footer.d.ts +9 -0
- package/dist/docs/components/form-sizes.d.ts +10 -0
- package/dist/docs/components/header-global-full.d.ts +20 -0
- package/dist/docs/components/header-global.d.ts +14 -0
- package/dist/docs/components/searchinput.d.ts +6 -3
- package/dist/fetch-header-footer-data-Pc32etrk.js +88 -0
- package/dist/fetch-header-footer-data-xohWFmYC.cjs +1 -0
- package/dist/fileupload-CGKUJrlj.cjs +401 -0
- package/dist/{fileupload-2hf8YNhO.js → fileupload-D4gQN64T.js} +156 -176
- package/dist/focus-trap-DG3pEuyJ.js +60 -0
- package/dist/focus-trap-DSv4Ifqm.cjs +1 -0
- package/dist/footer-BIrJeRuZ.js +303 -0
- package/dist/footer-Ber-jqM1.cjs +114 -0
- package/dist/footer.d.ts +1 -0
- package/dist/header-BFk1an4z.cjs +465 -0
- package/dist/header-Deg_LGJo.js +1287 -0
- package/dist/header-menu-BHqK4QA6.cjs +126 -0
- package/dist/{header-menu-C8b5vd3n.js → header-menu-GFtJKM4j.js} +25 -97
- package/dist/{helptext-OfqH5npD.js → helptext-C_brWCIT.js} +1 -1
- package/dist/{helptext-eckq4JEX.cjs → helptext-Cq5rNaAC.cjs} +1 -1
- package/dist/{input-element-ZGOWsvKM.cjs → input-element-B0qLbEdF.cjs} +1 -1
- package/dist/{input-element-BFHpeoV8.js → input-element-C0RnXi-J.js} +5 -2
- package/dist/{input-wrapper-DwwE0JcO.js → input-wrapper-BweP6t3O.js} +12 -0
- package/dist/{input-wrapper-BRjQB4zM.cjs → input-wrapper-DPkkiG7S.cjs} +13 -11
- package/dist/{input-wrapper-DaA98B5l.js → input-wrapper-fWV5P4MN.js} +22 -15
- package/dist/{input-wrapper-LcZjpt0L.cjs → input-wrapper-wh3fWIhk.cjs} +1 -1
- package/dist/modal-CPnFteYS.cjs +35 -0
- package/dist/{modal-C6pScpdG.js → modal-xNK_wpHk.js} +11 -20
- package/dist/pkt-accordion.cjs +1 -1
- package/dist/pkt-accordion.js +1 -1
- package/dist/pkt-alert.cjs +1 -1
- package/dist/pkt-alert.js +1 -1
- package/dist/pkt-button.cjs +1 -1
- package/dist/pkt-button.js +1 -1
- package/dist/pkt-calendar.cjs +1 -1
- package/dist/pkt-calendar.js +1 -1
- package/dist/pkt-checkbox.cjs +1 -1
- package/dist/pkt-checkbox.js +1 -1
- package/dist/pkt-combobox.cjs +1 -1
- package/dist/pkt-combobox.js +1 -1
- package/dist/pkt-consent.cjs +1 -1
- package/dist/pkt-consent.js +1 -1
- package/dist/pkt-datepicker.cjs +1 -1
- package/dist/pkt-datepicker.js +1 -1
- package/dist/pkt-fileupload.cjs +1 -1
- package/dist/pkt-fileupload.js +1 -1
- package/dist/pkt-footer.cjs +1 -0
- package/dist/pkt-footer.js +2 -0
- package/dist/pkt-header-menu.cjs +1 -1
- package/dist/pkt-header-menu.js +1 -1
- package/dist/pkt-header.cjs +1 -1
- package/dist/pkt-header.js +2 -2
- package/dist/pkt-helptext.cjs +1 -1
- package/dist/pkt-helptext.js +1 -1
- package/dist/pkt-index.cjs +1 -1
- package/dist/pkt-index.js +27 -26
- package/dist/pkt-input-wrapper.cjs +1 -1
- package/dist/pkt-input-wrapper.js +1 -1
- package/dist/pkt-modal.cjs +1 -1
- package/dist/pkt-modal.js +1 -1
- package/dist/pkt-radiobutton.cjs +1 -1
- package/dist/pkt-radiobutton.js +1 -1
- package/dist/pkt-searchinput.cjs +1 -1
- package/dist/pkt-searchinput.js +1 -1
- package/dist/pkt-select.cjs +1 -1
- package/dist/pkt-select.js +1 -1
- package/dist/pkt-tabs.cjs +1 -1
- package/dist/pkt-tabs.js +1 -1
- package/dist/pkt-textarea.cjs +1 -1
- package/dist/pkt-textarea.js +1 -1
- package/dist/pkt-textinput.cjs +1 -1
- package/dist/pkt-textinput.js +1 -1
- package/dist/pkt-timepicker.cjs +1 -1
- package/dist/pkt-timepicker.js +1 -1
- package/dist/{radiobutton-DGO6H2Ki.js → radiobutton-C6htwDrT.js} +1 -1
- package/dist/{radiobutton-DY1WWepJ.cjs → radiobutton-DjWBoSHv.cjs} +1 -1
- package/dist/scroll-lock-BN8lOhV5.cjs +1 -0
- package/dist/scroll-lock-DAbNKAUy.js +18 -0
- package/dist/searchinput-CfUVfpqL.js +156 -0
- package/dist/searchinput-DGjeN1YI.cjs +60 -0
- package/dist/{select-D4_HQFkh.cjs → select-CZvAW7W2.cjs} +2 -1
- package/dist/{select-BwHUIlwQ.js → select-CsBXXbLP.js} +4 -3
- package/dist/setupTests.d.ts +0 -0
- package/dist/shared-types/footer.d.ts +95 -0
- package/dist/shared-types/{header-menu.d.ts → header-footer.d.ts} +51 -4
- package/dist/shared-types/header.d.ts +1 -1
- package/dist/shared-types/index.d.ts +6 -4
- package/dist/shared-types/searchinput.d.ts +2 -0
- package/dist/shared-types/select.d.ts +3 -2
- package/dist/shared-types/size.d.ts +4 -0
- package/dist/shared-types/timepicker.d.ts +0 -6
- package/dist/shared-utils/datepicker-utils.d.ts +5 -4
- package/dist/shared-utils/fileupload/focus-trap.d.ts +4 -10
- package/dist/shared-utils/focus-trap/index.d.ts +22 -0
- package/dist/shared-utils/{header-menu → header-footer}/example-data.d.ts +5 -4
- package/dist/shared-utils/header-footer/external-domain.d.ts +26 -0
- package/dist/shared-utils/{header-menu → header-footer}/fetch-header-footer-data.d.ts +6 -2
- package/dist/shared-utils/{header-menu → header-footer}/index.d.ts +2 -1
- package/dist/shared-utils/{header-menu → header-footer}/select-megamenu.d.ts +1 -1
- package/dist/shared-utils/scroll-lock/index.d.ts +24 -0
- package/dist/tabs-BqrKLCjd.js +214 -0
- package/dist/tabs-q62MK_-r.cjs +40 -0
- package/dist/{textarea-D6M7ZhtA.js → textarea-Cm392CEI.js} +5 -3
- package/dist/{textarea-Bt_Zs8gq.cjs → textarea-sTcZxOIB.cjs} +3 -2
- package/dist/{textinput-EDKjcUdg.cjs → textinput-DqJbTglM.cjs} +3 -2
- package/dist/{textinput-oU2EvFsi.js → textinput-TSPcBcih.js} +5 -3
- package/dist/{timepicker-CgOL2sd9.cjs → timepicker-CqFYMV8q.cjs} +8 -7
- package/dist/{timepicker-_G0V_HV3.js → timepicker-DWbgTDKq.js} +10 -9
- package/package.json +3 -3
- package/src/components/accordion/accordion-context.ts +8 -0
- package/src/components/accordion/accordion.test.ts +44 -0
- package/src/components/accordion/accordion.ts +13 -3
- package/src/components/accordion/accordionitem.ts +9 -1
- package/src/components/alert/alert.test.ts +51 -2
- package/src/components/alert/alert.ts +11 -5
- package/src/components/breadcrumbs/breadcrumbs.test.ts +11 -3
- package/src/components/button/button.test.ts +23 -0
- package/src/components/button/button.ts +28 -3
- package/src/components/combobox/combobox.core.test.ts +20 -0
- package/src/components/combobox/combobox.ts +2 -0
- package/src/components/consent/consent.test.ts +6 -3
- package/src/components/consent/consent.ts +15 -7
- package/src/components/datepicker/datepicker-base.ts +5 -1
- package/src/components/datepicker/datepicker-utils.test.ts +10 -0
- package/src/components/datepicker/datepicker.core.test.ts +17 -0
- package/src/components/datepicker/datepicker.ts +8 -0
- package/src/components/footer/footer-base.ts +238 -0
- package/src/components/footer/footer-simple.ts +71 -0
- package/src/components/footer/footer.accessibility.test.ts +66 -0
- package/src/components/footer/footer.test.ts +238 -0
- package/src/components/footer/footer.ts +81 -0
- package/src/components/footer/index.ts +4 -0
- package/src/components/footer/types.ts +21 -0
- package/src/components/header/header-chrome-controller.ts +123 -0
- package/src/components/header/header-global.accessibility.test.ts +110 -0
- package/src/components/header/header-global.test.ts +329 -0
- package/src/components/header/header-global.ts +648 -0
- package/src/components/header/header-service.accessibility.test.ts +79 -0
- package/src/components/header/header-service.test.ts +32 -12
- package/src/components/header/header-service.ts +38 -162
- package/src/components/header/header-user-menu.ts +0 -1
- package/src/components/header/header.test.ts +84 -0
- package/src/components/header/header.ts +52 -5
- package/src/components/header/index.ts +6 -0
- package/src/components/header/types.ts +38 -0
- package/src/components/header-menu/header-menu.test.ts +131 -10
- package/src/components/header-menu/header-menu.ts +23 -24
- package/src/components/header-menu/types.ts +1 -1
- package/src/components/index.ts +18 -2
- package/src/components/input-wrapper/input-wrapper.test.ts +45 -0
- package/src/components/input-wrapper/input-wrapper.ts +17 -9
- package/src/components/modal/modal.ts +8 -9
- package/src/components/searchinput/searchinput.test.ts +43 -0
- package/src/components/searchinput/searchinput.ts +29 -12
- package/src/components/select/index.ts +1 -1
- package/src/components/select/select.test.ts +28 -0
- package/src/components/select/select.ts +4 -3
- package/src/components/textarea/textarea.test.ts +16 -0
- package/src/components/textarea/textarea.ts +3 -1
- package/src/components/textinput/textinput.test.ts +28 -0
- package/src/components/textinput/textinput.ts +3 -1
- package/src/components/timepicker/timepicker.test.ts +26 -0
- package/src/components/timepicker/timepicker.ts +12 -6
- package/dist/accordion-FISAiAbX.cjs +0 -47
- package/dist/button-C_YzTSuU.js +0 -96
- package/dist/combobox-D6H9rWPV.cjs +0 -135
- package/dist/consent-X3wvhteO.cjs +0 -10
- package/dist/fileupload-BLVrslUX.cjs +0 -401
- package/dist/header-CFrsaq0c.cjs +0 -310
- package/dist/header-D_xvPR4R.js +0 -801
- package/dist/header-menu-DMdP_c6X.cjs +0 -126
- package/dist/modal-DKU7PnjJ.cjs +0 -35
- package/dist/searchinput-CyO5k4Q4.js +0 -148
- package/dist/searchinput-DG6YetL1.cjs +0 -60
- package/dist/shared-utils/modal-scroll-lock.d.ts +0 -10
- package/dist/tabs-CGo0ODPa.cjs +0 -40
- package/dist/tabs-ChdR0D1C.js +0 -379
- /package/dist/shared-utils/{header-menu → header-footer}/icon-map.d.ts +0 -0
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import { DEFAULT_HEADER_FOOTER_URL, type THeaderFooterApi } from '../../shared-types/header-
|
|
1
|
+
import { DEFAULT_HEADER_FOOTER_URL, type THeaderFooterApi } from '../../shared-types/header-footer';
|
|
2
2
|
export { DEFAULT_HEADER_FOOTER_URL };
|
|
3
|
+
/** Clear the shared payload cache. Intended for tests. */
|
|
4
|
+
export declare function resetHeaderFooterDataCache(): void;
|
|
3
5
|
/**
|
|
4
6
|
* Fetch and parse the Oslo kommune header/footer JSON payload.
|
|
5
7
|
*
|
|
@@ -7,6 +9,8 @@ export { DEFAULT_HEADER_FOOTER_URL };
|
|
|
7
9
|
* for surfacing or hiding errors — the Lit element, for example, hides
|
|
8
10
|
* the menu and dispatches a `data-error` event.
|
|
9
11
|
*
|
|
10
|
-
* `signal` lets callers abort
|
|
12
|
+
* `signal` lets callers abort their own wait when the component
|
|
13
|
+
* disconnects; the underlying request is shared and keeps running for
|
|
14
|
+
* any other component awaiting the same URL.
|
|
11
15
|
*/
|
|
12
16
|
export declare function fetchHeaderFooterData<IconType = string>(url?: string, signal?: AbortSignal): Promise<THeaderFooterApi<IconType>>;
|
|
@@ -7,5 +7,6 @@
|
|
|
7
7
|
*/
|
|
8
8
|
export { ICON_MAP_ODS_TO_PUNKT, mapOdsIcon, deriveSocialIcon } from './icon-map';
|
|
9
9
|
export { selectLocaleData, selectMegamenu } from './select-megamenu';
|
|
10
|
-
export {
|
|
10
|
+
export { getExternalDomainLabel, getLinkDomainLabel } from './external-domain';
|
|
11
|
+
export { DEFAULT_HEADER_FOOTER_URL, fetchHeaderFooterData, resetHeaderFooterDataCache, } from './fetch-header-footer-data';
|
|
11
12
|
export { EXAMPLE_HEADER_FOOTER_DATA } from './example-data';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { IHeaderFooterLocaleData, IMegaMenu, THeaderFooterApi, THeaderMenuLocale } from '../../shared-types/header-
|
|
1
|
+
import type { IHeaderFooterLocaleData, IMegaMenu, THeaderFooterApi, THeaderMenuLocale } from '../../shared-types/header-footer';
|
|
2
2
|
/**
|
|
3
3
|
* Pick the locale slice from a header/footer payload. Falls back to
|
|
4
4
|
* `nb-NO` when the requested locale is missing — the same fallback the
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared body scroll-lock used by every overlay in the design system (modal,
|
|
3
|
+
* service/global header menus, search and user dropdowns).
|
|
4
|
+
*
|
|
5
|
+
* Strategy: an iOS-safe `position: fixed` lock — `overflow: hidden` alone is
|
|
6
|
+
* ignored by iOS Safari. The current scroll position is saved, the body is
|
|
7
|
+
* pinned, scrollbar width is reserved to avoid a layout shift, and the scroll
|
|
8
|
+
* position is restored on release.
|
|
9
|
+
*
|
|
10
|
+
* Reference-counted so several open overlays don't unlock the page when one of
|
|
11
|
+
* them closes. Each caller holds a token (see {@link createScrollLockToken}) so
|
|
12
|
+
* repeated lock/unlock calls from the same source are idempotent — only the
|
|
13
|
+
* first lock and the last unlock touch the DOM.
|
|
14
|
+
*/
|
|
15
|
+
export interface ScrollLockToken {
|
|
16
|
+
locked: boolean;
|
|
17
|
+
}
|
|
18
|
+
export declare const createScrollLockToken: () => ScrollLockToken;
|
|
19
|
+
/**
|
|
20
|
+
* Lock or unlock body scroll for a single source. Pass a token created with
|
|
21
|
+
* {@link createScrollLockToken} so the call is idempotent — locking an already
|
|
22
|
+
* locked token (or unlocking an unlocked one) is a no-op.
|
|
23
|
+
*/
|
|
24
|
+
export declare const setScrollLock: (token: ScrollLockToken, shouldLock: boolean) => void;
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
import { a as e, n as t, o as n, p as r, s as i } from "./element-BoJrqauR.js";
|
|
2
|
+
import { n as a, t as o } from "./element-with-slot-mXLg8gg8.js";
|
|
3
|
+
import { t as s } from "./if-defined-D0bnetLJ.js";
|
|
4
|
+
import { n as c, r as l, t as u } from "./consume-BiOhrhEy.js";
|
|
5
|
+
import { n as d, t as f } from "./ref-WGS0u7i2.js";
|
|
6
|
+
//#region src/components/tabs/tabs-context.ts
|
|
7
|
+
var p = l(Symbol("pkt-tabs-context")), m = class extends o {
|
|
8
|
+
constructor(...e) {
|
|
9
|
+
super(...e), this.arrowNav = !0, this.disableArrowNav = !1, this.separatorIconName = "", this.separatorIconPath = "", this.tabRefs = [], this.disabledMap = {}, this.tabCount = 0, this.context = {
|
|
10
|
+
useArrowNav: this.useArrowNav,
|
|
11
|
+
registerTab: this.registerTab.bind(this),
|
|
12
|
+
handleClick: this.handleClick.bind(this),
|
|
13
|
+
handleKeyUp: this.handleKeyUp.bind(this)
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
get useArrowNav() {
|
|
17
|
+
return this.arrowNav && !this.disableArrowNav;
|
|
18
|
+
}
|
|
19
|
+
updated(e) {
|
|
20
|
+
(e.has("arrowNav") || e.has("disableArrowNav")) && (this.context = {
|
|
21
|
+
...this.context,
|
|
22
|
+
useArrowNav: this.useArrowNav
|
|
23
|
+
}), this.updateComplete.then(() => this.syncSeparators());
|
|
24
|
+
}
|
|
25
|
+
syncSeparators() {
|
|
26
|
+
let e = this.querySelector(".pkt-tabs__list");
|
|
27
|
+
if (!e || (e.querySelectorAll(".pkt-tabs__separator").forEach((e) => e.remove()), !(this.separatorIconName || this.separatorIconPath))) return;
|
|
28
|
+
let t = Array.from(e.children).filter((e) => !e.classList.contains("pkt-tabs__separator"));
|
|
29
|
+
for (let e = 0; e < t.length - 1; e++) {
|
|
30
|
+
let n = document.createElement("span");
|
|
31
|
+
if (n.className = "pkt-tabs__separator", n.setAttribute("aria-hidden", "true"), n.setAttribute("role", "presentation"), this.separatorIconPath) {
|
|
32
|
+
let e = document.createElement("img");
|
|
33
|
+
e.setAttribute("src", this.separatorIconPath), e.setAttribute("alt", ""), e.setAttribute("aria-hidden", "true"), n.appendChild(e);
|
|
34
|
+
} else if (this.separatorIconName) {
|
|
35
|
+
let e = document.createElement("pkt-icon");
|
|
36
|
+
e.setAttribute("name", this.separatorIconName), e.classList.add("pkt-tabs__separator-icon"), n.appendChild(e);
|
|
37
|
+
}
|
|
38
|
+
t[e].after(n);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
registerTab(e, t, n = !1) {
|
|
42
|
+
this.tabRefs[t] = e, this.disabledMap[t] = n, this.tabCount = Math.max(this.tabCount, t + 1);
|
|
43
|
+
}
|
|
44
|
+
isTabDisabled(e) {
|
|
45
|
+
return !!this.disabledMap[e];
|
|
46
|
+
}
|
|
47
|
+
findEnabledIndex(e, t) {
|
|
48
|
+
let n = e + t;
|
|
49
|
+
for (; n >= 0 && n < this.tabCount;) {
|
|
50
|
+
if (!this.isTabDisabled(n)) return n;
|
|
51
|
+
n += t;
|
|
52
|
+
}
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
handleClick(e) {
|
|
56
|
+
this.isTabDisabled(e) || this.dispatchEvent(new CustomEvent("tab-selected", {
|
|
57
|
+
detail: { index: e },
|
|
58
|
+
bubbles: !0,
|
|
59
|
+
composed: !0
|
|
60
|
+
}));
|
|
61
|
+
}
|
|
62
|
+
handleKeyUp(e, t) {
|
|
63
|
+
if (this.useArrowNav) {
|
|
64
|
+
if (e.key === "ArrowLeft") {
|
|
65
|
+
e.preventDefault();
|
|
66
|
+
let n = this.findEnabledIndex(t, -1);
|
|
67
|
+
n !== null && this.tabRefs[n]?.focus();
|
|
68
|
+
}
|
|
69
|
+
if (e.key === "ArrowRight") {
|
|
70
|
+
e.preventDefault();
|
|
71
|
+
let n = this.findEnabledIndex(t, 1);
|
|
72
|
+
n !== null && this.tabRefs[n]?.focus();
|
|
73
|
+
}
|
|
74
|
+
(e.key === "Enter" || e.key === " " || e.key === "Spacebar" || e.key === "ArrowDown") && (e.preventDefault(), this.handleClick(t));
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
render() {
|
|
78
|
+
let e = this.useArrowNav ? "tablist" : "navigation";
|
|
79
|
+
return r`
|
|
80
|
+
<div class=${this.separatorIconName || this.separatorIconPath ? "pkt-tabs pkt-tabs--with-separator" : "pkt-tabs"}>
|
|
81
|
+
<div class="pkt-tabs__list" role=${e}>${a(this)}</div>
|
|
82
|
+
</div>
|
|
83
|
+
`;
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
t([n({
|
|
87
|
+
type: Boolean,
|
|
88
|
+
reflect: !0,
|
|
89
|
+
attribute: "arrow-nav"
|
|
90
|
+
})], m.prototype, "arrowNav", void 0), t([n({
|
|
91
|
+
type: Boolean,
|
|
92
|
+
reflect: !0,
|
|
93
|
+
attribute: "disable-arrow-nav"
|
|
94
|
+
})], m.prototype, "disableArrowNav", void 0), t([n({
|
|
95
|
+
type: String,
|
|
96
|
+
reflect: !0,
|
|
97
|
+
attribute: "separator-icon-name"
|
|
98
|
+
})], m.prototype, "separatorIconName", void 0), t([n({
|
|
99
|
+
type: String,
|
|
100
|
+
reflect: !0,
|
|
101
|
+
attribute: "separator-icon-path"
|
|
102
|
+
})], m.prototype, "separatorIconPath", void 0), t([e()], m.prototype, "tabRefs", void 0), t([e()], m.prototype, "disabledMap", void 0), t([e()], m.prototype, "tabCount", void 0), t([c({ context: p }), e()], m.prototype, "context", void 0);
|
|
103
|
+
try {
|
|
104
|
+
i("pkt-tabs")(m);
|
|
105
|
+
} catch {
|
|
106
|
+
console.warn("Forsøker å definere <pkt-tabs>, men den er allerede definert");
|
|
107
|
+
}
|
|
108
|
+
//#endregion
|
|
109
|
+
//#region src/components/tabs/tabitem.ts
|
|
110
|
+
var h = class extends o {
|
|
111
|
+
constructor() {
|
|
112
|
+
super(), this.active = !1, this.disabled = !1, this.href = "", this.icon = "", this.controls = "", this.tag = "", this.tagSkin = "blue", this.index = 0, this.elementRef = f();
|
|
113
|
+
}
|
|
114
|
+
connectedCallback() {
|
|
115
|
+
super.connectedCallback(), this.updateComplete.then(() => {
|
|
116
|
+
this.elementRef.value && this.context && this.context.registerTab(this.elementRef.value, this.index, this.disabled);
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
updated() {
|
|
120
|
+
this.elementRef.value && this.context && this.context.registerTab(this.elementRef.value, this.index, this.disabled);
|
|
121
|
+
}
|
|
122
|
+
handleClick(e) {
|
|
123
|
+
if (this.disabled) {
|
|
124
|
+
e.preventDefault(), e.stopPropagation();
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
this.context && this.context.handleClick(this.index);
|
|
128
|
+
}
|
|
129
|
+
handleKeyDown(e) {
|
|
130
|
+
if (this.disabled && (e.key === "Enter" || e.key === " " || e.key === "Spacebar")) {
|
|
131
|
+
e.preventDefault(), e.stopPropagation();
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
this.context && this.context.handleKeyUp(e, this.index);
|
|
135
|
+
}
|
|
136
|
+
render() {
|
|
137
|
+
let e = this.context?.useArrowNav ?? !0, t = this.active && !this.disabled, n = [t ? "active" : "", this.disabled ? "pkt-tabs__item--disabled" : ""].filter(Boolean).join(" "), i = e ? "tab" : void 0, o = e ? t : void 0, c = this.disabled ? -1 : t || !e ? void 0 : -1, l = `pkt-icon--small ${this.icon === "check" ? "pkt-tabs__status-icon" : ""}`, u = r`
|
|
138
|
+
${this.icon ? r`<pkt-icon name=${this.icon} class=${l}></pkt-icon>` : ""}
|
|
139
|
+
<span>${a(this)}</span>
|
|
140
|
+
${this.tag ? r`<pkt-tag skin=${this.tagSkin} size="small">${this.tag}</pkt-tag>` : ""}
|
|
141
|
+
`;
|
|
142
|
+
return this.href ? r`
|
|
143
|
+
<a
|
|
144
|
+
${d(this.elementRef)}
|
|
145
|
+
href=${s(this.disabled ? void 0 : this.href)}
|
|
146
|
+
class="pkt-tabs__link ${n}"
|
|
147
|
+
role=${s(i)}
|
|
148
|
+
aria-selected=${s(o)}
|
|
149
|
+
aria-disabled=${s(this.disabled ? "true" : void 0)}
|
|
150
|
+
aria-controls=${s(this.controls || void 0)}
|
|
151
|
+
tabindex=${s(c)}
|
|
152
|
+
@click=${this.handleClick}
|
|
153
|
+
@keydown=${this.handleKeyDown}
|
|
154
|
+
>
|
|
155
|
+
${u}
|
|
156
|
+
</a>
|
|
157
|
+
` : r`
|
|
158
|
+
<button
|
|
159
|
+
${d(this.elementRef)}
|
|
160
|
+
type="button"
|
|
161
|
+
class="pkt-tabs__button pkt-link-button ${n}"
|
|
162
|
+
?disabled=${this.disabled}
|
|
163
|
+
aria-disabled=${s(this.disabled ? "true" : void 0)}
|
|
164
|
+
role=${s(i)}
|
|
165
|
+
aria-selected=${s(o)}
|
|
166
|
+
aria-controls=${s(this.controls || void 0)}
|
|
167
|
+
tabindex=${s(c)}
|
|
168
|
+
@click=${this.handleClick}
|
|
169
|
+
@keydown=${this.handleKeyDown}
|
|
170
|
+
>
|
|
171
|
+
${u}
|
|
172
|
+
</button>
|
|
173
|
+
`;
|
|
174
|
+
}
|
|
175
|
+
};
|
|
176
|
+
t([n({
|
|
177
|
+
type: Boolean,
|
|
178
|
+
reflect: !0
|
|
179
|
+
})], h.prototype, "active", void 0), t([n({
|
|
180
|
+
type: Boolean,
|
|
181
|
+
reflect: !0
|
|
182
|
+
})], h.prototype, "disabled", void 0), t([n({
|
|
183
|
+
type: String,
|
|
184
|
+
reflect: !0
|
|
185
|
+
})], h.prototype, "href", void 0), t([n({
|
|
186
|
+
type: String,
|
|
187
|
+
reflect: !0
|
|
188
|
+
})], h.prototype, "icon", void 0), t([n({
|
|
189
|
+
type: String,
|
|
190
|
+
reflect: !0
|
|
191
|
+
})], h.prototype, "controls", void 0), t([n({
|
|
192
|
+
type: String,
|
|
193
|
+
reflect: !0
|
|
194
|
+
})], h.prototype, "tag", void 0), t([n({
|
|
195
|
+
type: String,
|
|
196
|
+
reflect: !0,
|
|
197
|
+
attribute: "tag-skin"
|
|
198
|
+
})], h.prototype, "tagSkin", void 0), t([n({
|
|
199
|
+
type: Number,
|
|
200
|
+
reflect: !0
|
|
201
|
+
})], h.prototype, "index", void 0), t([u({
|
|
202
|
+
context: p,
|
|
203
|
+
subscribe: !0
|
|
204
|
+
}), n({ attribute: !1 })], h.prototype, "context", void 0);
|
|
205
|
+
try {
|
|
206
|
+
i("pkt-tab-item")(h);
|
|
207
|
+
} catch {
|
|
208
|
+
console.warn("Forsøker å definere <pkt-tab-item>, men den er allerede definert");
|
|
209
|
+
}
|
|
210
|
+
//#endregion
|
|
211
|
+
//#region src/components/tabs/index.ts
|
|
212
|
+
var g = m;
|
|
213
|
+
//#endregion
|
|
214
|
+
export { h as n, m as r, g as t };
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
const e=require("./element-DJzurxgt.cjs"),t=require("./element-with-slot-BY7Jc-q8.cjs"),n=require("./if-defined-DrwbxQOj.cjs"),r=require("./consume-DKf5SmP9.cjs"),i=require("./ref-DO7TzO4O.cjs");var a=r.r(Symbol(`pkt-tabs-context`)),o=class extends t.t{constructor(...e){super(...e),this.arrowNav=!0,this.disableArrowNav=!1,this.separatorIconName=``,this.separatorIconPath=``,this.tabRefs=[],this.disabledMap={},this.tabCount=0,this.context={useArrowNav:this.useArrowNav,registerTab:this.registerTab.bind(this),handleClick:this.handleClick.bind(this),handleKeyUp:this.handleKeyUp.bind(this)}}get useArrowNav(){return this.arrowNav&&!this.disableArrowNav}updated(e){(e.has(`arrowNav`)||e.has(`disableArrowNav`))&&(this.context={...this.context,useArrowNav:this.useArrowNav}),this.updateComplete.then(()=>this.syncSeparators())}syncSeparators(){let e=this.querySelector(`.pkt-tabs__list`);if(!e||(e.querySelectorAll(`.pkt-tabs__separator`).forEach(e=>e.remove()),!(this.separatorIconName||this.separatorIconPath)))return;let t=Array.from(e.children).filter(e=>!e.classList.contains(`pkt-tabs__separator`));for(let e=0;e<t.length-1;e++){let n=document.createElement(`span`);if(n.className=`pkt-tabs__separator`,n.setAttribute(`aria-hidden`,`true`),n.setAttribute(`role`,`presentation`),this.separatorIconPath){let e=document.createElement(`img`);e.setAttribute(`src`,this.separatorIconPath),e.setAttribute(`alt`,``),e.setAttribute(`aria-hidden`,`true`),n.appendChild(e)}else if(this.separatorIconName){let e=document.createElement(`pkt-icon`);e.setAttribute(`name`,this.separatorIconName),e.classList.add(`pkt-tabs__separator-icon`),n.appendChild(e)}t[e].after(n)}}registerTab(e,t,n=!1){this.tabRefs[t]=e,this.disabledMap[t]=n,this.tabCount=Math.max(this.tabCount,t+1)}isTabDisabled(e){return!!this.disabledMap[e]}findEnabledIndex(e,t){let n=e+t;for(;n>=0&&n<this.tabCount;){if(!this.isTabDisabled(n))return n;n+=t}return null}handleClick(e){this.isTabDisabled(e)||this.dispatchEvent(new CustomEvent(`tab-selected`,{detail:{index:e},bubbles:!0,composed:!0}))}handleKeyUp(e,t){if(this.useArrowNav){if(e.key===`ArrowLeft`){e.preventDefault();let n=this.findEnabledIndex(t,-1);n!==null&&this.tabRefs[n]?.focus()}if(e.key===`ArrowRight`){e.preventDefault();let n=this.findEnabledIndex(t,1);n!==null&&this.tabRefs[n]?.focus()}(e.key===`Enter`||e.key===` `||e.key===`Spacebar`||e.key===`ArrowDown`)&&(e.preventDefault(),this.handleClick(t))}}render(){let n=this.useArrowNav?`tablist`:`navigation`;return e.p`
|
|
2
|
+
<div class=${this.separatorIconName||this.separatorIconPath?`pkt-tabs pkt-tabs--with-separator`:`pkt-tabs`}>
|
|
3
|
+
<div class="pkt-tabs__list" role=${n}>${t.n(this)}</div>
|
|
4
|
+
</div>
|
|
5
|
+
`}};e.n([e.o({type:Boolean,reflect:!0,attribute:`arrow-nav`})],o.prototype,`arrowNav`,void 0),e.n([e.o({type:Boolean,reflect:!0,attribute:`disable-arrow-nav`})],o.prototype,`disableArrowNav`,void 0),e.n([e.o({type:String,reflect:!0,attribute:`separator-icon-name`})],o.prototype,`separatorIconName`,void 0),e.n([e.o({type:String,reflect:!0,attribute:`separator-icon-path`})],o.prototype,`separatorIconPath`,void 0),e.n([e.a()],o.prototype,`tabRefs`,void 0),e.n([e.a()],o.prototype,`disabledMap`,void 0),e.n([e.a()],o.prototype,`tabCount`,void 0),e.n([r.n({context:a}),e.a()],o.prototype,`context`,void 0);try{e.s(`pkt-tabs`)(o)}catch{console.warn(`Forsøker å definere <pkt-tabs>, men den er allerede definert`)}var s=class extends t.t{constructor(){super(),this.active=!1,this.disabled=!1,this.href=``,this.icon=``,this.controls=``,this.tag=``,this.tagSkin=`blue`,this.index=0,this.elementRef=i.t()}connectedCallback(){super.connectedCallback(),this.updateComplete.then(()=>{this.elementRef.value&&this.context&&this.context.registerTab(this.elementRef.value,this.index,this.disabled)})}updated(){this.elementRef.value&&this.context&&this.context.registerTab(this.elementRef.value,this.index,this.disabled)}handleClick(e){if(this.disabled){e.preventDefault(),e.stopPropagation();return}this.context&&this.context.handleClick(this.index)}handleKeyDown(e){if(this.disabled&&(e.key===`Enter`||e.key===` `||e.key===`Spacebar`)){e.preventDefault(),e.stopPropagation();return}this.context&&this.context.handleKeyUp(e,this.index)}render(){let r=this.context?.useArrowNav??!0,a=this.active&&!this.disabled,o=[a?`active`:``,this.disabled?`pkt-tabs__item--disabled`:``].filter(Boolean).join(` `),s=r?`tab`:void 0,c=r?a:void 0,l=this.disabled?-1:a||!r?void 0:-1,u=`pkt-icon--small ${this.icon===`check`?`pkt-tabs__status-icon`:``}`,d=e.p`
|
|
6
|
+
${this.icon?e.p`<pkt-icon name=${this.icon} class=${u}></pkt-icon>`:``}
|
|
7
|
+
<span>${t.n(this)}</span>
|
|
8
|
+
${this.tag?e.p`<pkt-tag skin=${this.tagSkin} size="small">${this.tag}</pkt-tag>`:``}
|
|
9
|
+
`;return this.href?e.p`
|
|
10
|
+
<a
|
|
11
|
+
${i.n(this.elementRef)}
|
|
12
|
+
href=${n.t(this.disabled?void 0:this.href)}
|
|
13
|
+
class="pkt-tabs__link ${o}"
|
|
14
|
+
role=${n.t(s)}
|
|
15
|
+
aria-selected=${n.t(c)}
|
|
16
|
+
aria-disabled=${n.t(this.disabled?`true`:void 0)}
|
|
17
|
+
aria-controls=${n.t(this.controls||void 0)}
|
|
18
|
+
tabindex=${n.t(l)}
|
|
19
|
+
@click=${this.handleClick}
|
|
20
|
+
@keydown=${this.handleKeyDown}
|
|
21
|
+
>
|
|
22
|
+
${d}
|
|
23
|
+
</a>
|
|
24
|
+
`:e.p`
|
|
25
|
+
<button
|
|
26
|
+
${i.n(this.elementRef)}
|
|
27
|
+
type="button"
|
|
28
|
+
class="pkt-tabs__button pkt-link-button ${o}"
|
|
29
|
+
?disabled=${this.disabled}
|
|
30
|
+
aria-disabled=${n.t(this.disabled?`true`:void 0)}
|
|
31
|
+
role=${n.t(s)}
|
|
32
|
+
aria-selected=${n.t(c)}
|
|
33
|
+
aria-controls=${n.t(this.controls||void 0)}
|
|
34
|
+
tabindex=${n.t(l)}
|
|
35
|
+
@click=${this.handleClick}
|
|
36
|
+
@keydown=${this.handleKeyDown}
|
|
37
|
+
>
|
|
38
|
+
${d}
|
|
39
|
+
</button>
|
|
40
|
+
`}};e.n([e.o({type:Boolean,reflect:!0})],s.prototype,`active`,void 0),e.n([e.o({type:Boolean,reflect:!0})],s.prototype,`disabled`,void 0),e.n([e.o({type:String,reflect:!0})],s.prototype,`href`,void 0),e.n([e.o({type:String,reflect:!0})],s.prototype,`icon`,void 0),e.n([e.o({type:String,reflect:!0})],s.prototype,`controls`,void 0),e.n([e.o({type:String,reflect:!0})],s.prototype,`tag`,void 0),e.n([e.o({type:String,reflect:!0,attribute:`tag-skin`})],s.prototype,`tagSkin`,void 0),e.n([e.o({type:Number,reflect:!0})],s.prototype,`index`,void 0),e.n([r.t({context:a,subscribe:!0}),e.o({attribute:!1})],s.prototype,`context`,void 0);try{e.s(`pkt-tab-item`)(s)}catch{console.warn(`Forsøker å definere <pkt-tab-item>, men den er allerede definert`)}var c=o;Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return c}});
|
|
@@ -5,8 +5,8 @@ import { n as p } from "./element-with-slot-mXLg8gg8.js";
|
|
|
5
5
|
import "./icon-DGFEIlco.js";
|
|
6
6
|
import { t as m } from "./if-defined-D0bnetLJ.js";
|
|
7
7
|
import { n as h, t as g } from "./ref-WGS0u7i2.js";
|
|
8
|
-
import { t as _ } from "./input-element-
|
|
9
|
-
import "./input-wrapper-
|
|
8
|
+
import { t as _ } from "./input-element-C0RnXi-J.js";
|
|
9
|
+
import "./input-wrapper-fWV5P4MN.js";
|
|
10
10
|
//#region node_modules/lit/node_modules/lit-html/directives/live.js
|
|
11
11
|
var v = t(class extends i {
|
|
12
12
|
constructor(e) {
|
|
@@ -39,6 +39,7 @@ var v = t(class extends i {
|
|
|
39
39
|
render() {
|
|
40
40
|
let e = u({
|
|
41
41
|
"pkt-input": !0,
|
|
42
|
+
[`pkt-input--${this.inputSize}`]: !0,
|
|
42
43
|
"pkt-input--fullwidth": this.fullwidth,
|
|
43
44
|
"pkt-input--counter-error": this.counter && this.counterMaxLength && this.value.length && this.value.length > this.counterMaxLength
|
|
44
45
|
}), t = this.ariaLabelledby || `${this.id}-input-label`;
|
|
@@ -63,6 +64,7 @@ var v = t(class extends i {
|
|
|
63
64
|
.optionalText=${this.optionalText}
|
|
64
65
|
.requiredText=${this.requiredText}
|
|
65
66
|
.tagText=${this.tagText}
|
|
67
|
+
.size=${this.inputSize}
|
|
66
68
|
class="pkt-textarea"
|
|
67
69
|
>
|
|
68
70
|
<div class="pkt-contents" slot="helptext">${p(this, "helptext")}</div>
|
|
@@ -80,7 +82,7 @@ var v = t(class extends i {
|
|
|
80
82
|
aria-labelledby=${t}
|
|
81
83
|
aria-invalid=${this.hasError}
|
|
82
84
|
aria-errormessage=${`${this.id}-error`}
|
|
83
|
-
rows=${this.rows}
|
|
85
|
+
rows=${m(this.rows ?? void 0)}
|
|
84
86
|
?disabled=${this.disabled}
|
|
85
87
|
@input=${(e) => {
|
|
86
88
|
this.value = e.target.value, this.onInput(), e.stopImmediatePropagation();
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const e=require("./element-DJzurxgt.cjs"),t=require("./class-map-CCZN5uS3.cjs"),n=require("./directive-helpers-BshFvt7A.cjs"),r=require("./element-with-slot-BY7Jc-q8.cjs");require("./icon-B8PVq2O6.cjs");const i=require("./if-defined-DrwbxQOj.cjs"),a=require("./ref-DO7TzO4O.cjs"),o=require("./input-element-
|
|
1
|
+
const e=require("./element-DJzurxgt.cjs"),t=require("./class-map-CCZN5uS3.cjs"),n=require("./directive-helpers-BshFvt7A.cjs"),r=require("./element-with-slot-BY7Jc-q8.cjs");require("./icon-B8PVq2O6.cjs");const i=require("./if-defined-DrwbxQOj.cjs"),a=require("./ref-DO7TzO4O.cjs"),o=require("./input-element-B0qLbEdF.cjs");require("./input-wrapper-DPkkiG7S.cjs");var s=e.c(class extends e.l{constructor(t){if(super(t),t.type!==e.u.PROPERTY&&t.type!==e.u.ATTRIBUTE&&t.type!==e.u.BOOLEAN_ATTRIBUTE)throw Error("The `live` directive is not allowed on child or event bindings");if(!n.i(t))throw Error("`live` bindings can only contain a single expression")}render(e){return e}update(t,[r]){if(r===e.f||r===e.d)return r;let i=t.element,a=t.name;if(t.type===e.u.PROPERTY){if(r===i[a])return e.f}else if(t.type===e.u.BOOLEAN_ATTRIBUTE){if(!!r===i.hasAttribute(a))return e.f}else if(t.type===e.u.ATTRIBUTE&&i.getAttribute(a)===r+``)return e.f;return n.r(t),r}}),c=class extends o.t{constructor(...e){super(...e),this.inputRef=a.t(),this.value=``,this.autocomplete=`off`,this.rows=null,this.counterCurrent=0}attributeChangedCallback(e,t,n){e===`value`&&this.value!==t&&(this.counterCurrent=n?n.length:0),super.attributeChangedCallback(e,t,n)}updated(e){super.updated(e),e.has(`value`)&&(this.counterCurrent=this.value?.length||0,this.valueChanged(this.value,e.get(`value`))),e.has(`id`)&&!this.name&&this.id&&(this.name=this.id)}render(){let n=t.t({"pkt-input":!0,[`pkt-input--${this.inputSize}`]:!0,"pkt-input--fullwidth":this.fullwidth,"pkt-input--counter-error":this.counter&&this.counterMaxLength&&this.value.length&&this.value.length>this.counterMaxLength}),o=this.ariaLabelledby||`${this.id}-input-label`;return e.p`<pkt-input-wrapper
|
|
2
2
|
label=${this.label}
|
|
3
3
|
?counter=${this.counter}
|
|
4
4
|
?disabled=${this.disabled}
|
|
@@ -19,6 +19,7 @@ const e=require("./element-DJzurxgt.cjs"),t=require("./class-map-CCZN5uS3.cjs"),
|
|
|
19
19
|
.optionalText=${this.optionalText}
|
|
20
20
|
.requiredText=${this.requiredText}
|
|
21
21
|
.tagText=${this.tagText}
|
|
22
|
+
.size=${this.inputSize}
|
|
22
23
|
class="pkt-textarea"
|
|
23
24
|
>
|
|
24
25
|
<div class="pkt-contents" slot="helptext">${r.n(this,`helptext`)}</div>
|
|
@@ -36,7 +37,7 @@ const e=require("./element-DJzurxgt.cjs"),t=require("./class-map-CCZN5uS3.cjs"),
|
|
|
36
37
|
aria-labelledby=${o}
|
|
37
38
|
aria-invalid=${this.hasError}
|
|
38
39
|
aria-errormessage=${`${this.id}-error`}
|
|
39
|
-
rows=${this.rows}
|
|
40
|
+
rows=${i.t(this.rows??void 0)}
|
|
40
41
|
?disabled=${this.disabled}
|
|
41
42
|
@input=${e=>{this.value=e.target.value,this.onInput(),e.stopImmediatePropagation()}}
|
|
42
43
|
@change=${e=>{e.stopImmediatePropagation()}}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const e=require("./element-DJzurxgt.cjs"),t=require("./class-map-CCZN5uS3.cjs"),n=require("./element-with-slot-BY7Jc-q8.cjs");require("./icon-B8PVq2O6.cjs");const r=require("./if-defined-DrwbxQOj.cjs"),i=require("./ref-DO7TzO4O.cjs"),a=require("./input-element-
|
|
1
|
+
const e=require("./element-DJzurxgt.cjs"),t=require("./class-map-CCZN5uS3.cjs"),n=require("./element-with-slot-BY7Jc-q8.cjs");require("./icon-B8PVq2O6.cjs");const r=require("./if-defined-DrwbxQOj.cjs"),i=require("./ref-DO7TzO4O.cjs"),a=require("./input-element-B0qLbEdF.cjs");require("./input-wrapper-DPkkiG7S.cjs");var o=class extends a.t{constructor(...e){super(...e),this.inputRef=i.t(),this.value=``,this.type=`text`,this.size=null,this.autocomplete=null,this.iconNameRight=null,this.prefix=null,this.suffix=null,this.omitSearchIcon=!1,this.counterCurrent=0}attributeChangedCallback(e,t,n){e===`value`&&this.value!==t&&(this.counterCurrent=n?n.length:0),super.attributeChangedCallback(e,t,n)}updated(e){super.updated(e),e.has(`value`)&&(this.counterCurrent=this.value?.length||0,this.valueChanged(this.value,e.get(`value`))),e.has(`id`)&&!this.name&&this.id&&(this.name=this.id)}render(){let a=this.type===`search`&&!this.iconNameRight&&!this.omitSearchIcon,o=t.t({"pkt-input":!0,[`pkt-input--${this.inputSize}`]:!0,"pkt-input--fullwidth":this.fullwidth,"pkt-input--counter-error":this.counter&&this.counterMaxLength&&this.value.length&&this.value.length>this.counterMaxLength}),s=this.ariaLabelledby||`${this.id}-input-label`;return e.p`
|
|
2
2
|
<pkt-input-wrapper
|
|
3
3
|
label="${this.label}"
|
|
4
4
|
?counter=${this.counter}
|
|
@@ -21,10 +21,11 @@ const e=require("./element-DJzurxgt.cjs"),t=require("./class-map-CCZN5uS3.cjs"),
|
|
|
21
21
|
.optionalText=${this.optionalText}
|
|
22
22
|
.requiredText=${this.requiredText}
|
|
23
23
|
.tagText=${this.tagText}
|
|
24
|
+
.size=${this.inputSize}
|
|
24
25
|
class="pkt-textinput"
|
|
25
26
|
>
|
|
26
27
|
<div class="pkt-contents" slot="helptext">${n.n(this,`helptext`)}</div>
|
|
27
|
-
<div class
|
|
28
|
+
<div class=${`pkt-input__container pkt-input__container--${this.inputSize}`}>
|
|
28
29
|
${this.prefix?e.p`<div class="pkt-input-prefix">${this.prefix}</div>`:e.d}
|
|
29
30
|
<input
|
|
30
31
|
${i.n(this.inputRef)}
|
|
@@ -4,8 +4,8 @@ import { n as s } from "./element-with-slot-mXLg8gg8.js";
|
|
|
4
4
|
import "./icon-DGFEIlco.js";
|
|
5
5
|
import { t as c } from "./if-defined-D0bnetLJ.js";
|
|
6
6
|
import { n as l, t as u } from "./ref-WGS0u7i2.js";
|
|
7
|
-
import { t as d } from "./input-element-
|
|
8
|
-
import "./input-wrapper-
|
|
7
|
+
import { t as d } from "./input-element-C0RnXi-J.js";
|
|
8
|
+
import "./input-wrapper-fWV5P4MN.js";
|
|
9
9
|
//#region src/components/textinput/textinput.ts
|
|
10
10
|
var f = class extends d {
|
|
11
11
|
constructor(...e) {
|
|
@@ -20,6 +20,7 @@ var f = class extends d {
|
|
|
20
20
|
render() {
|
|
21
21
|
let e = this.type === "search" && !this.iconNameRight && !this.omitSearchIcon, n = o({
|
|
22
22
|
"pkt-input": !0,
|
|
23
|
+
[`pkt-input--${this.inputSize}`]: !0,
|
|
23
24
|
"pkt-input--fullwidth": this.fullwidth,
|
|
24
25
|
"pkt-input--counter-error": this.counter && this.counterMaxLength && this.value.length && this.value.length > this.counterMaxLength
|
|
25
26
|
}), r = this.ariaLabelledby || `${this.id}-input-label`;
|
|
@@ -46,10 +47,11 @@ var f = class extends d {
|
|
|
46
47
|
.optionalText=${this.optionalText}
|
|
47
48
|
.requiredText=${this.requiredText}
|
|
48
49
|
.tagText=${this.tagText}
|
|
50
|
+
.size=${this.inputSize}
|
|
49
51
|
class="pkt-textinput"
|
|
50
52
|
>
|
|
51
53
|
<div class="pkt-contents" slot="helptext">${s(this, "helptext")}</div>
|
|
52
|
-
<div class
|
|
54
|
+
<div class=${`pkt-input__container pkt-input__container--${this.inputSize}`}>
|
|
53
55
|
${this.prefix ? i`<div class="pkt-input-prefix">${this.prefix}</div>` : t}
|
|
54
56
|
<input
|
|
55
57
|
${l(this.inputRef)}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const e=require("./element-DJzurxgt.cjs"),t=require("./class-map-CCZN5uS3.cjs"),n=require("./element-with-slot-BY7Jc-q8.cjs");require("./icon-B8PVq2O6.cjs");const r=require("./if-defined-DrwbxQOj.cjs"),i=require("./ref-DO7TzO4O.cjs"),a=require("./input-element-ZGOWsvKM.cjs");require("./input-wrapper-BRjQB4zM.cjs");var o=e=>/^\d{2}:\d{2}$/.test(e)&&parseInt(e.slice(0,2),10)<=23&&parseInt(e.slice(3),10)<=59,s=e=>{let[t,n]=e.split(`:`).map(Number);return t*60+n},c=e=>e?Math.max(1,Math.round(e/60)):1,l=(e,t)=>{let n=e?parseInt(String(e).split(`:`)[0],10):0,r=t?parseInt(String(t).split(`:`)[0],10):23;return Array.from({length:r-n+1},(e,t)=>t+n)},u=e=>{let t=c(e);return Array.from({length:Math.floor(60/t)},(e,n)=>n*t)},d=(e,t,n,r)=>{let i=e===``?n===1?0:23:parseInt(e,10),a=t===``?n===1?0:Math.floor(59/r)*r:parseInt(t,10);return a+=n*r,a>59?(a=0,i=(i+1)%24):a<0&&(a=Math.floor(59/r)*r,i=(i-1+24)%24),{hours:String(i).padStart(2,`0`),minutes:String(a).padStart(2,`0`)}},f=class extends a.t{constructor(...e){super(...e),this.hiddenInputRef=i.t(),this.hoursInputRef=i.t(),this.minutesInputRef=i.t(),this.buttonRef=i.t(),this.value=``,this.hidePicker=!1,this.stepArrows=!1,this._hours=``,this._minutes=``,this._isOpen=!1,this._hoursDigitCount=0,this._hoursFirstDigit=-1,this._minutesDigitCount=0,this._minutesFirstDigit=-1,this._hasFocus=!1,this._outsideClickHandler=e=>{this.contains(e.target)||this._closePopup()},this._handleComponentFocusIn=()=>{this._hasFocus||(this._hasFocus=!0,this.onFocus())},this._handleComponentFocusOut=e=>{this.contains(e.relatedTarget)||(this._hasFocus=!1,this.onBlur())},this._handleHoursKeydown=e=>{let t=e.target;switch(e.key){case`ArrowUp`:{e.preventDefault();let t=this._hours===``?0:parseInt(this._hours,10);this._hours=String((t+1)%24).padStart(2,`0`),this._syncValueFromDisplay(),this.onInput();break}case`ArrowDown`:{e.preventDefault();let t=this._hours===``?0:parseInt(this._hours,10);this._hours=String((t-1+24)%24).padStart(2,`0`),this._syncValueFromDisplay(),this.onInput();break}case`ArrowRight`:e.preventDefault(),this.minutesInputRef.value?.focus();break;case`Backspace`:case`Delete`:this._hoursDigitCount=0,this._hoursFirstDigit=-1;break;case`Tab`:break;case`Enter`:{e.preventDefault();let n=this.internals.form;n?n.requestSubmit():t.blur();break}default:if(/^\d$/.test(e.key)){e.preventDefault();let t=parseInt(e.key,10);if(this._hoursDigitCount===0)this._hoursFirstDigit=t,this._hours=String(t).padStart(2,`0`),this._hoursDigitCount=1,this.onInput(),t>=3&&(this._hoursFirstDigit=-1,this._hoursDigitCount=0,this._syncValueFromDisplay(),this.minutesInputRef.value?.focus());else{let e=this._hoursFirstDigit*10+t;this._hours=e<=23?String(e).padStart(2,`0`):String(t).padStart(2,`0`),this._hoursFirstDigit=-1,this._hoursDigitCount=0,this._syncValueFromDisplay(),this.onInput(),this.minutesInputRef.value?.focus()}}else e.preventDefault()}},this._handleHoursBlur=()=>{this._hours!==``&&(this._hours=String(parseInt(this._hours,10)).padStart(2,`0`)),this._hoursDigitCount=0,this._hoursFirstDigit=-1,this._syncValueFromDisplay()},this._handleMinutesKeydown=e=>{let t=e.target;switch(e.key){case`ArrowUp`:{e.preventDefault();let t=this._minutes===``?0:parseInt(this._minutes,10);this._minutes=String((t+this._minuteStep)%60).padStart(2,`0`),this._syncValueFromDisplay(),this.onInput();break}case`ArrowDown`:{e.preventDefault();let t=this._minutes===``?0:parseInt(this._minutes,10);this._minutes=String((t-this._minuteStep+60)%60).padStart(2,`0`),this._syncValueFromDisplay(),this.onInput();break}case`ArrowLeft`:e.preventDefault(),this.hoursInputRef.value?.focus();break;case`Backspace`:case`Delete`:this._minutesDigitCount=0,this._minutesFirstDigit=-1;break;case`Tab`:break;case`Enter`:{e.preventDefault();let n=this.internals.form;n?n.requestSubmit():t.blur();break}default:if(/^\d$/.test(e.key)){e.preventDefault();let t=parseInt(e.key,10);if(this._minutesDigitCount===0)this._minutesFirstDigit=t,this._minutes=String(t).padStart(2,`0`),this._minutesDigitCount=1,this.onInput(),t>=6&&(this._minutesFirstDigit=-1,this._minutesDigitCount=0,this._syncValueFromDisplay());else{let e=this._minutesFirstDigit*10+t;this._minutes=e<=59?String(e).padStart(2,`0`):String(t).padStart(2,`0`),this._minutesFirstDigit=-1,this._minutesDigitCount=0,this._syncValueFromDisplay(),this.onInput()}}else e.preventDefault()}},this._handleMinutesBlur=()=>{this._minutes!==``&&(this._minutes=String(parseInt(this._minutes,10)).padStart(2,`0`)),this._minutesDigitCount=0,this._minutesFirstDigit=-1,this._syncValueFromDisplay()},this._handlePopupKeydown=e=>{let t=document.activeElement,n=t.closest(`.pkt-timepicker-popup__col`);if(!n)return;let r=Array.from(n.querySelectorAll(`.pkt-timepicker-popup__option`)),i=r.indexOf(t),a=t.dataset.type??``;switch(e.key){case`ArrowDown`:e.preventDefault(),this._focusOptionAndSync(r[Math.min(i+1,r.length-1)],a);break;case`ArrowUp`:e.preventDefault(),this._focusOptionAndSync(r[Math.max(i-1,0)],a);break;case`Home`:e.preventDefault(),this._focusOptionAndSync(r[0],a);break;case`End`:e.preventDefault(),this._focusOptionAndSync(r[r.length-1],a);break;case`ArrowRight`:e.preventDefault(),a===`hour`&&(this._focusOptionAndSync(t,a),this.updateComplete.then(()=>{this._scrollToSelected(),this._focusSelectedOrFirst(`minute`)}));break;case`ArrowLeft`:e.preventDefault(),a===`minute`&&(this._focusOptionAndSync(t,a),this.updateComplete.then(()=>{this._scrollToSelected(),this._focusSelectedOrFirst(`hour`)}));break;case`Enter`:case` `:e.preventDefault(),t.click();break;case`Escape`:e.preventDefault(),this._closePopup(),this.buttonRef.value?.focus();break}}}get inputRef(){return this.hiddenInputRef}manageValidity(t){let n=this.hoursInputRef.value;if(!n)return;if(this.required&&!this.value){this.internals.setValidity({valueMissing:!0},e.r.forms.messages.required,n),this._setAriaInvalid(!0);return}if(!this.value){this.internals.setValidity({}),this._setAriaInvalid(!1);return}let r=s(this.value),i=c(this.step);if(this.min&&r<s(String(this.min))){this.internals.setValidity({rangeUnderflow:!0},e.r.forms.messages.rangeUnderflowMin.replace(`{min}`,String(this.min)),n),this._setAriaInvalid(!0);return}if(this.max&&r>s(String(this.max))){this.internals.setValidity({rangeOverflow:!0},e.r.forms.messages.rangeOverflowMax.replace(`{max}`,String(this.max)),n),this._setAriaInvalid(!0);return}if(this.step&&r%i!==0){let t=i===60?e.r.forms.messages.timeStepMismatchHour:i===30?e.r.forms.messages.timeStepMismatchHalfHour:e.r.forms.messages.timeStepMismatch.replace(`{step}`,`${i}, ${i*2}, ${i*3}`);this.internals.setValidity({stepMismatch:!0},t,n),this._setAriaInvalid(!0);return}this.internals.setValidity({}),this._setAriaInvalid(!1)}_setAriaInvalid(e){if(!this.touched&&e)return;let t=this.hoursInputRef.value,n=this.minutesInputRef.value;e?(t?.setAttribute(`aria-invalid`,`true`),n?.setAttribute(`aria-invalid`,`true`)):(t?.removeAttribute(`aria-invalid`),n?.removeAttribute(`aria-invalid`))}connectedCallback(){super.connectedCallback(),this.addEventListener(`focusin`,this._handleComponentFocusIn),this.addEventListener(`focusout`,this._handleComponentFocusOut),document.addEventListener(`click`,this._outsideClickHandler)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener(`focusin`,this._handleComponentFocusIn),this.removeEventListener(`focusout`,this._handleComponentFocusOut),document.removeEventListener(`click`,this._outsideClickHandler)}willUpdate(e){super.willUpdate(e),e.has(`value`)&&this._syncDisplayFromValue()}updated(e){super.updated(e),this.classList.toggle(`pkt-timepicker--stepper`,this.stepArrows),this.classList.toggle(`pkt-timepicker--fullwidth`,this.fullwidth),e.has(`step`)&&this.step!==null&&!this._isValidStep(this.step)&&console.warn(`pkt-timepicker: step="${this.step}" er ikke en gyldig verdi. Step må være et multiplum av 60 (hele minutter) eller nøyaktig 3600 (hel time).`)}formResetCallback(){super.formResetCallback(),this._hours=``,this._minutes=``,this._isOpen=!1}_isValidStep(e){return e===3600||e<3600&&3600%e==0&&e%60==0}_syncDisplayFromValue(){let e=o(this.value)?this.value.split(`:`):null;e?(this._hours=e[0],this._minutes=e[1]):(this._hours=``,this._minutes=``)}_syncValueFromDisplay(){if(this._hours!==``&&this._minutes!==``){let e=`${this._hours}:${this._minutes}`;e!==this.value&&(this.value=e,this.onChange(e))}else this.value!==``&&(this.value=``,this.onChange(``))}get _minuteStep(){return c(this.step)}get _hourOptions(){return l(this.min,this.max)}get _minuteOptions(){return u(this.step)}_openPopup(){this._isOpen=!0,this.updateComplete.then(()=>{this._scrollToSelected(),this._focusSelectedOrFirst(`hour`)})}_closePopup(){this._isOpen=!1,this._syncValueFromDisplay()}_togglePopup(){this._isOpen?this._closePopup():this._openPopup()}_scrollToSelected(){let e=this.querySelector(`.pkt-timepicker-popup`);e&&e.querySelectorAll(`.pkt-timepicker-popup__col`).forEach(e=>{let t=e.querySelector(`.pkt-timepicker-popup__option--selected`);t&&t.scrollIntoView({block:`center`})})}_focusSelectedOrFirst(e){let t=this.querySelector(`.pkt-timepicker-popup`);if(!t)return;let n=t.querySelectorAll(`.pkt-timepicker-popup__col`),r=e===`hour`?n[0]:n[1];if(!r)return;let i=r.querySelector(`.pkt-timepicker-popup__option--selected`),a=r.querySelector(`.pkt-timepicker-popup__option`);(i||a)?.focus()}_handleOptionClick(e,t){let n=String(e).padStart(2,`0`);t===`hour`?(this._hours=n,this.updateComplete.then(()=>this._focusSelectedOrFirst(`minute`))):(this._minutes=n,this._closePopup(),this.buttonRef.value?.focus())}_focusOptionAndSync(e,t){if(!e)return;let n=parseInt(e.dataset.value??`0`,10);t===`hour`?this._hours=String(n).padStart(2,`0`):this._minutes=String(n).padStart(2,`0`),e.focus()}_stepTime(e){let t=d(this._hours,this._minutes,e,this._minuteStep);this._hours=t.hours,this._minutes=t.minutes,this._syncValueFromDisplay()}_renderOption(n,r){let i=String(n).padStart(2,`0`),a=n===(r===`hour`?this._hours===``?NaN:parseInt(this._hours,10):this._minutes===``?NaN:parseInt(this._minutes,10));return e.p`
|
|
1
|
+
const e=require("./element-DJzurxgt.cjs"),t=require("./class-map-CCZN5uS3.cjs"),n=require("./element-with-slot-BY7Jc-q8.cjs");require("./icon-B8PVq2O6.cjs");const r=require("./if-defined-DrwbxQOj.cjs"),i=require("./ref-DO7TzO4O.cjs"),a=require("./input-element-B0qLbEdF.cjs");require("./input-wrapper-DPkkiG7S.cjs");var o=e=>/^\d{2}:\d{2}$/.test(e)&&parseInt(e.slice(0,2),10)<=23&&parseInt(e.slice(3),10)<=59,s=e=>{let[t,n]=e.split(`:`).map(Number);return t*60+n},c=e=>e?Math.max(1,Math.round(e/60)):1,l=(e,t)=>{let n=e?parseInt(String(e).split(`:`)[0],10):0,r=t?parseInt(String(t).split(`:`)[0],10):23;return Array.from({length:r-n+1},(e,t)=>t+n)},u=e=>{let t=c(e);return Array.from({length:Math.floor(60/t)},(e,n)=>n*t)},d=(e,t,n,r)=>{let i=e===``?n===1?0:23:parseInt(e,10),a=t===``?n===1?0:Math.floor(59/r)*r:parseInt(t,10);return a+=n*r,a>59?(a=0,i=(i+1)%24):a<0&&(a=Math.floor(59/r)*r,i=(i-1+24)%24),{hours:String(i).padStart(2,`0`),minutes:String(a).padStart(2,`0`)}},f=class extends a.t{constructor(...e){super(...e),this.hiddenInputRef=i.t(),this.hoursInputRef=i.t(),this.minutesInputRef=i.t(),this.buttonRef=i.t(),this.value=``,this.hidePicker=!1,this.stepArrows=!1,this._hours=``,this._minutes=``,this._isOpen=!1,this._hoursDigitCount=0,this._hoursFirstDigit=-1,this._minutesDigitCount=0,this._minutesFirstDigit=-1,this._hasFocus=!1,this._outsideClickHandler=e=>{this.contains(e.target)||this._closePopup()},this._handleComponentFocusIn=()=>{this._hasFocus||(this._hasFocus=!0,this.onFocus())},this._handleComponentFocusOut=e=>{this.contains(e.relatedTarget)||(this._hasFocus=!1,this.onBlur())},this._handleHoursKeydown=e=>{let t=e.target;switch(e.key){case`ArrowUp`:{e.preventDefault();let t=this._hours===``?0:parseInt(this._hours,10);this._hours=String((t+1)%24).padStart(2,`0`),this._syncValueFromDisplay(),this.onInput();break}case`ArrowDown`:{e.preventDefault();let t=this._hours===``?0:parseInt(this._hours,10);this._hours=String((t-1+24)%24).padStart(2,`0`),this._syncValueFromDisplay(),this.onInput();break}case`ArrowRight`:e.preventDefault(),this.minutesInputRef.value?.focus();break;case`Backspace`:case`Delete`:this._hoursDigitCount=0,this._hoursFirstDigit=-1;break;case`Tab`:break;case`Enter`:{e.preventDefault();let n=this.internals.form;n?n.requestSubmit():t.blur();break}default:if(/^\d$/.test(e.key)){e.preventDefault();let t=parseInt(e.key,10);if(this._hoursDigitCount===0)this._hoursFirstDigit=t,this._hours=String(t).padStart(2,`0`),this._hoursDigitCount=1,this.onInput(),t>=3&&(this._hoursFirstDigit=-1,this._hoursDigitCount=0,this._syncValueFromDisplay(),this.minutesInputRef.value?.focus());else{let e=this._hoursFirstDigit*10+t;this._hours=e<=23?String(e).padStart(2,`0`):String(t).padStart(2,`0`),this._hoursFirstDigit=-1,this._hoursDigitCount=0,this._syncValueFromDisplay(),this.onInput(),this.minutesInputRef.value?.focus()}}else e.preventDefault()}},this._handleHoursBlur=()=>{this._hours!==``&&(this._hours=String(parseInt(this._hours,10)).padStart(2,`0`)),this._hoursDigitCount=0,this._hoursFirstDigit=-1,this._syncValueFromDisplay()},this._handleMinutesKeydown=e=>{let t=e.target;switch(e.key){case`ArrowUp`:{e.preventDefault();let t=this._minutes===``?0:parseInt(this._minutes,10);this._minutes=String((t+this._minuteStep)%60).padStart(2,`0`),this._syncValueFromDisplay(),this.onInput();break}case`ArrowDown`:{e.preventDefault();let t=this._minutes===``?0:parseInt(this._minutes,10);this._minutes=String((t-this._minuteStep+60)%60).padStart(2,`0`),this._syncValueFromDisplay(),this.onInput();break}case`ArrowLeft`:e.preventDefault(),this.hoursInputRef.value?.focus();break;case`Backspace`:case`Delete`:this._minutesDigitCount=0,this._minutesFirstDigit=-1;break;case`Tab`:break;case`Enter`:{e.preventDefault();let n=this.internals.form;n?n.requestSubmit():t.blur();break}default:if(/^\d$/.test(e.key)){e.preventDefault();let t=parseInt(e.key,10);if(this._minutesDigitCount===0)this._minutesFirstDigit=t,this._minutes=String(t).padStart(2,`0`),this._minutesDigitCount=1,this.onInput(),t>=6&&(this._minutesFirstDigit=-1,this._minutesDigitCount=0,this._syncValueFromDisplay());else{let e=this._minutesFirstDigit*10+t;this._minutes=e<=59?String(e).padStart(2,`0`):String(t).padStart(2,`0`),this._minutesFirstDigit=-1,this._minutesDigitCount=0,this._syncValueFromDisplay(),this.onInput()}}else e.preventDefault()}},this._handleMinutesBlur=()=>{this._minutes!==``&&(this._minutes=String(parseInt(this._minutes,10)).padStart(2,`0`)),this._minutesDigitCount=0,this._minutesFirstDigit=-1,this._syncValueFromDisplay()},this._handlePopupKeydown=e=>{let t=document.activeElement,n=t.closest(`.pkt-timepicker-popup__col`);if(!n)return;let r=Array.from(n.querySelectorAll(`.pkt-timepicker-popup__option`)),i=r.indexOf(t),a=t.dataset.type??``;switch(e.key){case`ArrowDown`:e.preventDefault(),this._focusOptionAndSync(r[Math.min(i+1,r.length-1)],a);break;case`ArrowUp`:e.preventDefault(),this._focusOptionAndSync(r[Math.max(i-1,0)],a);break;case`Home`:e.preventDefault(),this._focusOptionAndSync(r[0],a);break;case`End`:e.preventDefault(),this._focusOptionAndSync(r[r.length-1],a);break;case`ArrowRight`:e.preventDefault(),a===`hour`&&(this._focusOptionAndSync(t,a),this.updateComplete.then(()=>{this._scrollToSelected(),this._focusSelectedOrFirst(`minute`)}));break;case`ArrowLeft`:e.preventDefault(),a===`minute`&&(this._focusOptionAndSync(t,a),this.updateComplete.then(()=>{this._scrollToSelected(),this._focusSelectedOrFirst(`hour`)}));break;case`Enter`:case` `:e.preventDefault(),t.click();break;case`Escape`:e.preventDefault(),this._closePopup(),this.buttonRef.value?.focus();break}}}get inputRef(){return this.hiddenInputRef}manageValidity(t){let n=this.hoursInputRef.value;if(!n)return;if(this.required&&!this.value){this.internals.setValidity({valueMissing:!0},e.r.forms.messages.required,n),this._setAriaInvalid(!0);return}if(!this.value){this.internals.setValidity({}),this._setAriaInvalid(!1);return}let r=s(this.value),i=c(this.step);if(this.min&&r<s(String(this.min))){this.internals.setValidity({rangeUnderflow:!0},e.r.forms.messages.rangeUnderflowMin.replace(`{min}`,String(this.min)),n),this._setAriaInvalid(!0);return}if(this.max&&r>s(String(this.max))){this.internals.setValidity({rangeOverflow:!0},e.r.forms.messages.rangeOverflowMax.replace(`{max}`,String(this.max)),n),this._setAriaInvalid(!0);return}if(this.step&&r%i!==0){let t=i===60?e.r.forms.messages.timeStepMismatchHour:i===30?e.r.forms.messages.timeStepMismatchHalfHour:e.r.forms.messages.timeStepMismatch.replace(`{step}`,`${i}, ${i*2}, ${i*3}`);this.internals.setValidity({stepMismatch:!0},t,n),this._setAriaInvalid(!0);return}this.internals.setValidity({}),this._setAriaInvalid(!1)}_setAriaInvalid(e){if(!this.touched&&e)return;let t=this.hoursInputRef.value,n=this.minutesInputRef.value;e?(t?.setAttribute(`aria-invalid`,`true`),n?.setAttribute(`aria-invalid`,`true`)):(t?.removeAttribute(`aria-invalid`),n?.removeAttribute(`aria-invalid`))}connectedCallback(){super.connectedCallback(),this.addEventListener(`focusin`,this._handleComponentFocusIn),this.addEventListener(`focusout`,this._handleComponentFocusOut),document.addEventListener(`click`,this._outsideClickHandler)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener(`focusin`,this._handleComponentFocusIn),this.removeEventListener(`focusout`,this._handleComponentFocusOut),document.removeEventListener(`click`,this._outsideClickHandler)}willUpdate(e){super.willUpdate(e),e.has(`value`)&&this._syncDisplayFromValue()}updated(e){super.updated(e),this.classList.toggle(`pkt-timepicker--stepper`,this.stepArrows),this.classList.toggle(`pkt-timepicker--fullwidth`,this.fullwidth),this.classList.toggle(`pkt-timepicker--medium`,this.inputSize===`medium`),this.classList.toggle(`pkt-timepicker--small`,this.inputSize===`small`),this.classList.toggle(`pkt-timepicker--xsmall`,this.inputSize===`xsmall`),e.has(`step`)&&this.step!==null&&!this._isValidStep(this.step)&&console.warn(`pkt-timepicker: step="${this.step}" er ikke en gyldig verdi. Step må være et multiplum av 60 (hele minutter) eller nøyaktig 3600 (hel time).`)}formResetCallback(){super.formResetCallback(),this._hours=``,this._minutes=``,this._isOpen=!1}_isValidStep(e){return e===3600||e<3600&&3600%e==0&&e%60==0}_syncDisplayFromValue(){let e=o(this.value)?this.value.split(`:`):null;e?(this._hours=e[0],this._minutes=e[1]):(this._hours=``,this._minutes=``)}_syncValueFromDisplay(){if(this._hours!==``&&this._minutes!==``){let e=`${this._hours}:${this._minutes}`;e!==this.value&&(this.value=e,this.onChange(e))}else this.value!==``&&(this.value=``,this.onChange(``))}get _minuteStep(){return c(this.step)}get _hourOptions(){return l(this.min,this.max)}get _minuteOptions(){return u(this.step)}_openPopup(){this._isOpen=!0,this.updateComplete.then(()=>{this._scrollToSelected(),this._focusSelectedOrFirst(`hour`)})}_closePopup(){this._isOpen=!1,this._syncValueFromDisplay()}_togglePopup(){this._isOpen?this._closePopup():this._openPopup()}_scrollToSelected(){let e=this.querySelector(`.pkt-timepicker-popup`);e&&e.querySelectorAll(`.pkt-timepicker-popup__col`).forEach(e=>{let t=e.querySelector(`.pkt-timepicker-popup__option--selected`);t&&t.scrollIntoView({block:`center`})})}_focusSelectedOrFirst(e){let t=this.querySelector(`.pkt-timepicker-popup`);if(!t)return;let n=t.querySelectorAll(`.pkt-timepicker-popup__col`),r=e===`hour`?n[0]:n[1];if(!r)return;let i=r.querySelector(`.pkt-timepicker-popup__option--selected`),a=r.querySelector(`.pkt-timepicker-popup__option`);(i||a)?.focus()}_handleOptionClick(e,t){let n=String(e).padStart(2,`0`);t===`hour`?(this._hours=n,this.updateComplete.then(()=>this._focusSelectedOrFirst(`minute`))):(this._minutes=n,this._closePopup(),this.buttonRef.value?.focus())}_focusOptionAndSync(e,t){if(!e)return;let n=parseInt(e.dataset.value??`0`,10);t===`hour`?this._hours=String(n).padStart(2,`0`):this._minutes=String(n).padStart(2,`0`),e.focus()}_stepTime(e){let t=d(this._hours,this._minutes,e,this._minuteStep);this._hours=t.hours,this._minutes=t.minutes,this._syncValueFromDisplay()}_renderOption(n,r){let i=String(n).padStart(2,`0`),a=n===(r===`hour`?this._hours===``?NaN:parseInt(this._hours,10):this._minutes===``?NaN:parseInt(this._minutes,10));return e.p`
|
|
2
2
|
<button
|
|
3
3
|
class=${t.t({"pkt-btn":!0,"pkt-btn--tertiary":!0,"pkt-btn--small":!0,"pkt-btn--label-only":!0,"pkt-timepicker-popup__option":!0,"pkt-timepicker-popup__option--selected":a})}
|
|
4
4
|
type="button"
|
|
@@ -40,12 +40,12 @@ const e=require("./element-DJzurxgt.cjs"),t=require("./class-map-CCZN5uS3.cjs"),
|
|
|
40
40
|
</div>
|
|
41
41
|
`}_renderContainer(){let t=this.strings.timepicker?.hours??`Timer`,n=this.strings.timepicker?.minutes??`Minutter`,a=this.label?`${t}, ${this.label}`:t,o=this.label?`${n}, ${this.label}`:n;return e.p`
|
|
42
42
|
<div
|
|
43
|
-
class="pkt-input__container"
|
|
43
|
+
class="pkt-input__container pkt-input__container--${this.inputSize}"
|
|
44
44
|
@click=${e=>{e.target.closest(`button, input`)||this.hoursInputRef.value?.focus()}}
|
|
45
45
|
>
|
|
46
46
|
${this.stepArrows?e.p`
|
|
47
47
|
<button
|
|
48
|
-
class="pkt-input-icon pkt-btn pkt-btn--icon-only pkt-btn--tertiary pkt-timepicker__button pkt-timepicker__button--prev"
|
|
48
|
+
class="pkt-input-icon pkt-btn pkt-btn--icon-only pkt-btn--tertiary pkt-btn--${this.inputSize} pkt-timepicker__button pkt-timepicker__button--prev"
|
|
49
49
|
type="button"
|
|
50
50
|
aria-label=${this.strings.timepicker?.prevTime??`Forrige tidspunkt`}
|
|
51
51
|
?disabled=${this.disabled}
|
|
@@ -63,7 +63,7 @@ const e=require("./element-DJzurxgt.cjs"),t=require("./class-map-CCZN5uS3.cjs"),
|
|
|
63
63
|
inputmode="numeric"
|
|
64
64
|
maxlength="2"
|
|
65
65
|
size="2"
|
|
66
|
-
class="pkt-input pkt-timepicker__input"
|
|
66
|
+
class="pkt-input pkt-input--${this.inputSize} pkt-timepicker__input"
|
|
67
67
|
id=${this.id+`-hours`}
|
|
68
68
|
data-min="0"
|
|
69
69
|
data-max="23"
|
|
@@ -89,7 +89,7 @@ const e=require("./element-DJzurxgt.cjs"),t=require("./class-map-CCZN5uS3.cjs"),
|
|
|
89
89
|
inputmode="numeric"
|
|
90
90
|
maxlength="2"
|
|
91
91
|
size="2"
|
|
92
|
-
class="pkt-input pkt-timepicker__input"
|
|
92
|
+
class="pkt-input pkt-input--${this.inputSize} pkt-timepicker__input"
|
|
93
93
|
id=${this.id+`-minutes`}
|
|
94
94
|
data-min="0"
|
|
95
95
|
data-max="59"
|
|
@@ -116,7 +116,7 @@ const e=require("./element-DJzurxgt.cjs"),t=require("./class-map-CCZN5uS3.cjs"),
|
|
|
116
116
|
${!this.hidePicker&&!this.stepArrows?e.p`
|
|
117
117
|
<button
|
|
118
118
|
${i.n(this.buttonRef)}
|
|
119
|
-
class="pkt-input-icon pkt-btn pkt-btn--icon-only pkt-btn--tertiary pkt-timepicker__button"
|
|
119
|
+
class="pkt-input-icon pkt-btn pkt-btn--icon-only pkt-btn--tertiary pkt-btn--${this.inputSize} pkt-timepicker__button"
|
|
120
120
|
type="button"
|
|
121
121
|
aria-label=${this.strings.timepicker?.openPicker??`Åpne tidspunkt-velger`}
|
|
122
122
|
aria-haspopup="listbox"
|
|
@@ -133,7 +133,7 @@ const e=require("./element-DJzurxgt.cjs"),t=require("./class-map-CCZN5uS3.cjs"),
|
|
|
133
133
|
`:e.d}
|
|
134
134
|
${this.stepArrows?e.p`
|
|
135
135
|
<button
|
|
136
|
-
class="pkt-input-icon pkt-btn pkt-btn--icon-only pkt-btn--tertiary pkt-timepicker__button pkt-timepicker__button--next"
|
|
136
|
+
class="pkt-input-icon pkt-btn pkt-btn--icon-only pkt-btn--tertiary pkt-btn--${this.inputSize} pkt-timepicker__button pkt-timepicker__button--next"
|
|
137
137
|
type="button"
|
|
138
138
|
aria-label=${this.strings.timepicker?.nextTime??`Neste tidspunkt`}
|
|
139
139
|
?disabled=${this.disabled}
|
|
@@ -180,6 +180,7 @@ const e=require("./element-DJzurxgt.cjs"),t=require("./class-map-CCZN5uS3.cjs"),
|
|
|
180
180
|
.optionalText=${this.optionalText}
|
|
181
181
|
.requiredText=${this.requiredText}
|
|
182
182
|
.tagText=${this.tagText}
|
|
183
|
+
.size=${this.inputSize}
|
|
183
184
|
>
|
|
184
185
|
<div class="pkt-contents" slot="helptext">${n.n(this,`helptext`)}</div>
|
|
185
186
|
${!this.hidePicker&&!this.stepArrows?e.p`
|
|
@@ -4,8 +4,8 @@ import { n as c } from "./element-with-slot-mXLg8gg8.js";
|
|
|
4
4
|
import "./icon-DGFEIlco.js";
|
|
5
5
|
import { t as l } from "./if-defined-D0bnetLJ.js";
|
|
6
6
|
import { n as u, t as d } from "./ref-WGS0u7i2.js";
|
|
7
|
-
import { t as f } from "./input-element-
|
|
8
|
-
import "./input-wrapper-
|
|
7
|
+
import { t as f } from "./input-element-C0RnXi-J.js";
|
|
8
|
+
import "./input-wrapper-fWV5P4MN.js";
|
|
9
9
|
//#region ../../shared-utils/timepicker/time-utils.ts
|
|
10
10
|
var p = (e) => /^\d{2}:\d{2}$/.test(e) && parseInt(e.slice(0, 2), 10) <= 23 && parseInt(e.slice(3), 10) <= 59, m = (e) => {
|
|
11
11
|
let [t, n] = e.split(":").map(Number);
|
|
@@ -194,7 +194,7 @@ var p = (e) => /^\d{2}:\d{2}$/.test(e) && parseInt(e.slice(0, 2), 10) <= 23 && p
|
|
|
194
194
|
super.willUpdate(e), e.has("value") && this._syncDisplayFromValue();
|
|
195
195
|
}
|
|
196
196
|
updated(e) {
|
|
197
|
-
super.updated(e), this.classList.toggle("pkt-timepicker--stepper", this.stepArrows), this.classList.toggle("pkt-timepicker--fullwidth", this.fullwidth), e.has("step") && this.step !== null && !this._isValidStep(this.step) && console.warn(`pkt-timepicker: step="${this.step}" er ikke en gyldig verdi. Step må være et multiplum av 60 (hele minutter) eller nøyaktig 3600 (hel time).`);
|
|
197
|
+
super.updated(e), this.classList.toggle("pkt-timepicker--stepper", this.stepArrows), this.classList.toggle("pkt-timepicker--fullwidth", this.fullwidth), this.classList.toggle("pkt-timepicker--medium", this.inputSize === "medium"), this.classList.toggle("pkt-timepicker--small", this.inputSize === "small"), this.classList.toggle("pkt-timepicker--xsmall", this.inputSize === "xsmall"), e.has("step") && this.step !== null && !this._isValidStep(this.step) && console.warn(`pkt-timepicker: step="${this.step}" er ikke en gyldig verdi. Step må være et multiplum av 60 (hele minutter) eller nøyaktig 3600 (hel time).`);
|
|
198
198
|
}
|
|
199
199
|
formResetCallback() {
|
|
200
200
|
super.formResetCallback(), this._hours = "", this._minutes = "", this._isOpen = !1;
|
|
@@ -322,14 +322,14 @@ var p = (e) => /^\d{2}:\d{2}$/.test(e) && parseInt(e.slice(0, 2), 10) <= 23 && p
|
|
|
322
322
|
let e = this.strings.timepicker?.hours ?? "Timer", n = this.strings.timepicker?.minutes ?? "Minutter", r = this.label ? `${e}, ${this.label}` : e, a = this.label ? `${n}, ${this.label}` : n;
|
|
323
323
|
return i`
|
|
324
324
|
<div
|
|
325
|
-
class="pkt-input__container"
|
|
325
|
+
class="pkt-input__container pkt-input__container--${this.inputSize}"
|
|
326
326
|
@click=${(e) => {
|
|
327
327
|
e.target.closest("button, input") || this.hoursInputRef.value?.focus();
|
|
328
328
|
}}
|
|
329
329
|
>
|
|
330
330
|
${this.stepArrows ? i`
|
|
331
331
|
<button
|
|
332
|
-
class="pkt-input-icon pkt-btn pkt-btn--icon-only pkt-btn--tertiary pkt-timepicker__button pkt-timepicker__button--prev"
|
|
332
|
+
class="pkt-input-icon pkt-btn pkt-btn--icon-only pkt-btn--tertiary pkt-btn--${this.inputSize} pkt-timepicker__button pkt-timepicker__button--prev"
|
|
333
333
|
type="button"
|
|
334
334
|
aria-label=${this.strings.timepicker?.prevTime ?? "Forrige tidspunkt"}
|
|
335
335
|
?disabled=${this.disabled}
|
|
@@ -347,7 +347,7 @@ var p = (e) => /^\d{2}:\d{2}$/.test(e) && parseInt(e.slice(0, 2), 10) <= 23 && p
|
|
|
347
347
|
inputmode="numeric"
|
|
348
348
|
maxlength="2"
|
|
349
349
|
size="2"
|
|
350
|
-
class="pkt-input pkt-timepicker__input"
|
|
350
|
+
class="pkt-input pkt-input--${this.inputSize} pkt-timepicker__input"
|
|
351
351
|
id=${this.id + "-hours"}
|
|
352
352
|
data-min="0"
|
|
353
353
|
data-max="23"
|
|
@@ -375,7 +375,7 @@ var p = (e) => /^\d{2}:\d{2}$/.test(e) && parseInt(e.slice(0, 2), 10) <= 23 && p
|
|
|
375
375
|
inputmode="numeric"
|
|
376
376
|
maxlength="2"
|
|
377
377
|
size="2"
|
|
378
|
-
class="pkt-input pkt-timepicker__input"
|
|
378
|
+
class="pkt-input pkt-input--${this.inputSize} pkt-timepicker__input"
|
|
379
379
|
id=${this.id + "-minutes"}
|
|
380
380
|
data-min="0"
|
|
381
381
|
data-max="59"
|
|
@@ -404,7 +404,7 @@ var p = (e) => /^\d{2}:\d{2}$/.test(e) && parseInt(e.slice(0, 2), 10) <= 23 && p
|
|
|
404
404
|
${!this.hidePicker && !this.stepArrows ? i`
|
|
405
405
|
<button
|
|
406
406
|
${u(this.buttonRef)}
|
|
407
|
-
class="pkt-input-icon pkt-btn pkt-btn--icon-only pkt-btn--tertiary pkt-timepicker__button"
|
|
407
|
+
class="pkt-input-icon pkt-btn pkt-btn--icon-only pkt-btn--tertiary pkt-btn--${this.inputSize} pkt-timepicker__button"
|
|
408
408
|
type="button"
|
|
409
409
|
aria-label=${this.strings.timepicker?.openPicker ?? "Åpne tidspunkt-velger"}
|
|
410
410
|
aria-haspopup="listbox"
|
|
@@ -421,7 +421,7 @@ var p = (e) => /^\d{2}:\d{2}$/.test(e) && parseInt(e.slice(0, 2), 10) <= 23 && p
|
|
|
421
421
|
` : t}
|
|
422
422
|
${this.stepArrows ? i`
|
|
423
423
|
<button
|
|
424
|
-
class="pkt-input-icon pkt-btn pkt-btn--icon-only pkt-btn--tertiary pkt-timepicker__button pkt-timepicker__button--next"
|
|
424
|
+
class="pkt-input-icon pkt-btn pkt-btn--icon-only pkt-btn--tertiary pkt-btn--${this.inputSize} pkt-timepicker__button pkt-timepicker__button--next"
|
|
425
425
|
type="button"
|
|
426
426
|
aria-label=${this.strings.timepicker?.nextTime ?? "Neste tidspunkt"}
|
|
427
427
|
?disabled=${this.disabled}
|
|
@@ -471,6 +471,7 @@ var p = (e) => /^\d{2}:\d{2}$/.test(e) && parseInt(e.slice(0, 2), 10) <= 23 && p
|
|
|
471
471
|
.optionalText=${this.optionalText}
|
|
472
472
|
.requiredText=${this.requiredText}
|
|
473
473
|
.tagText=${this.tagText}
|
|
474
|
+
.size=${this.inputSize}
|
|
474
475
|
>
|
|
475
476
|
<div class="pkt-contents" slot="helptext">${c(this, "helptext")}</div>
|
|
476
477
|
${!this.hidePicker && !this.stepArrows ? i`
|