@k2b/ui 0.3.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. package/dist/browser/actions/index.js +2 -2
  2. package/dist/browser/actions/index.js.map +1 -1
  3. package/dist/browser/chat/ChatComposer.js +1 -1
  4. package/dist/browser/chat/ChatComposer.js.map +1 -1
  5. package/dist/browser/chat/ChatContextPopup.js.map +1 -1
  6. package/dist/browser/chat/ChatPrimitives.js +2 -2
  7. package/dist/browser/chat/ChatPrimitives.js.map +1 -1
  8. package/dist/browser/chat/ChatTasks.js +1 -1
  9. package/dist/browser/chat/ChatTasks.js.map +1 -1
  10. package/dist/browser/chat/ChatTimeline.js +1 -1
  11. package/dist/browser/chat/ChatTimeline.js.map +1 -1
  12. package/dist/browser/chat/composer-document.js.map +1 -1
  13. package/dist/browser/chat/index.js.map +1 -1
  14. package/dist/browser/content/Chart.js +3 -3
  15. package/dist/browser/content/Chart.js.map +1 -1
  16. package/dist/browser/content/ChartExplorer.js +4 -4
  17. package/dist/browser/content/ChartExplorer.js.map +1 -1
  18. package/dist/browser/content/ChartExplorerControls.js +1 -1
  19. package/dist/browser/content/ChartExplorerControls.js.map +1 -1
  20. package/dist/browser/content/ChartFilterControls.js +2 -2
  21. package/dist/browser/content/ChartFilterControls.js.map +1 -1
  22. package/dist/browser/content/ChartSnapshotView.js +2 -1
  23. package/dist/browser/content/ChartSnapshotView.js.map +1 -1
  24. package/dist/browser/content/FileView.js +7 -3
  25. package/dist/browser/content/FileView.js.map +1 -1
  26. package/dist/browser/content/MarkdownView.js.map +1 -1
  27. package/dist/browser/content/Pagination.js.map +1 -1
  28. package/dist/browser/content/chart-explorer.js.map +1 -1
  29. package/dist/browser/content/chart-inspection.js.map +1 -1
  30. package/dist/browser/content/chart-line-gaps.js.map +1 -1
  31. package/dist/browser/content/chart-snapshot.js.map +1 -1
  32. package/dist/browser/content/file-view-preview.js.map +1 -1
  33. package/dist/browser/content/index.js +9 -9
  34. package/dist/browser/content/index.js.map +1 -1
  35. package/dist/browser/feedback/toast.js.map +1 -1
  36. package/dist/browser/inputs/ChoiceGroups.js.map +1 -1
  37. package/dist/browser/inputs/NumberInput.js +9 -1
  38. package/dist/browser/inputs/NumberInput.js.map +1 -1
  39. package/dist/browser/inputs/Select.js.map +1 -1
  40. package/dist/browser/inputs/markdown/behaviors.js +1 -1
  41. package/dist/browser/inputs/markdown/behaviors.js.map +1 -1
  42. package/dist/browser/layout/AppWorkspace.js +264 -248
  43. package/dist/browser/layout/AppWorkspace.js.map +1 -1
  44. package/dist/browser/layout/DetailPanel.js +1 -1
  45. package/dist/browser/layout/DetailPanel.js.map +1 -1
  46. package/dist/browser/layout/ScrollArea.js.map +1 -1
  47. package/dist/browser/layout/SidebarItemPreview.js +1 -1
  48. package/dist/browser/layout/SidebarItemPreview.js.map +1 -1
  49. package/dist/browser/layout/app-workspace-controller.js +1 -1
  50. package/dist/browser/layout/app-workspace-controller.js.map +1 -1
  51. package/dist/browser/layout/app-workspace-state.js.map +1 -1
  52. package/dist/browser/layout/index.js +3 -3
  53. package/dist/browser/layout/index.js.map +1 -1
  54. package/dist/ssr/actions/index.js +2 -2
  55. package/dist/ssr/actions/index.js.map +1 -1
  56. package/dist/ssr/chat/ChatComposer.js +1 -1
  57. package/dist/ssr/chat/ChatComposer.js.map +1 -1
  58. package/dist/ssr/chat/ChatContextPopup.js.map +1 -1
  59. package/dist/ssr/chat/ChatPrimitives.js +2 -2
  60. package/dist/ssr/chat/ChatPrimitives.js.map +1 -1
  61. package/dist/ssr/chat/ChatTasks.js +1 -1
  62. package/dist/ssr/chat/ChatTasks.js.map +1 -1
  63. package/dist/ssr/chat/ChatTimeline.js +1 -1
  64. package/dist/ssr/chat/ChatTimeline.js.map +1 -1
  65. package/dist/ssr/chat/composer-document.js.map +1 -1
  66. package/dist/ssr/chat/index.js.map +1 -1
  67. package/dist/ssr/content/Chart.js +3 -3
  68. package/dist/ssr/content/Chart.js.map +1 -1
  69. package/dist/ssr/content/ChartExplorer.js +4 -4
  70. package/dist/ssr/content/ChartExplorer.js.map +1 -1
  71. package/dist/ssr/content/ChartExplorerControls.js +1 -1
  72. package/dist/ssr/content/ChartExplorerControls.js.map +1 -1
  73. package/dist/ssr/content/ChartFilterControls.js +2 -2
  74. package/dist/ssr/content/ChartFilterControls.js.map +1 -1
  75. package/dist/ssr/content/ChartSnapshotView.js +2 -1
  76. package/dist/ssr/content/ChartSnapshotView.js.map +1 -1
  77. package/dist/ssr/content/FileView.js +7 -3
  78. package/dist/ssr/content/FileView.js.map +1 -1
  79. package/dist/ssr/content/MarkdownView.js.map +1 -1
  80. package/dist/ssr/content/Pagination.js.map +1 -1
  81. package/dist/ssr/content/chart-explorer.js.map +1 -1
  82. package/dist/ssr/content/chart-inspection.js.map +1 -1
  83. package/dist/ssr/content/chart-line-gaps.js.map +1 -1
  84. package/dist/ssr/content/chart-snapshot.js.map +1 -1
  85. package/dist/ssr/content/file-view-preview.js.map +1 -1
  86. package/dist/ssr/content/index.js +9 -9
  87. package/dist/ssr/content/index.js.map +1 -1
  88. package/dist/ssr/feedback/toast.js.map +1 -1
  89. package/dist/ssr/inputs/ChoiceGroups.js.map +1 -1
  90. package/dist/ssr/inputs/NumberInput.js +9 -1
  91. package/dist/ssr/inputs/NumberInput.js.map +1 -1
  92. package/dist/ssr/inputs/Select.js.map +1 -1
  93. package/dist/ssr/inputs/markdown/behaviors.js +1 -1
  94. package/dist/ssr/inputs/markdown/behaviors.js.map +1 -1
  95. package/dist/ssr/layout/AppWorkspace.js +74 -62
  96. package/dist/ssr/layout/AppWorkspace.js.map +1 -1
  97. package/dist/ssr/layout/DetailPanel.js +1 -1
  98. package/dist/ssr/layout/DetailPanel.js.map +1 -1
  99. package/dist/ssr/layout/ScrollArea.js.map +1 -1
  100. package/dist/ssr/layout/SidebarItemPreview.js +1 -1
  101. package/dist/ssr/layout/SidebarItemPreview.js.map +1 -1
  102. package/dist/ssr/layout/app-workspace-controller.js +1 -1
  103. package/dist/ssr/layout/app-workspace-controller.js.map +1 -1
  104. package/dist/ssr/layout/app-workspace-state.js.map +1 -1
  105. package/dist/ssr/layout/index.js +3 -3
  106. package/dist/ssr/layout/index.js.map +1 -1
  107. package/dist/styles.css +1 -1
  108. package/dist/types/actions/index.d.ts +4 -4
  109. package/dist/types/chat/ChatComposer.d.ts +1 -1
  110. package/dist/types/chat/index.d.ts +1 -1
  111. package/dist/types/content/Chart.d.ts +2 -2
  112. package/dist/types/content/ChartExplorer.d.ts +2 -2
  113. package/dist/types/content/ChartExplorerControls.d.ts +1 -1
  114. package/dist/types/content/ChartSnapshotView.d.ts +1 -1
  115. package/dist/types/content/chart-inspection.d.ts +1 -1
  116. package/dist/types/content/index.d.ts +15 -15
  117. package/dist/types/inputs/NumberInput.d.ts +2 -0
  118. package/dist/types/layout/AppWorkspace.d.ts +1 -1
  119. package/dist/types/layout/SidebarItemPreview.d.ts +1 -1
  120. package/dist/types/layout/index.d.ts +3 -3
  121. package/package.json +2 -4
@@ -1 +1 @@
1
- {"version":3,"names":["getK2bPortalRoot","DEFAULT_DURATION_MS","MAX_VISIBLE_TOASTS","ANIMATION_MS","K2B_TOAST_CONTAINER_ID","CONTAINER_ATTRIBUTE","VARIANT_STYLES","default","tone","iconClass","defaultTitle","success","error","normalizedIconClass","tokens","split","filter","Boolean","token","join","applyIconClass","icon","className","applyLiveRegion","element","variant","isError","setAttribute","liveToasts","Set","ensureContainer","document","root","container","querySelector","createElement","id","style","cssText","appendChild","promoteToTopLayer","showPopover","isConnected","active","matches","next","cloneNode","firstChild","parentElement","remove","removeAttribute","hideEmptyContainers","Array","from","querySelectorAll","childElementCount","hidePopover","renderLead","lead","iconClassOverride","replaceChildren","dataset","showToast","description","options","initialContainer","noop","dismiss","update","dismissed","dismissTimer","currentVariant","currentProgress","progress","currentDuration","duration","remainingDuration","timerStartedAt","pausedByPointer","pausedByFocus","toastElement","k2bToast","leadElement","leadIconElement","contentElement","titleElement","textContent","title","descriptionElement","append","closeButton","type","dismissLabel","closeIcon","clearDismissTimer","clearTimeout","pauseDismissTimer","Math","max","Date","now","resumeDismissTimer","setTimeout","resetDismissTimer","delete","handle","closing","progressElement","renderProgress","hidden","value","Number","isFinite","min","actionElement","renderAction","action","link","href","button","label","addEventListener","event","stopPropagation","onClick","nextDescription","nextOptions","variantChanged","undefined","Object","prototype","hasOwnProperty","call","contains","relatedTarget","add","size","values","requestAnimationFrame","open","isPointInsideToast","x","y","containers","child","children","rect","getBoundingClientRect","left","right","top","bottom","toastFn","dismissAll","toast"],"sources":["feedback/toast.ts"],"sourcesContent":["import { getK2bPortalRoot } from \"../internal/portal\";\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 defaultTitle: string;\n};\n\nconst VARIANT_STYLES: Record<ToastVariant, VariantStyle> = {\n default: {\n tone: \"info\",\n iconClass: \"ti-info-circle\",\n defaultTitle: \"Info\",\n },\n success: {\n tone: \"success\",\n iconClass: \"ti-check\",\n defaultTitle: \"Success\",\n },\n error: {\n tone: \"danger\",\n iconClass: \"ti-x\",\n defaultTitle: \"Error\",\n },\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\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 container.style.cssText =\n \"position:fixed;top:auto;left:auto;bottom:env(safe-area-inset-bottom,0px);right:env(safe-area-inset-right,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 ?? VARIANT_STYLES[currentVariant].defaultTitle;\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 ?? \"Dismiss notification\");\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) 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\") 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 = VARIANT_STYLES[currentVariant].defaultTitle;\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\", () => { if (currentProgress === null) dismiss(); });\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":["getK2bPortalRoot","DEFAULT_DURATION_MS","MAX_VISIBLE_TOASTS","ANIMATION_MS","K2B_TOAST_CONTAINER_ID","CONTAINER_ATTRIBUTE","VARIANT_STYLES","default","tone","iconClass","defaultTitle","success","error","normalizedIconClass","tokens","split","filter","Boolean","token","join","applyIconClass","icon","className","applyLiveRegion","element","variant","isError","setAttribute","liveToasts","Set","ensureContainer","document","root","container","querySelector","createElement","id","style","cssText","appendChild","promoteToTopLayer","showPopover","isConnected","active","matches","next","cloneNode","firstChild","parentElement","remove","removeAttribute","hideEmptyContainers","Array","from","querySelectorAll","childElementCount","hidePopover","renderLead","lead","iconClassOverride","replaceChildren","dataset","showToast","description","options","initialContainer","noop","dismiss","update","dismissed","dismissTimer","currentVariant","currentProgress","progress","currentDuration","duration","remainingDuration","timerStartedAt","pausedByPointer","pausedByFocus","toastElement","k2bToast","leadElement","leadIconElement","contentElement","titleElement","textContent","title","descriptionElement","append","closeButton","type","dismissLabel","closeIcon","clearDismissTimer","clearTimeout","pauseDismissTimer","Math","max","Date","now","resumeDismissTimer","setTimeout","resetDismissTimer","delete","handle","closing","progressElement","renderProgress","hidden","value","Number","isFinite","min","actionElement","renderAction","action","link","href","button","label","addEventListener","event","stopPropagation","onClick","nextDescription","nextOptions","variantChanged","undefined","Object","prototype","hasOwnProperty","call","contains","relatedTarget","add","size","values","requestAnimationFrame","open","isPointInsideToast","x","y","containers","child","children","rect","getBoundingClientRect","left","right","top","bottom","toastFn","dismissAll","toast"],"sources":["feedback/toast.ts"],"sourcesContent":["import { getK2bPortalRoot } from \"../internal/portal\";\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 defaultTitle: string;\n};\n\nconst VARIANT_STYLES: Record<ToastVariant, VariantStyle> = {\n default: {\n tone: \"info\",\n iconClass: \"ti-info-circle\",\n defaultTitle: \"Info\",\n },\n success: {\n tone: \"success\",\n iconClass: \"ti-check\",\n defaultTitle: \"Success\",\n },\n error: {\n tone: \"danger\",\n iconClass: \"ti-x\",\n defaultTitle: \"Error\",\n },\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\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 container.style.cssText =\n \"position:fixed;top:auto;left:auto;bottom:env(safe-area-inset-bottom,0px);right:env(safe-area-inset-right,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 ?? VARIANT_STYLES[currentVariant].defaultTitle;\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 ?? \"Dismiss notification\");\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 = VARIANT_STYLES[currentVariant].defaultTitle;\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 +1 @@
1
- {"version":3,"names":["createEffect","createSignal","For","onCleanup","onMount","Show","ChoiceGroups","props","viewport","buttons","dragOffset","scrollbar","setScrollbar","overflow","left","width","syncScrollbar","clientWidth","scrollLeft","scrollWidth","Math","min","max","choose","index","focus","choice","choices","onValueChange","value","queueMicrotask","scrollIntoView","block","inline","move","direction","length","focusEdge","last","scrollFromPointer","event","track","currentTarget","rect","getBoundingClientRect","available","thumbLeft","clientX","startScrollbarDrag","preventDefault","current","target","setPointerCapture","pointerId","observer","ResizeObserver","observe","disconnect","map","label","join","_el$","_$getNextElement","_tmpl$2","_el$2","firstChild","_el$5","nextSibling","_el$6","_co$","_$getNextMarker","$$focusin","addEventListener","_ref$","_$use","_$insert","_$createComponent","each","children","group","_el$7","_tmpl$3","$$keydown","key","$$click","element","_$effect","_p$","_v$3","_v$4","controls","_v$5","e","_$setAttribute","t","a","undefined","_$runHydrationEvents","when","_el$3","_tmpl$","_el$4","releasePointerCapture","$$pointerup","$$pointermove","hasPointerCapture","$$pointerdown","_v$","_v$2","_$setStyleProperty","ariaLabel","_$delegateEvents"],"sources":["inputs/ChoiceGroups.tsx"],"sourcesContent":["import { createEffect, createSignal, For, type JSX, onCleanup, onMount, Show } from \"solid-js\";\n\ntype ChoiceGroup = { value: string | null; label: string };\n\nexport function ChoiceGroups(props: {\n choices: readonly ChoiceGroup[];\n value: string | null;\n onValueChange: (value: string | null) => void;\n ariaLabel: string;\n controls: string;\n}): JSX.Element {\n let viewport: HTMLDivElement | undefined;\n let buttons: HTMLButtonElement[] = [];\n let dragOffset = 0;\n const [scrollbar, setScrollbar] = createSignal({ overflow: false, left: 0, width: 0 });\n\n const syncScrollbar = () => {\n if (!viewport) return;\n const { clientWidth, scrollLeft, scrollWidth } = viewport;\n if (clientWidth <= 0 || scrollWidth <= clientWidth) {\n setScrollbar({ overflow: false, left: 0, width: 0 });\n return;\n }\n const width = Math.min(clientWidth, Math.max(24, (clientWidth * clientWidth) / scrollWidth));\n const left = (scrollLeft / (scrollWidth - clientWidth)) * (clientWidth - width);\n setScrollbar({ overflow: true, left, width });\n };\n\n const choose = (index: number, focus = false) => {\n const choice = props.choices[index];\n if (!choice) return;\n props.onValueChange(choice.value);\n if (!focus) return;\n queueMicrotask(() => {\n buttons[index]?.focus();\n buttons[index]?.scrollIntoView({ block: \"nearest\", inline: \"nearest\" });\n });\n };\n const move = (index: number, direction: 1 | -1) =>\n choose((index + direction + props.choices.length) % props.choices.length, true);\n const focusEdge = (last: boolean) => choose(last ? props.choices.length - 1 : 0, true);\n\n const scrollFromPointer = (event: PointerEvent & { currentTarget: HTMLDivElement }) => {\n if (!viewport) return;\n const track = event.currentTarget;\n const { width } = scrollbar();\n const rect = track.getBoundingClientRect();\n const available = Math.max(1, rect.width - width);\n const thumbLeft = Math.min(available, Math.max(0, event.clientX - rect.left - dragOffset));\n viewport.scrollLeft = (thumbLeft / available) * (viewport.scrollWidth - viewport.clientWidth);\n syncScrollbar();\n };\n const startScrollbarDrag = (event: PointerEvent & { currentTarget: HTMLDivElement }) => {\n event.preventDefault();\n const track = event.currentTarget;\n const current = scrollbar();\n dragOffset =\n event.target === track\n ? current.width / 2\n : Math.min(current.width, Math.max(0, event.clientX - track.getBoundingClientRect().left - current.left));\n track.setPointerCapture(event.pointerId);\n scrollFromPointer(event);\n };\n\n onMount(() => {\n syncScrollbar();\n const observer = typeof ResizeObserver === \"undefined\" ? null : new ResizeObserver(syncScrollbar);\n if (viewport) observer?.observe(viewport);\n onCleanup(() => observer?.disconnect());\n });\n createEffect(() => {\n props.choices.map((choice) => `${choice.value ?? \"\"}:${choice.label}`).join(\"|\");\n queueMicrotask(syncScrollbar);\n });\n\n return (\n <div class=\"k2b-choice-groups-shell\" onPointerEnter={syncScrollbar} onFocusIn={syncScrollbar}>\n <div\n ref={viewport}\n class=\"k2b-choice-groups\"\n role=\"radiogroup\"\n aria-label={props.ariaLabel}\n onScroll={syncScrollbar}\n >\n <For each={props.choices}>\n {(group, index) => (\n <button\n ref={(element) => (buttons[index()] = element)}\n type=\"button\"\n role=\"radio\"\n aria-checked={props.value === group.value}\n aria-controls={props.controls}\n tabIndex={props.value === group.value ? 0 : -1}\n onClick={() => choose(index())}\n onKeyDown={(event) => {\n if (event.key === \"ArrowRight\" || event.key === \"ArrowDown\") {\n event.preventDefault();\n move(index(), 1);\n } else if (event.key === \"ArrowLeft\" || event.key === \"ArrowUp\") {\n event.preventDefault();\n move(index(), -1);\n } else if (event.key === \"Home\" || event.key === \"End\") {\n event.preventDefault();\n focusEdge(event.key === \"End\");\n }\n }}\n >\n {group.label}\n </button>\n )}\n </For>\n </div>\n <Show when={scrollbar().overflow}>\n <div\n class=\"k2b-choice-groups-scrollbar\"\n aria-hidden=\"true\"\n onPointerDown={startScrollbarDrag}\n onPointerMove={(event) => {\n if (event.currentTarget.hasPointerCapture(event.pointerId)) scrollFromPointer(event);\n }}\n onPointerUp={(event) => event.currentTarget.releasePointerCapture(event.pointerId)}\n onPointerCancel={(event) => event.currentTarget.releasePointerCapture(event.pointerId)}\n >\n <span\n style={{\n \"--k2b-choice-scroll-left\": `${scrollbar().left}px`,\n \"--k2b-choice-scroll-width\": `${scrollbar().width}px`,\n }}\n />\n </div>\n </Show>\n </div>\n );\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["createEffect","createSignal","For","onCleanup","onMount","Show","ChoiceGroups","props","viewport","buttons","dragOffset","scrollbar","setScrollbar","overflow","left","width","syncScrollbar","clientWidth","scrollLeft","scrollWidth","Math","min","max","choose","index","focus","choice","choices","onValueChange","value","queueMicrotask","scrollIntoView","block","inline","move","direction","length","focusEdge","last","scrollFromPointer","event","track","currentTarget","rect","getBoundingClientRect","available","thumbLeft","clientX","startScrollbarDrag","preventDefault","current","target","setPointerCapture","pointerId","observer","ResizeObserver","observe","disconnect","map","label","join","_el$","_$getNextElement","_tmpl$2","_el$2","firstChild","_el$5","nextSibling","_el$6","_co$","_$getNextMarker","$$focusin","addEventListener","_ref$","_$use","_$insert","_$createComponent","each","children","group","_el$7","_tmpl$3","$$keydown","key","$$click","element","_$effect","_p$","_v$3","_v$4","controls","_v$5","e","_$setAttribute","t","a","undefined","_$runHydrationEvents","when","_el$3","_tmpl$","_el$4","releasePointerCapture","$$pointerup","$$pointermove","hasPointerCapture","$$pointerdown","_v$","_v$2","_$setStyleProperty","ariaLabel","_$delegateEvents"],"sources":["inputs/ChoiceGroups.tsx"],"sourcesContent":["import { createEffect, createSignal, For, type JSX, onCleanup, onMount, Show } from \"solid-js\";\n\ntype ChoiceGroup = { value: string | null; label: string };\n\nexport function ChoiceGroups(props: {\n choices: readonly ChoiceGroup[];\n value: string | null;\n onValueChange: (value: string | null) => void;\n ariaLabel: string;\n controls: string;\n}): JSX.Element {\n let viewport: HTMLDivElement | undefined;\n let buttons: HTMLButtonElement[] = [];\n let dragOffset = 0;\n const [scrollbar, setScrollbar] = createSignal({ overflow: false, left: 0, width: 0 });\n\n const syncScrollbar = () => {\n if (!viewport) return;\n const { clientWidth, scrollLeft, scrollWidth } = viewport;\n if (clientWidth <= 0 || scrollWidth <= clientWidth) {\n setScrollbar({ overflow: false, left: 0, width: 0 });\n return;\n }\n const width = Math.min(clientWidth, Math.max(24, (clientWidth * clientWidth) / scrollWidth));\n const left = (scrollLeft / (scrollWidth - clientWidth)) * (clientWidth - width);\n setScrollbar({ overflow: true, left, width });\n };\n\n const choose = (index: number, focus = false) => {\n const choice = props.choices[index];\n if (!choice) return;\n props.onValueChange(choice.value);\n if (!focus) return;\n queueMicrotask(() => {\n buttons[index]?.focus();\n buttons[index]?.scrollIntoView({ block: \"nearest\", inline: \"nearest\" });\n });\n };\n const move = (index: number, direction: 1 | -1) => choose((index + direction + props.choices.length) % props.choices.length, true);\n const focusEdge = (last: boolean) => choose(last ? props.choices.length - 1 : 0, true);\n\n const scrollFromPointer = (event: PointerEvent & { currentTarget: HTMLDivElement }) => {\n if (!viewport) return;\n const track = event.currentTarget;\n const { width } = scrollbar();\n const rect = track.getBoundingClientRect();\n const available = Math.max(1, rect.width - width);\n const thumbLeft = Math.min(available, Math.max(0, event.clientX - rect.left - dragOffset));\n viewport.scrollLeft = (thumbLeft / available) * (viewport.scrollWidth - viewport.clientWidth);\n syncScrollbar();\n };\n const startScrollbarDrag = (event: PointerEvent & { currentTarget: HTMLDivElement }) => {\n event.preventDefault();\n const track = event.currentTarget;\n const current = scrollbar();\n dragOffset =\n event.target === track\n ? current.width / 2\n : Math.min(current.width, Math.max(0, event.clientX - track.getBoundingClientRect().left - current.left));\n track.setPointerCapture(event.pointerId);\n scrollFromPointer(event);\n };\n\n onMount(() => {\n syncScrollbar();\n const observer = typeof ResizeObserver === \"undefined\" ? null : new ResizeObserver(syncScrollbar);\n if (viewport) observer?.observe(viewport);\n onCleanup(() => observer?.disconnect());\n });\n createEffect(() => {\n props.choices.map((choice) => `${choice.value ?? \"\"}:${choice.label}`).join(\"|\");\n queueMicrotask(syncScrollbar);\n });\n\n return (\n <div class=\"k2b-choice-groups-shell\" onPointerEnter={syncScrollbar} onFocusIn={syncScrollbar}>\n <div ref={viewport} class=\"k2b-choice-groups\" role=\"radiogroup\" aria-label={props.ariaLabel} onScroll={syncScrollbar}>\n <For each={props.choices}>\n {(group, index) => (\n <button\n ref={(element) => (buttons[index()] = element)}\n type=\"button\"\n role=\"radio\"\n aria-checked={props.value === group.value}\n aria-controls={props.controls}\n tabIndex={props.value === group.value ? 0 : -1}\n onClick={() => choose(index())}\n onKeyDown={(event) => {\n if (event.key === \"ArrowRight\" || event.key === \"ArrowDown\") {\n event.preventDefault();\n move(index(), 1);\n } else if (event.key === \"ArrowLeft\" || event.key === \"ArrowUp\") {\n event.preventDefault();\n move(index(), -1);\n } else if (event.key === \"Home\" || event.key === \"End\") {\n event.preventDefault();\n focusEdge(event.key === \"End\");\n }\n }}\n >\n {group.label}\n </button>\n )}\n </For>\n </div>\n <Show when={scrollbar().overflow}>\n <div\n class=\"k2b-choice-groups-scrollbar\"\n aria-hidden=\"true\"\n onPointerDown={startScrollbarDrag}\n onPointerMove={(event) => {\n if (event.currentTarget.hasPointerCapture(event.pointerId)) scrollFromPointer(event);\n }}\n onPointerUp={(event) => event.currentTarget.releasePointerCapture(event.pointerId)}\n onPointerCancel={(event) => event.currentTarget.releasePointerCapture(event.pointerId)}\n >\n <span\n style={{\n \"--k2b-choice-scroll-left\": `${scrollbar().left}px`,\n \"--k2b-choice-scroll-width\": `${scrollbar().width}px`,\n }}\n />\n </div>\n </Show>\n </div>\n );\n}\n"],"mappings":"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","ignoreList":[]}
@@ -23,6 +23,12 @@ import { createFieldMeta, Field, fieldControlAria } from "../internal/field";
23
23
  import { decimalSeparator, useLocale } from "../intl/locale";
24
24
  import { useUiMessages } from "../intl/messages";
25
25
  import { resolveMaybeAccessor } from "./field-contract";
26
+ function fractionDigits(value) {
27
+ if (!Number.isFinite(value)) return 0;
28
+ const [mantissa = "", exponent = "0"] = String(value).split("e");
29
+ const fraction = mantissa.split(".")[1]?.length ?? 0;
30
+ return Math.max(0, fraction - Number(exponent));
31
+ }
26
32
  export function NumberInput(props) {
27
33
  const [local, rest] = splitProps(props, ["activeIcon", "allowNegative", "aria-describedby", "aria-label", "class", "clearLabel", "clearable", "decimalPlaces", "decreaseLabel", "description", "disableSteppers", "error", "icon", "id", "increaseLabel", "label", "locale", "max", "min", "onClear", "onValueCommit", "onValueChange", "prefix", "required", "showSteppers", "step", "suffix", "value"]);
28
34
  const meta = createFieldMeta(local.id);
@@ -36,10 +42,12 @@ export function NumberInput(props) {
36
42
  // follows the effective locale; grouping is never rendered while editing.
37
43
  const display = value => value == null ? "" : String(value).replace(".", separator());
38
44
  const [raw, setRaw] = createSignal(display(value()));
39
- const places = () => Math.max(0, local.decimalPlaces ?? 0);
40
45
  const min = () => local.min ?? -Infinity;
41
46
  const max = () => local.max ?? Infinity;
42
47
  const step = () => local.step ?? 1;
48
+ // `step` and the accepted decimals never disagree: a fractional step implies
49
+ // its own precision unless the caller states `decimalPlaces` explicitly.
50
+ const places = () => Math.max(0, local.decimalPlaces ?? fractionDigits(step()));
43
51
  const filter = input => {
44
52
  let output = "";
45
53
  let decimal = false;
@@ -1 +1 @@
1
- {"version":3,"names":["createEffect","createMemo","createSignal","Show","splitProps","createFieldMeta","Field","fieldControlAria","decimalSeparator","useLocale","useUiMessages","resolveMaybeAccessor","NumberInput","props","local","rest","meta","id","focused","setFocused","value","error","contextLocale","messages","separator","locale","display","String","replace","raw","setRaw","places","Math","max","decimalPlaces","min","Infinity","step","filter","input","output","decimal","character","test","allowNegative","integer","fraction","split","slice","parse","canonical","number","Number","parseInt","isFinite","normalize","clamped","anchor","snapped","round","bounded","toFixed","emit","onValueChange","commit","changeAlreadyEmitted","next","Object","is","onValueCommit","stepBy","direction","disabled","disableSteppers","seed","_$createComponent","class","label","description","required","children","_el$","_$getNextElement","_tmpl$6","_el$18","firstChild","_el$19","_co$5","_$getNextMarker","nextSibling","_el$3","_el$1","_el$10","_co$","_el$11","_el$12","_co$2","_el$8","_el$13","_el$14","_co$3","_el$15","_el$16","_co$4","_el$20","_el$21","_co$6","_$insert","when","showSteppers","_el$2","_tmpl$","$$click","_$effect","_p$","_v$","decreaseLabel","decreaseValue","_v$2","undefined","e","_$setAttribute","t","_$setProperty","_$runHydrationEvents","icon","_el$4","_tmpl$2","_el$5","_el$6","_v$3","_v$4","activeIcon","_$className","prefix","_el$7","_tmpl$3","_$spread","_$mergeProps","controlId","data-filled","inputmode","aria-valuemin","_$memo","aria-valuemax","aria-valuenow","onFocus","event","currentTarget","current","selectionStart","selectionEnd","setSelectionRange","length","onBlur","suffix","_el$9","clearable","readOnly","_el$0","_tmpl$4","onClear","clearLabel","clear","_el$17","_tmpl$5","_v$5","increaseLabel","increaseValue","_v$6","_v$7","_v$8","_$delegateEvents"],"sources":["inputs/NumberInput.tsx"],"sourcesContent":["import { createEffect, createMemo, createSignal, type JSX, Show, splitProps } from \"solid-js\";\nimport { createFieldMeta, Field, fieldControlAria } from \"../internal/field\";\nimport { decimalSeparator, useLocale } from \"../intl/locale\";\nimport { useUiMessages } from \"../intl/messages\";\nimport type { ValueFieldProps } from \"./field-contract\";\nimport { resolveMaybeAccessor } from \"./field-contract\";\n\nexport type NumberInputProps = Omit<\n JSX.InputHTMLAttributes<HTMLInputElement>,\n \"max\" | \"min\" | \"onChange\" | \"onInput\" | \"prefix\" | \"step\" | \"type\" | \"value\" | keyof ValueFieldProps<number | null>\n> &\n ValueFieldProps<number | null> & {\n max?: number;\n min?: number;\n step?: number;\n decimalPlaces?: number;\n allowNegative?: boolean;\n clearable?: boolean;\n onClear?: () => void;\n clearLabel?: string;\n increaseLabel?: string;\n decreaseLabel?: string;\n /** Explicit locale for the decimal separator; defaults to the inherited render locale. */\n locale?: string;\n showSteppers?: boolean;\n disableSteppers?: boolean;\n icon?: string;\n activeIcon?: string;\n prefix?: JSX.Element;\n suffix?: JSX.Element;\n };\n\nexport function NumberInput(props: NumberInputProps): JSX.Element {\n const [local, rest] = splitProps(props, [\n \"activeIcon\",\n \"allowNegative\",\n \"aria-describedby\",\n \"aria-label\",\n \"class\",\n \"clearLabel\",\n \"clearable\",\n \"decimalPlaces\",\n \"decreaseLabel\",\n \"description\",\n \"disableSteppers\",\n \"error\",\n \"icon\",\n \"id\",\n \"increaseLabel\",\n \"label\",\n \"locale\",\n \"max\",\n \"min\",\n \"onClear\",\n \"onValueCommit\",\n \"onValueChange\",\n \"prefix\",\n \"required\",\n \"showSteppers\",\n \"step\",\n \"suffix\",\n \"value\",\n ]);\n const meta = createFieldMeta(local.id);\n const [focused, setFocused] = createSignal(false);\n const value = () => resolveMaybeAccessor(local.value);\n const error = () => resolveMaybeAccessor(local.error);\n const contextLocale = useLocale();\n const messages = useUiMessages();\n const separator = createMemo(() => decimalSeparator(local.locale ?? contextLocale()));\n // The visible text keeps the canonical number, only the decimal separator\n // follows the effective locale; grouping is never rendered while editing.\n const display = (value: number | null | undefined) => (value == null ? \"\" : String(value).replace(\".\", separator()));\n const [raw, setRaw] = createSignal(display(value()));\n const places = () => Math.max(0, local.decimalPlaces ?? 0);\n const min = () => local.min ?? -Infinity;\n const max = () => local.max ?? Infinity;\n const step = () => local.step ?? 1;\n\n const filter = (input: string) => {\n let output = \"\";\n let decimal = false;\n for (const character of input) {\n if (/\\d/.test(character)) output += character;\n else if (character === \"-\" && output === \"\" && (local.allowNegative ?? true)) output += character;\n else if ((character === \".\" || character === \",\" || character === separator()) && !decimal && places() > 0) {\n output += separator();\n decimal = true;\n }\n }\n if (decimal) {\n const [integer = \"\", fraction = \"\"] = output.split(separator());\n return `${integer}${separator()}${fraction.slice(0, places())}`;\n }\n return output;\n };\n const parse = (input: string) => {\n const canonical = input.replace(separator(), \".\");\n if (!canonical || canonical === \"-\" || canonical === \".\") return null;\n const number = places() === 0 ? Number.parseInt(canonical, 10) : Number(canonical);\n return Number.isFinite(number) ? number : null;\n };\n const normalize = (value: number | null) => {\n if (value === null) return null;\n const clamped = Math.max(min(), Math.min(max(), value));\n const anchor = Number.isFinite(min()) ? min() : 0;\n const snapped = step() > 0 ? Math.round((clamped - anchor) / step()) * step() + anchor : clamped;\n const bounded = Math.max(min(), Math.min(max(), snapped));\n return places() === 0 ? Math.round(bounded) : Number(bounded.toFixed(places()));\n };\n const emit = (value: number | null) => local.onValueChange?.(value);\n const commit = (value: number | null, changeAlreadyEmitted = false) => {\n const next = normalize(value);\n setRaw(display(next));\n if (!changeAlreadyEmitted || !Object.is(next, value)) emit(next);\n local.onValueCommit?.(next);\n };\n const stepBy = (direction: number) => {\n if (rest.disabled || local.disableSteppers) return;\n const seed = value() ?? (Number.isFinite(min()) ? min() : 0);\n commit(seed + direction * step());\n };\n\n createEffect(() => {\n if (focused()) return;\n if (parse(raw()) !== value()) setRaw(display(value()));\n });\n\n return (\n <Field\n class={local.class}\n label={local.label}\n description={local.description}\n error={error()}\n meta={meta}\n required={local.required}\n disabled={rest.disabled}\n >\n <div\n class=\"k2b-input-shell k2b-number-input\"\n data-disabled={rest.disabled ? \"true\" : undefined}\n data-invalid={error() ? \"true\" : undefined}\n >\n <Show when={local.showSteppers ?? true}>\n <button\n type=\"button\"\n class=\"k2b-number-input__step\"\n aria-label={local.decreaseLabel ?? messages().decreaseValue}\n disabled={rest.disabled || local.disableSteppers || (value() !== null && value() !== undefined && value()! <= min())}\n onClick={() => stepBy(-1)}\n >\n <i class=\"ti ti-minus\" aria-hidden=\"true\" />\n </button>\n </Show>\n <div class=\"k2b-number-input__value\">\n <Show when={local.icon}>\n <span class=\"k2b-input-shell__icon k2b-text-input__icon\" aria-hidden=\"true\">\n <i class={local.icon} />\n <i class={local.activeIcon ?? local.icon} />\n </span>\n </Show>\n <Show when={local.prefix}>\n <span class=\"k2b-input-shell__affix\">{local.prefix}</span>\n </Show>\n <input\n {...rest}\n id={meta.controlId}\n class=\"k2b-input k2b-number-input__control\"\n data-filled={raw() ? \"true\" : undefined}\n type=\"text\"\n role=\"spinbutton\"\n inputmode={places() === 0 ? \"numeric\" : \"decimal\"}\n value={raw()}\n required={local.required}\n {...fieldControlAria(meta, local)}\n aria-valuemin={Number.isFinite(min()) ? min() : undefined}\n aria-valuemax={Number.isFinite(max()) ? max() : undefined}\n aria-valuenow={(focused() ? parse(raw()) : value()) ?? undefined}\n onFocus={() => setFocused(true)}\n onInput={(event) => {\n const input = event.currentTarget;\n const current = input.value;\n const selectionStart = input.selectionStart;\n const selectionEnd = input.selectionEnd;\n const next = filter(current);\n // Only write back when the filter actually dropped something —\n // re-assigning an unchanged value moves the caret to the end.\n if (current !== next) {\n input.value = next;\n if (selectionStart !== null && selectionEnd !== null) {\n input.setSelectionRange(filter(current.slice(0, selectionStart)).length, filter(current.slice(0, selectionEnd)).length);\n }\n }\n setRaw(next);\n emit(parse(next));\n }}\n onBlur={() => {\n commit(parse(raw()), true);\n setFocused(false);\n }}\n />\n <Show when={local.suffix}>\n <span class=\"k2b-input-shell__affix\">{local.suffix}</span>\n </Show>\n <Show when={local.clearable && raw() && !rest.disabled && !rest.readOnly}>\n <button\n type=\"button\"\n class=\"k2b-input-shell__clear k2b-input-clear-action\"\n aria-label={local.clearLabel ?? messages().clear}\n onClick={() => (local.onClear ? local.onClear() : commit(null))}\n >\n <i class=\"ti ti-x\" aria-hidden=\"true\" />\n </button>\n </Show>\n </div>\n <Show when={local.showSteppers ?? true}>\n <button\n type=\"button\"\n class=\"k2b-number-input__step\"\n aria-label={local.increaseLabel ?? messages().increaseValue}\n disabled={rest.disabled || local.disableSteppers || (value() !== null && value() !== undefined && value()! >= max())}\n onClick={() => stepBy(1)}\n >\n <i class=\"ti ti-plus\" aria-hidden=\"true\" />\n </button>\n </Show>\n </div>\n </Field>\n );\n}\n\nexport default NumberInput;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["createEffect","createMemo","createSignal","Show","splitProps","createFieldMeta","Field","fieldControlAria","decimalSeparator","useLocale","useUiMessages","resolveMaybeAccessor","fractionDigits","value","Number","isFinite","mantissa","exponent","String","split","fraction","length","Math","max","NumberInput","props","local","rest","meta","id","focused","setFocused","error","contextLocale","messages","separator","locale","display","replace","raw","setRaw","min","Infinity","step","places","decimalPlaces","filter","input","output","decimal","character","test","allowNegative","integer","slice","parse","canonical","number","parseInt","normalize","clamped","anchor","snapped","round","bounded","toFixed","emit","onValueChange","commit","changeAlreadyEmitted","next","Object","is","onValueCommit","stepBy","direction","disabled","disableSteppers","seed","_$createComponent","class","label","description","required","children","_el$","_$getNextElement","_tmpl$6","_el$18","firstChild","_el$19","_co$5","_$getNextMarker","nextSibling","_el$3","_el$1","_el$10","_co$","_el$11","_el$12","_co$2","_el$8","_el$13","_el$14","_co$3","_el$15","_el$16","_co$4","_el$20","_el$21","_co$6","_$insert","when","showSteppers","_el$2","_tmpl$","$$click","_$effect","_p$","_v$","decreaseLabel","decreaseValue","_v$2","undefined","e","_$setAttribute","t","_$setProperty","_$runHydrationEvents","icon","_el$4","_tmpl$2","_el$5","_el$6","_v$3","_v$4","activeIcon","_$className","prefix","_el$7","_tmpl$3","_$spread","_$mergeProps","controlId","data-filled","inputmode","aria-valuemin","_$memo","aria-valuemax","aria-valuenow","onFocus","event","currentTarget","current","selectionStart","selectionEnd","setSelectionRange","onBlur","suffix","_el$9","clearable","readOnly","_el$0","_tmpl$4","onClear","clearLabel","clear","_el$17","_tmpl$5","_v$5","increaseLabel","increaseValue","_v$6","_v$7","_v$8","_$delegateEvents"],"sources":["inputs/NumberInput.tsx"],"sourcesContent":["import { createEffect, createMemo, createSignal, type JSX, Show, splitProps } from \"solid-js\";\nimport { createFieldMeta, Field, fieldControlAria } from \"../internal/field\";\nimport { decimalSeparator, useLocale } from \"../intl/locale\";\nimport { useUiMessages } from \"../intl/messages\";\nimport type { ValueFieldProps } from \"./field-contract\";\nimport { resolveMaybeAccessor } from \"./field-contract\";\n\nexport type NumberInputProps = Omit<\n JSX.InputHTMLAttributes<HTMLInputElement>,\n \"max\" | \"min\" | \"onChange\" | \"onInput\" | \"prefix\" | \"step\" | \"type\" | \"value\" | keyof ValueFieldProps<number | null>\n> &\n ValueFieldProps<number | null> & {\n max?: number;\n min?: number;\n /** Stepper increment and commit grid; defaults to `1`. A fractional step also sets the default `decimalPlaces`. */\n step?: number;\n /** Accepted fraction digits. Defaults to the fraction digits of `step` (`0.01` → `2`, `1` → `0`); an explicit value wins. */\n decimalPlaces?: number;\n allowNegative?: boolean;\n clearable?: boolean;\n onClear?: () => void;\n clearLabel?: string;\n increaseLabel?: string;\n decreaseLabel?: string;\n /** Explicit locale for the decimal separator; defaults to the inherited render locale. */\n locale?: string;\n showSteppers?: boolean;\n disableSteppers?: boolean;\n icon?: string;\n activeIcon?: string;\n prefix?: JSX.Element;\n suffix?: JSX.Element;\n };\n\nfunction fractionDigits(value: number): number {\n if (!Number.isFinite(value)) return 0;\n const [mantissa = \"\", exponent = \"0\"] = String(value).split(\"e\");\n const fraction = mantissa.split(\".\")[1]?.length ?? 0;\n return Math.max(0, fraction - Number(exponent));\n}\n\nexport function NumberInput(props: NumberInputProps): JSX.Element {\n const [local, rest] = splitProps(props, [\n \"activeIcon\",\n \"allowNegative\",\n \"aria-describedby\",\n \"aria-label\",\n \"class\",\n \"clearLabel\",\n \"clearable\",\n \"decimalPlaces\",\n \"decreaseLabel\",\n \"description\",\n \"disableSteppers\",\n \"error\",\n \"icon\",\n \"id\",\n \"increaseLabel\",\n \"label\",\n \"locale\",\n \"max\",\n \"min\",\n \"onClear\",\n \"onValueCommit\",\n \"onValueChange\",\n \"prefix\",\n \"required\",\n \"showSteppers\",\n \"step\",\n \"suffix\",\n \"value\",\n ]);\n const meta = createFieldMeta(local.id);\n const [focused, setFocused] = createSignal(false);\n const value = () => resolveMaybeAccessor(local.value);\n const error = () => resolveMaybeAccessor(local.error);\n const contextLocale = useLocale();\n const messages = useUiMessages();\n const separator = createMemo(() => decimalSeparator(local.locale ?? contextLocale()));\n // The visible text keeps the canonical number, only the decimal separator\n // follows the effective locale; grouping is never rendered while editing.\n const display = (value: number | null | undefined) => (value == null ? \"\" : String(value).replace(\".\", separator()));\n const [raw, setRaw] = createSignal(display(value()));\n const min = () => local.min ?? -Infinity;\n const max = () => local.max ?? Infinity;\n const step = () => local.step ?? 1;\n // `step` and the accepted decimals never disagree: a fractional step implies\n // its own precision unless the caller states `decimalPlaces` explicitly.\n const places = () => Math.max(0, local.decimalPlaces ?? fractionDigits(step()));\n\n const filter = (input: string) => {\n let output = \"\";\n let decimal = false;\n for (const character of input) {\n if (/\\d/.test(character)) output += character;\n else if (character === \"-\" && output === \"\" && (local.allowNegative ?? true)) output += character;\n else if ((character === \".\" || character === \",\" || character === separator()) && !decimal && places() > 0) {\n output += separator();\n decimal = true;\n }\n }\n if (decimal) {\n const [integer = \"\", fraction = \"\"] = output.split(separator());\n return `${integer}${separator()}${fraction.slice(0, places())}`;\n }\n return output;\n };\n const parse = (input: string) => {\n const canonical = input.replace(separator(), \".\");\n if (!canonical || canonical === \"-\" || canonical === \".\") return null;\n const number = places() === 0 ? Number.parseInt(canonical, 10) : Number(canonical);\n return Number.isFinite(number) ? number : null;\n };\n const normalize = (value: number | null) => {\n if (value === null) return null;\n const clamped = Math.max(min(), Math.min(max(), value));\n const anchor = Number.isFinite(min()) ? min() : 0;\n const snapped = step() > 0 ? Math.round((clamped - anchor) / step()) * step() + anchor : clamped;\n const bounded = Math.max(min(), Math.min(max(), snapped));\n return places() === 0 ? Math.round(bounded) : Number(bounded.toFixed(places()));\n };\n const emit = (value: number | null) => local.onValueChange?.(value);\n const commit = (value: number | null, changeAlreadyEmitted = false) => {\n const next = normalize(value);\n setRaw(display(next));\n if (!changeAlreadyEmitted || !Object.is(next, value)) emit(next);\n local.onValueCommit?.(next);\n };\n const stepBy = (direction: number) => {\n if (rest.disabled || local.disableSteppers) return;\n const seed = value() ?? (Number.isFinite(min()) ? min() : 0);\n commit(seed + direction * step());\n };\n\n createEffect(() => {\n if (focused()) return;\n if (parse(raw()) !== value()) setRaw(display(value()));\n });\n\n return (\n <Field\n class={local.class}\n label={local.label}\n description={local.description}\n error={error()}\n meta={meta}\n required={local.required}\n disabled={rest.disabled}\n >\n <div\n class=\"k2b-input-shell k2b-number-input\"\n data-disabled={rest.disabled ? \"true\" : undefined}\n data-invalid={error() ? \"true\" : undefined}\n >\n <Show when={local.showSteppers ?? true}>\n <button\n type=\"button\"\n class=\"k2b-number-input__step\"\n aria-label={local.decreaseLabel ?? messages().decreaseValue}\n disabled={rest.disabled || local.disableSteppers || (value() !== null && value() !== undefined && value()! <= min())}\n onClick={() => stepBy(-1)}\n >\n <i class=\"ti ti-minus\" aria-hidden=\"true\" />\n </button>\n </Show>\n <div class=\"k2b-number-input__value\">\n <Show when={local.icon}>\n <span class=\"k2b-input-shell__icon k2b-text-input__icon\" aria-hidden=\"true\">\n <i class={local.icon} />\n <i class={local.activeIcon ?? local.icon} />\n </span>\n </Show>\n <Show when={local.prefix}>\n <span class=\"k2b-input-shell__affix\">{local.prefix}</span>\n </Show>\n <input\n {...rest}\n id={meta.controlId}\n class=\"k2b-input k2b-number-input__control\"\n data-filled={raw() ? \"true\" : undefined}\n type=\"text\"\n role=\"spinbutton\"\n inputmode={places() === 0 ? \"numeric\" : \"decimal\"}\n value={raw()}\n required={local.required}\n {...fieldControlAria(meta, local)}\n aria-valuemin={Number.isFinite(min()) ? min() : undefined}\n aria-valuemax={Number.isFinite(max()) ? max() : undefined}\n aria-valuenow={(focused() ? parse(raw()) : value()) ?? undefined}\n onFocus={() => setFocused(true)}\n onInput={(event) => {\n const input = event.currentTarget;\n const current = input.value;\n const selectionStart = input.selectionStart;\n const selectionEnd = input.selectionEnd;\n const next = filter(current);\n // Only write back when the filter actually dropped something —\n // re-assigning an unchanged value moves the caret to the end.\n if (current !== next) {\n input.value = next;\n if (selectionStart !== null && selectionEnd !== null) {\n input.setSelectionRange(filter(current.slice(0, selectionStart)).length, filter(current.slice(0, selectionEnd)).length);\n }\n }\n setRaw(next);\n emit(parse(next));\n }}\n onBlur={() => {\n commit(parse(raw()), true);\n setFocused(false);\n }}\n />\n <Show when={local.suffix}>\n <span class=\"k2b-input-shell__affix\">{local.suffix}</span>\n </Show>\n <Show when={local.clearable && raw() && !rest.disabled && !rest.readOnly}>\n <button\n type=\"button\"\n class=\"k2b-input-shell__clear k2b-input-clear-action\"\n aria-label={local.clearLabel ?? messages().clear}\n onClick={() => (local.onClear ? local.onClear() : commit(null))}\n >\n <i class=\"ti ti-x\" aria-hidden=\"true\" />\n </button>\n </Show>\n </div>\n <Show when={local.showSteppers ?? true}>\n <button\n type=\"button\"\n class=\"k2b-number-input__step\"\n aria-label={local.increaseLabel ?? messages().increaseValue}\n disabled={rest.disabled || local.disableSteppers || (value() !== null && value() !== undefined && value()! >= max())}\n onClick={() => stepBy(1)}\n >\n <i class=\"ti ti-plus\" aria-hidden=\"true\" />\n </button>\n </Show>\n </div>\n </Field>\n );\n}\n\nexport default NumberInput;\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["createMemo","createSignal","For","Show","createFieldMeta","Field","fieldControlAria","useUiMessages","ChoiceGroups","createChoiceLoader","createChoicePopover","filterChoiceOptions","nextEnabledChoiceIndex","commitFieldValue","resolveMaybeAccessor","normalize","option","value","label","id","Select","props","messages","meta","listboxId","controlId","query","setQuery","focusedIndex","setFocusedIndex","cache","setCache","selectedGroup","setSelectedGroup","defaultGroup","selectedView","setSelectedView","defaultView","searchRef","optionRefs","error","activeGroup","current","groups","some","group","groupChoices","allGroupLabel","all","activeView","viewToggle","loader","fetchData","signal","map","loadOptions","undefined","fetchDebounceMs","debounceMs","isAsync","Boolean","isSearchable","searchable","sourceOptions","options","groupedOptions","filter","includes","filterOptions","selected","find","selectedOption","selectedLabel","hasClearAction","clearable","disabled","accessibleLabel","placeholder","selectOption","popover","focusedOption","focus","index","scrollIntoView","block","move","direction","chooseGroup","load","open","selectedIndex","findIndex","show","queueMicrotask","close","restoreFocus","hide","cancel","select","onKeyDown","event","inToolbar","target","closest","key","preventDefault","clear","stopPropagation","trigger","_$createComponent","class","description","required","children","_el$","_$getNextElement","_tmpl$6","_el$2","firstChild","_el$5","_el$6","_co$","_$getNextMarker","nextSibling","_el$3","_el$4","_el$31","_el$32","_co$9","_el$33","_el$34","_co$0","_el$8","_el$27","_el$28","_co$7","_el$29","_el$30","_co$8","_el$17","_el$21","_el$22","_co$4","_el$23","_el$24","_co$5","_el$25","_el$26","_co$6","_ref$","setTrigger","_$use","_$setAttribute","_$spread","_$mergeProps","aria-expanded","aria-activedescendant","_$memo","data-clearable","onClick","_$insert","when","color","fallback","icon","_el$35","_tmpl$7","_$effect","_$className","_el$36","_tmpl$8","_$p","_$setStyleProperty","name","_el$37","_tmpl$9","_$setProperty","_el$7","_tmpl$","$$click","clearSelection","_$runHydrationEvents","$$keydown","_ref$2","setPopover","_el$9","_tmpl$2","_el$0","_el$1","$$input","currentTarget","_ref$3","_p$","_v$","searchPlaceholder","search","_v$2","searchOptions","_v$3","e","t","a","length","_el$10","_tmpl$4","_el$13","_el$14","_co$2","_el$15","_el$16","_co$3","choices","onValueChange","ariaLabel","groupsAriaLabel","controls","_el$11","_tmpl$3","_el$12","_v$4","showGridView","showListView","_v$5","message","_el$38","_tmpl$0","_el$39","_el$40","_$addEventListener","retry","loading","_el$18","_tmpl$5","_el$19","_el$20","each","_el$41","_tmpl$1","_c$","noResults","noOptions","_el$42","_tmpl$10","_el$47","_el$48","_co$10","_el$43","_el$44","_el$45","_el$46","_co$1","$$pointermove","element","_el$49","_el$50","_el$51","_tmpl$11","_v$10","_v$11","_v$12","_v$13","_v$14","o","i","_v$6","_v$7","_v$8","activeIcon","_v$9","_v$0","_v$1","gridSize","n","_$delegateEvents"],"sources":["inputs/Select.tsx"],"sourcesContent":["import { createMemo, createSignal, For, type JSX, Show } from \"solid-js\";\nimport { createFieldMeta, Field, fieldControlAria } from \"../internal/field\";\nimport { useUiMessages } from \"../intl/messages\";\nimport { ChoiceGroups } from \"./ChoiceGroups\";\nimport { type ChoiceOption, createChoiceLoader, createChoicePopover, filterChoiceOptions, nextEnabledChoiceIndex } from \"./choice\";\nimport type { ValueFieldProps } from \"./field-contract\";\nimport { commitFieldValue, resolveMaybeAccessor } from \"./field-contract\";\n\nexport type SelectOption = ChoiceOption<string>;\nexport type SelectGroup = {\n value: string;\n label: string;\n};\nexport type SelectView = \"list\" | \"grid\";\nexport type SelectGridSize = \"sm\" | \"md\" | \"lg\";\nexport type SelectSourceOption =\n | string\n | {\n id: string;\n label?: string;\n description?: string;\n icon?: string;\n color?: string;\n groups?: readonly string[];\n }\n | SelectOption;\n\nexport type SelectProps = ValueFieldProps<string | null> & {\n placeholder?: string;\n icon?: string;\n activeIcon?: string;\n options?: SelectSourceOption[];\n fetchData?: (query: string, signal: AbortSignal, group: string | null) => Promise<SelectSourceOption[]>;\n loadOptions?: (query: string, signal: AbortSignal, group: string | null) => Promise<readonly ChoiceOption<string>[]>;\n selectedOption?: ChoiceOption<string>;\n selectedLabel?: () => string | undefined;\n fetchDebounceMs?: number;\n debounceMs?: number;\n searchable?: boolean;\n /** Optional synchronous filter for static options. */\n filterOptions?: (options: readonly SelectOption[], query: string) => readonly SelectOption[];\n /** Optional filters. An option may belong to more than one group. */\n groups?: readonly SelectGroup[];\n /** Group selected when the component is created. Omit to start with all options. */\n defaultGroup?: string;\n groupsAriaLabel?: string;\n allGroupLabel?: string;\n /** Show a local list/grid layout toggle in the dropdown. */\n viewToggle?: boolean;\n /** Initial dropdown layout when `viewToggle` is enabled. */\n defaultView?: SelectView;\n /** Tile density for the grid layout. */\n gridSize?: SelectGridSize;\n searchPlaceholder?: string;\n clearable?: boolean;\n name?: string;\n};\n\ntype NormalizedOption = ChoiceOption<string>;\nconst normalize = (option: SelectSourceOption): NormalizedOption =>\n typeof option === \"string\"\n ? { value: option, label: option }\n : \"value\" in option\n ? option\n : { ...option, value: option.id, label: option.label || option.id };\n\nexport function Select(props: SelectProps): JSX.Element {\n const messages = useUiMessages();\n const meta = createFieldMeta(props.id);\n const listboxId = `${meta.controlId}-listbox`;\n const [query, setQuery] = createSignal(\"\");\n const [focusedIndex, setFocusedIndex] = createSignal(-1);\n const [cache, setCache] = createSignal<Record<string, NormalizedOption>>({});\n const [selectedGroup, setSelectedGroup] = createSignal<string | null>(props.defaultGroup ?? null);\n const [selectedView, setSelectedView] = createSignal<SelectView>(props.defaultView ?? \"list\");\n let searchRef: HTMLInputElement | undefined;\n let optionRefs: HTMLButtonElement[] = [];\n const value = () => resolveMaybeAccessor(props.value) ?? null;\n const error = () => resolveMaybeAccessor(props.error);\n const activeGroup = createMemo(() => {\n const current = selectedGroup();\n return current && props.groups?.some((group) => group.value === current) ? current : null;\n });\n const groupChoices = createMemo(() => [{ value: null, label: props.allGroupLabel ?? messages().all }, ...(props.groups ?? [])]);\n const activeView = () => (props.viewToggle ? selectedView() : \"list\");\n\n const loader = createChoiceLoader(\n () =>\n props.fetchData\n ? async (value, signal) => (await props.fetchData!(value, signal, activeGroup())).map(normalize)\n : props.loadOptions\n ? (value, signal) => props.loadOptions!(value, signal, activeGroup())\n : undefined,\n () => props.fetchDebounceMs ?? props.debounceMs ?? 200,\n );\n const isAsync = () => Boolean(props.fetchData || props.loadOptions);\n const isSearchable = () => isAsync() || Boolean(props.searchable);\n const sourceOptions = createMemo(() => (isAsync() ? loader.options() : (props.options ?? []).map(normalize)));\n const groupedOptions = createMemo(() => {\n const group = activeGroup();\n return !isAsync() && group ? sourceOptions().filter((option) => option.groups?.includes(group)) : sourceOptions();\n });\n // Remote loaders filter server-side; a static list has to be filtered here or\n // the search field would render but do nothing.\n const options = createMemo(() =>\n isAsync() || !props.searchable\n ? groupedOptions()\n : props.filterOptions\n ? [...props.filterOptions(groupedOptions(), query())]\n : filterChoiceOptions(groupedOptions(), query()),\n );\n const selected = createMemo(() => {\n const current = value();\n if (current === null) return undefined;\n // Resolve against the unfiltered list so typing in the search field never\n // blanks the trigger label of the current selection.\n return (\n sourceOptions().find((option) => option.value === current) ??\n cache()[current] ??\n (props.selectedOption?.value === current ? props.selectedOption : undefined) ?? {\n value: current,\n label: props.selectedLabel?.() ?? current,\n }\n );\n });\n const hasClearAction = () => Boolean(props.clearable && selected() && !props.disabled);\n const accessibleLabel = () =>\n props[\"aria-label\"] ?? (typeof props.label === \"string\" ? undefined : (props.placeholder ?? messages().selectOption));\n const popover = createChoicePopover(() => Boolean(props.disabled));\n const focusedOption = () => options()[focusedIndex()];\n const focus = (index: number) => {\n setFocusedIndex(index);\n optionRefs[index]?.scrollIntoView({ block: \"nearest\" });\n };\n const move = (direction: 1 | -1) => focus(nextEnabledChoiceIndex(options(), focusedIndex(), direction));\n const chooseGroup = (group: string | null) => {\n if (group === activeGroup()) return;\n setSelectedGroup(group);\n setFocusedIndex(nextEnabledChoiceIndex(options(), -1, 1));\n if (isAsync()) loader.load(query(), true);\n };\n const open = () => {\n if (props.disabled) return;\n setQuery(\"\");\n if (isAsync()) loader.load(\"\", true);\n const selectedIndex = options().findIndex((option) => option.value === value());\n focus(selectedIndex >= 0 ? selectedIndex : nextEnabledChoiceIndex(options(), -1, 1));\n popover.show();\n if (isSearchable()) queueMicrotask(() => searchRef?.focus());\n };\n const close = (restoreFocus = false) => {\n // Hide the top-layer surface before any reactive cleanup or consumer\n // callback can rerender its contents. Selection must feel atomic: the old\n // listbox must never remain visible with the next value.\n popover.hide(restoreFocus);\n loader.cancel();\n setQuery(\"\");\n setFocusedIndex(-1);\n };\n const select = (option: NormalizedOption) => {\n if (option.disabled) return;\n close(true);\n setCache({ ...cache(), [option.value]: option });\n commitFieldValue(props, option.value);\n };\n const onKeyDown = (event: KeyboardEvent) => {\n const inToolbar = Boolean((event.target as HTMLElement | null)?.closest?.(\".k2b-choice-toolbar\"));\n if (inToolbar && event.key !== \"Escape\" && event.key !== \"Tab\") return;\n if (event.key === \"ArrowDown\" || event.key === \"ArrowUp\") {\n event.preventDefault();\n if (!popover.open()) open();\n else move(event.key === \"ArrowDown\" ? 1 : -1);\n } else if ((event.key === \"Enter\" || event.key === \" \") && !popover.open()) {\n event.preventDefault();\n open();\n } else if (event.key === \"Enter\" && focusedOption()) {\n event.preventDefault();\n select(focusedOption()!);\n } else if (event.key === \"Escape\" && popover.open()) {\n // Only swallow Escape while the list is open — a closed select must let\n // the key bubble to an enclosing dialog or drawer.\n event.preventDefault();\n close(true);\n } else if (event.key === \"Tab\" && popover.open()) close();\n };\n const clear = (event: MouseEvent) => {\n event.stopPropagation();\n commitFieldValue(props, null);\n popover.trigger()?.focus();\n };\n\n return (\n <Field\n class={props.class}\n label={props.label}\n description={props.description}\n error={error()}\n meta={meta}\n required={props.required}\n disabled={props.disabled}\n >\n <div class=\"k2b-choice-control\" data-invalid={error() ? \"true\" : undefined}>\n <button\n ref={popover.setTrigger}\n id={meta.controlId}\n type=\"button\"\n class=\"k2b-choice-trigger\"\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n aria-expanded={popover.open()}\n aria-controls={listboxId}\n aria-activedescendant={focusedOption() ? `${listboxId}-${focusedIndex()}` : undefined}\n data-clearable={hasClearAction() ? \"true\" : undefined}\n {...fieldControlAria(meta, {\n ...props,\n \"aria-label\": accessibleLabel(),\n })}\n disabled={props.disabled}\n onClick={() => (popover.open() ? close() : open())}\n onKeyDown={onKeyDown}\n >\n <Show\n when={selected()?.color}\n fallback={<Show when={selected()?.icon}>{(icon) => <i class={icon()} aria-hidden=\"true\" />}</Show>}\n >\n {(color) => <span class=\"k2b-choice-dot\" style={{ \"background-color\": color() }} aria-hidden=\"true\" />}\n </Show>\n <span class=\"k2b-choice-trigger__value\" data-placeholder={selected() ? undefined : \"true\"}>\n {selected()?.label ?? props.placeholder ?? messages().select}\n </span>\n <i class={popover.open() ? (props.activeIcon ?? \"ti ti-chevron-up\") : (props.icon ?? \"ti ti-chevron-down\")} aria-hidden=\"true\" />\n </button>\n <Show when={props.name}>{(name) => <input type=\"hidden\" name={name()} value={value() ?? \"\"} />}</Show>\n <Show when={hasClearAction()}>\n <button type=\"button\" class=\"k2b-choice-control__clear k2b-input-clear-action\" aria-label={messages().clearSelection} onClick={clear}>\n <i class=\"ti ti-x\" aria-hidden=\"true\" />\n </button>\n </Show>\n <div\n ref={popover.setPopover}\n popover=\"manual\"\n class=\"k2b-choice-popover\"\n role=\"group\"\n onKeyDown={onKeyDown}\n aria-label={typeof props.label === \"string\" ? props.label : messages().options}\n >\n <Show when={isSearchable()}>\n <div class=\"k2b-choice-search\">\n <i class=\"ti ti-search\" aria-hidden=\"true\" />\n <input\n ref={searchRef}\n type=\"search\"\n value={query()}\n placeholder={props.searchPlaceholder ?? messages().search}\n aria-label={props.searchPlaceholder ?? messages().searchOptions}\n aria-controls={listboxId}\n aria-activedescendant={focusedOption() ? `${listboxId}-${focusedIndex()}` : undefined}\n onInput={(event) => {\n setQuery(event.currentTarget.value);\n if (isAsync()) loader.load(event.currentTarget.value);\n focus(isAsync() ? -1 : nextEnabledChoiceIndex(options(), -1, 1));\n }}\n />\n </div>\n </Show>\n <Show when={(props.groups?.length ?? 0) > 0 || props.viewToggle}>\n <div class=\"k2b-choice-toolbar\">\n <Show when={(props.groups?.length ?? 0) > 0}>\n <ChoiceGroups\n choices={groupChoices()}\n value={activeGroup()}\n onValueChange={chooseGroup}\n ariaLabel={props.groupsAriaLabel ?? messages().filterOptions}\n controls={listboxId}\n />\n </Show>\n <Show when={props.viewToggle}>\n <button\n type=\"button\"\n class=\"k2b-choice-view-toggle\"\n aria-label={activeView() === \"list\" ? messages().showGridView : messages().showListView}\n aria-controls={listboxId}\n onClick={() => setSelectedView(activeView() === \"list\" ? \"grid\" : \"list\")}\n >\n <i class={activeView() === \"list\" ? \"ti ti-category-2\" : \"ti ti-list-details\"} aria-hidden=\"true\" />\n </button>\n </Show>\n </div>\n </Show>\n <div\n id={listboxId}\n class=\"k2b-choice-options\"\n role=\"listbox\"\n data-view={activeView()}\n data-grid-size={activeView() === \"grid\" ? (props.gridSize ?? \"md\") : undefined}\n >\n <Show when={loader.error()}>\n {(message) => (\n <div class=\"k2b-choice-status\" data-tone=\"danger\">\n <span>{message()}</span>\n <button type=\"button\" onClick={loader.retry}>\n {messages().retry}\n </button>\n </div>\n )}\n </Show>\n <Show when={loader.loading() && options().length === 0}>\n <div class=\"k2b-choice-status\">\n <i class=\"ti ti-loader-2 k2b-spin\" aria-hidden=\"true\" />\n <span>{messages().loading}</span>\n </div>\n </Show>\n <For\n each={loader.error() ? [] : options()}\n fallback={\n <Show when={!loader.loading() && !loader.error()}>\n <div class=\"k2b-choice-status\">{isSearchable() ? messages().noResults : messages().noOptions}</div>\n </Show>\n }\n >\n {(option, index) => (\n <button\n ref={(element) => (optionRefs[index()] = element)}\n type=\"button\"\n id={`${listboxId}-${index()}`}\n class=\"k2b-choice-option\"\n role=\"option\"\n aria-label={option.label}\n aria-selected={option.value === value()}\n data-focused={index() === focusedIndex() ? \"true\" : undefined}\n disabled={option.disabled}\n onPointerMove={() => focus(index())}\n onClick={() => select(option)}\n >\n <Show when={option.color} fallback={<Show when={option.icon}>{(icon) => <i class={icon()} aria-hidden=\"true\" />}</Show>}>\n {(color) => <span class=\"k2b-choice-dot\" style={{ \"background-color\": color() }} aria-hidden=\"true\" />}\n </Show>\n <span>\n <strong>{option.label}</strong>\n <Show when={option.description}>{(description) => <small>{description()}</small>}</Show>\n </span>\n </button>\n )}\n </For>\n </div>\n </div>\n </div>\n </Field>\n );\n}\n\nexport default Select;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["createMemo","createSignal","For","Show","createFieldMeta","Field","fieldControlAria","useUiMessages","ChoiceGroups","createChoiceLoader","createChoicePopover","filterChoiceOptions","nextEnabledChoiceIndex","commitFieldValue","resolveMaybeAccessor","normalize","option","value","label","id","Select","props","messages","meta","listboxId","controlId","query","setQuery","focusedIndex","setFocusedIndex","cache","setCache","selectedGroup","setSelectedGroup","defaultGroup","selectedView","setSelectedView","defaultView","searchRef","optionRefs","error","activeGroup","current","groups","some","group","groupChoices","allGroupLabel","all","activeView","viewToggle","loader","fetchData","signal","map","loadOptions","undefined","fetchDebounceMs","debounceMs","isAsync","Boolean","isSearchable","searchable","sourceOptions","options","groupedOptions","filter","includes","filterOptions","selected","find","selectedOption","selectedLabel","hasClearAction","clearable","disabled","accessibleLabel","placeholder","selectOption","popover","focusedOption","focus","index","scrollIntoView","block","move","direction","chooseGroup","load","open","selectedIndex","findIndex","show","queueMicrotask","close","restoreFocus","hide","cancel","select","onKeyDown","event","inToolbar","target","closest","key","preventDefault","clear","stopPropagation","trigger","_$createComponent","class","description","required","children","_el$","_$getNextElement","_tmpl$6","_el$2","firstChild","_el$5","_el$6","_co$","_$getNextMarker","nextSibling","_el$3","_el$4","_el$31","_el$32","_co$9","_el$33","_el$34","_co$0","_el$8","_el$27","_el$28","_co$7","_el$29","_el$30","_co$8","_el$17","_el$21","_el$22","_co$4","_el$23","_el$24","_co$5","_el$25","_el$26","_co$6","_ref$","setTrigger","_$use","_$setAttribute","_$spread","_$mergeProps","aria-expanded","aria-activedescendant","_$memo","data-clearable","onClick","_$insert","when","color","fallback","icon","_el$35","_tmpl$7","_$effect","_$className","_el$36","_tmpl$8","_$p","_$setStyleProperty","name","_el$37","_tmpl$9","_$setProperty","_el$7","_tmpl$","$$click","clearSelection","_$runHydrationEvents","$$keydown","_ref$2","setPopover","_el$9","_tmpl$2","_el$0","_el$1","$$input","currentTarget","_ref$3","_p$","_v$","searchPlaceholder","search","_v$2","searchOptions","_v$3","e","t","a","length","_el$10","_tmpl$4","_el$13","_el$14","_co$2","_el$15","_el$16","_co$3","choices","onValueChange","ariaLabel","groupsAriaLabel","controls","_el$11","_tmpl$3","_el$12","_v$4","showGridView","showListView","_v$5","message","_el$38","_tmpl$0","_el$39","_el$40","_$addEventListener","retry","loading","_el$18","_tmpl$5","_el$19","_el$20","each","_el$41","_tmpl$1","_c$","noResults","noOptions","_el$42","_tmpl$10","_el$47","_el$48","_co$10","_el$43","_el$44","_el$45","_el$46","_co$1","$$pointermove","element","_el$49","_el$50","_el$51","_tmpl$11","_v$10","_v$11","_v$12","_v$13","_v$14","o","i","_v$6","_v$7","_v$8","activeIcon","_v$9","_v$0","_v$1","gridSize","n","_$delegateEvents"],"sources":["inputs/Select.tsx"],"sourcesContent":["import { createMemo, createSignal, For, type JSX, Show } from \"solid-js\";\nimport { createFieldMeta, Field, fieldControlAria } from \"../internal/field\";\nimport { useUiMessages } from \"../intl/messages\";\nimport { ChoiceGroups } from \"./ChoiceGroups\";\nimport { type ChoiceOption, createChoiceLoader, createChoicePopover, filterChoiceOptions, nextEnabledChoiceIndex } from \"./choice\";\nimport type { ValueFieldProps } from \"./field-contract\";\nimport { commitFieldValue, resolveMaybeAccessor } from \"./field-contract\";\n\nexport type SelectOption = ChoiceOption<string>;\nexport type SelectGroup = {\n value: string;\n label: string;\n};\nexport type SelectView = \"list\" | \"grid\";\nexport type SelectGridSize = \"sm\" | \"md\" | \"lg\";\nexport type SelectSourceOption =\n | string\n | {\n id: string;\n label?: string;\n description?: string;\n icon?: string;\n color?: string;\n groups?: readonly string[];\n }\n | SelectOption;\n\nexport type SelectProps = ValueFieldProps<string | null> & {\n placeholder?: string;\n icon?: string;\n activeIcon?: string;\n options?: SelectSourceOption[];\n fetchData?: (query: string, signal: AbortSignal, group: string | null) => Promise<SelectSourceOption[]>;\n loadOptions?: (query: string, signal: AbortSignal, group: string | null) => Promise<readonly ChoiceOption<string>[]>;\n selectedOption?: ChoiceOption<string>;\n selectedLabel?: () => string | undefined;\n fetchDebounceMs?: number;\n debounceMs?: number;\n searchable?: boolean;\n /** Optional synchronous filter for static options. */\n filterOptions?: (options: readonly SelectOption[], query: string) => readonly SelectOption[];\n /** Optional filters. An option may belong to more than one group. */\n groups?: readonly SelectGroup[];\n /** Group selected when the component is created. Omit to start with all options. */\n defaultGroup?: string;\n groupsAriaLabel?: string;\n allGroupLabel?: string;\n /** Show a local list/grid layout toggle in the dropdown. */\n viewToggle?: boolean;\n /** Initial dropdown layout when `viewToggle` is enabled. */\n defaultView?: SelectView;\n /** Tile density for the grid layout. */\n gridSize?: SelectGridSize;\n searchPlaceholder?: string;\n clearable?: boolean;\n name?: string;\n};\n\ntype NormalizedOption = ChoiceOption<string>;\nconst normalize = (option: SelectSourceOption): NormalizedOption =>\n typeof option === \"string\"\n ? { value: option, label: option }\n : \"value\" in option\n ? option\n : { ...option, value: option.id, label: option.label || option.id };\n\nexport function Select(props: SelectProps): JSX.Element {\n const messages = useUiMessages();\n const meta = createFieldMeta(props.id);\n const listboxId = `${meta.controlId}-listbox`;\n const [query, setQuery] = createSignal(\"\");\n const [focusedIndex, setFocusedIndex] = createSignal(-1);\n const [cache, setCache] = createSignal<Record<string, NormalizedOption>>({});\n const [selectedGroup, setSelectedGroup] = createSignal<string | null>(props.defaultGroup ?? null);\n const [selectedView, setSelectedView] = createSignal<SelectView>(props.defaultView ?? \"list\");\n let searchRef: HTMLInputElement | undefined;\n let optionRefs: HTMLButtonElement[] = [];\n const value = () => resolveMaybeAccessor(props.value) ?? null;\n const error = () => resolveMaybeAccessor(props.error);\n const activeGroup = createMemo(() => {\n const current = selectedGroup();\n return current && props.groups?.some((group) => group.value === current) ? current : null;\n });\n const groupChoices = createMemo(() => [{ value: null, label: props.allGroupLabel ?? messages().all }, ...(props.groups ?? [])]);\n const activeView = () => (props.viewToggle ? selectedView() : \"list\");\n\n const loader = createChoiceLoader(\n () =>\n props.fetchData\n ? async (value, signal) => (await props.fetchData!(value, signal, activeGroup())).map(normalize)\n : props.loadOptions\n ? (value, signal) => props.loadOptions!(value, signal, activeGroup())\n : undefined,\n () => props.fetchDebounceMs ?? props.debounceMs ?? 200,\n );\n const isAsync = () => Boolean(props.fetchData || props.loadOptions);\n const isSearchable = () => isAsync() || Boolean(props.searchable);\n const sourceOptions = createMemo(() => (isAsync() ? loader.options() : (props.options ?? []).map(normalize)));\n const groupedOptions = createMemo(() => {\n const group = activeGroup();\n return !isAsync() && group ? sourceOptions().filter((option) => option.groups?.includes(group)) : sourceOptions();\n });\n // Remote loaders filter server-side; a static list has to be filtered here or\n // the search field would render but do nothing.\n const options = createMemo(() =>\n isAsync() || !props.searchable\n ? groupedOptions()\n : props.filterOptions\n ? [...props.filterOptions(groupedOptions(), query())]\n : filterChoiceOptions(groupedOptions(), query()),\n );\n const selected = createMemo(() => {\n const current = value();\n if (current === null) return undefined;\n // Resolve against the unfiltered list so typing in the search field never\n // blanks the trigger label of the current selection.\n return (\n sourceOptions().find((option) => option.value === current) ??\n cache()[current] ??\n (props.selectedOption?.value === current ? props.selectedOption : undefined) ?? {\n value: current,\n label: props.selectedLabel?.() ?? current,\n }\n );\n });\n const hasClearAction = () => Boolean(props.clearable && selected() && !props.disabled);\n const accessibleLabel = () =>\n props[\"aria-label\"] ?? (typeof props.label === \"string\" ? undefined : (props.placeholder ?? messages().selectOption));\n const popover = createChoicePopover(() => Boolean(props.disabled));\n const focusedOption = () => options()[focusedIndex()];\n const focus = (index: number) => {\n setFocusedIndex(index);\n optionRefs[index]?.scrollIntoView({ block: \"nearest\" });\n };\n const move = (direction: 1 | -1) => focus(nextEnabledChoiceIndex(options(), focusedIndex(), direction));\n const chooseGroup = (group: string | null) => {\n if (group === activeGroup()) return;\n setSelectedGroup(group);\n setFocusedIndex(nextEnabledChoiceIndex(options(), -1, 1));\n if (isAsync()) loader.load(query(), true);\n };\n const open = () => {\n if (props.disabled) return;\n setQuery(\"\");\n if (isAsync()) loader.load(\"\", true);\n const selectedIndex = options().findIndex((option) => option.value === value());\n focus(selectedIndex >= 0 ? selectedIndex : nextEnabledChoiceIndex(options(), -1, 1));\n popover.show();\n if (isSearchable()) queueMicrotask(() => searchRef?.focus());\n };\n const close = (restoreFocus = false) => {\n // Hide the top-layer surface before any reactive cleanup or consumer\n // callback can rerender its contents. Selection must feel atomic: the old\n // listbox must never remain visible with the next value.\n popover.hide(restoreFocus);\n loader.cancel();\n setQuery(\"\");\n setFocusedIndex(-1);\n };\n const select = (option: NormalizedOption) => {\n if (option.disabled) return;\n close(true);\n setCache({ ...cache(), [option.value]: option });\n commitFieldValue(props, option.value);\n };\n const onKeyDown = (event: KeyboardEvent) => {\n const inToolbar = Boolean((event.target as HTMLElement | null)?.closest?.(\".k2b-choice-toolbar\"));\n if (inToolbar && event.key !== \"Escape\" && event.key !== \"Tab\") return;\n if (event.key === \"ArrowDown\" || event.key === \"ArrowUp\") {\n event.preventDefault();\n if (!popover.open()) open();\n else move(event.key === \"ArrowDown\" ? 1 : -1);\n } else if ((event.key === \"Enter\" || event.key === \" \") && !popover.open()) {\n event.preventDefault();\n open();\n } else if (event.key === \"Enter\" && focusedOption()) {\n event.preventDefault();\n select(focusedOption()!);\n } else if (event.key === \"Escape\" && popover.open()) {\n // Only swallow Escape while the list is open — a closed select must let\n // the key bubble to an enclosing dialog or drawer.\n event.preventDefault();\n close(true);\n } else if (event.key === \"Tab\" && popover.open()) close();\n };\n const clear = (event: MouseEvent) => {\n event.stopPropagation();\n commitFieldValue(props, null);\n popover.trigger()?.focus();\n };\n\n return (\n <Field\n class={props.class}\n label={props.label}\n description={props.description}\n error={error()}\n meta={meta}\n required={props.required}\n disabled={props.disabled}\n >\n <div class=\"k2b-choice-control\" data-invalid={error() ? \"true\" : undefined}>\n <button\n ref={popover.setTrigger}\n id={meta.controlId}\n type=\"button\"\n class=\"k2b-choice-trigger\"\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n aria-expanded={popover.open()}\n aria-controls={listboxId}\n aria-activedescendant={focusedOption() ? `${listboxId}-${focusedIndex()}` : undefined}\n data-clearable={hasClearAction() ? \"true\" : undefined}\n {...fieldControlAria(meta, {\n ...props,\n \"aria-label\": accessibleLabel(),\n })}\n disabled={props.disabled}\n onClick={() => (popover.open() ? close() : open())}\n onKeyDown={onKeyDown}\n >\n <Show\n when={selected()?.color}\n fallback={<Show when={selected()?.icon}>{(icon) => <i class={icon()} aria-hidden=\"true\" />}</Show>}\n >\n {(color) => <span class=\"k2b-choice-dot\" style={{ \"background-color\": color() }} aria-hidden=\"true\" />}\n </Show>\n <span class=\"k2b-choice-trigger__value\" data-placeholder={selected() ? undefined : \"true\"}>\n {selected()?.label ?? props.placeholder ?? messages().select}\n </span>\n <i class={popover.open() ? (props.activeIcon ?? \"ti ti-chevron-up\") : (props.icon ?? \"ti ti-chevron-down\")} aria-hidden=\"true\" />\n </button>\n <Show when={props.name}>{(name) => <input type=\"hidden\" name={name()} value={value() ?? \"\"} />}</Show>\n <Show when={hasClearAction()}>\n <button\n type=\"button\"\n class=\"k2b-choice-control__clear k2b-input-clear-action\"\n aria-label={messages().clearSelection}\n onClick={clear}\n >\n <i class=\"ti ti-x\" aria-hidden=\"true\" />\n </button>\n </Show>\n <div\n ref={popover.setPopover}\n popover=\"manual\"\n class=\"k2b-choice-popover\"\n role=\"group\"\n onKeyDown={onKeyDown}\n aria-label={typeof props.label === \"string\" ? props.label : messages().options}\n >\n <Show when={isSearchable()}>\n <div class=\"k2b-choice-search\">\n <i class=\"ti ti-search\" aria-hidden=\"true\" />\n <input\n ref={searchRef}\n type=\"search\"\n value={query()}\n placeholder={props.searchPlaceholder ?? messages().search}\n aria-label={props.searchPlaceholder ?? messages().searchOptions}\n aria-controls={listboxId}\n aria-activedescendant={focusedOption() ? `${listboxId}-${focusedIndex()}` : undefined}\n onInput={(event) => {\n setQuery(event.currentTarget.value);\n if (isAsync()) loader.load(event.currentTarget.value);\n focus(isAsync() ? -1 : nextEnabledChoiceIndex(options(), -1, 1));\n }}\n />\n </div>\n </Show>\n <Show when={(props.groups?.length ?? 0) > 0 || props.viewToggle}>\n <div class=\"k2b-choice-toolbar\">\n <Show when={(props.groups?.length ?? 0) > 0}>\n <ChoiceGroups\n choices={groupChoices()}\n value={activeGroup()}\n onValueChange={chooseGroup}\n ariaLabel={props.groupsAriaLabel ?? messages().filterOptions}\n controls={listboxId}\n />\n </Show>\n <Show when={props.viewToggle}>\n <button\n type=\"button\"\n class=\"k2b-choice-view-toggle\"\n aria-label={activeView() === \"list\" ? messages().showGridView : messages().showListView}\n aria-controls={listboxId}\n onClick={() => setSelectedView(activeView() === \"list\" ? \"grid\" : \"list\")}\n >\n <i class={activeView() === \"list\" ? \"ti ti-category-2\" : \"ti ti-list-details\"} aria-hidden=\"true\" />\n </button>\n </Show>\n </div>\n </Show>\n <div\n id={listboxId}\n class=\"k2b-choice-options\"\n role=\"listbox\"\n data-view={activeView()}\n data-grid-size={activeView() === \"grid\" ? (props.gridSize ?? \"md\") : undefined}\n >\n <Show when={loader.error()}>\n {(message) => (\n <div class=\"k2b-choice-status\" data-tone=\"danger\">\n <span>{message()}</span>\n <button type=\"button\" onClick={loader.retry}>\n {messages().retry}\n </button>\n </div>\n )}\n </Show>\n <Show when={loader.loading() && options().length === 0}>\n <div class=\"k2b-choice-status\">\n <i class=\"ti ti-loader-2 k2b-spin\" aria-hidden=\"true\" />\n <span>{messages().loading}</span>\n </div>\n </Show>\n <For\n each={loader.error() ? [] : options()}\n fallback={\n <Show when={!loader.loading() && !loader.error()}>\n <div class=\"k2b-choice-status\">{isSearchable() ? messages().noResults : messages().noOptions}</div>\n </Show>\n }\n >\n {(option, index) => (\n <button\n ref={(element) => (optionRefs[index()] = element)}\n type=\"button\"\n id={`${listboxId}-${index()}`}\n class=\"k2b-choice-option\"\n role=\"option\"\n aria-label={option.label}\n aria-selected={option.value === value()}\n data-focused={index() === focusedIndex() ? \"true\" : undefined}\n disabled={option.disabled}\n onPointerMove={() => focus(index())}\n onClick={() => select(option)}\n >\n <Show when={option.color} fallback={<Show when={option.icon}>{(icon) => <i class={icon()} aria-hidden=\"true\" />}</Show>}>\n {(color) => <span class=\"k2b-choice-dot\" style={{ \"background-color\": color() }} aria-hidden=\"true\" />}\n </Show>\n <span>\n <strong>{option.label}</strong>\n <Show when={option.description}>{(description) => <small>{description()}</small>}</Show>\n </span>\n </button>\n )}\n </For>\n </div>\n </div>\n </div>\n </Field>\n );\n}\n\nexport default Select;\n"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,5 @@
1
- import { insertLink, toggleBold, toggleBulletList, toggleCode, toggleHeading, toggleItalic, toggleNumberedList } from "./actions";
2
1
  import { replaceTextareaRange } from "../editor-dom";
2
+ import { insertLink, toggleBold, toggleBulletList, toggleCode, toggleHeading, toggleItalic, toggleNumberedList } from "./actions";
3
3
  const isMac = () => typeof navigator !== "undefined" && /Mac|iPhone|iPad|iPod/i.test(navigator.platform);
4
4
  /** Keyed by `event.key.toLowerCase()`. A `Map` (not an object literal) so a
5
5
  * key that collides with an `Object.prototype` member — `constructor`,