@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 @@
|
|
|
1
|
+
{"version":3,"names":["createEffect","createMemo","createSignal","Show","splitProps","createFieldMeta","Field","fieldControlAria","decimalSeparator","useLocale","useUiMessages","resolveMaybeAccessor","NumberInput","props","local","rest","meta","id","focused","setFocused","value","error","contextLocale","messages","separator","locale","display","String","replace","raw","setRaw","places","Math","max","decimalPlaces","min","Infinity","step","filter","input","output","decimal","character","test","allowNegative","integer","fraction","split","slice","parse","canonical","number","Number","parseInt","isFinite","normalize","clamped","anchor","snapped","round","bounded","toFixed","emit","onValueChange","commit","changeAlreadyEmitted","next","Object","is","onValueCommit","stepBy","direction","disabled","disableSteppers","seed","_$createComponent","class","label","description","required","children","_$ssr","_tmpl$6","_$ssrAttribute","_$escape","undefined","when","showSteppers","_tmpl$","decreaseLabel","decreaseValue","icon","_tmpl$2","activeIcon","prefix","_tmpl$3","_$ssrElement","_$mergeProps","controlId","data-filled","type","role","inputmode","aria-valuemin","aria-valuemax","aria-valuenow","suffix","clearable","readOnly","_tmpl$4","clearLabel","clear","_tmpl$5","increaseLabel","increaseValue"],"sources":["inputs/NumberInput.tsx"],"sourcesContent":["import { createEffect, createMemo, createSignal, type JSX, Show, splitProps } from \"solid-js\";\nimport { createFieldMeta, Field, fieldControlAria } from \"../internal/field\";\nimport { decimalSeparator, useLocale } from \"../intl/locale\";\nimport { useUiMessages } from \"../intl/messages\";\nimport type { ValueFieldProps } from \"./field-contract\";\nimport { resolveMaybeAccessor } from \"./field-contract\";\n\nexport type NumberInputProps = Omit<\n JSX.InputHTMLAttributes<HTMLInputElement>,\n \"max\" | \"min\" | \"onChange\" | \"onInput\" | \"prefix\" | \"step\" | \"type\" | \"value\" | keyof ValueFieldProps<number | null>\n> &\n ValueFieldProps<number | null> & {\n max?: number;\n min?: number;\n step?: number;\n decimalPlaces?: number;\n allowNegative?: boolean;\n clearable?: boolean;\n onClear?: () => void;\n clearLabel?: string;\n increaseLabel?: string;\n decreaseLabel?: string;\n /** Explicit locale for the decimal separator; defaults to the inherited render locale. */\n locale?: string;\n showSteppers?: boolean;\n disableSteppers?: boolean;\n icon?: string;\n activeIcon?: string;\n prefix?: JSX.Element;\n suffix?: JSX.Element;\n };\n\nexport function NumberInput(props: NumberInputProps): JSX.Element {\n const [local, rest] = splitProps(props, [\n \"activeIcon\",\n \"allowNegative\",\n \"aria-describedby\",\n \"aria-label\",\n \"class\",\n \"clearLabel\",\n \"clearable\",\n \"decimalPlaces\",\n \"decreaseLabel\",\n \"description\",\n \"disableSteppers\",\n \"error\",\n \"icon\",\n \"id\",\n \"increaseLabel\",\n \"label\",\n \"locale\",\n \"max\",\n \"min\",\n \"onClear\",\n \"onValueCommit\",\n \"onValueChange\",\n \"prefix\",\n \"required\",\n \"showSteppers\",\n \"step\",\n \"suffix\",\n \"value\",\n ]);\n const meta = createFieldMeta(local.id);\n const [focused, setFocused] = createSignal(false);\n const value = () => resolveMaybeAccessor(local.value);\n const error = () => resolveMaybeAccessor(local.error);\n const contextLocale = useLocale();\n const messages = useUiMessages();\n const separator = createMemo(() => decimalSeparator(local.locale ?? contextLocale()));\n // The visible text keeps the canonical number, only the decimal separator\n // follows the effective locale; grouping is never rendered while editing.\n const display = (value: number | null | undefined) => (value == null ? \"\" : String(value).replace(\".\", separator()));\n const [raw, setRaw] = createSignal(display(value()));\n const places = () => Math.max(0, local.decimalPlaces ?? 0);\n const min = () => local.min ?? -Infinity;\n const max = () => local.max ?? Infinity;\n const step = () => local.step ?? 1;\n\n const filter = (input: string) => {\n let output = \"\";\n let decimal = false;\n for (const character of input) {\n if (/\\d/.test(character)) output += character;\n else if (character === \"-\" && output === \"\" && (local.allowNegative ?? true)) output += character;\n else if ((character === \".\" || character === \",\" || character === separator()) && !decimal && places() > 0) {\n output += separator();\n decimal = true;\n }\n }\n if (decimal) {\n const [integer = \"\", fraction = \"\"] = output.split(separator());\n return `${integer}${separator()}${fraction.slice(0, places())}`;\n }\n return output;\n };\n const parse = (input: string) => {\n const canonical = input.replace(separator(), \".\");\n if (!canonical || canonical === \"-\" || canonical === \".\") return null;\n const number = places() === 0 ? Number.parseInt(canonical, 10) : Number(canonical);\n return Number.isFinite(number) ? number : null;\n };\n const normalize = (value: number | null) => {\n if (value === null) return null;\n const clamped = Math.max(min(), Math.min(max(), value));\n const anchor = Number.isFinite(min()) ? min() : 0;\n const snapped = step() > 0 ? Math.round((clamped - anchor) / step()) * step() + anchor : clamped;\n const bounded = Math.max(min(), Math.min(max(), snapped));\n return places() === 0 ? Math.round(bounded) : Number(bounded.toFixed(places()));\n };\n const emit = (value: number | null) => local.onValueChange?.(value);\n const commit = (value: number | null, changeAlreadyEmitted = false) => {\n const next = normalize(value);\n setRaw(display(next));\n if (!changeAlreadyEmitted || !Object.is(next, value)) emit(next);\n local.onValueCommit?.(next);\n };\n const stepBy = (direction: number) => {\n if (rest.disabled || local.disableSteppers) return;\n const seed = value() ?? (Number.isFinite(min()) ? min() : 0);\n commit(seed + direction * step());\n };\n\n createEffect(() => {\n if (focused()) return;\n if (parse(raw()) !== value()) setRaw(display(value()));\n });\n\n return (\n <Field\n class={local.class}\n label={local.label}\n description={local.description}\n error={error()}\n meta={meta}\n required={local.required}\n disabled={rest.disabled}\n >\n <div\n class=\"k2b-input-shell k2b-number-input\"\n data-disabled={rest.disabled ? \"true\" : undefined}\n data-invalid={error() ? \"true\" : undefined}\n >\n <Show when={local.showSteppers ?? true}>\n <button\n type=\"button\"\n class=\"k2b-number-input__step\"\n aria-label={local.decreaseLabel ?? messages().decreaseValue}\n disabled={rest.disabled || local.disableSteppers || (value() !== null && value() !== undefined && value()! <= min())}\n onClick={() => stepBy(-1)}\n >\n <i class=\"ti ti-minus\" aria-hidden=\"true\" />\n </button>\n </Show>\n <div class=\"k2b-number-input__value\">\n <Show when={local.icon}>\n <span class=\"k2b-input-shell__icon k2b-text-input__icon\" aria-hidden=\"true\">\n <i class={local.icon} />\n <i class={local.activeIcon ?? local.icon} />\n </span>\n </Show>\n <Show when={local.prefix}>\n <span class=\"k2b-input-shell__affix\">{local.prefix}</span>\n </Show>\n <input\n {...rest}\n id={meta.controlId}\n class=\"k2b-input k2b-number-input__control\"\n data-filled={raw() ? \"true\" : undefined}\n type=\"text\"\n role=\"spinbutton\"\n inputmode={places() === 0 ? \"numeric\" : \"decimal\"}\n value={raw()}\n required={local.required}\n {...fieldControlAria(meta, local)}\n aria-valuemin={Number.isFinite(min()) ? min() : undefined}\n aria-valuemax={Number.isFinite(max()) ? max() : undefined}\n aria-valuenow={(focused() ? parse(raw()) : value()) ?? undefined}\n onFocus={() => setFocused(true)}\n onInput={(event) => {\n const input = event.currentTarget;\n const current = input.value;\n const selectionStart = input.selectionStart;\n const selectionEnd = input.selectionEnd;\n const next = filter(current);\n // Only write back when the filter actually dropped something —\n // re-assigning an unchanged value moves the caret to the end.\n if (current !== next) {\n input.value = next;\n if (selectionStart !== null && selectionEnd !== null) {\n input.setSelectionRange(filter(current.slice(0, selectionStart)).length, filter(current.slice(0, selectionEnd)).length);\n }\n }\n setRaw(next);\n emit(parse(next));\n }}\n onBlur={() => {\n commit(parse(raw()), true);\n setFocused(false);\n }}\n />\n <Show when={local.suffix}>\n <span class=\"k2b-input-shell__affix\">{local.suffix}</span>\n </Show>\n <Show when={local.clearable && raw() && !rest.disabled && !rest.readOnly}>\n <button\n type=\"button\"\n class=\"k2b-input-shell__clear k2b-input-clear-action\"\n aria-label={local.clearLabel ?? messages().clear}\n onClick={() => (local.onClear ? local.onClear() : commit(null))}\n >\n <i class=\"ti ti-x\" aria-hidden=\"true\" />\n </button>\n </Show>\n </div>\n <Show when={local.showSteppers ?? true}>\n <button\n type=\"button\"\n class=\"k2b-number-input__step\"\n aria-label={local.increaseLabel ?? messages().increaseValue}\n disabled={rest.disabled || local.disableSteppers || (value() !== null && value() !== undefined && value()! >= max())}\n onClick={() => stepBy(1)}\n >\n <i class=\"ti ti-plus\" aria-hidden=\"true\" />\n </button>\n </Show>\n </div>\n </Field>\n );\n}\n\nexport default NumberInput;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,308 @@
|
|
|
1
|
+
import { ssrStyleProperty as _$ssrStyleProperty } from "solid-js/web";
|
|
2
|
+
import { ssrElement as _$ssrElement } from "solid-js/web";
|
|
3
|
+
import { mergeProps as _$mergeProps } from "solid-js/web";
|
|
4
|
+
import { ssr as _$ssr } from "solid-js/web";
|
|
5
|
+
import { createComponent as _$createComponent } 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$ = ["<span class=\"k2b-choice-trigger__value\"", ">", "</span>"],
|
|
9
|
+
_tmpl$2 = ["<i", " aria-hidden=\"true\"></i>"],
|
|
10
|
+
_tmpl$3 = ["<button type=\"button\" class=\"k2b-choice-control__clear k2b-input-clear-action\"", "><i class=\"ti ti-x\" aria-hidden=\"true\"></i></button>"],
|
|
11
|
+
_tmpl$4 = ["<div class=\"k2b-choice-search\"><i class=\"ti ti-search\" aria-hidden=\"true\"></i><input type=\"search\"", "></div>"],
|
|
12
|
+
_tmpl$5 = ["<button type=\"button\" class=\"k2b-choice-view-toggle\"", "><i", " aria-hidden=\"true\"></i></button>"],
|
|
13
|
+
_tmpl$6 = ["<div class=\"k2b-choice-toolbar\">", "", "</div>"],
|
|
14
|
+
_tmpl$7 = ["<div class=\"k2b-choice-status\"><i class=\"ti ti-loader-2 k2b-spin\" aria-hidden=\"true\"></i><span>", "</span></div>"],
|
|
15
|
+
_tmpl$8 = ["<div class=\"k2b-choice-control\"", ">", "", "", "<div popover=\"manual\" class=\"k2b-choice-popover\" role=\"group\"", ">", "", "<div", " class=\"k2b-choice-options\" role=\"listbox\"", ">", "", "", "</div></div></div>"],
|
|
16
|
+
_tmpl$9 = ["<span class=\"k2b-choice-dot\" style=\"", "\" aria-hidden=\"true\"></span>"],
|
|
17
|
+
_tmpl$0 = ["<input type=\"hidden\"", ">"],
|
|
18
|
+
_tmpl$1 = ["<div class=\"k2b-choice-status\" data-tone=\"danger\"><span>", "</span><button type=\"button\">", "</button></div>"],
|
|
19
|
+
_tmpl$10 = ["<div class=\"k2b-choice-status\">", "</div>"],
|
|
20
|
+
_tmpl$11 = ["<button type=\"button\" id=\"", "\" class=\"k2b-choice-option\" role=\"option\"", "", ">", "<span><strong>", "</strong>", "</span></button>"],
|
|
21
|
+
_tmpl$12 = ["<small>", "</small>"];
|
|
22
|
+
import { 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, filterChoiceOptions, nextEnabledChoiceIndex } from "./choice";
|
|
27
|
+
import { commitFieldValue, resolveMaybeAccessor } from "./field-contract";
|
|
28
|
+
const normalize = option => typeof option === "string" ? {
|
|
29
|
+
value: option,
|
|
30
|
+
label: option
|
|
31
|
+
} : "value" in option ? option : {
|
|
32
|
+
...option,
|
|
33
|
+
value: option.id,
|
|
34
|
+
label: option.label || option.id
|
|
35
|
+
};
|
|
36
|
+
export function Select(props) {
|
|
37
|
+
const messages = useUiMessages();
|
|
38
|
+
const meta = createFieldMeta(props.id);
|
|
39
|
+
const listboxId = `${meta.controlId}-listbox`;
|
|
40
|
+
const [query, setQuery] = createSignal("");
|
|
41
|
+
const [focusedIndex, setFocusedIndex] = createSignal(-1);
|
|
42
|
+
const [cache, setCache] = createSignal({});
|
|
43
|
+
const [selectedGroup, setSelectedGroup] = createSignal(props.defaultGroup ?? null);
|
|
44
|
+
const [selectedView, setSelectedView] = createSignal(props.defaultView ?? "list");
|
|
45
|
+
let searchRef;
|
|
46
|
+
let optionRefs = [];
|
|
47
|
+
const value = () => resolveMaybeAccessor(props.value) ?? null;
|
|
48
|
+
const error = () => resolveMaybeAccessor(props.error);
|
|
49
|
+
const activeGroup = createMemo(() => {
|
|
50
|
+
const current = selectedGroup();
|
|
51
|
+
return current && props.groups?.some(group => group.value === current) ? current : null;
|
|
52
|
+
});
|
|
53
|
+
const groupChoices = createMemo(() => [{
|
|
54
|
+
value: null,
|
|
55
|
+
label: props.allGroupLabel ?? messages().all
|
|
56
|
+
}, ...(props.groups ?? [])]);
|
|
57
|
+
const activeView = () => props.viewToggle ? selectedView() : "list";
|
|
58
|
+
const loader = createChoiceLoader(() => props.fetchData ? async (value, signal) => (await props.fetchData(value, signal, activeGroup())).map(normalize) : props.loadOptions ? (value, signal) => props.loadOptions(value, signal, activeGroup()) : undefined, () => props.fetchDebounceMs ?? props.debounceMs ?? 200);
|
|
59
|
+
const isAsync = () => Boolean(props.fetchData || props.loadOptions);
|
|
60
|
+
const isSearchable = () => isAsync() || Boolean(props.searchable);
|
|
61
|
+
const sourceOptions = createMemo(() => isAsync() ? loader.options() : (props.options ?? []).map(normalize));
|
|
62
|
+
const groupedOptions = createMemo(() => {
|
|
63
|
+
const group = activeGroup();
|
|
64
|
+
return !isAsync() && group ? sourceOptions().filter(option => option.groups?.includes(group)) : sourceOptions();
|
|
65
|
+
});
|
|
66
|
+
// Remote loaders filter server-side; a static list has to be filtered here or
|
|
67
|
+
// the search field would render but do nothing.
|
|
68
|
+
const options = createMemo(() => isAsync() || !props.searchable ? groupedOptions() : props.filterOptions ? [...props.filterOptions(groupedOptions(), query())] : filterChoiceOptions(groupedOptions(), query()));
|
|
69
|
+
const selected = createMemo(() => {
|
|
70
|
+
const current = value();
|
|
71
|
+
if (current === null) return undefined;
|
|
72
|
+
// Resolve against the unfiltered list so typing in the search field never
|
|
73
|
+
// blanks the trigger label of the current selection.
|
|
74
|
+
return sourceOptions().find(option => option.value === current) ?? cache()[current] ?? (props.selectedOption?.value === current ? props.selectedOption : undefined) ?? {
|
|
75
|
+
value: current,
|
|
76
|
+
label: props.selectedLabel?.() ?? current
|
|
77
|
+
};
|
|
78
|
+
});
|
|
79
|
+
const hasClearAction = () => Boolean(props.clearable && selected() && !props.disabled);
|
|
80
|
+
const accessibleLabel = () => props["aria-label"] ?? (typeof props.label === "string" ? undefined : props.placeholder ?? messages().selectOption);
|
|
81
|
+
const popover = createChoicePopover(() => Boolean(props.disabled));
|
|
82
|
+
const focusedOption = () => options()[focusedIndex()];
|
|
83
|
+
const focus = index => {
|
|
84
|
+
setFocusedIndex(index);
|
|
85
|
+
optionRefs[index]?.scrollIntoView({
|
|
86
|
+
block: "nearest"
|
|
87
|
+
});
|
|
88
|
+
};
|
|
89
|
+
const move = direction => focus(nextEnabledChoiceIndex(options(), focusedIndex(), direction));
|
|
90
|
+
const chooseGroup = group => {
|
|
91
|
+
if (group === activeGroup()) return;
|
|
92
|
+
setSelectedGroup(group);
|
|
93
|
+
setFocusedIndex(nextEnabledChoiceIndex(options(), -1, 1));
|
|
94
|
+
if (isAsync()) loader.load(query(), true);
|
|
95
|
+
};
|
|
96
|
+
const open = () => {
|
|
97
|
+
if (props.disabled) return;
|
|
98
|
+
setQuery("");
|
|
99
|
+
if (isAsync()) loader.load("", true);
|
|
100
|
+
const selectedIndex = options().findIndex(option => option.value === value());
|
|
101
|
+
focus(selectedIndex >= 0 ? selectedIndex : nextEnabledChoiceIndex(options(), -1, 1));
|
|
102
|
+
popover.show();
|
|
103
|
+
if (isSearchable()) queueMicrotask(() => searchRef?.focus());
|
|
104
|
+
};
|
|
105
|
+
const close = (restoreFocus = false) => {
|
|
106
|
+
// Hide the top-layer surface before any reactive cleanup or consumer
|
|
107
|
+
// callback can rerender its contents. Selection must feel atomic: the old
|
|
108
|
+
// listbox must never remain visible with the next value.
|
|
109
|
+
popover.hide(restoreFocus);
|
|
110
|
+
loader.cancel();
|
|
111
|
+
setQuery("");
|
|
112
|
+
setFocusedIndex(-1);
|
|
113
|
+
};
|
|
114
|
+
const select = option => {
|
|
115
|
+
if (option.disabled) return;
|
|
116
|
+
close(true);
|
|
117
|
+
setCache({
|
|
118
|
+
...cache(),
|
|
119
|
+
[option.value]: option
|
|
120
|
+
});
|
|
121
|
+
commitFieldValue(props, option.value);
|
|
122
|
+
};
|
|
123
|
+
const onKeyDown = event => {
|
|
124
|
+
const inToolbar = Boolean(event.target?.closest?.(".k2b-choice-toolbar"));
|
|
125
|
+
if (inToolbar && event.key !== "Escape" && event.key !== "Tab") return;
|
|
126
|
+
if (event.key === "ArrowDown" || event.key === "ArrowUp") {
|
|
127
|
+
event.preventDefault();
|
|
128
|
+
if (!popover.open()) open();else move(event.key === "ArrowDown" ? 1 : -1);
|
|
129
|
+
} else if ((event.key === "Enter" || event.key === " ") && !popover.open()) {
|
|
130
|
+
event.preventDefault();
|
|
131
|
+
open();
|
|
132
|
+
} else if (event.key === "Enter" && focusedOption()) {
|
|
133
|
+
event.preventDefault();
|
|
134
|
+
select(focusedOption());
|
|
135
|
+
} else if (event.key === "Escape" && popover.open()) {
|
|
136
|
+
// Only swallow Escape while the list is open — a closed select must let
|
|
137
|
+
// the key bubble to an enclosing dialog or drawer.
|
|
138
|
+
event.preventDefault();
|
|
139
|
+
close(true);
|
|
140
|
+
} else if (event.key === "Tab" && popover.open()) close();
|
|
141
|
+
};
|
|
142
|
+
const clear = event => {
|
|
143
|
+
event.stopPropagation();
|
|
144
|
+
commitFieldValue(props, null);
|
|
145
|
+
popover.trigger()?.focus();
|
|
146
|
+
};
|
|
147
|
+
return _$createComponent(Field, {
|
|
148
|
+
get ["class"]() {
|
|
149
|
+
return props.class;
|
|
150
|
+
},
|
|
151
|
+
get label() {
|
|
152
|
+
return props.label;
|
|
153
|
+
},
|
|
154
|
+
get description() {
|
|
155
|
+
return props.description;
|
|
156
|
+
},
|
|
157
|
+
get error() {
|
|
158
|
+
return error();
|
|
159
|
+
},
|
|
160
|
+
meta: meta,
|
|
161
|
+
get required() {
|
|
162
|
+
return props.required;
|
|
163
|
+
},
|
|
164
|
+
get disabled() {
|
|
165
|
+
return props.disabled;
|
|
166
|
+
},
|
|
167
|
+
get children() {
|
|
168
|
+
return _$ssr(_tmpl$8, _$ssrAttribute("data-invalid", error() ? "true" : _$escape(undefined, true), false), _$ssrElement("button", _$mergeProps({
|
|
169
|
+
get id() {
|
|
170
|
+
return meta.controlId;
|
|
171
|
+
},
|
|
172
|
+
type: "button",
|
|
173
|
+
"class": "k2b-choice-trigger",
|
|
174
|
+
role: "combobox",
|
|
175
|
+
"aria-haspopup": "listbox",
|
|
176
|
+
get ["aria-expanded"]() {
|
|
177
|
+
return popover.open();
|
|
178
|
+
},
|
|
179
|
+
"aria-controls": listboxId,
|
|
180
|
+
get ["aria-activedescendant"]() {
|
|
181
|
+
return focusedOption() ? `${listboxId}-${focusedIndex()}` : undefined;
|
|
182
|
+
},
|
|
183
|
+
get ["data-clearable"]() {
|
|
184
|
+
return hasClearAction() ? "true" : undefined;
|
|
185
|
+
}
|
|
186
|
+
}, () => fieldControlAria(meta, {
|
|
187
|
+
...props,
|
|
188
|
+
"aria-label": accessibleLabel()
|
|
189
|
+
}), {
|
|
190
|
+
get disabled() {
|
|
191
|
+
return props.disabled;
|
|
192
|
+
}
|
|
193
|
+
}), [_$escape(_$createComponent(Show, {
|
|
194
|
+
get when() {
|
|
195
|
+
return selected()?.color;
|
|
196
|
+
},
|
|
197
|
+
get fallback() {
|
|
198
|
+
return _$createComponent(Show, {
|
|
199
|
+
get when() {
|
|
200
|
+
return selected()?.icon;
|
|
201
|
+
},
|
|
202
|
+
children: icon => _$ssr(_tmpl$2, _$ssrAttribute("class", _$escape(icon(), true), false))
|
|
203
|
+
});
|
|
204
|
+
},
|
|
205
|
+
children: color => _$ssr(_tmpl$9, _$ssrStyleProperty("background-color:", _$escape(color(), true)))
|
|
206
|
+
})), _$ssr(_tmpl$, _$ssrAttribute("data-placeholder", selected() ? _$escape(undefined, true) : "true", false), _$escape(selected()?.label ?? props.placeholder ?? messages().select)), _$ssr(_tmpl$2, _$ssrAttribute("class", popover.open() ? _$escape(props.activeIcon ?? "ti ti-chevron-up", true) : _$escape(props.icon ?? "ti ti-chevron-down", true), false))], false), _$escape(_$createComponent(Show, {
|
|
207
|
+
get when() {
|
|
208
|
+
return props.name;
|
|
209
|
+
},
|
|
210
|
+
children: name => _$ssr(_tmpl$0, _$ssrAttribute("name", _$escape(name(), true), false) + _$ssrAttribute("value", _$escape(value() ?? "", true), false))
|
|
211
|
+
})), _$escape(_$createComponent(Show, {
|
|
212
|
+
get when() {
|
|
213
|
+
return hasClearAction();
|
|
214
|
+
},
|
|
215
|
+
get children() {
|
|
216
|
+
return _$ssr(_tmpl$3, _$ssrAttribute("aria-label", _$escape(messages().clearSelection, true), false));
|
|
217
|
+
}
|
|
218
|
+
})), _$ssrAttribute("aria-label", typeof props.label === "string" ? _$escape(props.label, true) : _$escape(messages().options, true), false), _$escape(_$createComponent(Show, {
|
|
219
|
+
get when() {
|
|
220
|
+
return isSearchable();
|
|
221
|
+
},
|
|
222
|
+
get children() {
|
|
223
|
+
return _$ssr(_tmpl$4, _$ssrAttribute("value", _$escape(query(), true), false) + _$ssrAttribute("placeholder", _$escape(props.searchPlaceholder ?? messages().search, true), false) + _$ssrAttribute("aria-label", _$escape(props.searchPlaceholder ?? messages().searchOptions, true), false) + _$ssrAttribute("aria-controls", _$escape(listboxId, true), false) + _$ssrAttribute("aria-activedescendant", focusedOption() ? `${_$escape(listboxId, true)}-${_$escape(focusedIndex(), true)}` : _$escape(undefined, true), false));
|
|
224
|
+
}
|
|
225
|
+
})), _$escape(_$createComponent(Show, {
|
|
226
|
+
get when() {
|
|
227
|
+
return (props.groups?.length ?? 0) > 0 || props.viewToggle;
|
|
228
|
+
},
|
|
229
|
+
get children() {
|
|
230
|
+
return _$ssr(_tmpl$6, _$escape(_$createComponent(Show, {
|
|
231
|
+
get when() {
|
|
232
|
+
return (props.groups?.length ?? 0) > 0;
|
|
233
|
+
},
|
|
234
|
+
get children() {
|
|
235
|
+
return _$createComponent(ChoiceGroups, {
|
|
236
|
+
get choices() {
|
|
237
|
+
return groupChoices();
|
|
238
|
+
},
|
|
239
|
+
get value() {
|
|
240
|
+
return activeGroup();
|
|
241
|
+
},
|
|
242
|
+
onValueChange: chooseGroup,
|
|
243
|
+
get ariaLabel() {
|
|
244
|
+
return props.groupsAriaLabel ?? messages().filterOptions;
|
|
245
|
+
},
|
|
246
|
+
controls: listboxId
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
})), _$escape(_$createComponent(Show, {
|
|
250
|
+
get when() {
|
|
251
|
+
return props.viewToggle;
|
|
252
|
+
},
|
|
253
|
+
get children() {
|
|
254
|
+
return _$ssr(_tmpl$5, _$ssrAttribute("aria-label", activeView() === "list" ? _$escape(messages().showGridView, true) : _$escape(messages().showListView, true), false) + _$ssrAttribute("aria-controls", _$escape(listboxId, true), false), _$ssrAttribute("class", activeView() === "list" ? "ti ti-category-2" : "ti ti-list-details", false));
|
|
255
|
+
}
|
|
256
|
+
})));
|
|
257
|
+
}
|
|
258
|
+
})), _$ssrAttribute("id", _$escape(listboxId, true), false), _$ssrAttribute("data-view", _$escape(activeView(), true), false) + _$ssrAttribute("data-grid-size", activeView() === "grid" ? _$escape(props.gridSize ?? "md", true) : _$escape(undefined, true), false), _$escape(_$createComponent(Show, {
|
|
259
|
+
get when() {
|
|
260
|
+
return loader.error();
|
|
261
|
+
},
|
|
262
|
+
children: message => _$ssr(_tmpl$1, _$escape(message()), _$escape(messages().retry))
|
|
263
|
+
})), _$escape(_$createComponent(Show, {
|
|
264
|
+
get when() {
|
|
265
|
+
return loader.loading() && options().length === 0;
|
|
266
|
+
},
|
|
267
|
+
get children() {
|
|
268
|
+
return _$ssr(_tmpl$7, _$escape(messages().loading));
|
|
269
|
+
}
|
|
270
|
+
})), _$escape(_$createComponent(For, {
|
|
271
|
+
get each() {
|
|
272
|
+
return loader.error() ? [] : options();
|
|
273
|
+
},
|
|
274
|
+
get fallback() {
|
|
275
|
+
return _$createComponent(Show, {
|
|
276
|
+
get when() {
|
|
277
|
+
return !loader.loading() && !loader.error();
|
|
278
|
+
},
|
|
279
|
+
get children() {
|
|
280
|
+
return _$ssr(_tmpl$10, isSearchable() ? _$escape(messages().noResults) : _$escape(messages().noOptions));
|
|
281
|
+
}
|
|
282
|
+
});
|
|
283
|
+
},
|
|
284
|
+
children: (option, index) => _$ssr(_tmpl$11, `${_$escape(listboxId, true)}-${_$escape(index(), true)}`, _$ssrAttribute("aria-label", _$escape(option.label, true), false) + _$ssrAttribute("aria-selected", _$escape(option.value, true) === _$escape(value(), true), false) + _$ssrAttribute("data-focused", index() === focusedIndex() ? "true" : _$escape(undefined, true), false), _$ssrAttribute("disabled", option.disabled, true), _$escape(_$createComponent(Show, {
|
|
285
|
+
get when() {
|
|
286
|
+
return option.color;
|
|
287
|
+
},
|
|
288
|
+
get fallback() {
|
|
289
|
+
return _$createComponent(Show, {
|
|
290
|
+
get when() {
|
|
291
|
+
return option.icon;
|
|
292
|
+
},
|
|
293
|
+
children: icon => _$ssr(_tmpl$2, _$ssrAttribute("class", _$escape(icon(), true), false))
|
|
294
|
+
});
|
|
295
|
+
},
|
|
296
|
+
children: color => _$ssr(_tmpl$9, _$ssrStyleProperty("background-color:", _$escape(color(), true)))
|
|
297
|
+
})), _$escape(option.label), _$escape(_$createComponent(Show, {
|
|
298
|
+
get when() {
|
|
299
|
+
return option.description;
|
|
300
|
+
},
|
|
301
|
+
children: description => _$ssr(_tmpl$12, _$escape(description()))
|
|
302
|
+
})))
|
|
303
|
+
})));
|
|
304
|
+
}
|
|
305
|
+
});
|
|
306
|
+
}
|
|
307
|
+
export default Select;
|
|
308
|
+
//# sourceMappingURL=Select.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createMemo","createSignal","For","Show","createFieldMeta","Field","fieldControlAria","useUiMessages","ChoiceGroups","createChoiceLoader","createChoicePopover","filterChoiceOptions","nextEnabledChoiceIndex","commitFieldValue","resolveMaybeAccessor","normalize","option","value","label","id","Select","props","messages","meta","listboxId","controlId","query","setQuery","focusedIndex","setFocusedIndex","cache","setCache","selectedGroup","setSelectedGroup","defaultGroup","selectedView","setSelectedView","defaultView","searchRef","optionRefs","error","activeGroup","current","groups","some","group","groupChoices","allGroupLabel","all","activeView","viewToggle","loader","fetchData","signal","map","loadOptions","undefined","fetchDebounceMs","debounceMs","isAsync","Boolean","isSearchable","searchable","sourceOptions","options","groupedOptions","filter","includes","filterOptions","selected","find","selectedOption","selectedLabel","hasClearAction","clearable","disabled","accessibleLabel","placeholder","selectOption","popover","focusedOption","focus","index","scrollIntoView","block","move","direction","chooseGroup","load","open","selectedIndex","findIndex","show","queueMicrotask","close","restoreFocus","hide","cancel","select","onKeyDown","event","inToolbar","target","closest","key","preventDefault","clear","stopPropagation","trigger","_$createComponent","class","description","required","children","_$ssr","_tmpl$8","_$ssrAttribute","_$escape","_$ssrElement","_$mergeProps","type","role","aria-expanded","aria-activedescendant","data-clearable","when","color","fallback","icon","_tmpl$2","_tmpl$9","_$ssrStyleProperty","_tmpl$","activeIcon","name","_tmpl$0","_tmpl$3","clearSelection","_tmpl$4","searchPlaceholder","search","searchOptions","length","_tmpl$6","choices","onValueChange","ariaLabel","groupsAriaLabel","controls","_tmpl$5","showGridView","showListView","gridSize","message","_tmpl$1","retry","loading","_tmpl$7","each","_tmpl$10","noResults","noOptions","_tmpl$11","_tmpl$12"],"sources":["inputs/Select.tsx"],"sourcesContent":["import { createMemo, createSignal, For, type JSX, Show } from \"solid-js\";\nimport { createFieldMeta, Field, fieldControlAria } from \"../internal/field\";\nimport { useUiMessages } from \"../intl/messages\";\nimport { ChoiceGroups } from \"./ChoiceGroups\";\nimport { type ChoiceOption, createChoiceLoader, createChoicePopover, filterChoiceOptions, nextEnabledChoiceIndex } from \"./choice\";\nimport type { ValueFieldProps } from \"./field-contract\";\nimport { commitFieldValue, resolveMaybeAccessor } from \"./field-contract\";\n\nexport type SelectOption = ChoiceOption<string>;\nexport type SelectGroup = {\n value: string;\n label: string;\n};\nexport type SelectView = \"list\" | \"grid\";\nexport type SelectGridSize = \"sm\" | \"md\" | \"lg\";\nexport type SelectSourceOption =\n | string\n | {\n id: string;\n label?: string;\n description?: string;\n icon?: string;\n color?: string;\n groups?: readonly string[];\n }\n | SelectOption;\n\nexport type SelectProps = ValueFieldProps<string | null> & {\n placeholder?: string;\n icon?: string;\n activeIcon?: string;\n options?: SelectSourceOption[];\n fetchData?: (query: string, signal: AbortSignal, group: string | null) => Promise<SelectSourceOption[]>;\n loadOptions?: (query: string, signal: AbortSignal, group: string | null) => Promise<readonly ChoiceOption<string>[]>;\n selectedOption?: ChoiceOption<string>;\n selectedLabel?: () => string | undefined;\n fetchDebounceMs?: number;\n debounceMs?: number;\n searchable?: boolean;\n /** Optional synchronous filter for static options. */\n filterOptions?: (options: readonly SelectOption[], query: string) => readonly SelectOption[];\n /** Optional filters. An option may belong to more than one group. */\n groups?: readonly SelectGroup[];\n /** Group selected when the component is created. Omit to start with all options. */\n defaultGroup?: string;\n groupsAriaLabel?: string;\n allGroupLabel?: string;\n /** Show a local list/grid layout toggle in the dropdown. */\n viewToggle?: boolean;\n /** Initial dropdown layout when `viewToggle` is enabled. */\n defaultView?: SelectView;\n /** Tile density for the grid layout. */\n gridSize?: SelectGridSize;\n searchPlaceholder?: string;\n clearable?: boolean;\n name?: string;\n};\n\ntype NormalizedOption = ChoiceOption<string>;\nconst normalize = (option: SelectSourceOption): NormalizedOption =>\n typeof option === \"string\"\n ? { value: option, label: option }\n : \"value\" in option\n ? option\n : { ...option, value: option.id, label: option.label || option.id };\n\nexport function Select(props: SelectProps): JSX.Element {\n const messages = useUiMessages();\n const meta = createFieldMeta(props.id);\n const listboxId = `${meta.controlId}-listbox`;\n const [query, setQuery] = createSignal(\"\");\n const [focusedIndex, setFocusedIndex] = createSignal(-1);\n const [cache, setCache] = createSignal<Record<string, NormalizedOption>>({});\n const [selectedGroup, setSelectedGroup] = createSignal<string | null>(props.defaultGroup ?? null);\n const [selectedView, setSelectedView] = createSignal<SelectView>(props.defaultView ?? \"list\");\n let searchRef: HTMLInputElement | undefined;\n let optionRefs: HTMLButtonElement[] = [];\n const value = () => resolveMaybeAccessor(props.value) ?? null;\n const error = () => resolveMaybeAccessor(props.error);\n const activeGroup = createMemo(() => {\n const current = selectedGroup();\n return current && props.groups?.some((group) => group.value === current) ? current : null;\n });\n const groupChoices = createMemo(() => [{ value: null, label: props.allGroupLabel ?? messages().all }, ...(props.groups ?? [])]);\n const activeView = () => (props.viewToggle ? selectedView() : \"list\");\n\n const loader = createChoiceLoader(\n () =>\n props.fetchData\n ? async (value, signal) => (await props.fetchData!(value, signal, activeGroup())).map(normalize)\n : props.loadOptions\n ? (value, signal) => props.loadOptions!(value, signal, activeGroup())\n : undefined,\n () => props.fetchDebounceMs ?? props.debounceMs ?? 200,\n );\n const isAsync = () => Boolean(props.fetchData || props.loadOptions);\n const isSearchable = () => isAsync() || Boolean(props.searchable);\n const sourceOptions = createMemo(() => (isAsync() ? loader.options() : (props.options ?? []).map(normalize)));\n const groupedOptions = createMemo(() => {\n const group = activeGroup();\n return !isAsync() && group ? sourceOptions().filter((option) => option.groups?.includes(group)) : sourceOptions();\n });\n // Remote loaders filter server-side; a static list has to be filtered here or\n // the search field would render but do nothing.\n const options = createMemo(() =>\n isAsync() || !props.searchable\n ? groupedOptions()\n : props.filterOptions\n ? [...props.filterOptions(groupedOptions(), query())]\n : filterChoiceOptions(groupedOptions(), query()),\n );\n const selected = createMemo(() => {\n const current = value();\n if (current === null) return undefined;\n // Resolve against the unfiltered list so typing in the search field never\n // blanks the trigger label of the current selection.\n return (\n sourceOptions().find((option) => option.value === current) ??\n cache()[current] ??\n (props.selectedOption?.value === current ? props.selectedOption : undefined) ?? {\n value: current,\n label: props.selectedLabel?.() ?? current,\n }\n );\n });\n const hasClearAction = () => Boolean(props.clearable && selected() && !props.disabled);\n const accessibleLabel = () =>\n props[\"aria-label\"] ?? (typeof props.label === \"string\" ? undefined : (props.placeholder ?? messages().selectOption));\n const popover = createChoicePopover(() => Boolean(props.disabled));\n const focusedOption = () => options()[focusedIndex()];\n const focus = (index: number) => {\n setFocusedIndex(index);\n optionRefs[index]?.scrollIntoView({ block: \"nearest\" });\n };\n const move = (direction: 1 | -1) => focus(nextEnabledChoiceIndex(options(), focusedIndex(), direction));\n const chooseGroup = (group: string | null) => {\n if (group === activeGroup()) return;\n setSelectedGroup(group);\n setFocusedIndex(nextEnabledChoiceIndex(options(), -1, 1));\n if (isAsync()) loader.load(query(), true);\n };\n const open = () => {\n if (props.disabled) return;\n setQuery(\"\");\n if (isAsync()) loader.load(\"\", true);\n const selectedIndex = options().findIndex((option) => option.value === value());\n focus(selectedIndex >= 0 ? selectedIndex : nextEnabledChoiceIndex(options(), -1, 1));\n popover.show();\n if (isSearchable()) queueMicrotask(() => searchRef?.focus());\n };\n const close = (restoreFocus = false) => {\n // Hide the top-layer surface before any reactive cleanup or consumer\n // callback can rerender its contents. Selection must feel atomic: the old\n // listbox must never remain visible with the next value.\n popover.hide(restoreFocus);\n loader.cancel();\n setQuery(\"\");\n setFocusedIndex(-1);\n };\n const select = (option: NormalizedOption) => {\n if (option.disabled) return;\n close(true);\n setCache({ ...cache(), [option.value]: option });\n commitFieldValue(props, option.value);\n };\n const onKeyDown = (event: KeyboardEvent) => {\n const inToolbar = Boolean((event.target as HTMLElement | null)?.closest?.(\".k2b-choice-toolbar\"));\n if (inToolbar && event.key !== \"Escape\" && event.key !== \"Tab\") return;\n if (event.key === \"ArrowDown\" || event.key === \"ArrowUp\") {\n event.preventDefault();\n if (!popover.open()) open();\n else move(event.key === \"ArrowDown\" ? 1 : -1);\n } else if ((event.key === \"Enter\" || event.key === \" \") && !popover.open()) {\n event.preventDefault();\n open();\n } else if (event.key === \"Enter\" && focusedOption()) {\n event.preventDefault();\n select(focusedOption()!);\n } else if (event.key === \"Escape\" && popover.open()) {\n // Only swallow Escape while the list is open — a closed select must let\n // the key bubble to an enclosing dialog or drawer.\n event.preventDefault();\n close(true);\n } else if (event.key === \"Tab\" && popover.open()) close();\n };\n const clear = (event: MouseEvent) => {\n event.stopPropagation();\n commitFieldValue(props, null);\n popover.trigger()?.focus();\n };\n\n return (\n <Field\n class={props.class}\n label={props.label}\n description={props.description}\n error={error()}\n meta={meta}\n required={props.required}\n disabled={props.disabled}\n >\n <div class=\"k2b-choice-control\" data-invalid={error() ? \"true\" : undefined}>\n <button\n ref={popover.setTrigger}\n id={meta.controlId}\n type=\"button\"\n class=\"k2b-choice-trigger\"\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n aria-expanded={popover.open()}\n aria-controls={listboxId}\n aria-activedescendant={focusedOption() ? `${listboxId}-${focusedIndex()}` : undefined}\n data-clearable={hasClearAction() ? \"true\" : undefined}\n {...fieldControlAria(meta, {\n ...props,\n \"aria-label\": accessibleLabel(),\n })}\n disabled={props.disabled}\n onClick={() => (popover.open() ? close() : open())}\n onKeyDown={onKeyDown}\n >\n <Show\n when={selected()?.color}\n fallback={<Show when={selected()?.icon}>{(icon) => <i class={icon()} aria-hidden=\"true\" />}</Show>}\n >\n {(color) => <span class=\"k2b-choice-dot\" style={{ \"background-color\": color() }} aria-hidden=\"true\" />}\n </Show>\n <span class=\"k2b-choice-trigger__value\" data-placeholder={selected() ? undefined : \"true\"}>\n {selected()?.label ?? props.placeholder ?? messages().select}\n </span>\n <i class={popover.open() ? (props.activeIcon ?? \"ti ti-chevron-up\") : (props.icon ?? \"ti ti-chevron-down\")} aria-hidden=\"true\" />\n </button>\n <Show when={props.name}>{(name) => <input type=\"hidden\" name={name()} value={value() ?? \"\"} />}</Show>\n <Show when={hasClearAction()}>\n <button type=\"button\" class=\"k2b-choice-control__clear k2b-input-clear-action\" aria-label={messages().clearSelection} onClick={clear}>\n <i class=\"ti ti-x\" aria-hidden=\"true\" />\n </button>\n </Show>\n <div\n ref={popover.setPopover}\n popover=\"manual\"\n class=\"k2b-choice-popover\"\n role=\"group\"\n onKeyDown={onKeyDown}\n aria-label={typeof props.label === \"string\" ? props.label : messages().options}\n >\n <Show when={isSearchable()}>\n <div class=\"k2b-choice-search\">\n <i class=\"ti ti-search\" aria-hidden=\"true\" />\n <input\n ref={searchRef}\n type=\"search\"\n value={query()}\n placeholder={props.searchPlaceholder ?? messages().search}\n aria-label={props.searchPlaceholder ?? messages().searchOptions}\n aria-controls={listboxId}\n aria-activedescendant={focusedOption() ? `${listboxId}-${focusedIndex()}` : undefined}\n onInput={(event) => {\n setQuery(event.currentTarget.value);\n if (isAsync()) loader.load(event.currentTarget.value);\n focus(isAsync() ? -1 : nextEnabledChoiceIndex(options(), -1, 1));\n }}\n />\n </div>\n </Show>\n <Show when={(props.groups?.length ?? 0) > 0 || props.viewToggle}>\n <div class=\"k2b-choice-toolbar\">\n <Show when={(props.groups?.length ?? 0) > 0}>\n <ChoiceGroups\n choices={groupChoices()}\n value={activeGroup()}\n onValueChange={chooseGroup}\n ariaLabel={props.groupsAriaLabel ?? messages().filterOptions}\n controls={listboxId}\n />\n </Show>\n <Show when={props.viewToggle}>\n <button\n type=\"button\"\n class=\"k2b-choice-view-toggle\"\n aria-label={activeView() === \"list\" ? messages().showGridView : messages().showListView}\n aria-controls={listboxId}\n onClick={() => setSelectedView(activeView() === \"list\" ? \"grid\" : \"list\")}\n >\n <i class={activeView() === \"list\" ? \"ti ti-category-2\" : \"ti ti-list-details\"} aria-hidden=\"true\" />\n </button>\n </Show>\n </div>\n </Show>\n <div\n id={listboxId}\n class=\"k2b-choice-options\"\n role=\"listbox\"\n data-view={activeView()}\n data-grid-size={activeView() === \"grid\" ? (props.gridSize ?? \"md\") : undefined}\n >\n <Show when={loader.error()}>\n {(message) => (\n <div class=\"k2b-choice-status\" data-tone=\"danger\">\n <span>{message()}</span>\n <button type=\"button\" onClick={loader.retry}>\n {messages().retry}\n </button>\n </div>\n )}\n </Show>\n <Show when={loader.loading() && options().length === 0}>\n <div class=\"k2b-choice-status\">\n <i class=\"ti ti-loader-2 k2b-spin\" aria-hidden=\"true\" />\n <span>{messages().loading}</span>\n </div>\n </Show>\n <For\n each={loader.error() ? [] : options()}\n fallback={\n <Show when={!loader.loading() && !loader.error()}>\n <div class=\"k2b-choice-status\">{isSearchable() ? messages().noResults : messages().noOptions}</div>\n </Show>\n }\n >\n {(option, index) => (\n <button\n ref={(element) => (optionRefs[index()] = element)}\n type=\"button\"\n id={`${listboxId}-${index()}`}\n class=\"k2b-choice-option\"\n role=\"option\"\n aria-label={option.label}\n aria-selected={option.value === value()}\n data-focused={index() === focusedIndex() ? \"true\" : undefined}\n disabled={option.disabled}\n onPointerMove={() => focus(index())}\n onClick={() => select(option)}\n >\n <Show when={option.color} fallback={<Show when={option.icon}>{(icon) => <i class={icon()} aria-hidden=\"true\" />}</Show>}>\n {(color) => <span class=\"k2b-choice-dot\" style={{ \"background-color\": color() }} aria-hidden=\"true\" />}\n </Show>\n <span>\n <strong>{option.label}</strong>\n <Show when={option.description}>{(description) => <small>{description()}</small>}</Show>\n </span>\n </button>\n )}\n </For>\n </div>\n </div>\n </div>\n </Field>\n );\n}\n\nexport default Select;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { ssrAttribute as _$ssrAttribute } from "solid-js/web";
|
|
2
|
+
import { mergeProps as _$mergeProps } from "solid-js/web";
|
|
3
|
+
import { ssr as _$ssr } from "solid-js/web";
|
|
4
|
+
import { escape as _$escape } from "solid-js/web";
|
|
5
|
+
import { createComponent as _$createComponent } from "solid-js/web";
|
|
6
|
+
var _tmpl$ = ["<span>", "</span>"],
|
|
7
|
+
_tmpl$2 = "<i class=\"ti ti-chevron-down\" aria-hidden=\"true\"></i>",
|
|
8
|
+
_tmpl$3 = ["<i", " aria-hidden=\"true\"></i>"],
|
|
9
|
+
_tmpl$4 = ["<img", " alt>"],
|
|
10
|
+
_tmpl$5 = ["<input type=\"hidden\"", ">"];
|
|
11
|
+
import { createMemo, Show } from "solid-js";
|
|
12
|
+
import { Dropdown } from "../actions/Dropdown";
|
|
13
|
+
import { createFieldMeta, Field, fieldControlAria } from "../internal/field";
|
|
14
|
+
import { useUiMessages } from "../intl/messages";
|
|
15
|
+
import { commitFieldValue, resolveMaybeAccessor } from "./field-contract";
|
|
16
|
+
export function SelectChip(props) {
|
|
17
|
+
const messages = useUiMessages();
|
|
18
|
+
const meta = createFieldMeta(props.id);
|
|
19
|
+
const value = () => resolveMaybeAccessor(props.value);
|
|
20
|
+
const selected = () => props.options.find(option => option.value === value());
|
|
21
|
+
const triggerLabel = () => props["aria-label"] ?? (typeof props.label === "string" ? props.label : messages().chooseOption);
|
|
22
|
+
const items = createMemo(() => props.options.map(option => ({
|
|
23
|
+
action: () => commitFieldValue(props, option.value),
|
|
24
|
+
checked: () => option.value === value(),
|
|
25
|
+
choice: "radio",
|
|
26
|
+
class: "k2b-select-chip__option",
|
|
27
|
+
description: option.description,
|
|
28
|
+
disabled: option.disabled,
|
|
29
|
+
icon: option.icon,
|
|
30
|
+
image: option.image,
|
|
31
|
+
label: option.label
|
|
32
|
+
})));
|
|
33
|
+
return _$createComponent(Field, {
|
|
34
|
+
get ["class"]() {
|
|
35
|
+
return props.class;
|
|
36
|
+
},
|
|
37
|
+
get label() {
|
|
38
|
+
return props.label;
|
|
39
|
+
},
|
|
40
|
+
get description() {
|
|
41
|
+
return props.description;
|
|
42
|
+
},
|
|
43
|
+
get error() {
|
|
44
|
+
return props.error;
|
|
45
|
+
},
|
|
46
|
+
meta: meta,
|
|
47
|
+
get required() {
|
|
48
|
+
return props.required;
|
|
49
|
+
},
|
|
50
|
+
get disabled() {
|
|
51
|
+
return props.disabled;
|
|
52
|
+
},
|
|
53
|
+
get children() {
|
|
54
|
+
return [_$createComponent(Dropdown.Root, {
|
|
55
|
+
get position() {
|
|
56
|
+
return props.position ?? "bottom-right";
|
|
57
|
+
},
|
|
58
|
+
get width() {
|
|
59
|
+
return props.menuWidth ?? "10rem";
|
|
60
|
+
},
|
|
61
|
+
get label() {
|
|
62
|
+
return triggerLabel();
|
|
63
|
+
},
|
|
64
|
+
get items() {
|
|
65
|
+
return items();
|
|
66
|
+
},
|
|
67
|
+
get children() {
|
|
68
|
+
return _$createComponent(Dropdown.Trigger, _$mergeProps({
|
|
69
|
+
get appearance() {
|
|
70
|
+
return props.iconOnly ? "button" : "plain";
|
|
71
|
+
},
|
|
72
|
+
get id() {
|
|
73
|
+
return meta.controlId;
|
|
74
|
+
},
|
|
75
|
+
get ["class"]() {
|
|
76
|
+
return props.iconOnly ? undefined : "k2b-select-chip";
|
|
77
|
+
},
|
|
78
|
+
get disabled() {
|
|
79
|
+
return props.disabled;
|
|
80
|
+
},
|
|
81
|
+
get iconOnly() {
|
|
82
|
+
return props.iconOnly;
|
|
83
|
+
},
|
|
84
|
+
get label() {
|
|
85
|
+
return triggerLabel();
|
|
86
|
+
},
|
|
87
|
+
get size() {
|
|
88
|
+
return props.iconOnly ? props.size : undefined;
|
|
89
|
+
},
|
|
90
|
+
get title() {
|
|
91
|
+
return props.iconOnly ? triggerLabel() : undefined;
|
|
92
|
+
}
|
|
93
|
+
}, () => fieldControlAria(meta, props), {
|
|
94
|
+
get children() {
|
|
95
|
+
return [_$createComponent(Show, {
|
|
96
|
+
get when() {
|
|
97
|
+
return selected()?.image;
|
|
98
|
+
},
|
|
99
|
+
get fallback() {
|
|
100
|
+
return _$createComponent(Show, {
|
|
101
|
+
get when() {
|
|
102
|
+
return selected()?.icon ?? props.icon;
|
|
103
|
+
},
|
|
104
|
+
children: icon => _$ssr(_tmpl$3, _$ssrAttribute("class", _$escape(icon(), true), false))
|
|
105
|
+
});
|
|
106
|
+
},
|
|
107
|
+
children: image => _$ssr(_tmpl$4, _$ssrAttribute("src", _$escape(image(), true), false))
|
|
108
|
+
}), _$createComponent(Show, {
|
|
109
|
+
get when() {
|
|
110
|
+
return !props.iconOnly;
|
|
111
|
+
},
|
|
112
|
+
get children() {
|
|
113
|
+
return [_$ssr(_tmpl$, _$escape(selected()?.label ?? props.placeholder ?? "")), _$ssr(_tmpl$2)];
|
|
114
|
+
}
|
|
115
|
+
})];
|
|
116
|
+
}
|
|
117
|
+
}));
|
|
118
|
+
}
|
|
119
|
+
}), _$createComponent(Show, {
|
|
120
|
+
get when() {
|
|
121
|
+
return props.name;
|
|
122
|
+
},
|
|
123
|
+
children: name => _$ssr(_tmpl$5, _$ssrAttribute("name", _$escape(name(), true), false) + _$ssrAttribute("value", _$escape(value(), true), false))
|
|
124
|
+
})];
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
export default SelectChip;
|
|
129
|
+
//# sourceMappingURL=SelectChip.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createMemo","Show","Dropdown","createFieldMeta","Field","fieldControlAria","useUiMessages","commitFieldValue","resolveMaybeAccessor","SelectChip","props","messages","meta","id","value","selected","options","find","option","triggerLabel","label","chooseOption","items","map","action","checked","choice","class","description","disabled","icon","image","_$createComponent","error","required","children","Root","position","width","menuWidth","Trigger","_$mergeProps","appearance","iconOnly","controlId","undefined","size","title","when","fallback","_$ssr","_tmpl$3","_$ssrAttribute","_$escape","_tmpl$4","_tmpl$","placeholder","_tmpl$2","name","_tmpl$5"],"sources":["inputs/SelectChip.tsx"],"sourcesContent":["import { createMemo, type JSX, Show } from \"solid-js\";\nimport type { ButtonSize } from \"../actions/Button\";\nimport { Dropdown, type DropdownItem, type DropdownPosition } from \"../actions/Dropdown\";\nimport { createFieldMeta, Field, fieldControlAria } from \"../internal/field\";\nimport { useUiMessages } from \"../intl/messages\";\nimport type { MaybeAccessor, ValueFieldProps } from \"./field-contract\";\nimport { commitFieldValue, resolveMaybeAccessor } from \"./field-contract\";\n\nexport type SelectChipOption<T extends string | number = string> = {\n value: T;\n label: string;\n description?: string;\n icon?: string;\n image?: string;\n disabled?: boolean;\n};\n\nexport type SelectChipProps<T extends string | number = string> = ValueFieldProps<T> & {\n value: MaybeAccessor<T>;\n options: SelectChipOption<T>[];\n icon?: string;\n iconOnly?: boolean;\n size?: ButtonSize;\n placeholder?: string;\n position?: DropdownPosition;\n menuWidth?: string;\n name?: string;\n};\n\nexport function SelectChip<T extends string | number = string>(props: SelectChipProps<T>): JSX.Element {\n const messages = useUiMessages();\n const meta = createFieldMeta(props.id);\n const value = () => resolveMaybeAccessor(props.value)!;\n const selected = () => props.options.find((option) => option.value === value());\n const triggerLabel = () => props[\"aria-label\"] ?? (typeof props.label === \"string\" ? props.label : messages().chooseOption);\n const items = createMemo<DropdownItem[]>(() =>\n props.options.map((option) => ({\n action: () => commitFieldValue(props, option.value),\n checked: () => option.value === value(),\n choice: \"radio\" as const,\n class: \"k2b-select-chip__option\",\n description: option.description,\n disabled: option.disabled,\n icon: option.icon,\n image: option.image,\n label: option.label,\n })),\n );\n\n return (\n <Field\n class={props.class}\n label={props.label}\n description={props.description}\n error={props.error}\n meta={meta}\n required={props.required}\n disabled={props.disabled}\n >\n <Dropdown.Root\n position={props.position ?? \"bottom-right\"}\n /* Cloud opens this menu at `w-40`. */\n width={props.menuWidth ?? \"10rem\"}\n label={triggerLabel()}\n items={items()}\n >\n <Dropdown.Trigger\n appearance={props.iconOnly ? \"button\" : \"plain\"}\n id={meta.controlId}\n class={props.iconOnly ? undefined : \"k2b-select-chip\"}\n disabled={props.disabled}\n iconOnly={props.iconOnly}\n label={triggerLabel()}\n size={props.iconOnly ? props.size : undefined}\n title={props.iconOnly ? triggerLabel() : undefined}\n {...fieldControlAria(meta, props)}\n >\n <Show\n when={selected()?.image}\n fallback={<Show when={selected()?.icon ?? props.icon}>{(icon) => <i class={icon()} aria-hidden=\"true\" />}</Show>}\n >\n {(image) => <img src={image()} alt=\"\" />}\n </Show>\n <Show when={!props.iconOnly}>\n <span>{selected()?.label ?? props.placeholder ?? \"\"}</span>\n <i class=\"ti ti-chevron-down\" aria-hidden=\"true\" />\n </Show>\n </Dropdown.Trigger>\n </Dropdown.Root>\n <Show when={props.name}>{(name) => <input type=\"hidden\" name={name()} value={value()} />}</Show>\n </Field>\n );\n}\n\nexport default SelectChip;\n"],"mappings":"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","ignoreList":[]}
|