@k2b/ui 0.1.0-rc.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/LICENSE +661 -0
- package/README.md +343 -0
- package/dist/.build-complete +0 -0
- package/dist/browser/actions/Button.js +236 -0
- package/dist/browser/actions/Button.js.map +1 -0
- package/dist/browser/actions/ContextMenu.js +199 -0
- package/dist/browser/actions/ContextMenu.js.map +1 -0
- package/dist/browser/actions/CopyButton.js +97 -0
- package/dist/browser/actions/CopyButton.js.map +1 -0
- package/dist/browser/actions/Disclosure.js +83 -0
- package/dist/browser/actions/Disclosure.js.map +1 -0
- package/dist/browser/actions/Dropdown.js +669 -0
- package/dist/browser/actions/Dropdown.js.map +1 -0
- package/dist/browser/actions/FilterChip.js +149 -0
- package/dist/browser/actions/FilterChip.js.map +1 -0
- package/dist/browser/actions/RemoveButton.js +47 -0
- package/dist/browser/actions/RemoveButton.js.map +1 -0
- package/dist/browser/actions/SegmentedControl.js +138 -0
- package/dist/browser/actions/SegmentedControl.js.map +1 -0
- package/dist/browser/actions/SplitButton.js +76 -0
- package/dist/browser/actions/SplitButton.js.map +1 -0
- package/dist/browser/actions/SpotlightSearch.js +87 -0
- package/dist/browser/actions/SpotlightSearch.js.map +1 -0
- package/dist/browser/actions/Tabs.js +185 -0
- package/dist/browser/actions/Tabs.js.map +1 -0
- package/dist/browser/actions/Toolbar.js +87 -0
- package/dist/browser/actions/Toolbar.js.map +1 -0
- package/dist/browser/actions/index.js +13 -0
- package/dist/browser/actions/index.js.map +1 -0
- package/dist/browser/chat/ChatComposer.js +760 -0
- package/dist/browser/chat/ChatComposer.js.map +1 -0
- package/dist/browser/chat/ChatPrimitives.js +688 -0
- package/dist/browser/chat/ChatPrimitives.js.map +1 -0
- package/dist/browser/chat/ChatRoot.js +27 -0
- package/dist/browser/chat/ChatRoot.js.map +1 -0
- package/dist/browser/chat/ChatTimeline.js +404 -0
- package/dist/browser/chat/ChatTimeline.js.map +1 -0
- package/dist/browser/chat/chat-behavior.js +53 -0
- package/dist/browser/chat/chat-behavior.js.map +1 -0
- package/dist/browser/chat/index.js +17 -0
- package/dist/browser/chat/index.js.map +1 -0
- package/dist/browser/chat/types.js +2 -0
- package/dist/browser/chat/types.js.map +1 -0
- package/dist/browser/content/Calendar.js +2168 -0
- package/dist/browser/content/Calendar.js.map +1 -0
- package/dist/browser/content/Chart.js +680 -0
- package/dist/browser/content/Chart.js.map +1 -0
- package/dist/browser/content/CodeDisplay.js +104 -0
- package/dist/browser/content/CodeDisplay.js.map +1 -0
- package/dist/browser/content/DataTable.js +724 -0
- package/dist/browser/content/DataTable.js.map +1 -0
- package/dist/browser/content/Docs.js +227 -0
- package/dist/browser/content/Docs.js.map +1 -0
- package/dist/browser/content/FileBrowser.js +462 -0
- package/dist/browser/content/FileBrowser.js.map +1 -0
- package/dist/browser/content/FileTree.js +453 -0
- package/dist/browser/content/FileTree.js.map +1 -0
- package/dist/browser/content/FileView.js +842 -0
- package/dist/browser/content/FileView.js.map +1 -0
- package/dist/browser/content/Lightbox.js +285 -0
- package/dist/browser/content/Lightbox.js.map +1 -0
- package/dist/browser/content/LogEntriesTable.js +139 -0
- package/dist/browser/content/LogEntriesTable.js.map +1 -0
- package/dist/browser/content/MarkdownView.js +138 -0
- package/dist/browser/content/MarkdownView.js.map +1 -0
- package/dist/browser/content/Pagination.js +182 -0
- package/dist/browser/content/Pagination.js.map +1 -0
- package/dist/browser/content/PdfPreview.js +204 -0
- package/dist/browser/content/PdfPreview.js.map +1 -0
- package/dist/browser/content/RangePicker.js +83 -0
- package/dist/browser/content/RangePicker.js.map +1 -0
- package/dist/browser/content/StructuredDataPreview.js +194 -0
- package/dist/browser/content/StructuredDataPreview.js.map +1 -0
- package/dist/browser/content/calendar-event-layout.js +92 -0
- package/dist/browser/content/calendar-event-layout.js.map +1 -0
- package/dist/browser/content/calendar-pointer.js +114 -0
- package/dist/browser/content/calendar-pointer.js.map +1 -0
- package/dist/browser/content/chart-map-viewport.js +33 -0
- package/dist/browser/content/chart-map-viewport.js.map +1 -0
- package/dist/browser/content/chart-state-timeline.js +124 -0
- package/dist/browser/content/chart-state-timeline.js.map +1 -0
- package/dist/browser/content/code-highlight.js +144 -0
- package/dist/browser/content/code-highlight.js.map +1 -0
- package/dist/browser/content/file-tree.js +93 -0
- package/dist/browser/content/file-tree.js.map +1 -0
- package/dist/browser/content/file-view-preview.js +112 -0
- package/dist/browser/content/file-view-preview.js.map +1 -0
- package/dist/browser/content/index.js +16 -0
- package/dist/browser/content/index.js.map +1 -0
- package/dist/browser/feedback/InlineGuidance.js +46 -0
- package/dist/browser/feedback/InlineGuidance.js.map +1 -0
- package/dist/browser/feedback/Tooltip.js +189 -0
- package/dist/browser/feedback/Tooltip.js.map +1 -0
- package/dist/browser/feedback/dialog-core.js +207 -0
- package/dist/browser/feedback/dialog-core.js.map +1 -0
- package/dist/browser/feedback/index.js +6 -0
- package/dist/browser/feedback/index.js.map +1 -0
- package/dist/browser/feedback/prompts.js +991 -0
- package/dist/browser/feedback/prompts.js.map +1 -0
- package/dist/browser/feedback/toast.js +271 -0
- package/dist/browser/feedback/toast.js.map +1 -0
- package/dist/browser/feedback/tooltip-position.js +25 -0
- package/dist/browser/feedback/tooltip-position.js.map +1 -0
- package/dist/browser/index.js +11 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/browser/inputs/AutocompleteEditor.js +610 -0
- package/dist/browser/inputs/AutocompleteEditor.js.map +1 -0
- package/dist/browser/inputs/AutocompleteSelect.js +632 -0
- package/dist/browser/inputs/AutocompleteSelect.js.map +1 -0
- package/dist/browser/inputs/Checkbox.js +137 -0
- package/dist/browser/inputs/Checkbox.js.map +1 -0
- package/dist/browser/inputs/CheckboxCard.js +130 -0
- package/dist/browser/inputs/CheckboxCard.js.map +1 -0
- package/dist/browser/inputs/ChoiceGroups.js +174 -0
- package/dist/browser/inputs/ChoiceGroups.js.map +1 -0
- package/dist/browser/inputs/ChoiceInputs.js +400 -0
- package/dist/browser/inputs/ChoiceInputs.js.map +1 -0
- package/dist/browser/inputs/Combobox.js +274 -0
- package/dist/browser/inputs/Combobox.js.map +1 -0
- package/dist/browser/inputs/DatePicker.js +923 -0
- package/dist/browser/inputs/DatePicker.js.map +1 -0
- package/dist/browser/inputs/FileInputs.js +736 -0
- package/dist/browser/inputs/FileInputs.js.map +1 -0
- package/dist/browser/inputs/MultiSelectInput.js +565 -0
- package/dist/browser/inputs/MultiSelectInput.js.map +1 -0
- package/dist/browser/inputs/NumberInput.js +288 -0
- package/dist/browser/inputs/NumberInput.js.map +1 -0
- package/dist/browser/inputs/Select.js +507 -0
- package/dist/browser/inputs/Select.js.map +1 -0
- package/dist/browser/inputs/SelectChip.js +151 -0
- package/dist/browser/inputs/SelectChip.js.map +1 -0
- package/dist/browser/inputs/SpecialInputs.js +117 -0
- package/dist/browser/inputs/SpecialInputs.js.map +1 -0
- package/dist/browser/inputs/Switch.js +117 -0
- package/dist/browser/inputs/Switch.js.map +1 -0
- package/dist/browser/inputs/TagEditor.js +358 -0
- package/dist/browser/inputs/TagEditor.js.map +1 -0
- package/dist/browser/inputs/TagsInput.js +195 -0
- package/dist/browser/inputs/TagsInput.js.map +1 -0
- package/dist/browser/inputs/TemplateEditor.js +190 -0
- package/dist/browser/inputs/TemplateEditor.js.map +1 -0
- package/dist/browser/inputs/TextInput.js +318 -0
- package/dist/browser/inputs/TextInput.js.map +1 -0
- package/dist/browser/inputs/choice.js +188 -0
- package/dist/browser/inputs/choice.js.map +1 -0
- package/dist/browser/inputs/completion/behaviors.js +108 -0
- package/dist/browser/inputs/completion/behaviors.js.map +1 -0
- package/dist/browser/inputs/completion/engine.js +103 -0
- package/dist/browser/inputs/completion/engine.js.map +1 -0
- package/dist/browser/inputs/completion/index.js +4 -0
- package/dist/browser/inputs/completion/index.js.map +1 -0
- package/dist/browser/inputs/completion/overlay.js +25 -0
- package/dist/browser/inputs/completion/overlay.js.map +1 -0
- package/dist/browser/inputs/date-picker.js +123 -0
- package/dist/browser/inputs/date-picker.js.map +1 -0
- package/dist/browser/inputs/editor-dom.js +26 -0
- package/dist/browser/inputs/editor-dom.js.map +1 -0
- package/dist/browser/inputs/field-contract.js +9 -0
- package/dist/browser/inputs/field-contract.js.map +1 -0
- package/dist/browser/inputs/icon-options.js +46 -0
- package/dist/browser/inputs/icon-options.js.map +1 -0
- package/dist/browser/inputs/image-crop.js +145 -0
- package/dist/browser/inputs/image-crop.js.map +1 -0
- package/dist/browser/inputs/index.js +23 -0
- package/dist/browser/inputs/index.js.map +1 -0
- package/dist/browser/inputs/markdown/MarkdownEditor.js +725 -0
- package/dist/browser/inputs/markdown/MarkdownEditor.js.map +1 -0
- package/dist/browser/inputs/markdown/Toolbar.js +172 -0
- package/dist/browser/inputs/markdown/Toolbar.js.map +1 -0
- package/dist/browser/inputs/markdown/actions.js +140 -0
- package/dist/browser/inputs/markdown/actions.js.map +1 -0
- package/dist/browser/inputs/markdown/active-formats.js +36 -0
- package/dist/browser/inputs/markdown/active-formats.js.map +1 -0
- package/dist/browser/inputs/markdown/behaviors.js +63 -0
- package/dist/browser/inputs/markdown/behaviors.js.map +1 -0
- package/dist/browser/inputs/markdown/code-zone.js +8 -0
- package/dist/browser/inputs/markdown/code-zone.js.map +1 -0
- package/dist/browser/internal/color.js +18 -0
- package/dist/browser/internal/color.js.map +1 -0
- package/dist/browser/internal/field.js +158 -0
- package/dist/browser/internal/field.js.map +1 -0
- package/dist/browser/internal/portal.js +17 -0
- package/dist/browser/internal/portal.js.map +1 -0
- package/dist/browser/intl/Format.js +273 -0
- package/dist/browser/intl/Format.js.map +1 -0
- package/dist/browser/intl/index.js +3 -0
- package/dist/browser/intl/index.js.map +1 -0
- package/dist/browser/intl/locale.js +63 -0
- package/dist/browser/intl/locale.js.map +1 -0
- package/dist/browser/intl/messages.js +753 -0
- package/dist/browser/intl/messages.js.map +1 -0
- package/dist/browser/layout/AppOverview.js +151 -0
- package/dist/browser/layout/AppOverview.js.map +1 -0
- package/dist/browser/layout/AppWorkspace.js +1502 -0
- package/dist/browser/layout/AppWorkspace.js.map +1 -0
- package/dist/browser/layout/DataPanel.js +122 -0
- package/dist/browser/layout/DataPanel.js.map +1 -0
- package/dist/browser/layout/DetailPanel.js +484 -0
- package/dist/browser/layout/DetailPanel.js.map +1 -0
- package/dist/browser/layout/Discussion.js +511 -0
- package/dist/browser/layout/Discussion.js.map +1 -0
- package/dist/browser/layout/FloatingWindow.js +332 -0
- package/dist/browser/layout/FloatingWindow.js.map +1 -0
- package/dist/browser/layout/PanelDialog.js +236 -0
- package/dist/browser/layout/PanelDialog.js.map +1 -0
- package/dist/browser/layout/PanelHeader.js +91 -0
- package/dist/browser/layout/PanelHeader.js.map +1 -0
- package/dist/browser/layout/Panes.js +978 -0
- package/dist/browser/layout/Panes.js.map +1 -0
- package/dist/browser/layout/ScrollArea.js +29 -0
- package/dist/browser/layout/ScrollArea.js.map +1 -0
- package/dist/browser/layout/Settings.js +381 -0
- package/dist/browser/layout/Settings.js.map +1 -0
- package/dist/browser/layout/SettingsCollection.js +212 -0
- package/dist/browser/layout/SettingsCollection.js.map +1 -0
- package/dist/browser/layout/SettingsModal.js +281 -0
- package/dist/browser/layout/SettingsModal.js.map +1 -0
- package/dist/browser/layout/app-workspace-controller.js +419 -0
- package/dist/browser/layout/app-workspace-controller.js.map +1 -0
- package/dist/browser/layout/app-workspace-state.js +125 -0
- package/dist/browser/layout/app-workspace-state.js.map +1 -0
- package/dist/browser/layout/floating-window-geometry.js +15 -0
- package/dist/browser/layout/floating-window-geometry.js.map +1 -0
- package/dist/browser/layout/index.js +17 -0
- package/dist/browser/layout/index.js.map +1 -0
- package/dist/browser/layout/panes-layout.js +436 -0
- package/dist/browser/layout/panes-layout.js.map +1 -0
- package/dist/browser/layout/stable-id.js +17 -0
- package/dist/browser/layout/stable-id.js.map +1 -0
- package/dist/browser/semantics.js +2 -0
- package/dist/browser/semantics.js.map +1 -0
- package/dist/browser/surfaces/Avatar.js +97 -0
- package/dist/browser/surfaces/Avatar.js.map +1 -0
- package/dist/browser/surfaces/DescriptionList.js +66 -0
- package/dist/browser/surfaces/DescriptionList.js.map +1 -0
- package/dist/browser/surfaces/LinkCard.js +40 -0
- package/dist/browser/surfaces/LinkCard.js.map +1 -0
- package/dist/browser/surfaces/NotFoundState.js +85 -0
- package/dist/browser/surfaces/NotFoundState.js.map +1 -0
- package/dist/browser/surfaces/NoticeCard.js +145 -0
- package/dist/browser/surfaces/NoticeCard.js.map +1 -0
- package/dist/browser/surfaces/Paper.js +33 -0
- package/dist/browser/surfaces/Paper.js.map +1 -0
- package/dist/browser/surfaces/Placeholder.js +90 -0
- package/dist/browser/surfaces/Placeholder.js.map +1 -0
- package/dist/browser/surfaces/ProgressBar.js +58 -0
- package/dist/browser/surfaces/ProgressBar.js.map +1 -0
- package/dist/browser/surfaces/StatCell.js +172 -0
- package/dist/browser/surfaces/StatCell.js.map +1 -0
- package/dist/browser/surfaces/StatGrid.js +80 -0
- package/dist/browser/surfaces/StatGrid.js.map +1 -0
- package/dist/browser/surfaces/StatusBadge.js +70 -0
- package/dist/browser/surfaces/StatusBadge.js.map +1 -0
- package/dist/browser/surfaces/Tag.js +94 -0
- package/dist/browser/surfaces/Tag.js.map +1 -0
- package/dist/browser/surfaces/index.js +13 -0
- package/dist/browser/surfaces/index.js.map +1 -0
- package/dist/browser/widgets/Widget.js +89 -0
- package/dist/browser/widgets/Widget.js.map +1 -0
- package/dist/browser/widgets/WidgetHero.js +47 -0
- package/dist/browser/widgets/WidgetHero.js.map +1 -0
- package/dist/browser/widgets/WidgetList.js +125 -0
- package/dist/browser/widgets/WidgetList.js.map +1 -0
- package/dist/browser/widgets/WidgetPills.js +78 -0
- package/dist/browser/widgets/WidgetPills.js.map +1 -0
- package/dist/browser/widgets/WidgetStat.js +114 -0
- package/dist/browser/widgets/WidgetStat.js.map +1 -0
- package/dist/browser/widgets/WidgetStatus.js +54 -0
- package/dist/browser/widgets/WidgetStatus.js.map +1 -0
- package/dist/browser/widgets/index.js +7 -0
- package/dist/browser/widgets/index.js.map +1 -0
- package/dist/global.css +3 -0
- package/dist/licenses/ibm-plex-mono.txt +93 -0
- package/dist/licenses/ibm-plex-sans.txt +93 -0
- package/dist/licenses/tabler-icons.txt +21 -0
- package/dist/plex.css +1 -0
- package/dist/ssr/actions/Button.js +203 -0
- package/dist/ssr/actions/Button.js.map +1 -0
- package/dist/ssr/actions/ContextMenu.js +128 -0
- package/dist/ssr/actions/ContextMenu.js.map +1 -0
- package/dist/ssr/actions/CopyButton.js +79 -0
- package/dist/ssr/actions/CopyButton.js.map +1 -0
- package/dist/ssr/actions/Disclosure.js +26 -0
- package/dist/ssr/actions/Disclosure.js.map +1 -0
- package/dist/ssr/actions/Dropdown.js +443 -0
- package/dist/ssr/actions/Dropdown.js.map +1 -0
- package/dist/ssr/actions/FilterChip.js +132 -0
- package/dist/ssr/actions/FilterChip.js.map +1 -0
- package/dist/ssr/actions/RemoveButton.js +45 -0
- package/dist/ssr/actions/RemoveButton.js.map +1 -0
- package/dist/ssr/actions/SegmentedControl.js +57 -0
- package/dist/ssr/actions/SegmentedControl.js.map +1 -0
- package/dist/ssr/actions/SplitButton.js +74 -0
- package/dist/ssr/actions/SplitButton.js.map +1 -0
- package/dist/ssr/actions/SpotlightSearch.js +38 -0
- package/dist/ssr/actions/SpotlightSearch.js.map +1 -0
- package/dist/ssr/actions/Tabs.js +91 -0
- package/dist/ssr/actions/Tabs.js.map +1 -0
- package/dist/ssr/actions/Toolbar.js +33 -0
- package/dist/ssr/actions/Toolbar.js.map +1 -0
- package/dist/ssr/actions/index.js +13 -0
- package/dist/ssr/actions/index.js.map +1 -0
- package/dist/ssr/chat/ChatComposer.js +392 -0
- package/dist/ssr/chat/ChatComposer.js.map +1 -0
- package/dist/ssr/chat/ChatPrimitives.js +377 -0
- package/dist/ssr/chat/ChatPrimitives.js.map +1 -0
- package/dist/ssr/chat/ChatRoot.js +10 -0
- package/dist/ssr/chat/ChatRoot.js.map +1 -0
- package/dist/ssr/chat/ChatTimeline.js +301 -0
- package/dist/ssr/chat/ChatTimeline.js.map +1 -0
- package/dist/ssr/chat/chat-behavior.js +53 -0
- package/dist/ssr/chat/chat-behavior.js.map +1 -0
- package/dist/ssr/chat/index.js +17 -0
- package/dist/ssr/chat/index.js.map +1 -0
- package/dist/ssr/chat/types.js +2 -0
- package/dist/ssr/chat/types.js.map +1 -0
- package/dist/ssr/content/Calendar.js +1542 -0
- package/dist/ssr/content/Calendar.js.map +1 -0
- package/dist/ssr/content/Chart.js +552 -0
- package/dist/ssr/content/Chart.js.map +1 -0
- package/dist/ssr/content/CodeDisplay.js +55 -0
- package/dist/ssr/content/CodeDisplay.js.map +1 -0
- package/dist/ssr/content/DataTable.js +470 -0
- package/dist/ssr/content/DataTable.js.map +1 -0
- package/dist/ssr/content/Docs.js +108 -0
- package/dist/ssr/content/Docs.js.map +1 -0
- package/dist/ssr/content/FileBrowser.js +422 -0
- package/dist/ssr/content/FileBrowser.js.map +1 -0
- package/dist/ssr/content/FileTree.js +299 -0
- package/dist/ssr/content/FileTree.js.map +1 -0
- package/dist/ssr/content/FileView.js +612 -0
- package/dist/ssr/content/FileView.js.map +1 -0
- package/dist/ssr/content/Lightbox.js +164 -0
- package/dist/ssr/content/Lightbox.js.map +1 -0
- package/dist/ssr/content/LogEntriesTable.js +106 -0
- package/dist/ssr/content/LogEntriesTable.js.map +1 -0
- package/dist/ssr/content/MarkdownView.js +119 -0
- package/dist/ssr/content/MarkdownView.js.map +1 -0
- package/dist/ssr/content/Pagination.js +141 -0
- package/dist/ssr/content/Pagination.js.map +1 -0
- package/dist/ssr/content/PdfPreview.js +126 -0
- package/dist/ssr/content/PdfPreview.js.map +1 -0
- package/dist/ssr/content/RangePicker.js +35 -0
- package/dist/ssr/content/RangePicker.js.map +1 -0
- package/dist/ssr/content/StructuredDataPreview.js +127 -0
- package/dist/ssr/content/StructuredDataPreview.js.map +1 -0
- package/dist/ssr/content/calendar-event-layout.js +92 -0
- package/dist/ssr/content/calendar-event-layout.js.map +1 -0
- package/dist/ssr/content/calendar-pointer.js +114 -0
- package/dist/ssr/content/calendar-pointer.js.map +1 -0
- package/dist/ssr/content/chart-map-viewport.js +33 -0
- package/dist/ssr/content/chart-map-viewport.js.map +1 -0
- package/dist/ssr/content/chart-state-timeline.js +124 -0
- package/dist/ssr/content/chart-state-timeline.js.map +1 -0
- package/dist/ssr/content/code-highlight.js +144 -0
- package/dist/ssr/content/code-highlight.js.map +1 -0
- package/dist/ssr/content/file-tree.js +93 -0
- package/dist/ssr/content/file-tree.js.map +1 -0
- package/dist/ssr/content/file-view-preview.js +112 -0
- package/dist/ssr/content/file-view-preview.js.map +1 -0
- package/dist/ssr/content/index.js +16 -0
- package/dist/ssr/content/index.js.map +1 -0
- package/dist/ssr/feedback/InlineGuidance.js +26 -0
- package/dist/ssr/feedback/InlineGuidance.js.map +1 -0
- package/dist/ssr/feedback/Tooltip.js +156 -0
- package/dist/ssr/feedback/Tooltip.js.map +1 -0
- package/dist/ssr/feedback/dialog-core.js +207 -0
- package/dist/ssr/feedback/dialog-core.js.map +1 -0
- package/dist/ssr/feedback/index.js +6 -0
- package/dist/ssr/feedback/index.js.map +1 -0
- package/dist/ssr/feedback/prompts.js +703 -0
- package/dist/ssr/feedback/prompts.js.map +1 -0
- package/dist/ssr/feedback/toast.js +271 -0
- package/dist/ssr/feedback/toast.js.map +1 -0
- package/dist/ssr/feedback/tooltip-position.js +25 -0
- package/dist/ssr/feedback/tooltip-position.js.map +1 -0
- package/dist/ssr/index.js +11 -0
- package/dist/ssr/index.js.map +1 -0
- package/dist/ssr/inputs/AutocompleteEditor.js +463 -0
- package/dist/ssr/inputs/AutocompleteEditor.js.map +1 -0
- package/dist/ssr/inputs/AutocompleteSelect.js +420 -0
- package/dist/ssr/inputs/AutocompleteSelect.js.map +1 -0
- package/dist/ssr/inputs/Checkbox.js +75 -0
- package/dist/ssr/inputs/Checkbox.js.map +1 -0
- package/dist/ssr/inputs/CheckboxCard.js +69 -0
- package/dist/ssr/inputs/CheckboxCard.js.map +1 -0
- package/dist/ssr/inputs/ChoiceGroups.js +101 -0
- package/dist/ssr/inputs/ChoiceGroups.js.map +1 -0
- package/dist/ssr/inputs/ChoiceInputs.js +250 -0
- package/dist/ssr/inputs/ChoiceInputs.js.map +1 -0
- package/dist/ssr/inputs/Combobox.js +177 -0
- package/dist/ssr/inputs/Combobox.js.map +1 -0
- package/dist/ssr/inputs/DatePicker.js +629 -0
- package/dist/ssr/inputs/DatePicker.js.map +1 -0
- package/dist/ssr/inputs/FileInputs.js +543 -0
- package/dist/ssr/inputs/FileInputs.js.map +1 -0
- package/dist/ssr/inputs/MultiSelectInput.js +347 -0
- package/dist/ssr/inputs/MultiSelectInput.js.map +1 -0
- package/dist/ssr/inputs/NumberInput.js +177 -0
- package/dist/ssr/inputs/NumberInput.js.map +1 -0
- package/dist/ssr/inputs/Select.js +308 -0
- package/dist/ssr/inputs/Select.js.map +1 -0
- package/dist/ssr/inputs/SelectChip.js +129 -0
- package/dist/ssr/inputs/SelectChip.js.map +1 -0
- package/dist/ssr/inputs/SpecialInputs.js +116 -0
- package/dist/ssr/inputs/SpecialInputs.js.map +1 -0
- package/dist/ssr/inputs/Switch.js +62 -0
- package/dist/ssr/inputs/Switch.js.map +1 -0
- package/dist/ssr/inputs/TagEditor.js +280 -0
- package/dist/ssr/inputs/TagEditor.js.map +1 -0
- package/dist/ssr/inputs/TagsInput.js +122 -0
- package/dist/ssr/inputs/TagsInput.js.map +1 -0
- package/dist/ssr/inputs/TemplateEditor.js +164 -0
- package/dist/ssr/inputs/TemplateEditor.js.map +1 -0
- package/dist/ssr/inputs/TextInput.js +211 -0
- package/dist/ssr/inputs/TextInput.js.map +1 -0
- package/dist/ssr/inputs/choice.js +188 -0
- package/dist/ssr/inputs/choice.js.map +1 -0
- package/dist/ssr/inputs/completion/behaviors.js +108 -0
- package/dist/ssr/inputs/completion/behaviors.js.map +1 -0
- package/dist/ssr/inputs/completion/engine.js +103 -0
- package/dist/ssr/inputs/completion/engine.js.map +1 -0
- package/dist/ssr/inputs/completion/index.js +4 -0
- package/dist/ssr/inputs/completion/index.js.map +1 -0
- package/dist/ssr/inputs/completion/overlay.js +25 -0
- package/dist/ssr/inputs/completion/overlay.js.map +1 -0
- package/dist/ssr/inputs/date-picker.js +123 -0
- package/dist/ssr/inputs/date-picker.js.map +1 -0
- package/dist/ssr/inputs/editor-dom.js +26 -0
- package/dist/ssr/inputs/editor-dom.js.map +1 -0
- package/dist/ssr/inputs/field-contract.js +9 -0
- package/dist/ssr/inputs/field-contract.js.map +1 -0
- package/dist/ssr/inputs/icon-options.js +46 -0
- package/dist/ssr/inputs/icon-options.js.map +1 -0
- package/dist/ssr/inputs/image-crop.js +145 -0
- package/dist/ssr/inputs/image-crop.js.map +1 -0
- package/dist/ssr/inputs/index.js +23 -0
- package/dist/ssr/inputs/index.js.map +1 -0
- package/dist/ssr/inputs/markdown/MarkdownEditor.js +516 -0
- package/dist/ssr/inputs/markdown/MarkdownEditor.js.map +1 -0
- package/dist/ssr/inputs/markdown/Toolbar.js +115 -0
- package/dist/ssr/inputs/markdown/Toolbar.js.map +1 -0
- package/dist/ssr/inputs/markdown/actions.js +140 -0
- package/dist/ssr/inputs/markdown/actions.js.map +1 -0
- package/dist/ssr/inputs/markdown/active-formats.js +36 -0
- package/dist/ssr/inputs/markdown/active-formats.js.map +1 -0
- package/dist/ssr/inputs/markdown/behaviors.js +63 -0
- package/dist/ssr/inputs/markdown/behaviors.js.map +1 -0
- package/dist/ssr/inputs/markdown/code-zone.js +8 -0
- package/dist/ssr/inputs/markdown/code-zone.js.map +1 -0
- package/dist/ssr/internal/color.js +18 -0
- package/dist/ssr/internal/color.js.map +1 -0
- package/dist/ssr/internal/field.js +90 -0
- package/dist/ssr/internal/field.js.map +1 -0
- package/dist/ssr/internal/portal.js +17 -0
- package/dist/ssr/internal/portal.js.map +1 -0
- package/dist/ssr/intl/Format.js +192 -0
- package/dist/ssr/intl/Format.js.map +1 -0
- package/dist/ssr/intl/index.js +3 -0
- package/dist/ssr/intl/index.js.map +1 -0
- package/dist/ssr/intl/locale.js +63 -0
- package/dist/ssr/intl/locale.js.map +1 -0
- package/dist/ssr/intl/messages.js +753 -0
- package/dist/ssr/intl/messages.js.map +1 -0
- package/dist/ssr/layout/AppOverview.js +85 -0
- package/dist/ssr/layout/AppOverview.js.map +1 -0
- package/dist/ssr/layout/AppWorkspace.js +976 -0
- package/dist/ssr/layout/AppWorkspace.js.map +1 -0
- package/dist/ssr/layout/DataPanel.js +101 -0
- package/dist/ssr/layout/DataPanel.js.map +1 -0
- package/dist/ssr/layout/DetailPanel.js +284 -0
- package/dist/ssr/layout/DetailPanel.js.map +1 -0
- package/dist/ssr/layout/Discussion.js +319 -0
- package/dist/ssr/layout/Discussion.js.map +1 -0
- package/dist/ssr/layout/FloatingWindow.js +259 -0
- package/dist/ssr/layout/FloatingWindow.js.map +1 -0
- package/dist/ssr/layout/PanelDialog.js +136 -0
- package/dist/ssr/layout/PanelDialog.js.map +1 -0
- package/dist/ssr/layout/PanelHeader.js +45 -0
- package/dist/ssr/layout/PanelHeader.js.map +1 -0
- package/dist/ssr/layout/Panes.js +678 -0
- package/dist/ssr/layout/Panes.js.map +1 -0
- package/dist/ssr/layout/ScrollArea.js +18 -0
- package/dist/ssr/layout/ScrollArea.js.map +1 -0
- package/dist/ssr/layout/Settings.js +219 -0
- package/dist/ssr/layout/Settings.js.map +1 -0
- package/dist/ssr/layout/SettingsCollection.js +150 -0
- package/dist/ssr/layout/SettingsCollection.js.map +1 -0
- package/dist/ssr/layout/SettingsModal.js +156 -0
- package/dist/ssr/layout/SettingsModal.js.map +1 -0
- package/dist/ssr/layout/app-workspace-controller.js +419 -0
- package/dist/ssr/layout/app-workspace-controller.js.map +1 -0
- package/dist/ssr/layout/app-workspace-state.js +125 -0
- package/dist/ssr/layout/app-workspace-state.js.map +1 -0
- package/dist/ssr/layout/floating-window-geometry.js +15 -0
- package/dist/ssr/layout/floating-window-geometry.js.map +1 -0
- package/dist/ssr/layout/index.js +17 -0
- package/dist/ssr/layout/index.js.map +1 -0
- package/dist/ssr/layout/panes-layout.js +436 -0
- package/dist/ssr/layout/panes-layout.js.map +1 -0
- package/dist/ssr/layout/stable-id.js +17 -0
- package/dist/ssr/layout/stable-id.js.map +1 -0
- package/dist/ssr/semantics.js +2 -0
- package/dist/ssr/semantics.js.map +1 -0
- package/dist/ssr/surfaces/Avatar.js +43 -0
- package/dist/ssr/surfaces/Avatar.js.map +1 -0
- package/dist/ssr/surfaces/DescriptionList.js +25 -0
- package/dist/ssr/surfaces/DescriptionList.js.map +1 -0
- package/dist/ssr/surfaces/LinkCard.js +25 -0
- package/dist/ssr/surfaces/LinkCard.js.map +1 -0
- package/dist/ssr/surfaces/NotFoundState.js +38 -0
- package/dist/ssr/surfaces/NotFoundState.js.map +1 -0
- package/dist/ssr/surfaces/NoticeCard.js +83 -0
- package/dist/ssr/surfaces/NoticeCard.js.map +1 -0
- package/dist/ssr/surfaces/Paper.js +32 -0
- package/dist/ssr/surfaces/Paper.js.map +1 -0
- package/dist/ssr/surfaces/Placeholder.js +76 -0
- package/dist/ssr/surfaces/Placeholder.js.map +1 -0
- package/dist/ssr/surfaces/ProgressBar.js +13 -0
- package/dist/ssr/surfaces/ProgressBar.js.map +1 -0
- package/dist/ssr/surfaces/StatCell.js +80 -0
- package/dist/ssr/surfaces/StatCell.js.map +1 -0
- package/dist/ssr/surfaces/StatGrid.js +62 -0
- package/dist/ssr/surfaces/StatGrid.js.map +1 -0
- package/dist/ssr/surfaces/StatusBadge.js +38 -0
- package/dist/ssr/surfaces/StatusBadge.js.map +1 -0
- package/dist/ssr/surfaces/Tag.js +32 -0
- package/dist/ssr/surfaces/Tag.js.map +1 -0
- package/dist/ssr/surfaces/index.js +13 -0
- package/dist/ssr/surfaces/index.js.map +1 -0
- package/dist/ssr/widgets/Widget.js +54 -0
- package/dist/ssr/widgets/Widget.js.map +1 -0
- package/dist/ssr/widgets/WidgetHero.js +23 -0
- package/dist/ssr/widgets/WidgetHero.js.map +1 -0
- package/dist/ssr/widgets/WidgetList.js +73 -0
- package/dist/ssr/widgets/WidgetList.js.map +1 -0
- package/dist/ssr/widgets/WidgetPills.js +40 -0
- package/dist/ssr/widgets/WidgetPills.js.map +1 -0
- package/dist/ssr/widgets/WidgetStat.js +45 -0
- package/dist/ssr/widgets/WidgetStat.js.map +1 -0
- package/dist/ssr/widgets/WidgetStatus.js +23 -0
- package/dist/ssr/widgets/WidgetStatus.js.map +1 -0
- package/dist/ssr/widgets/index.js +7 -0
- package/dist/ssr/widgets/index.js.map +1 -0
- package/dist/styles.css +1 -0
- package/dist/tabler-icons-q30jt7jk.woff2 +0 -0
- package/dist/tabler.css +4 -0
- package/package.json +77 -0
|
@@ -0,0 +1,420 @@
|
|
|
1
|
+
import { ssrStyleProperty as _$ssrStyleProperty } from "solid-js/web";
|
|
2
|
+
import { createComponent as _$createComponent } from "solid-js/web";
|
|
3
|
+
import { ssr as _$ssr } from "solid-js/web";
|
|
4
|
+
import { ssrElement as _$ssrElement } from "solid-js/web";
|
|
5
|
+
import { mergeProps as _$mergeProps } from "solid-js/web";
|
|
6
|
+
import { ssrAttribute as _$ssrAttribute } from "solid-js/web";
|
|
7
|
+
import { escape as _$escape } from "solid-js/web";
|
|
8
|
+
var _tmpl$ = ["<button type=\"button\" class=\"k2b-choice-control__clear k2b-input-clear-action\" tabindex=\"-1\"", "><i class=\"ti ti-x\" aria-hidden=\"true\"></i></button>"],
|
|
9
|
+
_tmpl$2 = "<i class=\"ti ti-loader-2 k2b-spin\" aria-hidden=\"true\"></i>",
|
|
10
|
+
_tmpl$3 = ["<div class=\"k2b-choice-toolbar\">", "</div>"],
|
|
11
|
+
_tmpl$4 = ["<div class=\"k2b-choice-status\"><i class=\"ti ti-loader-2 k2b-spin\" aria-hidden=\"true\"></i><span>", "</span></div>"],
|
|
12
|
+
_tmpl$5 = ["<div class=\"k2b-combobox\"", "><div class=\"k2b-combobox__input\"", "><i class=\"ti ti-search\" aria-hidden=\"true\"></i>", "", "", "</div>", "<span class=\"k2b-sr-only\" role=\"status\" aria-live=\"polite\" aria-atomic=\"true\">", "</span><div popover=\"manual\" class=\"k2b-choice-popover\" role=\"group\"", ">", "<div", " class=\"k2b-choice-options\" role=\"listbox\">", "", "", "</div></div></div>"],
|
|
13
|
+
_tmpl$6 = "<i class=\"ti ti-check\" aria-hidden=\"true\"></i>",
|
|
14
|
+
_tmpl$7 = "<i class=\"ti ti-chevron-down\" aria-hidden=\"true\"></i>",
|
|
15
|
+
_tmpl$8 = ["<input type=\"hidden\"", ">"],
|
|
16
|
+
_tmpl$9 = ["<div class=\"k2b-choice-status\" data-tone=\"danger\"><span>", "</span><button type=\"button\">Retry</button></div>"],
|
|
17
|
+
_tmpl$0 = ["<div class=\"k2b-choice-status\">", "</div>"],
|
|
18
|
+
_tmpl$1 = ["<button type=\"button\" id=\"", "\" class=\"k2b-choice-option\" role=\"option\"", "", ">", "<span><strong>", "</strong>", "</span></button>"],
|
|
19
|
+
_tmpl$10 = ["<i", " aria-hidden=\"true\"></i>"],
|
|
20
|
+
_tmpl$11 = ["<span class=\"k2b-choice-dot\" style=\"", "\" aria-hidden=\"true\"></span>"],
|
|
21
|
+
_tmpl$12 = ["<small>", "</small>"];
|
|
22
|
+
import { createEffect, createMemo, createSignal, For, Show } from "solid-js";
|
|
23
|
+
import { createFieldMeta, Field, fieldControlAria } from "../internal/field";
|
|
24
|
+
import { useUiMessages } from "../intl/messages";
|
|
25
|
+
import { ChoiceGroups } from "./ChoiceGroups";
|
|
26
|
+
import { createChoiceLoader, createChoicePopover, nextEnabledChoiceIndex } from "./choice";
|
|
27
|
+
import { commitFieldValue, resolveMaybeAccessor } from "./field-contract";
|
|
28
|
+
const errorMessage = (error, fallback) => error instanceof Error ? error.message : fallback;
|
|
29
|
+
export function AutocompleteSelect(props) {
|
|
30
|
+
const messages = useUiMessages();
|
|
31
|
+
const meta = createFieldMeta(props.id);
|
|
32
|
+
const listboxId = `${meta.controlId}-listbox`;
|
|
33
|
+
const [cache, setCache] = createSignal({});
|
|
34
|
+
const value = () => resolveMaybeAccessor(props.value) ?? null;
|
|
35
|
+
const selected = createMemo(() => {
|
|
36
|
+
const current = value();
|
|
37
|
+
if (current === null) return undefined;
|
|
38
|
+
return cache()[current] ?? (props.selectedOption?.value === current ? props.selectedOption : undefined) ?? {
|
|
39
|
+
value: current,
|
|
40
|
+
label: current
|
|
41
|
+
};
|
|
42
|
+
});
|
|
43
|
+
const formatValue = option => option ? props.formatValue?.(option) ?? option.label : "";
|
|
44
|
+
const [display, setDisplay] = createSignal(formatValue(selected()));
|
|
45
|
+
const [query, setQuery] = createSignal("");
|
|
46
|
+
const [focused, setFocused] = createSignal(false);
|
|
47
|
+
const [editing, setEditing] = createSignal(false);
|
|
48
|
+
const [resolvedQuery, setResolvedQuery] = createSignal();
|
|
49
|
+
const [match, setMatch] = createSignal();
|
|
50
|
+
const [focusedIndex, setFocusedIndex] = createSignal(-1);
|
|
51
|
+
const [selectedGroup, setSelectedGroup] = createSignal(props.defaultGroup ?? null);
|
|
52
|
+
const [explicitOption, setExplicitOption] = createSignal(false);
|
|
53
|
+
const [internalError, setInternalError] = createSignal();
|
|
54
|
+
const externalError = () => resolveMaybeAccessor(props.error);
|
|
55
|
+
const error = () => externalError() ?? internalError();
|
|
56
|
+
const hasClearAction = () => Boolean(props.clearable && value() !== null && !props.disabled);
|
|
57
|
+
let inputRef;
|
|
58
|
+
let popoverRef;
|
|
59
|
+
let optionRefs = [];
|
|
60
|
+
let pointerFocus = false;
|
|
61
|
+
let pendingCommitQuery;
|
|
62
|
+
let snapshot = {
|
|
63
|
+
value: value(),
|
|
64
|
+
option: selected(),
|
|
65
|
+
display: formatValue(selected())
|
|
66
|
+
};
|
|
67
|
+
const popover = createChoicePopover(() => Boolean(props.disabled));
|
|
68
|
+
const activeGroup = createMemo(() => {
|
|
69
|
+
const current = selectedGroup();
|
|
70
|
+
return current && props.groups?.some(group => group.value === current) ? current : null;
|
|
71
|
+
});
|
|
72
|
+
const groupChoices = createMemo(() => [{
|
|
73
|
+
value: null,
|
|
74
|
+
label: props.allGroupLabel ?? messages().all
|
|
75
|
+
}, ...(props.groups ?? [])]);
|
|
76
|
+
const remember = (options, authoritative) => {
|
|
77
|
+
const next = {
|
|
78
|
+
...cache()
|
|
79
|
+
};
|
|
80
|
+
for (const option of options) next[option.value] = option;
|
|
81
|
+
if (authoritative) next[authoritative.value] = authoritative;
|
|
82
|
+
setCache(next);
|
|
83
|
+
};
|
|
84
|
+
const completeInput = (typed, authoritative) => {
|
|
85
|
+
if (!inputRef || !focused() || !editing() || !authoritative || typed.length === 0) return;
|
|
86
|
+
const lower = typed.toLocaleLowerCase();
|
|
87
|
+
const completion = [authoritative.value, authoritative.label].find(candidate => candidate.toLocaleLowerCase().startsWith(lower));
|
|
88
|
+
if (!completion || completion.length <= typed.length) return;
|
|
89
|
+
setDisplay(completion);
|
|
90
|
+
queueMicrotask(() => {
|
|
91
|
+
if (!inputRef || document.activeElement !== inputRef || query() !== typed) return;
|
|
92
|
+
inputRef.setSelectionRange(typed.length, completion.length);
|
|
93
|
+
});
|
|
94
|
+
};
|
|
95
|
+
const mergedOptions = result => result.match && !result.options.some(option => option.value === result.match.value) ? [result.match, ...result.options] : result.options;
|
|
96
|
+
const commit = option => {
|
|
97
|
+
if (option.disabled) return;
|
|
98
|
+
pendingCommitQuery = undefined;
|
|
99
|
+
loader.cancel();
|
|
100
|
+
popover.hide();
|
|
101
|
+
remember([], option);
|
|
102
|
+
setDisplay(formatValue(option));
|
|
103
|
+
setQuery("");
|
|
104
|
+
setResolvedQuery(undefined);
|
|
105
|
+
setMatch(undefined);
|
|
106
|
+
setFocusedIndex(-1);
|
|
107
|
+
setExplicitOption(false);
|
|
108
|
+
setInternalError(undefined);
|
|
109
|
+
snapshot = {
|
|
110
|
+
value: option.value,
|
|
111
|
+
option,
|
|
112
|
+
display: formatValue(option)
|
|
113
|
+
};
|
|
114
|
+
commitFieldValue(props, option.value);
|
|
115
|
+
setEditing(false);
|
|
116
|
+
};
|
|
117
|
+
const invalidate = (message = props.noMatchText ?? messages().noMatchingOption) => {
|
|
118
|
+
pendingCommitQuery = undefined;
|
|
119
|
+
setInternalError(message);
|
|
120
|
+
popover.hide();
|
|
121
|
+
};
|
|
122
|
+
const loader = createChoiceLoader(() => async (typed, signal) => {
|
|
123
|
+
let result;
|
|
124
|
+
try {
|
|
125
|
+
result = await props.search(typed, signal, activeGroup());
|
|
126
|
+
} catch (reason) {
|
|
127
|
+
if (!signal.aborted) {
|
|
128
|
+
setResolvedQuery(typed);
|
|
129
|
+
if (pendingCommitQuery === typed) invalidate(errorMessage(reason, messages().optionsCouldNotLoad));
|
|
130
|
+
}
|
|
131
|
+
throw reason;
|
|
132
|
+
}
|
|
133
|
+
if (signal.aborted) return [];
|
|
134
|
+
const options = mergedOptions(result);
|
|
135
|
+
const authoritative = result.match?.disabled ? undefined : result.match;
|
|
136
|
+
remember(options, authoritative);
|
|
137
|
+
setResolvedQuery(typed);
|
|
138
|
+
setMatch(authoritative);
|
|
139
|
+
setExplicitOption(false);
|
|
140
|
+
setFocusedIndex(authoritative ? options.findIndex(option => option.value === authoritative.value) : -1);
|
|
141
|
+
completeInput(typed, authoritative);
|
|
142
|
+
if (pendingCommitQuery === typed) {
|
|
143
|
+
if (authoritative) commit(authoritative);else invalidate();
|
|
144
|
+
}
|
|
145
|
+
return options;
|
|
146
|
+
}, () => props.debounceMs ?? 150);
|
|
147
|
+
const options = () => resolvedQuery() === query() ? loader.options() : [];
|
|
148
|
+
const loadError = () => resolvedQuery() === query() ? loader.error() : undefined;
|
|
149
|
+
const focusedOption = () => options()[focusedIndex()];
|
|
150
|
+
const focusOption = (index, explicit = true) => {
|
|
151
|
+
setFocusedIndex(index);
|
|
152
|
+
setExplicitOption(explicit);
|
|
153
|
+
optionRefs[index]?.scrollIntoView({
|
|
154
|
+
block: "nearest"
|
|
155
|
+
});
|
|
156
|
+
};
|
|
157
|
+
const move = direction => focusOption(nextEnabledChoiceIndex(options(), focusedIndex(), direction));
|
|
158
|
+
const startSearch = (typed, immediate = false) => {
|
|
159
|
+
setInternalError(undefined);
|
|
160
|
+
setResolvedQuery(undefined);
|
|
161
|
+
setMatch(undefined);
|
|
162
|
+
setFocusedIndex(-1);
|
|
163
|
+
setExplicitOption(false);
|
|
164
|
+
popover.show();
|
|
165
|
+
loader.load(typed, immediate);
|
|
166
|
+
};
|
|
167
|
+
const chooseGroup = group => {
|
|
168
|
+
if (group === activeGroup()) return;
|
|
169
|
+
setSelectedGroup(group);
|
|
170
|
+
startSearch(editing() ? query() : "", true);
|
|
171
|
+
};
|
|
172
|
+
const selectedForCommit = () => {
|
|
173
|
+
if (resolvedQuery() !== query()) return undefined;
|
|
174
|
+
if (explicitOption()) return focusedOption();
|
|
175
|
+
return match();
|
|
176
|
+
};
|
|
177
|
+
const requestCommit = () => {
|
|
178
|
+
if (!editing()) return;
|
|
179
|
+
const option = selectedForCommit();
|
|
180
|
+
if (option) {
|
|
181
|
+
commit(option);
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
if (query() === "" && props.clearable && !props.required) {
|
|
185
|
+
pendingCommitQuery = undefined;
|
|
186
|
+
loader.cancel();
|
|
187
|
+
popover.hide();
|
|
188
|
+
snapshot = {
|
|
189
|
+
value: null,
|
|
190
|
+
option: undefined,
|
|
191
|
+
display: ""
|
|
192
|
+
};
|
|
193
|
+
setDisplay("");
|
|
194
|
+
setQuery("");
|
|
195
|
+
setEditing(false);
|
|
196
|
+
setResolvedQuery(undefined);
|
|
197
|
+
setMatch(undefined);
|
|
198
|
+
setFocusedIndex(-1);
|
|
199
|
+
setExplicitOption(false);
|
|
200
|
+
setInternalError(undefined);
|
|
201
|
+
commitFieldValue(props, null);
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
204
|
+
if (pendingCommitQuery === query()) return;
|
|
205
|
+
pendingCommitQuery = query();
|
|
206
|
+
if (resolvedQuery() === query() && !loader.loading()) invalidate();else loader.load(query(), true);
|
|
207
|
+
};
|
|
208
|
+
const restore = () => {
|
|
209
|
+
const target = snapshot;
|
|
210
|
+
pendingCommitQuery = undefined;
|
|
211
|
+
loader.cancel();
|
|
212
|
+
popover.hide();
|
|
213
|
+
remember(target.option ? [target.option] : []);
|
|
214
|
+
setDisplay(target.display);
|
|
215
|
+
setQuery("");
|
|
216
|
+
setResolvedQuery(undefined);
|
|
217
|
+
setMatch(undefined);
|
|
218
|
+
setFocusedIndex(-1);
|
|
219
|
+
setExplicitOption(false);
|
|
220
|
+
setInternalError(undefined);
|
|
221
|
+
if (value() !== target.value) props.onValueChange?.(target.value);
|
|
222
|
+
setEditing(false);
|
|
223
|
+
queueMicrotask(() => inputRef?.select());
|
|
224
|
+
};
|
|
225
|
+
createEffect(() => {
|
|
226
|
+
if (editing()) return;
|
|
227
|
+
const option = selected();
|
|
228
|
+
setDisplay(formatValue(option));
|
|
229
|
+
snapshot = {
|
|
230
|
+
value: value(),
|
|
231
|
+
option,
|
|
232
|
+
display: formatValue(option)
|
|
233
|
+
};
|
|
234
|
+
});
|
|
235
|
+
createEffect(() => {
|
|
236
|
+
if (!inputRef) return;
|
|
237
|
+
const message = internalError();
|
|
238
|
+
inputRef.setCustomValidity(message ?? (editing() ? messages().selectMatchingOption : ""));
|
|
239
|
+
});
|
|
240
|
+
const onKeyDown = event => {
|
|
241
|
+
if (event.isComposing) return;
|
|
242
|
+
if (event.key === "ArrowDown" || event.key === "ArrowUp") {
|
|
243
|
+
event.preventDefault();
|
|
244
|
+
if (!popover.open()) {
|
|
245
|
+
const typed = editing() ? query() : "";
|
|
246
|
+
startSearch(typed, true);
|
|
247
|
+
} else {
|
|
248
|
+
move(event.key === "ArrowDown" ? 1 : -1);
|
|
249
|
+
}
|
|
250
|
+
} else if (event.key === "Enter" && popover.open()) {
|
|
251
|
+
const option = selectedForCommit();
|
|
252
|
+
if (!option) return;
|
|
253
|
+
event.preventDefault();
|
|
254
|
+
commit(option);
|
|
255
|
+
inputRef?.select();
|
|
256
|
+
} else if (event.key === "Escape" && (editing() || popover.open())) {
|
|
257
|
+
event.preventDefault();
|
|
258
|
+
if (editing()) restore();else popover.hide();
|
|
259
|
+
} else if (event.key === "Tab") {
|
|
260
|
+
requestCommit();
|
|
261
|
+
popover.hide();
|
|
262
|
+
}
|
|
263
|
+
};
|
|
264
|
+
return _$createComponent(Field, {
|
|
265
|
+
get ["class"]() {
|
|
266
|
+
return props.class;
|
|
267
|
+
},
|
|
268
|
+
get label() {
|
|
269
|
+
return props.label;
|
|
270
|
+
},
|
|
271
|
+
get description() {
|
|
272
|
+
return props.description;
|
|
273
|
+
},
|
|
274
|
+
get error() {
|
|
275
|
+
return error();
|
|
276
|
+
},
|
|
277
|
+
meta: meta,
|
|
278
|
+
get required() {
|
|
279
|
+
return props.required;
|
|
280
|
+
},
|
|
281
|
+
get disabled() {
|
|
282
|
+
return props.disabled;
|
|
283
|
+
},
|
|
284
|
+
get children() {
|
|
285
|
+
return _$ssr(_tmpl$5, _$ssrAttribute("data-invalid", error() ? "true" : _$escape(undefined, true), false), _$ssrAttribute("data-clearable", hasClearAction() ? "true" : _$escape(undefined, true), false), _$ssrElement("input", _$mergeProps({
|
|
286
|
+
get id() {
|
|
287
|
+
return meta.controlId;
|
|
288
|
+
},
|
|
289
|
+
type: "text",
|
|
290
|
+
get value() {
|
|
291
|
+
return display();
|
|
292
|
+
},
|
|
293
|
+
get placeholder() {
|
|
294
|
+
return props.placeholder ?? messages().typeToSearch;
|
|
295
|
+
},
|
|
296
|
+
get disabled() {
|
|
297
|
+
return props.disabled;
|
|
298
|
+
},
|
|
299
|
+
get required() {
|
|
300
|
+
return props.required;
|
|
301
|
+
},
|
|
302
|
+
get autofocus() {
|
|
303
|
+
return props.autofocus;
|
|
304
|
+
},
|
|
305
|
+
autocomplete: "off",
|
|
306
|
+
spellcheck: false,
|
|
307
|
+
role: "combobox",
|
|
308
|
+
"aria-autocomplete": "both",
|
|
309
|
+
get ["aria-expanded"]() {
|
|
310
|
+
return popover.open();
|
|
311
|
+
},
|
|
312
|
+
"aria-controls": listboxId,
|
|
313
|
+
get ["aria-activedescendant"]() {
|
|
314
|
+
return focusedOption() ? `${listboxId}-${focusedIndex()}` : undefined;
|
|
315
|
+
}
|
|
316
|
+
}, () => fieldControlAria(meta, {
|
|
317
|
+
...props,
|
|
318
|
+
error: error()
|
|
319
|
+
})), undefined, false), _$escape(_$createComponent(Show, {
|
|
320
|
+
get when() {
|
|
321
|
+
return hasClearAction();
|
|
322
|
+
},
|
|
323
|
+
get children() {
|
|
324
|
+
return _$ssr(_tmpl$, _$ssrAttribute("aria-label", _$escape(messages().clearSelection, true), false));
|
|
325
|
+
}
|
|
326
|
+
})), _$escape(_$createComponent(Show, {
|
|
327
|
+
get when() {
|
|
328
|
+
return loader.loading();
|
|
329
|
+
},
|
|
330
|
+
get fallback() {
|
|
331
|
+
return _$createComponent(Show, {
|
|
332
|
+
get when() {
|
|
333
|
+
return editing() && match();
|
|
334
|
+
},
|
|
335
|
+
get fallback() {
|
|
336
|
+
return _$ssr(_tmpl$7);
|
|
337
|
+
},
|
|
338
|
+
get children() {
|
|
339
|
+
return _$ssr(_tmpl$6);
|
|
340
|
+
}
|
|
341
|
+
});
|
|
342
|
+
},
|
|
343
|
+
get children() {
|
|
344
|
+
return _$ssr(_tmpl$2);
|
|
345
|
+
}
|
|
346
|
+
})), _$escape(_$createComponent(Show, {
|
|
347
|
+
get when() {
|
|
348
|
+
return props.name;
|
|
349
|
+
},
|
|
350
|
+
children: name => _$ssr(_tmpl$8, _$ssrAttribute("name", _$escape(name(), true), false) + _$ssrAttribute("value", _$escape(value() ?? "", true), false))
|
|
351
|
+
})), loader.loading() ? _$escape(props.checkingText ?? messages().checkingOptions) : match() ? `Match: ${_$escape(formatValue(match()))}` : _$escape(internalError() ?? ""), _$ssrAttribute("aria-label", typeof props.label === "string" ? _$escape(props.label, true) : _$escape(messages().options, true), false), _$escape(_$createComponent(Show, {
|
|
352
|
+
get when() {
|
|
353
|
+
return (props.groups?.length ?? 0) > 0;
|
|
354
|
+
},
|
|
355
|
+
get children() {
|
|
356
|
+
return _$ssr(_tmpl$3, _$escape(_$createComponent(ChoiceGroups, {
|
|
357
|
+
get choices() {
|
|
358
|
+
return groupChoices();
|
|
359
|
+
},
|
|
360
|
+
get value() {
|
|
361
|
+
return activeGroup();
|
|
362
|
+
},
|
|
363
|
+
onValueChange: chooseGroup,
|
|
364
|
+
get ariaLabel() {
|
|
365
|
+
return props.groupsAriaLabel ?? messages().filterOptions;
|
|
366
|
+
},
|
|
367
|
+
controls: listboxId
|
|
368
|
+
})));
|
|
369
|
+
}
|
|
370
|
+
})), _$ssrAttribute("id", _$escape(listboxId, true), false), _$escape(_$createComponent(Show, {
|
|
371
|
+
get when() {
|
|
372
|
+
return loadError();
|
|
373
|
+
},
|
|
374
|
+
children: message => _$ssr(_tmpl$9, _$escape(message()))
|
|
375
|
+
})), _$escape(_$createComponent(Show, {
|
|
376
|
+
get when() {
|
|
377
|
+
return loader.loading() && options().length === 0;
|
|
378
|
+
},
|
|
379
|
+
get children() {
|
|
380
|
+
return _$ssr(_tmpl$4, _$escape(props.checkingText ?? messages().checkingOptionsLoading));
|
|
381
|
+
}
|
|
382
|
+
})), _$escape(_$createComponent(For, {
|
|
383
|
+
get each() {
|
|
384
|
+
return loadError() ? [] : options();
|
|
385
|
+
},
|
|
386
|
+
get fallback() {
|
|
387
|
+
return _$createComponent(Show, {
|
|
388
|
+
get when() {
|
|
389
|
+
return !loader.loading() && !loadError();
|
|
390
|
+
},
|
|
391
|
+
get children() {
|
|
392
|
+
return _$ssr(_tmpl$0, _$escape(props.noOptionsText ?? messages().noOptionsFound));
|
|
393
|
+
}
|
|
394
|
+
});
|
|
395
|
+
},
|
|
396
|
+
children: (option, index) => _$ssr(_tmpl$1, `${_$escape(listboxId, true)}-${_$escape(index(), true)}`, _$ssrAttribute("aria-label", _$escape(option.label, true), false) + _$ssrAttribute("aria-selected", _$escape(index(), true) === _$escape(focusedIndex(), true), false) + _$ssrAttribute("data-focused", index() === focusedIndex() ? "true" : _$escape(undefined, true), false), _$ssrAttribute("disabled", option.disabled, true), _$escape(_$createComponent(Show, {
|
|
397
|
+
get when() {
|
|
398
|
+
return option.color;
|
|
399
|
+
},
|
|
400
|
+
get fallback() {
|
|
401
|
+
return _$createComponent(Show, {
|
|
402
|
+
get when() {
|
|
403
|
+
return option.icon;
|
|
404
|
+
},
|
|
405
|
+
children: icon => _$ssr(_tmpl$10, _$ssrAttribute("class", _$escape(icon(), true), false))
|
|
406
|
+
});
|
|
407
|
+
},
|
|
408
|
+
children: color => _$ssr(_tmpl$11, _$ssrStyleProperty("background-color:", _$escape(color(), true)))
|
|
409
|
+
})), _$escape(option.label), _$escape(_$createComponent(Show, {
|
|
410
|
+
get when() {
|
|
411
|
+
return option.description;
|
|
412
|
+
},
|
|
413
|
+
children: description => _$ssr(_tmpl$12, _$escape(description()))
|
|
414
|
+
})))
|
|
415
|
+
})));
|
|
416
|
+
}
|
|
417
|
+
});
|
|
418
|
+
}
|
|
419
|
+
export default AutocompleteSelect;
|
|
420
|
+
//# sourceMappingURL=AutocompleteSelect.js.map
|
|
@@ -0,0 +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","_$ssr","_tmpl$5","_$ssrAttribute","_$escape","_$ssrElement","_$mergeProps","type","placeholder","typeToSearch","autofocus","autocomplete","spellcheck","role","aria-expanded","aria-activedescendant","when","_tmpl$","clearSelection","_tmpl$7","_tmpl$6","_tmpl$2","name","_tmpl$8","checkingText","checkingOptions","_tmpl$3","choices","ariaLabel","groupsAriaLabel","filterOptions","controls","_tmpl$9","_tmpl$4","checkingOptionsLoading","each","_tmpl$0","noOptionsText","noOptionsFound","_tmpl$1","color","icon","_tmpl$10","_tmpl$11","_$ssrStyleProperty","_tmpl$12"],"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":[]}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { createComponent as _$createComponent } from "solid-js/web";
|
|
2
|
+
import { ssr as _$ssr } from "solid-js/web";
|
|
3
|
+
import { ssrElement as _$ssrElement } from "solid-js/web";
|
|
4
|
+
import { mergeProps as _$mergeProps } from "solid-js/web";
|
|
5
|
+
import { ssrAttribute as _$ssrAttribute } from "solid-js/web";
|
|
6
|
+
import { escape as _$escape } from "solid-js/web";
|
|
7
|
+
var _tmpl$ = "<span class=\"k2b-field__required\" aria-hidden=\"true\">*</span>",
|
|
8
|
+
_tmpl$2 = ["<span class=\"k2b-field__description\"", ">", "</span>"],
|
|
9
|
+
_tmpl$3 = ["<span class=\"k2b-check__content\"><span", " class=\"k2b-check__label\">", "", "</span>", "</span>"],
|
|
10
|
+
_tmpl$4 = ["<p class=\"k2b-field__error\"", " role=\"alert\" aria-live=\"polite\">", "</p>"],
|
|
11
|
+
_tmpl$5 = ["<div class=\"", "\"", "><label class=\"k2b-check\"", ">", "<span class=\"k2b-check__control\" aria-hidden=\"true\"><i", "></i></span>", "</label>", "</div>"];
|
|
12
|
+
import { createEffect, Show, splitProps } from "solid-js";
|
|
13
|
+
import { createFieldMeta, fieldControlAria } from "../internal/field";
|
|
14
|
+
import { commitFieldValue, resolveMaybeAccessor } from "./field-contract";
|
|
15
|
+
export function Checkbox(props) {
|
|
16
|
+
const [local, rest] = splitProps(props, ["description", "error", "id", "indeterminate", "label", "onValueChange", "onValueCommit", "value"]);
|
|
17
|
+
const meta = createFieldMeta(local.id);
|
|
18
|
+
const checked = () => resolveMaybeAccessor(local.value) ?? false;
|
|
19
|
+
const error = () => resolveMaybeAccessor(local.error);
|
|
20
|
+
let inputRef;
|
|
21
|
+
createEffect(() => {
|
|
22
|
+
if (inputRef) inputRef.indeterminate = local.indeterminate ?? false;
|
|
23
|
+
});
|
|
24
|
+
return _$ssr(_tmpl$5, `k2b-check-field ${_$escape(rest.class ?? "", true)}`, _$ssrAttribute("data-disabled", rest.disabled ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-invalid", error() ? "true" : _$escape(undefined, true), false), _$ssrAttribute("data-indeterminate", local.indeterminate ? "true" : _$escape(undefined, true), false), _$ssrElement("input", _$mergeProps({
|
|
25
|
+
get id() {
|
|
26
|
+
return meta.controlId;
|
|
27
|
+
},
|
|
28
|
+
type: "checkbox",
|
|
29
|
+
get name() {
|
|
30
|
+
return props.name;
|
|
31
|
+
},
|
|
32
|
+
get checked() {
|
|
33
|
+
return checked();
|
|
34
|
+
},
|
|
35
|
+
get disabled() {
|
|
36
|
+
return rest.disabled;
|
|
37
|
+
},
|
|
38
|
+
get required() {
|
|
39
|
+
return rest.required;
|
|
40
|
+
},
|
|
41
|
+
get ["aria-checked"]() {
|
|
42
|
+
return local.indeterminate ? "mixed" : checked();
|
|
43
|
+
}
|
|
44
|
+
}, () => fieldControlAria(meta, props)), undefined, false), _$ssrAttribute("class", local.indeterminate ? "ti ti-minus" : "ti ti-check", false), _$escape(_$createComponent(Show, {
|
|
45
|
+
get when() {
|
|
46
|
+
return local.label || local.description;
|
|
47
|
+
},
|
|
48
|
+
get children() {
|
|
49
|
+
return _$ssr(_tmpl$3, _$ssrAttribute("id", _$escape(meta.labelId, true), false), _$escape(local.label), _$escape(_$createComponent(Show, {
|
|
50
|
+
get when() {
|
|
51
|
+
return rest.required;
|
|
52
|
+
},
|
|
53
|
+
get children() {
|
|
54
|
+
return _$ssr(_tmpl$);
|
|
55
|
+
}
|
|
56
|
+
})), _$escape(_$createComponent(Show, {
|
|
57
|
+
get when() {
|
|
58
|
+
return local.description;
|
|
59
|
+
},
|
|
60
|
+
get children() {
|
|
61
|
+
return _$ssr(_tmpl$2, _$ssrAttribute("id", _$escape(meta.descriptionId, true), false), _$escape(local.description));
|
|
62
|
+
}
|
|
63
|
+
})));
|
|
64
|
+
}
|
|
65
|
+
})), _$escape(_$createComponent(Show, {
|
|
66
|
+
get when() {
|
|
67
|
+
return error();
|
|
68
|
+
},
|
|
69
|
+
get children() {
|
|
70
|
+
return _$ssr(_tmpl$4, _$ssrAttribute("id", _$escape(meta.errorId, true), false), _$escape(error()));
|
|
71
|
+
}
|
|
72
|
+
})));
|
|
73
|
+
}
|
|
74
|
+
export default Checkbox;
|
|
75
|
+
//# sourceMappingURL=Checkbox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createEffect","Show","splitProps","createFieldMeta","fieldControlAria","commitFieldValue","resolveMaybeAccessor","Checkbox","props","local","rest","meta","id","checked","value","error","inputRef","indeterminate","_$ssr","_tmpl$5","_$escape","class","_$ssrAttribute","disabled","undefined","_$ssrElement","_$mergeProps","controlId","type","name","required","aria-checked","_$createComponent","when","label","description","children","_tmpl$3","labelId","_tmpl$","_tmpl$2","descriptionId","_tmpl$4","errorId"],"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":[]}
|