@k2b/ui 0.5.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/actions/Button.js +11 -2
- 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/ZoomPanViewport.js +396 -0
- package/dist/browser/content/ZoomPanViewport.js.map +1 -0
- 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 +1 -0
- package/dist/browser/content/index.js.map +1 -1
- package/dist/browser/content/zoom-pan.js +54 -0
- package/dist/browser/content/zoom-pan.js.map +1 -0
- 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 +2 -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 +6 -0
- package/dist/browser/intl/messages.js.map +1 -1
- package/dist/browser/layout/AppOverview.js.map +1 -1
- 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.map +1 -1
- package/dist/browser/layout/Panes.js.map +1 -1
- package/dist/browser/layout/PullToRefresh.js +8 -7
- package/dist/browser/layout/PullToRefresh.js.map +1 -1
- 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.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.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 +16 -6
- 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/ZoomPanViewport.js +300 -0
- package/dist/ssr/content/ZoomPanViewport.js.map +1 -0
- 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 +1 -0
- package/dist/ssr/content/index.js.map +1 -1
- package/dist/ssr/content/zoom-pan.js +54 -0
- package/dist/ssr/content/zoom-pan.js.map +1 -0
- 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 +6 -4
- 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 +6 -0
- package/dist/ssr/intl/messages.js.map +1 -1
- package/dist/ssr/layout/AppOverview.js +2 -1
- package/dist/ssr/layout/AppOverview.js.map +1 -1
- package/dist/ssr/layout/AppWorkspace.js +7 -6
- 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.map +1 -1
- package/dist/ssr/layout/Panes.js.map +1 -1
- package/dist/ssr/layout/PullToRefresh.js +1 -1
- package/dist/ssr/layout/PullToRefresh.js.map +1 -1
- 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.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.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/Button.d.ts +5 -0
- package/dist/types/actions/SplitButton.d.ts +1 -1
- package/dist/types/actions/SpotlightSearch.d.ts +1 -1
- package/dist/types/actions/index.d.ts +1 -1
- package/dist/types/content/ZoomPanViewport.d.ts +33 -0
- package/dist/types/content/index.d.ts +2 -0
- package/dist/types/content/zoom-pan.d.ts +29 -0
- package/dist/types/feedback/prompts.d.ts +4 -3
- package/dist/types/intl/messages.d.ts +3 -0
- package/package.json +9 -10
|
@@ -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":"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","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":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["For","Show","splitProps","createFieldMeta","Field","fieldControlAria","useUiMessages","commitFieldValue","resolveMaybeAccessor","PinInput","props","messages","meta","id","length","Math","max","inputs","digits","value","replace","slice","error","emit","onValueChange","onValueCommit","updateDigit","index","input","disabled","readOnly","digit","current","focus","select","handleKeyDown","event","key","onSubmit","shiftKey","metaKey","preventDefault","handlePaste","pasted","clipboardData","getData","focused","indexOf","document","activeElement","start","insert","next","min","_$createComponent","class","label","description","labelFor","required","children","_el$","_$getNextElement","_tmpl$","_$spread","_$mergeProps","controlId","data-stretch","stretch","undefined","_$insert","each","Array","from","_","_el$2","_tmpl$2","addEventListener","currentTarget","$$keydown","$$input","_$use","element","_$effect","_p$","_v$","_v$2","password","_v$3","_v$4","_v$5","_v$6","pinDigit","total","e","_$setAttribute","t","a","_$setProperty","o","i","n","_$runHydrationEvents","when","name","_el$3","_tmpl$3","Slider","local","rest","Number","percentage","span","track","position","center","low","high","resetValue","defaultValue","_el$4","_tmpl$5","_el$5","firstChild","_el$7","nextSibling","_el$8","_co$","_$getNextMarker","style","background","valueAsNumber","onDblClick","showValue","_el$6","_tmpl$4","formatValue","ColorInput","currentColor","isTransparent","transparentValue","compact","picker","control","_el$9","_tmpl$6","_el$0","_el$1","onClick","click","_ref$","_v$7","_v$8","_v$9","_el$10","_tmpl$8","_el$11","_el$12","_el$13","_el$16","_el$17","_co$2","_el$15","_c$","_$memo","toUpperCase","transparent","_el$14","_tmpl$7","$$click","onTransparentValueChange","_v$0","useColor","useTransparent","_v$1","_v$10","_ref$2","_v$11","_v$12","_v$13","_v$14","_v$15","_v$16","_v$17","_$style","s","_$delegateEvents"],"sources":["inputs/ChoiceInputs.tsx"],"sourcesContent":["import { For, type JSX, Show, splitProps } from \"solid-js\";\nimport { createFieldMeta, Field, fieldControlAria } from \"../internal/field\";\nimport { useUiMessages } from \"../intl/messages\";\nimport type { FieldProps, MaybeAccessor, ValueFieldProps } from \"./field-contract\";\nimport { commitFieldValue, resolveMaybeAccessor } from \"./field-contract\";\n\nexport type PinInputProps = ValueFieldProps<string> & {\n length?: number;\n name?: string;\n stretch?: boolean;\n password?: boolean;\n readOnly?: boolean;\n onSubmit?: () => void;\n};\n\nexport function PinInput(props: PinInputProps): JSX.Element {\n const messages = useUiMessages();\n const meta = createFieldMeta(props.id);\n const length = () => Math.max(1, props.length ?? 6);\n let inputs: HTMLInputElement[] = [];\n const digits = () => (resolveMaybeAccessor(props.value) ?? \"\").replace(/\\D/g, \"\").slice(0, length());\n const error = () => resolveMaybeAccessor(props.error);\n const emit = (value: string) => {\n props.onValueChange?.(value);\n if (value.length === length()) props.onValueCommit?.(value);\n };\n\n const updateDigit = (index: number, input: string) => {\n if (props.disabled || props.readOnly) return;\n const digit = input.replace(/\\D/g, \"\").slice(-1);\n const current = digits();\n emit(`${current.slice(0, index)}${digit}${current.slice(index + 1)}`);\n if (digit && index < length() - 1) {\n inputs[index + 1]?.focus();\n inputs[index + 1]?.select();\n }\n };\n\n const handleKeyDown = (index: number, event: KeyboardEvent) => {\n if (props.disabled || props.readOnly) return;\n if (event.key === \"Enter\" && props.onSubmit && !event.shiftKey && !event.metaKey) {\n event.preventDefault();\n props.onSubmit();\n } else if (event.key === \"ArrowLeft\" && index > 0) {\n event.preventDefault();\n inputs[index - 1]?.focus();\n inputs[index - 1]?.select();\n } else if (event.key === \"ArrowRight\" && index < length() - 1) {\n event.preventDefault();\n inputs[index + 1]?.focus();\n inputs[index + 1]?.select();\n } else if (event.key === \"Backspace\" && !digits()[index] && index > 0) {\n event.preventDefault();\n const current = digits();\n emit(`${current.slice(0, index - 1)}${current.slice(index)}`);\n inputs[index - 1]?.focus();\n inputs[index - 1]?.select();\n }\n };\n\n const handlePaste = (event: ClipboardEvent) => {\n if (props.disabled || props.readOnly) return;\n const pasted = event.clipboardData?.getData(\"text\").replace(/\\D/g, \"\");\n if (!pasted) return;\n event.preventDefault();\n const focused = inputs.indexOf(document.activeElement as HTMLInputElement);\n const start = focused >= 0 ? focused : 0;\n const insert = pasted.slice(0, length() - start);\n const current = digits();\n emit(`${current.slice(0, start)}${insert}${current.slice(start + insert.length)}`.slice(0, length()));\n const next = Math.min(start + insert.length, length() - 1);\n inputs[next]?.focus();\n inputs[next]?.select();\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 labelFor={false}\n required={props.required}\n disabled={props.disabled}\n >\n <div\n class=\"k2b-pin-input\"\n id={meta.controlId}\n data-stretch={props.stretch ? \"true\" : undefined}\n role=\"group\"\n {...fieldControlAria(meta, props)}\n onPaste={handlePaste}\n >\n <For each={Array.from({ length: length() })}>\n {(_, index) => (\n <input\n ref={(element) => {\n inputs[index()] = element;\n }}\n class=\"k2b-control k2b-pin-input__digit\"\n data-filled={digits()[index()] ? \"true\" : undefined}\n type={props.password ? \"password\" : \"text\"}\n inputmode=\"numeric\"\n autocomplete=\"off\"\n pattern=\"[0-9]\"\n maxlength={1}\n value={digits()[index()] ?? \"\"}\n required={props.required}\n disabled={props.disabled}\n readOnly={props.readOnly}\n aria-label={messages().pinDigit({ index: index() + 1, total: length() })}\n onInput={(event) => updateDigit(index(), event.currentTarget.value)}\n onKeyDown={(event) => handleKeyDown(index(), event)}\n onFocus={(event) => event.currentTarget.select()}\n />\n )}\n </For>\n </div>\n <Show when={props.name}>{(name) => <input type=\"hidden\" name={name()} value={digits()} />}</Show>\n </Field>\n );\n}\n\nexport type SliderProps = FieldProps &\n Omit<JSX.InputHTMLAttributes<HTMLInputElement>, \"type\" | \"value\" | \"onInput\" | \"onChange\" | keyof FieldProps> &\n ValueFieldProps<number> & {\n value: MaybeAccessor<number>;\n formatValue?: (value: number) => string;\n showValue?: boolean;\n center?: boolean;\n defaultValue?: number;\n };\n\nexport function Slider(props: SliderProps): JSX.Element {\n const [local, rest] = splitProps(props, [\n \"aria-describedby\",\n \"aria-label\",\n \"center\",\n \"class\",\n \"defaultValue\",\n \"description\",\n \"error\",\n \"id\",\n \"label\",\n \"onValueChange\",\n \"onValueCommit\",\n \"required\",\n \"showValue\",\n \"value\",\n \"formatValue\",\n ]);\n const meta = createFieldMeta(local.id);\n const min = () => Number(rest.min ?? 0);\n const max = () => Number(rest.max ?? 100);\n const value = () => resolveMaybeAccessor(local.value) ?? min();\n const error = () => resolveMaybeAccessor(local.error);\n const percentage = () => {\n const span = max() - min();\n return span <= 0 ? 0 : Math.min(100, Math.max(0, ((value() - min()) / span) * 100));\n };\n const track = () => {\n const position = percentage();\n if (local.center) {\n const low = Math.min(50, position);\n const high = Math.max(50, position);\n return `linear-gradient(to right, var(--k2b-surface-muted) 0 ${low}%, var(--k2b-action) ${low}% ${high}%, var(--k2b-surface-muted) ${high}% 100%)`;\n }\n return `linear-gradient(to right, var(--k2b-action) 0 ${position}%, var(--k2b-surface-muted) ${position}% 100%)`;\n };\n const resetValue = () => local.defaultValue ?? (local.center ? (min() + max()) / 2 : min());\n\n return (\n <Field\n class={local.class}\n label={local.label}\n description={local.description}\n error={error()}\n meta={meta}\n required={local.required}\n disabled={rest.disabled}\n >\n <div class=\"k2b-slider\">\n <input\n {...rest}\n id={meta.controlId}\n type=\"range\"\n value={value()}\n style={{ background: track() }}\n {...fieldControlAria(meta, local)}\n onInput={(event) => local.onValueChange?.(event.currentTarget.valueAsNumber)}\n onChange={(event) => local.onValueCommit?.(event.currentTarget.valueAsNumber)}\n onDblClick={() => {\n const next = resetValue();\n commitFieldValue(local, next);\n }}\n />\n <Show when={local.showValue ?? true}>\n <output for={meta.controlId}>{local.formatValue?.(value()) ?? value()}</output>\n </Show>\n </div>\n </Field>\n );\n}\n\nexport type ColorInputProps = ValueFieldProps<string> & {\n name?: string;\n compact?: boolean;\n transparent?: boolean;\n transparentValue?: MaybeAccessor<boolean>;\n onTransparentValueChange?: (value: boolean) => void;\n};\n\nexport function ColorInput(props: ColorInputProps): JSX.Element {\n const messages = useUiMessages();\n const meta = createFieldMeta(props.id);\n const currentColor = () => resolveMaybeAccessor(props.value) || \"#3b82f6\";\n const isTransparent = () => resolveMaybeAccessor(props.transparentValue) ?? false;\n const error = () => resolveMaybeAccessor(props.error);\n const compact = () => props.compact ?? !props.label;\n let picker: HTMLInputElement | undefined;\n\n const control = () =>\n compact() ? (\n <span class=\"k2b-color-input k2b-color-input--compact\">\n <button\n type=\"button\"\n class=\"k2b-color-input__swatch\"\n style={{ \"background-color\": currentColor() }}\n disabled={props.disabled}\n {...fieldControlAria(meta, props)}\n onClick={() => picker?.click()}\n />\n <input\n ref={picker}\n id={meta.controlId}\n class=\"k2b-color-input__native\"\n type=\"color\"\n name={props.name}\n value={currentColor()}\n disabled={props.disabled}\n onInput={(event) => props.onValueChange?.(event.currentTarget.value)}\n onChange={(event) => props.onValueCommit?.(event.currentTarget.value)}\n />\n </span>\n ) : (\n <div\n class=\"k2b-color-input\"\n data-disabled={props.disabled || isTransparent() ? \"true\" : undefined}\n data-invalid={error() ? \"true\" : undefined}\n >\n <button\n type=\"button\"\n class=\"k2b-color-input__value\"\n disabled={props.disabled || isTransparent()}\n {...fieldControlAria(meta, props)}\n onClick={() => picker?.click()}\n >\n <span\n class=\"k2b-color-input__swatch\"\n data-transparent={isTransparent() ? \"true\" : undefined}\n style={isTransparent() ? undefined : { \"background-color\": currentColor() }}\n />\n <code>{isTransparent() ? \"transparent\" : currentColor().toUpperCase()}</code>\n </button>\n <Show when={props.transparent}>\n <button\n type=\"button\"\n class=\"k2b-color-input__transparent\"\n aria-label={isTransparent() ? messages().useColor : messages().useTransparent}\n aria-pressed={isTransparent()}\n disabled={props.disabled}\n onClick={() => props.onTransparentValueChange?.(!isTransparent())}\n >\n <i class=\"ti ti-grid-dots\" aria-hidden=\"true\" />\n </button>\n </Show>\n <input\n ref={picker}\n id={meta.controlId}\n class=\"k2b-color-input__native\"\n type=\"color\"\n name={props.name}\n value={currentColor()}\n disabled={props.disabled || isTransparent()}\n onInput={(event) => props.onValueChange?.(event.currentTarget.value)}\n onChange={(event) => props.onValueCommit?.(event.currentTarget.value)}\n />\n </div>\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 {control()}\n </Field>\n );\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":[],"sources":["inputs/ChoiceInputs.tsx"],"sourcesContent":["import { For, type JSX, Show, splitProps } from \"solid-js\";\nimport { createFieldMeta, Field, fieldControlAria } from \"../internal/field\";\nimport { useUiMessages } from \"../intl/messages\";\nimport type { FieldProps, MaybeAccessor, ValueFieldProps } from \"./field-contract\";\nimport { commitFieldValue, resolveMaybeAccessor } from \"./field-contract\";\n\nexport type PinInputProps = ValueFieldProps<string> & {\n length?: number;\n name?: string;\n stretch?: boolean;\n password?: boolean;\n readOnly?: boolean;\n onSubmit?: () => void;\n};\n\nexport function PinInput(props: PinInputProps): JSX.Element {\n const messages = useUiMessages();\n const meta = createFieldMeta(props.id);\n const length = () => Math.max(1, props.length ?? 6);\n let inputs: HTMLInputElement[] = [];\n const digits = () => (resolveMaybeAccessor(props.value) ?? \"\").replace(/\\D/g, \"\").slice(0, length());\n const error = () => resolveMaybeAccessor(props.error);\n const emit = (value: string) => {\n props.onValueChange?.(value);\n if (value.length === length()) props.onValueCommit?.(value);\n };\n\n const updateDigit = (index: number, input: string) => {\n if (props.disabled || props.readOnly) return;\n const digit = input.replace(/\\D/g, \"\").slice(-1);\n const current = digits();\n emit(`${current.slice(0, index)}${digit}${current.slice(index + 1)}`);\n if (digit && index < length() - 1) {\n inputs[index + 1]?.focus();\n inputs[index + 1]?.select();\n }\n };\n\n const handleKeyDown = (index: number, event: KeyboardEvent) => {\n if (props.disabled || props.readOnly) return;\n if (event.key === \"Enter\" && props.onSubmit && !event.shiftKey && !event.metaKey) {\n event.preventDefault();\n props.onSubmit();\n } else if (event.key === \"ArrowLeft\" && index > 0) {\n event.preventDefault();\n inputs[index - 1]?.focus();\n inputs[index - 1]?.select();\n } else if (event.key === \"ArrowRight\" && index < length() - 1) {\n event.preventDefault();\n inputs[index + 1]?.focus();\n inputs[index + 1]?.select();\n } else if (event.key === \"Backspace\" && !digits()[index] && index > 0) {\n event.preventDefault();\n const current = digits();\n emit(`${current.slice(0, index - 1)}${current.slice(index)}`);\n inputs[index - 1]?.focus();\n inputs[index - 1]?.select();\n }\n };\n\n const handlePaste = (event: ClipboardEvent) => {\n if (props.disabled || props.readOnly) return;\n const pasted = event.clipboardData?.getData(\"text\").replace(/\\D/g, \"\");\n if (!pasted) return;\n event.preventDefault();\n const focused = inputs.indexOf(document.activeElement as HTMLInputElement);\n const start = focused >= 0 ? focused : 0;\n const insert = pasted.slice(0, length() - start);\n const current = digits();\n emit(`${current.slice(0, start)}${insert}${current.slice(start + insert.length)}`.slice(0, length()));\n const next = Math.min(start + insert.length, length() - 1);\n inputs[next]?.focus();\n inputs[next]?.select();\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 labelFor={false}\n required={props.required}\n disabled={props.disabled}\n >\n <div\n class=\"k2b-pin-input\"\n id={meta.controlId}\n data-stretch={props.stretch ? \"true\" : undefined}\n role=\"group\"\n {...fieldControlAria(meta, props)}\n onPaste={handlePaste}\n >\n <For each={Array.from({ length: length() })}>\n {(_, index) => (\n <input\n ref={(element) => {\n inputs[index()] = element;\n }}\n class=\"k2b-control k2b-pin-input__digit\"\n data-filled={digits()[index()] ? \"true\" : undefined}\n type={props.password ? \"password\" : \"text\"}\n inputmode=\"numeric\"\n autocomplete=\"off\"\n pattern=\"[0-9]\"\n maxlength={1}\n value={digits()[index()] ?? \"\"}\n required={props.required}\n disabled={props.disabled}\n readOnly={props.readOnly}\n aria-label={messages().pinDigit({ index: index() + 1, total: length() })}\n onInput={(event) => updateDigit(index(), event.currentTarget.value)}\n onKeyDown={(event) => handleKeyDown(index(), event)}\n onFocus={(event) => event.currentTarget.select()}\n />\n )}\n </For>\n </div>\n <Show when={props.name}>{(name) => <input type=\"hidden\" name={name()} value={digits()} />}</Show>\n </Field>\n );\n}\n\nexport type SliderProps = FieldProps &\n Omit<JSX.InputHTMLAttributes<HTMLInputElement>, \"type\" | \"value\" | \"onInput\" | \"onChange\" | keyof FieldProps> &\n ValueFieldProps<number> & {\n value: MaybeAccessor<number>;\n formatValue?: (value: number) => string;\n showValue?: boolean;\n center?: boolean;\n defaultValue?: number;\n };\n\nexport function Slider(props: SliderProps): JSX.Element {\n const [local, rest] = splitProps(props, [\n \"aria-describedby\",\n \"aria-label\",\n \"center\",\n \"class\",\n \"defaultValue\",\n \"description\",\n \"error\",\n \"id\",\n \"label\",\n \"onValueChange\",\n \"onValueCommit\",\n \"required\",\n \"showValue\",\n \"value\",\n \"formatValue\",\n ]);\n const meta = createFieldMeta(local.id);\n const min = () => Number(rest.min ?? 0);\n const max = () => Number(rest.max ?? 100);\n const value = () => resolveMaybeAccessor(local.value) ?? min();\n const error = () => resolveMaybeAccessor(local.error);\n const percentage = () => {\n const span = max() - min();\n return span <= 0 ? 0 : Math.min(100, Math.max(0, ((value() - min()) / span) * 100));\n };\n const track = () => {\n const position = percentage();\n if (local.center) {\n const low = Math.min(50, position);\n const high = Math.max(50, position);\n return `linear-gradient(to right, var(--k2b-surface-muted) 0 ${low}%, var(--k2b-action) ${low}% ${high}%, var(--k2b-surface-muted) ${high}% 100%)`;\n }\n return `linear-gradient(to right, var(--k2b-action) 0 ${position}%, var(--k2b-surface-muted) ${position}% 100%)`;\n };\n const resetValue = () => local.defaultValue ?? (local.center ? (min() + max()) / 2 : min());\n\n return (\n <Field\n class={local.class}\n label={local.label}\n description={local.description}\n error={error()}\n meta={meta}\n required={local.required}\n disabled={rest.disabled}\n >\n <div class=\"k2b-slider\">\n <input\n {...rest}\n id={meta.controlId}\n type=\"range\"\n value={value()}\n style={{ background: track() }}\n {...fieldControlAria(meta, local)}\n onInput={(event) => local.onValueChange?.(event.currentTarget.valueAsNumber)}\n onChange={(event) => local.onValueCommit?.(event.currentTarget.valueAsNumber)}\n onDblClick={() => {\n const next = resetValue();\n commitFieldValue(local, next);\n }}\n />\n <Show when={local.showValue ?? true}>\n <output for={meta.controlId}>{local.formatValue?.(value()) ?? value()}</output>\n </Show>\n </div>\n </Field>\n );\n}\n\nexport type ColorInputProps = ValueFieldProps<string> & {\n name?: string;\n compact?: boolean;\n transparent?: boolean;\n transparentValue?: MaybeAccessor<boolean>;\n onTransparentValueChange?: (value: boolean) => void;\n};\n\nexport function ColorInput(props: ColorInputProps): JSX.Element {\n const messages = useUiMessages();\n const meta = createFieldMeta(props.id);\n const currentColor = () => resolveMaybeAccessor(props.value) || \"#3b82f6\";\n const isTransparent = () => resolveMaybeAccessor(props.transparentValue) ?? false;\n const error = () => resolveMaybeAccessor(props.error);\n const compact = () => props.compact ?? !props.label;\n let picker: HTMLInputElement | undefined;\n\n const control = () =>\n compact() ? (\n <span class=\"k2b-color-input k2b-color-input--compact\">\n <button\n type=\"button\"\n class=\"k2b-color-input__swatch\"\n style={{ \"background-color\": currentColor() }}\n disabled={props.disabled}\n {...fieldControlAria(meta, props)}\n onClick={() => picker?.click()}\n />\n <input\n ref={picker}\n id={meta.controlId}\n class=\"k2b-color-input__native\"\n type=\"color\"\n name={props.name}\n value={currentColor()}\n disabled={props.disabled}\n onInput={(event) => props.onValueChange?.(event.currentTarget.value)}\n onChange={(event) => props.onValueCommit?.(event.currentTarget.value)}\n />\n </span>\n ) : (\n <div\n class=\"k2b-color-input\"\n data-disabled={props.disabled || isTransparent() ? \"true\" : undefined}\n data-invalid={error() ? \"true\" : undefined}\n >\n <button\n type=\"button\"\n class=\"k2b-color-input__value\"\n disabled={props.disabled || isTransparent()}\n {...fieldControlAria(meta, props)}\n onClick={() => picker?.click()}\n >\n <span\n class=\"k2b-color-input__swatch\"\n data-transparent={isTransparent() ? \"true\" : undefined}\n style={isTransparent() ? undefined : { \"background-color\": currentColor() }}\n />\n <code>{isTransparent() ? \"transparent\" : currentColor().toUpperCase()}</code>\n </button>\n <Show when={props.transparent}>\n <button\n type=\"button\"\n class=\"k2b-color-input__transparent\"\n aria-label={isTransparent() ? messages().useColor : messages().useTransparent}\n aria-pressed={isTransparent()}\n disabled={props.disabled}\n onClick={() => props.onTransparentValueChange?.(!isTransparent())}\n >\n <i class=\"ti ti-grid-dots\" aria-hidden=\"true\" />\n </button>\n </Show>\n <input\n ref={picker}\n id={meta.controlId}\n class=\"k2b-color-input__native\"\n type=\"color\"\n name={props.name}\n value={currentColor()}\n disabled={props.disabled || isTransparent()}\n onInput={(event) => props.onValueChange?.(event.currentTarget.value)}\n onChange={(event) => props.onValueCommit?.(event.currentTarget.value)}\n />\n </div>\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 {control()}\n </Field>\n );\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createSignal","For","Show","createFieldMeta","Field","fieldControlAria","useUiMessages","createChoiceLoader","createChoicePopover","nextEnabledChoiceIndex","resolveMaybeAccessor","iconClass","icon","split","includes","Combobox","props","messages","meta","id","listboxId","controlId","localQuery","setLocalQuery","query","setQuery","value","onQueryChange","error","focusedIndex","setFocusedIndex","inputRef","optionRefs","loader","signal","fetchData","map","option","debounceMs","popover","Boolean","disabled","options","focusedOption","focus","index","scrollIntoView","block","open","eager","show","load","reset","cancel","close","hide","select","onSelect","label","description","onKeyDown","event","key","preventDefault","_$createComponent","class","required","children","_el$","_$getNextElement","_tmpl$2","_el$2","firstChild","_el$3","_el$4","nextSibling","_el$6","_el$7","_co$","_$getNextMarker","_el$8","_el$9","_el$0","_el$1","_co$2","_el$10","_el$11","_co$3","_ref$","setTrigger","_$use","element","_$setAttribute","_$spread","_$mergeProps","placeholder","search","aria-expanded","aria-activedescendant","_$memo","undefined","onFocus","onClick","currentTarget","_$insert","when","loading","fallback","_tmpl$3","_tmpl$","_ref$2","setPopover","message","_el$13","_tmpl$4","_el$14","_el$15","_$addEventListener","retry","_$runHydrationEvents","each","_el$16","_tmpl$5","_c$","length","noResultsFound","typeToSearch","_el$17","_tmpl$6","_el$22","_el$23","_co$5","_el$18","_el$19","_el$20","_el$21","_co$4","$$click","$$pointerdown","$$pointermove","_el$24","_tmpl$7","_$effect","_$className","_el$25","_tmpl$8","_p$","_v$","_v$2","_v$3","e","t","a","_$delegateEvents"],"sources":["inputs/Combobox.tsx"],"sourcesContent":["import { createSignal, For, type JSX, Show } from \"solid-js\";\nimport { createFieldMeta, Field, fieldControlAria } from \"../internal/field\";\nimport { useUiMessages } from \"../intl/messages\";\nimport { type ChoiceOption, createChoiceLoader, createChoicePopover, nextEnabledChoiceIndex } from \"./choice\";\nimport type { FieldProps, MaybeAccessor } from \"./field-contract\";\nimport { resolveMaybeAccessor } from \"./field-contract\";\n\nexport type ComboboxOption = { id: string; label: string; description?: string; icon?: string };\nexport type ComboboxProps = FieldProps & {\n query?: MaybeAccessor<string>;\n onQueryChange?: (query: string) => void;\n placeholder?: string;\n fetchData: (query: string, signal: AbortSignal) => Promise<ComboboxOption[]>;\n onSelect: (option: ComboboxOption) => void;\n debounceMs?: number;\n};\n\nconst iconClass = (icon: string) => (icon.split(/\\s+/).includes(\"ti\") ? icon : `ti ${icon}`);\n\nexport function Combobox(props: ComboboxProps): JSX.Element {\n const messages = useUiMessages();\n const meta = createFieldMeta(props.id);\n const listboxId = `${meta.controlId}-listbox`;\n const [localQuery, setLocalQuery] = createSignal(\"\");\n const query = () => resolveMaybeAccessor(props.query) ?? localQuery();\n const setQuery = (value: string) => {\n setLocalQuery(value);\n props.onQueryChange?.(value);\n };\n const error = () => resolveMaybeAccessor(props.error);\n const [focusedIndex, setFocusedIndex] = createSignal(-1);\n let inputRef: HTMLInputElement | undefined;\n let optionRefs: HTMLButtonElement[] = [];\n const loader = createChoiceLoader(\n () => async (value, signal) => (await props.fetchData(value, signal)).map((option) => ({ ...option, value: option.id })),\n // Cloud debounces at 200ms and then pads the response with a 200ms minimum\n // load time to stop the spinner flickering. The spinner here sits in the\n // chevron slot and stale results stay visible, so there is nothing to pad —\n // 150ms keeps typing responsive without hammering the loader.\n () => props.debounceMs ?? 150,\n );\n const popover = createChoicePopover(() => Boolean(props.disabled));\n const options = loader.options;\n const focusedOption = () => options()[focusedIndex()];\n const focus = (index: number) => {\n setFocusedIndex(index);\n optionRefs[index]?.scrollIntoView({ block: \"nearest\" });\n };\n /** `eager` loads the currently controlled query on open; typing supplies its\n * own query, so opening from `onInput` skips the duplicate request. */\n const open = (eager = true) => {\n if (props.disabled || popover.open()) return;\n popover.show();\n if (eager) loader.load(query(), true);\n focus(-1);\n };\n const reset = () => {\n loader.cancel();\n setQuery(\"\");\n focus(-1);\n };\n const close = () => {\n popover.hide();\n reset();\n };\n const select = (option: ChoiceOption<string>) => {\n popover.hide();\n props.onSelect({ id: option.value, label: option.label, description: option.description, icon: option.icon });\n reset();\n inputRef?.focus();\n };\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"ArrowDown\" || event.key === \"ArrowUp\") {\n event.preventDefault();\n if (!popover.open()) open();\n else focus(nextEnabledChoiceIndex(options(), focusedIndex(), event.key === \"ArrowDown\" ? 1 : -1));\n } else if (event.key === \"Enter\" && popover.open() && options()[focusedIndex()]) {\n event.preventDefault();\n select(options()[focusedIndex()]!);\n } else if ((event.key === \"Escape\" || event.key === \"Tab\") && popover.open()) {\n // Escape is only ours while the list is open; otherwise it has to reach an\n // enclosing dialog or drawer.\n if (event.key === \"Escape\") event.preventDefault();\n close();\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\">\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={query()}\n placeholder={props.placeholder ?? messages().search}\n disabled={props.disabled}\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-expanded={popover.open()}\n aria-controls={listboxId}\n aria-activedescendant={focusedOption() ? `${listboxId}-${focusedIndex()}` : undefined}\n {...fieldControlAria(meta, props)}\n onFocus={() => open()}\n onClick={() => open()}\n onInput={(event) => {\n setQuery(event.currentTarget.value);\n open(false);\n loader.load(event.currentTarget.value);\n focus(-1);\n }}\n onKeyDown={onKeyDown}\n />\n <Show when={loader.loading()} fallback={<i class=\"ti ti-chevron-down\" aria-hidden=\"true\" />}>\n <i class=\"ti ti-loader-2 k2b-spin\" aria-hidden=\"true\" />\n </Show>\n </div>\n <div ref={popover.setPopover} popover=\"manual\" class=\"k2b-choice-popover\">\n <div class=\"k2b-choice-options\" role=\"listbox\" id={listboxId}>\n <Show when={loader.error()}>\n {(message) => (\n <div class=\"k2b-choice-status\" data-tone=\"danger\">\n <span>{message()}</span>\n <button type=\"button\" onClick={loader.retry}>\n {messages().retry}\n </button>\n </div>\n )}\n </Show>\n <For\n each={loader.error() ? [] : options()}\n fallback={<div class=\"k2b-choice-status\">{query().length >= 2 ? messages().noResultsFound : messages().typeToSearch}</div>}\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-selected={index() === focusedIndex()}\n data-focused={index() === focusedIndex() ? \"true\" : undefined}\n onPointerMove={() => focus(index())}\n onPointerDown={(event) => event.preventDefault()}\n onClick={() => select(option)}\n >\n <Show when={option.icon}>{(icon) => <i class={iconClass(icon())} aria-hidden=\"true\" />}</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 Combobox;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":[],"sources":["inputs/Combobox.tsx"],"sourcesContent":["import { createSignal, For, type JSX, Show } from \"solid-js\";\nimport { createFieldMeta, Field, fieldControlAria } from \"../internal/field\";\nimport { useUiMessages } from \"../intl/messages\";\nimport { type ChoiceOption, createChoiceLoader, createChoicePopover, nextEnabledChoiceIndex } from \"./choice\";\nimport type { FieldProps, MaybeAccessor } from \"./field-contract\";\nimport { resolveMaybeAccessor } from \"./field-contract\";\n\nexport type ComboboxOption = { id: string; label: string; description?: string; icon?: string };\nexport type ComboboxProps = FieldProps & {\n query?: MaybeAccessor<string>;\n onQueryChange?: (query: string) => void;\n placeholder?: string;\n fetchData: (query: string, signal: AbortSignal) => Promise<ComboboxOption[]>;\n onSelect: (option: ComboboxOption) => void;\n debounceMs?: number;\n};\n\nconst iconClass = (icon: string) => (icon.split(/\\s+/).includes(\"ti\") ? icon : `ti ${icon}`);\n\nexport function Combobox(props: ComboboxProps): JSX.Element {\n const messages = useUiMessages();\n const meta = createFieldMeta(props.id);\n const listboxId = `${meta.controlId}-listbox`;\n const [localQuery, setLocalQuery] = createSignal(\"\");\n const query = () => resolveMaybeAccessor(props.query) ?? localQuery();\n const setQuery = (value: string) => {\n setLocalQuery(value);\n props.onQueryChange?.(value);\n };\n const error = () => resolveMaybeAccessor(props.error);\n const [focusedIndex, setFocusedIndex] = createSignal(-1);\n let inputRef: HTMLInputElement | undefined;\n let optionRefs: HTMLButtonElement[] = [];\n const loader = createChoiceLoader(\n () => async (value, signal) => (await props.fetchData(value, signal)).map((option) => ({ ...option, value: option.id })),\n // Cloud debounces at 200ms and then pads the response with a 200ms minimum\n // load time to stop the spinner flickering. The spinner here sits in the\n // chevron slot and stale results stay visible, so there is nothing to pad —\n // 150ms keeps typing responsive without hammering the loader.\n () => props.debounceMs ?? 150,\n );\n const popover = createChoicePopover(() => Boolean(props.disabled));\n const options = loader.options;\n const focusedOption = () => options()[focusedIndex()];\n const focus = (index: number) => {\n setFocusedIndex(index);\n optionRefs[index]?.scrollIntoView({ block: \"nearest\" });\n };\n /** `eager` loads the currently controlled query on open; typing supplies its\n * own query, so opening from `onInput` skips the duplicate request. */\n const open = (eager = true) => {\n if (props.disabled || popover.open()) return;\n popover.show();\n if (eager) loader.load(query(), true);\n focus(-1);\n };\n const reset = () => {\n loader.cancel();\n setQuery(\"\");\n focus(-1);\n };\n const close = () => {\n popover.hide();\n reset();\n };\n const select = (option: ChoiceOption<string>) => {\n popover.hide();\n props.onSelect({ id: option.value, label: option.label, description: option.description, icon: option.icon });\n reset();\n inputRef?.focus();\n };\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"ArrowDown\" || event.key === \"ArrowUp\") {\n event.preventDefault();\n if (!popover.open()) open();\n else focus(nextEnabledChoiceIndex(options(), focusedIndex(), event.key === \"ArrowDown\" ? 1 : -1));\n } else if (event.key === \"Enter\" && popover.open() && options()[focusedIndex()]) {\n event.preventDefault();\n select(options()[focusedIndex()]!);\n } else if ((event.key === \"Escape\" || event.key === \"Tab\") && popover.open()) {\n // Escape is only ours while the list is open; otherwise it has to reach an\n // enclosing dialog or drawer.\n if (event.key === \"Escape\") event.preventDefault();\n close();\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\">\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={query()}\n placeholder={props.placeholder ?? messages().search}\n disabled={props.disabled}\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-expanded={popover.open()}\n aria-controls={listboxId}\n aria-activedescendant={focusedOption() ? `${listboxId}-${focusedIndex()}` : undefined}\n {...fieldControlAria(meta, props)}\n onFocus={() => open()}\n onClick={() => open()}\n onInput={(event) => {\n setQuery(event.currentTarget.value);\n open(false);\n loader.load(event.currentTarget.value);\n focus(-1);\n }}\n onKeyDown={onKeyDown}\n />\n <Show when={loader.loading()} fallback={<i class=\"ti ti-chevron-down\" aria-hidden=\"true\" />}>\n <i class=\"ti ti-loader-2 k2b-spin\" aria-hidden=\"true\" />\n </Show>\n </div>\n <div ref={popover.setPopover} popover=\"manual\" class=\"k2b-choice-popover\">\n <div class=\"k2b-choice-options\" role=\"listbox\" id={listboxId}>\n <Show when={loader.error()}>\n {(message) => (\n <div class=\"k2b-choice-status\" data-tone=\"danger\">\n <span>{message()}</span>\n <button type=\"button\" onClick={loader.retry}>\n {messages().retry}\n </button>\n </div>\n )}\n </Show>\n <For\n each={loader.error() ? [] : options()}\n fallback={<div class=\"k2b-choice-status\">{query().length >= 2 ? messages().noResultsFound : messages().typeToSearch}</div>}\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-selected={index() === focusedIndex()}\n data-focused={index() === focusedIndex() ? \"true\" : undefined}\n onPointerMove={() => focus(index())}\n onPointerDown={(event) => event.preventDefault()}\n onClick={() => select(option)}\n >\n <Show when={option.icon}>{(icon) => <i class={iconClass(icon())} aria-hidden=\"true\" />}</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 Combobox;\n"],"mappings":"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","ignoreList":[]}
|