@k2b/ui 0.4.2 → 0.5.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.
- package/dist/browser/actions/Button.js.map +1 -1
- package/dist/browser/actions/ContextMenu.js.map +1 -1
- package/dist/browser/actions/CopyButton.js.map +1 -1
- package/dist/browser/actions/Disclosure.js.map +1 -1
- package/dist/browser/actions/Dropdown.js.map +1 -1
- package/dist/browser/actions/FilterChip.js.map +1 -1
- package/dist/browser/actions/RemoveButton.js.map +1 -1
- package/dist/browser/actions/SegmentedControl.js.map +1 -1
- package/dist/browser/actions/SplitButton.js.map +1 -1
- package/dist/browser/actions/SpotlightSearch.js.map +1 -1
- package/dist/browser/actions/Tabs.js.map +1 -1
- package/dist/browser/actions/Toolbar.js.map +1 -1
- package/dist/browser/actions/index.js.map +1 -1
- package/dist/browser/chat/ChatComposer.js.map +1 -1
- package/dist/browser/chat/ChatContextPopup.js.map +1 -1
- package/dist/browser/chat/ChatPrimitives.js.map +1 -1
- package/dist/browser/chat/ChatRoot.js.map +1 -1
- package/dist/browser/chat/ChatTasks.js +1 -1
- package/dist/browser/chat/ChatTasks.js.map +1 -1
- package/dist/browser/chat/ChatTimeline.js.map +1 -1
- package/dist/browser/chat/chat-behavior.js.map +1 -1
- 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.map +1 -1
- package/dist/browser/content/Chart.js.map +1 -1
- package/dist/browser/content/ChartExplorer.js.map +1 -1
- package/dist/browser/content/ChartExplorerControls.js.map +1 -1
- package/dist/browser/content/ChartFilterControls.js +1 -1
- package/dist/browser/content/ChartFilterControls.js.map +1 -1
- package/dist/browser/content/ChartSnapshotView.js.map +1 -1
- package/dist/browser/content/CodeDisplay.js.map +1 -1
- package/dist/browser/content/DataTable.js.map +1 -1
- package/dist/browser/content/Docs.js.map +1 -1
- package/dist/browser/content/FileBrowser.js.map +1 -1
- package/dist/browser/content/FileGrid.js.map +1 -1
- package/dist/browser/content/FileTree.js.map +1 -1
- package/dist/browser/content/FileView.js.map +1 -1
- package/dist/browser/content/Lightbox.js.map +1 -1
- package/dist/browser/content/LogEntriesTable.js.map +1 -1
- package/dist/browser/content/MarkdownView.js.map +1 -1
- package/dist/browser/content/Pagination.js.map +1 -1
- package/dist/browser/content/PdfPreview.js.map +1 -1
- package/dist/browser/content/RangePicker.js.map +1 -1
- package/dist/browser/content/StructuredDataPreview.js.map +1 -1
- package/dist/browser/content/calendar-event-layout.js.map +1 -1
- package/dist/browser/content/calendar-pointer.js.map +1 -1
- package/dist/browser/content/chart-cursor.js.map +1 -1
- package/dist/browser/content/chart-explorer.js.map +1 -1
- package/dist/browser/content/chart-inspection.js.map +1 -1
- package/dist/browser/content/chart-line-gaps.js.map +1 -1
- package/dist/browser/content/chart-map-viewport.js.map +1 -1
- package/dist/browser/content/chart-snapshot.js.map +1 -1
- package/dist/browser/content/chart-state-timeline.js.map +1 -1
- package/dist/browser/content/chart-svg.js.map +1 -1
- package/dist/browser/content/code-highlight.js.map +1 -1
- package/dist/browser/content/collection-selection.js.map +1 -1
- package/dist/browser/content/delimited-preferences.js.map +1 -1
- package/dist/browser/content/file-tree.js.map +1 -1
- package/dist/browser/content/file-view-preview.js.map +1 -1
- package/dist/browser/content/index.js.map +1 -1
- package/dist/browser/feedback/InlineGuidance.js.map +1 -1
- package/dist/browser/feedback/Tooltip.js.map +1 -1
- package/dist/browser/feedback/dialog-core.js.map +1 -1
- package/dist/browser/feedback/index.js.map +1 -1
- package/dist/browser/feedback/prompts.js.map +1 -1
- package/dist/browser/feedback/toast.js.map +1 -1
- package/dist/browser/feedback/tooltip-position.js.map +1 -1
- package/dist/browser/inputs/AutocompleteEditor.js.map +1 -1
- package/dist/browser/inputs/AutocompleteSelect.js.map +1 -1
- package/dist/browser/inputs/Checkbox.js.map +1 -1
- package/dist/browser/inputs/CheckboxCard.js.map +1 -1
- package/dist/browser/inputs/ChoiceGroups.js.map +1 -1
- package/dist/browser/inputs/ChoiceInputs.js.map +1 -1
- package/dist/browser/inputs/Combobox.js.map +1 -1
- package/dist/browser/inputs/DatePicker.js.map +1 -1
- package/dist/browser/inputs/FileInputs.js.map +1 -1
- package/dist/browser/inputs/MultiSelectInput.js.map +1 -1
- package/dist/browser/inputs/NumberInput.js.map +1 -1
- package/dist/browser/inputs/Select.js.map +1 -1
- package/dist/browser/inputs/SelectChip.js.map +1 -1
- package/dist/browser/inputs/SpecialInputs.js.map +1 -1
- package/dist/browser/inputs/Switch.js.map +1 -1
- package/dist/browser/inputs/TagEditor.js.map +1 -1
- package/dist/browser/inputs/TagsInput.js.map +1 -1
- package/dist/browser/inputs/TemplateEditor.js.map +1 -1
- package/dist/browser/inputs/TextInput.js.map +1 -1
- package/dist/browser/inputs/choice.js.map +1 -1
- package/dist/browser/inputs/completion/behaviors.js.map +1 -1
- package/dist/browser/inputs/completion/engine.js.map +1 -1
- package/dist/browser/inputs/completion/index.js.map +1 -1
- package/dist/browser/inputs/completion/overlay.js.map +1 -1
- package/dist/browser/inputs/date-picker.js.map +1 -1
- package/dist/browser/inputs/editor-dom.js.map +1 -1
- package/dist/browser/inputs/field-contract.js.map +1 -1
- package/dist/browser/inputs/icon-options.js.map +1 -1
- package/dist/browser/inputs/image-crop.js.map +1 -1
- package/dist/browser/inputs/index.js.map +1 -1
- package/dist/browser/inputs/markdown/MarkdownEditor.js.map +1 -1
- package/dist/browser/inputs/markdown/Toolbar.js.map +1 -1
- package/dist/browser/inputs/markdown/actions.js.map +1 -1
- package/dist/browser/inputs/markdown/active-formats.js.map +1 -1
- package/dist/browser/inputs/markdown/behaviors.js.map +1 -1
- package/dist/browser/inputs/markdown/code-zone.js.map +1 -1
- package/dist/browser/internal/color.js.map +1 -1
- package/dist/browser/internal/field.js.map +1 -1
- package/dist/browser/internal/portal.js.map +1 -1
- package/dist/browser/intl/Format.js.map +1 -1
- package/dist/browser/intl/index.js.map +1 -1
- package/dist/browser/intl/locale.js.map +1 -1
- package/dist/browser/intl/messages.js +2 -0
- package/dist/browser/intl/messages.js.map +1 -1
- package/dist/browser/layout/AppOverview.js +29 -20
- package/dist/browser/layout/AppOverview.js.map +1 -1
- package/dist/browser/layout/AppWorkspace.js +60 -54
- package/dist/browser/layout/AppWorkspace.js.map +1 -1
- package/dist/browser/layout/BottomSheet.js.map +1 -1
- package/dist/browser/layout/DataPanel.js.map +1 -1
- package/dist/browser/layout/DetailPanel.js.map +1 -1
- package/dist/browser/layout/Discussion.js.map +1 -1
- package/dist/browser/layout/FloatingWindow.js.map +1 -1
- package/dist/browser/layout/Navigation.js.map +1 -1
- package/dist/browser/layout/PanelDialog.js.map +1 -1
- package/dist/browser/layout/PanelHeader.js +1 -1
- package/dist/browser/layout/PanelHeader.js.map +1 -1
- package/dist/browser/layout/Panes.js.map +1 -1
- package/dist/browser/layout/PullToRefresh.js +217 -0
- package/dist/browser/layout/PullToRefresh.js.map +1 -0
- package/dist/browser/layout/ScrollArea.js.map +1 -1
- package/dist/browser/layout/Settings.js.map +1 -1
- package/dist/browser/layout/SettingsCollection.js.map +1 -1
- package/dist/browser/layout/SettingsModal.js.map +1 -1
- package/dist/browser/layout/SidebarItemPreview.js.map +1 -1
- package/dist/browser/layout/app-workspace-controller.js.map +1 -1
- package/dist/browser/layout/app-workspace-state.js.map +1 -1
- package/dist/browser/layout/floating-window-geometry.js.map +1 -1
- package/dist/browser/layout/index.js +1 -0
- package/dist/browser/layout/index.js.map +1 -1
- package/dist/browser/layout/navigation-model.js.map +1 -1
- package/dist/browser/layout/panes-layout.js.map +1 -1
- package/dist/browser/layout/scroll-fade.js.map +1 -1
- package/dist/browser/layout/stable-id.js.map +1 -1
- package/dist/browser/surfaces/Avatar.js.map +1 -1
- package/dist/browser/surfaces/DescriptionList.js.map +1 -1
- package/dist/browser/surfaces/LinkCard.js +13 -2
- package/dist/browser/surfaces/LinkCard.js.map +1 -1
- package/dist/browser/surfaces/NotFoundState.js.map +1 -1
- package/dist/browser/surfaces/NoticeCard.js.map +1 -1
- package/dist/browser/surfaces/Paper.js.map +1 -1
- package/dist/browser/surfaces/Placeholder.js.map +1 -1
- package/dist/browser/surfaces/ProgressBar.js.map +1 -1
- package/dist/browser/surfaces/StatCell.js.map +1 -1
- package/dist/browser/surfaces/StatGrid.js.map +1 -1
- package/dist/browser/surfaces/StatusBadge.js.map +1 -1
- package/dist/browser/surfaces/Tag.js.map +1 -1
- package/dist/browser/surfaces/index.js.map +1 -1
- package/dist/browser/widgets/Widget.js.map +1 -1
- package/dist/browser/widgets/WidgetHero.js.map +1 -1
- package/dist/browser/widgets/WidgetList.js.map +1 -1
- package/dist/browser/widgets/WidgetPills.js.map +1 -1
- package/dist/browser/widgets/WidgetStat.js.map +1 -1
- package/dist/browser/widgets/WidgetStatus.js.map +1 -1
- package/dist/ssr/actions/Button.js +5 -4
- package/dist/ssr/actions/Button.js.map +1 -1
- package/dist/ssr/actions/ContextMenu.js.map +1 -1
- package/dist/ssr/actions/CopyButton.js +2 -1
- package/dist/ssr/actions/CopyButton.js.map +1 -1
- package/dist/ssr/actions/Disclosure.js.map +1 -1
- package/dist/ssr/actions/Dropdown.js +7 -6
- package/dist/ssr/actions/Dropdown.js.map +1 -1
- package/dist/ssr/actions/FilterChip.js +5 -4
- package/dist/ssr/actions/FilterChip.js.map +1 -1
- package/dist/ssr/actions/RemoveButton.js +1 -0
- package/dist/ssr/actions/RemoveButton.js.map +1 -1
- package/dist/ssr/actions/SegmentedControl.js.map +1 -1
- package/dist/ssr/actions/SplitButton.js +1 -0
- package/dist/ssr/actions/SplitButton.js.map +1 -1
- package/dist/ssr/actions/SpotlightSearch.js.map +1 -1
- package/dist/ssr/actions/Tabs.js.map +1 -1
- package/dist/ssr/actions/Toolbar.js.map +1 -1
- package/dist/ssr/actions/index.js.map +1 -1
- package/dist/ssr/chat/ChatComposer.js +6 -5
- package/dist/ssr/chat/ChatComposer.js.map +1 -1
- package/dist/ssr/chat/ChatContextPopup.js.map +1 -1
- package/dist/ssr/chat/ChatPrimitives.js +6 -5
- package/dist/ssr/chat/ChatPrimitives.js.map +1 -1
- package/dist/ssr/chat/ChatRoot.js.map +1 -1
- package/dist/ssr/chat/ChatTasks.js +1 -1
- package/dist/ssr/chat/ChatTasks.js.map +1 -1
- package/dist/ssr/chat/ChatTimeline.js +5 -4
- package/dist/ssr/chat/ChatTimeline.js.map +1 -1
- package/dist/ssr/chat/chat-behavior.js.map +1 -1
- 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 +2 -1
- package/dist/ssr/content/Calendar.js.map +1 -1
- package/dist/ssr/content/Chart.js.map +1 -1
- package/dist/ssr/content/ChartExplorer.js.map +1 -1
- package/dist/ssr/content/ChartExplorerControls.js +5 -4
- package/dist/ssr/content/ChartExplorerControls.js.map +1 -1
- package/dist/ssr/content/ChartFilterControls.js +3 -2
- package/dist/ssr/content/ChartFilterControls.js.map +1 -1
- package/dist/ssr/content/ChartSnapshotView.js.map +1 -1
- package/dist/ssr/content/CodeDisplay.js.map +1 -1
- package/dist/ssr/content/DataTable.js +1 -0
- package/dist/ssr/content/DataTable.js.map +1 -1
- package/dist/ssr/content/Docs.js +1 -0
- package/dist/ssr/content/Docs.js.map +1 -1
- package/dist/ssr/content/FileBrowser.js +2 -1
- package/dist/ssr/content/FileBrowser.js.map +1 -1
- package/dist/ssr/content/FileGrid.js.map +1 -1
- package/dist/ssr/content/FileTree.js +2 -1
- package/dist/ssr/content/FileTree.js.map +1 -1
- package/dist/ssr/content/FileView.js +5 -4
- package/dist/ssr/content/FileView.js.map +1 -1
- package/dist/ssr/content/Lightbox.js +2 -1
- package/dist/ssr/content/Lightbox.js.map +1 -1
- package/dist/ssr/content/LogEntriesTable.js.map +1 -1
- package/dist/ssr/content/MarkdownView.js.map +1 -1
- package/dist/ssr/content/Pagination.js +2 -1
- package/dist/ssr/content/Pagination.js.map +1 -1
- package/dist/ssr/content/PdfPreview.js.map +1 -1
- package/dist/ssr/content/RangePicker.js.map +1 -1
- package/dist/ssr/content/StructuredDataPreview.js.map +1 -1
- package/dist/ssr/content/calendar-event-layout.js.map +1 -1
- package/dist/ssr/content/calendar-pointer.js.map +1 -1
- package/dist/ssr/content/chart-cursor.js.map +1 -1
- package/dist/ssr/content/chart-explorer.js.map +1 -1
- package/dist/ssr/content/chart-inspection.js.map +1 -1
- package/dist/ssr/content/chart-line-gaps.js.map +1 -1
- package/dist/ssr/content/chart-map-viewport.js.map +1 -1
- package/dist/ssr/content/chart-snapshot.js.map +1 -1
- package/dist/ssr/content/chart-state-timeline.js.map +1 -1
- package/dist/ssr/content/chart-svg.js.map +1 -1
- package/dist/ssr/content/code-highlight.js.map +1 -1
- package/dist/ssr/content/collection-selection.js.map +1 -1
- package/dist/ssr/content/delimited-preferences.js.map +1 -1
- package/dist/ssr/content/file-tree.js.map +1 -1
- package/dist/ssr/content/file-view-preview.js.map +1 -1
- package/dist/ssr/content/index.js.map +1 -1
- package/dist/ssr/feedback/InlineGuidance.js.map +1 -1
- package/dist/ssr/feedback/Tooltip.js.map +1 -1
- package/dist/ssr/feedback/dialog-core.js.map +1 -1
- package/dist/ssr/feedback/index.js.map +1 -1
- package/dist/ssr/feedback/prompts.js +3 -2
- package/dist/ssr/feedback/prompts.js.map +1 -1
- package/dist/ssr/feedback/toast.js.map +1 -1
- package/dist/ssr/feedback/tooltip-position.js.map +1 -1
- package/dist/ssr/inputs/AutocompleteEditor.js +3 -2
- package/dist/ssr/inputs/AutocompleteEditor.js.map +1 -1
- package/dist/ssr/inputs/AutocompleteSelect.js +5 -4
- package/dist/ssr/inputs/AutocompleteSelect.js.map +1 -1
- package/dist/ssr/inputs/Checkbox.js +1 -0
- package/dist/ssr/inputs/Checkbox.js.map +1 -1
- package/dist/ssr/inputs/CheckboxCard.js.map +1 -1
- package/dist/ssr/inputs/ChoiceGroups.js.map +1 -1
- package/dist/ssr/inputs/ChoiceInputs.js +1 -0
- package/dist/ssr/inputs/ChoiceInputs.js.map +1 -1
- package/dist/ssr/inputs/Combobox.js +2 -1
- package/dist/ssr/inputs/Combobox.js.map +1 -1
- package/dist/ssr/inputs/DatePicker.js +4 -3
- package/dist/ssr/inputs/DatePicker.js.map +1 -1
- package/dist/ssr/inputs/FileInputs.js +2 -1
- package/dist/ssr/inputs/FileInputs.js.map +1 -1
- package/dist/ssr/inputs/MultiSelectInput.js +4 -3
- package/dist/ssr/inputs/MultiSelectInput.js.map +1 -1
- package/dist/ssr/inputs/NumberInput.js +2 -1
- package/dist/ssr/inputs/NumberInput.js.map +1 -1
- package/dist/ssr/inputs/Select.js +4 -3
- package/dist/ssr/inputs/Select.js.map +1 -1
- package/dist/ssr/inputs/SelectChip.js +3 -2
- package/dist/ssr/inputs/SelectChip.js.map +1 -1
- package/dist/ssr/inputs/SpecialInputs.js +1 -0
- package/dist/ssr/inputs/SpecialInputs.js.map +1 -1
- package/dist/ssr/inputs/Switch.js.map +1 -1
- package/dist/ssr/inputs/TagEditor.js +3 -2
- package/dist/ssr/inputs/TagEditor.js.map +1 -1
- package/dist/ssr/inputs/TagsInput.js.map +1 -1
- package/dist/ssr/inputs/TemplateEditor.js +1 -0
- package/dist/ssr/inputs/TemplateEditor.js.map +1 -1
- package/dist/ssr/inputs/TextInput.js +4 -3
- package/dist/ssr/inputs/TextInput.js.map +1 -1
- package/dist/ssr/inputs/choice.js.map +1 -1
- package/dist/ssr/inputs/completion/behaviors.js.map +1 -1
- package/dist/ssr/inputs/completion/engine.js.map +1 -1
- package/dist/ssr/inputs/completion/index.js.map +1 -1
- package/dist/ssr/inputs/completion/overlay.js.map +1 -1
- package/dist/ssr/inputs/date-picker.js.map +1 -1
- package/dist/ssr/inputs/editor-dom.js.map +1 -1
- package/dist/ssr/inputs/field-contract.js.map +1 -1
- package/dist/ssr/inputs/icon-options.js.map +1 -1
- package/dist/ssr/inputs/image-crop.js.map +1 -1
- package/dist/ssr/inputs/index.js.map +1 -1
- package/dist/ssr/inputs/markdown/MarkdownEditor.js +3 -2
- package/dist/ssr/inputs/markdown/MarkdownEditor.js.map +1 -1
- package/dist/ssr/inputs/markdown/Toolbar.js.map +1 -1
- package/dist/ssr/inputs/markdown/actions.js.map +1 -1
- package/dist/ssr/inputs/markdown/active-formats.js.map +1 -1
- package/dist/ssr/inputs/markdown/behaviors.js.map +1 -1
- package/dist/ssr/inputs/markdown/code-zone.js.map +1 -1
- package/dist/ssr/internal/color.js.map +1 -1
- package/dist/ssr/internal/field.js.map +1 -1
- package/dist/ssr/internal/portal.js.map +1 -1
- package/dist/ssr/intl/Format.js.map +1 -1
- package/dist/ssr/intl/index.js.map +1 -1
- package/dist/ssr/intl/locale.js.map +1 -1
- package/dist/ssr/intl/messages.js +2 -0
- package/dist/ssr/intl/messages.js.map +1 -1
- package/dist/ssr/layout/AppOverview.js +16 -6
- package/dist/ssr/layout/AppOverview.js.map +1 -1
- package/dist/ssr/layout/AppWorkspace.js +12 -8
- package/dist/ssr/layout/AppWorkspace.js.map +1 -1
- package/dist/ssr/layout/BottomSheet.js.map +1 -1
- package/dist/ssr/layout/DataPanel.js +1 -0
- package/dist/ssr/layout/DataPanel.js.map +1 -1
- package/dist/ssr/layout/DetailPanel.js +1 -0
- package/dist/ssr/layout/DetailPanel.js.map +1 -1
- package/dist/ssr/layout/Discussion.js +3 -2
- package/dist/ssr/layout/Discussion.js.map +1 -1
- package/dist/ssr/layout/FloatingWindow.js +1 -0
- package/dist/ssr/layout/FloatingWindow.js.map +1 -1
- package/dist/ssr/layout/Navigation.js +3 -2
- package/dist/ssr/layout/Navigation.js.map +1 -1
- package/dist/ssr/layout/PanelDialog.js +1 -0
- package/dist/ssr/layout/PanelDialog.js.map +1 -1
- package/dist/ssr/layout/PanelHeader.js +1 -1
- package/dist/ssr/layout/PanelHeader.js.map +1 -1
- package/dist/ssr/layout/Panes.js.map +1 -1
- package/dist/ssr/layout/PullToRefresh.js +177 -0
- package/dist/ssr/layout/PullToRefresh.js.map +1 -0
- package/dist/ssr/layout/ScrollArea.js.map +1 -1
- package/dist/ssr/layout/Settings.js +2 -1
- package/dist/ssr/layout/Settings.js.map +1 -1
- package/dist/ssr/layout/SettingsCollection.js +1 -0
- package/dist/ssr/layout/SettingsCollection.js.map +1 -1
- package/dist/ssr/layout/SettingsModal.js.map +1 -1
- package/dist/ssr/layout/SidebarItemPreview.js.map +1 -1
- package/dist/ssr/layout/app-workspace-controller.js.map +1 -1
- package/dist/ssr/layout/app-workspace-state.js.map +1 -1
- package/dist/ssr/layout/floating-window-geometry.js.map +1 -1
- package/dist/ssr/layout/index.js +1 -0
- package/dist/ssr/layout/index.js.map +1 -1
- package/dist/ssr/layout/navigation-model.js.map +1 -1
- package/dist/ssr/layout/panes-layout.js.map +1 -1
- package/dist/ssr/layout/scroll-fade.js.map +1 -1
- package/dist/ssr/layout/stable-id.js.map +1 -1
- package/dist/ssr/surfaces/Avatar.js +2 -1
- package/dist/ssr/surfaces/Avatar.js.map +1 -1
- package/dist/ssr/surfaces/DescriptionList.js.map +1 -1
- package/dist/ssr/surfaces/LinkCard.js +11 -2
- package/dist/ssr/surfaces/LinkCard.js.map +1 -1
- package/dist/ssr/surfaces/NotFoundState.js.map +1 -1
- package/dist/ssr/surfaces/NoticeCard.js.map +1 -1
- package/dist/ssr/surfaces/Paper.js +2 -1
- package/dist/ssr/surfaces/Paper.js.map +1 -1
- package/dist/ssr/surfaces/Placeholder.js +2 -1
- package/dist/ssr/surfaces/Placeholder.js.map +1 -1
- package/dist/ssr/surfaces/ProgressBar.js.map +1 -1
- package/dist/ssr/surfaces/StatCell.js +2 -1
- package/dist/ssr/surfaces/StatCell.js.map +1 -1
- package/dist/ssr/surfaces/StatGrid.js +1 -0
- package/dist/ssr/surfaces/StatGrid.js.map +1 -1
- package/dist/ssr/surfaces/StatusBadge.js.map +1 -1
- package/dist/ssr/surfaces/Tag.js.map +1 -1
- package/dist/ssr/surfaces/index.js.map +1 -1
- package/dist/ssr/widgets/Widget.js +1 -0
- package/dist/ssr/widgets/Widget.js.map +1 -1
- package/dist/ssr/widgets/WidgetHero.js.map +1 -1
- package/dist/ssr/widgets/WidgetList.js.map +1 -1
- package/dist/ssr/widgets/WidgetPills.js.map +1 -1
- package/dist/ssr/widgets/WidgetStat.js +1 -0
- package/dist/ssr/widgets/WidgetStat.js.map +1 -1
- package/dist/ssr/widgets/WidgetStatus.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/types/actions/SpotlightSearch.d.ts +1 -1
- package/dist/types/feedback/prompts.d.ts +2 -2
- package/dist/types/intl/messages.d.ts +1 -0
- package/dist/types/layout/AppOverview.d.ts +7 -0
- package/dist/types/layout/AppWorkspace.d.ts +14 -2
- package/dist/types/layout/PanelHeader.d.ts +1 -1
- package/dist/types/layout/PullToRefresh.d.ts +21 -0
- package/dist/types/layout/index.d.ts +3 -1
- package/dist/types/surfaces/LinkCard.d.ts +5 -2
- package/package.json +7 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createEffect","createMemo","createSignal","createUniqueId","For","onCleanup","onMount","Show","untrack","createFieldMeta","Field","fieldControlAria","useUiMessages","buildSuggestContext","createCompletionBehaviorState","detectQuery","displayLabel","plainTextHighlight","renderWithOverlay","resolveSuggestions","resolveMaybeAccessor","AutocompleteEditor","props","messages","meta","id","textarea","preview","dropdown","currentAbort","currentTimer","overlayFrame","overlayInitialized","renderPendingOverlay","completionBehavior","composing","setComposing","localValue","setLocalValue","value","error","state","setState","loading","setLoading","completionError","setCompletionError","dropdownOpen","setDropdownOpen","completionId","listboxId","controlId","optionId","index","useOverlay","Boolean","highlight","activeSuggestion","current","suggestions","selectedIndex","incoming","undefined","target","suggestionGhost","suggestion","edit","textEdit","at","context","end","text","slice","length","replacing","start","toLowerCase","startsWith","cancelAnimationFrame","highlighter","active","ghost","anchor","innerHTML","scrollTop","scrollLeft","matches","positionDropdown","requestAnimationFrame","render","closeDropdown","hidePopover","clearCompletion","abort","clearTimeout","isConnected","querySelector","rect","getBoundingClientRect","maxHeight","spaceBelow","window","innerHeight","bottom","openAbove","top","width","Math","min","innerWidth","left","style","setProperty","max","showPopover","isAbortError","DOMException","name","applySuggestionList","currentText","normalized","usable","filter","Number","isInteger","previous","retained","findIndex","completion","queueMicrotask","runAsync","promise","signal","aborted","Error","message","suggestionsCouldNotLoad","startResolution","result","query","kind","data","recomputeCompletion","completions","AbortController","delay","debounceMs","setTimeout","retryCompletion","activateSuggestion","applied","applySuggestion","trackExpansion","restoreExpansionOnBackspace","moveSelection","direction","selectionChange","document","activeElement","reposition","addEventListener","removeEventListener","reset","onInput","event","inputType","tryExpand","currentTarget","onValueChange","onKeyDown","isComposing","key","metaKey","ctrlKey","altKey","shiftKey","tryRestore","preventDefault","dropdownCompletion","singleLine","onSubmit","blur","surfaceStyle","String","lines","_$createComponent","class","label","description","fill","_$memo","required","disabled","children","_el$","_$getNextElement","_tmpl$4","_el$2","firstChild","_el$6","_el$7","_co$","_$getNextMarker","nextSibling","_el$4","_el$5","_el$15","_el$16","_co$5","_$insert","when","placeholder","_el$3","_tmpl$","_ref$","_$use","next","relatedTarget","contains","$$keydown","onValueCommit","$$input","element","textareaRef","_$spread","_$mergeProps","spellcheck","maxLength","rows","aria-controls","aria-activedescendant","_el$8","_tmpl$3","_el$9","_el$1","_el$10","_co$2","_el$11","_el$12","_co$3","_el$13","_el$14","_co$4","_ref$2","_$setAttribute","_tmpl$2","_el$17","_tmpl$5","_el$18","_el$19","_el$20","$$click","$$mousedown","retry","_$runHydrationEvents","each","_el$21","_tmpl$6","_el$22","_el$23","_el$24","_co$6","focus","hint","_el$25","_tmpl$7","_$effect","_p$","_v$0","_v$1","_v$10","e","t","a","_v$","completionSuggestions","_v$2","_v$3","_v$4","_v$5","_v$6","_v$7","_v$8","variant","_v$9","o","i","n","s","_$style","abbreviations","_$delegateEvents"],"sources":["inputs/AutocompleteEditor.tsx"],"sourcesContent":["import { createEffect, createMemo, createSignal, createUniqueId, For, type JSX, onCleanup, onMount, Show, untrack } from \"solid-js\";\nimport { createFieldMeta, Field, fieldControlAria } from \"../internal/field\";\nimport { useUiMessages } from \"../intl/messages\";\nimport {\n buildSuggestContext,\n type Completion,\n createCompletionBehaviorState,\n detectQuery,\n displayLabel,\n plainTextHighlight,\n type QueryContext,\n renderWithOverlay,\n resolveSuggestions,\n type Suggestion,\n} from \"./completion\";\nimport type { ValueFieldProps } from \"./field-contract\";\nimport { resolveMaybeAccessor } from \"./field-contract\";\n\nexport type AutocompleteEditorProps = ValueFieldProps<string> & {\n onSubmit?: () => void;\n completions?: readonly Completion[];\n restoreExpansionOnBackspace?: boolean;\n highlight?: (text: string) => string;\n singleLine?: boolean;\n lines?: number;\n fill?: boolean;\n placeholder?: string;\n spellcheck?: boolean;\n name?: string;\n maxLength?: number;\n textareaRef?: (element: HTMLTextAreaElement) => void;\n variant?: \"default\" | \"paper\";\n};\n\ntype CompletionState = {\n context: QueryContext;\n suggestions: readonly Suggestion[];\n selectedIndex: number;\n};\n\nexport function AutocompleteEditor(props: AutocompleteEditorProps): JSX.Element {\n const messages = useUiMessages();\n const meta = createFieldMeta(props.id);\n let textarea: HTMLTextAreaElement | undefined;\n let preview: HTMLDivElement | undefined;\n let dropdown: HTMLDivElement | undefined;\n let currentAbort: AbortController | null = null;\n let currentTimer: ReturnType<typeof setTimeout> | null = null;\n let overlayFrame: number | undefined;\n let overlayInitialized = false;\n let renderPendingOverlay: (() => void) | undefined;\n const completionBehavior = createCompletionBehaviorState();\n\n const [composing, setComposing] = createSignal(false);\n const [localValue, setLocalValue] = createSignal(resolveMaybeAccessor(props.value) ?? \"\");\n const error = () => resolveMaybeAccessor(props.error);\n const [state, setState] = createSignal<CompletionState | null>(null);\n const [loading, setLoading] = createSignal(false);\n const [completionError, setCompletionError] = createSignal<string | null>(null);\n const [dropdownOpen, setDropdownOpen] = createSignal(false);\n const completionId = createUniqueId();\n const listboxId = `${meta.controlId}-${completionId}-suggestions`;\n const optionId = (index: number): string => `${listboxId}-${index}`;\n const useOverlay = createMemo(() => Boolean(props.highlight));\n const activeSuggestion = (): Suggestion | null => {\n const current = state();\n return current?.suggestions[current.selectedIndex] ?? null;\n };\n\n createEffect(() => {\n const incoming = resolveMaybeAccessor(props.value);\n if (incoming !== undefined && incoming !== null && incoming !== untrack(localValue)) {\n setLocalValue(incoming);\n }\n });\n\n createEffect(() => {\n const target = localValue();\n if (!composing() && textarea && textarea.value !== target) {\n textarea.value = target;\n }\n });\n\n const suggestionGhost = (current: CompletionState, suggestion: Suggestion): { at: number; text: string } | undefined => {\n const edit = suggestion.textEdit;\n if (!edit) {\n return {\n at: current.context.end,\n text: suggestion.text.slice(current.context.text.length),\n };\n }\n if (edit.end !== current.context.end) return undefined;\n const replacing = localValue().slice(edit.start, edit.end);\n if (!edit.text.toLowerCase().startsWith(replacing.toLowerCase())) {\n return undefined;\n }\n return { at: edit.end, text: edit.text.slice(replacing.length) };\n };\n\n createEffect(() => {\n if (!preview) {\n if (overlayFrame !== undefined) cancelAnimationFrame(overlayFrame);\n overlayFrame = undefined;\n renderPendingOverlay = undefined;\n overlayInitialized = false;\n return;\n }\n const value = localValue();\n const highlighter = props.highlight ?? plainTextHighlight;\n const current = state();\n const active = activeSuggestion();\n const ghost = current && active ? suggestionGhost(current, active) : undefined;\n const anchor = current ? { at: current.context.start } : undefined;\n renderPendingOverlay = () => {\n if (!preview) return;\n preview.innerHTML = renderWithOverlay(value, highlighter, { ghost, anchor });\n if (textarea) {\n preview.scrollTop = textarea.scrollTop;\n preview.scrollLeft = textarea.scrollLeft;\n }\n if (dropdown?.matches(\":popover-open\")) positionDropdown();\n };\n if (!overlayInitialized) {\n overlayInitialized = true;\n renderPendingOverlay();\n renderPendingOverlay = undefined;\n return;\n }\n if (overlayFrame !== undefined) return;\n overlayFrame = requestAnimationFrame(() => {\n overlayFrame = undefined;\n const render = renderPendingOverlay;\n renderPendingOverlay = undefined;\n render?.();\n });\n });\n\n const closeDropdown = (): void => {\n if (dropdown?.matches(\":popover-open\")) dropdown.hidePopover();\n setDropdownOpen(false);\n };\n\n const clearCompletion = (): void => {\n currentAbort?.abort();\n currentAbort = null;\n if (currentTimer) clearTimeout(currentTimer);\n currentTimer = null;\n setState(null);\n setLoading(false);\n setCompletionError(null);\n closeDropdown();\n };\n\n const positionDropdown = (): void => {\n if (!dropdown?.isConnected || !textarea?.isConnected) return;\n const anchor = preview?.querySelector<HTMLElement>(\"[data-completion-anchor]\");\n const rect = anchor?.getBoundingClientRect() ?? textarea.getBoundingClientRect();\n const maxHeight = 260;\n const spaceBelow = window.innerHeight - rect.bottom;\n const openAbove = spaceBelow < maxHeight && rect.top > spaceBelow;\n const width = Math.min(280, window.innerWidth - 16);\n const left = Math.min(rect.left, window.innerWidth - width - 8);\n dropdown.style.setProperty(\"left\", `${Math.max(8, left)}px`, \"important\");\n dropdown.style.setProperty(\"width\", `${width}px`, \"important\");\n if (openAbove) {\n dropdown.style.setProperty(\"top\", \"auto\", \"important\");\n dropdown.style.setProperty(\"bottom\", `${window.innerHeight - rect.top + 4}px`, \"important\");\n } else {\n dropdown.style.setProperty(\"top\", `${rect.bottom + 4}px`, \"important\");\n dropdown.style.setProperty(\"bottom\", \"auto\", \"important\");\n }\n if (!dropdown.matches(\":popover-open\")) dropdown.showPopover();\n };\n\n const isAbortError = (error: unknown): boolean =>\n error instanceof DOMException\n ? error.name === \"AbortError\"\n : Boolean(error && typeof error === \"object\" && \"name\" in error && (error as { name: string }).name === \"AbortError\");\n\n const applySuggestionList = (context: QueryContext, suggestions: readonly Suggestion[]): void => {\n const currentText = localValue();\n const normalized = context.text.toLowerCase();\n const usable = suggestions.filter((suggestion) => {\n if (suggestion.textEdit) {\n const { start, end, text } = suggestion.textEdit;\n return (\n Number.isInteger(start) &&\n Number.isInteger(end) &&\n start >= 0 &&\n end >= start &&\n end <= currentText.length &&\n currentText.slice(start, end) !== text\n );\n }\n return suggestion.text.toLowerCase().startsWith(normalized) && suggestion.text.length > context.text.length;\n });\n if (usable.length === 0) {\n clearCompletion();\n return;\n }\n const previous = activeSuggestion()?.text;\n const retained = previous ? usable.findIndex((suggestion) => suggestion.text === previous) : -1;\n setState({\n context,\n suggestions: usable,\n selectedIndex: retained >= 0 ? retained : 0,\n });\n if (context.completion.dropdown) {\n setDropdownOpen(true);\n queueMicrotask(positionDropdown);\n } else {\n closeDropdown();\n }\n };\n\n const runAsync = async (context: QueryContext, promise: Promise<readonly Suggestion[]>, signal: AbortSignal): Promise<void> => {\n try {\n const suggestions = await promise;\n if (signal.aborted) return;\n setLoading(false);\n applySuggestionList(context, suggestions);\n } catch (error) {\n if (signal.aborted || isAbortError(error)) return;\n setLoading(false);\n setCompletionError(error instanceof Error ? error.message : messages().suggestionsCouldNotLoad);\n setDropdownOpen(true);\n queueMicrotask(positionDropdown);\n }\n };\n\n const startResolution = (context: QueryContext, signal: AbortSignal): void => {\n if (signal.aborted || !textarea) return;\n setCompletionError(null);\n setLoading(true);\n setDropdownOpen(true);\n queueMicrotask(positionDropdown);\n try {\n const result = resolveSuggestions(context.completion, context.query, buildSuggestContext(textarea, context), signal);\n if (result.kind === \"sync\") {\n setLoading(false);\n applySuggestionList(context, result.data);\n } else {\n void runAsync(context, result.promise, signal);\n }\n } catch (error) {\n if (signal.aborted || isAbortError(error)) return;\n setLoading(false);\n setCompletionError(error instanceof Error ? error.message : messages().suggestionsCouldNotLoad);\n setDropdownOpen(true);\n queueMicrotask(positionDropdown);\n }\n };\n\n const recomputeCompletion = (): void => {\n if (!textarea) return;\n const context = detectQuery(textarea, props.completions);\n if (!context) {\n clearCompletion();\n return;\n }\n currentAbort?.abort();\n if (currentTimer) clearTimeout(currentTimer);\n currentTimer = null;\n currentAbort = new AbortController();\n const current = state();\n if (\n current &&\n (current.context.start !== context.start ||\n current.context.end !== context.end ||\n current.context.text !== context.text ||\n current.context.completion !== context.completion)\n ) {\n setState(null);\n closeDropdown();\n }\n setCompletionError(null);\n const delay = Math.max(0, context.completion.debounceMs ?? 0);\n if (delay === 0) {\n startResolution(context, currentAbort.signal);\n } else {\n setLoading(false);\n if (!state()) closeDropdown();\n const signal = currentAbort.signal;\n currentTimer = setTimeout(() => {\n currentTimer = null;\n startResolution(context, signal);\n }, delay);\n }\n };\n\n const retryCompletion = (): void => {\n if (!textarea) return;\n const context = detectQuery(textarea, props.completions);\n if (!context) return clearCompletion();\n currentAbort?.abort();\n if (currentTimer) clearTimeout(currentTimer);\n currentTimer = null;\n currentAbort = new AbortController();\n startResolution(context, currentAbort.signal);\n };\n\n const activateSuggestion = (index = state()?.selectedIndex ?? -1): boolean => {\n const current = state();\n const active = current?.suggestions[index];\n if (!textarea || !current || !active) return false;\n if (!active.textEdit && active.text === current.context.text) {\n clearCompletion();\n return false;\n }\n const applied = completionBehavior.applySuggestion(textarea, current.context, active, {\n trackExpansion: props.restoreExpansionOnBackspace ?? true,\n });\n clearCompletion();\n if (applied) queueMicrotask(recomputeCompletion);\n return applied;\n };\n\n const moveSelection = (direction: 1 | -1): void => {\n const current = state();\n if (!current || current.suggestions.length === 0) return;\n setState({\n ...current,\n selectedIndex: (current.selectedIndex + direction + current.suggestions.length) % current.suggestions.length,\n });\n };\n\n onMount(() => {\n const selectionChange = (): void => {\n if (document.activeElement === textarea) recomputeCompletion();\n };\n // Reposition an OPEN popover only. Calling `positionDropdown` blindly\n // would `showPopover()` a dropdown that is deliberately closed (a\n // ghost-only completion keeps state without a dropdown).\n const reposition = (): void => {\n if (dropdown?.matches(\":popover-open\")) positionDropdown();\n };\n document.addEventListener(\"selectionchange\", selectionChange);\n window.addEventListener(\"resize\", reposition);\n onCleanup(() => {\n document.removeEventListener(\"selectionchange\", selectionChange);\n window.removeEventListener(\"resize\", reposition);\n if (dropdown?.matches(\":popover-open\")) dropdown.hidePopover();\n currentAbort?.abort();\n if (currentTimer) clearTimeout(currentTimer);\n if (overlayFrame !== undefined) cancelAnimationFrame(overlayFrame);\n overlayFrame = undefined;\n renderPendingOverlay = undefined;\n completionBehavior.reset();\n });\n });\n\n const onInput = (event: InputEvent & { currentTarget: HTMLTextAreaElement }): void => {\n if (event.inputType.startsWith(\"insert\") && completionBehavior.tryExpand(event.currentTarget, props.completions)) {\n return;\n }\n setLocalValue(event.currentTarget.value);\n props.onValueChange?.(event.currentTarget.value);\n recomputeCompletion();\n };\n\n const onKeyDown = (event: KeyboardEvent): void => {\n if (!textarea || event.isComposing) return;\n if (\n (props.restoreExpansionOnBackspace ?? true) &&\n event.key === \"Backspace\" &&\n !event.metaKey &&\n !event.ctrlKey &&\n !event.altKey &&\n !event.shiftKey &&\n completionBehavior.tryRestore(textarea)\n ) {\n event.preventDefault();\n return;\n }\n const current = state();\n const dropdownCompletion = current?.context.completion.dropdown === true;\n if (current && dropdownCompletion && (event.key === \"ArrowDown\" || event.key === \"ArrowUp\")) {\n event.preventDefault();\n moveSelection(event.key === \"ArrowDown\" ? 1 : -1);\n return;\n }\n if (event.key === \"Enter\" && !event.shiftKey && !event.metaKey && !event.ctrlKey && !event.altKey) {\n if (current && dropdownCompletion && dropdownOpen()) {\n event.preventDefault();\n activateSuggestion();\n return;\n }\n if (props.singleLine) {\n event.preventDefault();\n props.onSubmit?.();\n return;\n }\n }\n if (event.key === \"Enter\" && (event.metaKey || event.ctrlKey) && !props.singleLine && props.onSubmit) {\n event.preventDefault();\n props.onSubmit();\n return;\n }\n if (event.key === \"Tab\" && !event.shiftKey && !event.metaKey && !event.ctrlKey && !event.altKey && current) {\n event.preventDefault();\n activateSuggestion();\n return;\n }\n if (event.key === \"Escape\") {\n if (current) {\n event.preventDefault();\n clearCompletion();\n } else if ((props.completions?.length ?? 0) > 0) {\n event.preventDefault();\n textarea.blur();\n }\n }\n };\n\n const surfaceStyle = (): JSX.CSSProperties => ({\n \"--k2b-editor-lines\": String(props.lines ?? 3),\n });\n\n return (\n <Field\n class={props.class}\n label={props.label}\n description={props.description}\n error={props.error}\n fill={props.fill && !props.singleLine}\n meta={meta}\n required={props.required}\n disabled={props.disabled}\n >\n <div\n class=\"k2b-autocomplete\"\n data-overlay={useOverlay() ? \"true\" : undefined}\n data-single-line={props.singleLine ? \"true\" : undefined}\n data-fill={props.fill && !props.singleLine ? \"true\" : undefined}\n data-disabled={props.disabled ? \"true\" : undefined}\n data-invalid={error() ? \"true\" : undefined}\n data-variant={props.variant === \"paper\" ? \"paper\" : undefined}\n style={surfaceStyle()}\n >\n <div class=\"k2b-autocomplete__surface\">\n <Show when={!localValue() && props.placeholder}>\n <div class=\"k2b-autocomplete__placeholder\" aria-hidden=\"true\">\n {props.placeholder}\n </div>\n </Show>\n <div ref={preview} class=\"k2b-autocomplete__preview\" aria-hidden=\"true\" />\n <textarea\n ref={(element) => {\n textarea = element;\n props.textareaRef?.(element);\n }}\n id={meta.controlId}\n name={props.name}\n class=\"k2b-autocomplete__input\"\n onInput={onInput}\n onChange={(event) => props.onValueCommit?.(event.currentTarget.value)}\n onKeyDown={onKeyDown}\n onScroll={(event) => {\n if (preview) {\n preview.scrollTop = event.currentTarget.scrollTop;\n preview.scrollLeft = event.currentTarget.scrollLeft;\n }\n if (dropdown?.matches(\":popover-open\")) positionDropdown();\n }}\n onCompositionStart={() => setComposing(true)}\n onCompositionEnd={() => setComposing(false)}\n onBlur={(event) => {\n const next = event.relatedTarget as HTMLElement | null;\n if (next && dropdown?.contains(next)) return;\n completionBehavior.reset();\n clearCompletion();\n }}\n disabled={props.disabled}\n required={props.required}\n spellcheck={props.spellcheck ?? false}\n maxLength={props.maxLength}\n rows={props.singleLine ? 1 : (props.lines ?? 3)}\n {...fieldControlAria(meta, props)}\n aria-haspopup=\"listbox\"\n aria-autocomplete=\"list\"\n aria-controls={dropdownOpen() ? listboxId : undefined}\n aria-activedescendant={dropdownOpen() && state() ? optionId(state()!.selectedIndex) : undefined}\n />\n </div>\n <Show when={state() || loading() || completionError()}>\n <div\n ref={dropdown}\n popover=\"manual\"\n class=\"k2b-autocomplete__options\"\n role=\"presentation\"\n aria-label={messages().completionSuggestions}\n >\n <div id={listboxId} class=\"k2b-autocomplete__listbox\" role=\"listbox\" aria-label={messages().suggestions}>\n <Show when={loading()}>\n <div class=\"k2b-autocomplete__status\" role=\"status\">\n <i class=\"ti ti-loader-2 k2b-spin\" aria-hidden=\"true\" />\n Loading suggestions\n </div>\n </Show>\n <Show when={completionError()}>\n {(message) => (\n <div class=\"k2b-autocomplete__status\" data-error=\"true\" role=\"alert\">\n <i class=\"ti ti-alert-circle\" aria-hidden=\"true\" />\n <span>{message()}</span>\n <button type=\"button\" onMouseDown={(event) => event.preventDefault()} onClick={retryCompletion}>\n {messages().retry}\n </button>\n </div>\n )}\n </Show>\n <For each={state()?.suggestions ?? []}>\n {(suggestion, index) => (\n // biome-ignore lint/a11y/useKeyWithClickEvents: the owning textarea handles keyboard activation through aria-activedescendant.\n <div\n id={optionId(index())}\n class=\"k2b-autocomplete__option\"\n role=\"option\"\n aria-selected={index() === state()?.selectedIndex}\n data-loading={loading() ? \"true\" : undefined}\n onMouseEnter={() => {\n const current = state();\n if (current) {\n setState({ ...current, selectedIndex: index() });\n }\n }}\n onMouseDown={(event) => {\n event.preventDefault();\n }}\n onClick={() => {\n activateSuggestion(index());\n textarea?.focus();\n }}\n >\n <span>{displayLabel(suggestion, state()!.context.completion)}</span>\n <Show when={suggestion.hint}>{(hint) => <small>{hint()}</small>}</Show>\n </div>\n )}\n </For>\n </div>\n </div>\n </Show>\n </div>\n </Field>\n );\n}\n\nexport type { Completion, SuggestContext, Suggestion } from \"./completion\";\nexport { abbreviations } from \"./completion\";\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":[],"sources":["inputs/AutocompleteEditor.tsx"],"sourcesContent":["import { createEffect, createMemo, createSignal, createUniqueId, For, type JSX, onCleanup, onMount, Show, untrack } from \"solid-js\";\nimport { createFieldMeta, Field, fieldControlAria } from \"../internal/field\";\nimport { useUiMessages } from \"../intl/messages\";\nimport {\n buildSuggestContext,\n type Completion,\n createCompletionBehaviorState,\n detectQuery,\n displayLabel,\n plainTextHighlight,\n type QueryContext,\n renderWithOverlay,\n resolveSuggestions,\n type Suggestion,\n} from \"./completion\";\nimport type { ValueFieldProps } from \"./field-contract\";\nimport { resolveMaybeAccessor } from \"./field-contract\";\n\nexport type AutocompleteEditorProps = ValueFieldProps<string> & {\n onSubmit?: () => void;\n completions?: readonly Completion[];\n restoreExpansionOnBackspace?: boolean;\n highlight?: (text: string) => string;\n singleLine?: boolean;\n lines?: number;\n fill?: boolean;\n placeholder?: string;\n spellcheck?: boolean;\n name?: string;\n maxLength?: number;\n textareaRef?: (element: HTMLTextAreaElement) => void;\n variant?: \"default\" | \"paper\";\n};\n\ntype CompletionState = {\n context: QueryContext;\n suggestions: readonly Suggestion[];\n selectedIndex: number;\n};\n\nexport function AutocompleteEditor(props: AutocompleteEditorProps): JSX.Element {\n const messages = useUiMessages();\n const meta = createFieldMeta(props.id);\n let textarea: HTMLTextAreaElement | undefined;\n let preview: HTMLDivElement | undefined;\n let dropdown: HTMLDivElement | undefined;\n let currentAbort: AbortController | null = null;\n let currentTimer: ReturnType<typeof setTimeout> | null = null;\n let overlayFrame: number | undefined;\n let overlayInitialized = false;\n let renderPendingOverlay: (() => void) | undefined;\n const completionBehavior = createCompletionBehaviorState();\n\n const [composing, setComposing] = createSignal(false);\n const [localValue, setLocalValue] = createSignal(resolveMaybeAccessor(props.value) ?? \"\");\n const error = () => resolveMaybeAccessor(props.error);\n const [state, setState] = createSignal<CompletionState | null>(null);\n const [loading, setLoading] = createSignal(false);\n const [completionError, setCompletionError] = createSignal<string | null>(null);\n const [dropdownOpen, setDropdownOpen] = createSignal(false);\n const completionId = createUniqueId();\n const listboxId = `${meta.controlId}-${completionId}-suggestions`;\n const optionId = (index: number): string => `${listboxId}-${index}`;\n const useOverlay = createMemo(() => Boolean(props.highlight));\n const activeSuggestion = (): Suggestion | null => {\n const current = state();\n return current?.suggestions[current.selectedIndex] ?? null;\n };\n\n createEffect(() => {\n const incoming = resolveMaybeAccessor(props.value);\n if (incoming !== undefined && incoming !== null && incoming !== untrack(localValue)) {\n setLocalValue(incoming);\n }\n });\n\n createEffect(() => {\n const target = localValue();\n if (!composing() && textarea && textarea.value !== target) {\n textarea.value = target;\n }\n });\n\n const suggestionGhost = (current: CompletionState, suggestion: Suggestion): { at: number; text: string } | undefined => {\n const edit = suggestion.textEdit;\n if (!edit) {\n return {\n at: current.context.end,\n text: suggestion.text.slice(current.context.text.length),\n };\n }\n if (edit.end !== current.context.end) return undefined;\n const replacing = localValue().slice(edit.start, edit.end);\n if (!edit.text.toLowerCase().startsWith(replacing.toLowerCase())) {\n return undefined;\n }\n return { at: edit.end, text: edit.text.slice(replacing.length) };\n };\n\n createEffect(() => {\n if (!preview) {\n if (overlayFrame !== undefined) cancelAnimationFrame(overlayFrame);\n overlayFrame = undefined;\n renderPendingOverlay = undefined;\n overlayInitialized = false;\n return;\n }\n const value = localValue();\n const highlighter = props.highlight ?? plainTextHighlight;\n const current = state();\n const active = activeSuggestion();\n const ghost = current && active ? suggestionGhost(current, active) : undefined;\n const anchor = current ? { at: current.context.start } : undefined;\n renderPendingOverlay = () => {\n if (!preview) return;\n preview.innerHTML = renderWithOverlay(value, highlighter, { ghost, anchor });\n if (textarea) {\n preview.scrollTop = textarea.scrollTop;\n preview.scrollLeft = textarea.scrollLeft;\n }\n if (dropdown?.matches(\":popover-open\")) positionDropdown();\n };\n if (!overlayInitialized) {\n overlayInitialized = true;\n renderPendingOverlay();\n renderPendingOverlay = undefined;\n return;\n }\n if (overlayFrame !== undefined) return;\n overlayFrame = requestAnimationFrame(() => {\n overlayFrame = undefined;\n const render = renderPendingOverlay;\n renderPendingOverlay = undefined;\n render?.();\n });\n });\n\n const closeDropdown = (): void => {\n if (dropdown?.matches(\":popover-open\")) dropdown.hidePopover();\n setDropdownOpen(false);\n };\n\n const clearCompletion = (): void => {\n currentAbort?.abort();\n currentAbort = null;\n if (currentTimer) clearTimeout(currentTimer);\n currentTimer = null;\n setState(null);\n setLoading(false);\n setCompletionError(null);\n closeDropdown();\n };\n\n const positionDropdown = (): void => {\n if (!dropdown?.isConnected || !textarea?.isConnected) return;\n const anchor = preview?.querySelector<HTMLElement>(\"[data-completion-anchor]\");\n const rect = anchor?.getBoundingClientRect() ?? textarea.getBoundingClientRect();\n const maxHeight = 260;\n const spaceBelow = window.innerHeight - rect.bottom;\n const openAbove = spaceBelow < maxHeight && rect.top > spaceBelow;\n const width = Math.min(280, window.innerWidth - 16);\n const left = Math.min(rect.left, window.innerWidth - width - 8);\n dropdown.style.setProperty(\"left\", `${Math.max(8, left)}px`, \"important\");\n dropdown.style.setProperty(\"width\", `${width}px`, \"important\");\n if (openAbove) {\n dropdown.style.setProperty(\"top\", \"auto\", \"important\");\n dropdown.style.setProperty(\"bottom\", `${window.innerHeight - rect.top + 4}px`, \"important\");\n } else {\n dropdown.style.setProperty(\"top\", `${rect.bottom + 4}px`, \"important\");\n dropdown.style.setProperty(\"bottom\", \"auto\", \"important\");\n }\n if (!dropdown.matches(\":popover-open\")) dropdown.showPopover();\n };\n\n const isAbortError = (error: unknown): boolean =>\n error instanceof DOMException\n ? error.name === \"AbortError\"\n : Boolean(error && typeof error === \"object\" && \"name\" in error && (error as { name: string }).name === \"AbortError\");\n\n const applySuggestionList = (context: QueryContext, suggestions: readonly Suggestion[]): void => {\n const currentText = localValue();\n const normalized = context.text.toLowerCase();\n const usable = suggestions.filter((suggestion) => {\n if (suggestion.textEdit) {\n const { start, end, text } = suggestion.textEdit;\n return (\n Number.isInteger(start) &&\n Number.isInteger(end) &&\n start >= 0 &&\n end >= start &&\n end <= currentText.length &&\n currentText.slice(start, end) !== text\n );\n }\n return suggestion.text.toLowerCase().startsWith(normalized) && suggestion.text.length > context.text.length;\n });\n if (usable.length === 0) {\n clearCompletion();\n return;\n }\n const previous = activeSuggestion()?.text;\n const retained = previous ? usable.findIndex((suggestion) => suggestion.text === previous) : -1;\n setState({\n context,\n suggestions: usable,\n selectedIndex: retained >= 0 ? retained : 0,\n });\n if (context.completion.dropdown) {\n setDropdownOpen(true);\n queueMicrotask(positionDropdown);\n } else {\n closeDropdown();\n }\n };\n\n const runAsync = async (context: QueryContext, promise: Promise<readonly Suggestion[]>, signal: AbortSignal): Promise<void> => {\n try {\n const suggestions = await promise;\n if (signal.aborted) return;\n setLoading(false);\n applySuggestionList(context, suggestions);\n } catch (error) {\n if (signal.aborted || isAbortError(error)) return;\n setLoading(false);\n setCompletionError(error instanceof Error ? error.message : messages().suggestionsCouldNotLoad);\n setDropdownOpen(true);\n queueMicrotask(positionDropdown);\n }\n };\n\n const startResolution = (context: QueryContext, signal: AbortSignal): void => {\n if (signal.aborted || !textarea) return;\n setCompletionError(null);\n setLoading(true);\n setDropdownOpen(true);\n queueMicrotask(positionDropdown);\n try {\n const result = resolveSuggestions(context.completion, context.query, buildSuggestContext(textarea, context), signal);\n if (result.kind === \"sync\") {\n setLoading(false);\n applySuggestionList(context, result.data);\n } else {\n void runAsync(context, result.promise, signal);\n }\n } catch (error) {\n if (signal.aborted || isAbortError(error)) return;\n setLoading(false);\n setCompletionError(error instanceof Error ? error.message : messages().suggestionsCouldNotLoad);\n setDropdownOpen(true);\n queueMicrotask(positionDropdown);\n }\n };\n\n const recomputeCompletion = (): void => {\n if (!textarea) return;\n const context = detectQuery(textarea, props.completions);\n if (!context) {\n clearCompletion();\n return;\n }\n currentAbort?.abort();\n if (currentTimer) clearTimeout(currentTimer);\n currentTimer = null;\n currentAbort = new AbortController();\n const current = state();\n if (\n current &&\n (current.context.start !== context.start ||\n current.context.end !== context.end ||\n current.context.text !== context.text ||\n current.context.completion !== context.completion)\n ) {\n setState(null);\n closeDropdown();\n }\n setCompletionError(null);\n const delay = Math.max(0, context.completion.debounceMs ?? 0);\n if (delay === 0) {\n startResolution(context, currentAbort.signal);\n } else {\n setLoading(false);\n if (!state()) closeDropdown();\n const signal = currentAbort.signal;\n currentTimer = setTimeout(() => {\n currentTimer = null;\n startResolution(context, signal);\n }, delay);\n }\n };\n\n const retryCompletion = (): void => {\n if (!textarea) return;\n const context = detectQuery(textarea, props.completions);\n if (!context) return clearCompletion();\n currentAbort?.abort();\n if (currentTimer) clearTimeout(currentTimer);\n currentTimer = null;\n currentAbort = new AbortController();\n startResolution(context, currentAbort.signal);\n };\n\n const activateSuggestion = (index = state()?.selectedIndex ?? -1): boolean => {\n const current = state();\n const active = current?.suggestions[index];\n if (!textarea || !current || !active) return false;\n if (!active.textEdit && active.text === current.context.text) {\n clearCompletion();\n return false;\n }\n const applied = completionBehavior.applySuggestion(textarea, current.context, active, {\n trackExpansion: props.restoreExpansionOnBackspace ?? true,\n });\n clearCompletion();\n if (applied) queueMicrotask(recomputeCompletion);\n return applied;\n };\n\n const moveSelection = (direction: 1 | -1): void => {\n const current = state();\n if (!current || current.suggestions.length === 0) return;\n setState({\n ...current,\n selectedIndex: (current.selectedIndex + direction + current.suggestions.length) % current.suggestions.length,\n });\n };\n\n onMount(() => {\n const selectionChange = (): void => {\n if (document.activeElement === textarea) recomputeCompletion();\n };\n // Reposition an OPEN popover only. Calling `positionDropdown` blindly\n // would `showPopover()` a dropdown that is deliberately closed (a\n // ghost-only completion keeps state without a dropdown).\n const reposition = (): void => {\n if (dropdown?.matches(\":popover-open\")) positionDropdown();\n };\n document.addEventListener(\"selectionchange\", selectionChange);\n window.addEventListener(\"resize\", reposition);\n onCleanup(() => {\n document.removeEventListener(\"selectionchange\", selectionChange);\n window.removeEventListener(\"resize\", reposition);\n if (dropdown?.matches(\":popover-open\")) dropdown.hidePopover();\n currentAbort?.abort();\n if (currentTimer) clearTimeout(currentTimer);\n if (overlayFrame !== undefined) cancelAnimationFrame(overlayFrame);\n overlayFrame = undefined;\n renderPendingOverlay = undefined;\n completionBehavior.reset();\n });\n });\n\n const onInput = (event: InputEvent & { currentTarget: HTMLTextAreaElement }): void => {\n if (event.inputType.startsWith(\"insert\") && completionBehavior.tryExpand(event.currentTarget, props.completions)) {\n return;\n }\n setLocalValue(event.currentTarget.value);\n props.onValueChange?.(event.currentTarget.value);\n recomputeCompletion();\n };\n\n const onKeyDown = (event: KeyboardEvent): void => {\n if (!textarea || event.isComposing) return;\n if (\n (props.restoreExpansionOnBackspace ?? true) &&\n event.key === \"Backspace\" &&\n !event.metaKey &&\n !event.ctrlKey &&\n !event.altKey &&\n !event.shiftKey &&\n completionBehavior.tryRestore(textarea)\n ) {\n event.preventDefault();\n return;\n }\n const current = state();\n const dropdownCompletion = current?.context.completion.dropdown === true;\n if (current && dropdownCompletion && (event.key === \"ArrowDown\" || event.key === \"ArrowUp\")) {\n event.preventDefault();\n moveSelection(event.key === \"ArrowDown\" ? 1 : -1);\n return;\n }\n if (event.key === \"Enter\" && !event.shiftKey && !event.metaKey && !event.ctrlKey && !event.altKey) {\n if (current && dropdownCompletion && dropdownOpen()) {\n event.preventDefault();\n activateSuggestion();\n return;\n }\n if (props.singleLine) {\n event.preventDefault();\n props.onSubmit?.();\n return;\n }\n }\n if (event.key === \"Enter\" && (event.metaKey || event.ctrlKey) && !props.singleLine && props.onSubmit) {\n event.preventDefault();\n props.onSubmit();\n return;\n }\n if (event.key === \"Tab\" && !event.shiftKey && !event.metaKey && !event.ctrlKey && !event.altKey && current) {\n event.preventDefault();\n activateSuggestion();\n return;\n }\n if (event.key === \"Escape\") {\n if (current) {\n event.preventDefault();\n clearCompletion();\n } else if ((props.completions?.length ?? 0) > 0) {\n event.preventDefault();\n textarea.blur();\n }\n }\n };\n\n const surfaceStyle = (): JSX.CSSProperties => ({\n \"--k2b-editor-lines\": String(props.lines ?? 3),\n });\n\n return (\n <Field\n class={props.class}\n label={props.label}\n description={props.description}\n error={props.error}\n fill={props.fill && !props.singleLine}\n meta={meta}\n required={props.required}\n disabled={props.disabled}\n >\n <div\n class=\"k2b-autocomplete\"\n data-overlay={useOverlay() ? \"true\" : undefined}\n data-single-line={props.singleLine ? \"true\" : undefined}\n data-fill={props.fill && !props.singleLine ? \"true\" : undefined}\n data-disabled={props.disabled ? \"true\" : undefined}\n data-invalid={error() ? \"true\" : undefined}\n data-variant={props.variant === \"paper\" ? \"paper\" : undefined}\n style={surfaceStyle()}\n >\n <div class=\"k2b-autocomplete__surface\">\n <Show when={!localValue() && props.placeholder}>\n <div class=\"k2b-autocomplete__placeholder\" aria-hidden=\"true\">\n {props.placeholder}\n </div>\n </Show>\n <div ref={preview} class=\"k2b-autocomplete__preview\" aria-hidden=\"true\" />\n <textarea\n ref={(element) => {\n textarea = element;\n props.textareaRef?.(element);\n }}\n id={meta.controlId}\n name={props.name}\n class=\"k2b-autocomplete__input\"\n onInput={onInput}\n onChange={(event) => props.onValueCommit?.(event.currentTarget.value)}\n onKeyDown={onKeyDown}\n onScroll={(event) => {\n if (preview) {\n preview.scrollTop = event.currentTarget.scrollTop;\n preview.scrollLeft = event.currentTarget.scrollLeft;\n }\n if (dropdown?.matches(\":popover-open\")) positionDropdown();\n }}\n onCompositionStart={() => setComposing(true)}\n onCompositionEnd={() => setComposing(false)}\n onBlur={(event) => {\n const next = event.relatedTarget as HTMLElement | null;\n if (next && dropdown?.contains(next)) return;\n completionBehavior.reset();\n clearCompletion();\n }}\n disabled={props.disabled}\n required={props.required}\n spellcheck={props.spellcheck ?? false}\n maxLength={props.maxLength}\n rows={props.singleLine ? 1 : (props.lines ?? 3)}\n {...fieldControlAria(meta, props)}\n aria-haspopup=\"listbox\"\n aria-autocomplete=\"list\"\n aria-controls={dropdownOpen() ? listboxId : undefined}\n aria-activedescendant={dropdownOpen() && state() ? optionId(state()!.selectedIndex) : undefined}\n />\n </div>\n <Show when={state() || loading() || completionError()}>\n <div\n ref={dropdown}\n popover=\"manual\"\n class=\"k2b-autocomplete__options\"\n role=\"presentation\"\n aria-label={messages().completionSuggestions}\n >\n <div id={listboxId} class=\"k2b-autocomplete__listbox\" role=\"listbox\" aria-label={messages().suggestions}>\n <Show when={loading()}>\n <div class=\"k2b-autocomplete__status\" role=\"status\">\n <i class=\"ti ti-loader-2 k2b-spin\" aria-hidden=\"true\" />\n Loading suggestions\n </div>\n </Show>\n <Show when={completionError()}>\n {(message) => (\n <div class=\"k2b-autocomplete__status\" data-error=\"true\" role=\"alert\">\n <i class=\"ti ti-alert-circle\" aria-hidden=\"true\" />\n <span>{message()}</span>\n <button type=\"button\" onMouseDown={(event) => event.preventDefault()} onClick={retryCompletion}>\n {messages().retry}\n </button>\n </div>\n )}\n </Show>\n <For each={state()?.suggestions ?? []}>\n {(suggestion, index) => (\n // biome-ignore lint/a11y/useKeyWithClickEvents: the owning textarea handles keyboard activation through aria-activedescendant.\n <div\n id={optionId(index())}\n class=\"k2b-autocomplete__option\"\n role=\"option\"\n aria-selected={index() === state()?.selectedIndex}\n data-loading={loading() ? \"true\" : undefined}\n onMouseEnter={() => {\n const current = state();\n if (current) {\n setState({ ...current, selectedIndex: index() });\n }\n }}\n onMouseDown={(event) => {\n event.preventDefault();\n }}\n onClick={() => {\n activateSuggestion(index());\n textarea?.focus();\n }}\n >\n <span>{displayLabel(suggestion, state()!.context.completion)}</span>\n <Show when={suggestion.hint}>{(hint) => <small>{hint()}</small>}</Show>\n </div>\n )}\n </For>\n </div>\n </div>\n </Show>\n </div>\n </Field>\n );\n}\n\nexport type { Completion, SuggestContext, Suggestion } from \"./completion\";\nexport { abbreviations } from \"./completion\";\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createEffect","createMemo","createSignal","For","Show","createFieldMeta","Field","fieldControlAria","useUiMessages","ChoiceGroups","createChoiceLoader","createChoicePopover","nextEnabledChoiceIndex","commitFieldValue","resolveMaybeAccessor","errorMessage","error","fallback","Error","message","AutocompleteSelect","props","messages","meta","id","listboxId","controlId","cache","setCache","value","selected","current","undefined","selectedOption","label","formatValue","option","display","setDisplay","query","setQuery","focused","setFocused","editing","setEditing","resolvedQuery","setResolvedQuery","match","setMatch","focusedIndex","setFocusedIndex","selectedGroup","setSelectedGroup","defaultGroup","explicitOption","setExplicitOption","internalError","setInternalError","externalError","hasClearAction","Boolean","clearable","disabled","inputRef","popoverRef","optionRefs","pointerFocus","pendingCommitQuery","snapshot","popover","activeGroup","groups","some","group","groupChoices","allGroupLabel","all","remember","options","authoritative","next","completeInput","typed","length","lower","toLocaleLowerCase","completion","find","candidate","startsWith","queueMicrotask","document","activeElement","setSelectionRange","mergedOptions","result","commit","loader","cancel","hide","invalidate","noMatchText","noMatchingOption","signal","search","reason","aborted","optionsCouldNotLoad","findIndex","debounceMs","loadError","focusedOption","focusOption","index","explicit","scrollIntoView","block","move","direction","startSearch","immediate","show","load","chooseGroup","selectedForCommit","requestCommit","required","loading","restore","target","onValueChange","select","setCustomValidity","selectMatchingOption","onKeyDown","event","isComposing","key","preventDefault","open","_$createComponent","class","description","children","_el$","_$getNextElement","_tmpl$5","_el$2","firstChild","_el$3","_el$4","nextSibling","_el$7","_el$8","_co$","_$getNextMarker","_el$9","_el$0","_co$2","_el$24","_el$25","_co$7","_el$1","_el$10","_el$22","_el$23","_co$6","_el$12","_el$16","_el$17","_co$3","_el$18","_el$19","_co$4","_el$20","_el$21","_co$5","_ref$","setTrigger","_$use","element","_$setAttribute","_$spread","_$mergeProps","placeholder","typeToSearch","autofocus","aria-expanded","aria-activedescendant","_$memo","onPointerDown","onFocus","onClick","currentTarget","beginsEdit","relatedTarget","Node","contains","_$insert","when","_el$5","_tmpl$","$$click","focus","$$pointerdown","_$effect","clearSelection","_$runHydrationEvents","_tmpl$7","_tmpl$6","_tmpl$2","name","_el$28","_tmpl$8","_$setProperty","_c$","checkingText","checkingOptions","$$keydown","$$focusout","setPopover","_el$11","_tmpl$3","choices","ariaLabel","groupsAriaLabel","filterOptions","controls","_el$29","_tmpl$9","_el$30","_el$31","retry","_el$13","_tmpl$4","_el$14","_el$15","checkingOptionsLoading","each","_el$32","_tmpl$0","noOptionsText","noOptionsFound","_el$33","_tmpl$1","_el$38","_el$39","_co$9","_el$34","_el$35","_el$36","_el$37","_co$8","$$pointermove","color","icon","_el$40","_tmpl$10","_$className","_el$41","_tmpl$11","_$p","_$setStyleProperty","_el$42","_tmpl$12","_p$","_v$4","_v$5","_v$6","_v$7","_v$8","e","t","a","o","i","_v$","_v$2","_v$3","_$delegateEvents"],"sources":["inputs/AutocompleteSelect.tsx"],"sourcesContent":["import { createEffect, 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, nextEnabledChoiceIndex } from \"./choice\";\nimport type { ValueFieldProps } from \"./field-contract\";\nimport { commitFieldValue, resolveMaybeAccessor } from \"./field-contract\";\nimport type { SelectGroup } from \"./Select\";\n\nexport type AutocompleteSelectOption = ChoiceOption<string>;\n\nexport type AutocompleteSelectSearchResult = {\n /** Ranked suggestions shown in the popup. */\n options: readonly AutocompleteSelectOption[];\n /** The authoritative option that Tab or blur may accept automatically. */\n match?: AutocompleteSelectOption;\n};\n\nexport type AutocompleteSelectProps = ValueFieldProps<string | null> & {\n search: (query: string, signal: AbortSignal, group: string | null) => Promise<AutocompleteSelectSearchResult>;\n selectedOption?: AutocompleteSelectOption;\n formatValue?: (option: AutocompleteSelectOption) => string;\n groups?: readonly SelectGroup[];\n defaultGroup?: string;\n groupsAriaLabel?: string;\n allGroupLabel?: string;\n placeholder?: string;\n debounceMs?: number;\n clearable?: boolean;\n name?: string;\n autofocus?: boolean;\n noMatchText?: string;\n checkingText?: string;\n noOptionsText?: string;\n};\n\ntype SelectionSnapshot = {\n value: string | null;\n option?: AutocompleteSelectOption;\n display: string;\n};\n\nconst errorMessage = (error: unknown, fallback: string): string => (error instanceof Error ? error.message : fallback);\n\nexport function AutocompleteSelect(props: AutocompleteSelectProps): JSX.Element {\n const messages = useUiMessages();\n const meta = createFieldMeta(props.id);\n const listboxId = `${meta.controlId}-listbox`;\n const [cache, setCache] = createSignal<Record<string, AutocompleteSelectOption>>({});\n const value = () => resolveMaybeAccessor(props.value) ?? null;\n const selected = createMemo<AutocompleteSelectOption | undefined>(() => {\n const current = value();\n if (current === null) return undefined;\n return (\n cache()[current] ??\n (props.selectedOption?.value === current ? props.selectedOption : undefined) ?? {\n value: current,\n label: current,\n }\n );\n });\n const formatValue = (option: AutocompleteSelectOption | undefined): string =>\n option ? (props.formatValue?.(option) ?? option.label) : \"\";\n\n const [display, setDisplay] = createSignal(formatValue(selected()));\n const [query, setQuery] = createSignal(\"\");\n const [focused, setFocused] = createSignal(false);\n const [editing, setEditing] = createSignal(false);\n const [resolvedQuery, setResolvedQuery] = createSignal<string>();\n const [match, setMatch] = createSignal<AutocompleteSelectOption>();\n const [focusedIndex, setFocusedIndex] = createSignal(-1);\n const [selectedGroup, setSelectedGroup] = createSignal<string | null>(props.defaultGroup ?? null);\n const [explicitOption, setExplicitOption] = createSignal(false);\n const [internalError, setInternalError] = createSignal<string>();\n const externalError = () => resolveMaybeAccessor(props.error);\n const error = () => externalError() ?? internalError();\n const hasClearAction = () => Boolean(props.clearable && value() !== null && !props.disabled);\n let inputRef: HTMLInputElement | undefined;\n let popoverRef: HTMLDivElement | undefined;\n let optionRefs: HTMLButtonElement[] = [];\n let pointerFocus = false;\n let pendingCommitQuery: string | undefined;\n let snapshot: SelectionSnapshot = { value: value(), option: selected(), display: formatValue(selected()) };\n\n const popover = createChoicePopover(() => Boolean(props.disabled));\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\n const remember = (options: readonly AutocompleteSelectOption[], authoritative?: AutocompleteSelectOption) => {\n const next = { ...cache() };\n for (const option of options) next[option.value] = option;\n if (authoritative) next[authoritative.value] = authoritative;\n setCache(next);\n };\n\n const completeInput = (typed: string, authoritative: AutocompleteSelectOption | undefined) => {\n if (!inputRef || !focused() || !editing() || !authoritative || typed.length === 0) return;\n const lower = typed.toLocaleLowerCase();\n const completion = [authoritative.value, authoritative.label].find((candidate) => candidate.toLocaleLowerCase().startsWith(lower));\n if (!completion || completion.length <= typed.length) return;\n setDisplay(completion);\n queueMicrotask(() => {\n if (!inputRef || document.activeElement !== inputRef || query() !== typed) return;\n inputRef.setSelectionRange(typed.length, completion.length);\n });\n };\n\n const mergedOptions = (result: AutocompleteSelectSearchResult): readonly AutocompleteSelectOption[] =>\n result.match && !result.options.some((option) => option.value === result.match!.value)\n ? [result.match, ...result.options]\n : result.options;\n\n const commit = (option: AutocompleteSelectOption) => {\n if (option.disabled) return;\n pendingCommitQuery = undefined;\n loader.cancel();\n popover.hide();\n remember([], option);\n setDisplay(formatValue(option));\n setQuery(\"\");\n setResolvedQuery(undefined);\n setMatch(undefined);\n setFocusedIndex(-1);\n setExplicitOption(false);\n setInternalError(undefined);\n snapshot = { value: option.value, option, display: formatValue(option) };\n commitFieldValue(props, option.value);\n setEditing(false);\n };\n\n const invalidate = (message = props.noMatchText ?? messages().noMatchingOption) => {\n pendingCommitQuery = undefined;\n setInternalError(message);\n popover.hide();\n };\n\n const loader = createChoiceLoader(\n () => async (typed, signal) => {\n let result: AutocompleteSelectSearchResult;\n try {\n result = await props.search(typed, signal, activeGroup());\n } catch (reason) {\n if (!signal.aborted) {\n setResolvedQuery(typed);\n if (pendingCommitQuery === typed) invalidate(errorMessage(reason, messages().optionsCouldNotLoad));\n }\n throw reason;\n }\n if (signal.aborted) return [];\n\n const options = mergedOptions(result);\n const authoritative = result.match?.disabled ? undefined : result.match;\n remember(options, authoritative);\n setResolvedQuery(typed);\n setMatch(authoritative);\n setExplicitOption(false);\n setFocusedIndex(authoritative ? options.findIndex((option) => option.value === authoritative.value) : -1);\n completeInput(typed, authoritative);\n\n if (pendingCommitQuery === typed) {\n if (authoritative) commit(authoritative);\n else invalidate();\n }\n return options;\n },\n () => props.debounceMs ?? 150,\n );\n\n const options = () => (resolvedQuery() === query() ? loader.options() : []);\n const loadError = () => (resolvedQuery() === query() ? loader.error() : undefined);\n const focusedOption = () => options()[focusedIndex()];\n const focusOption = (index: number, explicit = true) => {\n setFocusedIndex(index);\n setExplicitOption(explicit);\n optionRefs[index]?.scrollIntoView({ block: \"nearest\" });\n };\n const move = (direction: 1 | -1) => focusOption(nextEnabledChoiceIndex(options(), focusedIndex(), direction));\n\n const startSearch = (typed: string, immediate = false) => {\n setInternalError(undefined);\n setResolvedQuery(undefined);\n setMatch(undefined);\n setFocusedIndex(-1);\n setExplicitOption(false);\n popover.show();\n loader.load(typed, immediate);\n };\n\n const chooseGroup = (group: string | null) => {\n if (group === activeGroup()) return;\n setSelectedGroup(group);\n startSearch(editing() ? query() : \"\", true);\n };\n\n const selectedForCommit = (): AutocompleteSelectOption | undefined => {\n if (resolvedQuery() !== query()) return undefined;\n if (explicitOption()) return focusedOption();\n return match();\n };\n\n const requestCommit = () => {\n if (!editing()) return;\n const option = selectedForCommit();\n if (option) {\n commit(option);\n return;\n }\n if (query() === \"\" && props.clearable && !props.required) {\n pendingCommitQuery = undefined;\n loader.cancel();\n popover.hide();\n snapshot = { value: null, option: undefined, display: \"\" };\n setDisplay(\"\");\n setQuery(\"\");\n setEditing(false);\n setResolvedQuery(undefined);\n setMatch(undefined);\n setFocusedIndex(-1);\n setExplicitOption(false);\n setInternalError(undefined);\n commitFieldValue(props, null);\n return;\n }\n if (pendingCommitQuery === query()) return;\n pendingCommitQuery = query();\n if (resolvedQuery() === query() && !loader.loading()) invalidate();\n else loader.load(query(), true);\n };\n\n const restore = () => {\n const target = snapshot;\n pendingCommitQuery = undefined;\n loader.cancel();\n popover.hide();\n remember(target.option ? [target.option] : []);\n setDisplay(target.display);\n setQuery(\"\");\n setResolvedQuery(undefined);\n setMatch(undefined);\n setFocusedIndex(-1);\n setExplicitOption(false);\n setInternalError(undefined);\n if (value() !== target.value) props.onValueChange?.(target.value);\n setEditing(false);\n queueMicrotask(() => inputRef?.select());\n };\n\n createEffect(() => {\n if (editing()) return;\n const option = selected();\n setDisplay(formatValue(option));\n snapshot = { value: value(), option, display: formatValue(option) };\n });\n\n createEffect(() => {\n if (!inputRef) return;\n const message = internalError();\n inputRef.setCustomValidity(message ?? (editing() ? messages().selectMatchingOption : \"\"));\n });\n\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.isComposing) return;\n if (event.key === \"ArrowDown\" || event.key === \"ArrowUp\") {\n event.preventDefault();\n if (!popover.open()) {\n const typed = editing() ? query() : \"\";\n startSearch(typed, true);\n } else {\n move(event.key === \"ArrowDown\" ? 1 : -1);\n }\n } else if (event.key === \"Enter\" && popover.open()) {\n const option = selectedForCommit();\n if (!option) return;\n event.preventDefault();\n commit(option);\n inputRef?.select();\n } else if (event.key === \"Escape\" && (editing() || popover.open())) {\n event.preventDefault();\n if (editing()) restore();\n else popover.hide();\n } else if (event.key === \"Tab\") {\n requestCommit();\n popover.hide();\n }\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-combobox\" data-invalid={error() ? \"true\" : undefined}>\n <div ref={popover.setTrigger} class=\"k2b-combobox__input\" data-clearable={hasClearAction() ? \"true\" : undefined}>\n <i class=\"ti ti-search\" aria-hidden=\"true\" />\n <input\n ref={(element) => {\n inputRef = element;\n }}\n id={meta.controlId}\n type=\"text\"\n value={display()}\n placeholder={props.placeholder ?? messages().typeToSearch}\n disabled={props.disabled}\n required={props.required}\n autofocus={props.autofocus}\n autocomplete=\"off\"\n spellcheck={false}\n role=\"combobox\"\n aria-autocomplete=\"both\"\n aria-expanded={popover.open()}\n aria-controls={listboxId}\n aria-activedescendant={focusedOption() ? `${listboxId}-${focusedIndex()}` : undefined}\n {...fieldControlAria(meta, { ...props, error: error() })}\n onPointerDown={() => {\n pointerFocus = true;\n queueMicrotask(() => (pointerFocus = false));\n }}\n onFocus={() => {\n setFocused(true);\n if (!editing()) {\n const option = selected();\n snapshot = { value: value(), option, display: formatValue(option) };\n setDisplay(snapshot.display);\n }\n if (!pointerFocus) queueMicrotask(() => inputRef?.select());\n }}\n onClick={() => {\n if (!editing()) startSearch(\"\", true);\n }}\n onInput={(event) => {\n const typed = event.currentTarget.value;\n const beginsEdit = !editing();\n setEditing(true);\n if (beginsEdit && value() !== null) props.onValueChange?.(null);\n setDisplay(typed);\n setQuery(typed);\n pendingCommitQuery = undefined;\n startSearch(typed);\n }}\n onKeyDown={onKeyDown}\n onBlur={(event) => {\n setFocused(false);\n if (event.relatedTarget instanceof Node && popoverRef?.contains(event.relatedTarget)) return;\n requestCommit();\n popover.hide();\n }}\n />\n <Show when={hasClearAction()}>\n <button\n type=\"button\"\n class=\"k2b-choice-control__clear k2b-input-clear-action\"\n tabindex={-1}\n aria-label={messages().clearSelection}\n onPointerDown={(event) => event.preventDefault()}\n onClick={() => {\n snapshot = { value: null, option: undefined, display: \"\" };\n setDisplay(\"\");\n setQuery(\"\");\n setEditing(false);\n setResolvedQuery(undefined);\n setMatch(undefined);\n setFocusedIndex(-1);\n setExplicitOption(false);\n setInternalError(undefined);\n commitFieldValue(props, null);\n inputRef?.focus();\n }}\n >\n <i class=\"ti ti-x\" aria-hidden=\"true\" />\n </button>\n </Show>\n <Show\n when={loader.loading()}\n fallback={\n <Show when={editing() && match()} fallback={<i class=\"ti ti-chevron-down\" aria-hidden=\"true\" />}>\n <i class=\"ti ti-check\" aria-hidden=\"true\" />\n </Show>\n }\n >\n <i class=\"ti ti-loader-2 k2b-spin\" aria-hidden=\"true\" />\n </Show>\n </div>\n <Show when={props.name}>{(name) => <input type=\"hidden\" name={name()} value={value() ?? \"\"} />}</Show>\n <span class=\"k2b-sr-only\" role=\"status\" aria-live=\"polite\" aria-atomic=\"true\">\n {loader.loading()\n ? (props.checkingText ?? messages().checkingOptions)\n : match()\n ? `Match: ${formatValue(match())}`\n : (internalError() ?? \"\")}\n </span>\n <div\n ref={(element) => {\n popoverRef = element;\n popover.setPopover(element);\n }}\n popover=\"manual\"\n class=\"k2b-choice-popover\"\n role=\"group\"\n aria-label={typeof props.label === \"string\" ? props.label : messages().options}\n onFocusOut={(event) => {\n if (event.relatedTarget instanceof Node && (popoverRef?.contains(event.relatedTarget) || inputRef === event.relatedTarget))\n return;\n requestCommit();\n popover.hide();\n }}\n onKeyDown={(event) => {\n if (event.key !== \"Escape\") return;\n event.preventDefault();\n if (editing()) restore();\n else {\n popover.hide();\n inputRef?.focus();\n }\n }}\n >\n <Show when={(props.groups?.length ?? 0) > 0}>\n <div class=\"k2b-choice-toolbar\">\n <ChoiceGroups\n choices={groupChoices()}\n value={activeGroup()}\n onValueChange={chooseGroup}\n ariaLabel={props.groupsAriaLabel ?? messages().filterOptions}\n controls={listboxId}\n />\n </div>\n </Show>\n <div id={listboxId} class=\"k2b-choice-options\" role=\"listbox\">\n <Show when={loadError()}>\n {(message) => (\n <div class=\"k2b-choice-status\" data-tone=\"danger\">\n <span>{message()}</span>\n <button\n type=\"button\"\n onPointerDown={(event) => event.preventDefault()}\n onClick={() => {\n setInternalError(undefined);\n loader.retry();\n }}\n >\n 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>{props.checkingText ?? messages().checkingOptionsLoading}</span>\n </div>\n </Show>\n <For\n each={loadError() ? [] : options()}\n fallback={\n <Show when={!loader.loading() && !loadError()}>\n <div class=\"k2b-choice-status\">{props.noOptionsText ?? messages().noOptionsFound}</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={index() === focusedIndex()}\n data-focused={index() === focusedIndex() ? \"true\" : undefined}\n disabled={option.disabled}\n onPointerMove={() => focusOption(index())}\n onPointerDown={(event) => event.preventDefault()}\n onClick={() => {\n commit(option);\n inputRef?.focus();\n inputRef?.select();\n }}\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 AutocompleteSelect;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":[],"sources":["inputs/AutocompleteSelect.tsx"],"sourcesContent":["import { createEffect, 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, nextEnabledChoiceIndex } from \"./choice\";\nimport type { ValueFieldProps } from \"./field-contract\";\nimport { commitFieldValue, resolveMaybeAccessor } from \"./field-contract\";\nimport type { SelectGroup } from \"./Select\";\n\nexport type AutocompleteSelectOption = ChoiceOption<string>;\n\nexport type AutocompleteSelectSearchResult = {\n /** Ranked suggestions shown in the popup. */\n options: readonly AutocompleteSelectOption[];\n /** The authoritative option that Tab or blur may accept automatically. */\n match?: AutocompleteSelectOption;\n};\n\nexport type AutocompleteSelectProps = ValueFieldProps<string | null> & {\n search: (query: string, signal: AbortSignal, group: string | null) => Promise<AutocompleteSelectSearchResult>;\n selectedOption?: AutocompleteSelectOption;\n formatValue?: (option: AutocompleteSelectOption) => string;\n groups?: readonly SelectGroup[];\n defaultGroup?: string;\n groupsAriaLabel?: string;\n allGroupLabel?: string;\n placeholder?: string;\n debounceMs?: number;\n clearable?: boolean;\n name?: string;\n autofocus?: boolean;\n noMatchText?: string;\n checkingText?: string;\n noOptionsText?: string;\n};\n\ntype SelectionSnapshot = {\n value: string | null;\n option?: AutocompleteSelectOption;\n display: string;\n};\n\nconst errorMessage = (error: unknown, fallback: string): string => (error instanceof Error ? error.message : fallback);\n\nexport function AutocompleteSelect(props: AutocompleteSelectProps): JSX.Element {\n const messages = useUiMessages();\n const meta = createFieldMeta(props.id);\n const listboxId = `${meta.controlId}-listbox`;\n const [cache, setCache] = createSignal<Record<string, AutocompleteSelectOption>>({});\n const value = () => resolveMaybeAccessor(props.value) ?? null;\n const selected = createMemo<AutocompleteSelectOption | undefined>(() => {\n const current = value();\n if (current === null) return undefined;\n return (\n cache()[current] ??\n (props.selectedOption?.value === current ? props.selectedOption : undefined) ?? {\n value: current,\n label: current,\n }\n );\n });\n const formatValue = (option: AutocompleteSelectOption | undefined): string =>\n option ? (props.formatValue?.(option) ?? option.label) : \"\";\n\n const [display, setDisplay] = createSignal(formatValue(selected()));\n const [query, setQuery] = createSignal(\"\");\n const [focused, setFocused] = createSignal(false);\n const [editing, setEditing] = createSignal(false);\n const [resolvedQuery, setResolvedQuery] = createSignal<string>();\n const [match, setMatch] = createSignal<AutocompleteSelectOption>();\n const [focusedIndex, setFocusedIndex] = createSignal(-1);\n const [selectedGroup, setSelectedGroup] = createSignal<string | null>(props.defaultGroup ?? null);\n const [explicitOption, setExplicitOption] = createSignal(false);\n const [internalError, setInternalError] = createSignal<string>();\n const externalError = () => resolveMaybeAccessor(props.error);\n const error = () => externalError() ?? internalError();\n const hasClearAction = () => Boolean(props.clearable && value() !== null && !props.disabled);\n let inputRef: HTMLInputElement | undefined;\n let popoverRef: HTMLDivElement | undefined;\n let optionRefs: HTMLButtonElement[] = [];\n let pointerFocus = false;\n let pendingCommitQuery: string | undefined;\n let snapshot: SelectionSnapshot = { value: value(), option: selected(), display: formatValue(selected()) };\n\n const popover = createChoicePopover(() => Boolean(props.disabled));\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\n const remember = (options: readonly AutocompleteSelectOption[], authoritative?: AutocompleteSelectOption) => {\n const next = { ...cache() };\n for (const option of options) next[option.value] = option;\n if (authoritative) next[authoritative.value] = authoritative;\n setCache(next);\n };\n\n const completeInput = (typed: string, authoritative: AutocompleteSelectOption | undefined) => {\n if (!inputRef || !focused() || !editing() || !authoritative || typed.length === 0) return;\n const lower = typed.toLocaleLowerCase();\n const completion = [authoritative.value, authoritative.label].find((candidate) => candidate.toLocaleLowerCase().startsWith(lower));\n if (!completion || completion.length <= typed.length) return;\n setDisplay(completion);\n queueMicrotask(() => {\n if (!inputRef || document.activeElement !== inputRef || query() !== typed) return;\n inputRef.setSelectionRange(typed.length, completion.length);\n });\n };\n\n const mergedOptions = (result: AutocompleteSelectSearchResult): readonly AutocompleteSelectOption[] =>\n result.match && !result.options.some((option) => option.value === result.match!.value)\n ? [result.match, ...result.options]\n : result.options;\n\n const commit = (option: AutocompleteSelectOption) => {\n if (option.disabled) return;\n pendingCommitQuery = undefined;\n loader.cancel();\n popover.hide();\n remember([], option);\n setDisplay(formatValue(option));\n setQuery(\"\");\n setResolvedQuery(undefined);\n setMatch(undefined);\n setFocusedIndex(-1);\n setExplicitOption(false);\n setInternalError(undefined);\n snapshot = { value: option.value, option, display: formatValue(option) };\n commitFieldValue(props, option.value);\n setEditing(false);\n };\n\n const invalidate = (message = props.noMatchText ?? messages().noMatchingOption) => {\n pendingCommitQuery = undefined;\n setInternalError(message);\n popover.hide();\n };\n\n const loader = createChoiceLoader(\n () => async (typed, signal) => {\n let result: AutocompleteSelectSearchResult;\n try {\n result = await props.search(typed, signal, activeGroup());\n } catch (reason) {\n if (!signal.aborted) {\n setResolvedQuery(typed);\n if (pendingCommitQuery === typed) invalidate(errorMessage(reason, messages().optionsCouldNotLoad));\n }\n throw reason;\n }\n if (signal.aborted) return [];\n\n const options = mergedOptions(result);\n const authoritative = result.match?.disabled ? undefined : result.match;\n remember(options, authoritative);\n setResolvedQuery(typed);\n setMatch(authoritative);\n setExplicitOption(false);\n setFocusedIndex(authoritative ? options.findIndex((option) => option.value === authoritative.value) : -1);\n completeInput(typed, authoritative);\n\n if (pendingCommitQuery === typed) {\n if (authoritative) commit(authoritative);\n else invalidate();\n }\n return options;\n },\n () => props.debounceMs ?? 150,\n );\n\n const options = () => (resolvedQuery() === query() ? loader.options() : []);\n const loadError = () => (resolvedQuery() === query() ? loader.error() : undefined);\n const focusedOption = () => options()[focusedIndex()];\n const focusOption = (index: number, explicit = true) => {\n setFocusedIndex(index);\n setExplicitOption(explicit);\n optionRefs[index]?.scrollIntoView({ block: \"nearest\" });\n };\n const move = (direction: 1 | -1) => focusOption(nextEnabledChoiceIndex(options(), focusedIndex(), direction));\n\n const startSearch = (typed: string, immediate = false) => {\n setInternalError(undefined);\n setResolvedQuery(undefined);\n setMatch(undefined);\n setFocusedIndex(-1);\n setExplicitOption(false);\n popover.show();\n loader.load(typed, immediate);\n };\n\n const chooseGroup = (group: string | null) => {\n if (group === activeGroup()) return;\n setSelectedGroup(group);\n startSearch(editing() ? query() : \"\", true);\n };\n\n const selectedForCommit = (): AutocompleteSelectOption | undefined => {\n if (resolvedQuery() !== query()) return undefined;\n if (explicitOption()) return focusedOption();\n return match();\n };\n\n const requestCommit = () => {\n if (!editing()) return;\n const option = selectedForCommit();\n if (option) {\n commit(option);\n return;\n }\n if (query() === \"\" && props.clearable && !props.required) {\n pendingCommitQuery = undefined;\n loader.cancel();\n popover.hide();\n snapshot = { value: null, option: undefined, display: \"\" };\n setDisplay(\"\");\n setQuery(\"\");\n setEditing(false);\n setResolvedQuery(undefined);\n setMatch(undefined);\n setFocusedIndex(-1);\n setExplicitOption(false);\n setInternalError(undefined);\n commitFieldValue(props, null);\n return;\n }\n if (pendingCommitQuery === query()) return;\n pendingCommitQuery = query();\n if (resolvedQuery() === query() && !loader.loading()) invalidate();\n else loader.load(query(), true);\n };\n\n const restore = () => {\n const target = snapshot;\n pendingCommitQuery = undefined;\n loader.cancel();\n popover.hide();\n remember(target.option ? [target.option] : []);\n setDisplay(target.display);\n setQuery(\"\");\n setResolvedQuery(undefined);\n setMatch(undefined);\n setFocusedIndex(-1);\n setExplicitOption(false);\n setInternalError(undefined);\n if (value() !== target.value) props.onValueChange?.(target.value);\n setEditing(false);\n queueMicrotask(() => inputRef?.select());\n };\n\n createEffect(() => {\n if (editing()) return;\n const option = selected();\n setDisplay(formatValue(option));\n snapshot = { value: value(), option, display: formatValue(option) };\n });\n\n createEffect(() => {\n if (!inputRef) return;\n const message = internalError();\n inputRef.setCustomValidity(message ?? (editing() ? messages().selectMatchingOption : \"\"));\n });\n\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.isComposing) return;\n if (event.key === \"ArrowDown\" || event.key === \"ArrowUp\") {\n event.preventDefault();\n if (!popover.open()) {\n const typed = editing() ? query() : \"\";\n startSearch(typed, true);\n } else {\n move(event.key === \"ArrowDown\" ? 1 : -1);\n }\n } else if (event.key === \"Enter\" && popover.open()) {\n const option = selectedForCommit();\n if (!option) return;\n event.preventDefault();\n commit(option);\n inputRef?.select();\n } else if (event.key === \"Escape\" && (editing() || popover.open())) {\n event.preventDefault();\n if (editing()) restore();\n else popover.hide();\n } else if (event.key === \"Tab\") {\n requestCommit();\n popover.hide();\n }\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-combobox\" data-invalid={error() ? \"true\" : undefined}>\n <div ref={popover.setTrigger} class=\"k2b-combobox__input\" data-clearable={hasClearAction() ? \"true\" : undefined}>\n <i class=\"ti ti-search\" aria-hidden=\"true\" />\n <input\n ref={(element) => {\n inputRef = element;\n }}\n id={meta.controlId}\n type=\"text\"\n value={display()}\n placeholder={props.placeholder ?? messages().typeToSearch}\n disabled={props.disabled}\n required={props.required}\n autofocus={props.autofocus}\n autocomplete=\"off\"\n spellcheck={false}\n role=\"combobox\"\n aria-autocomplete=\"both\"\n aria-expanded={popover.open()}\n aria-controls={listboxId}\n aria-activedescendant={focusedOption() ? `${listboxId}-${focusedIndex()}` : undefined}\n {...fieldControlAria(meta, { ...props, error: error() })}\n onPointerDown={() => {\n pointerFocus = true;\n queueMicrotask(() => (pointerFocus = false));\n }}\n onFocus={() => {\n setFocused(true);\n if (!editing()) {\n const option = selected();\n snapshot = { value: value(), option, display: formatValue(option) };\n setDisplay(snapshot.display);\n }\n if (!pointerFocus) queueMicrotask(() => inputRef?.select());\n }}\n onClick={() => {\n if (!editing()) startSearch(\"\", true);\n }}\n onInput={(event) => {\n const typed = event.currentTarget.value;\n const beginsEdit = !editing();\n setEditing(true);\n if (beginsEdit && value() !== null) props.onValueChange?.(null);\n setDisplay(typed);\n setQuery(typed);\n pendingCommitQuery = undefined;\n startSearch(typed);\n }}\n onKeyDown={onKeyDown}\n onBlur={(event) => {\n setFocused(false);\n if (event.relatedTarget instanceof Node && popoverRef?.contains(event.relatedTarget)) return;\n requestCommit();\n popover.hide();\n }}\n />\n <Show when={hasClearAction()}>\n <button\n type=\"button\"\n class=\"k2b-choice-control__clear k2b-input-clear-action\"\n tabindex={-1}\n aria-label={messages().clearSelection}\n onPointerDown={(event) => event.preventDefault()}\n onClick={() => {\n snapshot = { value: null, option: undefined, display: \"\" };\n setDisplay(\"\");\n setQuery(\"\");\n setEditing(false);\n setResolvedQuery(undefined);\n setMatch(undefined);\n setFocusedIndex(-1);\n setExplicitOption(false);\n setInternalError(undefined);\n commitFieldValue(props, null);\n inputRef?.focus();\n }}\n >\n <i class=\"ti ti-x\" aria-hidden=\"true\" />\n </button>\n </Show>\n <Show\n when={loader.loading()}\n fallback={\n <Show when={editing() && match()} fallback={<i class=\"ti ti-chevron-down\" aria-hidden=\"true\" />}>\n <i class=\"ti ti-check\" aria-hidden=\"true\" />\n </Show>\n }\n >\n <i class=\"ti ti-loader-2 k2b-spin\" aria-hidden=\"true\" />\n </Show>\n </div>\n <Show when={props.name}>{(name) => <input type=\"hidden\" name={name()} value={value() ?? \"\"} />}</Show>\n <span class=\"k2b-sr-only\" role=\"status\" aria-live=\"polite\" aria-atomic=\"true\">\n {loader.loading()\n ? (props.checkingText ?? messages().checkingOptions)\n : match()\n ? `Match: ${formatValue(match())}`\n : (internalError() ?? \"\")}\n </span>\n <div\n ref={(element) => {\n popoverRef = element;\n popover.setPopover(element);\n }}\n popover=\"manual\"\n class=\"k2b-choice-popover\"\n role=\"group\"\n aria-label={typeof props.label === \"string\" ? props.label : messages().options}\n onFocusOut={(event) => {\n if (event.relatedTarget instanceof Node && (popoverRef?.contains(event.relatedTarget) || inputRef === event.relatedTarget))\n return;\n requestCommit();\n popover.hide();\n }}\n onKeyDown={(event) => {\n if (event.key !== \"Escape\") return;\n event.preventDefault();\n if (editing()) restore();\n else {\n popover.hide();\n inputRef?.focus();\n }\n }}\n >\n <Show when={(props.groups?.length ?? 0) > 0}>\n <div class=\"k2b-choice-toolbar\">\n <ChoiceGroups\n choices={groupChoices()}\n value={activeGroup()}\n onValueChange={chooseGroup}\n ariaLabel={props.groupsAriaLabel ?? messages().filterOptions}\n controls={listboxId}\n />\n </div>\n </Show>\n <div id={listboxId} class=\"k2b-choice-options\" role=\"listbox\">\n <Show when={loadError()}>\n {(message) => (\n <div class=\"k2b-choice-status\" data-tone=\"danger\">\n <span>{message()}</span>\n <button\n type=\"button\"\n onPointerDown={(event) => event.preventDefault()}\n onClick={() => {\n setInternalError(undefined);\n loader.retry();\n }}\n >\n 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>{props.checkingText ?? messages().checkingOptionsLoading}</span>\n </div>\n </Show>\n <For\n each={loadError() ? [] : options()}\n fallback={\n <Show when={!loader.loading() && !loadError()}>\n <div class=\"k2b-choice-status\">{props.noOptionsText ?? messages().noOptionsFound}</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={index() === focusedIndex()}\n data-focused={index() === focusedIndex() ? \"true\" : undefined}\n disabled={option.disabled}\n onPointerMove={() => focusOption(index())}\n onPointerDown={(event) => event.preventDefault()}\n onClick={() => {\n commit(option);\n inputRef?.focus();\n inputRef?.select();\n }}\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 AutocompleteSelect;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,EAAY,IAAI,QAAQ,UAAU;AACtF,SAAS,eAAe,EAAE,KAAK,EAAE,gBAAgB,QAAQ,mBAAmB;AAC5E,SAAS,aAAa,QAAQ,kBAAkB;AAChD,SAAS,YAAY,QAAQ,gBAAgB;AAC7C,SAA4B,kBAAkB,EAAE,mBAAmB,EAAE,sBAAsB,QAAQ,UAAU;AAE7G,SAAS,gBAAgB,EAAE,oBAAoB,QAAQ,kBAAkB;AAoCzE,MAAM,YAAY,GAAG,CAAC,KAAc,EAAE,QAAgB,KAAc,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,QAAS;AAEtH,OAAO,SAAS,kBAAkB,CAAC,KAA8B,EAAe;EAC9E,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC;EAChC,MAAM,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;EACtC,MAAM,SAAS,GAAG,GAAG,IAAI,CAAC,SAAS,UAAU;EAC7C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,YAAY,CAA2C,CAAC,CAAC,CAAC;EACpF,MAAM,KAAK,GAAG,MAAM,oBAAoB,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,IAAI;EAC7D,MAAM,QAAQ,GAAG,UAAU,CAAuC,MAAM;IACtE,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC;IACvB,IAAI,OAAO,KAAK,IAAI,EAAE,OAAO,SAAS;IACtC,OACE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KACf,KAAK,CAAC,cAAc,EAAE,KAAK,KAAK,OAAO,GAAG,KAAK,CAAC,cAAc,GAAG,SAAS,CAAC,IAAI;MAC9E,KAAK,EAAE,OAAO;MACd,KAAK,EAAE;IACT,CAAC;EAEL,CAAC,CAAC;EACF,MAAM,WAAW,GAAI,MAA4C,IAC/D,MAAM,GAAI,KAAK,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,MAAM,CAAC,KAAK,GAAI,EAAE;EAE7D,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,YAAY,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;EACnE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,YAAY,CAAC,EAAE,CAAC;EAC1C,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC;EACjD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC;EACjD,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,YAAY,CAAS,CAAC;EAChE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,YAAY,CAA2B,CAAC;EAClE,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;EACxD,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,YAAY,CAAgB,KAAK,CAAC,YAAY,IAAI,IAAI,CAAC;EACjG,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC;EAC/D,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,YAAY,CAAS,CAAC;EAChE,MAAM,aAAa,GAAG,MAAM,oBAAoB,CAAC,KAAK,CAAC,KAAK,CAAC;EAC7D,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC;EACtD,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;EAC5F,IAAI,QAAsC;EAC1C,IAAI,UAAsC;EAC1C,IAAI,UAA+B,GAAG,EAAE;EACxC,IAAI,YAAY,GAAG,KAAK;EACxB,IAAI,kBAAsC;EAC1C,IAAI,QAA2B,GAAG;IAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAAE,OAAO,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;EAAE,CAAC;EAE1G,MAAM,OAAO,GAAG,mBAAmB,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;EAClE,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM;IACnC,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC;IAC/B,OAAO,OAAO,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,CAAE,KAAK,IAAK,KAAK,CAAC,KAAK,KAAK,OAAO,CAAC,GAAG,OAAO,GAAG,IAAI;EAC3F,CAAC,CAAC;EACF,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC;IAAE,KAAK,EAAE,IAAI;IAAE,KAAK,EAAE,KAAK,CAAC,aAAa,IAAI,QAAQ,CAAC,CAAC,CAAC;EAAI,CAAC,EAAE,IAAI,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC;EAE/H,MAAM,QAAQ,GAAG,CAAC,OAA4C,EAAE,aAAwC,KAAK;IAC3G,MAAM,IAAI,GAAG;MAAE,GAAG,KAAK,CAAC;IAAE,CAAC;IAC3B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM;IACzD,IAAI,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,aAAa;IAC5D,QAAQ,CAAC,IAAI,CAAC;EAChB,CAAC;EAED,MAAM,aAAa,GAAG,CAAC,KAAa,EAAE,aAAmD,KAAK;IAC5F,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;IACnF,MAAM,KAAK,GAAG,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACvC,MAAM,UAAU,GAAG,CAAC,aAAa,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,IAAI,CAAE,SAAS,IAAK,SAAS,CAAC,iBAAiB,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAClI,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,EAAE;IACtD,UAAU,CAAC,UAAU,CAAC;IACtB,cAAc,CAAC,MAAM;MACnB,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,aAAa,KAAK,QAAQ,IAAI,KAAK,CAAC,CAAC,KAAK,KAAK,EAAE;MAC3E,QAAQ,CAAC,iBAAiB,CAAC,KAAK,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC;IAC7D,CAAC,CAAC;EACJ,CAAC;EAED,MAAM,aAAa,GAAI,MAAsC,IAC3D,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAE,MAAM,IAAK,MAAM,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,CAAE,KAAK,CAAC,GAClF,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,GACjC,MAAM,CAAC,OAAO;EAEpB,MAAM,MAAM,GAAI,MAAgC,IAAK;IACnD,IAAI,MAAM,CAAC,QAAQ,EAAE;IACrB,kBAAkB,GAAG,SAAS;IAC9B,MAAM,CAAC,MAAM,CAAC,CAAC;IACf,OAAO,CAAC,IAAI,CAAC,CAAC;IACd,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC/B,QAAQ,CAAC,EAAE,CAAC;IACZ,gBAAgB,CAAC,SAAS,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC;IACnB,eAAe,CAAC,CAAC,CAAC,CAAC;IACnB,iBAAiB,CAAC,KAAK,CAAC;IACxB,gBAAgB,CAAC,SAAS,CAAC;IAC3B,QAAQ,GAAG;MAAE,KAAK,EAAE,MAAM,CAAC,KAAK;MAAE,MAAM;MAAE,OAAO,EAAE,WAAW,CAAC,MAAM;IAAE,CAAC;IACxE,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;IACrC,UAAU,CAAC,KAAK,CAAC;EACnB,CAAC;EAED,MAAM,UAAU,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC,WAAW,IAAI,QAAQ,CAAC,CAAC,CAAC,gBAAgB,KAAK;IACjF,kBAAkB,GAAG,SAAS;IAC9B,gBAAgB,CAAC,OAAO,CAAC;IACzB,OAAO,CAAC,IAAI,CAAC,CAAC;EAChB,CAAC;EAED,MAAM,MAAM,GAAG,kBAAkB,CAC/B,MAAM,OAAO,KAAK,EAAE,MAAM,KAAK;IAC7B,IAAI,MAAsC;IAC1C,IAAI;MACF,MAAM,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;IAC3D,CAAC,CAAC,OAAO,MAAM,EAAE;MACf,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;QACnB,gBAAgB,CAAC,KAAK,CAAC;QACvB,IAAI,kBAAkB,KAAK,KAAK,EAAE,UAAU,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;MACpG;MACA,MAAM,MAAM;IACd;IACA,IAAI,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE;IAE7B,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC;IACrC,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,EAAE,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC,KAAK;IACvE,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC,gBAAgB,CAAC,KAAK,CAAC;IACvB,QAAQ,CAAC,aAAa,CAAC;IACvB,iBAAiB,CAAC,KAAK,CAAC;IACxB,eAAe,CAAC,aAAa,GAAG,OAAO,CAAC,SAAS,CAAE,MAAM,IAAK,MAAM,CAAC,KAAK,KAAK,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IACzG,aAAa,CAAC,KAAK,EAAE,aAAa,CAAC;IAEnC,IAAI,kBAAkB,KAAK,KAAK,EAAE;MAChC,IAAI,aAAa,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,KACpC,UAAU,CAAC,CAAC;IACnB;IACA,OAAO,OAAO;EAChB,CAAC,EACD,MAAM,KAAK,CAAC,UAAU,IAAI,GAC5B,CAAC;EAED,MAAM,OAAO,GAAG,MAAO,aAAa,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,EAAG;EAC3E,MAAM,SAAS,GAAG,MAAO,aAAa,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,SAAU;EAClF,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;EACrD,MAAM,WAAW,GAAG,CAAC,KAAa,EAAE,QAAQ,GAAG,IAAI,KAAK;IACtD,eAAe,CAAC,KAAK,CAAC;IACtB,iBAAiB,CAAC,QAAQ,CAAC;IAC3B,UAAU,CAAC,KAAK,CAAC,EAAE,cAAc,CAAC;MAAE,KAAK,EAAE;IAAU,CAAC,CAAC;EACzD,CAAC;EACD,MAAM,IAAI,GAAI,SAAiB,IAAK,WAAW,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;EAE7G,MAAM,WAAW,GAAG,CAAC,KAAa,EAAE,SAAS,GAAG,KAAK,KAAK;IACxD,gBAAgB,CAAC,SAAS,CAAC;IAC3B,gBAAgB,CAAC,SAAS,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC;IACnB,eAAe,CAAC,CAAC,CAAC,CAAC;IACnB,iBAAiB,CAAC,KAAK,CAAC;IACxB,OAAO,CAAC,IAAI,CAAC,CAAC;IACd,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC;EAC/B,CAAC;EAED,MAAM,WAAW,GAAI,KAAoB,IAAK;IAC5C,IAAI,KAAK,KAAK,WAAW,CAAC,CAAC,EAAE;IAC7B,gBAAgB,CAAC,KAAK,CAAC;IACvB,WAAW,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC;EAC7C,CAAC;EAED,MAAM,iBAAiB,GAAG,MAA4C;IACpE,IAAI,aAAa,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,OAAO,SAAS;IACjD,IAAI,cAAc,CAAC,CAAC,EAAE,OAAO,aAAa,CAAC,CAAC;IAC5C,OAAO,KAAK,CAAC,CAAC;EAChB,CAAC;EAED,MAAM,aAAa,GAAG,MAAM;IAC1B,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE;IAChB,MAAM,MAAM,GAAG,iBAAiB,CAAC,CAAC;IAClC,IAAI,MAAM,EAAE;MACV,MAAM,CAAC,MAAM,CAAC;MACd;IACF;IACA,IAAI,KAAK,CAAC,CAAC,KAAK,EAAE,IAAI,KAAK,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;MACxD,kBAAkB,GAAG,SAAS;MAC9B,MAAM,CAAC,MAAM,CAAC,CAAC;MACf,OAAO,CAAC,IAAI,CAAC,CAAC;MACd,QAAQ,GAAG;QAAE,KAAK,EAAE,IAAI;QAAE,MAAM,EAAE,SAAS;QAAE,OAAO,EAAE;MAAG,CAAC;MAC1D,UAAU,CAAC,EAAE,CAAC;MACd,QAAQ,CAAC,EAAE,CAAC;MACZ,UAAU,CAAC,KAAK,CAAC;MACjB,gBAAgB,CAAC,SAAS,CAAC;MAC3B,QAAQ,CAAC,SAAS,CAAC;MACnB,eAAe,CAAC,CAAC,CAAC,CAAC;MACnB,iBAAiB,CAAC,KAAK,CAAC;MACxB,gBAAgB,CAAC,SAAS,CAAC;MAC3B,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC;MAC7B;IACF;IACA,IAAI,kBAAkB,KAAK,KAAK,CAAC,CAAC,EAAE;IACpC,kBAAkB,GAAG,KAAK,CAAC,CAAC;IAC5B,IAAI,aAAa,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,KAC9D,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC;EACjC,CAAC;EAED,MAAM,OAAO,GAAG,MAAM;IACpB,MAAM,MAAM,GAAG,QAAQ;IACvB,kBAAkB,GAAG,SAAS;IAC9B,MAAM,CAAC,MAAM,CAAC,CAAC;IACf,OAAO,CAAC,IAAI,CAAC,CAAC;IACd,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;IAC9C,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,CAAC;IACZ,gBAAgB,CAAC,SAAS,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC;IACnB,eAAe,CAAC,CAAC,CAAC,CAAC;IACnB,iBAAiB,CAAC,KAAK,CAAC;IACxB,gBAAgB,CAAC,SAAS,CAAC;IAC3B,IAAI,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC;IACjE,UAAU,CAAC,KAAK,CAAC;IACjB,cAAc,CAAC,MAAM,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;EAC1C,CAAC;EAED,YAAY,CAAC,MAAM;IACjB,IAAI,OAAO,CAAC,CAAC,EAAE;IACf,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC;IACzB,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC/B,QAAQ,GAAG;MAAE,KAAK,EAAE,KAAK,CAAC,CAAC;MAAE,MAAM;MAAE,OAAO,EAAE,WAAW,CAAC,MAAM;IAAE,CAAC;EACrE,CAAC,CAAC;EAEF,YAAY,CAAC,MAAM;IACjB,IAAI,CAAC,QAAQ,EAAE;IACf,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC;IAC/B,QAAQ,CAAC,iBAAiB,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,oBAAoB,GAAG,EAAE,CAAC,CAAC;EAC3F,CAAC,CAAC;EAEF,MAAM,SAAS,GAAI,KAAoB,IAAK;IAC1C,IAAI,KAAK,CAAC,WAAW,EAAE;IACvB,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE;MACxD,KAAK,CAAC,cAAc,CAAC,CAAC;MACtB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE;QACnB,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,EAAE;QACtC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC;MAC1B,CAAC,MAAM;QACL,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,WAAW,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;MAC1C;IACF,CAAC,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE;MAClD,MAAM,MAAM,GAAG,iBAAiB,CAAC,CAAC;MAClC,IAAI,CAAC,MAAM,EAAE;MACb,KAAK,CAAC,cAAc,CAAC,CAAC;MACtB,MAAM,CAAC,MAAM,CAAC;MACd,QAAQ,EAAE,MAAM,CAAC,CAAC;IACpB,CAAC,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,KAAK,OAAO,CAAC,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;MAClE,KAAK,CAAC,cAAc,CAAC,CAAC;MACtB,IAAI,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,KACpB,OAAO,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,EAAE;MAC9B,aAAa,CAAC,CAAC;MACf,OAAO,CAAC,IAAI,CAAC,CAAC;IAChB;EACF,CAAC;EAED,yBACG,KAAK;IAAA;MAAA,OACG,KAAK,CAAC,KAAK;IAAA;IAAA,IAClB,KAAK;MAAA,OAAE,KAAK,CAAC,KAAK;IAAA;IAAA,IAClB,WAAW;MAAA,OAAE,KAAK,CAAC,WAAW;IAAA;IAAA,IAC9B,KAAK;MAAA,OAAE,KAAK,CAAC,CAAC;IAAA;IACd,IAAI,EAAE,IAAI;IAAA,IACV,QAAQ;MAAA,OAAE,KAAK,CAAC,QAAQ;IAAA;IAAA,IACxB,QAAQ;MAAA,OAAE,KAAK,CAAC,QAAQ;IAAA;IAAA;MAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;MAAA,YAGZ,OAAO,CAAC,UAAU;MAAA,oDAAlB,OAAO,CAAC,UAAU;MAAA,MAGlB,OAAO,IAAK;QAChB,QAAQ,GAAG,OAAO;MACpB,CAAC;MAAA,oCASW,KAAK;MAAA,uCAIF,SAAS;MAAA;QAAA,IAZxB,EAAE;UAAA,OAAE,IAAI,CAAC,SAAS;QAAA;QAAA,IAElB,KAAK;UAAA,OAAE,OAAO,CAAC,CAAC;QAAA;QAAA,IAChB,WAAW;UAAA,OAAE,KAAK,CAAC,WAAW,IAAI,QAAQ,CAAC,CAAC,CAAC,YAAY;QAAA;QAAA,IACzD,QAAQ;UAAA,OAAE,KAAK,CAAC,QAAQ;QAAA;QAAA,IACxB,QAAQ;UAAA,OAAE,KAAK,CAAC,QAAQ;QAAA;QAAA,IACxB,SAAS;UAAA,OAAE,KAAK,CAAC,SAAS;QAAA;QAAA;UAAA,OAKX,OAAO,CAAC,IAAI,CAAC,CAAC;QAAA;QAAA;UAAA,OAEN,4BAAa,CAAC,CAAC,MAAG,GAAG,SAAS,IAAI,YAAY,CAAC,CAAC,EAAE,GAAG,SAAS;QAAA;MAAA,SACjF,gBAAgB,CAAC,IAAI,EAAE;QAAE,GAAG,KAAK;QAAE,KAAK,EAAE,KAAK,CAAC;MAAE,CAAC,CAAC;QAAA,iBACzC,MAAM;UACnB,YAAY,GAAG,IAAI;UACnB,cAAc,CAAC,MAAO,YAAY,GAAG,KAAM,CAAC;QAC9C,CAAC;QAAA,WACQ,MAAM;UACb,UAAU,CAAC,IAAI,CAAC;UAChB,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE;YACd,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC;YACzB,QAAQ,GAAG;cAAE,KAAK,EAAE,KAAK,CAAC,CAAC;cAAE,MAAM;cAAE,OAAO,EAAE,WAAW,CAAC,MAAM;YAAE,CAAC;YACnE,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC;UAC9B;UACA,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC,MAAM,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;QAC7D,CAAC;QAAA,WACQ,MAAM;UACb,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,WAAW,CAAC,EAAE,EAAE,IAAI,CAAC;QACvC,CAAC;QAAA,WACS,KAAK,IAAK;UAClB,MAAM,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC,KAAK;UACvC,MAAM,UAAU,GAAG,CAAC,OAAO,CAAC,CAAC;UAC7B,UAAU,CAAC,IAAI,CAAC;UAChB,IAAI,UAAU,IAAI,KAAK,CAAC,CAAC,KAAK,IAAI,EAAE,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC;UAC/D,UAAU,CAAC,KAAK,CAAC;UACjB,QAAQ,CAAC,KAAK,CAAC;UACf,kBAAkB,GAAG,SAAS;UAC9B,WAAW,CAAC,KAAK,CAAC;QACpB,CAAC;QAAA,aACU,SAAS;QAAA,UACX,KAAK,IAAK;UACjB,UAAU,CAAC,KAAK,CAAC;UACjB,IAAI,KAAK,CAAC,aAAa,YAAY,IAAI,IAAI,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE;UACtF,aAAa,CAAC,CAAC;UACf,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB;MAAC;MAAA,kCAEF,IAAI;QAAA,IAAC,IAAI;UAAA,OAAE,cAAc,CAAC,CAAC;QAAA;QAAA;UAAA;UAAA,gBAOf,MAAM;YACb,QAAQ,GAAG;cAAE,KAAK,EAAE,IAAI;cAAE,MAAM,EAAE,SAAS;cAAE,OAAO,EAAE;YAAG,CAAC;YAC1D,UAAU,CAAC,EAAE,CAAC;YACd,QAAQ,CAAC,EAAE,CAAC;YACZ,UAAU,CAAC,KAAK,CAAC;YACjB,gBAAgB,CAAC,SAAS,CAAC;YAC3B,QAAQ,CAAC,SAAS,CAAC;YACnB,eAAe,CAAC,CAAC,CAAC,CAAC;YACnB,iBAAiB,CAAC,KAAK,CAAC;YACxB,gBAAgB,CAAC,SAAS,CAAC;YAC3B,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC;YAC7B,QAAQ,EAAE,KAAK,CAAC,CAAC;UACnB,CAAC;UAAA,sBAbe,KAAK,IAAK,KAAK,CAAC,cAAc,CAAC,CAAC;UAAA,mDADpC,QAAQ,CAAC,CAAC,CAAC,cAAc;UAAA;UAAA;QAAA;MAAA;MAAA,kCAmBxC,IAAI;QAAA,IACH,IAAI;UAAA,OAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QAAA;QAAA,IACtB,QAAQ;UAAA,yBACL,IAAI;YAAA,IAAC,IAAI;cAAA,OAAE,sBAAO,CAAC,CAAC,OAAI,KAAK,CAAC,CAAC;YAAA;YAAA,IAAE,QAAQ;cAAA;YAAA;YAAA;cAAA;YAAA;UAAA;QAAA;QAAA;UAAA;QAAA;MAAA;MAAA,iCAQ/C,IAAI;QAAA,IAAC,IAAI;UAAA,OAAE,KAAK,CAAC,IAAI;QAAA;QAAA,UAAI,IAAI;UAAA;UAAA,8CAAgC,IAAI,CAAC,CAAC;UAAA,8CAAS,KAAK,CAAC,CAAC,IAAI,EAAE;UAAA;QAAA;MAAI;MAAA;QAAA,yBAE3F,MAAM,CAAC,OAAO,CAAC,CAAC;QAAA,aAAhB,QACI,KAAK,CAAC,YAAY,IAAI,QAAQ,CAAC,CAAC,CAAC,eAAe,GACjD,oBAAK,CAAC,CAAC,MACL,UAAU,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAC/B,aAAa,CAAC,CAAC,IAAI,EAAG;MAAA;MAAA,mBAiBjB,KAAK,IAAK;QACpB,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE;QAC5B,KAAK,CAAC,cAAc,CAAC,CAAC;QACtB,IAAI,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,KACpB;UACH,OAAO,CAAC,IAAI,CAAC,CAAC;UACd,QAAQ,EAAE,KAAK,CAAC,CAAC;QACnB;MACF,CAAC;MAAA,oBAdY,KAAK,IAAK;QACrB,IAAI,KAAK,CAAC,aAAa,YAAY,IAAI,KAAK,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,QAAQ,KAAK,KAAK,CAAC,aAAa,CAAC,EACxH;QACF,aAAa,CAAC,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,CAAC;MAChB,CAAC;MAAA,MAbK,OAAO,IAAK;QAChB,UAAU,GAAG,OAAO;QACpB,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC;MAC7B,CAAC;MAAA,mCAqBA,IAAI;QAAA,IAAC,IAAI;UAAA,OAAE,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC;QAAA;QAAA;UAAA;UAAA,mCAEtC,YAAY;YAAA,IACX,OAAO;cAAA,OAAE,YAAY,CAAC,CAAC;YAAA;YAAA,IACvB,KAAK;cAAA,OAAE,WAAW,CAAC,CAAC;YAAA;YACpB,aAAa,EAAE,WAAW;YAAA,IAC1B,SAAS;cAAA,OAAE,KAAK,CAAC,eAAe,IAAI,QAAQ,CAAC,CAAC,CAAC,aAAa;YAAA;YAC5D,QAAQ,EAAE;UAAS;UAAA;QAAA;MAAA;MAAA,6BAIhB,SAAS;MAAA,mCACf,IAAI;QAAA,IAAC,IAAI;UAAA,OAAE,SAAS,CAAC,CAAC;QAAA;QAAA,UACnB,OAAO;UAAA;YAAA;YAAA;UAAA,iBAEE,OAAO;UAAA,iBAIH,MAAM;YACb,gBAAgB,CAAC,SAAS,CAAC;YAC3B,MAAM,CAAC,KAAK,CAAC,CAAC;UAChB,CAAC;UAAA,uBAJe,KAAK,IAAK,KAAK,CAAC,cAAc,CAAC,CAAC;UAAA;UAAA;QAAA;MASrD;MAAA,mCAEF,IAAI;QAAA,IAAC,IAAI;UAAA,OAAE,qBAAM,CAAC,OAAO,CAAC,CAAC,OAAI,OAAO,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC;QAAA;QAAA;UAAA;YAAA;YAAA;UAAA,uBAG3C,KAAK,CAAC,YAAY,IAAI,QAAQ,CAAC,CAAC,CAAC,sBAAsB;UAAA;QAAA;MAAA;MAAA,mCAGjE,GAAG;QAAA,IACF,IAAI;UAAA,OAAE,wBAAS,CAAC,CAAC,MAAG,EAAE,GAAG,OAAO,CAAC,CAAC;QAAA;QAAA,IAClC,QAAQ;UAAA,yBACL,IAAI;YAAA,IAAC,IAAI;cAAA,OAAE,gBAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAI,CAAC,SAAS,CAAC,CAAC;YAAA;YAAA;cAAA;cAAA,uBACX,KAAK,CAAC,aAAa,IAAI,QAAQ,CAAC,CAAC,CAAC,cAAc;cAAA;YAAA;UAAA;QAAA;QAAA,UAInF,CAAC,MAAM,EAAE,KAAK;UAAA;YAAA;YAAA;YAAA;YAAA;YAAA;YAAA;UAAA,iBAaF,MAAM;YACb,MAAM,CAAC,MAAM,CAAC;YACd,QAAQ,EAAE,KAAK,CAAC,CAAC;YACjB,QAAQ,EAAE,MAAM,CAAC,CAAC;UACpB,CAAC;UAAA,uBALe,KAAK,IAAK,KAAK,CAAC,cAAc,CAAC,CAAC;UAAA,uBADjC,MAAM,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;UAAA,MATnC,OAAO,IAAM,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,OAAQ;UAAA,mCAiBhD,IAAI;YAAA,IAAC,IAAI;cAAA,OAAE,MAAM,CAAC,KAAK;YAAA;YAAA,IAAE,QAAQ;cAAA,yBAAG,IAAI;gBAAA,IAAC,IAAI;kBAAA,OAAE,MAAM,CAAC,IAAI;gBAAA;gBAAA,UAAI,IAAI;kBAAA;kBAAA,mCAAe,IAAI,CAAC,CAAC;kBAAA;gBAAA;cAAuB;YAAA;YAAA,UAC3G,KAAK;cAAA;cAAA,+DAA+D,KAAK,CAAC,CAAC;cAAA;YAAA;UAAyB;UAAA,uBAG7F,MAAM,CAAC,KAAK;UAAA,mCACpB,IAAI;YAAA,IAAC,IAAI;cAAA,OAAE,MAAM,CAAC,WAAW;YAAA;YAAA,UAAI,WAAW;cAAA;cAAA,iBAAa,WAAW;cAAA;YAAA;UAAW;UAAA;YAAA,WApB9E,GAAG,SAAS,IAAI,KAAK,CAAC,CAAC,EAAE;cAAA,OAGjB,MAAM,CAAC,KAAK;cAAA,OACT,KAAK,CAAC,CAAC,KAAK,YAAY,CAAC,CAAC;cAAA,OAC3B,KAAK,CAAC,CAAC,KAAK,YAAY,CAAC,CAAC,GAAG,MAAM,GAAG,SAAS;cAAA,OACnD,MAAM,CAAC,QAAQ;YAAA;YAAA;YAAA;YAAA;YAAA;YAAA;UAAA;YAAA;YAAA;YAAA;YAAA;YAAA;UAAA;UAAA;UAAA;QAAA;MAiB5B;MAAA;QAAA,UAlM+B,KAAK,CAAC,CAAC,GAAG,MAAM,GAAG,SAAS;UAAA,OACQ,cAAc,CAAC,CAAC,GAAG,MAAM,GAAG,SAAS;UAAA,OA0GjG,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,GAAG,KAAK,CAAC,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,OAAO;QAAA;QAAA;QAAA;QAAA;MAAA;QAAA;QAAA;QAAA;MAAA;MAAA;MAAA;IAAA;EAAA;AA8FxF;AAEA,eAAe,kBAAkB;AAAC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[
|
|
1
|
+
{"version":3,"names":[],"sources":["inputs/Checkbox.tsx"],"sourcesContent":["import { createEffect, type JSX, Show, splitProps } from \"solid-js\";\nimport { createFieldMeta, fieldControlAria } from \"../internal/field\";\nimport type { ValueFieldProps } from \"./field-contract\";\nimport { commitFieldValue, resolveMaybeAccessor } from \"./field-contract\";\n\nexport type CheckboxProps = ValueFieldProps<boolean> & {\n /** Visual and accessible mixed state for partial bulk selections. */\n indeterminate?: boolean;\n name?: string;\n};\n\nexport function Checkbox(props: CheckboxProps): JSX.Element {\n const [local, rest] = splitProps(props, [\n \"description\",\n \"error\",\n \"id\",\n \"indeterminate\",\n \"label\",\n \"onValueChange\",\n \"onValueCommit\",\n \"value\",\n ]);\n const meta = createFieldMeta(local.id);\n const checked = () => resolveMaybeAccessor(local.value) ?? false;\n const error = () => resolveMaybeAccessor(local.error);\n let inputRef: HTMLInputElement | undefined;\n\n createEffect(() => {\n if (inputRef) inputRef.indeterminate = local.indeterminate ?? false;\n });\n\n return (\n <div\n class={`k2b-check-field ${rest.class ?? \"\"}`}\n data-disabled={rest.disabled ? \"true\" : undefined}\n data-invalid={error() ? \"true\" : undefined}\n >\n <label class=\"k2b-check\" data-indeterminate={local.indeterminate ? \"true\" : undefined}>\n <input\n ref={inputRef}\n id={meta.controlId}\n type=\"checkbox\"\n name={props.name}\n checked={checked()}\n disabled={rest.disabled}\n required={rest.required}\n aria-checked={local.indeterminate ? \"mixed\" : checked()}\n {...fieldControlAria(meta, props)}\n onChange={(event) => commitFieldValue(local, event.currentTarget.checked)}\n />\n <span class=\"k2b-check__control\" aria-hidden=\"true\">\n <i class={local.indeterminate ? \"ti ti-minus\" : \"ti ti-check\"} />\n </span>\n <Show when={local.label || local.description}>\n <span class=\"k2b-check__content\">\n <span id={meta.labelId} class=\"k2b-check__label\">\n {local.label}\n <Show when={rest.required}>\n <span class=\"k2b-field__required\" aria-hidden=\"true\">\n *\n </span>\n </Show>\n </span>\n <Show when={local.description}>\n <span class=\"k2b-field__description\" id={meta.descriptionId}>\n {local.description}\n </span>\n </Show>\n </span>\n </Show>\n </label>\n <Show when={error()}>\n <p class=\"k2b-field__error\" id={meta.errorId} role=\"alert\" aria-live=\"polite\">\n {error()}\n </p>\n </Show>\n </div>\n );\n}\n\nexport default Checkbox;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[
|
|
1
|
+
{"version":3,"names":[],"sources":["inputs/CheckboxCard.tsx"],"sourcesContent":["import { type JSX, Show, splitProps } from \"solid-js\";\nimport { createFieldMeta, fieldControlAria } from \"../internal/field\";\nimport type { ValueFieldProps } from \"./field-contract\";\nimport { commitFieldValue, resolveMaybeAccessor } from \"./field-contract\";\n\nexport type CheckboxCardProps = Omit<\n JSX.InputHTMLAttributes<HTMLInputElement>,\n \"checked\" | \"onChange\" | \"type\" | \"value\" | keyof ValueFieldProps<boolean>\n> &\n ValueFieldProps<boolean> & {\n icon?: string;\n color?: string;\n variant?: \"card\" | \"input\";\n };\n\nconst validHexColor = (color: string | undefined): string | undefined =>\n color && /^#(?:[0-9a-f]{3}|[0-9a-f]{6})$/i.test(color.trim()) ? color.trim() : undefined;\n\nexport function CheckboxCard(props: CheckboxCardProps): JSX.Element {\n const [local, rest] = splitProps(props, [\n \"aria-describedby\",\n \"class\",\n \"color\",\n \"description\",\n \"error\",\n \"id\",\n \"icon\",\n \"label\",\n \"onValueChange\",\n \"onValueCommit\",\n \"value\",\n \"variant\",\n ]);\n const meta = createFieldMeta(local.id);\n const color = () => validHexColor(local.color);\n const checked = () => resolveMaybeAccessor(local.value) ?? false;\n const error = () => resolveMaybeAccessor(local.error);\n\n return (\n <div class={`k2b-checkbox-card-field ${local.class ?? \"\"}`}>\n <label\n class=\"k2b-checkbox-card\"\n data-state={error() ? \"invalid\" : checked() ? \"checked\" : \"idle\"}\n data-variant={local.variant ?? \"card\"}\n >\n <input\n {...rest}\n id={meta.controlId}\n type=\"checkbox\"\n checked={checked()}\n {...fieldControlAria(meta, props)}\n onChange={(event) => commitFieldValue(local, event.currentTarget.checked)}\n />\n <span class=\"k2b-checkbox-card__control\" aria-hidden=\"true\">\n <i class=\"ti ti-check\" />\n </span>\n <span class=\"k2b-checkbox-card__content\">\n <span id={meta.labelId} class=\"k2b-checkbox-card__label\">\n {/* The icon / colour dot lives inside the label row (as in Cloud) so a card\n without one does not reserve an empty grid column plus its gap. */}\n <Show\n when={local.icon}\n fallback={<Show when={color()}>{(value) => <span class=\"k2b-checkbox-card__color\" style={{ background: value() }} />}</Show>}\n >\n {(icon) => <i class={`k2b-checkbox-card__icon ${icon()}`} aria-hidden=\"true\" />}\n </Show>\n <span class=\"k2b-checkbox-card__text\">{local.label}</span>\n <Show when={rest.required}>\n <span class=\"k2b-field__required\" aria-hidden=\"true\">\n *\n </span>\n </Show>\n </span>\n <Show when={local.description}>\n <span class=\"k2b-field__description\" id={meta.descriptionId}>\n {local.description}\n </span>\n </Show>\n </span>\n </label>\n <Show when={error()}>\n <p class=\"k2b-field__error\" id={meta.errorId} role=\"alert\" aria-live=\"polite\">\n {error()}\n </p>\n </Show>\n </div>\n );\n}\n\nexport default CheckboxCard;\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA,SAAmB,IAAI,EAAE,UAAU,QAAQ,UAAU;AACrD,SAAS,eAAe,EAAE,gBAAgB,QAAQ,mBAAmB;AAErE,SAAS,gBAAgB,EAAE,oBAAoB,QAAQ,kBAAkB;AAYzE,MAAM,aAAa,GAAI,KAAyB,IAC9C,KAAK,IAAI,iCAAiC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS;AAE1F,OAAO,SAAS,YAAY,CAAC,KAAwB,EAAe;EAClE,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,KAAK,EAAE,CACtC,kBAAkB,EAClB,OAAO,EACP,OAAO,EACP,aAAa,EACb,OAAO,EACP,IAAI,EACJ,MAAM,EACN,OAAO,EACP,eAAe,EACf,eAAe,EACf,OAAO,EACP,SAAS,CACV,CAAC;EACF,MAAM,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;EACtC,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC;EAC9C,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK;EAChE,MAAM,KAAK,GAAG,MAAM,oBAAoB,CAAC,KAAK,CAAC,KAAK,CAAC;EAErD;IAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;IAAA,6BAQY,IAAI;MAAA,IACR,EAAE;QAAA,OAAE,IAAI,CAAC,SAAS;MAAA;MAAA,QACb,UAAU;MAAA,IACf,OAAO;QAAA,OAAE,OAAO,CAAC,CAAC;MAAA;IAAA,SACd,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC;MAAA,YACtB,KAAK,IAAK,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,aAAa,CAAC,OAAO;IAAC;IAAA,kCAStE,IAAI;MAAA,IACH,IAAI;QAAA,OAAE,KAAK,CAAC,IAAI;MAAA;MAAA,IAChB,QAAQ;QAAA,yBAAG,IAAI;UAAA,IAAC,IAAI;YAAA,OAAE,KAAK,CAAC,CAAC;UAAA;UAAA,UAAI,KAAK;YAAA;YAAA,yDAAiE,KAAK,CAAC,CAAC;YAAA;UAAA;QAAM;MAAA;MAAA,UAElH,IAAI;QAAA;QAAA,mCAAe,2BAA2B,IAAI,CAAC,CAAC,EAAE;QAAA;MAAA;IAAuB;IAAA,sBAE1C,KAAK,CAAC,KAAK;IAAA,kCACjD,IAAI;MAAA,IAAC,IAAI;QAAA,OAAE,IAAI,CAAC,QAAQ;MAAA;MAAA;QAAA;MAAA;IAAA;IAAA,kCAM1B,IAAI;MAAA,IAAC,IAAI;QAAA,OAAE,KAAK,CAAC,WAAW;MAAA;MAAA;QAAA;QAAA,uBAExB,KAAK,CAAC,WAAW;QAAA,4CADqB,IAAI,CAAC,aAAa;QAAA;MAAA;IAAA;IAAA,iCAMhE,IAAI;MAAA,IAAC,IAAI;QAAA,OAAE,KAAK,CAAC,CAAC;MAAA;MAAA;QAAA;QAAA,iBAEd,KAAK;QAAA,4CADwB,IAAI,CAAC,OAAO;QAAA;MAAA;IAAA;IAAA;MAAA,UA1CpC,2BAA2B,KAAK,CAAC,KAAK,IAAI,EAAE,EAAE;QAAA,OAG1C,KAAK,CAAC,CAAC,GAAG,SAAS,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,GAAG,MAAM;QAAA,OAClD,KAAK,CAAC,OAAO,IAAI,MAAM;QAAA,OAczB,IAAI,CAAC,OAAO;MAAA;MAAA;MAAA;MAAA;MAAA;IAAA;MAAA;MAAA;MAAA;MAAA;IAAA;IAAA;IAAA;EAAA;AA8BhC;AAEA,eAAe,YAAY","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) => 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":[]}
|
|
1
|
+
{"version":3,"names":[],"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":[]}
|