@k2b/ui 0.11.0 → 0.13.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 +1 -1
- package/dist/browser/content/FileView.js +203 -136
- package/dist/browser/content/FileView.js.map +1 -1
- package/dist/browser/content/PdfPreview.js +5 -2
- package/dist/browser/content/PdfPreview.js.map +1 -1
- package/dist/browser/content/markdown-title.js +52 -0
- package/dist/browser/content/markdown-title.js.map +1 -0
- package/dist/browser/feedback/InstallGuide.js +267 -0
- package/dist/browser/feedback/InstallGuide.js.map +1 -0
- package/dist/browser/feedback/announce.js +50 -0
- package/dist/browser/feedback/announce.js.map +1 -0
- package/dist/browser/feedback/dialog-core.js +82 -1
- package/dist/browser/feedback/dialog-core.js.map +1 -1
- package/dist/browser/feedback/index.js +4 -0
- package/dist/browser/feedback/index.js.map +1 -1
- package/dist/browser/feedback/install.js +99 -0
- package/dist/browser/feedback/install.js.map +1 -0
- package/dist/browser/feedback/prompts.js +29 -20
- package/dist/browser/feedback/prompts.js.map +1 -1
- package/dist/browser/feedback/theme-color.js +15 -0
- package/dist/browser/feedback/theme-color.js.map +1 -0
- package/dist/browser/feedback/toast.js +329 -122
- package/dist/browser/feedback/toast.js.map +1 -1
- package/dist/browser/inputs/DatePicker.js +263 -222
- package/dist/browser/inputs/DatePicker.js.map +1 -1
- package/dist/browser/inputs/MultiSelectInput.js +139 -105
- package/dist/browser/inputs/MultiSelectInput.js.map +1 -1
- package/dist/browser/inputs/NumberInput.js +209 -122
- package/dist/browser/inputs/NumberInput.js.map +1 -1
- package/dist/browser/inputs/QrScanner.js +164 -0
- package/dist/browser/inputs/QrScanner.js.map +1 -0
- package/dist/browser/inputs/Select.js +184 -92
- package/dist/browser/inputs/Select.js.map +1 -1
- package/dist/browser/inputs/index.js +1 -0
- package/dist/browser/inputs/index.js.map +1 -1
- package/dist/browser/intl/messages.js +90 -2
- package/dist/browser/intl/messages.js.map +1 -1
- package/dist/browser/layout/DetailPanel.js +2 -1
- package/dist/browser/layout/DetailPanel.js.map +1 -1
- package/dist/browser/layout/Discussion.js +2 -1
- package/dist/browser/layout/Discussion.js.map +1 -1
- package/dist/browser/layout/MobileShell.js +242 -0
- package/dist/browser/layout/MobileShell.js.map +1 -0
- package/dist/browser/layout/Navigation.js +1 -0
- package/dist/browser/layout/Navigation.js.map +1 -1
- package/dist/browser/layout/PanelDialog.js +1 -0
- package/dist/browser/layout/PanelDialog.js.map +1 -1
- package/dist/browser/layout/Settings.js +2 -2
- package/dist/browser/layout/Settings.js.map +1 -1
- package/dist/browser/layout/TabBar.js +65 -0
- package/dist/browser/layout/TabBar.js.map +1 -0
- package/dist/browser/layout/index.js +2 -0
- package/dist/browser/layout/index.js.map +1 -1
- package/dist/browser/surfaces/NoticeCard.js +55 -60
- package/dist/browser/surfaces/NoticeCard.js.map +1 -1
- package/dist/browser/surfaces/index.js +1 -1
- package/dist/browser/surfaces/index.js.map +1 -1
- package/dist/ssr/content/FileView.js +141 -81
- package/dist/ssr/content/FileView.js.map +1 -1
- package/dist/ssr/content/PdfPreview.js +4 -2
- package/dist/ssr/content/PdfPreview.js.map +1 -1
- package/dist/ssr/content/markdown-title.js +52 -0
- package/dist/ssr/content/markdown-title.js.map +1 -0
- package/dist/ssr/feedback/InstallGuide.js +201 -0
- package/dist/ssr/feedback/InstallGuide.js.map +1 -0
- package/dist/ssr/feedback/announce.js +50 -0
- package/dist/ssr/feedback/announce.js.map +1 -0
- package/dist/ssr/feedback/dialog-core.js +82 -1
- package/dist/ssr/feedback/dialog-core.js.map +1 -1
- package/dist/ssr/feedback/index.js +4 -0
- package/dist/ssr/feedback/index.js.map +1 -1
- package/dist/ssr/feedback/install.js +99 -0
- package/dist/ssr/feedback/install.js.map +1 -0
- package/dist/ssr/feedback/prompts.js +12 -2
- package/dist/ssr/feedback/prompts.js.map +1 -1
- package/dist/ssr/feedback/theme-color.js +15 -0
- package/dist/ssr/feedback/theme-color.js.map +1 -0
- package/dist/ssr/feedback/toast.js +329 -122
- package/dist/ssr/feedback/toast.js.map +1 -1
- package/dist/ssr/inputs/DatePicker.js +78 -52
- package/dist/ssr/inputs/DatePicker.js.map +1 -1
- package/dist/ssr/inputs/MultiSelectInput.js +52 -32
- package/dist/ssr/inputs/MultiSelectInput.js.map +1 -1
- package/dist/ssr/inputs/NumberInput.js +93 -40
- package/dist/ssr/inputs/NumberInput.js.map +1 -1
- package/dist/ssr/inputs/QrScanner.js +128 -0
- package/dist/ssr/inputs/QrScanner.js.map +1 -0
- package/dist/ssr/inputs/Select.js +108 -29
- package/dist/ssr/inputs/Select.js.map +1 -1
- package/dist/ssr/inputs/index.js +1 -0
- package/dist/ssr/inputs/index.js.map +1 -1
- package/dist/ssr/intl/messages.js +90 -2
- package/dist/ssr/intl/messages.js.map +1 -1
- package/dist/ssr/layout/DetailPanel.js +2 -1
- package/dist/ssr/layout/DetailPanel.js.map +1 -1
- package/dist/ssr/layout/Discussion.js +2 -1
- package/dist/ssr/layout/Discussion.js.map +1 -1
- package/dist/ssr/layout/MobileShell.js +211 -0
- package/dist/ssr/layout/MobileShell.js.map +1 -0
- package/dist/ssr/layout/Navigation.js +1 -0
- package/dist/ssr/layout/Navigation.js.map +1 -1
- package/dist/ssr/layout/PanelDialog.js +1 -0
- package/dist/ssr/layout/PanelDialog.js.map +1 -1
- package/dist/ssr/layout/Settings.js +2 -2
- package/dist/ssr/layout/Settings.js.map +1 -1
- package/dist/ssr/layout/TabBar.js +24 -0
- package/dist/ssr/layout/TabBar.js.map +1 -0
- package/dist/ssr/layout/index.js +2 -0
- package/dist/ssr/layout/index.js.map +1 -1
- package/dist/ssr/surfaces/NoticeCard.js +21 -30
- package/dist/ssr/surfaces/NoticeCard.js.map +1 -1
- package/dist/ssr/surfaces/index.js +1 -1
- package/dist/ssr/surfaces/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/tabler.css +1 -1
- package/dist/types/content/FileView.d.ts +11 -1
- package/dist/types/content/markdown-title.d.ts +9 -0
- package/dist/types/feedback/InstallGuide.d.ts +26 -0
- package/dist/types/feedback/announce.d.ts +19 -0
- package/dist/types/feedback/dialog-core.d.ts +5 -0
- package/dist/types/feedback/index.d.ts +8 -1
- package/dist/types/feedback/install.d.ts +32 -0
- package/dist/types/feedback/prompts.d.ts +2 -0
- package/dist/types/feedback/theme-color.d.ts +6 -0
- package/dist/types/feedback/toast.d.ts +7 -0
- package/dist/types/inputs/DatePicker.d.ts +11 -2
- package/dist/types/inputs/MultiSelectInput.d.ts +5 -1
- package/dist/types/inputs/NumberInput.d.ts +14 -0
- package/dist/types/inputs/QrScanner.d.ts +20 -0
- package/dist/types/inputs/Select.d.ts +10 -0
- package/dist/types/inputs/index.d.ts +3 -1
- package/dist/types/intl/messages.d.ts +44 -0
- package/dist/types/layout/MobileShell.d.ts +40 -0
- package/dist/types/layout/Settings.d.ts +2 -2
- package/dist/types/layout/TabBar.d.ts +23 -0
- package/dist/types/layout/index.d.ts +4 -0
- package/dist/types/surfaces/NoticeCard.d.ts +4 -4
- package/dist/types/surfaces/index.d.ts +1 -1
- package/package.json +3 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["feedback/toast.ts"],"sourcesContent":["import { getK2bPortalRoot } from \"../internal/portal\";\nimport { resolveUiMessages } from \"../intl/messages\";\n\nexport type ToastVariant = \"default\" | \"success\" | \"error\";\n\nexport type ToastAction = {\n label: string;\n} & ({ href: string } | { onClick: () => void });\n\nexport type ToastOptions = {\n variant?: ToastVariant;\n duration?: number;\n iconClass?: string;\n title?: string;\n action?: ToastAction | null;\n /** Fraction from 0 to 1, or an indeterminate activity indicator. null removes it. */\n progress?: number | \"indeterminate\" | null;\n dismissLabel?: string;\n};\n\nexport type ToastHandle = {\n dismiss: () => void;\n update: (description: string, options?: ToastOptions) => void;\n};\n\nexport interface ToastFn {\n (description: string, options?: ToastOptions): ToastHandle;\n success: (description: string, options?: Omit<ToastOptions, \"variant\">) => ToastHandle;\n error: (description: string, options?: Omit<ToastOptions, \"variant\">) => ToastHandle;\n dismissAll: () => void;\n}\n\nconst DEFAULT_DURATION_MS = 3000;\nconst MAX_VISIBLE_TOASTS = 5;\nconst ANIMATION_MS = 200;\nexport const K2B_TOAST_CONTAINER_ID = \"k2b-ui-toast-container\";\nconst CONTAINER_ATTRIBUTE = \"data-k2b-toast-container\";\n\ntype VariantStyle = {\n tone: \"info\" | \"success\" | \"danger\";\n iconClass: string;\n titleKey: \"info\" | \"success\" | \"error\";\n};\n\nconst VARIANT_STYLES: Record<ToastVariant, VariantStyle> = {\n default: {\n tone: \"info\",\n iconClass: \"ti-info-circle\",\n titleKey: \"info\",\n },\n success: {\n tone: \"success\",\n iconClass: \"ti-check\",\n titleKey: \"success\",\n },\n error: {\n tone: \"danger\",\n iconClass: \"ti-x\",\n titleKey: \"error\",\n },\n};\n\n/** Default titles follow the document locale, like the other imperative `@k2b/ui` surfaces. */\nconst defaultTitle = (variant: ToastVariant): string => resolveUiMessages()[VARIANT_STYLES[variant].titleKey];\n\nconst normalizedIconClass = (iconClass: string): string => {\n const tokens = iconClass\n .split(/\\s+/)\n .filter(Boolean)\n .filter((token) => token !== \"ti\");\n return [\"ti\", ...tokens].join(\" \");\n};\n\nconst applyIconClass = (icon: HTMLElement, iconClass: string): void => {\n icon.className = normalizedIconClass(iconClass);\n};\n\nconst applyLiveRegion = (element: HTMLElement, variant: ToastVariant): void => {\n const isError = variant === \"error\";\n element.setAttribute(\"role\", isError ? \"alert\" : \"status\");\n element.setAttribute(\"aria-live\", isError ? \"assertive\" : \"polite\");\n element.setAttribute(\"aria-atomic\", \"true\");\n};\n\nconst liveToasts = new Set<ToastHandle>();\n\nconst ensureContainer = (): HTMLElement | null => {\n if (typeof document === \"undefined\") return null;\n const root = getK2bPortalRoot();\n let container = root.querySelector<HTMLElement>(`[${CONTAINER_ATTRIBUTE}]`);\n if (container) return container;\n\n container = document.createElement(\"div\");\n container.id = K2B_TOAST_CONTAINER_ID;\n container.setAttribute(CONTAINER_ATTRIBUTE, \"\");\n container.setAttribute(\"popover\", \"manual\");\n // Keep the source rail geometry inline: it must defeat UA popover defaults\n // even when a consumer has not loaded the optional package stylesheet yet.\n // The stylesheet only moves the rail to the top edge on narrow viewports\n // through the two edge variables.\n container.style.cssText =\n \"position:fixed;left:auto;right:env(safe-area-inset-right,0px);\" +\n \"top:var(--k2b-toast-rail-top,auto);bottom:var(--k2b-toast-rail-bottom,env(safe-area-inset-bottom,0px));\" +\n \"z-index:50;box-sizing:border-box;display:flex;flex-direction:column;gap:0.5rem;\" +\n \"width:min(22rem,calc(100vw - env(safe-area-inset-left,0px) - env(safe-area-inset-right,0px)));\" +\n \"height:auto;max-width:100vw;\" +\n \"max-height:calc(100dvh - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px));\" +\n \"margin:0;padding:1rem;border:0;background:transparent;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;\" +\n \"pointer-events:none;\";\n root.appendChild(container);\n return container;\n};\n\nconst promoteToTopLayer = (container: HTMLElement): HTMLElement => {\n if (typeof container.showPopover !== \"function\" || !container.isConnected) return container;\n let active = container;\n try {\n if (container.matches(\":popover-open\") || document.querySelector(\"dialog:modal\")) {\n const next = container.cloneNode(false) as HTMLElement;\n while (container.firstChild) next.appendChild(container.firstChild);\n const root = container.parentElement ?? getK2bPortalRoot();\n container.remove();\n root.appendChild(next);\n active = next;\n }\n if (!active.matches(\":popover-open\")) active.showPopover();\n } catch {\n active.removeAttribute(\"popover\");\n }\n return active;\n};\n\n/** Close every empty rail so an emptied container does not linger in the top\n * layer. Rails are resolved at call time on purpose: `promoteToTopLayer`\n * swaps the element for a fresh clone, so a container captured when the toast\n * was created can already be detached by the time the toast is dismissed. */\nconst hideEmptyContainers = (): void => {\n if (typeof document === \"undefined\") return;\n for (const container of Array.from(document.querySelectorAll<HTMLElement>(`[${CONTAINER_ATTRIBUTE}]`))) {\n if (container.childElementCount > 0 || typeof container.hidePopover !== \"function\") continue;\n try {\n if (container.matches(\":popover-open\")) container.hidePopover();\n } catch {\n // Already hidden or disconnected.\n }\n }\n};\n\nconst renderLead = (lead: HTMLElement, variant: ToastVariant, iconClassOverride?: string): HTMLElement => {\n const style = VARIANT_STYLES[variant];\n lead.replaceChildren();\n lead.className = \"k2b-toast__icon\";\n lead.dataset.tone = style.tone;\n const icon = document.createElement(\"i\");\n applyIconClass(icon, iconClassOverride ?? style.iconClass);\n icon.setAttribute(\"aria-hidden\", \"true\");\n lead.appendChild(icon);\n return icon;\n};\n\nconst showToast = (description: string, options?: ToastOptions): ToastHandle => {\n const initialContainer = ensureContainer();\n if (!initialContainer) {\n const noop = () => {};\n return { dismiss: noop, update: noop };\n }\n\n let dismissed = false;\n let dismissTimer: ReturnType<typeof setTimeout> | null = null;\n let currentVariant: ToastVariant = options?.variant ?? \"default\";\n let currentProgress = options?.progress ?? null;\n let currentDuration = options?.duration ?? DEFAULT_DURATION_MS;\n let remainingDuration = currentDuration;\n let timerStartedAt = 0;\n let pausedByPointer = false;\n let pausedByFocus = false;\n\n const toastElement = document.createElement(\"div\");\n toastElement.className = \"k2b-toast\";\n toastElement.dataset.tone = VARIANT_STYLES[currentVariant].tone;\n toastElement.dataset.k2bToast = \"\";\n\n const leadElement = document.createElement(\"div\");\n let leadIconElement = renderLead(leadElement, currentVariant, options?.iconClass);\n\n const contentElement = document.createElement(\"div\");\n contentElement.className = \"k2b-toast__content\";\n applyLiveRegion(contentElement, currentVariant);\n\n const titleElement = document.createElement(\"div\");\n titleElement.className = \"k2b-toast__title\";\n titleElement.textContent = options?.title ?? defaultTitle(currentVariant);\n const descriptionElement = document.createElement(\"div\");\n descriptionElement.className = \"k2b-toast__description\";\n descriptionElement.textContent = description;\n contentElement.append(titleElement, descriptionElement);\n\n const closeButton = document.createElement(\"button\");\n closeButton.type = \"button\";\n closeButton.className = \"k2b-toast__close\";\n closeButton.setAttribute(\"aria-label\", options?.dismissLabel ?? resolveUiMessages().dismissNotification);\n const closeIcon = document.createElement(\"i\");\n closeIcon.className = \"ti ti-x\";\n closeIcon.setAttribute(\"aria-hidden\", \"true\");\n closeButton.appendChild(closeIcon);\n\n toastElement.append(leadElement, contentElement, closeButton);\n\n const clearDismissTimer = () => {\n if (dismissTimer === null) return;\n clearTimeout(dismissTimer);\n dismissTimer = null;\n };\n\n const pauseDismissTimer = () => {\n if (dismissTimer === null) return;\n remainingDuration = Math.max(0, remainingDuration - (Date.now() - timerStartedAt));\n clearDismissTimer();\n };\n\n const resumeDismissTimer = () => {\n if (dismissed || currentProgress !== null || currentDuration === 0 || remainingDuration <= 0 || pausedByPointer || pausedByFocus)\n return;\n clearDismissTimer();\n timerStartedAt = Date.now();\n dismissTimer = setTimeout(() => dismiss(), remainingDuration);\n };\n\n const resetDismissTimer = (duration: number) => {\n clearDismissTimer();\n currentDuration = duration;\n remainingDuration = duration;\n resumeDismissTimer();\n };\n\n const dismiss = () => {\n if (dismissed) return;\n dismissed = true;\n clearDismissTimer();\n liveToasts.delete(handle);\n toastElement.dataset.closing = \"true\";\n setTimeout(() => {\n toastElement.remove();\n hideEmptyContainers();\n }, ANIMATION_MS);\n };\n\n const progressElement = document.createElement(\"progress\");\n progressElement.className = \"k2b-toast__progress\";\n progressElement.max = 1;\n const renderProgress = () => {\n progressElement.hidden = currentProgress === null;\n progressElement.setAttribute(\"aria-label\", titleElement.textContent || descriptionElement.textContent || \"\");\n if (typeof currentProgress === \"number\")\n progressElement.value = Number.isFinite(currentProgress) ? Math.max(0, Math.min(1, currentProgress)) : 0;\n else progressElement.removeAttribute(\"value\");\n };\n contentElement.append(progressElement);\n renderProgress();\n let actionElement: HTMLAnchorElement | HTMLButtonElement | null = null;\n const renderAction = (action: ToastAction | null | undefined) => {\n actionElement?.remove();\n actionElement = null;\n if (!action) return;\n if (\"href\" in action) {\n const link = document.createElement(\"a\");\n link.href = action.href;\n actionElement = link;\n } else {\n const button = document.createElement(\"button\");\n button.type = \"button\";\n actionElement = button;\n }\n actionElement.className = \"k2b-toast__action\";\n actionElement.textContent = action.label;\n actionElement.addEventListener(\"click\", (event) => {\n event.stopPropagation();\n if (\"onClick\" in action) action.onClick();\n else dismiss();\n });\n contentElement.appendChild(actionElement);\n };\n renderAction(options?.action);\n\n const update = (nextDescription: string, nextOptions?: ToastOptions) => {\n if (dismissed) return;\n descriptionElement.textContent = nextDescription;\n\n const variantChanged = nextOptions?.variant !== undefined && nextOptions.variant !== currentVariant;\n if (variantChanged) {\n currentVariant = nextOptions.variant!;\n toastElement.dataset.tone = VARIANT_STYLES[currentVariant].tone;\n leadIconElement = renderLead(leadElement, currentVariant, nextOptions.iconClass);\n applyLiveRegion(contentElement, currentVariant);\n } else if (nextOptions?.iconClass !== undefined) {\n applyIconClass(leadIconElement, nextOptions.iconClass);\n }\n\n if (nextOptions && Object.prototype.hasOwnProperty.call(nextOptions, \"title\")) {\n titleElement.textContent = nextOptions.title ?? \"\";\n } else if (variantChanged) {\n titleElement.textContent = defaultTitle(currentVariant);\n }\n if (nextOptions && Object.prototype.hasOwnProperty.call(nextOptions, \"action\")) renderAction(nextOptions.action);\n if (nextOptions && Object.prototype.hasOwnProperty.call(nextOptions, \"duration\")) {\n currentDuration = nextOptions.duration ?? DEFAULT_DURATION_MS;\n }\n if (nextOptions && Object.prototype.hasOwnProperty.call(nextOptions, \"progress\")) currentProgress = nextOptions.progress ?? null;\n if (nextOptions?.dismissLabel) closeButton.setAttribute(\"aria-label\", nextOptions.dismissLabel);\n renderProgress();\n resetDismissTimer(currentDuration);\n };\n\n toastElement.addEventListener(\"click\", () => {\n if (currentProgress === null) dismiss();\n });\n closeButton.addEventListener(\"click\", (event) => {\n event.stopPropagation();\n dismiss();\n });\n toastElement.addEventListener(\"pointerenter\", () => {\n pausedByPointer = true;\n pauseDismissTimer();\n });\n toastElement.addEventListener(\"pointerleave\", () => {\n pausedByPointer = false;\n resumeDismissTimer();\n });\n toastElement.addEventListener(\"focusin\", () => {\n pausedByFocus = true;\n pauseDismissTimer();\n });\n toastElement.addEventListener(\"focusout\", (event) => {\n if (toastElement.contains(event.relatedTarget as Node | null)) return;\n pausedByFocus = false;\n resumeDismissTimer();\n });\n\n const handle: ToastHandle = { dismiss, update };\n liveToasts.add(handle);\n if (liveToasts.size > MAX_VISIBLE_TOASTS) liveToasts.values().next().value?.dismiss();\n promoteToTopLayer(initialContainer).appendChild(toastElement);\n requestAnimationFrame(() => {\n if (!dismissed) toastElement.dataset.open = \"true\";\n });\n resetDismissTimer(currentDuration);\n return handle;\n};\n\nexport const isPointInsideToast = (x: number, y: number): boolean => {\n if (typeof document === \"undefined\") return false;\n const containers = Array.from(document.querySelectorAll<HTMLElement>(`[${CONTAINER_ATTRIBUTE}]`));\n for (const container of containers) {\n for (const child of Array.from(container.children)) {\n const rect = child.getBoundingClientRect();\n if (x >= rect.left && x <= rect.right && y >= rect.top && y <= rect.bottom) return true;\n }\n }\n return false;\n};\n\nconst toastFn = ((description: string, options?: ToastOptions) => showToast(description, options)) as ToastFn;\ntoastFn.success = (description, options) => showToast(description, { ...options, variant: \"success\" });\ntoastFn.error = (description, options) => showToast(description, { ...options, variant: \"error\" });\ntoastFn.dismissAll = () => {\n for (const handle of Array.from(liveToasts)) handle.dismiss();\n};\n\nexport const toast: ToastFn = toastFn;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":[],"sources":["feedback/toast.ts"],"sourcesContent":["import { getK2bPortalRoot } from \"../internal/portal\";\nimport { resolveUiMessages } from \"../intl/messages\";\nimport { announce, ensureLiveRegions } from \"./announce\";\n\nexport type ToastVariant = \"default\" | \"success\" | \"error\";\n\nexport type ToastAction = {\n label: string;\n} & ({ href: string } | { onClick: () => void });\n\nexport type ToastOptions = {\n variant?: ToastVariant;\n /** Milliseconds until the toast closes; `0` keeps it until it is closed. Omit it for the default by variant, length, and action. */\n duration?: number;\n iconClass?: string;\n /** A short line of context above the message. There is no default title. */\n title?: string;\n action?: ToastAction | null;\n /** Fraction from 0 to 1, or an indeterminate activity indicator. null removes it. */\n progress?: number | \"indeterminate\" | null;\n dismissLabel?: string;\n};\n\nexport type ToastHandle = {\n dismiss: () => void;\n update: (description: string, options?: ToastOptions) => void;\n};\n\nexport type ToastSlot = {\n dismiss: () => void;\n};\n\nexport interface ToastFn {\n (description: string, options?: ToastOptions): ToastHandle;\n success: (description: string, options?: Omit<ToastOptions, \"variant\">) => ToastHandle;\n error: (description: string, options?: Omit<ToastOptions, \"variant\">) => ToastHandle;\n /** Places an application-owned element in the toast rail, in toast chrome; the caller owns its content and lifetime. */\n custom: (content: HTMLElement) => ToastSlot;\n dismissAll: () => void;\n}\n\n/** Visible toasts on a wide viewport; the rail's narrow layout shows fewer. */\nconst MAX_VISIBLE_TOASTS = 3;\nconst MAX_VISIBLE_TOASTS_NARROW = 2;\n/** The same media query that moves the rail to the top edge in the stylesheet. */\nconst NARROW_RAIL_QUERY = \"(max-width: 47.999rem), (max-height: 29.999rem)\";\nconst ANIMATION_MS = 200;\n/** Reading time: a short message stays 4 s, longer text about 1 s more per 30 characters, up to 12 s. */\nconst READ_BASE_MS = 4_000;\nconst READ_FREE_CHARACTERS = 40;\nconst READ_MS_PER_CHARACTER = 35;\nconst READ_MAX_MS = 12_000;\n/** Errors and toasts with an action stay long enough to reach them with a keyboard or a screen magnifier. */\nconst REACHABLE_MS = 8_000;\n/** An error longer than this stays until it is closed, so it can be read and copied. */\nconst STICKY_ERROR_CHARACTERS = 120;\nexport const K2B_TOAST_CONTAINER_ID = \"k2b-ui-toast-container\";\nconst CONTAINER_ATTRIBUTE = \"data-k2b-toast-container\";\n\ntype VariantStyle = {\n tone: \"info\" | \"success\" | \"danger\";\n iconClass: string;\n};\n\nconst VARIANT_STYLES: Record<ToastVariant, VariantStyle> = {\n default: { tone: \"info\", iconClass: \"ti-info-circle\" },\n success: { tone: \"success\", iconClass: \"ti-circle-check\" },\n error: { tone: \"danger\", iconClass: \"ti-alert-circle\" },\n};\n\n/** How long a toast stays when the caller passes no duration. */\nconst defaultDuration = (variant: ToastVariant, text: string, hasAction: boolean): number => {\n if (variant === \"error\" && text.length > STICKY_ERROR_CHARACTERS) return 0;\n const reading = Math.min(READ_MAX_MS, READ_BASE_MS + Math.max(0, text.length - READ_FREE_CHARACTERS) * READ_MS_PER_CHARACTER);\n return variant === \"error\" || hasAction ? Math.max(REACHABLE_MS, reading) : reading;\n};\n\nconst normalizedIconClass = (iconClass: string): string => {\n const tokens = iconClass\n .split(/\\s+/)\n .filter(Boolean)\n .filter((token) => token !== \"ti\");\n return [\"ti\", ...tokens].join(\" \");\n};\n\nconst applyIconClass = (icon: HTMLElement, iconClass: string): void => {\n icon.className = normalizedIconClass(iconClass);\n};\n\ntype LiveToast = {\n dismiss: () => void;\n /** Errors, sticky toasts, and running progress stay when the rail is full; older timed confirmations leave first. */\n keep: () => boolean;\n progress: () => boolean;\n /** Under the pointer or holding keyboard focus: the rail limit never removes it. */\n held: () => boolean;\n pause: () => void;\n resume: () => void;\n};\n\nconst liveToasts = new Set<LiveToast>();\n\n/**\n * Cards under the pointer or holding keyboard focus. While the rail holds any, no toast times out, so nothing moves\n * under the pointer or out from under focus because a neighbour expired.\n */\nconst pointerHolds = new Set<HTMLElement>();\nconst focusHolds = new Set<HTMLElement>();\nconst railHeld = (): boolean => pointerHolds.size + focusHolds.size > 0;\n\n/**\n * Firefox and WebKit fire no focusout when a focused element leaves the document, and WebKit no pointerleave when\n * the hovered element inside a card is removed, as when custom content replaces a button or the rail's scope\n * unmounts. While anything holds the rail, a change to the document or the pointer moving onto something else\n * drops the holds that no longer apply, so one stale hold never freezes the rail.\n */\nconst releaseStaleHolds = (pointerTarget?: Node | null): void => {\n for (const card of Array.from(pointerHolds))\n if (!card.isConnected || (pointerTarget !== undefined && !card.contains(pointerTarget))) setHold(pointerHolds, card, false);\n for (const card of Array.from(focusHolds))\n if (!card.isConnected || !card.contains(card.ownerDocument.activeElement)) setHold(focusHolds, card, false);\n};\n\nconst watchStaleHolds = (doc: Document): (() => void) => {\n const observer = new MutationObserver(() => releaseStaleHolds());\n observer.observe(doc, { childList: true, subtree: true });\n const onPointerOver = (event: Event) => releaseStaleHolds(event.target instanceof Node ? event.target : null);\n doc.addEventListener(\"pointerover\", onPointerOver, true);\n return () => {\n observer.disconnect();\n doc.removeEventListener(\"pointerover\", onPointerOver, true);\n };\n};\nlet unwatchStaleHolds: (() => void) | null = null;\n\nfunction setHold(holds: Set<HTMLElement>, card: HTMLElement, held: boolean): void {\n const wasHeld = railHeld();\n if (held) holds.add(card);\n else holds.delete(card);\n if (railHeld() !== wasHeld) {\n for (const item of Array.from(liveToasts)) (wasHeld ? item.resume : item.pause)();\n unwatchStaleHolds?.();\n unwatchStaleHolds = wasHeld ? null : watchStaleHolds(card.ownerDocument);\n }\n // A released card may be the one the rail limit had to wait for.\n if (!held) enforceCap();\n}\n\nconst ensureContainer = (): HTMLElement | null => {\n if (typeof document === \"undefined\") return null;\n // The shared live regions exist before the first toast's text arrives.\n ensureLiveRegions(document);\n const root = getK2bPortalRoot();\n let container = root.querySelector<HTMLElement>(`[${CONTAINER_ATTRIBUTE}]`);\n if (container) return container;\n\n container = document.createElement(\"div\");\n container.id = K2B_TOAST_CONTAINER_ID;\n container.setAttribute(CONTAINER_ATTRIBUTE, \"\");\n container.setAttribute(\"popover\", \"manual\");\n container.setAttribute(\"role\", \"region\");\n container.setAttribute(\"aria-label\", resolveUiMessages().notifications);\n // Keep the source rail geometry inline: it must defeat UA popover defaults\n // even when a consumer has not loaded the optional package stylesheet yet.\n // The stylesheet only moves the rail to the top edge, and to the full width\n // of a phone, through the rail variables.\n container.style.cssText =\n \"position:fixed;left:var(--k2b-toast-rail-left,auto);right:env(safe-area-inset-right,0px);\" +\n \"top:var(--k2b-toast-rail-top,auto);bottom:var(--k2b-toast-rail-bottom,env(safe-area-inset-bottom,0px));\" +\n \"z-index:50;box-sizing:border-box;display:flex;flex-direction:var(--k2b-toast-rail-direction,column);\" +\n \"width:var(--k2b-toast-rail-width,min(24rem,calc(100vw - env(safe-area-inset-left,0px) - env(safe-area-inset-right,0px))));\" +\n \"height:auto;max-width:100vw;\" +\n \"max-height:calc(100dvh - env(safe-area-inset-top,0px) - var(--k2b-toast-offset-top,0px) - env(safe-area-inset-bottom,0px));\" +\n \"margin:0;padding:var(--k2b-toast-rail-padding,0.75rem 1rem);border:0;background:transparent;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;\" +\n \"pointer-events:none;\";\n root.appendChild(container);\n return container;\n};\n\n/** Moving nodes resets their scroll offsets and drops focus; a custom slot can hold a scrolled list or a focused control. */\nconst captureViewState = (container: HTMLElement) => {\n const focused =\n document.activeElement instanceof HTMLElement && container.contains(document.activeElement) ? document.activeElement : null;\n const scrolled = Array.from(container.querySelectorAll<HTMLElement>(\"*\"))\n .filter((element) => element.scrollTop || element.scrollLeft)\n .map((element) => [element, element.scrollTop, element.scrollLeft] as const);\n const railTop = container.scrollTop;\n return (rail: HTMLElement) => {\n rail.scrollTop = railTop;\n for (const [element, top, left] of scrolled) {\n element.scrollTop = top;\n element.scrollLeft = left;\n }\n if (focused?.isConnected && rail.contains(focused)) focused.focus({ preventScroll: true });\n };\n};\n\nconst promoteToTopLayer = (container: HTMLElement): HTMLElement => {\n if (typeof container.showPopover !== \"function\" || !container.isConnected) return container;\n let active = container;\n let restore: ((rail: HTMLElement) => void) | null = null;\n try {\n if (container.matches(\":popover-open\") || document.querySelector(\"dialog:modal\")) {\n restore = captureViewState(container);\n const next = container.cloneNode(false) as HTMLElement;\n while (container.firstChild) next.appendChild(container.firstChild);\n const root = container.parentElement ?? getK2bPortalRoot();\n container.remove();\n root.appendChild(next);\n active = next;\n }\n if (!active.matches(\":popover-open\")) active.showPopover();\n } catch {\n active.removeAttribute(\"popover\");\n }\n // Offsets apply only once the rail is rendered again, so after it is shown.\n restore?.(active);\n return active;\n};\n\n/** Close every empty rail so an emptied container does not linger in the top\n * layer. Rails are resolved at call time on purpose: `promoteToTopLayer`\n * swaps the element for a fresh clone, so a container captured when the toast\n * was created can already be detached by the time the toast is dismissed. */\nconst hideEmptyContainers = (): void => {\n if (typeof document === \"undefined\") return;\n for (const container of Array.from(document.querySelectorAll<HTMLElement>(`[${CONTAINER_ATTRIBUTE}]`))) {\n if (container.childElementCount > 0 || typeof container.hidePopover !== \"function\") continue;\n try {\n if (container.matches(\":popover-open\")) container.hidePopover();\n } catch {\n // Already hidden or disconnected.\n }\n }\n};\n\n/**\n * Every toast and custom slot sits in a slot that grows from and collapses to zero height, so its neighbours glide\n * instead of jumping when it arrives or leaves. The card carries the chrome and `data-open` / `data-closing`.\n */\ntype RailItem = {\n slot: HTMLElement;\n open: () => void;\n close: (onRemoved?: () => void) => void;\n};\n\nconst railItem = (card: HTMLElement): RailItem => {\n card.addEventListener(\"pointerenter\", () => setHold(pointerHolds, card, true));\n card.addEventListener(\"pointerleave\", () => setHold(pointerHolds, card, false));\n card.addEventListener(\"focusin\", () => setHold(focusHolds, card, true));\n card.addEventListener(\"focusout\", (event) => {\n if (!card.contains(event.relatedTarget as Node | null)) setHold(focusHolds, card, false);\n });\n const slot = document.createElement(\"div\");\n slot.className = \"k2b-toast-slot\";\n slot.dataset.state = \"entering\";\n const clip = document.createElement(\"div\");\n clip.className = \"k2b-toast-slot__clip\";\n clip.appendChild(card);\n slot.appendChild(clip);\n return {\n slot,\n open: () => {\n // The entering state must be laid out once before it changes, or nothing transitions.\n slot.getBoundingClientRect();\n requestAnimationFrame(() => {\n if (card.dataset.closing) return;\n slot.dataset.state = \"open\";\n card.dataset.open = \"true\";\n });\n },\n close: (onRemoved) => {\n slot.dataset.state = \"closing\";\n card.dataset.closing = \"true\";\n // A card that leaves under the pointer or with focus no longer holds the rail.\n if (pointerHolds.has(card)) setHold(pointerHolds, card, false);\n if (focusHolds.has(card)) setHold(focusHolds, card, false);\n setTimeout(() => {\n slot.remove();\n hideEmptyContainers();\n onRemoved?.();\n }, ANIMATION_MS);\n },\n };\n};\n\n/**\n * The rail is full: older timed confirmations leave first, then older errors and sticky toasts. Running progress, the\n * newest toast, and a toast under the pointer or with focus stay; the rail waits until they are released.\n */\nfunction enforceCap(): void {\n const narrow = typeof matchMedia === \"function\" && matchMedia(NARROW_RAIL_QUERY).matches;\n const cap = narrow ? MAX_VISIBLE_TOASTS_NARROW : MAX_VISIBLE_TOASTS;\n while (liveToasts.size > cap) {\n const older = Array.from(liveToasts)\n .slice(0, -1)\n .filter((item) => !item.held());\n const victim = older.find((item) => !item.keep()) ?? older.find((item) => !item.progress());\n if (!victim) return;\n victim.dismiss();\n }\n}\n\nconst showToast = (description: string, options?: ToastOptions): ToastHandle => {\n const initialContainer = ensureContainer();\n if (!initialContainer) {\n const noop = () => {};\n return { dismiss: noop, update: noop };\n }\n const messages = resolveUiMessages();\n const doc = initialContainer.ownerDocument;\n // Focus returns here when a focused toast closes and no other toast can take it.\n const opener =\n doc.activeElement instanceof HTMLElement && !doc.activeElement.closest(`[${CONTAINER_ATTRIBUTE}]`) ? doc.activeElement : null;\n\n let dismissed = false;\n let dismissTimer: ReturnType<typeof setTimeout> | null = null;\n let currentVariant: ToastVariant = options?.variant ?? \"default\";\n let currentProgress = options?.progress ?? null;\n let currentAction = options?.action ?? null;\n let explicitDuration = options?.duration;\n let remainingDuration = 0;\n let timerStartedAt = 0;\n let lastAnnouncement = \"\";\n\n const toastElement = doc.createElement(\"div\");\n toastElement.className = \"k2b-toast\";\n toastElement.dataset.tone = VARIANT_STYLES[currentVariant].tone;\n toastElement.dataset.k2bToast = \"\";\n\n const leadElement = doc.createElement(\"div\");\n leadElement.className = \"k2b-toast__icon\";\n leadElement.setAttribute(\"aria-hidden\", \"true\");\n const leadIconElement = doc.createElement(\"i\");\n leadElement.appendChild(leadIconElement);\n const renderLead = (iconClassOverride?: string) => {\n leadElement.dataset.tone = VARIANT_STYLES[currentVariant].tone;\n applyIconClass(leadIconElement, iconClassOverride ?? VARIANT_STYLES[currentVariant].iconClass);\n };\n renderLead(options?.iconClass);\n\n const contentElement = doc.createElement(\"div\");\n contentElement.className = \"k2b-toast__content\";\n const titleElement = doc.createElement(\"div\");\n titleElement.className = \"k2b-toast__title\";\n const renderTitle = (title: string | undefined) => {\n titleElement.textContent = title ?? \"\";\n titleElement.hidden = !title;\n };\n renderTitle(options?.title);\n const descriptionElement = doc.createElement(\"div\");\n descriptionElement.className = \"k2b-toast__description\";\n descriptionElement.textContent = description;\n contentElement.append(titleElement, descriptionElement);\n\n const closeButton = doc.createElement(\"button\");\n closeButton.type = \"button\";\n closeButton.className = \"k2b-toast__close\";\n closeButton.setAttribute(\"aria-label\", options?.dismissLabel ?? messages.dismissNotification);\n const closeIcon = doc.createElement(\"i\");\n closeIcon.className = \"ti ti-x\";\n closeIcon.setAttribute(\"aria-hidden\", \"true\");\n closeButton.appendChild(closeIcon);\n\n // Inside the content, so a titled progress toast can place the bar between its title and its summary line.\n const progressElement = doc.createElement(\"progress\");\n progressElement.className = \"k2b-toast__progress\";\n progressElement.max = 1;\n contentElement.appendChild(progressElement);\n\n toastElement.append(leadElement, contentElement, closeButton);\n const item = railItem(toastElement);\n\n const text = () => [titleElement.textContent, descriptionElement.textContent].filter(Boolean).join(\". \");\n const effectiveDuration = () => explicitDuration ?? defaultDuration(currentVariant, text(), currentAction !== null);\n /** The error word is read before the message; the action is left out. */\n const spoken = () => (currentVariant === \"error\" ? `${resolveUiMessages().error}: ${text()}` : text());\n const say = () => {\n lastAnnouncement = spoken();\n announce(lastAnnouncement, { politeness: currentVariant === \"error\" ? \"assertive\" : \"polite\" });\n };\n\n const clearDismissTimer = () => {\n if (dismissTimer === null) return;\n clearTimeout(dismissTimer);\n dismissTimer = null;\n };\n\n const pauseDismissTimer = () => {\n if (dismissTimer === null) return;\n remainingDuration = Math.max(0, remainingDuration - (Date.now() - timerStartedAt));\n clearDismissTimer();\n };\n\n const resumeDismissTimer = () => {\n if (dismissed || currentProgress !== null || remainingDuration <= 0 || railHeld() || doc.hidden) return;\n clearDismissTimer();\n timerStartedAt = Date.now();\n dismissTimer = setTimeout(() => dismiss(), remainingDuration);\n };\n\n const resetDismissTimer = () => {\n clearDismissTimer();\n remainingDuration = effectiveDuration();\n // A toast that stays until it is closed or its progress ends; a phone shell keeps the end of its content clear of it.\n if (remainingDuration === 0 || currentProgress !== null) toastElement.dataset.persistent = \"true\";\n else delete toastElement.dataset.persistent;\n resumeDismissTimer();\n };\n\n const onVisibilityChange = () => (doc.hidden ? pauseDismissTimer() : resumeDismissTimer());\n\n /** The close button of the nearest open toast in one direction, past neighbours that are still closing. */\n const nearestOpenClose = (step: (slot: Element) => Element | null): HTMLElement | null => {\n for (let slot = step(item.slot); slot; slot = step(slot)) {\n const button = slot.querySelector<HTMLElement>(\".k2b-toast:not([data-closing]) .k2b-toast__close\");\n if (button) return button;\n }\n return null;\n };\n\n /** A focused toast hands focus to its neighbour, or back to where the user was, instead of dropping it on the page. */\n const moveFocusAway = () => {\n if (!toastElement.contains(doc.activeElement)) return;\n const next = nearestOpenClose((slot) => slot.nextElementSibling) ?? nearestOpenClose((slot) => slot.previousElementSibling);\n const target = next ?? (opener?.isConnected ? opener : null);\n if (target) target.focus({ preventScroll: true });\n else (doc.activeElement as HTMLElement | null)?.blur();\n };\n\n const dismiss = () => {\n if (dismissed) return;\n dismissed = true;\n clearDismissTimer();\n liveToasts.delete(live);\n doc.removeEventListener(\"visibilitychange\", onVisibilityChange);\n moveFocusAway();\n item.close();\n };\n\n const renderProgress = () => {\n progressElement.hidden = currentProgress === null;\n toastElement.dataset.progress = String(currentProgress !== null);\n const title = titleElement.textContent;\n const summary = descriptionElement.textContent ?? \"\";\n progressElement.setAttribute(\"aria-label\", title || summary);\n // With a title, the message is the summary line under the bar (\"6 of 12 files\"), read instead of a bare percentage.\n if (typeof currentProgress === \"number\" && title && summary) progressElement.setAttribute(\"aria-valuetext\", summary);\n else progressElement.removeAttribute(\"aria-valuetext\");\n if (typeof currentProgress === \"number\")\n progressElement.value = Number.isFinite(currentProgress) ? Math.max(0, Math.min(1, currentProgress)) : 0;\n else progressElement.removeAttribute(\"value\");\n };\n renderProgress();\n\n let actionElement: HTMLAnchorElement | HTMLButtonElement | null = null;\n const createAction = (action: ToastAction): HTMLAnchorElement | HTMLButtonElement => {\n let element: HTMLAnchorElement | HTMLButtonElement;\n if (\"href\" in action) {\n element = doc.createElement(\"a\");\n element.href = action.href;\n } else {\n element = doc.createElement(\"button\");\n element.type = \"button\";\n }\n element.className = \"k2b-toast__action\";\n element.textContent = action.label;\n element.addEventListener(\"click\", () => {\n if (\"onClick\" in action) action.onClick();\n else dismiss();\n });\n return element;\n };\n const renderAction = (action: ToastAction | null | undefined) => {\n const previous = actionElement;\n currentAction = action ?? null;\n actionElement = action ? createAction(action) : null;\n if (actionElement) contentElement.appendChild(actionElement);\n // The keyboard stays in the toast, on the new action or the close button, instead of falling to the page.\n if (previous?.contains(doc.activeElement)) (actionElement ?? closeButton).focus({ preventScroll: true });\n previous?.remove();\n };\n renderAction(options?.action);\n\n const update = (nextDescription: string, nextOptions?: ToastOptions) => {\n if (dismissed) return;\n const has = (key: keyof ToastOptions) => nextOptions !== undefined && Object.prototype.hasOwnProperty.call(nextOptions, key);\n const previousProgress = currentProgress;\n descriptionElement.textContent = nextDescription;\n\n const variantChanged = nextOptions?.variant !== undefined && nextOptions.variant !== currentVariant;\n if (variantChanged) {\n currentVariant = nextOptions.variant!;\n toastElement.dataset.tone = VARIANT_STYLES[currentVariant].tone;\n renderLead(nextOptions.iconClass);\n } else if (nextOptions?.iconClass !== undefined) {\n applyIconClass(leadIconElement, nextOptions.iconClass);\n }\n\n if (has(\"title\")) renderTitle(nextOptions!.title);\n if (has(\"action\")) renderAction(nextOptions!.action);\n if (has(\"duration\")) explicitDuration = nextOptions!.duration;\n if (has(\"progress\")) currentProgress = nextOptions!.progress ?? null;\n if (nextOptions?.dismissLabel) closeButton.setAttribute(\"aria-label\", nextOptions.dismissLabel);\n renderProgress();\n resetDismissTimer();\n\n // Progress is announced at its start, half way, and its end, never at every step, and only with something new to say.\n // The comparison includes the error word, so a change to an error with the same text is still announced.\n const ticking = previousProgress !== null && currentProgress !== null;\n const halfway =\n typeof currentProgress === \"number\" && currentProgress >= 0.5 && !(typeof previousProgress === \"number\" && previousProgress >= 0.5);\n if ((!ticking || halfway || variantChanged) && spoken() !== lastAnnouncement) say();\n // Finished progress or a new duration can make this toast one the rail limit removes.\n enforceCap();\n };\n\n closeButton.addEventListener(\"click\", () => dismiss());\n toastElement.addEventListener(\"keydown\", (event) => {\n if (event.key !== \"Escape\" || event.defaultPrevented) return;\n event.preventDefault();\n event.stopPropagation();\n dismiss();\n });\n doc.addEventListener(\"visibilitychange\", onVisibilityChange);\n\n const handle: ToastHandle = { dismiss, update };\n const live: LiveToast = {\n dismiss,\n keep: () => currentVariant === \"error\" || currentProgress !== null || effectiveDuration() === 0,\n progress: () => currentProgress !== null,\n held: () => pointerHolds.has(toastElement) || focusHolds.has(toastElement),\n pause: pauseDismissTimer,\n resume: resumeDismissTimer,\n };\n liveToasts.add(live);\n promoteToTopLayer(initialContainer).appendChild(item.slot);\n item.open();\n say();\n enforceCap();\n resetDismissTimer();\n return handle;\n};\n\n/*\n * A custom slot shares the rail, chrome, and enter/leave motion with toasts, so it stacks beside them in the same\n * corner instead of covering them. It has no timer, close button, or live region of its own, and neither the\n * toast limit nor `dismissAll` removes it: the application that placed it decides when it goes.\n */\nconst showCustom = (content: HTMLElement): ToastSlot => {\n const initialContainer = ensureContainer();\n if (!initialContainer) return { dismiss: () => {} };\n let dismissed = false;\n const slotElement = document.createElement(\"div\");\n slotElement.className = \"k2b-toast\";\n slotElement.dataset.k2bToast = \"\";\n slotElement.dataset.custom = \"true\";\n // It stays until the application removes it, like a toast without a timer.\n slotElement.dataset.persistent = \"true\";\n slotElement.append(content);\n const item = railItem(slotElement);\n const dismiss = () => {\n if (dismissed) return;\n dismissed = true;\n item.close();\n };\n promoteToTopLayer(initialContainer).appendChild(item.slot);\n item.open();\n return { dismiss };\n};\n\nexport const isPointInsideToast = (x: number, y: number): boolean => {\n if (typeof document === \"undefined\") return false;\n for (const card of Array.from(document.querySelectorAll<HTMLElement>(`[${CONTAINER_ATTRIBUTE}] [data-k2b-toast]`))) {\n const rect = card.getBoundingClientRect();\n if (x >= rect.left && x <= rect.right && y >= rect.top && y <= rect.bottom) return true;\n }\n return false;\n};\n\nconst toastFn = ((description: string, options?: ToastOptions) => showToast(description, options)) as ToastFn;\ntoastFn.success = (description, options) => showToast(description, { ...options, variant: \"success\" });\ntoastFn.error = (description, options) => showToast(description, { ...options, variant: \"error\" });\ntoastFn.custom = showCustom;\ntoastFn.dismissAll = () => {\n for (const item of Array.from(liveToasts)) item.dismiss();\n};\n\nexport const toast: ToastFn = toastFn;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -6,32 +6,33 @@ import { ssr as _$ssr } from "solid-js/web";
|
|
|
6
6
|
import { ssrAttribute as _$ssrAttribute } from "solid-js/web";
|
|
7
7
|
import { escape as _$escape } from "solid-js/web";
|
|
8
8
|
var _tmpl$ = ["<i class=\"", "\" aria-hidden=\"true\"></i>"],
|
|
9
|
-
_tmpl$2 = ["<span class=\"k2b-date-trigger__value\">", "</span>"],
|
|
9
|
+
_tmpl$2 = ["<span id=\"", "\" class=\"k2b-date-trigger__value\">", "</span>"],
|
|
10
10
|
_tmpl$3 = "<i class=\"ti ti-chevron-down k2b-date-trigger__chevron\" aria-hidden=\"true\"></i>",
|
|
11
11
|
_tmpl$4 = ["<button type=\"button\" class=\"k2b-date-trigger__clear k2b-input-clear-action\"", "><i class=\"ti ti-x\" aria-hidden=\"true\"></i></button>"],
|
|
12
|
-
_tmpl$5 = ["<
|
|
13
|
-
_tmpl$6 = ["<
|
|
14
|
-
_tmpl$7 = ["<
|
|
15
|
-
_tmpl$8 = ["<
|
|
16
|
-
_tmpl$9 = ["<
|
|
17
|
-
_tmpl$0 = ["<
|
|
18
|
-
_tmpl$1 = ["<div class=\"k2b-date-
|
|
19
|
-
_tmpl$10 = ["<
|
|
20
|
-
_tmpl$11 = ["<
|
|
21
|
-
_tmpl$12 = ["<
|
|
22
|
-
_tmpl$13 = ["<
|
|
23
|
-
_tmpl$14 = ["<
|
|
24
|
-
_tmpl$15 = ["<
|
|
25
|
-
_tmpl$16 = ["<
|
|
26
|
-
_tmpl$17 = ["<
|
|
27
|
-
_tmpl$18 = ["<div class=\"k2b-date-
|
|
28
|
-
_tmpl$19 = ["<
|
|
29
|
-
_tmpl$20 = ["<span class=\"k2b-date-
|
|
30
|
-
_tmpl$21 = ["<
|
|
31
|
-
_tmpl$22 = ["<div class=\"k2b-date-
|
|
12
|
+
_tmpl$5 = ["<button type=\"button\" class=\"k2b-date-popover__clear\"><i class=\"ti ti-x\" aria-hidden=\"true\"></i>", "</button>"],
|
|
13
|
+
_tmpl$6 = ["<span class=\"k2b-date-popover__timezone\"><i class=\"ti ti-world\" aria-hidden=\"true\"></i>", "</span>"],
|
|
14
|
+
_tmpl$7 = ["<footer class=\"k2b-date-popover__footer\"><span>", "</span>", "", "</footer>"],
|
|
15
|
+
_tmpl$8 = ["<div class=\"k2b-date-picker\"", ">", "", "<div id=\"", "\" class=\"k2b-date-popover\" popover=\"auto\" role=\"dialog\"", ">", "", "</div></div>"],
|
|
16
|
+
_tmpl$9 = ["<aside class=\"k2b-date-presets\"", ">", "</aside>"],
|
|
17
|
+
_tmpl$0 = ["<button type=\"button\">", "</button>"],
|
|
18
|
+
_tmpl$1 = ["<div class=\"k2b-date-weekdays\" aria-hidden=\"true\">", "</div>"],
|
|
19
|
+
_tmpl$10 = ["<div class=\"k2b-date-grid\" role=\"grid\">", "</div>"],
|
|
20
|
+
_tmpl$11 = ["<section class=\"k2b-date-calendar\"", "><header class=\"k2b-date-calendar__header\"><button type=\"button\" class=\"k2b-date-calendar__nav\"", "><i class=\"ti ti-chevron-left\" aria-hidden=\"true\"></i></button><button type=\"button\" class=\"k2b-date-calendar__title\">", "</button><button type=\"button\" class=\"k2b-date-calendar__nav\"", "><i class=\"ti ti-chevron-right\" aria-hidden=\"true\"></i></button></header>", "</section>"],
|
|
21
|
+
_tmpl$12 = ["<div class=\"k2b-date-months\" role=\"group\" aria-label=\"", "\">", "</div>"],
|
|
22
|
+
_tmpl$13 = ["<button type=\"button\"", ">", "</button>"],
|
|
23
|
+
_tmpl$14 = ["<span>", "</span>"],
|
|
24
|
+
_tmpl$15 = ["<div class=\"k2b-date-week\" role=\"row\">", "</div>"],
|
|
25
|
+
_tmpl$16 = ["<button type=\"button\" role=\"gridcell\"", ">", "</button>"],
|
|
26
|
+
_tmpl$17 = ["<label class=\"k2b-date-time\">", "<span class=\"k2b-date-time__control\"><input type=\"text\" inputmode=\"numeric\"", " placeholder=\"09:00\"", "><i class=\"ti ti-clock\" aria-hidden=\"true\"></i></span></label>"],
|
|
27
|
+
_tmpl$18 = ["<div class=\"k2b-date-popover__body\">", "", "</div>"],
|
|
28
|
+
_tmpl$19 = ["<div class=\"k2b-date-actions\">", "<button type=\"button\" class=\"k2b-date-apply\"", ">", "</button></div>"],
|
|
29
|
+
_tmpl$20 = ["<span class=\"k2b-date-range-value\"><span>", "</span><i class=\"ti ti-arrow-narrow-right\" aria-hidden=\"true\"></i><span>", "</span></span>"],
|
|
30
|
+
_tmpl$21 = ["<span class=\"k2b-date-duration\"><i class=\"ti ti-hourglass-low\" aria-hidden=\"true\"></i>", "</span>"],
|
|
31
|
+
_tmpl$22 = ["<div class=\"k2b-date-range-times\">", "", "</div>"],
|
|
32
|
+
_tmpl$23 = ["<div class=\"k2b-date-durations\" role=\"group\"", ">", "</div>"];
|
|
32
33
|
import { dates } from "@k2b/stdlib";
|
|
33
34
|
import { createEffect, createMemo, createSignal, For, onCleanup, onMount, Show } from "solid-js";
|
|
34
|
-
import { createFieldMeta, Field, fieldControlAria } from "../internal/field";
|
|
35
|
+
import { createFieldMeta, Field, fieldControlAria, fieldDescribedBy } from "../internal/field";
|
|
35
36
|
import { returnFocus, ringOnReturn } from "../internal/focus-return";
|
|
36
37
|
import { useDateConfigLocale } from "../intl/locale";
|
|
37
38
|
import { useUiMessages } from "../intl/messages";
|
|
@@ -93,6 +94,13 @@ function PickerShell(props) {
|
|
|
93
94
|
});
|
|
94
95
|
};
|
|
95
96
|
const toggle = () => open() ? close() : show();
|
|
97
|
+
const plain = () => props.owner.appearance === "plain";
|
|
98
|
+
const canClear = () => Boolean(props.owner.clearable && props.valueLabel() && !props.owner.disabled);
|
|
99
|
+
const clear = () => {
|
|
100
|
+
close();
|
|
101
|
+
commitFieldValue(props.owner, props.clearValue);
|
|
102
|
+
trigger?.focus();
|
|
103
|
+
};
|
|
96
104
|
onMount(() => {
|
|
97
105
|
const syncOpenState = () => setOpen(popoverIsOpen(popover));
|
|
98
106
|
popover?.addEventListener("toggle", syncOpenState);
|
|
@@ -129,7 +137,7 @@ function PickerShell(props) {
|
|
|
129
137
|
},
|
|
130
138
|
meta: meta,
|
|
131
139
|
get children() {
|
|
132
|
-
return _$ssr(_tmpl$
|
|
140
|
+
return _$ssr(_tmpl$8, _$ssrAttribute("data-appearance", _$escape(props.owner.appearance ?? "field", true), false) + _$ssrAttribute("data-invalid", error() ? "true" : _$escape(undefined, true), false), _$ssrElement("button", _$mergeProps({
|
|
133
141
|
get id() {
|
|
134
142
|
return meta.controlId;
|
|
135
143
|
},
|
|
@@ -151,7 +159,11 @@ function PickerShell(props) {
|
|
|
151
159
|
get ["aria-controls"]() {
|
|
152
160
|
return `${meta.controlId}-popover`;
|
|
153
161
|
}
|
|
154
|
-
}, () => fieldControlAria(meta, props.owner)
|
|
162
|
+
}, () => fieldControlAria(meta, props.owner), {
|
|
163
|
+
get ["aria-describedby"]() {
|
|
164
|
+
return [fieldDescribedBy(meta, props.owner), `${meta.controlId}-value`].filter(Boolean).join(" ");
|
|
165
|
+
}
|
|
166
|
+
}), [_$ssr(_tmpl$, `${_$escape(props.icon, true)} k2b-date-trigger__icon`), _$ssr(_tmpl$2, `${_$escape(meta.controlId, true)}-value`, _$escape(_$createComponent(Show, {
|
|
155
167
|
get when() {
|
|
156
168
|
return props.valueLabel();
|
|
157
169
|
},
|
|
@@ -163,22 +175,29 @@ function PickerShell(props) {
|
|
|
163
175
|
}
|
|
164
176
|
}))), _$ssr(_tmpl$3)], false), _$escape(_$createComponent(Show, {
|
|
165
177
|
get when() {
|
|
166
|
-
return _$memo(() => !!(
|
|
178
|
+
return _$memo(() => !!canClear())() && !plain();
|
|
167
179
|
},
|
|
168
180
|
get children() {
|
|
169
181
|
return _$ssr(_tmpl$4, _$ssrAttribute("aria-label", _$escape(messages().clearDate, true), false));
|
|
170
182
|
}
|
|
171
183
|
})), `${_$escape(meta.controlId, true)}-popover`, _$ssrAttribute("aria-label", typeof props.owner.label === "string" ? _$escape(props.owner.label, true) : _$escape(messages().datePicker, true), false), _$escape(props.children(close)), _$escape(_$createComponent(Show, {
|
|
172
184
|
get when() {
|
|
173
|
-
return props.footerMeta || props.timezone;
|
|
185
|
+
return props.footerMeta || props.timezone || plain() && canClear();
|
|
174
186
|
},
|
|
175
187
|
get children() {
|
|
176
|
-
return _$ssr(_tmpl$
|
|
188
|
+
return _$ssr(_tmpl$7, _$escape(props.footerMeta?.()), _$escape(_$createComponent(Show, {
|
|
189
|
+
get when() {
|
|
190
|
+
return _$memo(() => !!plain())() && canClear();
|
|
191
|
+
},
|
|
192
|
+
get children() {
|
|
193
|
+
return _$ssr(_tmpl$5, _$escape(messages().clearDate));
|
|
194
|
+
}
|
|
195
|
+
})), _$escape(_$createComponent(Show, {
|
|
177
196
|
get when() {
|
|
178
197
|
return props.timezone;
|
|
179
198
|
},
|
|
180
199
|
get children() {
|
|
181
|
-
return _$ssr(_tmpl$
|
|
200
|
+
return _$ssr(_tmpl$6, _$escape(props.timezone));
|
|
182
201
|
}
|
|
183
202
|
})));
|
|
184
203
|
}
|
|
@@ -193,11 +212,11 @@ function PresetRail(props) {
|
|
|
193
212
|
return props.presets?.length;
|
|
194
213
|
},
|
|
195
214
|
get children() {
|
|
196
|
-
return _$ssr(_tmpl$
|
|
215
|
+
return _$ssr(_tmpl$9, _$ssrAttribute("aria-label", _$escape(messages().datePresets, true), false), _$escape(_$createComponent(For, {
|
|
197
216
|
get each() {
|
|
198
217
|
return props.presets;
|
|
199
218
|
},
|
|
200
|
-
children: preset => _$ssr(_tmpl$
|
|
219
|
+
children: preset => _$ssr(_tmpl$0, _$escape(preset.label))
|
|
201
220
|
})));
|
|
202
221
|
}
|
|
203
222
|
});
|
|
@@ -271,7 +290,7 @@ function DatePickerPanel(props) {
|
|
|
271
290
|
focusDate(dates.addDays(day, offset, context()));
|
|
272
291
|
}
|
|
273
292
|
};
|
|
274
|
-
return _$ssr(_tmpl$
|
|
293
|
+
return _$ssr(_tmpl$11, _$ssrAttribute("aria-label", _$escape(messages().calendar, true), false), _$ssrAttribute("aria-label", _$escape(previousLabel(), true), false), _$escape(_$createComponent(Show, {
|
|
275
294
|
get when() {
|
|
276
295
|
return view() === "days";
|
|
277
296
|
},
|
|
@@ -286,24 +305,24 @@ function DatePickerPanel(props) {
|
|
|
286
305
|
return view() === "days";
|
|
287
306
|
},
|
|
288
307
|
get fallback() {
|
|
289
|
-
return _$ssr(_tmpl$
|
|
308
|
+
return _$ssr(_tmpl$12, `Months in ${_$escape(month().year, true)}`, _$escape(_$createComponent(For, {
|
|
290
309
|
get each() {
|
|
291
310
|
return months();
|
|
292
311
|
},
|
|
293
|
-
children: (name, index) => _$ssr(_tmpl$
|
|
312
|
+
children: (name, index) => _$ssr(_tmpl$13, _$ssrAttribute("aria-pressed", _$escape(index(), true) === _$escape(month().month, true), false) + _$ssrAttribute("data-selected", index() === month().month ? "true" : _$escape(undefined, true), false), _$escape(name))
|
|
294
313
|
})));
|
|
295
314
|
},
|
|
296
315
|
get children() {
|
|
297
|
-
return [_$ssr(_tmpl$
|
|
316
|
+
return [_$ssr(_tmpl$1, _$escape(_$createComponent(For, {
|
|
298
317
|
get each() {
|
|
299
318
|
return weekdays();
|
|
300
319
|
},
|
|
301
|
-
children: day => _$ssr(_tmpl$
|
|
302
|
-
}))), _$ssr(_tmpl$
|
|
320
|
+
children: day => _$ssr(_tmpl$14, _$escape(day))
|
|
321
|
+
}))), _$ssr(_tmpl$10, _$escape(_$createComponent(For, {
|
|
303
322
|
get each() {
|
|
304
323
|
return dayRows();
|
|
305
324
|
},
|
|
306
|
-
children: week => _$ssr(_tmpl$
|
|
325
|
+
children: week => _$ssr(_tmpl$15, _$escape(_$createComponent(For, {
|
|
307
326
|
each: week,
|
|
308
327
|
children: cell => {
|
|
309
328
|
const selected = () => props.selected?.() === cell.key;
|
|
@@ -313,7 +332,7 @@ function DatePickerPanel(props) {
|
|
|
313
332
|
};
|
|
314
333
|
const active = () => selected() || isRangeEdge(cell.key, range());
|
|
315
334
|
const focusable = () => cell.key === defaultFocus();
|
|
316
|
-
return _$ssr(_tmpl$
|
|
335
|
+
return _$ssr(_tmpl$16, _$ssrAttribute("data-date-day", _$escape(cell.key, true), false) + _$ssrAttribute("data-date-focus", focusable() ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-outside", cell.outside ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-in-range", inRange(cell.key, range()) && !active() ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("aria-label", _$escape(cell.label, true), false) + _$ssrAttribute("aria-selected", _$escape(active(), true), false) + _$ssrAttribute("tabindex", focusable() ? 0 : -1, false), _$escape(cell.number));
|
|
317
336
|
}
|
|
318
337
|
})))
|
|
319
338
|
})))];
|
|
@@ -322,12 +341,12 @@ function DatePickerPanel(props) {
|
|
|
322
341
|
}
|
|
323
342
|
function TimeInput(props) {
|
|
324
343
|
const messages = useUiMessages();
|
|
325
|
-
return _$ssr(_tmpl$
|
|
344
|
+
return _$ssr(_tmpl$17, _$escape(_$createComponent(Show, {
|
|
326
345
|
get when() {
|
|
327
346
|
return props.label;
|
|
328
347
|
},
|
|
329
348
|
get children() {
|
|
330
|
-
return _$ssr(_tmpl$
|
|
349
|
+
return _$ssr(_tmpl$14, _$escape(props.label));
|
|
331
350
|
}
|
|
332
351
|
})), _$ssrAttribute("value", _$escape(props.time, true), false), _$ssrAttribute("aria-label", props.label ? _$escape(messages().timeLabel({
|
|
333
352
|
label: props.label
|
|
@@ -342,12 +361,15 @@ export function DatePicker(props) {
|
|
|
342
361
|
owner: props,
|
|
343
362
|
icon: "ti ti-calendar",
|
|
344
363
|
valueLabel: valueLabel,
|
|
364
|
+
get valueContent() {
|
|
365
|
+
return props.renderValue ? () => props.renderValue(value()) : undefined;
|
|
366
|
+
},
|
|
345
367
|
clearValue: null,
|
|
346
368
|
onOpen: () => setVisibleMonth(parseDateValue(value(), dateConfig())),
|
|
347
369
|
get wide() {
|
|
348
370
|
return Boolean(props.presets?.length);
|
|
349
371
|
},
|
|
350
|
-
children: close => _$ssr(_tmpl$
|
|
372
|
+
children: close => _$ssr(_tmpl$18, _$escape(_$createComponent(PresetRail, {
|
|
351
373
|
get presets() {
|
|
352
374
|
return props.presets;
|
|
353
375
|
},
|
|
@@ -371,6 +393,7 @@ export function DatePicker(props) {
|
|
|
371
393
|
});
|
|
372
394
|
}
|
|
373
395
|
export function DateTimePicker(props) {
|
|
396
|
+
const messages = useUiMessages();
|
|
374
397
|
const value = () => resolveMaybeAccessor(props.value);
|
|
375
398
|
const dateConfig = useDateConfigLocale(() => props.dateConfig);
|
|
376
399
|
const parts = () => splitDateTime(value(), dateConfig());
|
|
@@ -388,6 +411,9 @@ export function DateTimePicker(props) {
|
|
|
388
411
|
owner: props,
|
|
389
412
|
icon: "ti ti-calendar-time",
|
|
390
413
|
valueLabel: valueLabel,
|
|
414
|
+
get valueContent() {
|
|
415
|
+
return props.renderValue ? () => props.renderValue(value()) : undefined;
|
|
416
|
+
},
|
|
391
417
|
clearValue: null,
|
|
392
418
|
get timezone() {
|
|
393
419
|
return dateConfig().timeZone;
|
|
@@ -396,7 +422,7 @@ export function DateTimePicker(props) {
|
|
|
396
422
|
get wide() {
|
|
397
423
|
return Boolean(props.presets?.length);
|
|
398
424
|
},
|
|
399
|
-
children: close => [_$ssr(_tmpl$
|
|
425
|
+
children: close => [_$ssr(_tmpl$18, _$escape(_$createComponent(PresetRail, {
|
|
400
426
|
get presets() {
|
|
401
427
|
return props.presets;
|
|
402
428
|
},
|
|
@@ -416,12 +442,12 @@ export function DateTimePicker(props) {
|
|
|
416
442
|
get dateConfig() {
|
|
417
443
|
return dateConfig();
|
|
418
444
|
}
|
|
419
|
-
}))), _$ssr(_tmpl$
|
|
445
|
+
}))), _$ssr(_tmpl$19, _$escape(_$createComponent(TimeInput, {
|
|
420
446
|
get time() {
|
|
421
447
|
return draftTime();
|
|
422
448
|
},
|
|
423
449
|
onChange: setDraftTime
|
|
424
|
-
})), _$ssrAttribute("disabled", !draftDate() || !isCompleteTime(draftTime()), true))]
|
|
450
|
+
})), _$ssrAttribute("disabled", !draftDate() || !isCompleteTime(draftTime()), true), _$escape(messages().apply))]
|
|
425
451
|
});
|
|
426
452
|
}
|
|
427
453
|
export function DateRangePicker(props) {
|
|
@@ -466,7 +492,7 @@ export function DateRangePicker(props) {
|
|
|
466
492
|
};
|
|
467
493
|
const valueContent = () => {
|
|
468
494
|
const format = withTime() ? formatDateTimeValue : displayDate;
|
|
469
|
-
return _$ssr(_tmpl$
|
|
495
|
+
return _$ssr(_tmpl$20, value().start ? _$escape(format(value().start, dateConfig())) : _$escape(messages().start), value().end ? _$escape(format(value().end, dateConfig())) : "End");
|
|
470
496
|
};
|
|
471
497
|
const selectDate = value => {
|
|
472
498
|
const current = draftRange();
|
|
@@ -542,14 +568,14 @@ export function DateRangePicker(props) {
|
|
|
542
568
|
return durationLabel();
|
|
543
569
|
},
|
|
544
570
|
get children() {
|
|
545
|
-
return _$ssr(_tmpl$
|
|
571
|
+
return _$ssr(_tmpl$21, _$escape(durationLabel()));
|
|
546
572
|
}
|
|
547
573
|
}),
|
|
548
574
|
onOpen: syncDraft,
|
|
549
575
|
get wide() {
|
|
550
576
|
return Boolean(props.datePresets?.length || props.presets?.length);
|
|
551
577
|
},
|
|
552
|
-
children: close => [_$ssr(_tmpl$
|
|
578
|
+
children: close => [_$ssr(_tmpl$18, _$escape(_$createComponent(Show, {
|
|
553
579
|
get when() {
|
|
554
580
|
return props.datePresets?.length;
|
|
555
581
|
},
|
|
@@ -599,7 +625,7 @@ export function DateRangePicker(props) {
|
|
|
599
625
|
return withTime();
|
|
600
626
|
},
|
|
601
627
|
get children() {
|
|
602
|
-
return _$ssr(_tmpl$
|
|
628
|
+
return _$ssr(_tmpl$22, _$escape(_$createComponent(TimeInput, {
|
|
603
629
|
get label() {
|
|
604
630
|
return messages().start;
|
|
605
631
|
},
|
|
@@ -617,19 +643,19 @@ export function DateRangePicker(props) {
|
|
|
617
643
|
onChange: setEndTime
|
|
618
644
|
})));
|
|
619
645
|
}
|
|
620
|
-
}), _$ssr(_tmpl$
|
|
646
|
+
}), _$ssr(_tmpl$19, _$escape(_$createComponent(Show, {
|
|
621
647
|
get when() {
|
|
622
648
|
return _$memo(() => !!withTime())() && props.durationPresets?.length;
|
|
623
649
|
},
|
|
624
650
|
get children() {
|
|
625
|
-
return _$ssr(_tmpl$
|
|
651
|
+
return _$ssr(_tmpl$23, _$ssrAttribute("aria-label", _$escape(messages().durationPresets, true), false), _$escape(_$createComponent(For, {
|
|
626
652
|
get each() {
|
|
627
653
|
return props.durationPresets;
|
|
628
654
|
},
|
|
629
|
-
children: preset => _$ssr(_tmpl$
|
|
655
|
+
children: preset => _$ssr(_tmpl$13, _$ssrAttribute("aria-pressed", _$escape(durationMinutes(), true) === _$escape(preset.minutes, true), false), _$escape(preset.label))
|
|
630
656
|
})));
|
|
631
657
|
}
|
|
632
|
-
})), _$ssrAttribute("disabled", Boolean(draftRange().start) !== Boolean(draftRange().end) || Boolean(withTime() && draftRange().start && draftRange().end && (!isCompleteTime(startTime()) || !isCompleteTime(endTime()))), true))]
|
|
658
|
+
})), _$ssrAttribute("disabled", Boolean(draftRange().start) !== Boolean(draftRange().end) || Boolean(withTime() && draftRange().start && draftRange().end && (!isCompleteTime(startTime()) || !isCompleteTime(endTime()))), true), _$escape(messages().apply))]
|
|
633
659
|
});
|
|
634
660
|
}
|
|
635
661
|
//# sourceMappingURL=DatePicker.js.map
|