@k2b/ui 0.32.0 → 0.34.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/base.css +14 -1
- package/dist/browser/actions/ContextMenu.js +13 -0
- package/dist/browser/actions/ContextMenu.js.map +1 -1
- package/dist/browser/actions/Dropdown.js +173 -102
- package/dist/browser/actions/Dropdown.js.map +1 -1
- package/dist/browser/actions/FilterChip.js +113 -56
- package/dist/browser/actions/FilterChip.js.map +1 -1
- package/dist/browser/actions/SelectionToolbar.js +129 -0
- package/dist/browser/actions/SelectionToolbar.js.map +1 -0
- package/dist/browser/actions/filter-messages.js +26 -2
- package/dist/browser/actions/filter-messages.js.map +1 -1
- package/dist/browser/actions/index.js +1 -0
- package/dist/browser/actions/index.js.map +1 -1
- package/dist/browser/actions/menu-rows.js +23 -3
- package/dist/browser/actions/menu-rows.js.map +1 -1
- package/dist/browser/actions/menu-sheet.js +2 -7
- package/dist/browser/actions/menu-sheet.js.map +1 -1
- package/dist/browser/charts.js +6 -0
- package/dist/browser/charts.js.map +1 -0
- package/dist/browser/chat/ChatComposer.js +616 -421
- package/dist/browser/chat/ChatComposer.js.map +1 -1
- package/dist/browser/chat/chat-messages.js +18 -0
- package/dist/browser/chat/chat-messages.js.map +1 -1
- package/dist/browser/chat/composer-document.js +19 -0
- package/dist/browser/chat/composer-document.js.map +1 -1
- package/dist/browser/chat/index.js.map +1 -1
- package/dist/browser/content/Calendar.js +39 -29
- package/dist/browser/content/Calendar.js.map +1 -1
- package/dist/browser/content/CalendarDayView.js +159 -165
- package/dist/browser/content/CalendarDayView.js.map +1 -1
- package/dist/browser/content/Chart.js +8 -0
- package/dist/browser/content/Chart.js.map +1 -1
- package/dist/browser/content/FileGrid.js +231 -9
- package/dist/browser/content/FileGrid.js.map +1 -1
- package/dist/browser/content/FileTypeIcon.js +15 -0
- package/dist/browser/content/FileTypeIcon.js.map +1 -1
- package/dist/browser/content/FileView.js +11 -4
- package/dist/browser/content/FileView.js.map +1 -1
- package/dist/browser/content/MessageRow.js +627 -343
- package/dist/browser/content/MessageRow.js.map +1 -1
- package/dist/browser/content/ReactionBar.js +20 -1
- package/dist/browser/content/ReactionBar.js.map +1 -1
- package/dist/browser/content/calendar-day-scroll.js +4 -3
- package/dist/browser/content/calendar-day-scroll.js.map +1 -1
- package/dist/browser/content/chart-bar.js +476 -0
- package/dist/browser/content/chart-bar.js.map +1 -0
- package/dist/browser/content/file-list-messages.js +52 -0
- package/dist/browser/content/file-list-messages.js.map +1 -0
- package/dist/browser/content/index.js +2 -2
- package/dist/browser/content/index.js.map +1 -1
- package/dist/browser/feedback/Tooltip.js +31 -14
- package/dist/browser/feedback/Tooltip.js.map +1 -1
- package/dist/browser/feedback/dialog-core.js +6 -0
- package/dist/browser/feedback/dialog-core.js.map +1 -1
- package/dist/browser/inputs/ChoiceList.js +178 -0
- package/dist/browser/inputs/ChoiceList.js.map +1 -0
- package/dist/browser/inputs/ChoiceSlider.js +314 -0
- package/dist/browser/inputs/ChoiceSlider.js.map +1 -0
- package/dist/browser/inputs/ChoiceTiles.js +135 -0
- package/dist/browser/inputs/ChoiceTiles.js.map +1 -0
- package/dist/browser/inputs/ColorChoices.js +120 -0
- package/dist/browser/inputs/ColorChoices.js.map +1 -0
- package/dist/browser/inputs/QrScanner.js +95 -13
- package/dist/browser/inputs/QrScanner.js.map +1 -1
- package/dist/browser/inputs/TextInput.js +19 -14
- package/dist/browser/inputs/TextInput.js.map +1 -1
- package/dist/browser/inputs/index.js +4 -0
- package/dist/browser/inputs/index.js.map +1 -1
- package/dist/browser/inputs/qr-messages.js +2 -0
- package/dist/browser/inputs/qr-messages.js.map +1 -1
- package/dist/browser/internal/radio-keys.js +13 -0
- package/dist/browser/internal/radio-keys.js.map +1 -0
- package/dist/browser/intl/shortcut-messages.js +4 -0
- package/dist/browser/intl/shortcut-messages.js.map +1 -1
- package/dist/browser/intl/shortcut.js +4 -0
- package/dist/browser/intl/shortcut.js.map +1 -1
- package/dist/browser/layout/AnchoredPopover.js +180 -0
- package/dist/browser/layout/AnchoredPopover.js.map +1 -0
- package/dist/browser/layout/AppWorkspace.js +684 -532
- package/dist/browser/layout/AppWorkspace.js.map +1 -1
- package/dist/browser/layout/DetailPanel.js +443 -333
- package/dist/browser/layout/DetailPanel.js.map +1 -1
- package/dist/browser/layout/MobileShell.js +231 -42
- package/dist/browser/layout/MobileShell.js.map +1 -1
- package/dist/browser/layout/Settings.js +283 -175
- package/dist/browser/layout/Settings.js.map +1 -1
- package/dist/browser/layout/SidebarRailHint.js +79 -0
- package/dist/browser/layout/SidebarRailHint.js.map +1 -0
- package/dist/browser/layout/SidebarSwitcher.js +79 -66
- package/dist/browser/layout/SidebarSwitcher.js.map +1 -1
- package/dist/browser/layout/TabBar.js +18 -4
- package/dist/browser/layout/TabBar.js.map +1 -1
- package/dist/browser/layout/app-workspace-controller.js +11 -4
- package/dist/browser/layout/app-workspace-controller.js.map +1 -1
- package/dist/browser/layout/detail-panel-messages.js +4 -2
- package/dist/browser/layout/detail-panel-messages.js.map +1 -1
- package/dist/browser/layout/index.js +3 -1
- package/dist/browser/layout/index.js.map +1 -1
- package/dist/browser/layout/scroll-fade.js +32 -5
- package/dist/browser/layout/scroll-fade.js.map +1 -1
- package/dist/browser/layout/settings-messages.js +26 -2
- package/dist/browser/layout/settings-messages.js.map +1 -1
- package/dist/browser/surfaces/Avatar.js +2 -14
- package/dist/browser/surfaces/Avatar.js.map +1 -1
- package/dist/browser/surfaces/DotStrip.js +70 -0
- package/dist/browser/surfaces/DotStrip.js.map +1 -0
- package/dist/browser/surfaces/NoticeCard.js +46 -30
- package/dist/browser/surfaces/NoticeCard.js.map +1 -1
- package/dist/browser/surfaces/ProgressRing.js +3 -0
- package/dist/browser/surfaces/ProgressRing.js.map +1 -1
- package/dist/browser/surfaces/ResourceCard.js +125 -68
- package/dist/browser/surfaces/ResourceCard.js.map +1 -1
- package/dist/browser/surfaces/index.js +2 -0
- package/dist/browser/surfaces/index.js.map +1 -1
- package/dist/browser/surfaces/person-color.js +18 -0
- package/dist/browser/surfaces/person-color.js.map +1 -0
- package/dist/browser/surfaces/resource-messages.js +8 -4
- package/dist/browser/surfaces/resource-messages.js.map +1 -1
- package/dist/browser/widgets/Widget.js +3 -2
- package/dist/browser/widgets/Widget.js.map +1 -1
- package/dist/ssr/actions/ContextMenu.js +9 -0
- package/dist/ssr/actions/ContextMenu.js.map +1 -1
- package/dist/ssr/actions/Dropdown.js +65 -31
- package/dist/ssr/actions/Dropdown.js.map +1 -1
- package/dist/ssr/actions/FilterChip.js +67 -16
- package/dist/ssr/actions/FilterChip.js.map +1 -1
- package/dist/ssr/actions/SelectionToolbar.js +104 -0
- package/dist/ssr/actions/SelectionToolbar.js.map +1 -0
- package/dist/ssr/actions/filter-messages.js +26 -2
- package/dist/ssr/actions/filter-messages.js.map +1 -1
- package/dist/ssr/actions/index.js +1 -0
- package/dist/ssr/actions/index.js.map +1 -1
- package/dist/ssr/actions/menu-rows.js +23 -3
- package/dist/ssr/actions/menu-rows.js.map +1 -1
- package/dist/ssr/actions/menu-sheet.js +2 -7
- package/dist/ssr/actions/menu-sheet.js.map +1 -1
- package/dist/ssr/charts.js +6 -0
- package/dist/ssr/charts.js.map +1 -0
- package/dist/ssr/chat/ChatComposer.js +184 -76
- package/dist/ssr/chat/ChatComposer.js.map +1 -1
- package/dist/ssr/chat/chat-messages.js +18 -0
- package/dist/ssr/chat/chat-messages.js.map +1 -1
- package/dist/ssr/chat/composer-document.js +19 -0
- package/dist/ssr/chat/composer-document.js.map +1 -1
- package/dist/ssr/chat/index.js.map +1 -1
- package/dist/ssr/content/Calendar.js +40 -31
- package/dist/ssr/content/Calendar.js.map +1 -1
- package/dist/ssr/content/CalendarDayView.js +40 -48
- package/dist/ssr/content/CalendarDayView.js.map +1 -1
- package/dist/ssr/content/Chart.js +8 -0
- package/dist/ssr/content/Chart.js.map +1 -1
- package/dist/ssr/content/FileGrid.js +132 -5
- package/dist/ssr/content/FileGrid.js.map +1 -1
- package/dist/ssr/content/FileTypeIcon.js +15 -0
- package/dist/ssr/content/FileTypeIcon.js.map +1 -1
- package/dist/ssr/content/FileView.js +11 -4
- package/dist/ssr/content/FileView.js.map +1 -1
- package/dist/ssr/content/MessageRow.js +274 -91
- package/dist/ssr/content/MessageRow.js.map +1 -1
- package/dist/ssr/content/ReactionBar.js +20 -1
- package/dist/ssr/content/ReactionBar.js.map +1 -1
- package/dist/ssr/content/calendar-day-scroll.js +4 -3
- package/dist/ssr/content/calendar-day-scroll.js.map +1 -1
- package/dist/ssr/content/chart-bar.js +476 -0
- package/dist/ssr/content/chart-bar.js.map +1 -0
- package/dist/ssr/content/file-list-messages.js +52 -0
- package/dist/ssr/content/file-list-messages.js.map +1 -0
- package/dist/ssr/content/index.js +2 -2
- package/dist/ssr/content/index.js.map +1 -1
- package/dist/ssr/feedback/Tooltip.js +31 -14
- package/dist/ssr/feedback/Tooltip.js.map +1 -1
- package/dist/ssr/feedback/dialog-core.js +6 -0
- package/dist/ssr/feedback/dialog-core.js.map +1 -1
- package/dist/ssr/inputs/ChoiceList.js +95 -0
- package/dist/ssr/inputs/ChoiceList.js.map +1 -0
- package/dist/ssr/inputs/ChoiceSlider.js +191 -0
- package/dist/ssr/inputs/ChoiceSlider.js.map +1 -0
- package/dist/ssr/inputs/ChoiceTiles.js +61 -0
- package/dist/ssr/inputs/ChoiceTiles.js.map +1 -0
- package/dist/ssr/inputs/ColorChoices.js +60 -0
- package/dist/ssr/inputs/ColorChoices.js.map +1 -0
- package/dist/ssr/inputs/QrScanner.js +89 -10
- package/dist/ssr/inputs/QrScanner.js.map +1 -1
- package/dist/ssr/inputs/TextInput.js +17 -2
- package/dist/ssr/inputs/TextInput.js.map +1 -1
- package/dist/ssr/inputs/index.js +4 -0
- package/dist/ssr/inputs/index.js.map +1 -1
- package/dist/ssr/inputs/qr-messages.js +2 -0
- package/dist/ssr/inputs/qr-messages.js.map +1 -1
- package/dist/ssr/internal/radio-keys.js +13 -0
- package/dist/ssr/internal/radio-keys.js.map +1 -0
- package/dist/ssr/intl/shortcut-messages.js +4 -0
- package/dist/ssr/intl/shortcut-messages.js.map +1 -1
- package/dist/ssr/intl/shortcut.js +4 -0
- package/dist/ssr/intl/shortcut.js.map +1 -1
- package/dist/ssr/layout/AnchoredPopover.js +142 -0
- package/dist/ssr/layout/AnchoredPopover.js.map +1 -0
- package/dist/ssr/layout/AppWorkspace.js +287 -141
- package/dist/ssr/layout/AppWorkspace.js.map +1 -1
- package/dist/ssr/layout/DetailPanel.js +181 -108
- package/dist/ssr/layout/DetailPanel.js.map +1 -1
- package/dist/ssr/layout/MobileShell.js +118 -24
- package/dist/ssr/layout/MobileShell.js.map +1 -1
- package/dist/ssr/layout/Settings.js +122 -45
- package/dist/ssr/layout/Settings.js.map +1 -1
- package/dist/ssr/layout/SidebarRailHint.js +79 -0
- package/dist/ssr/layout/SidebarRailHint.js.map +1 -0
- package/dist/ssr/layout/SidebarSwitcher.js +13 -3
- package/dist/ssr/layout/SidebarSwitcher.js.map +1 -1
- package/dist/ssr/layout/TabBar.js +11 -3
- package/dist/ssr/layout/TabBar.js.map +1 -1
- package/dist/ssr/layout/app-workspace-controller.js +11 -4
- package/dist/ssr/layout/app-workspace-controller.js.map +1 -1
- package/dist/ssr/layout/detail-panel-messages.js +4 -2
- package/dist/ssr/layout/detail-panel-messages.js.map +1 -1
- package/dist/ssr/layout/index.js +3 -1
- package/dist/ssr/layout/index.js.map +1 -1
- package/dist/ssr/layout/scroll-fade.js +32 -5
- package/dist/ssr/layout/scroll-fade.js.map +1 -1
- package/dist/ssr/layout/settings-messages.js +26 -2
- package/dist/ssr/layout/settings-messages.js.map +1 -1
- package/dist/ssr/surfaces/Avatar.js +2 -14
- package/dist/ssr/surfaces/Avatar.js.map +1 -1
- package/dist/ssr/surfaces/DotStrip.js +31 -0
- package/dist/ssr/surfaces/DotStrip.js.map +1 -0
- package/dist/ssr/surfaces/NoticeCard.js +21 -12
- package/dist/ssr/surfaces/NoticeCard.js.map +1 -1
- package/dist/ssr/surfaces/ProgressRing.js +3 -0
- package/dist/ssr/surfaces/ProgressRing.js.map +1 -1
- package/dist/ssr/surfaces/ResourceCard.js +40 -15
- package/dist/ssr/surfaces/ResourceCard.js.map +1 -1
- package/dist/ssr/surfaces/index.js +2 -0
- package/dist/ssr/surfaces/index.js.map +1 -1
- package/dist/ssr/surfaces/person-color.js +18 -0
- package/dist/ssr/surfaces/person-color.js.map +1 -0
- package/dist/ssr/surfaces/resource-messages.js +8 -4
- package/dist/ssr/surfaces/resource-messages.js.map +1 -1
- package/dist/ssr/widgets/Widget.js +3 -2
- package/dist/ssr/widgets/Widget.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/types/actions/ContextMenu.d.ts +5 -0
- package/dist/types/actions/Dropdown.d.ts +19 -0
- package/dist/types/actions/FilterChip.d.ts +11 -0
- package/dist/types/actions/SelectionToolbar.d.ts +38 -0
- package/dist/types/actions/filter-messages.d.ts +12 -0
- package/dist/types/actions/index.d.ts +2 -0
- package/dist/types/actions/menu-rows.d.ts +7 -2
- package/dist/types/charts.d.ts +5 -0
- package/dist/types/chat/ChatComposer.d.ts +28 -0
- package/dist/types/chat/chat-messages.d.ts +9 -0
- package/dist/types/chat/composer-document.d.ts +5 -0
- package/dist/types/chat/index.d.ts +1 -1
- package/dist/types/content/Calendar.d.ts +7 -0
- package/dist/types/content/Chart.d.ts +2 -1
- package/dist/types/content/FileGrid.d.ts +43 -3
- package/dist/types/content/FileTypeIcon.d.ts +10 -0
- package/dist/types/content/FileView.d.ts +5 -1
- package/dist/types/content/MessageRow.d.ts +66 -2
- package/dist/types/content/calendar-day-scroll.d.ts +2 -1
- package/dist/types/content/chart-bar.d.ts +60 -0
- package/dist/types/content/file-list-messages.d.ts +24 -0
- package/dist/types/content/index.d.ts +4 -4
- package/dist/types/feedback/Tooltip.d.ts +8 -2
- package/dist/types/feedback/dialog-core.d.ts +3 -0
- package/dist/types/inputs/ChoiceList.d.ts +28 -0
- package/dist/types/inputs/ChoiceSlider.d.ts +36 -0
- package/dist/types/inputs/ChoiceTiles.d.ts +25 -0
- package/dist/types/inputs/ColorChoices.d.ts +19 -0
- package/dist/types/inputs/index.d.ts +8 -0
- package/dist/types/inputs/qr-messages.d.ts +1 -0
- package/dist/types/internal/radio-keys.d.ts +5 -0
- package/dist/types/intl/shortcut-messages.d.ts +2 -0
- package/dist/types/layout/AnchoredPopover.d.ts +31 -0
- package/dist/types/layout/AppWorkspace.d.ts +12 -0
- package/dist/types/layout/DetailPanel.d.ts +17 -0
- package/dist/types/layout/MobileShell.d.ts +55 -5
- package/dist/types/layout/Settings.d.ts +22 -0
- package/dist/types/layout/SidebarRailHint.d.ts +26 -0
- package/dist/types/layout/TabBar.d.ts +5 -0
- package/dist/types/layout/detail-panel-messages.d.ts +1 -0
- package/dist/types/layout/index.d.ts +5 -3
- package/dist/types/layout/scroll-fade.d.ts +5 -0
- package/dist/types/layout/settings-messages.d.ts +12 -0
- package/dist/types/surfaces/DotStrip.d.ts +22 -0
- package/dist/types/surfaces/NoticeCard.d.ts +3 -0
- package/dist/types/surfaces/ProgressRing.d.ts +2 -1
- package/dist/types/surfaces/ResourceCard.d.ts +9 -0
- package/dist/types/surfaces/index.d.ts +4 -1
- package/dist/types/surfaces/person-color.d.ts +10 -0
- package/dist/types/surfaces/resource-messages.d.ts +2 -0
- package/dist/types/widgets/Widget.d.ts +3 -2
- package/package.json +7 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["inputs/TextInput.tsx"],"sourcesContent":["import { createSignal, type JSX, Show, splitProps } from \"solid-js\";\nimport { isServer } from \"solid-js/web\";\nimport { createFieldMeta, Field, fieldControlAria } from \"../internal/field\";\nimport { useUiMessages } from \"../intl/messages\";\nimport type { Completion } from \"./completion\";\nimport type { ValueFieldProps } from \"./field-contract\";\nimport { commitFieldValue, resolveMaybeAccessor } from \"./field-contract\";\nimport { useInputMessages } from \"./input-messages\";\nimport { MarkdownEditor } from \"./markdown/MarkdownEditor\";\n\nexport type TextInputProps = Omit<\n JSX.InputHTMLAttributes<HTMLInputElement>,\n \"onChange\" | \"onInput\" | \"prefix\" | \"suffix\" | \"type\" | \"value\" | keyof ValueFieldProps<string>\n> &\n ValueFieldProps<string> & {\n minLength?: number;\n maxLength?: number;\n type?: \"text\" | \"search\" | \"email\" | \"url\" | \"tel\";\n variant?: \"default\" | \"ai\" | \"compact\";\n /** Set false for a plain field without a leading icon. */\n icon?: string | false;\n activeIcon?: string;\n /** ID of a consumer-owned visible error; caller owns its announcement. Native controls only. */\n externalErrorId?: string;\n prefix?: JSX.Element;\n suffix?: JSX.Element;\n clearable?: boolean;\n onClear?: () => void;\n clearLabel?: string;\n multiline?: boolean;\n monospace?: boolean;\n password?: boolean;\n markdown?: boolean;\n onSubmit?: () => void;\n lines?: number;\n abbreviations?: Record<string, string>;\n completions?: readonly Completion[];\n };\n\nexport function TextInput(props: TextInputProps): JSX.Element {\n const messages = useUiMessages();\n const inputMessages = useInputMessages();\n const [local, rest] = splitProps(props, [\n \"activeIcon\",\n \"aria-describedby\",\n \"aria-label\",\n \"class\",\n \"clearLabel\",\n \"clearable\",\n \"completions\",\n \"description\",\n \"error\",\n \"externalErrorId\",\n \"icon\",\n \"id\",\n \"label\",\n \"lines\",\n \"markdown\",\n \"minLength\",\n \"maxLength\",\n \"monospace\",\n \"multiline\",\n \"onClear\",\n \"onValueCommit\",\n \"onSubmit\",\n \"onValueChange\",\n \"password\",\n \"prefix\",\n \"required\",\n \"suffix\",\n \"type\",\n \"value\",\n \"variant\",\n \"abbreviations\",\n ]);\n const meta = createFieldMeta(local.id);\n const value = () => resolveMaybeAccessor(local.value) ?? \"\";\n const error = () => resolveMaybeAccessor(local.error);\n // HTML IDs are single nonempty tokens; numeric starts and punctuation are valid.\n const externalErrorId = () => {\n const id = local.externalErrorId;\n return id && !/[\\t\\n\\f\\r ]/.test(id) ? id : undefined;\n };\n const controlMeta = {\n ...meta,\n get errorId() {\n return externalErrorId() ?? meta.errorId;\n },\n };\n const [passwordVisible, setPasswordVisible] = createSignal(false);\n const multiline = () => Boolean(local.multiline || local.markdown);\n const compact = () => local.variant === \"compact\";\n const icon = () =>\n local.icon === false\n ? \"\"\n : (local.icon ?? (local.variant === \"ai\" ? \"ti ti-sparkles\" : local.markdown ? \"ti ti-markdown\" : \"ti ti-cursor-text\"));\n // A custom icon stays while typing (a search field keeps its magnifier); only the default icon switches to the pencil.\n const activeIcon = () => local.activeIcon ?? (local.icon || undefined) ?? (local.variant === \"ai\" ? \"ti ti-sparkles\" : \"ti ti-pencil\");\n // Names, addresses and passwords are typed exactly: phone keyboards must not capitalize or \"correct\" them.\n const verbatim = () =>\n local.password || local.type === \"email\" || local.type === \"url\" || /\\b(username|email|url)\\b/.test(String(rest.autocomplete ?? \"\"));\n const input = (next: string) => local.onValueChange?.(next);\n const commit = (next: string) => local.onValueCommit?.(next);\n const clear = () => {\n if (local.onClear) {\n local.onClear();\n return;\n }\n commitFieldValue(local, \"\");\n };\n\n return (\n <Show\n when={local.markdown}\n fallback={\n <Field\n class={local.class}\n label={local.label}\n description={local.description}\n error={externalErrorId() ? undefined : error()}\n meta={meta}\n required={local.required}\n disabled={rest.disabled}\n >\n <div\n class=\"k2b-input-shell k2b-text-input\"\n data-variant={compact() ? \"compact\" : undefined}\n data-invalid={error() ? \"true\" : undefined}\n data-ai={local.variant === \"ai\" ? \"true\" : undefined}\n data-multiline={multiline() ? \"true\" : undefined}\n data-monospace={local.monospace ? \"true\" : undefined}\n style={multiline() ? { \"--k2b-editor-lines\": String(local.lines ?? 3) } : undefined}\n >\n <Show when={!compact() && local.icon !== false}>\n <span class=\"k2b-input-shell__icon k2b-text-input__icon\" aria-hidden=\"true\">\n <i class={icon()} />\n <i class={activeIcon()} />\n </span>\n </Show>\n <Show when={local.prefix}>\n <span class=\"k2b-input-shell__affix\">{local.prefix}</span>\n </Show>\n <Show\n when={multiline()}\n fallback={\n <input\n autocapitalize={verbatim() ? \"none\" : undefined}\n autocorrect={verbatim() ? \"off\" : undefined}\n spellcheck={verbatim() ? false : undefined}\n {...rest}\n id={meta.controlId}\n class=\"k2b-input\"\n size={rest.size ?? (compact() ? 9 : undefined)}\n type={local.password && !passwordVisible() ? \"password\" : (local.type ?? \"text\")}\n value={value()}\n minlength={local.minLength}\n maxlength={local.maxLength}\n required={local.required}\n {...fieldControlAria(controlMeta, local)}\n onInput={(event) => {\n input(event.currentTarget.value);\n }}\n onChange={(event) => commit(event.currentTarget.value)}\n onKeyDown={(event) => {\n if (local.onSubmit && event.key === \"Enter\" && !event.shiftKey && !event.metaKey) {\n event.preventDefault();\n local.onSubmit();\n }\n }}\n />\n }\n >\n <textarea\n {...(rest as unknown as JSX.TextareaHTMLAttributes<HTMLTextAreaElement>)}\n id={meta.controlId}\n class=\"k2b-input k2b-text-input__textarea\"\n value={value()}\n rows={local.lines ?? 3}\n required={local.required}\n minlength={local.minLength}\n maxlength={local.maxLength}\n {...fieldControlAria(controlMeta, local)}\n onInput={(event) => {\n input(event.currentTarget.value);\n }}\n onChange={(event) => commit(event.currentTarget.value)}\n onKeyDown={(event) => {\n if (local.onSubmit && event.key === \"Enter\" && !event.shiftKey && !event.metaKey) {\n event.preventDefault();\n local.onSubmit();\n }\n }}\n >\n {/* HTML consumes one leading newline in textarea content. */}\n {isServer ? `\\n${value()}` : undefined}\n </textarea>\n </Show>\n <Show when={local.suffix}>\n <span class=\"k2b-input-shell__affix\">{local.suffix}</span>\n </Show>\n <Show when={local.clearable && value() && !multiline() && !local.password && !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={clear}\n >\n <i class=\"ti ti-x\" aria-hidden=\"true\" />\n </button>\n </Show>\n <Show when={local.password && !multiline()}>\n <button\n type=\"button\"\n class=\"k2b-input-shell__clear\"\n aria-label={passwordVisible() ? inputMessages().hidePassword : inputMessages().showPassword}\n aria-pressed={passwordVisible()}\n disabled={rest.disabled}\n onClick={() => setPasswordVisible((visible) => !visible)}\n >\n <i class={passwordVisible() ? \"ti ti-eye-off\" : \"ti ti-eye\"} aria-hidden=\"true\" />\n </button>\n </Show>\n </div>\n </Field>\n }\n >\n <MarkdownEditor\n class={local.class}\n label={local.label}\n description={local.description}\n error={error()}\n id={meta.controlId}\n name={rest.name}\n value={value()}\n onValueChange={input}\n onValueCommit={local.onValueCommit}\n onSubmit={local.onSubmit}\n placeholder={rest.placeholder}\n disabled={rest.disabled}\n required={local.required}\n lines={local.lines}\n maxLength={local.maxLength}\n spellcheck={rest.spellcheck === undefined ? undefined : rest.spellcheck === true || rest.spellcheck === \"true\"}\n abbreviations={local.abbreviations}\n completions={local.completions}\n aria-label={local[\"aria-label\"]}\n aria-describedby={local[\"aria-describedby\"]}\n />\n </Show>\n );\n}\n\nexport default TextInput;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":[],"sources":["inputs/TextInput.tsx"],"sourcesContent":["import { createSignal, type JSX, Show, splitProps } from \"solid-js\";\nimport { isServer } from \"solid-js/web\";\nimport { createFieldMeta, Field, fieldControlAria } from \"../internal/field\";\nimport { useUiMessages } from \"../intl/messages\";\nimport type { Completion } from \"./completion\";\nimport type { ValueFieldProps } from \"./field-contract\";\nimport { commitFieldValue, resolveMaybeAccessor } from \"./field-contract\";\nimport { useInputMessages } from \"./input-messages\";\nimport { MarkdownEditor } from \"./markdown/MarkdownEditor\";\n\nexport type TextInputProps = Omit<\n JSX.InputHTMLAttributes<HTMLInputElement>,\n \"onChange\" | \"onInput\" | \"prefix\" | \"suffix\" | \"type\" | \"value\" | keyof ValueFieldProps<string>\n> &\n ValueFieldProps<string> & {\n minLength?: number;\n maxLength?: number;\n type?: \"text\" | \"search\" | \"email\" | \"url\" | \"tel\";\n variant?: \"default\" | \"ai\" | \"compact\";\n /** Set false for a plain field without a leading icon. */\n icon?: string | false;\n activeIcon?: string;\n /** ID of a consumer-owned visible error; caller owns its announcement. Native controls only. */\n externalErrorId?: string;\n prefix?: JSX.Element;\n suffix?: JSX.Element;\n clearable?: boolean;\n onClear?: () => void;\n clearLabel?: string;\n multiline?: boolean;\n monospace?: boolean;\n password?: boolean;\n markdown?: boolean;\n onSubmit?: () => void;\n lines?: number;\n abbreviations?: Record<string, string>;\n completions?: readonly Completion[];\n };\n\nexport function TextInput(props: TextInputProps): JSX.Element {\n const messages = useUiMessages();\n const inputMessages = useInputMessages();\n const [local, rest] = splitProps(props, [\n \"activeIcon\",\n \"aria-describedby\",\n \"aria-label\",\n \"class\",\n \"clearLabel\",\n \"clearable\",\n \"completions\",\n \"description\",\n \"error\",\n \"externalErrorId\",\n \"icon\",\n \"id\",\n \"label\",\n \"lines\",\n \"markdown\",\n \"minLength\",\n \"maxLength\",\n \"onKeyDown\",\n \"monospace\",\n \"multiline\",\n \"onClear\",\n \"onValueCommit\",\n \"onSubmit\",\n \"onValueChange\",\n \"password\",\n \"prefix\",\n \"required\",\n \"suffix\",\n \"type\",\n \"value\",\n \"variant\",\n \"abbreviations\",\n ]);\n const meta = createFieldMeta(local.id);\n const value = () => resolveMaybeAccessor(local.value) ?? \"\";\n const error = () => resolveMaybeAccessor(local.error);\n // HTML IDs are single nonempty tokens; numeric starts and punctuation are valid.\n const externalErrorId = () => {\n const id = local.externalErrorId;\n return id && !/[\\t\\n\\f\\r ]/.test(id) ? id : undefined;\n };\n const controlMeta = {\n ...meta,\n get errorId() {\n return externalErrorId() ?? meta.errorId;\n },\n };\n const [passwordVisible, setPasswordVisible] = createSignal(false);\n const multiline = () => Boolean(local.multiline || local.markdown);\n const compact = () => local.variant === \"compact\";\n const icon = () =>\n local.icon === false\n ? \"\"\n : (local.icon ?? (local.variant === \"ai\" ? \"ti ti-sparkles\" : local.markdown ? \"ti ti-markdown\" : \"ti ti-cursor-text\"));\n // A custom icon stays while typing (a search field keeps its magnifier); only the default icon switches to the pencil.\n const activeIcon = () => local.activeIcon ?? (local.icon || undefined) ?? (local.variant === \"ai\" ? \"ti ti-sparkles\" : \"ti ti-pencil\");\n // Names, addresses and passwords are typed exactly: phone keyboards must not capitalize or \"correct\" them.\n const verbatim = () =>\n local.password || local.type === \"email\" || local.type === \"url\" || /\\b(username|email|url)\\b/.test(String(rest.autocomplete ?? \"\"));\n const input = (next: string) => local.onValueChange?.(next);\n const commit = (next: string) => local.onValueCommit?.(next);\n const submitOnEnter = (event: KeyboardEvent) => {\n if (local.onSubmit && event.key === \"Enter\" && !event.shiftKey && !event.metaKey) {\n event.preventDefault();\n local.onSubmit();\n }\n };\n /** The caller's key handler runs first; Enter submits unless it handled the key. */\n const keyDown: JSX.EventHandler<HTMLInputElement, KeyboardEvent> = (event) => {\n const handler = local.onKeyDown;\n if (typeof handler === \"function\") handler(event);\n else if (Array.isArray(handler)) handler[0](handler[1], event);\n if (!event.defaultPrevented) submitOnEnter(event);\n };\n const clear: JSX.EventHandler<HTMLButtonElement, MouseEvent> = (event) => {\n // Clearing removes the button. Return to the field before notifying the caller, whose handler\n // may deliberately navigate or move focus somewhere else.\n event.currentTarget.ownerDocument.getElementById(meta.controlId)?.focus();\n if (local.onClear) {\n local.onClear();\n return;\n }\n commitFieldValue(local, \"\");\n };\n\n return (\n <Show\n when={local.markdown}\n fallback={\n <Field\n class={local.class}\n label={local.label}\n description={local.description}\n error={externalErrorId() ? undefined : error()}\n meta={meta}\n required={local.required}\n disabled={rest.disabled}\n >\n <div\n class=\"k2b-input-shell k2b-text-input\"\n data-variant={compact() ? \"compact\" : undefined}\n data-invalid={error() ? \"true\" : undefined}\n data-ai={local.variant === \"ai\" ? \"true\" : undefined}\n data-multiline={multiline() ? \"true\" : undefined}\n data-monospace={local.monospace ? \"true\" : undefined}\n style={multiline() ? { \"--k2b-editor-lines\": String(local.lines ?? 3) } : undefined}\n >\n <Show when={!compact() && local.icon !== false}>\n <span class=\"k2b-input-shell__icon k2b-text-input__icon\" aria-hidden=\"true\">\n <i class={icon()} />\n <i class={activeIcon()} />\n </span>\n </Show>\n <Show when={local.prefix}>\n <span class=\"k2b-input-shell__affix\">{local.prefix}</span>\n </Show>\n <Show\n when={multiline()}\n fallback={\n <input\n autocapitalize={verbatim() ? \"none\" : undefined}\n autocorrect={verbatim() ? \"off\" : undefined}\n spellcheck={verbatim() ? false : undefined}\n {...rest}\n id={meta.controlId}\n class=\"k2b-input\"\n size={rest.size ?? (compact() ? 9 : undefined)}\n type={local.password && !passwordVisible() ? \"password\" : (local.type ?? \"text\")}\n value={value()}\n minlength={local.minLength}\n maxlength={local.maxLength}\n required={local.required}\n {...fieldControlAria(controlMeta, local)}\n onInput={(event) => {\n input(event.currentTarget.value);\n }}\n onChange={(event) => commit(event.currentTarget.value)}\n onKeyDown={keyDown}\n />\n }\n >\n <textarea\n {...(rest as unknown as JSX.TextareaHTMLAttributes<HTMLTextAreaElement>)}\n id={meta.controlId}\n class=\"k2b-input k2b-text-input__textarea\"\n value={value()}\n rows={local.lines ?? 3}\n required={local.required}\n minlength={local.minLength}\n maxlength={local.maxLength}\n {...fieldControlAria(controlMeta, local)}\n onInput={(event) => {\n input(event.currentTarget.value);\n }}\n onChange={(event) => commit(event.currentTarget.value)}\n onKeyDown={submitOnEnter}\n >\n {/* HTML consumes one leading newline in textarea content. */}\n {isServer ? `\\n${value()}` : undefined}\n </textarea>\n </Show>\n <Show when={local.suffix}>\n <span class=\"k2b-input-shell__affix\">{local.suffix}</span>\n </Show>\n <Show when={local.clearable && value() && !multiline() && !local.password && !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={clear}\n >\n <i class=\"ti ti-x\" aria-hidden=\"true\" />\n </button>\n </Show>\n <Show when={local.password && !multiline()}>\n <button\n type=\"button\"\n class=\"k2b-input-shell__clear\"\n aria-label={passwordVisible() ? inputMessages().hidePassword : inputMessages().showPassword}\n aria-pressed={passwordVisible()}\n disabled={rest.disabled}\n onClick={() => setPasswordVisible((visible) => !visible)}\n >\n <i class={passwordVisible() ? \"ti ti-eye-off\" : \"ti ti-eye\"} aria-hidden=\"true\" />\n </button>\n </Show>\n </div>\n </Field>\n }\n >\n <MarkdownEditor\n class={local.class}\n label={local.label}\n description={local.description}\n error={error()}\n id={meta.controlId}\n name={rest.name}\n value={value()}\n onValueChange={input}\n onValueCommit={local.onValueCommit}\n onSubmit={local.onSubmit}\n placeholder={rest.placeholder}\n disabled={rest.disabled}\n required={local.required}\n lines={local.lines}\n maxLength={local.maxLength}\n spellcheck={rest.spellcheck === undefined ? undefined : rest.spellcheck === true || rest.spellcheck === \"true\"}\n abbreviations={local.abbreviations}\n completions={local.completions}\n aria-label={local[\"aria-label\"]}\n aria-describedby={local[\"aria-describedby\"]}\n />\n </Show>\n );\n}\n\nexport default TextInput;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -4,6 +4,10 @@ export { Checkbox } from "./Checkbox";
|
|
|
4
4
|
export { CheckboxCard } from "./CheckboxCard";
|
|
5
5
|
export { ChoiceChips } from "./ChoiceChips";
|
|
6
6
|
export { ColorInput, PinInput, Slider } from "./ChoiceInputs";
|
|
7
|
+
export { ChoiceList } from "./ChoiceList";
|
|
8
|
+
export { ChoiceSlider } from "./ChoiceSlider";
|
|
9
|
+
export { ChoiceTiles } from "./ChoiceTiles";
|
|
10
|
+
export { ColorChoices } from "./ColorChoices";
|
|
7
11
|
export { Combobox } from "./Combobox";
|
|
8
12
|
export { abbreviations } from "./completion";
|
|
9
13
|
export { DatePicker, DateRangePicker, DateTimePicker } from "./DatePicker";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["inputs/index.ts"],"sourcesContent":["export type { AutocompleteEditorProps } from \"./AutocompleteEditor\";\nexport { AutocompleteEditor } from \"./AutocompleteEditor\";\nexport type {\n AutocompleteSelectOption,\n AutocompleteSelectProps,\n AutocompleteSelectSearchResult,\n} from \"./AutocompleteSelect\";\nexport { AutocompleteSelect } from \"./AutocompleteSelect\";\nexport type { CheckboxProps } from \"./Checkbox\";\nexport { Checkbox } from \"./Checkbox\";\nexport type { CheckboxCardProps } from \"./CheckboxCard\";\nexport { CheckboxCard } from \"./CheckboxCard\";\nexport type { ChoiceChipOption, ChoiceChipsProps } from \"./ChoiceChips\";\nexport { ChoiceChips } from \"./ChoiceChips\";\nexport type {\n ColorInputProps,\n PinInputProps,\n SliderProps,\n} from \"./ChoiceInputs\";\nexport { ColorInput, PinInput, Slider } from \"./ChoiceInputs\";\nexport type { ComboboxOption, ComboboxProps } from \"./Combobox\";\nexport { Combobox } from \"./Combobox\";\nexport type { ChoiceOption, ChoiceOptionsLoader } from \"./choice\";\nexport type {\n Completion,\n QueryContext,\n SuggestContext,\n Suggestion,\n} from \"./completion\";\nexport { abbreviations } from \"./completion\";\nexport type {\n DatePickerBaseProps,\n DatePickerProps,\n DatePreset,\n DateRangePickerProps,\n DateRangeValue,\n DateTimePickerProps,\n DurationPreset,\n} from \"./DatePicker\";\nexport { DatePicker, DateRangePicker, DateTimePicker } from \"./DatePicker\";\nexport type { EmojiPickerPopoverProps, EmojiPickerProps } from \"./emoji/EmojiPicker\";\nexport { EmojiPicker } from \"./emoji/EmojiPicker\";\nexport type { EmojiSkinTone } from \"./emoji/emoji-index\";\nexport { rememberEmoji } from \"./emoji/emoji-index\";\nexport type { FileDropDetails, FileDropOptions, FileDropRejection, FileDropTargetProps } from \"./FileDropTarget\";\nexport { FileDropTarget, fileDropTarget } from \"./FileDropTarget\";\nexport type { FileDropzoneProps, ImageCropperProps, ImageInputProps } from \"./FileInputs\";\nexport { FileDropzone, ImageCropper, ImageInput } from \"./FileInputs\";\nexport type { DateContext, FieldProps, MaybeAccessor, ValueFieldProps } from \"./field-contract\";\nexport { DEFAULT_ICON_GROUPS, DEFAULT_ICON_OPTIONS } from \"./icon-options\";\nexport type {\n ImageCropAspect,\n ImageCropOutput,\n ImageCropRect,\n ImageCropRotation,\n ImageCropSize,\n ImageCropSource,\n ImageCropState,\n} from \"./image-crop\";\nexport {\n clampImageCropRect,\n createCroppedImageCanvas,\n createCroppedImageDataUrl,\n getInitialImageCropRect,\n imageCropRectToPixels,\n normalizeImageCropRotation,\n resizeImageCropAroundCenter,\n rotateImageCropRight,\n} from \"./image-crop\";\nexport type {\n MultiSelectFetchDataFn,\n MultiSelectInputProps,\n MultiSelectOption,\n} from \"./MultiSelectInput\";\nexport { MultiSelectInput } from \"./MultiSelectInput\";\nexport type { MarkdownEditorProps } from \"./markdown/MarkdownEditor\";\nexport { MarkdownEditor } from \"./markdown/MarkdownEditor\";\nexport type { NumberInputProps } from \"./NumberInput\";\nexport { NumberInput } from \"./NumberInput\";\nexport type { QrScannerError, QrScannerProps } from \"./QrScanner\";\nexport { QrScanner } from \"./QrScanner\";\nexport type {\n RichSelectFact,\n RichSelectFooter,\n RichSelectItem,\n RichSelectProps,\n RichSelectSection,\n RichSelectStatus,\n} from \"./RichSelect\";\nexport { RichSelect, RichSelectFacts } from \"./RichSelect\";\nexport type { ChoiceAppearance, SelectGridSize, SelectGroup, SelectOption, SelectProps, SelectSourceOption, SelectView } from \"./Select\";\nexport { Select } from \"./Select\";\nexport type { SelectChipOption, SelectChipProps } from \"./SelectChip\";\nexport { SelectChip } from \"./SelectChip\";\nexport type { SignatureInputProps } from \"./SignatureInput\";\nexport { SignatureInput } from \"./SignatureInput\";\nexport type { IconInputProps, IconOption } from \"./SpecialInputs\";\nexport { IconInput } from \"./SpecialInputs\";\nexport type { SwitchProps } from \"./Switch\";\nexport { Switch } from \"./Switch\";\nexport type { SignaturePngOptions, SignatureValue } from \"./signature\";\nexport { parseSignature, signatureToPng } from \"./signature\";\nexport type { TagEditorItem, TagEditorLabels, TagEditorProps, TagEditorValue } from \"./TagEditor\";\nexport { TagEditor } from \"./TagEditor\";\nexport type { TagsInputProps } from \"./TagsInput\";\nexport { TagsInput } from \"./TagsInput\";\nexport type {\n TemplateEditorLayout,\n TemplateEditorProps,\n TemplatePreviewProps,\n TemplateSampleDataProps,\n TemplateVariable,\n TemplateVariableKind,\n} from \"./TemplateEditor\";\nexport {\n createTemplateEditorPanesLayout,\n TemplateEditor,\n TemplatePreview,\n TemplateSampleData,\n} from \"./TemplateEditor\";\nexport type { TextInputProps } from \"./TextInput\";\nexport { TextInput } from \"./TextInput\";\n"],"mappings":"AACA,SAAS,kBAAkB,QAAQ,sBAAsB;AAMzD,SAAS,kBAAkB,QAAQ,sBAAsB;AAEzD,SAAS,QAAQ,QAAQ,YAAY;AAErC,SAAS,YAAY,QAAQ,gBAAgB;AAE7C,SAAS,WAAW,QAAQ,eAAe;AAM3C,SAAS,UAAU,EAAE,QAAQ,EAAE,MAAM,QAAQ,gBAAgB;AAE7D,SAAS,QAAQ,QAAQ,YAAY;AAQrC,SAAS,aAAa,QAAQ,cAAc;AAU5C,SAAS,UAAU,EAAE,eAAe,EAAE,cAAc,QAAQ,cAAc;AAE1E,SAAS,WAAW,QAAQ,qBAAqB;AAEjD,SAAS,aAAa,QAAQ,qBAAqB;AAEnD,SAAS,cAAc,EAAE,cAAc,QAAQ,kBAAkB;AAEjE,SAAS,YAAY,EAAE,YAAY,EAAE,UAAU,QAAQ,cAAc;AAErE,SAAS,mBAAmB,EAAE,oBAAoB,QAAQ,gBAAgB;AAU1E,SACE,kBAAkB,EAClB,wBAAwB,EACxB,yBAAyB,EACzB,uBAAuB,EACvB,qBAAqB,EACrB,0BAA0B,EAC1B,2BAA2B,EAC3B,oBAAoB,QACf,cAAc;AAMrB,SAAS,gBAAgB,QAAQ,oBAAoB;AAErD,SAAS,cAAc,QAAQ,2BAA2B;AAE1D,SAAS,WAAW,QAAQ,eAAe;AAE3C,SAAS,SAAS,QAAQ,aAAa;AASvC,SAAS,UAAU,EAAE,eAAe,QAAQ,cAAc;AAE1D,SAAS,MAAM,QAAQ,UAAU;AAEjC,SAAS,UAAU,QAAQ,cAAc;AAEzC,SAAS,cAAc,QAAQ,kBAAkB;AAEjD,SAAS,SAAS,QAAQ,iBAAiB;AAE3C,SAAS,MAAM,QAAQ,UAAU;AAEjC,SAAS,cAAc,EAAE,cAAc,QAAQ,aAAa;AAE5D,SAAS,SAAS,QAAQ,aAAa;AAEvC,SAAS,SAAS,QAAQ,aAAa;AASvC,SACE,+BAA+B,EAC/B,cAAc,EACd,eAAe,EACf,kBAAkB,QACb,kBAAkB;AAEzB,SAAS,SAAS,QAAQ,aAAa","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":[],"sources":["inputs/index.ts"],"sourcesContent":["export type { AutocompleteEditorProps } from \"./AutocompleteEditor\";\nexport { AutocompleteEditor } from \"./AutocompleteEditor\";\nexport type {\n AutocompleteSelectOption,\n AutocompleteSelectProps,\n AutocompleteSelectSearchResult,\n} from \"./AutocompleteSelect\";\nexport { AutocompleteSelect } from \"./AutocompleteSelect\";\nexport type { CheckboxProps } from \"./Checkbox\";\nexport { Checkbox } from \"./Checkbox\";\nexport type { CheckboxCardProps } from \"./CheckboxCard\";\nexport { CheckboxCard } from \"./CheckboxCard\";\nexport type { ChoiceChipOption, ChoiceChipsProps } from \"./ChoiceChips\";\nexport { ChoiceChips } from \"./ChoiceChips\";\nexport type {\n ColorInputProps,\n PinInputProps,\n SliderProps,\n} from \"./ChoiceInputs\";\nexport { ColorInput, PinInput, Slider } from \"./ChoiceInputs\";\nexport type { ChoiceListOption, ChoiceListProps } from \"./ChoiceList\";\nexport { ChoiceList } from \"./ChoiceList\";\nexport type { ChoiceSliderOption, ChoiceSliderProps } from \"./ChoiceSlider\";\nexport { ChoiceSlider } from \"./ChoiceSlider\";\nexport type { ChoiceTileOption, ChoiceTilesProps } from \"./ChoiceTiles\";\nexport { ChoiceTiles } from \"./ChoiceTiles\";\nexport type { ColorChoiceOption, ColorChoicesProps } from \"./ColorChoices\";\nexport { ColorChoices } from \"./ColorChoices\";\nexport type { ComboboxOption, ComboboxProps } from \"./Combobox\";\nexport { Combobox } from \"./Combobox\";\nexport type { ChoiceOption, ChoiceOptionsLoader } from \"./choice\";\nexport type {\n Completion,\n QueryContext,\n SuggestContext,\n Suggestion,\n} from \"./completion\";\nexport { abbreviations } from \"./completion\";\nexport type {\n DatePickerBaseProps,\n DatePickerProps,\n DatePreset,\n DateRangePickerProps,\n DateRangeValue,\n DateTimePickerProps,\n DurationPreset,\n} from \"./DatePicker\";\nexport { DatePicker, DateRangePicker, DateTimePicker } from \"./DatePicker\";\nexport type { EmojiPickerPopoverProps, EmojiPickerProps } from \"./emoji/EmojiPicker\";\nexport { EmojiPicker } from \"./emoji/EmojiPicker\";\nexport type { EmojiSkinTone } from \"./emoji/emoji-index\";\nexport { rememberEmoji } from \"./emoji/emoji-index\";\nexport type { FileDropDetails, FileDropOptions, FileDropRejection, FileDropTargetProps } from \"./FileDropTarget\";\nexport { FileDropTarget, fileDropTarget } from \"./FileDropTarget\";\nexport type { FileDropzoneProps, ImageCropperProps, ImageInputProps } from \"./FileInputs\";\nexport { FileDropzone, ImageCropper, ImageInput } from \"./FileInputs\";\nexport type { DateContext, FieldProps, MaybeAccessor, ValueFieldProps } from \"./field-contract\";\nexport { DEFAULT_ICON_GROUPS, DEFAULT_ICON_OPTIONS } from \"./icon-options\";\nexport type {\n ImageCropAspect,\n ImageCropOutput,\n ImageCropRect,\n ImageCropRotation,\n ImageCropSize,\n ImageCropSource,\n ImageCropState,\n} from \"./image-crop\";\nexport {\n clampImageCropRect,\n createCroppedImageCanvas,\n createCroppedImageDataUrl,\n getInitialImageCropRect,\n imageCropRectToPixels,\n normalizeImageCropRotation,\n resizeImageCropAroundCenter,\n rotateImageCropRight,\n} from \"./image-crop\";\nexport type {\n MultiSelectFetchDataFn,\n MultiSelectInputProps,\n MultiSelectOption,\n} from \"./MultiSelectInput\";\nexport { MultiSelectInput } from \"./MultiSelectInput\";\nexport type { MarkdownEditorProps } from \"./markdown/MarkdownEditor\";\nexport { MarkdownEditor } from \"./markdown/MarkdownEditor\";\nexport type { NumberInputProps } from \"./NumberInput\";\nexport { NumberInput } from \"./NumberInput\";\nexport type { QrScannerError, QrScannerProps } from \"./QrScanner\";\nexport { QrScanner } from \"./QrScanner\";\nexport type {\n RichSelectFact,\n RichSelectFooter,\n RichSelectItem,\n RichSelectProps,\n RichSelectSection,\n RichSelectStatus,\n} from \"./RichSelect\";\nexport { RichSelect, RichSelectFacts } from \"./RichSelect\";\nexport type { ChoiceAppearance, SelectGridSize, SelectGroup, SelectOption, SelectProps, SelectSourceOption, SelectView } from \"./Select\";\nexport { Select } from \"./Select\";\nexport type { SelectChipOption, SelectChipProps } from \"./SelectChip\";\nexport { SelectChip } from \"./SelectChip\";\nexport type { SignatureInputProps } from \"./SignatureInput\";\nexport { SignatureInput } from \"./SignatureInput\";\nexport type { IconInputProps, IconOption } from \"./SpecialInputs\";\nexport { IconInput } from \"./SpecialInputs\";\nexport type { SwitchProps } from \"./Switch\";\nexport { Switch } from \"./Switch\";\nexport type { SignaturePngOptions, SignatureValue } from \"./signature\";\nexport { parseSignature, signatureToPng } from \"./signature\";\nexport type { TagEditorItem, TagEditorLabels, TagEditorProps, TagEditorValue } from \"./TagEditor\";\nexport { TagEditor } from \"./TagEditor\";\nexport type { TagsInputProps } from \"./TagsInput\";\nexport { TagsInput } from \"./TagsInput\";\nexport type {\n TemplateEditorLayout,\n TemplateEditorProps,\n TemplatePreviewProps,\n TemplateSampleDataProps,\n TemplateVariable,\n TemplateVariableKind,\n} from \"./TemplateEditor\";\nexport {\n createTemplateEditorPanesLayout,\n TemplateEditor,\n TemplatePreview,\n TemplateSampleData,\n} from \"./TemplateEditor\";\nexport type { TextInputProps } from \"./TextInput\";\nexport { TextInput } from \"./TextInput\";\n"],"mappings":"AACA,SAAS,kBAAkB,QAAQ,sBAAsB;AAMzD,SAAS,kBAAkB,QAAQ,sBAAsB;AAEzD,SAAS,QAAQ,QAAQ,YAAY;AAErC,SAAS,YAAY,QAAQ,gBAAgB;AAE7C,SAAS,WAAW,QAAQ,eAAe;AAM3C,SAAS,UAAU,EAAE,QAAQ,EAAE,MAAM,QAAQ,gBAAgB;AAE7D,SAAS,UAAU,QAAQ,cAAc;AAEzC,SAAS,YAAY,QAAQ,gBAAgB;AAE7C,SAAS,WAAW,QAAQ,eAAe;AAE3C,SAAS,YAAY,QAAQ,gBAAgB;AAE7C,SAAS,QAAQ,QAAQ,YAAY;AAQrC,SAAS,aAAa,QAAQ,cAAc;AAU5C,SAAS,UAAU,EAAE,eAAe,EAAE,cAAc,QAAQ,cAAc;AAE1E,SAAS,WAAW,QAAQ,qBAAqB;AAEjD,SAAS,aAAa,QAAQ,qBAAqB;AAEnD,SAAS,cAAc,EAAE,cAAc,QAAQ,kBAAkB;AAEjE,SAAS,YAAY,EAAE,YAAY,EAAE,UAAU,QAAQ,cAAc;AAErE,SAAS,mBAAmB,EAAE,oBAAoB,QAAQ,gBAAgB;AAU1E,SACE,kBAAkB,EAClB,wBAAwB,EACxB,yBAAyB,EACzB,uBAAuB,EACvB,qBAAqB,EACrB,0BAA0B,EAC1B,2BAA2B,EAC3B,oBAAoB,QACf,cAAc;AAMrB,SAAS,gBAAgB,QAAQ,oBAAoB;AAErD,SAAS,cAAc,QAAQ,2BAA2B;AAE1D,SAAS,WAAW,QAAQ,eAAe;AAE3C,SAAS,SAAS,QAAQ,aAAa;AASvC,SAAS,UAAU,EAAE,eAAe,QAAQ,cAAc;AAE1D,SAAS,MAAM,QAAQ,UAAU;AAEjC,SAAS,UAAU,QAAQ,cAAc;AAEzC,SAAS,cAAc,QAAQ,kBAAkB;AAEjD,SAAS,SAAS,QAAQ,iBAAiB;AAE3C,SAAS,MAAM,QAAQ,UAAU;AAEjC,SAAS,cAAc,EAAE,cAAc,QAAQ,aAAa;AAE5D,SAAS,SAAS,QAAQ,aAAa;AAEvC,SAAS,SAAS,QAAQ,aAAa;AASvC,SACE,+BAA+B,EAC/B,cAAc,EACd,eAAe,EACf,kBAAkB,QACb,kBAAkB;AAEzB,SAAS,SAAS,QAAQ,aAAa","ignoreList":[]}
|
|
@@ -7,12 +7,14 @@ const qrMessages = i18n.define({
|
|
|
7
7
|
qrCameraPreview: "Camera preview for scanning a QR code",
|
|
8
8
|
qrCameraStarting: "Starting camera…",
|
|
9
9
|
qrCameraInstructions: "Point the camera at a QR code.",
|
|
10
|
+
qrCameraStalled: "The camera is on, but its picture did not start.",
|
|
10
11
|
qrCameraPrivacy: "Camera images stay on this device."
|
|
11
12
|
},
|
|
12
13
|
de: {
|
|
13
14
|
qrCameraPreview: "Kameravorschau zum Scannen eines QR-Codes",
|
|
14
15
|
qrCameraStarting: "Kamera wird gestartet…",
|
|
15
16
|
qrCameraInstructions: "Richte die Kamera auf einen QR-Code.",
|
|
17
|
+
qrCameraStalled: "Die Kamera ist an, aber ihr Bild ist nicht gestartet.",
|
|
16
18
|
qrCameraPrivacy: "Kamerabilder bleiben auf diesem Gerät."
|
|
17
19
|
}
|
|
18
20
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["inputs/qr-messages.ts"],"sourcesContent":["import { i18n } from \"@k2b/stdlib\";\nimport { useLocale } from \"../intl/locale\";\n\nconst qrMessages = i18n.define({\n baseLocale: \"en\",\n messages: {\n en: {\n qrCameraPreview: \"Camera preview for scanning a QR code\",\n qrCameraStarting: \"Starting camera…\",\n qrCameraInstructions: \"Point the camera at a QR code.\",\n qrCameraPrivacy: \"Camera images stay on this device.\",\n },\n de: {\n qrCameraPreview: \"Kameravorschau zum Scannen eines QR-Codes\",\n qrCameraStarting: \"Kamera wird gestartet…\",\n qrCameraInstructions: \"Richte die Kamera auf einen QR-Code.\",\n qrCameraPrivacy: \"Kamerabilder bleiben auf diesem Gerät.\",\n },\n },\n});\n\nexport type QrMessages = ReturnType<(typeof qrMessages)[\"resolve\"]>[\"t\"];\n\n/** Resolved from the inherited render locale. */\nexport const useQrMessages = (): (() => QrMessages) => {\n const locale = useLocale();\n return () => qrMessages.resolve([locale()]).t;\n};\n\nexport const checkQrMessages = () => qrMessages.check();\n"],"mappings":"AAAA,SAAS,IAAI,QAAQ,aAAa;AAClC,SAAS,SAAS,QAAQ,gBAAgB;AAE1C,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;EAC7B,UAAU,EAAE,IAAI;EAChB,QAAQ,EAAE;IACR,EAAE,EAAE;MACF,eAAe,EAAE,uCAAuC;MACxD,gBAAgB,EAAE,kBAAkB;MACpC,oBAAoB,EAAE,gCAAgC;MACtD,eAAe,EAAE;IACnB,CAAC;IACD,EAAE,EAAE;MACF,eAAe,EAAE,2CAA2C;MAC5D,gBAAgB,EAAE,wBAAwB;MAC1C,oBAAoB,EAAE,sCAAsC;MAC5D,eAAe,EAAE;IACnB;EACF;AACF,CAAC,CAAC;AAIF;AACA,OAAO,MAAM,aAAa,GAAG,MAA0B;EACrD,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC;EAC1B,OAAO,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,OAAO,MAAM,eAAe,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":[],"sources":["inputs/qr-messages.ts"],"sourcesContent":["import { i18n } from \"@k2b/stdlib\";\nimport { useLocale } from \"../intl/locale\";\n\nconst qrMessages = i18n.define({\n baseLocale: \"en\",\n messages: {\n en: {\n qrCameraPreview: \"Camera preview for scanning a QR code\",\n qrCameraStarting: \"Starting camera…\",\n qrCameraInstructions: \"Point the camera at a QR code.\",\n qrCameraStalled: \"The camera is on, but its picture did not start.\",\n qrCameraPrivacy: \"Camera images stay on this device.\",\n },\n de: {\n qrCameraPreview: \"Kameravorschau zum Scannen eines QR-Codes\",\n qrCameraStarting: \"Kamera wird gestartet…\",\n qrCameraInstructions: \"Richte die Kamera auf einen QR-Code.\",\n qrCameraStalled: \"Die Kamera ist an, aber ihr Bild ist nicht gestartet.\",\n qrCameraPrivacy: \"Kamerabilder bleiben auf diesem Gerät.\",\n },\n },\n});\n\nexport type QrMessages = ReturnType<(typeof qrMessages)[\"resolve\"]>[\"t\"];\n\n/** Resolved from the inherited render locale. */\nexport const useQrMessages = (): (() => QrMessages) => {\n const locale = useLocale();\n return () => qrMessages.resolve([locale()]).t;\n};\n\nexport const checkQrMessages = () => qrMessages.check();\n"],"mappings":"AAAA,SAAS,IAAI,QAAQ,aAAa;AAClC,SAAS,SAAS,QAAQ,gBAAgB;AAE1C,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;EAC7B,UAAU,EAAE,IAAI;EAChB,QAAQ,EAAE;IACR,EAAE,EAAE;MACF,eAAe,EAAE,uCAAuC;MACxD,gBAAgB,EAAE,kBAAkB;MACpC,oBAAoB,EAAE,gCAAgC;MACtD,eAAe,EAAE,kDAAkD;MACnE,eAAe,EAAE;IACnB,CAAC;IACD,EAAE,EAAE;MACF,eAAe,EAAE,2CAA2C;MAC5D,gBAAgB,EAAE,wBAAwB;MAC1C,oBAAoB,EAAE,sCAAsC;MAC5D,eAAe,EAAE,uDAAuD;MACxE,eAAe,EAAE;IACnB;EACF;AACF,CAAC,CAAC;AAIF;AACA,OAAO,MAAM,aAAa,GAAG,MAA0B;EACrD,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC;EAC1B,OAAO,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,OAAO,MAAM,eAAe,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Roving focus for a single-choice radio group: arrows move and select with wrapping, Home and End select the first
|
|
3
|
+
* and last option. Returns the index to select, or `undefined` for keys the group does not handle.
|
|
4
|
+
*/
|
|
5
|
+
export const radioKeyTarget = (key, index, count) => {
|
|
6
|
+
if (count === 0) return undefined;
|
|
7
|
+
if (key === "ArrowRight" || key === "ArrowDown") return (index + 1) % count;
|
|
8
|
+
if (key === "ArrowLeft" || key === "ArrowUp") return (index - 1 + count) % count;
|
|
9
|
+
if (key === "Home") return 0;
|
|
10
|
+
if (key === "End") return count - 1;
|
|
11
|
+
return undefined;
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=radio-keys.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":["internal/radio-keys.ts"],"sourcesContent":["/**\n * Roving focus for a single-choice radio group: arrows move and select with wrapping, Home and End select the first\n * and last option. Returns the index to select, or `undefined` for keys the group does not handle.\n */\nexport const radioKeyTarget = (key: string, index: number, count: number): number | undefined => {\n if (count === 0) return undefined;\n if (key === \"ArrowRight\" || key === \"ArrowDown\") return (index + 1) % count;\n if (key === \"ArrowLeft\" || key === \"ArrowUp\") return (index - 1 + count) % count;\n if (key === \"Home\") return 0;\n if (key === \"End\") return count - 1;\n return undefined;\n};\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA,OAAO,MAAM,cAAc,GAAG,CAAC,GAAW,EAAE,KAAa,EAAE,KAAa,KAAyB;EAC/F,IAAI,KAAK,KAAK,CAAC,EAAE,OAAO,SAAS;EACjC,IAAI,GAAG,KAAK,YAAY,IAAI,GAAG,KAAK,WAAW,EAAE,OAAO,CAAC,KAAK,GAAG,CAAC,IAAI,KAAK;EAC3E,IAAI,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,SAAS,EAAE,OAAO,CAAC,KAAK,GAAG,CAAC,GAAG,KAAK,IAAI,KAAK;EAChF,IAAI,GAAG,KAAK,MAAM,EAAE,OAAO,CAAC;EAC5B,IAAI,GAAG,KAAK,KAAK,EAAE,OAAO,KAAK,GAAG,CAAC;EACnC,OAAO,SAAS;AAClB,CAAC","ignoreList":[]}
|
|
@@ -29,6 +29,8 @@ const shortcutMessages = i18n.define({
|
|
|
29
29
|
pageup: "Page up",
|
|
30
30
|
pagedown: "Page down",
|
|
31
31
|
spaceLabel: "Space",
|
|
32
|
+
click: "click",
|
|
33
|
+
clickLabel: "Click",
|
|
32
34
|
deleteLabel: "Del",
|
|
33
35
|
homeLabel: "Home",
|
|
34
36
|
endLabel: "End",
|
|
@@ -62,6 +64,8 @@ const shortcutMessages = i18n.define({
|
|
|
62
64
|
pageup: "Bild auf",
|
|
63
65
|
pagedown: "Bild ab",
|
|
64
66
|
spaceLabel: "Leertaste",
|
|
67
|
+
click: "Klick",
|
|
68
|
+
clickLabel: "Klick",
|
|
65
69
|
deleteLabel: "Entf",
|
|
66
70
|
homeLabel: "Pos1",
|
|
67
71
|
endLabel: "Ende",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["intl/shortcut-messages.ts"],"sourcesContent":["import { i18n } from \"@k2b/stdlib\";\n\nconst shortcutMessages = i18n.define({\n baseLocale: \"en\",\n messages: {\n en: {\n ctrlLabel: \"Ctrl\",\n altLabel: \"Alt\",\n shiftLabel: \"Shift\",\n metaLabel: \"Meta\",\n control: \"Control\",\n appleControl: \"Control\",\n option: \"Option\",\n shift: \"Shift\",\n command: \"Command\",\n alt: \"Alt\",\n meta: \"Meta\",\n arrowup: \"Up arrow\",\n arrowdown: \"Down arrow\",\n arrowleft: \"Left arrow\",\n arrowright: \"Right arrow\",\n enter: \"Enter\",\n escape: \"Escape\",\n tab: \"Tab\",\n space: \"Space\",\n backspace: \"Backspace\",\n delete: \"Delete\",\n home: \"Home\",\n end: \"End\",\n pageup: \"Page up\",\n pagedown: \"Page down\",\n spaceLabel: \"Space\",\n deleteLabel: \"Del\",\n homeLabel: \"Home\",\n endLabel: \"End\",\n pageupLabel: \"PgUp\",\n pagedownLabel: \"PgDn\",\n },\n de: {\n ctrlLabel: \"Strg\",\n altLabel: \"Alt\",\n shiftLabel: \"Umschalt\",\n metaLabel: \"Meta\",\n control: \"Steuerung\",\n appleControl: \"Control\",\n option: \"Wahltaste\",\n shift: \"Umschalttaste\",\n command: \"Befehlstaste\",\n alt: \"Alt\",\n meta: \"Meta\",\n arrowup: \"Pfeil nach oben\",\n arrowdown: \"Pfeil nach unten\",\n arrowleft: \"Pfeil nach links\",\n arrowright: \"Pfeil nach rechts\",\n enter: \"Eingabetaste\",\n escape: \"Escape\",\n tab: \"Tabulatortaste\",\n space: \"Leertaste\",\n backspace: \"Rücktaste\",\n delete: \"Entfernen\",\n home: \"Pos 1\",\n end: \"Ende\",\n pageup: \"Bild auf\",\n pagedown: \"Bild ab\",\n spaceLabel: \"Leertaste\",\n deleteLabel: \"Entf\",\n homeLabel: \"Pos1\",\n endLabel: \"Ende\",\n pageupLabel: \"Bild↑\",\n pagedownLabel: \"Bild↓\",\n },\n },\n});\n\n/** Imperative UI inherits the document locale when no locale is supplied. */\nexport const resolveShortcutMessages = (locale?: string) =>\n shortcutMessages.resolve([locale ?? (typeof document === \"undefined\" ? shortcutMessages.baseLocale : document.documentElement.lang)]).t;\nexport const checkShortcutMessages = () => shortcutMessages.check();\n"],"mappings":"AAAA,SAAS,IAAI,QAAQ,aAAa;AAElC,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC;EACnC,UAAU,EAAE,IAAI;EAChB,QAAQ,EAAE;IACR,EAAE,EAAE;MACF,SAAS,EAAE,MAAM;MACjB,QAAQ,EAAE,KAAK;MACf,UAAU,EAAE,OAAO;MACnB,SAAS,EAAE,MAAM;MACjB,OAAO,EAAE,SAAS;MAClB,YAAY,EAAE,SAAS;MACvB,MAAM,EAAE,QAAQ;MAChB,KAAK,EAAE,OAAO;MACd,OAAO,EAAE,SAAS;MAClB,GAAG,EAAE,KAAK;MACV,IAAI,EAAE,MAAM;MACZ,OAAO,EAAE,UAAU;MACnB,SAAS,EAAE,YAAY;MACvB,SAAS,EAAE,YAAY;MACvB,UAAU,EAAE,aAAa;MACzB,KAAK,EAAE,OAAO;MACd,MAAM,EAAE,QAAQ;MAChB,GAAG,EAAE,KAAK;MACV,KAAK,EAAE,OAAO;MACd,SAAS,EAAE,WAAW;MACtB,MAAM,EAAE,QAAQ;MAChB,IAAI,EAAE,MAAM;MACZ,GAAG,EAAE,KAAK;MACV,MAAM,EAAE,SAAS;MACjB,QAAQ,EAAE,WAAW;MACrB,UAAU,EAAE,OAAO;MACnB,WAAW,EAAE,KAAK;MAClB,SAAS,EAAE,MAAM;MACjB,QAAQ,EAAE,KAAK;MACf,WAAW,EAAE,MAAM;MACnB,aAAa,EAAE;IACjB,CAAC;IACD,EAAE,EAAE;MACF,SAAS,EAAE,MAAM;MACjB,QAAQ,EAAE,KAAK;MACf,UAAU,EAAE,UAAU;MACtB,SAAS,EAAE,MAAM;MACjB,OAAO,EAAE,WAAW;MACpB,YAAY,EAAE,SAAS;MACvB,MAAM,EAAE,WAAW;MACnB,KAAK,EAAE,eAAe;MACtB,OAAO,EAAE,cAAc;MACvB,GAAG,EAAE,KAAK;MACV,IAAI,EAAE,MAAM;MACZ,OAAO,EAAE,iBAAiB;MAC1B,SAAS,EAAE,kBAAkB;MAC7B,SAAS,EAAE,kBAAkB;MAC7B,UAAU,EAAE,mBAAmB;MAC/B,KAAK,EAAE,cAAc;MACrB,MAAM,EAAE,QAAQ;MAChB,GAAG,EAAE,gBAAgB;MACrB,KAAK,EAAE,WAAW;MAClB,SAAS,EAAE,WAAW;MACtB,MAAM,EAAE,WAAW;MACnB,IAAI,EAAE,OAAO;MACb,GAAG,EAAE,MAAM;MACX,MAAM,EAAE,UAAU;MAClB,QAAQ,EAAE,SAAS;MACnB,UAAU,EAAE,WAAW;MACvB,WAAW,EAAE,MAAM;MACnB,SAAS,EAAE,MAAM;MACjB,QAAQ,EAAE,MAAM;MAChB,WAAW,EAAE,OAAO;MACpB,aAAa,EAAE;IACjB;EACF;AACF,CAAC,CAAC;;AAEF;AACA,OAAO,MAAM,uBAAuB,GAAI,MAAe,IACrD,gBAAgB,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,OAAO,QAAQ,KAAK,WAAW,GAAG,gBAAgB,CAAC,UAAU,GAAG,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACzI,OAAO,MAAM,qBAAqB,GAAG,MAAM,gBAAgB,CAAC,KAAK,CAAC,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":[],"sources":["intl/shortcut-messages.ts"],"sourcesContent":["import { i18n } from \"@k2b/stdlib\";\n\nconst shortcutMessages = i18n.define({\n baseLocale: \"en\",\n messages: {\n en: {\n ctrlLabel: \"Ctrl\",\n altLabel: \"Alt\",\n shiftLabel: \"Shift\",\n metaLabel: \"Meta\",\n control: \"Control\",\n appleControl: \"Control\",\n option: \"Option\",\n shift: \"Shift\",\n command: \"Command\",\n alt: \"Alt\",\n meta: \"Meta\",\n arrowup: \"Up arrow\",\n arrowdown: \"Down arrow\",\n arrowleft: \"Left arrow\",\n arrowright: \"Right arrow\",\n enter: \"Enter\",\n escape: \"Escape\",\n tab: \"Tab\",\n space: \"Space\",\n backspace: \"Backspace\",\n delete: \"Delete\",\n home: \"Home\",\n end: \"End\",\n pageup: \"Page up\",\n pagedown: \"Page down\",\n spaceLabel: \"Space\",\n click: \"click\",\n clickLabel: \"Click\",\n deleteLabel: \"Del\",\n homeLabel: \"Home\",\n endLabel: \"End\",\n pageupLabel: \"PgUp\",\n pagedownLabel: \"PgDn\",\n },\n de: {\n ctrlLabel: \"Strg\",\n altLabel: \"Alt\",\n shiftLabel: \"Umschalt\",\n metaLabel: \"Meta\",\n control: \"Steuerung\",\n appleControl: \"Control\",\n option: \"Wahltaste\",\n shift: \"Umschalttaste\",\n command: \"Befehlstaste\",\n alt: \"Alt\",\n meta: \"Meta\",\n arrowup: \"Pfeil nach oben\",\n arrowdown: \"Pfeil nach unten\",\n arrowleft: \"Pfeil nach links\",\n arrowright: \"Pfeil nach rechts\",\n enter: \"Eingabetaste\",\n escape: \"Escape\",\n tab: \"Tabulatortaste\",\n space: \"Leertaste\",\n backspace: \"Rücktaste\",\n delete: \"Entfernen\",\n home: \"Pos 1\",\n end: \"Ende\",\n pageup: \"Bild auf\",\n pagedown: \"Bild ab\",\n spaceLabel: \"Leertaste\",\n click: \"Klick\",\n clickLabel: \"Klick\",\n deleteLabel: \"Entf\",\n homeLabel: \"Pos1\",\n endLabel: \"Ende\",\n pageupLabel: \"Bild↑\",\n pagedownLabel: \"Bild↓\",\n },\n },\n});\n\n/** Imperative UI inherits the document locale when no locale is supplied. */\nexport const resolveShortcutMessages = (locale?: string) =>\n shortcutMessages.resolve([locale ?? (typeof document === \"undefined\" ? shortcutMessages.baseLocale : document.documentElement.lang)]).t;\nexport const checkShortcutMessages = () => shortcutMessages.check();\n"],"mappings":"AAAA,SAAS,IAAI,QAAQ,aAAa;AAElC,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC;EACnC,UAAU,EAAE,IAAI;EAChB,QAAQ,EAAE;IACR,EAAE,EAAE;MACF,SAAS,EAAE,MAAM;MACjB,QAAQ,EAAE,KAAK;MACf,UAAU,EAAE,OAAO;MACnB,SAAS,EAAE,MAAM;MACjB,OAAO,EAAE,SAAS;MAClB,YAAY,EAAE,SAAS;MACvB,MAAM,EAAE,QAAQ;MAChB,KAAK,EAAE,OAAO;MACd,OAAO,EAAE,SAAS;MAClB,GAAG,EAAE,KAAK;MACV,IAAI,EAAE,MAAM;MACZ,OAAO,EAAE,UAAU;MACnB,SAAS,EAAE,YAAY;MACvB,SAAS,EAAE,YAAY;MACvB,UAAU,EAAE,aAAa;MACzB,KAAK,EAAE,OAAO;MACd,MAAM,EAAE,QAAQ;MAChB,GAAG,EAAE,KAAK;MACV,KAAK,EAAE,OAAO;MACd,SAAS,EAAE,WAAW;MACtB,MAAM,EAAE,QAAQ;MAChB,IAAI,EAAE,MAAM;MACZ,GAAG,EAAE,KAAK;MACV,MAAM,EAAE,SAAS;MACjB,QAAQ,EAAE,WAAW;MACrB,UAAU,EAAE,OAAO;MACnB,KAAK,EAAE,OAAO;MACd,UAAU,EAAE,OAAO;MACnB,WAAW,EAAE,KAAK;MAClB,SAAS,EAAE,MAAM;MACjB,QAAQ,EAAE,KAAK;MACf,WAAW,EAAE,MAAM;MACnB,aAAa,EAAE;IACjB,CAAC;IACD,EAAE,EAAE;MACF,SAAS,EAAE,MAAM;MACjB,QAAQ,EAAE,KAAK;MACf,UAAU,EAAE,UAAU;MACtB,SAAS,EAAE,MAAM;MACjB,OAAO,EAAE,WAAW;MACpB,YAAY,EAAE,SAAS;MACvB,MAAM,EAAE,WAAW;MACnB,KAAK,EAAE,eAAe;MACtB,OAAO,EAAE,cAAc;MACvB,GAAG,EAAE,KAAK;MACV,IAAI,EAAE,MAAM;MACZ,OAAO,EAAE,iBAAiB;MAC1B,SAAS,EAAE,kBAAkB;MAC7B,SAAS,EAAE,kBAAkB;MAC7B,UAAU,EAAE,mBAAmB;MAC/B,KAAK,EAAE,cAAc;MACrB,MAAM,EAAE,QAAQ;MAChB,GAAG,EAAE,gBAAgB;MACrB,KAAK,EAAE,WAAW;MAClB,SAAS,EAAE,WAAW;MACtB,MAAM,EAAE,WAAW;MACnB,IAAI,EAAE,OAAO;MACb,GAAG,EAAE,MAAM;MACX,MAAM,EAAE,UAAU;MAClB,QAAQ,EAAE,SAAS;MACnB,UAAU,EAAE,WAAW;MACvB,KAAK,EAAE,OAAO;MACd,UAAU,EAAE,OAAO;MACnB,WAAW,EAAE,MAAM;MACnB,SAAS,EAAE,MAAM;MACjB,QAAQ,EAAE,MAAM;MAChB,WAAW,EAAE,OAAO;MACpB,aAAa,EAAE;IACjB;EACF;AACF,CAAC,CAAC;;AAEF;AACA,OAAO,MAAM,uBAAuB,GAAI,MAAe,IACrD,gBAAgB,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,OAAO,QAAQ,KAAK,WAAW,GAAG,gBAAgB,CAAC,UAAU,GAAG,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACzI,OAAO,MAAM,qBAAqB,GAAG,MAAM,gBAAgB,CAAC,KAAK,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["intl/shortcut.ts"],"sourcesContent":["import { resolveShortcutMessages } from \"./shortcut-messages\";\n\nexport type KeyboardPlatform = \"apple\" | \"other\";\n/**\n * Apple keyboards name the platform modifier Command. `source` is a User-Agent or `navigator.platform` string.\n * Without `source`, reads the runtime's navigator; server callers pass the request's User-Agent.\n * @example keyboardPlatform(\"MacIntel\") // \"apple\"\n */\nexport const keyboardPlatform = (source?: string): KeyboardPlatform =>\n /Mac|iPhone|iPad|iPod/.test(source ?? (typeof navigator === \"undefined\" ? \"\" : navigator.platform || navigator.userAgent))\n ? \"apple\"\n : \"other\";\n\nexport type ShortcutKey = {\n /** What the cap shows: \"⌘\", \"Strg\", \"K\", \"↵\". */\n label: string;\n /** What a screen reader says: \"Command\", \"Steuerung\", \"K\", \"Enter\". */\n name: string;\n};\nexport type FormattedShortcut = {\n keys: ShortcutKey[];\n /** \"⌘K\" on Apple, \"Ctrl+K\" / \"Strg+K\" elsewhere. */\n label: string;\n /** \"Command K\", \"Steuerung K\". */\n name: string;\n};\nexport type ShortcutFormatOptions = { platform?: KeyboardPlatform; locale?: string };\nconst modifiers = [\"ctrl\", \"alt\", \"shift\", \"meta\"] as const;\n\n/**\n * Formats one plus-separated shortcut in canonical modifier order.\n * @example formatShortcut(\"mod+alt+n\", { platform: \"apple\" }).label // \"⌥⌘N\"\n */\nexport const formatShortcut = (shortcut: string, options: ShortcutFormatOptions = {}): FormattedShortcut => {\n const empty = { keys: [], label: \"\", name: \"\" };\n const input = shortcut.trim().toLowerCase();\n const plus = input === \"+\" || input.endsWith(\"++\");\n const parts = (plus ? input.slice(0, -1) : input).split(\"+\");\n const key = plus ? \"+\" : parts.pop() || (shortcut === \" \" || shortcut.endsWith(\"+ \") ? \"space\" : undefined);\n if (plus) parts.pop();\n if (\n !key ||\n modifiers.some((modifier) => key === modifier) ||\n key === \"mod\" ||\n parts.some((part) => part !== \"mod\" && !modifiers.some((modifier) => part === modifier))\n )\n return empty;\n const apple = (options.platform ?? keyboardPlatform()) === \"apple\";\n const t = resolveShortcutMessages(options.locale);\n const selected = new Set(parts.map((part) => (part === \"mod\" ? (apple ? \"meta\" : \"ctrl\") : part)));\n const labels = apple\n ? { ctrl: \"⌃\", alt: \"⌥\", shift: \"⇧\", meta: \"⌘\" }\n : { ctrl: t.ctrlLabel, alt: t.altLabel, shift: t.shiftLabel, meta: t.metaLabel };\n const names = {\n ctrl: apple ? t.appleControl : t.control,\n alt: apple ? t.option : t.alt,\n shift: t.shift,\n meta: apple ? t.command : t.meta,\n };\n const named: Record<string, ShortcutKey> = {\n arrowup: { label: \"↑\", name: t.arrowup },\n arrowdown: { label: \"↓\", name: t.arrowdown },\n arrowleft: { label: \"←\", name: t.arrowleft },\n arrowright: { label: \"→\", name: t.arrowright },\n enter: { label: \"↵\", name: t.enter },\n escape: { label: \"Esc\", name: t.escape },\n esc: { label: \"Esc\", name: t.escape },\n tab: { label: \"Tab\", name: t.tab },\n space: { label: t.spaceLabel, name: t.space },\n backspace: { label: \"⌫\", name: t.backspace },\n delete: { label: apple ? \"⌦\" : t.deleteLabel, name: t.delete },\n home: { label: t.homeLabel, name: t.home },\n end: { label: t.endLabel, name: t.end },\n pageup: { label: t.pageupLabel, name: t.pageup },\n pagedown: { label: t.pagedownLabel, name: t.pagedown },\n };\n const label = key.length === 1 || /^f(?:[1-9]|1[0-2])$/.test(key) ? key.toUpperCase() : key[0]!.toUpperCase() + key.slice(1);\n const namedKey = Object.hasOwn(named, key) ? named[key] : undefined;\n const keys = [\n ...modifiers.filter((modifier) => selected.has(modifier)).map((modifier) => ({ label: labels[modifier], name: names[modifier] })),\n namedKey ?? { label, name: label },\n ];\n return { keys, label: keys.map((key) => key.label).join(apple ? \"\" : \"+\"), name: keys.map((key) => key.name).join(\" \") };\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":[],"sources":["intl/shortcut.ts"],"sourcesContent":["import { resolveShortcutMessages } from \"./shortcut-messages\";\n\nexport type KeyboardPlatform = \"apple\" | \"other\";\n/**\n * Apple keyboards name the platform modifier Command. `source` is a User-Agent or `navigator.platform` string.\n * Without `source`, reads the runtime's navigator; server callers pass the request's User-Agent.\n * @example keyboardPlatform(\"MacIntel\") // \"apple\"\n */\nexport const keyboardPlatform = (source?: string): KeyboardPlatform =>\n /Mac|iPhone|iPad|iPod/.test(source ?? (typeof navigator === \"undefined\" ? \"\" : navigator.platform || navigator.userAgent))\n ? \"apple\"\n : \"other\";\n\nexport type ShortcutKey = {\n /** What the cap shows: \"⌘\", \"Strg\", \"K\", \"↵\". */\n label: string;\n /** What a screen reader says: \"Command\", \"Steuerung\", \"K\", \"Enter\". */\n name: string;\n};\nexport type FormattedShortcut = {\n keys: ShortcutKey[];\n /** \"⌘K\" on Apple, \"Ctrl+K\" / \"Strg+K\" elsewhere. */\n label: string;\n /** \"Command K\", \"Steuerung K\". */\n name: string;\n};\nexport type ShortcutFormatOptions = { platform?: KeyboardPlatform; locale?: string };\nconst modifiers = [\"ctrl\", \"alt\", \"shift\", \"meta\"] as const;\n\n/**\n * Formats one plus-separated shortcut in canonical modifier order.\n * @example formatShortcut(\"mod+alt+n\", { platform: \"apple\" }).label // \"⌥⌘N\"\n */\nexport const formatShortcut = (shortcut: string, options: ShortcutFormatOptions = {}): FormattedShortcut => {\n const empty = { keys: [], label: \"\", name: \"\" };\n const input = shortcut.trim().toLowerCase();\n const plus = input === \"+\" || input.endsWith(\"++\");\n const parts = (plus ? input.slice(0, -1) : input).split(\"+\");\n const key = plus ? \"+\" : parts.pop() || (shortcut === \" \" || shortcut.endsWith(\"+ \") ? \"space\" : undefined);\n if (plus) parts.pop();\n if (\n !key ||\n modifiers.some((modifier) => key === modifier) ||\n key === \"mod\" ||\n parts.some((part) => part !== \"mod\" && !modifiers.some((modifier) => part === modifier))\n )\n return empty;\n const apple = (options.platform ?? keyboardPlatform()) === \"apple\";\n const t = resolveShortcutMessages(options.locale);\n const selected = new Set(parts.map((part) => (part === \"mod\" ? (apple ? \"meta\" : \"ctrl\") : part)));\n const labels = apple\n ? { ctrl: \"⌃\", alt: \"⌥\", shift: \"⇧\", meta: \"⌘\" }\n : { ctrl: t.ctrlLabel, alt: t.altLabel, shift: t.shiftLabel, meta: t.metaLabel };\n const names = {\n ctrl: apple ? t.appleControl : t.control,\n alt: apple ? t.option : t.alt,\n shift: t.shift,\n meta: apple ? t.command : t.meta,\n };\n const named: Record<string, ShortcutKey> = {\n arrowup: { label: \"↑\", name: t.arrowup },\n arrowdown: { label: \"↓\", name: t.arrowdown },\n arrowleft: { label: \"←\", name: t.arrowleft },\n arrowright: { label: \"→\", name: t.arrowright },\n enter: { label: \"↵\", name: t.enter },\n escape: { label: \"Esc\", name: t.escape },\n esc: { label: \"Esc\", name: t.escape },\n tab: { label: \"Tab\", name: t.tab },\n space: { label: t.spaceLabel, name: t.space },\n click: { label: t.clickLabel, name: t.click },\n backspace: { label: \"⌫\", name: t.backspace },\n delete: { label: apple ? \"⌦\" : t.deleteLabel, name: t.delete },\n home: { label: t.homeLabel, name: t.home },\n end: { label: t.endLabel, name: t.end },\n pageup: { label: t.pageupLabel, name: t.pageup },\n pagedown: { label: t.pagedownLabel, name: t.pagedown },\n };\n const label = key.length === 1 || /^f(?:[1-9]|1[0-2])$/.test(key) ? key.toUpperCase() : key[0]!.toUpperCase() + key.slice(1);\n const namedKey = Object.hasOwn(named, key) ? named[key] : undefined;\n const keys = [\n ...modifiers.filter((modifier) => selected.has(modifier)).map((modifier) => ({ label: labels[modifier], name: names[modifier] })),\n namedKey ?? { label, name: label },\n ];\n return { keys, label: keys.map((key) => key.label).join(apple ? \"\" : \"+\"), name: keys.map((key) => key.name).join(\" \") };\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
import { template as _$template } from "solid-js/web";
|
|
2
|
+
import { style as _$style } from "solid-js/web";
|
|
3
|
+
import { className as _$className } from "solid-js/web";
|
|
4
|
+
import { setAttribute as _$setAttribute } from "solid-js/web";
|
|
5
|
+
import { effect as _$effect } from "solid-js/web";
|
|
6
|
+
import { getNextElement as _$getNextElement } from "solid-js/web";
|
|
7
|
+
import { insert as _$insert } from "solid-js/web";
|
|
8
|
+
import { createComponent as _$createComponent } from "solid-js/web";
|
|
9
|
+
import { use as _$use } from "solid-js/web";
|
|
10
|
+
var _tmpl$ = /*#__PURE__*/_$template(`<div popover=auto role=dialog tabindex=-1>`);
|
|
11
|
+
import { createEffect, createSignal, onCleanup, onMount, Show, untrack } from "solid-js";
|
|
12
|
+
import { returnFocus, ringOnReturn } from "../internal/focus-return";
|
|
13
|
+
const GAP = 6;
|
|
14
|
+
const MARGIN = 8;
|
|
15
|
+
const sheetQuery = "(max-width: 47.999rem)";
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* A panel anchored to a control, for content that is more than a menu, such as a card with a slider. It opens on the
|
|
19
|
+
* side with room and keeps that side while open, so a panel that changes its content never jumps to the other side.
|
|
20
|
+
* Escape, a click outside and another press of the anchor close it; the focus returns to where it was. On a phone it
|
|
21
|
+
* is a bottom sheet.
|
|
22
|
+
*/
|
|
23
|
+
export function AnchoredPopover(props) {
|
|
24
|
+
let surface;
|
|
25
|
+
let previous = null;
|
|
26
|
+
let ring = false;
|
|
27
|
+
let pressedAnchor;
|
|
28
|
+
/** The side chosen when the panel opened; kept until it closes. */
|
|
29
|
+
let openedAbove;
|
|
30
|
+
const [shown, setShown] = createSignal();
|
|
31
|
+
const [sheet, setSheet] = createSignal(false);
|
|
32
|
+
const place = () => {
|
|
33
|
+
const anchor = shown();
|
|
34
|
+
if (!surface || !anchor) return;
|
|
35
|
+
if (!anchor.isConnected) {
|
|
36
|
+
hide();
|
|
37
|
+
props.onClose();
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
if (sheet()) {
|
|
41
|
+
surface.style.left = "";
|
|
42
|
+
surface.style.top = "";
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
const viewport = window.visualViewport;
|
|
46
|
+
const view = {
|
|
47
|
+
top: (viewport?.offsetTop ?? 0) + MARGIN,
|
|
48
|
+
bottom: (viewport ? viewport.offsetTop + viewport.height : window.innerHeight) - MARGIN,
|
|
49
|
+
left: (viewport?.offsetLeft ?? 0) + MARGIN,
|
|
50
|
+
right: (viewport ? viewport.offsetLeft + viewport.width : window.innerWidth) - MARGIN
|
|
51
|
+
};
|
|
52
|
+
const box = anchor.getBoundingClientRect();
|
|
53
|
+
const size = surface.getBoundingClientRect();
|
|
54
|
+
const roomAbove = box.top - GAP - view.top;
|
|
55
|
+
const roomBelow = view.bottom - box.bottom - GAP;
|
|
56
|
+
if (openedAbove === undefined) {
|
|
57
|
+
const planned = Math.max(size.height, props.plannedHeight ?? 0);
|
|
58
|
+
openedAbove = (props.side ?? "below") === "above" ? planned <= roomAbove || roomAbove > roomBelow : planned > roomBelow && roomAbove > roomBelow;
|
|
59
|
+
}
|
|
60
|
+
surface.style.setProperty("--k2b-anchored-popover-room", `${Math.round(Math.max(120, openedAbove ? roomAbove : roomBelow))}px`);
|
|
61
|
+
const top = openedAbove ? box.top - GAP - size.height : box.bottom + GAP;
|
|
62
|
+
const left = (props.align ?? "end") === "end" ? box.right - size.width : box.left;
|
|
63
|
+
surface.style.left = `${Math.round(Math.max(view.left, Math.min(left, view.right - size.width)))}px`;
|
|
64
|
+
surface.style.top = `${Math.round(Math.max(view.top, Math.min(top, view.bottom - size.height)))}px`;
|
|
65
|
+
};
|
|
66
|
+
const restoreFocus = () => {
|
|
67
|
+
const focused = document.activeElement;
|
|
68
|
+
if (focused && focused !== document.body && !surface?.contains(focused)) return;
|
|
69
|
+
if (previous?.isConnected) returnFocus(previous, ring);
|
|
70
|
+
};
|
|
71
|
+
const hide = () => {
|
|
72
|
+
restoreFocus();
|
|
73
|
+
if (surface?.matches(":popover-open")) surface.hidePopover();
|
|
74
|
+
openedAbove = undefined;
|
|
75
|
+
setShown(undefined);
|
|
76
|
+
};
|
|
77
|
+
const pressed = event => {
|
|
78
|
+
const anchor = shown();
|
|
79
|
+
pressedAnchor = anchor && event.target instanceof Node && anchor.contains(event.target) ? anchor : undefined;
|
|
80
|
+
};
|
|
81
|
+
const clicked = event => {
|
|
82
|
+
const anchor = shown();
|
|
83
|
+
if (!anchor || !(event.target instanceof Node) || !anchor.contains(event.target)) return;
|
|
84
|
+
pressedAnchor = anchor;
|
|
85
|
+
hide();
|
|
86
|
+
props.onClose();
|
|
87
|
+
};
|
|
88
|
+
createEffect(() => {
|
|
89
|
+
const anchor = props.anchor ?? undefined;
|
|
90
|
+
untrack(() => {
|
|
91
|
+
if (!anchor) {
|
|
92
|
+
if (shown()) hide();
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
if (anchor === pressedAnchor) {
|
|
96
|
+
pressedAnchor = undefined;
|
|
97
|
+
props.onClose();
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
if (shown() === anchor || !surface) return;
|
|
101
|
+
if (!shown()) {
|
|
102
|
+
previous = document.activeElement instanceof HTMLElement ? document.activeElement : null;
|
|
103
|
+
ring = ringOnReturn(previous ?? anchor);
|
|
104
|
+
}
|
|
105
|
+
setSheet(typeof matchMedia === "function" && matchMedia(sheetQuery).matches);
|
|
106
|
+
setShown(anchor);
|
|
107
|
+
if (!surface.matches(":popover-open")) surface.showPopover();
|
|
108
|
+
place();
|
|
109
|
+
queueMicrotask(() => (props.initialFocus?.() ?? surface)?.focus({
|
|
110
|
+
preventScroll: true
|
|
111
|
+
}));
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
const scrolled = event => {
|
|
115
|
+
if (!(event.target instanceof Node && surface?.contains(event.target))) place();
|
|
116
|
+
};
|
|
117
|
+
onMount(() => {
|
|
118
|
+
window.addEventListener("resize", place);
|
|
119
|
+
window.addEventListener("scroll", scrolled, true);
|
|
120
|
+
window.visualViewport?.addEventListener("resize", place);
|
|
121
|
+
document.addEventListener("pointerdown", pressed, true);
|
|
122
|
+
document.addEventListener("click", clicked, true);
|
|
123
|
+
const observer = typeof ResizeObserver === "function" && surface ? new ResizeObserver(place) : undefined;
|
|
124
|
+
if (surface) observer?.observe(surface);
|
|
125
|
+
onCleanup(() => {
|
|
126
|
+
observer?.disconnect();
|
|
127
|
+
window.removeEventListener("resize", place);
|
|
128
|
+
window.removeEventListener("scroll", scrolled, true);
|
|
129
|
+
window.visualViewport?.removeEventListener("resize", place);
|
|
130
|
+
document.removeEventListener("pointerdown", pressed, true);
|
|
131
|
+
document.removeEventListener("click", clicked, true);
|
|
132
|
+
if (surface?.matches(":popover-open")) hide();
|
|
133
|
+
});
|
|
134
|
+
});
|
|
135
|
+
return (() => {
|
|
136
|
+
var _el$ = _$getNextElement(_tmpl$);
|
|
137
|
+
_el$.addEventListener("toggle", event => {
|
|
138
|
+
if (event.newState === "open") return;
|
|
139
|
+
if (shown()) {
|
|
140
|
+
openedAbove = undefined;
|
|
141
|
+
setShown(undefined);
|
|
142
|
+
restoreFocus();
|
|
143
|
+
props.onClose();
|
|
144
|
+
}
|
|
145
|
+
setTimeout(() => {
|
|
146
|
+
pressedAnchor = undefined;
|
|
147
|
+
});
|
|
148
|
+
});
|
|
149
|
+
var _ref$ = surface;
|
|
150
|
+
typeof _ref$ === "function" ? _$use(_ref$, _el$) : surface = _el$;
|
|
151
|
+
_$insert(_el$, _$createComponent(Show, {
|
|
152
|
+
get when() {
|
|
153
|
+
return shown();
|
|
154
|
+
},
|
|
155
|
+
get children() {
|
|
156
|
+
return props.children;
|
|
157
|
+
}
|
|
158
|
+
}));
|
|
159
|
+
_$effect(_p$ => {
|
|
160
|
+
var _v$ = props.label,
|
|
161
|
+
_v$2 = ["k2b-anchored-popover", props.class].filter(Boolean).join(" "),
|
|
162
|
+
_v$3 = sheet() ? "" : undefined,
|
|
163
|
+
_v$4 = props.width ? {
|
|
164
|
+
"--k2b-anchored-popover-width": props.width
|
|
165
|
+
} : undefined;
|
|
166
|
+
_v$ !== _p$.e && _$setAttribute(_el$, "aria-label", _p$.e = _v$);
|
|
167
|
+
_v$2 !== _p$.t && _$className(_el$, _p$.t = _v$2);
|
|
168
|
+
_v$3 !== _p$.a && _$setAttribute(_el$, "data-sheet", _p$.a = _v$3);
|
|
169
|
+
_p$.o = _$style(_el$, _v$4, _p$.o);
|
|
170
|
+
return _p$;
|
|
171
|
+
}, {
|
|
172
|
+
e: undefined,
|
|
173
|
+
t: undefined,
|
|
174
|
+
a: undefined,
|
|
175
|
+
o: undefined
|
|
176
|
+
});
|
|
177
|
+
return _el$;
|
|
178
|
+
})();
|
|
179
|
+
}
|
|
180
|
+
//# sourceMappingURL=AnchoredPopover.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":["layout/AnchoredPopover.tsx"],"sourcesContent":["import { createEffect, createSignal, type JSX, onCleanup, onMount, Show, untrack } from \"solid-js\";\nimport { returnFocus, ringOnReturn } from \"../internal/focus-return\";\n\nexport type AnchoredPopoverProps = {\n /** The control the panel belongs to. The panel is open while this is set. */\n anchor: HTMLElement | null | undefined;\n /** Called on Escape, a click outside, another press of the anchor, and when the anchor leaves the page. */\n onClose: () => void;\n /** The panel's accessible name; it is a non-modal dialog. */\n label: string;\n children: JSX.Element;\n /** Which edge lines up with the anchor. Defaults to `end`, like a menu at the end of a toolbar. */\n align?: \"start\" | \"end\";\n /** The side tried first; the panel flips only when the other side has more room. Defaults to `below`. */\n side?: \"below\" | \"above\";\n /**\n * The tallest the panel gets while open, in px, such as a list it can switch to. The side is chosen for this height\n * and kept, so a panel that grows never flips. Defaults to its height when it opens.\n */\n plannedHeight?: number;\n /** Width of the panel on wide screens, such as `21rem`. On a phone it is a bottom sheet across the screen. */\n width?: string;\n /** Moves the focus into the panel when it opens; defaults to the panel itself. */\n initialFocus?: () => HTMLElement | null | undefined;\n class?: string;\n};\n\nconst GAP = 6;\nconst MARGIN = 8;\nconst sheetQuery = \"(max-width: 47.999rem)\";\n\n/**\n * A panel anchored to a control, for content that is more than a menu, such as a card with a slider. It opens on the\n * side with room and keeps that side while open, so a panel that changes its content never jumps to the other side.\n * Escape, a click outside and another press of the anchor close it; the focus returns to where it was. On a phone it\n * is a bottom sheet.\n */\nexport function AnchoredPopover(props: AnchoredPopoverProps): JSX.Element {\n let surface: HTMLDivElement | undefined;\n let previous: HTMLElement | null = null;\n let ring = false;\n let pressedAnchor: HTMLElement | undefined;\n /** The side chosen when the panel opened; kept until it closes. */\n let openedAbove: boolean | undefined;\n const [shown, setShown] = createSignal<HTMLElement>();\n const [sheet, setSheet] = createSignal(false);\n\n const place = () => {\n const anchor = shown();\n if (!surface || !anchor) return;\n if (!anchor.isConnected) {\n hide();\n props.onClose();\n return;\n }\n if (sheet()) {\n surface.style.left = \"\";\n surface.style.top = \"\";\n return;\n }\n const viewport = window.visualViewport;\n const view = {\n top: (viewport?.offsetTop ?? 0) + MARGIN,\n bottom: (viewport ? viewport.offsetTop + viewport.height : window.innerHeight) - MARGIN,\n left: (viewport?.offsetLeft ?? 0) + MARGIN,\n right: (viewport ? viewport.offsetLeft + viewport.width : window.innerWidth) - MARGIN,\n };\n const box = anchor.getBoundingClientRect();\n const size = surface.getBoundingClientRect();\n const roomAbove = box.top - GAP - view.top;\n const roomBelow = view.bottom - box.bottom - GAP;\n if (openedAbove === undefined) {\n const planned = Math.max(size.height, props.plannedHeight ?? 0);\n openedAbove =\n (props.side ?? \"below\") === \"above\" ? planned <= roomAbove || roomAbove > roomBelow : planned > roomBelow && roomAbove > roomBelow;\n }\n surface.style.setProperty(\"--k2b-anchored-popover-room\", `${Math.round(Math.max(120, openedAbove ? roomAbove : roomBelow))}px`);\n const top = openedAbove ? box.top - GAP - size.height : box.bottom + GAP;\n const left = (props.align ?? \"end\") === \"end\" ? box.right - size.width : box.left;\n surface.style.left = `${Math.round(Math.max(view.left, Math.min(left, view.right - size.width)))}px`;\n surface.style.top = `${Math.round(Math.max(view.top, Math.min(top, view.bottom - size.height)))}px`;\n };\n\n const restoreFocus = () => {\n const focused = document.activeElement;\n if (focused && focused !== document.body && !surface?.contains(focused)) return;\n if (previous?.isConnected) returnFocus(previous, ring);\n };\n\n const hide = () => {\n restoreFocus();\n if (surface?.matches(\":popover-open\")) surface.hidePopover();\n openedAbove = undefined;\n setShown(undefined);\n };\n\n const pressed = (event: PointerEvent) => {\n const anchor = shown();\n pressedAnchor = anchor && event.target instanceof Node && anchor.contains(event.target) ? anchor : undefined;\n };\n const clicked = (event: MouseEvent) => {\n const anchor = shown();\n if (!anchor || !(event.target instanceof Node) || !anchor.contains(event.target)) return;\n pressedAnchor = anchor;\n hide();\n props.onClose();\n };\n\n createEffect(() => {\n const anchor = props.anchor ?? undefined;\n untrack(() => {\n if (!anchor) {\n if (shown()) hide();\n return;\n }\n if (anchor === pressedAnchor) {\n pressedAnchor = undefined;\n props.onClose();\n return;\n }\n if (shown() === anchor || !surface) return;\n if (!shown()) {\n previous = document.activeElement instanceof HTMLElement ? document.activeElement : null;\n ring = ringOnReturn(previous ?? anchor);\n }\n setSheet(typeof matchMedia === \"function\" && matchMedia(sheetQuery).matches);\n setShown(anchor);\n if (!surface.matches(\":popover-open\")) surface.showPopover();\n place();\n queueMicrotask(() => (props.initialFocus?.() ?? surface)?.focus({ preventScroll: true }));\n });\n });\n\n const scrolled = (event: Event) => {\n if (!(event.target instanceof Node && surface?.contains(event.target))) place();\n };\n\n onMount(() => {\n window.addEventListener(\"resize\", place);\n window.addEventListener(\"scroll\", scrolled, true);\n window.visualViewport?.addEventListener(\"resize\", place);\n document.addEventListener(\"pointerdown\", pressed, true);\n document.addEventListener(\"click\", clicked, true);\n const observer = typeof ResizeObserver === \"function\" && surface ? new ResizeObserver(place) : undefined;\n if (surface) observer?.observe(surface);\n onCleanup(() => {\n observer?.disconnect();\n window.removeEventListener(\"resize\", place);\n window.removeEventListener(\"scroll\", scrolled, true);\n window.visualViewport?.removeEventListener(\"resize\", place);\n document.removeEventListener(\"pointerdown\", pressed, true);\n document.removeEventListener(\"click\", clicked, true);\n if (surface?.matches(\":popover-open\")) hide();\n });\n });\n\n return (\n <div\n ref={surface}\n popover=\"auto\"\n role=\"dialog\"\n aria-label={props.label}\n tabIndex={-1}\n class={[\"k2b-anchored-popover\", props.class].filter(Boolean).join(\" \")}\n data-sheet={sheet() ? \"\" : undefined}\n style={props.width ? { \"--k2b-anchored-popover-width\": props.width } : undefined}\n onToggle={(event) => {\n if ((event as ToggleEvent).newState === \"open\") return;\n if (shown()) {\n openedAbove = undefined;\n setShown(undefined);\n restoreFocus();\n props.onClose();\n }\n setTimeout(() => {\n pressedAnchor = undefined;\n });\n }}\n >\n <Show when={shown()}>{props.children}</Show>\n </div>\n );\n}\n"],"mappings":"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","ignoreList":[]}
|