@edo-w/flatline-solid 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/components/button/button.css +155 -0
- package/dist/src/components/button/button.d.ts +9 -0
- package/dist/src/components/button/button.jsx +21 -0
- package/dist/src/components/button/button.jsx.map +1 -0
- package/dist/src/components/button/class.d.ts +16 -0
- package/dist/src/components/button/class.js +15 -0
- package/dist/src/components/button/class.js.map +1 -0
- package/dist/src/components/button/index.d.ts +2 -0
- package/dist/src/components/button/index.js +3 -0
- package/dist/src/components/button/index.js.map +1 -0
- package/dist/src/components/card/card-action.css +15 -0
- package/dist/src/components/card/card-content.css +13 -0
- package/dist/src/components/card/card-footer.css +39 -0
- package/dist/src/components/card/card-header.css +13 -0
- package/dist/src/components/card/card-root.css +31 -0
- package/dist/src/components/card/card-subtitle.css +12 -0
- package/dist/src/components/card/card-title.css +33 -0
- package/dist/src/components/card/card.d.ts +42 -0
- package/dist/src/components/card/card.jsx +86 -0
- package/dist/src/components/card/card.jsx.map +1 -0
- package/dist/src/components/card/class.d.ts +28 -0
- package/dist/src/components/card/class.js +27 -0
- package/dist/src/components/card/class.js.map +1 -0
- package/dist/src/components/card/index.d.ts +2 -0
- package/dist/src/components/card/index.js +3 -0
- package/dist/src/components/card/index.js.map +1 -0
- package/dist/src/components/checkbox/checkbox-group.css +9 -0
- package/dist/src/components/checkbox/checkbox-group.d.ts +3 -0
- package/dist/src/components/checkbox/checkbox-group.jsx +43 -0
- package/dist/src/components/checkbox/checkbox-group.jsx.map +1 -0
- package/dist/src/components/checkbox/checkbox-root.css +85 -0
- package/dist/src/components/checkbox/checkbox-root.d.ts +4 -0
- package/dist/src/components/checkbox/checkbox-root.jsx +55 -0
- package/dist/src/components/checkbox/checkbox-root.jsx.map +1 -0
- package/dist/src/components/checkbox/checkbox.d.ts +9 -0
- package/dist/src/components/checkbox/checkbox.jsx +6 -0
- package/dist/src/components/checkbox/checkbox.jsx.map +1 -0
- package/dist/src/components/checkbox/class.d.ts +8 -0
- package/dist/src/components/checkbox/class.js +9 -0
- package/dist/src/components/checkbox/class.js.map +1 -0
- package/dist/src/components/checkbox/context.d.ts +9 -0
- package/dist/src/components/checkbox/context.js +6 -0
- package/dist/src/components/checkbox/context.js.map +1 -0
- package/dist/src/components/checkbox/index.d.ts +6 -0
- package/dist/src/components/checkbox/index.js +7 -0
- package/dist/src/components/checkbox/index.js.map +1 -0
- package/dist/src/components/checkbox/types.d.ts +16 -0
- package/dist/src/components/checkbox/types.js +1 -0
- package/dist/src/components/checkbox/types.js.map +1 -0
- package/dist/src/components/combobox/class.d.ts +13 -0
- package/dist/src/components/combobox/class.js +14 -0
- package/dist/src/components/combobox/class.js.map +1 -0
- package/dist/src/components/combobox/combobox-content.css +20 -0
- package/dist/src/components/combobox/combobox-content.d.ts +2 -0
- package/dist/src/components/combobox/combobox-content.jsx +15 -0
- package/dist/src/components/combobox/combobox-content.jsx.map +1 -0
- package/dist/src/components/combobox/combobox-control.css +29 -0
- package/dist/src/components/combobox/combobox-control.d.ts +3 -0
- package/dist/src/components/combobox/combobox-control.jsx +19 -0
- package/dist/src/components/combobox/combobox-control.jsx.map +1 -0
- package/dist/src/components/combobox/combobox-group.css +31 -0
- package/dist/src/components/combobox/combobox-group.d.ts +2 -0
- package/dist/src/components/combobox/combobox-group.jsx +12 -0
- package/dist/src/components/combobox/combobox-group.jsx.map +1 -0
- package/dist/src/components/combobox/combobox-hidden-select.d.ts +2 -0
- package/dist/src/components/combobox/combobox-hidden-select.jsx +8 -0
- package/dist/src/components/combobox/combobox-hidden-select.jsx.map +1 -0
- package/dist/src/components/combobox/combobox-icon.css +11 -0
- package/dist/src/components/combobox/combobox-icon.d.ts +2 -0
- package/dist/src/components/combobox/combobox-icon.jsx +12 -0
- package/dist/src/components/combobox/combobox-icon.jsx.map +1 -0
- package/dist/src/components/combobox/combobox-input.css +32 -0
- package/dist/src/components/combobox/combobox-input.d.ts +3 -0
- package/dist/src/components/combobox/combobox-input.jsx +90 -0
- package/dist/src/components/combobox/combobox-input.jsx.map +1 -0
- package/dist/src/components/combobox/combobox-item-indicator.css +11 -0
- package/dist/src/components/combobox/combobox-item-indicator.d.ts +2 -0
- package/dist/src/components/combobox/combobox-item-indicator.jsx +16 -0
- package/dist/src/components/combobox/combobox-item-indicator.jsx.map +1 -0
- package/dist/src/components/combobox/combobox-item-label.d.ts +2 -0
- package/dist/src/components/combobox/combobox-item-label.jsx +13 -0
- package/dist/src/components/combobox/combobox-item-label.jsx.map +1 -0
- package/dist/src/components/combobox/combobox-item.css +48 -0
- package/dist/src/components/combobox/combobox-item.d.ts +3 -0
- package/dist/src/components/combobox/combobox-item.jsx +30 -0
- package/dist/src/components/combobox/combobox-item.jsx.map +1 -0
- package/dist/src/components/combobox/combobox-listbox.css +18 -0
- package/dist/src/components/combobox/combobox-listbox.d.ts +2 -0
- package/dist/src/components/combobox/combobox-listbox.jsx +39 -0
- package/dist/src/components/combobox/combobox-listbox.jsx.map +1 -0
- package/dist/src/components/combobox/combobox-portal.d.ts +2 -0
- package/dist/src/components/combobox/combobox-portal.jsx +6 -0
- package/dist/src/components/combobox/combobox-portal.jsx.map +1 -0
- package/dist/src/components/combobox/combobox-root.css +12 -0
- package/dist/src/components/combobox/combobox-root.d.ts +3 -0
- package/dist/src/components/combobox/combobox-root.jsx +362 -0
- package/dist/src/components/combobox/combobox-root.jsx.map +1 -0
- package/dist/src/components/combobox/combobox-trigger.css +31 -0
- package/dist/src/components/combobox/combobox-trigger.d.ts +3 -0
- package/dist/src/components/combobox/combobox-trigger.jsx +30 -0
- package/dist/src/components/combobox/combobox-trigger.jsx.map +1 -0
- package/dist/src/components/combobox/combobox.d.ts +43 -0
- package/dist/src/components/combobox/combobox.jsx +39 -0
- package/dist/src/components/combobox/combobox.jsx.map +1 -0
- package/dist/src/components/combobox/context.d.ts +45 -0
- package/dist/src/components/combobox/context.js +18 -0
- package/dist/src/components/combobox/context.js.map +1 -0
- package/dist/src/components/combobox/index.d.ts +2 -0
- package/dist/src/components/combobox/index.js +3 -0
- package/dist/src/components/combobox/index.js.map +1 -0
- package/dist/src/components/combobox/types.d.ts +68 -0
- package/dist/src/components/combobox/types.js +1 -0
- package/dist/src/components/combobox/types.js.map +1 -0
- package/dist/src/components/combobox/util.d.ts +6 -0
- package/dist/src/components/combobox/util.js +58 -0
- package/dist/src/components/combobox/util.js.map +1 -0
- package/dist/src/components/dialog/class.d.ts +18 -0
- package/dist/src/components/dialog/class.js +18 -0
- package/dist/src/components/dialog/class.js.map +1 -0
- package/dist/src/components/dialog/dialog-close-button.css +48 -0
- package/dist/src/components/dialog/dialog-content.css +89 -0
- package/dist/src/components/dialog/dialog-description.css +6 -0
- package/dist/src/components/dialog/dialog-header.css +12 -0
- package/dist/src/components/dialog/dialog-overlay.css +43 -0
- package/dist/src/components/dialog/dialog-positioner.css +14 -0
- package/dist/src/components/dialog/dialog-title.css +6 -0
- package/dist/src/components/dialog/dialog-trigger.css +63 -0
- package/dist/src/components/dialog/dialog.d.ts +50 -0
- package/dist/src/components/dialog/dialog.jsx +89 -0
- package/dist/src/components/dialog/dialog.jsx.map +1 -0
- package/dist/src/components/dialog/index.d.ts +2 -0
- package/dist/src/components/dialog/index.js +3 -0
- package/dist/src/components/dialog/index.js.map +1 -0
- package/dist/src/components/dropdown-menu/class.d.ts +16 -0
- package/dist/src/components/dropdown-menu/class.js +17 -0
- package/dist/src/components/dropdown-menu/class.js.map +1 -0
- package/dist/src/components/dropdown-menu/dropdown-menu-arrow.css +7 -0
- package/dist/src/components/dropdown-menu/dropdown-menu-arrow.d.ts +3 -0
- package/dist/src/components/dropdown-menu/dropdown-menu-arrow.jsx +10 -0
- package/dist/src/components/dropdown-menu/dropdown-menu-arrow.jsx.map +1 -0
- package/dist/src/components/dropdown-menu/dropdown-menu-checkbox-item.css +38 -0
- package/dist/src/components/dropdown-menu/dropdown-menu-checkbox-item.d.ts +3 -0
- package/dist/src/components/dropdown-menu/dropdown-menu-checkbox-item.jsx +10 -0
- package/dist/src/components/dropdown-menu/dropdown-menu-checkbox-item.jsx.map +1 -0
- package/dist/src/components/dropdown-menu/dropdown-menu-content.css +50 -0
- package/dist/src/components/dropdown-menu/dropdown-menu-content.d.ts +3 -0
- package/dist/src/components/dropdown-menu/dropdown-menu-content.jsx +10 -0
- package/dist/src/components/dropdown-menu/dropdown-menu-content.jsx.map +1 -0
- package/dist/src/components/dropdown-menu/dropdown-menu-group-label.css +15 -0
- package/dist/src/components/dropdown-menu/dropdown-menu-group-label.d.ts +3 -0
- package/dist/src/components/dropdown-menu/dropdown-menu-group-label.jsx +10 -0
- package/dist/src/components/dropdown-menu/dropdown-menu-group-label.jsx.map +1 -0
- package/dist/src/components/dropdown-menu/dropdown-menu-group.d.ts +2 -0
- package/dist/src/components/dropdown-menu/dropdown-menu-group.jsx +7 -0
- package/dist/src/components/dropdown-menu/dropdown-menu-group.jsx.map +1 -0
- package/dist/src/components/dropdown-menu/dropdown-menu-icon.css +21 -0
- package/dist/src/components/dropdown-menu/dropdown-menu-icon.d.ts +3 -0
- package/dist/src/components/dropdown-menu/dropdown-menu-icon.jsx +10 -0
- package/dist/src/components/dropdown-menu/dropdown-menu-icon.jsx.map +1 -0
- package/dist/src/components/dropdown-menu/dropdown-menu-item-indicator.css +12 -0
- package/dist/src/components/dropdown-menu/dropdown-menu-item-indicator.d.ts +3 -0
- package/dist/src/components/dropdown-menu/dropdown-menu-item-indicator.jsx +10 -0
- package/dist/src/components/dropdown-menu/dropdown-menu-item-indicator.jsx.map +1 -0
- package/dist/src/components/dropdown-menu/dropdown-menu-item-right-slot.css +18 -0
- package/dist/src/components/dropdown-menu/dropdown-menu-item-right-slot.d.ts +3 -0
- package/dist/src/components/dropdown-menu/dropdown-menu-item-right-slot.jsx +11 -0
- package/dist/src/components/dropdown-menu/dropdown-menu-item-right-slot.jsx.map +1 -0
- package/dist/src/components/dropdown-menu/dropdown-menu-item.css +37 -0
- package/dist/src/components/dropdown-menu/dropdown-menu-item.d.ts +3 -0
- package/dist/src/components/dropdown-menu/dropdown-menu-item.jsx +10 -0
- package/dist/src/components/dropdown-menu/dropdown-menu-item.jsx.map +1 -0
- package/dist/src/components/dropdown-menu/dropdown-menu-portal.d.ts +2 -0
- package/dist/src/components/dropdown-menu/dropdown-menu-portal.jsx +5 -0
- package/dist/src/components/dropdown-menu/dropdown-menu-portal.jsx.map +1 -0
- package/dist/src/components/dropdown-menu/dropdown-menu-radio-group.d.ts +2 -0
- package/dist/src/components/dropdown-menu/dropdown-menu-radio-group.jsx +7 -0
- package/dist/src/components/dropdown-menu/dropdown-menu-radio-group.jsx.map +1 -0
- package/dist/src/components/dropdown-menu/dropdown-menu-radio-item.css +38 -0
- package/dist/src/components/dropdown-menu/dropdown-menu-radio-item.d.ts +3 -0
- package/dist/src/components/dropdown-menu/dropdown-menu-radio-item.jsx +10 -0
- package/dist/src/components/dropdown-menu/dropdown-menu-radio-item.jsx.map +1 -0
- package/dist/src/components/dropdown-menu/dropdown-menu-root.d.ts +2 -0
- package/dist/src/components/dropdown-menu/dropdown-menu-root.jsx +5 -0
- package/dist/src/components/dropdown-menu/dropdown-menu-root.jsx.map +1 -0
- package/dist/src/components/dropdown-menu/dropdown-menu-separator.css +11 -0
- package/dist/src/components/dropdown-menu/dropdown-menu-separator.d.ts +3 -0
- package/dist/src/components/dropdown-menu/dropdown-menu-separator.jsx +10 -0
- package/dist/src/components/dropdown-menu/dropdown-menu-separator.jsx.map +1 -0
- package/dist/src/components/dropdown-menu/dropdown-menu-sub-content.css +26 -0
- package/dist/src/components/dropdown-menu/dropdown-menu-sub-content.d.ts +3 -0
- package/dist/src/components/dropdown-menu/dropdown-menu-sub-content.jsx +10 -0
- package/dist/src/components/dropdown-menu/dropdown-menu-sub-content.jsx.map +1 -0
- package/dist/src/components/dropdown-menu/dropdown-menu-sub-trigger.css +43 -0
- package/dist/src/components/dropdown-menu/dropdown-menu-sub-trigger.d.ts +3 -0
- package/dist/src/components/dropdown-menu/dropdown-menu-sub-trigger.jsx +10 -0
- package/dist/src/components/dropdown-menu/dropdown-menu-sub-trigger.jsx.map +1 -0
- package/dist/src/components/dropdown-menu/dropdown-menu-sub.d.ts +2 -0
- package/dist/src/components/dropdown-menu/dropdown-menu-sub.jsx +5 -0
- package/dist/src/components/dropdown-menu/dropdown-menu-sub.jsx.map +1 -0
- package/dist/src/components/dropdown-menu/dropdown-menu-trigger.css +6 -0
- package/dist/src/components/dropdown-menu/dropdown-menu-trigger.d.ts +3 -0
- package/dist/src/components/dropdown-menu/dropdown-menu-trigger.jsx +16 -0
- package/dist/src/components/dropdown-menu/dropdown-menu-trigger.jsx.map +1 -0
- package/dist/src/components/dropdown-menu/dropdown-menu.d.ts +43 -0
- package/dist/src/components/dropdown-menu/dropdown-menu.jsx +39 -0
- package/dist/src/components/dropdown-menu/dropdown-menu.jsx.map +1 -0
- package/dist/src/components/dropdown-menu/index.d.ts +21 -0
- package/dist/src/components/dropdown-menu/index.js +22 -0
- package/dist/src/components/dropdown-menu/index.js.map +1 -0
- package/dist/src/components/dropdown-menu/types.d.ts +21 -0
- package/dist/src/components/dropdown-menu/types.js +1 -0
- package/dist/src/components/dropdown-menu/types.js.map +1 -0
- package/dist/src/components/input/class.d.ts +3 -0
- package/dist/src/components/input/class.js +4 -0
- package/dist/src/components/input/class.js.map +1 -0
- package/dist/src/components/input/index.d.ts +2 -0
- package/dist/src/components/input/index.js +3 -0
- package/dist/src/components/input/index.js.map +1 -0
- package/dist/src/components/input/input.css +34 -0
- package/dist/src/components/input/input.d.ts +6 -0
- package/dist/src/components/input/input.jsx +10 -0
- package/dist/src/components/input/input.jsx.map +1 -0
- package/dist/src/components/label/class.d.ts +3 -0
- package/dist/src/components/label/class.js +4 -0
- package/dist/src/components/label/class.js.map +1 -0
- package/dist/src/components/label/index.d.ts +2 -0
- package/dist/src/components/label/index.js +3 -0
- package/dist/src/components/label/index.js.map +1 -0
- package/dist/src/components/label/label.css +16 -0
- package/dist/src/components/label/label.d.ts +6 -0
- package/dist/src/components/label/label.jsx +12 -0
- package/dist/src/components/label/label.jsx.map +1 -0
- package/dist/src/components/progress-bar/class.d.ts +4 -0
- package/dist/src/components/progress-bar/class.js +5 -0
- package/dist/src/components/progress-bar/class.js.map +1 -0
- package/dist/src/components/progress-bar/index.d.ts +2 -0
- package/dist/src/components/progress-bar/index.js +3 -0
- package/dist/src/components/progress-bar/index.js.map +1 -0
- package/dist/src/components/progress-bar/progress-bar.css +43 -0
- package/dist/src/components/progress-bar/progress-bar.d.ts +9 -0
- package/dist/src/components/progress-bar/progress-bar.jsx +24 -0
- package/dist/src/components/progress-bar/progress-bar.jsx.map +1 -0
- package/dist/src/components/radio/class.d.ts +8 -0
- package/dist/src/components/radio/class.js +9 -0
- package/dist/src/components/radio/class.js.map +1 -0
- package/dist/src/components/radio/context.d.ts +9 -0
- package/dist/src/components/radio/context.js +6 -0
- package/dist/src/components/radio/context.js.map +1 -0
- package/dist/src/components/radio/index.d.ts +6 -0
- package/dist/src/components/radio/index.js +7 -0
- package/dist/src/components/radio/index.js.map +1 -0
- package/dist/src/components/radio/radio-group.css +9 -0
- package/dist/src/components/radio/radio-group.d.ts +3 -0
- package/dist/src/components/radio/radio-group.jsx +33 -0
- package/dist/src/components/radio/radio-group.jsx.map +1 -0
- package/dist/src/components/radio/radio-root.css +75 -0
- package/dist/src/components/radio/radio-root.d.ts +4 -0
- package/dist/src/components/radio/radio-root.jsx +51 -0
- package/dist/src/components/radio/radio-root.jsx.map +1 -0
- package/dist/src/components/radio/radio.d.ts +11 -0
- package/dist/src/components/radio/radio.jsx +7 -0
- package/dist/src/components/radio/radio.jsx.map +1 -0
- package/dist/src/components/radio/types.d.ts +16 -0
- package/dist/src/components/radio/types.js +1 -0
- package/dist/src/components/radio/types.js.map +1 -0
- package/dist/src/components/select/class.d.ts +5 -0
- package/dist/src/components/select/class.js +6 -0
- package/dist/src/components/select/class.js.map +1 -0
- package/dist/src/components/select/index.d.ts +2 -0
- package/dist/src/components/select/index.js +3 -0
- package/dist/src/components/select/index.js.map +1 -0
- package/dist/src/components/select/select.css +76 -0
- package/dist/src/components/select/select.d.ts +6 -0
- package/dist/src/components/select/select.jsx +16 -0
- package/dist/src/components/select/select.jsx.map +1 -0
- package/dist/src/components/slider/class.d.ts +3 -0
- package/dist/src/components/slider/class.js +4 -0
- package/dist/src/components/slider/class.js.map +1 -0
- package/dist/src/components/slider/index.d.ts +2 -0
- package/dist/src/components/slider/index.js +3 -0
- package/dist/src/components/slider/index.js.map +1 -0
- package/dist/src/components/slider/slider.css +83 -0
- package/dist/src/components/slider/slider.d.ts +7 -0
- package/dist/src/components/slider/slider.jsx +19 -0
- package/dist/src/components/slider/slider.jsx.map +1 -0
- package/dist/src/components/spinner/class.d.ts +10 -0
- package/dist/src/components/spinner/class.js +10 -0
- package/dist/src/components/spinner/class.js.map +1 -0
- package/dist/src/components/spinner/index.d.ts +2 -0
- package/dist/src/components/spinner/index.js +3 -0
- package/dist/src/components/spinner/index.js.map +1 -0
- package/dist/src/components/spinner/spinner.css +51 -0
- package/dist/src/components/spinner/spinner.d.ts +9 -0
- package/dist/src/components/spinner/spinner.jsx +22 -0
- package/dist/src/components/spinner/spinner.jsx.map +1 -0
- package/dist/src/components/switch/class.d.ts +7 -0
- package/dist/src/components/switch/class.js +8 -0
- package/dist/src/components/switch/class.js.map +1 -0
- package/dist/src/components/switch/index.d.ts +2 -0
- package/dist/src/components/switch/index.js +3 -0
- package/dist/src/components/switch/index.js.map +1 -0
- package/dist/src/components/switch/switch.css +90 -0
- package/dist/src/components/switch/switch.d.ts +9 -0
- package/dist/src/components/switch/switch.jsx +28 -0
- package/dist/src/components/switch/switch.jsx.map +1 -0
- package/dist/src/components/table/class.d.ts +10 -0
- package/dist/src/components/table/class.js +11 -0
- package/dist/src/components/table/class.js.map +1 -0
- package/dist/src/components/table/index.d.ts +11 -0
- package/dist/src/components/table/index.js +12 -0
- package/dist/src/components/table/index.js.map +1 -0
- package/dist/src/components/table/table-body.d.ts +2 -0
- package/dist/src/components/table/table-body.jsx +10 -0
- package/dist/src/components/table/table-body.jsx.map +1 -0
- package/dist/src/components/table/table-caption.css +11 -0
- package/dist/src/components/table/table-caption.d.ts +3 -0
- package/dist/src/components/table/table-caption.jsx +11 -0
- package/dist/src/components/table/table-caption.jsx.map +1 -0
- package/dist/src/components/table/table-cell.css +12 -0
- package/dist/src/components/table/table-cell.d.ts +3 -0
- package/dist/src/components/table/table-cell.jsx +11 -0
- package/dist/src/components/table/table-cell.jsx.map +1 -0
- package/dist/src/components/table/table-footer.css +15 -0
- package/dist/src/components/table/table-footer.d.ts +3 -0
- package/dist/src/components/table/table-footer.jsx +11 -0
- package/dist/src/components/table/table-footer.jsx.map +1 -0
- package/dist/src/components/table/table-head.css +16 -0
- package/dist/src/components/table/table-head.d.ts +3 -0
- package/dist/src/components/table/table-head.jsx +11 -0
- package/dist/src/components/table/table-head.jsx.map +1 -0
- package/dist/src/components/table/table-header.d.ts +2 -0
- package/dist/src/components/table/table-header.jsx +10 -0
- package/dist/src/components/table/table-header.jsx.map +1 -0
- package/dist/src/components/table/table-root.css +12 -0
- package/dist/src/components/table/table-root.d.ts +3 -0
- package/dist/src/components/table/table-root.jsx +11 -0
- package/dist/src/components/table/table-root.jsx.map +1 -0
- package/dist/src/components/table/table-row.css +6 -0
- package/dist/src/components/table/table-row.d.ts +3 -0
- package/dist/src/components/table/table-row.jsx +11 -0
- package/dist/src/components/table/table-row.jsx.map +1 -0
- package/dist/src/components/table/table.d.ts +23 -0
- package/dist/src/components/table/table.jsx +19 -0
- package/dist/src/components/table/table.jsx.map +1 -0
- package/dist/src/components/table/types.d.ts +9 -0
- package/dist/src/components/table/types.js +1 -0
- package/dist/src/components/table/types.js.map +1 -0
- package/dist/src/components/tabs/class.d.ts +12 -0
- package/dist/src/components/tabs/class.js +12 -0
- package/dist/src/components/tabs/class.js.map +1 -0
- package/dist/src/components/tabs/index.d.ts +2 -0
- package/dist/src/components/tabs/index.js +3 -0
- package/dist/src/components/tabs/index.js.map +1 -0
- package/dist/src/components/tabs/tabs-content.css +24 -0
- package/dist/src/components/tabs/tabs-indicator.css +32 -0
- package/dist/src/components/tabs/tabs-list.css +26 -0
- package/dist/src/components/tabs/tabs-root.css +34 -0
- package/dist/src/components/tabs/tabs-trigger.css +58 -0
- package/dist/src/components/tabs/tabs.d.ts +27 -0
- package/dist/src/components/tabs/tabs.jsx +47 -0
- package/dist/src/components/tabs/tabs.jsx.map +1 -0
- package/dist/src/components/textarea/class.d.ts +3 -0
- package/dist/src/components/textarea/class.js +4 -0
- package/dist/src/components/textarea/class.js.map +1 -0
- package/dist/src/components/textarea/index.d.ts +2 -0
- package/dist/src/components/textarea/index.js +3 -0
- package/dist/src/components/textarea/index.js.map +1 -0
- package/dist/src/components/textarea/textarea.css +46 -0
- package/dist/src/components/textarea/textarea.d.ts +6 -0
- package/dist/src/components/textarea/textarea.jsx +10 -0
- package/dist/src/components/textarea/textarea.jsx.map +1 -0
- package/dist/src/components/xstack/class.d.ts +12 -0
- package/dist/src/components/xstack/class.js +12 -0
- package/dist/src/components/xstack/class.js.map +1 -0
- package/dist/src/components/xstack/index.d.ts +1 -0
- package/dist/src/components/xstack/index.js +1 -0
- package/dist/src/components/xstack/index.js.map +1 -0
- package/dist/src/components/xstack/xstack.css +34 -0
- package/dist/src/components/xstack/xstack.d.ts +9 -0
- package/dist/src/components/xstack/xstack.jsx +15 -0
- package/dist/src/components/xstack/xstack.jsx.map +1 -0
- package/dist/src/components/ystack/class.d.ts +11 -0
- package/dist/src/components/ystack/class.js +11 -0
- package/dist/src/components/ystack/class.js.map +1 -0
- package/dist/src/components/ystack/index.d.ts +2 -0
- package/dist/src/components/ystack/index.js +3 -0
- package/dist/src/components/ystack/index.js.map +1 -0
- package/dist/src/components/ystack/ystack.css +31 -0
- package/dist/src/components/ystack/ystack.d.ts +9 -0
- package/dist/src/components/ystack/ystack.jsx +15 -0
- package/dist/src/components/ystack/ystack.jsx.map +1 -0
- package/dist/src/icons/check-icon.d.ts +2 -0
- package/dist/src/icons/check-icon.jsx +8 -0
- package/dist/src/icons/check-icon.jsx.map +1 -0
- package/dist/src/icons/chevron-down-icon.d.ts +2 -0
- package/dist/src/icons/chevron-down-icon.jsx +8 -0
- package/dist/src/icons/chevron-down-icon.jsx.map +1 -0
- package/dist/src/icons/chevron-right-icon.d.ts +2 -0
- package/dist/src/icons/chevron-right-icon.jsx +8 -0
- package/dist/src/icons/chevron-right-icon.jsx.map +1 -0
- package/dist/src/icons/dot-filled-icon.d.ts +2 -0
- package/dist/src/icons/dot-filled-icon.jsx +8 -0
- package/dist/src/icons/dot-filled-icon.jsx.map +1 -0
- package/dist/src/icons/index.d.ts +5 -0
- package/dist/src/icons/index.js +6 -0
- package/dist/src/icons/index.js.map +1 -0
- package/dist/src/icons/types.d.ts +5 -0
- package/dist/src/icons/types.js +1 -0
- package/dist/src/icons/types.js.map +1 -0
- package/dist/src/index.d.ts +19 -0
- package/dist/src/index.js +20 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/lib/reflect.d.ts +1 -0
- package/dist/src/lib/reflect.js +4 -0
- package/dist/src/lib/reflect.js.map +1 -0
- package/dist/src/style/colors.css +267 -0
- package/dist/src/style/flatline.css +12 -0
- package/dist/src/style/reset.css +175 -0
- package/dist/src/style/tokens.css +139 -0
- package/package.json +48 -0
|
@@ -0,0 +1,362 @@
|
|
|
1
|
+
import clsx from 'clsx/lite';
|
|
2
|
+
import { children, createEffect, createMemo, createSignal, createUniqueId, mergeProps, onCleanup, onMount, splitProps, } from 'solid-js';
|
|
3
|
+
import { comboboxClass } from './class';
|
|
4
|
+
import { ComboboxContent } from './combobox-content';
|
|
5
|
+
import { ComboboxControl } from './combobox-control';
|
|
6
|
+
import { ComboboxInput } from './combobox-input';
|
|
7
|
+
import { ComboboxListbox } from './combobox-listbox';
|
|
8
|
+
import { ComboboxPortal } from './combobox-portal';
|
|
9
|
+
import { ComboboxTrigger } from './combobox-trigger';
|
|
10
|
+
import { ComboboxContext } from './context';
|
|
11
|
+
import { callEventHandler, createContainsFilter, defaultTextValue, resolveAccessor, resolveGroupChildren, } from './util';
|
|
12
|
+
export function ComboboxRoot(props) {
|
|
13
|
+
const merged = mergeProps({
|
|
14
|
+
closeOnSelection: true,
|
|
15
|
+
}, props);
|
|
16
|
+
const [local, rest] = splitProps(merged, [
|
|
17
|
+
'class',
|
|
18
|
+
'children',
|
|
19
|
+
'options',
|
|
20
|
+
'optionValue',
|
|
21
|
+
'optionTextValue',
|
|
22
|
+
'optionLabel',
|
|
23
|
+
'optionDisabled',
|
|
24
|
+
'optionGroupChildren',
|
|
25
|
+
'itemComponent',
|
|
26
|
+
'groupComponent',
|
|
27
|
+
'placeholder',
|
|
28
|
+
'value',
|
|
29
|
+
'defaultValue',
|
|
30
|
+
'inputValue',
|
|
31
|
+
'defaultInputValue',
|
|
32
|
+
'onChange',
|
|
33
|
+
'onInputChange',
|
|
34
|
+
'open',
|
|
35
|
+
'defaultOpen',
|
|
36
|
+
'onOpenChange',
|
|
37
|
+
'disabled',
|
|
38
|
+
'readOnly',
|
|
39
|
+
'required',
|
|
40
|
+
'name',
|
|
41
|
+
'closeOnSelection',
|
|
42
|
+
'onFocusOut',
|
|
43
|
+
]);
|
|
44
|
+
const resolvedChildren = children(() => local.children);
|
|
45
|
+
const rootId = createUniqueId();
|
|
46
|
+
const [rootRef, setRootRef] = createSignal();
|
|
47
|
+
const [inputRef, setInputRef] = createSignal();
|
|
48
|
+
const [internalValue, setInternalValue] = createSignal(local.defaultValue ?? null);
|
|
49
|
+
const [internalOpen, setInternalOpen] = createSignal(Boolean(local.defaultOpen));
|
|
50
|
+
const [internalInputValue, setInternalInputValue] = createSignal(local.defaultInputValue ?? '');
|
|
51
|
+
const [filterValue, setFilterValue] = createSignal('');
|
|
52
|
+
const [highlightedKey, setHighlightedKey] = createSignal(null);
|
|
53
|
+
const isControlledValue = () => local.value !== undefined;
|
|
54
|
+
const isControlledInputValue = () => local.inputValue !== undefined;
|
|
55
|
+
const isControlledOpen = () => local.open !== undefined;
|
|
56
|
+
const filter = createMemo(() => createContainsFilter());
|
|
57
|
+
const inputValue = createMemo(() => {
|
|
58
|
+
if (isControlledInputValue()) {
|
|
59
|
+
return local.inputValue ?? '';
|
|
60
|
+
}
|
|
61
|
+
return internalInputValue();
|
|
62
|
+
});
|
|
63
|
+
const normalizedGroups = createMemo(() => {
|
|
64
|
+
const groups = [];
|
|
65
|
+
const looseItems = [];
|
|
66
|
+
let itemIndex = 0;
|
|
67
|
+
for (let index = 0; index < local.options.length; index += 1) {
|
|
68
|
+
const entry = local.options[index];
|
|
69
|
+
const groupChildren = resolveGroupChildren(entry, local.optionGroupChildren);
|
|
70
|
+
if (groupChildren !== undefined) {
|
|
71
|
+
const groupItems = groupChildren.map((option) => {
|
|
72
|
+
const value = String(resolveAccessor(option, local.optionValue, defaultTextValue));
|
|
73
|
+
const label = resolveAccessor(option, local.optionLabel, defaultTextValue);
|
|
74
|
+
const textValue = resolveAccessor(option, local.optionTextValue, () => label);
|
|
75
|
+
const disabled = Boolean(resolveAccessor(option, local.optionDisabled, () => false));
|
|
76
|
+
const item = {
|
|
77
|
+
key: `${value}-${itemIndex}`,
|
|
78
|
+
value,
|
|
79
|
+
label,
|
|
80
|
+
textValue,
|
|
81
|
+
disabled,
|
|
82
|
+
rawValue: option,
|
|
83
|
+
};
|
|
84
|
+
itemIndex += 1;
|
|
85
|
+
return item;
|
|
86
|
+
});
|
|
87
|
+
groups.push({
|
|
88
|
+
key: `group-${index}`,
|
|
89
|
+
textValue: defaultTextValue(entry),
|
|
90
|
+
rawValue: entry,
|
|
91
|
+
items: groupItems,
|
|
92
|
+
});
|
|
93
|
+
continue;
|
|
94
|
+
}
|
|
95
|
+
const option = entry;
|
|
96
|
+
const value = String(resolveAccessor(option, local.optionValue, defaultTextValue));
|
|
97
|
+
const label = resolveAccessor(option, local.optionLabel, defaultTextValue);
|
|
98
|
+
const textValue = resolveAccessor(option, local.optionTextValue, () => label);
|
|
99
|
+
const disabled = Boolean(resolveAccessor(option, local.optionDisabled, () => false));
|
|
100
|
+
looseItems.push({
|
|
101
|
+
key: `${value}-${itemIndex}`,
|
|
102
|
+
value,
|
|
103
|
+
label,
|
|
104
|
+
textValue,
|
|
105
|
+
disabled,
|
|
106
|
+
rawValue: option,
|
|
107
|
+
});
|
|
108
|
+
itemIndex += 1;
|
|
109
|
+
}
|
|
110
|
+
if (looseItems.length > 0) {
|
|
111
|
+
groups.unshift({
|
|
112
|
+
key: 'group-root',
|
|
113
|
+
textValue: '',
|
|
114
|
+
items: looseItems,
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
return groups;
|
|
118
|
+
});
|
|
119
|
+
const allItems = createMemo(() => normalizedGroups().flatMap((group) => group.items));
|
|
120
|
+
const selectedItem = createMemo(() => {
|
|
121
|
+
let selectedOption = internalValue();
|
|
122
|
+
if (isControlledValue()) {
|
|
123
|
+
selectedOption = local.value ?? null;
|
|
124
|
+
}
|
|
125
|
+
if (selectedOption == null) {
|
|
126
|
+
return null;
|
|
127
|
+
}
|
|
128
|
+
const selectedValue = String(resolveAccessor(selectedOption, local.optionValue, defaultTextValue));
|
|
129
|
+
return allItems().find((item) => item.value === selectedValue) ?? null;
|
|
130
|
+
});
|
|
131
|
+
const visibleGroups = createMemo(() => {
|
|
132
|
+
const currentInput = filterValue().trim();
|
|
133
|
+
return normalizedGroups()
|
|
134
|
+
.map((group) => ({
|
|
135
|
+
...group,
|
|
136
|
+
items: group.items.filter((item) => filter()(item.rawValue, currentInput)),
|
|
137
|
+
}))
|
|
138
|
+
.filter((group) => group.items.length > 0);
|
|
139
|
+
});
|
|
140
|
+
const visibleItems = createMemo(() => visibleGroups().flatMap((group) => group.items));
|
|
141
|
+
const isOpen = createMemo(() => (isControlledOpen() ? Boolean(local.open) : internalOpen()) && visibleItems().length > 0);
|
|
142
|
+
const setOpen = (value) => {
|
|
143
|
+
if (!isControlledOpen()) {
|
|
144
|
+
setInternalOpen(value);
|
|
145
|
+
}
|
|
146
|
+
local.onOpenChange?.(value);
|
|
147
|
+
};
|
|
148
|
+
const setSelectedOption = (value) => {
|
|
149
|
+
if (!isControlledValue()) {
|
|
150
|
+
setInternalValue(() => value);
|
|
151
|
+
}
|
|
152
|
+
local.onChange?.(value);
|
|
153
|
+
};
|
|
154
|
+
const setDisplayedInputValue = (value, emitChange = false) => {
|
|
155
|
+
if (!isControlledInputValue()) {
|
|
156
|
+
setInternalInputValue(value);
|
|
157
|
+
}
|
|
158
|
+
if (emitChange) {
|
|
159
|
+
local.onInputChange?.(value);
|
|
160
|
+
}
|
|
161
|
+
};
|
|
162
|
+
const restoreInputFromSelection = () => {
|
|
163
|
+
setDisplayedInputValue(selectedItem()?.label ?? '');
|
|
164
|
+
setFilterValue('');
|
|
165
|
+
};
|
|
166
|
+
const highlightByIndex = (index) => {
|
|
167
|
+
const items = visibleItems();
|
|
168
|
+
if (items.length === 0) {
|
|
169
|
+
setHighlightedKey(null);
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
const boundedIndex = (index + items.length) % items.length;
|
|
173
|
+
setHighlightedKey(items[boundedIndex]?.key ?? null);
|
|
174
|
+
};
|
|
175
|
+
const highlightFirst = () => highlightByIndex(0);
|
|
176
|
+
const highlightLast = () => highlightByIndex(visibleItems().length - 1);
|
|
177
|
+
const highlightNext = () => {
|
|
178
|
+
const items = visibleItems();
|
|
179
|
+
const index = items.findIndex((item) => item.key === highlightedKey());
|
|
180
|
+
highlightByIndex(index >= 0 ? index + 1 : 0);
|
|
181
|
+
};
|
|
182
|
+
const highlightPrevious = () => {
|
|
183
|
+
const items = visibleItems();
|
|
184
|
+
const index = items.findIndex((item) => item.key === highlightedKey());
|
|
185
|
+
highlightByIndex(index >= 0 ? index - 1 : items.length - 1);
|
|
186
|
+
};
|
|
187
|
+
const openPopup = (strategy = 'first') => {
|
|
188
|
+
if (local.disabled || local.readOnly || visibleItems().length === 0) {
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
setOpen(true);
|
|
192
|
+
if (strategy === 'last') {
|
|
193
|
+
highlightLast();
|
|
194
|
+
return;
|
|
195
|
+
}
|
|
196
|
+
if (strategy === 'preserve') {
|
|
197
|
+
if (highlightedKey() !== null) {
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
if (selectedItem()) {
|
|
201
|
+
setHighlightedKey(selectedItem().key);
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
highlightFirst();
|
|
206
|
+
};
|
|
207
|
+
const closePopup = (restoreInput = true) => {
|
|
208
|
+
setOpen(false);
|
|
209
|
+
setHighlightedKey(null);
|
|
210
|
+
if (restoreInput) {
|
|
211
|
+
restoreInputFromSelection();
|
|
212
|
+
}
|
|
213
|
+
};
|
|
214
|
+
const selectItem = (item) => {
|
|
215
|
+
if (item.disabled) {
|
|
216
|
+
return;
|
|
217
|
+
}
|
|
218
|
+
setSelectedOption(item.rawValue);
|
|
219
|
+
setDisplayedInputValue(item.label);
|
|
220
|
+
setFilterValue('');
|
|
221
|
+
setHighlightedKey(item.key);
|
|
222
|
+
if (local.closeOnSelection) {
|
|
223
|
+
setOpen(false);
|
|
224
|
+
}
|
|
225
|
+
inputRef()?.focus();
|
|
226
|
+
};
|
|
227
|
+
const clearPendingInput = () => {
|
|
228
|
+
if (selectedItem() === null) {
|
|
229
|
+
setDisplayedInputValue('');
|
|
230
|
+
setFilterValue('');
|
|
231
|
+
return;
|
|
232
|
+
}
|
|
233
|
+
restoreInputFromSelection();
|
|
234
|
+
};
|
|
235
|
+
const clearSelectedItem = () => {
|
|
236
|
+
setSelectedOption(null);
|
|
237
|
+
setDisplayedInputValue('');
|
|
238
|
+
setFilterValue('');
|
|
239
|
+
setHighlightedKey(null);
|
|
240
|
+
setOpen(false);
|
|
241
|
+
inputRef()?.focus();
|
|
242
|
+
};
|
|
243
|
+
createEffect(() => {
|
|
244
|
+
if (isControlledValue() && selectedItem() !== null) {
|
|
245
|
+
restoreInputFromSelection();
|
|
246
|
+
}
|
|
247
|
+
});
|
|
248
|
+
createEffect(() => {
|
|
249
|
+
const items = visibleItems();
|
|
250
|
+
const selected = selectedItem();
|
|
251
|
+
if (items.length === 0) {
|
|
252
|
+
setHighlightedKey(null);
|
|
253
|
+
setOpen(false);
|
|
254
|
+
return;
|
|
255
|
+
}
|
|
256
|
+
if (highlightedKey() && items.some((item) => item.key === highlightedKey())) {
|
|
257
|
+
return;
|
|
258
|
+
}
|
|
259
|
+
if (isOpen()) {
|
|
260
|
+
if (selected && items.some((item) => item.key === selected.key)) {
|
|
261
|
+
setHighlightedKey(selected.key);
|
|
262
|
+
return;
|
|
263
|
+
}
|
|
264
|
+
highlightFirst();
|
|
265
|
+
}
|
|
266
|
+
});
|
|
267
|
+
onMount(() => {
|
|
268
|
+
restoreInputFromSelection();
|
|
269
|
+
const handlePointerDown = (event) => {
|
|
270
|
+
const root = rootRef();
|
|
271
|
+
if (!root || root.contains(event.target)) {
|
|
272
|
+
return;
|
|
273
|
+
}
|
|
274
|
+
closePopup(true);
|
|
275
|
+
};
|
|
276
|
+
document.addEventListener('pointerdown', handlePointerDown);
|
|
277
|
+
onCleanup(() => {
|
|
278
|
+
document.removeEventListener('pointerdown', handlePointerDown);
|
|
279
|
+
});
|
|
280
|
+
});
|
|
281
|
+
const context = {
|
|
282
|
+
rootId,
|
|
283
|
+
rootRef,
|
|
284
|
+
setRootRef,
|
|
285
|
+
inputRef,
|
|
286
|
+
setInputRef,
|
|
287
|
+
inputValue,
|
|
288
|
+
setInputValue: (value) => {
|
|
289
|
+
setDisplayedInputValue(value, true);
|
|
290
|
+
setFilterValue(value);
|
|
291
|
+
if (selectedItem() && value !== selectedItem().label) {
|
|
292
|
+
setSelectedOption(null);
|
|
293
|
+
}
|
|
294
|
+
if (value.trim() === '') {
|
|
295
|
+
closePopup(false);
|
|
296
|
+
return;
|
|
297
|
+
}
|
|
298
|
+
openPopup('first');
|
|
299
|
+
},
|
|
300
|
+
isOpen,
|
|
301
|
+
openPopup,
|
|
302
|
+
closePopup,
|
|
303
|
+
togglePopup: () => {
|
|
304
|
+
if (isOpen()) {
|
|
305
|
+
closePopup(true);
|
|
306
|
+
return;
|
|
307
|
+
}
|
|
308
|
+
openPopup('first');
|
|
309
|
+
},
|
|
310
|
+
visibleGroups,
|
|
311
|
+
visibleItems,
|
|
312
|
+
selectedItem,
|
|
313
|
+
highlightedKey,
|
|
314
|
+
setHighlightedKey,
|
|
315
|
+
highlightNext,
|
|
316
|
+
highlightPrevious,
|
|
317
|
+
highlightFirst,
|
|
318
|
+
highlightLast,
|
|
319
|
+
selectItem,
|
|
320
|
+
getItemId: (key) => `${rootId}-item-${key}`,
|
|
321
|
+
itemComponent: local.itemComponent,
|
|
322
|
+
groupComponent: local.groupComponent,
|
|
323
|
+
placeholder: () => local.placeholder,
|
|
324
|
+
disabled: () => Boolean(local.disabled),
|
|
325
|
+
readOnly: () => Boolean(local.readOnly),
|
|
326
|
+
required: () => Boolean(local.required),
|
|
327
|
+
name: () => local.name,
|
|
328
|
+
clearPendingInput,
|
|
329
|
+
clearSelectedItem,
|
|
330
|
+
};
|
|
331
|
+
const rootClass = () => clsx(comboboxClass.root, local.class);
|
|
332
|
+
const handleFocusOut = (event) => {
|
|
333
|
+
callEventHandler(local.onFocusOut, event);
|
|
334
|
+
const nextTarget = event.relatedTarget;
|
|
335
|
+
if (nextTarget && rootRef()?.contains(nextTarget)) {
|
|
336
|
+
return;
|
|
337
|
+
}
|
|
338
|
+
queueMicrotask(() => {
|
|
339
|
+
const activeElement = document.activeElement;
|
|
340
|
+
if (activeElement instanceof Node && rootRef()?.contains(activeElement)) {
|
|
341
|
+
return;
|
|
342
|
+
}
|
|
343
|
+
closePopup(true);
|
|
344
|
+
});
|
|
345
|
+
};
|
|
346
|
+
return (<ComboboxContext.Provider value={context}>
|
|
347
|
+
<div class={rootClass()} ref={setRootRef} onFocusOut={handleFocusOut} {...rest}>
|
|
348
|
+
{local.children ? (resolvedChildren()) : (<>
|
|
349
|
+
<ComboboxControl>
|
|
350
|
+
<ComboboxInput aria-label={local.placeholder ?? 'Combobox'}/>
|
|
351
|
+
<ComboboxTrigger />
|
|
352
|
+
</ComboboxControl>
|
|
353
|
+
<ComboboxPortal>
|
|
354
|
+
<ComboboxContent>
|
|
355
|
+
<ComboboxListbox />
|
|
356
|
+
</ComboboxContent>
|
|
357
|
+
</ComboboxPortal>
|
|
358
|
+
</>)}
|
|
359
|
+
</div>
|
|
360
|
+
</ComboboxContext.Provider>);
|
|
361
|
+
}
|
|
362
|
+
//# sourceMappingURL=combobox-root.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"combobox-root.jsx","sourceRoot":"","sources":["../../../../src/components/combobox/combobox-root.tsx"],"names":[],"mappings":"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","sourcesContent":["import clsx from 'clsx/lite';\nimport {\n\tchildren,\n\tcreateEffect,\n\tcreateMemo,\n\tcreateSignal,\n\tcreateUniqueId,\n\ttype JSX,\n\tmergeProps,\n\tonCleanup,\n\tonMount,\n\tsplitProps,\n} from 'solid-js';\nimport { comboboxClass } from './class';\nimport { ComboboxContent } from './combobox-content';\nimport { ComboboxControl } from './combobox-control';\nimport { ComboboxInput } from './combobox-input';\nimport { ComboboxListbox } from './combobox-listbox';\nimport { ComboboxPortal } from './combobox-portal';\nimport { ComboboxTrigger } from './combobox-trigger';\nimport { ComboboxContext, type ComboboxContextValue } from './context';\nimport type { ComboboxGroupData, ComboboxItemData, ComboboxRootProps } from './types';\nimport {\n\tcallEventHandler,\n\tcreateContainsFilter,\n\tdefaultTextValue,\n\tresolveAccessor,\n\tresolveGroupChildren,\n} from './util';\n\nexport function ComboboxRoot<TOption, TOptionGroup = never>(props: ComboboxRootProps<TOption, TOptionGroup>) {\n\tconst merged = mergeProps(\n\t\t{\n\t\t\tcloseOnSelection: true,\n\t\t},\n\t\tprops,\n\t);\n\n\tconst [local, rest] = splitProps(merged, [\n\t\t'class',\n\t\t'children',\n\t\t'options',\n\t\t'optionValue',\n\t\t'optionTextValue',\n\t\t'optionLabel',\n\t\t'optionDisabled',\n\t\t'optionGroupChildren',\n\t\t'itemComponent',\n\t\t'groupComponent',\n\t\t'placeholder',\n\t\t'value',\n\t\t'defaultValue',\n\t\t'inputValue',\n\t\t'defaultInputValue',\n\t\t'onChange',\n\t\t'onInputChange',\n\t\t'open',\n\t\t'defaultOpen',\n\t\t'onOpenChange',\n\t\t'disabled',\n\t\t'readOnly',\n\t\t'required',\n\t\t'name',\n\t\t'closeOnSelection',\n\t\t'onFocusOut',\n\t]);\n\tconst resolvedChildren = children(() => local.children);\n\n\tconst rootId = createUniqueId();\n\tconst [rootRef, setRootRef] = createSignal<HTMLDivElement>();\n\tconst [inputRef, setInputRef] = createSignal<HTMLInputElement>();\n\tconst [internalValue, setInternalValue] = createSignal<TOption | null>(local.defaultValue ?? null);\n\tconst [internalOpen, setInternalOpen] = createSignal(Boolean(local.defaultOpen));\n\tconst [internalInputValue, setInternalInputValue] = createSignal(local.defaultInputValue ?? '');\n\tconst [filterValue, setFilterValue] = createSignal('');\n\tconst [highlightedKey, setHighlightedKey] = createSignal<string | null>(null);\n\tconst isControlledValue = () => local.value !== undefined;\n\tconst isControlledInputValue = () => local.inputValue !== undefined;\n\tconst isControlledOpen = () => local.open !== undefined;\n\tconst filter = createMemo(() => createContainsFilter<TOption>());\n\tconst inputValue = createMemo(() => {\n\t\tif (isControlledInputValue()) {\n\t\t\treturn local.inputValue ?? '';\n\t\t}\n\n\t\treturn internalInputValue();\n\t});\n\n\tconst normalizedGroups = createMemo<Array<ComboboxGroupData<TOptionGroup, TOption>>>(() => {\n\t\tconst groups: Array<ComboboxGroupData<TOptionGroup, TOption>> = [];\n\t\tconst looseItems: ComboboxItemData<TOption>[] = [];\n\t\tlet itemIndex = 0;\n\n\t\tfor (let index = 0; index < local.options.length; index += 1) {\n\t\t\tconst entry = local.options[index] as TOption | TOptionGroup;\n\t\t\tconst groupChildren = resolveGroupChildren(entry as TOptionGroup, local.optionGroupChildren);\n\n\t\t\tif (groupChildren !== undefined) {\n\t\t\t\tconst groupItems = groupChildren.map((option) => {\n\t\t\t\t\tconst value = String(resolveAccessor(option, local.optionValue, defaultTextValue));\n\t\t\t\t\tconst label = resolveAccessor(option, local.optionLabel, defaultTextValue);\n\t\t\t\t\tconst textValue = resolveAccessor(option, local.optionTextValue, () => label);\n\t\t\t\t\tconst disabled = Boolean(resolveAccessor(option, local.optionDisabled, () => false));\n\t\t\t\t\tconst item = {\n\t\t\t\t\t\tkey: `${value}-${itemIndex}`,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tlabel,\n\t\t\t\t\t\ttextValue,\n\t\t\t\t\t\tdisabled,\n\t\t\t\t\t\trawValue: option,\n\t\t\t\t\t};\n\n\t\t\t\t\titemIndex += 1;\n\n\t\t\t\t\treturn item;\n\t\t\t\t});\n\n\t\t\t\tgroups.push({\n\t\t\t\t\tkey: `group-${index}`,\n\t\t\t\t\ttextValue: defaultTextValue(entry),\n\t\t\t\t\trawValue: entry as TOptionGroup,\n\t\t\t\t\titems: groupItems,\n\t\t\t\t});\n\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst option = entry as TOption;\n\t\t\tconst value = String(resolveAccessor(option, local.optionValue, defaultTextValue));\n\t\t\tconst label = resolveAccessor(option, local.optionLabel, defaultTextValue);\n\t\t\tconst textValue = resolveAccessor(option, local.optionTextValue, () => label);\n\t\t\tconst disabled = Boolean(resolveAccessor(option, local.optionDisabled, () => false));\n\n\t\t\tlooseItems.push({\n\t\t\t\tkey: `${value}-${itemIndex}`,\n\t\t\t\tvalue,\n\t\t\t\tlabel,\n\t\t\t\ttextValue,\n\t\t\t\tdisabled,\n\t\t\t\trawValue: option,\n\t\t\t});\n\n\t\t\titemIndex += 1;\n\t\t}\n\n\t\tif (looseItems.length > 0) {\n\t\t\tgroups.unshift({\n\t\t\t\tkey: 'group-root',\n\t\t\t\ttextValue: '',\n\t\t\t\titems: looseItems,\n\t\t\t});\n\t\t}\n\n\t\treturn groups;\n\t});\n\n\tconst allItems = createMemo(() => normalizedGroups().flatMap((group) => group.items));\n\n\tconst selectedItem = createMemo(() => {\n\t\tlet selectedOption = internalValue();\n\n\t\tif (isControlledValue()) {\n\t\t\tselectedOption = local.value ?? null;\n\t\t}\n\n\t\tif (selectedOption == null) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst selectedValue = String(\n\t\t\tresolveAccessor<TOption, string | number>(\n\t\t\t\tselectedOption as TOption,\n\t\t\t\tlocal.optionValue,\n\t\t\t\tdefaultTextValue as (value: TOption) => string | number,\n\t\t\t),\n\t\t);\n\n\t\treturn allItems().find((item) => item.value === selectedValue) ?? null;\n\t});\n\n\tconst visibleGroups = createMemo(() => {\n\t\tconst currentInput = filterValue().trim();\n\n\t\treturn normalizedGroups()\n\t\t\t.map((group) => ({\n\t\t\t\t...group,\n\t\t\t\titems: group.items.filter((item) => filter()(item.rawValue, currentInput)),\n\t\t\t}))\n\t\t\t.filter((group) => group.items.length > 0);\n\t});\n\n\tconst visibleItems = createMemo(() => visibleGroups().flatMap((group) => group.items));\n\tconst isOpen = createMemo(\n\t\t() => (isControlledOpen() ? Boolean(local.open) : internalOpen()) && visibleItems().length > 0,\n\t);\n\n\tconst setOpen = (value: boolean) => {\n\t\tif (!isControlledOpen()) {\n\t\t\tsetInternalOpen(value);\n\t\t}\n\n\t\tlocal.onOpenChange?.(value);\n\t};\n\n\tconst setSelectedOption = (value: TOption | null) => {\n\t\tif (!isControlledValue()) {\n\t\t\tsetInternalValue(() => value);\n\t\t}\n\n\t\tlocal.onChange?.(value);\n\t};\n\n\tconst setDisplayedInputValue = (value: string, emitChange = false) => {\n\t\tif (!isControlledInputValue()) {\n\t\t\tsetInternalInputValue(value);\n\t\t}\n\n\t\tif (emitChange) {\n\t\t\tlocal.onInputChange?.(value);\n\t\t}\n\t};\n\n\tconst restoreInputFromSelection = () => {\n\t\tsetDisplayedInputValue(selectedItem()?.label ?? '');\n\t\tsetFilterValue('');\n\t};\n\n\tconst highlightByIndex = (index: number) => {\n\t\tconst items = visibleItems();\n\n\t\tif (items.length === 0) {\n\t\t\tsetHighlightedKey(null);\n\t\t\treturn;\n\t\t}\n\n\t\tconst boundedIndex = (index + items.length) % items.length;\n\t\tsetHighlightedKey(items[boundedIndex]?.key ?? null);\n\t};\n\n\tconst highlightFirst = () => highlightByIndex(0);\n\tconst highlightLast = () => highlightByIndex(visibleItems().length - 1);\n\n\tconst highlightNext = () => {\n\t\tconst items = visibleItems();\n\t\tconst index = items.findIndex((item) => item.key === highlightedKey());\n\t\thighlightByIndex(index >= 0 ? index + 1 : 0);\n\t};\n\n\tconst highlightPrevious = () => {\n\t\tconst items = visibleItems();\n\t\tconst index = items.findIndex((item) => item.key === highlightedKey());\n\t\thighlightByIndex(index >= 0 ? index - 1 : items.length - 1);\n\t};\n\n\tconst openPopup = (strategy: 'first' | 'last' | 'preserve' = 'first') => {\n\t\tif (local.disabled || local.readOnly || visibleItems().length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetOpen(true);\n\n\t\tif (strategy === 'last') {\n\t\t\thighlightLast();\n\t\t\treturn;\n\t\t}\n\n\t\tif (strategy === 'preserve') {\n\t\t\tif (highlightedKey() !== null) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (selectedItem()) {\n\t\t\t\tsetHighlightedKey(selectedItem()!.key);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\thighlightFirst();\n\t};\n\n\tconst closePopup = (restoreInput = true) => {\n\t\tsetOpen(false);\n\t\tsetHighlightedKey(null);\n\n\t\tif (restoreInput) {\n\t\t\trestoreInputFromSelection();\n\t\t}\n\t};\n\n\tconst selectItem = (item: ComboboxItemData<TOption>) => {\n\t\tif (item.disabled) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetSelectedOption(item.rawValue);\n\t\tsetDisplayedInputValue(item.label);\n\t\tsetFilterValue('');\n\t\tsetHighlightedKey(item.key);\n\n\t\tif (local.closeOnSelection) {\n\t\t\tsetOpen(false);\n\t\t}\n\n\t\tinputRef()?.focus();\n\t};\n\n\tconst clearPendingInput = () => {\n\t\tif (selectedItem() === null) {\n\t\t\tsetDisplayedInputValue('');\n\t\t\tsetFilterValue('');\n\t\t\treturn;\n\t\t}\n\n\t\trestoreInputFromSelection();\n\t};\n\n\tconst clearSelectedItem = () => {\n\t\tsetSelectedOption(null);\n\t\tsetDisplayedInputValue('');\n\t\tsetFilterValue('');\n\t\tsetHighlightedKey(null);\n\t\tsetOpen(false);\n\t\tinputRef()?.focus();\n\t};\n\n\tcreateEffect(() => {\n\t\tif (isControlledValue() && selectedItem() !== null) {\n\t\t\trestoreInputFromSelection();\n\t\t}\n\t});\n\n\tcreateEffect(() => {\n\t\tconst items = visibleItems();\n\t\tconst selected = selectedItem();\n\n\t\tif (items.length === 0) {\n\t\t\tsetHighlightedKey(null);\n\t\t\tsetOpen(false);\n\t\t\treturn;\n\t\t}\n\n\t\tif (highlightedKey() && items.some((item) => item.key === highlightedKey())) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (isOpen()) {\n\t\t\tif (selected && items.some((item) => item.key === selected.key)) {\n\t\t\t\tsetHighlightedKey(selected.key);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\thighlightFirst();\n\t\t}\n\t});\n\n\tonMount(() => {\n\t\trestoreInputFromSelection();\n\n\t\tconst handlePointerDown = (event: PointerEvent) => {\n\t\t\tconst root = rootRef();\n\n\t\t\tif (!root || root.contains(event.target as Node)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tclosePopup(true);\n\t\t};\n\n\t\tdocument.addEventListener('pointerdown', handlePointerDown);\n\n\t\tonCleanup(() => {\n\t\t\tdocument.removeEventListener('pointerdown', handlePointerDown);\n\t\t});\n\t});\n\n\tconst context: ComboboxContextValue<TOption, TOptionGroup> = {\n\t\trootId,\n\t\trootRef,\n\t\tsetRootRef,\n\t\tinputRef,\n\t\tsetInputRef,\n\t\tinputValue,\n\t\tsetInputValue: (value) => {\n\t\t\tsetDisplayedInputValue(value, true);\n\t\t\tsetFilterValue(value);\n\n\t\t\tif (selectedItem() && value !== selectedItem()!.label) {\n\t\t\t\tsetSelectedOption(null);\n\t\t\t}\n\n\t\t\tif (value.trim() === '') {\n\t\t\t\tclosePopup(false);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\topenPopup('first');\n\t\t},\n\t\tisOpen,\n\t\topenPopup,\n\t\tclosePopup,\n\t\ttogglePopup: () => {\n\t\t\tif (isOpen()) {\n\t\t\t\tclosePopup(true);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\topenPopup('first');\n\t\t},\n\t\tvisibleGroups,\n\t\tvisibleItems,\n\t\tselectedItem,\n\t\thighlightedKey,\n\t\tsetHighlightedKey,\n\t\thighlightNext,\n\t\thighlightPrevious,\n\t\thighlightFirst,\n\t\thighlightLast,\n\t\tselectItem,\n\t\tgetItemId: (key) => `${rootId}-item-${key}`,\n\t\titemComponent: local.itemComponent,\n\t\tgroupComponent: local.groupComponent,\n\t\tplaceholder: () => local.placeholder,\n\t\tdisabled: () => Boolean(local.disabled),\n\t\treadOnly: () => Boolean(local.readOnly),\n\t\trequired: () => Boolean(local.required),\n\t\tname: () => local.name,\n\t\tclearPendingInput,\n\t\tclearSelectedItem,\n\t};\n\n\tconst rootClass = () => clsx(comboboxClass.root, local.class);\n\n\tconst handleFocusOut: JSX.FocusEventHandlerUnion<HTMLDivElement, FocusEvent> = (event) => {\n\t\tcallEventHandler(local.onFocusOut, event);\n\n\t\tconst nextTarget = event.relatedTarget as Node | null;\n\n\t\tif (nextTarget && rootRef()?.contains(nextTarget)) {\n\t\t\treturn;\n\t\t}\n\n\t\tqueueMicrotask(() => {\n\t\t\tconst activeElement = document.activeElement;\n\n\t\t\tif (activeElement instanceof Node && rootRef()?.contains(activeElement)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tclosePopup(true);\n\t\t});\n\t};\n\n\treturn (\n\t\t<ComboboxContext.Provider value={context}>\n\t\t\t<div\n\t\t\t\tclass={rootClass()}\n\t\t\t\tref={setRootRef}\n\t\t\t\tonFocusOut={handleFocusOut}\n\t\t\t\t{...rest}\n\t\t\t>\n\t\t\t\t{local.children ? (\n\t\t\t\t\tresolvedChildren()\n\t\t\t\t) : (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<ComboboxControl>\n\t\t\t\t\t\t\t<ComboboxInput aria-label={local.placeholder ?? 'Combobox'} />\n\t\t\t\t\t\t\t<ComboboxTrigger />\n\t\t\t\t\t\t</ComboboxControl>\n\t\t\t\t\t\t<ComboboxPortal>\n\t\t\t\t\t\t\t<ComboboxContent>\n\t\t\t\t\t\t\t\t<ComboboxListbox />\n\t\t\t\t\t\t\t</ComboboxContent>\n\t\t\t\t\t\t</ComboboxPortal>\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</ComboboxContext.Provider>\n\t);\n}\n"]}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
@layer components {
|
|
2
|
+
.fl-combobox_trigger {
|
|
3
|
+
/* reset */
|
|
4
|
+
appearance: none;
|
|
5
|
+
outline: none;
|
|
6
|
+
|
|
7
|
+
/* layout */
|
|
8
|
+
display: inline-flex;
|
|
9
|
+
align-items: center;
|
|
10
|
+
justify-content: center;
|
|
11
|
+
flex: 0 0 auto;
|
|
12
|
+
|
|
13
|
+
/* spacing */
|
|
14
|
+
padding-inline: var(--fl-size-2);
|
|
15
|
+
padding-block: var(--fl-input-pad-y, var(--fl-size-1-5));
|
|
16
|
+
|
|
17
|
+
/* background */
|
|
18
|
+
background: transparent;
|
|
19
|
+
border: 0;
|
|
20
|
+
|
|
21
|
+
/* text */
|
|
22
|
+
color: var(--fl-input-text-color, var(--fl-body-text-color));
|
|
23
|
+
|
|
24
|
+
/* pointer */
|
|
25
|
+
cursor: pointer;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.fl-combobox_control[data-disabled] .fl-combobox_trigger {
|
|
29
|
+
cursor: var(--fl-disabled-cursor);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import clsx from 'clsx/lite';
|
|
2
|
+
import { mergeProps, splitProps } from 'solid-js';
|
|
3
|
+
import { comboboxClass } from './class';
|
|
4
|
+
import { ComboboxIcon } from './combobox-icon';
|
|
5
|
+
import { useComboboxContext } from './context';
|
|
6
|
+
import { callEventHandler } from './util';
|
|
7
|
+
export function ComboboxTrigger(props) {
|
|
8
|
+
const context = useComboboxContext();
|
|
9
|
+
const merged = mergeProps({
|
|
10
|
+
tabIndex: -1,
|
|
11
|
+
}, props);
|
|
12
|
+
const [local, rest] = splitProps(merged, ['class', 'children', 'onMouseDown', 'onClick']);
|
|
13
|
+
const rootClass = () => clsx(comboboxClass.trigger, local.class);
|
|
14
|
+
const handleMouseDown = (event) => {
|
|
15
|
+
callEventHandler(local.onMouseDown, event);
|
|
16
|
+
event.preventDefault();
|
|
17
|
+
};
|
|
18
|
+
const handleClick = (event) => {
|
|
19
|
+
callEventHandler(local.onClick, event);
|
|
20
|
+
if (context.disabled() || context.readOnly()) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
context.openPopup('preserve');
|
|
24
|
+
context.inputRef()?.focus();
|
|
25
|
+
};
|
|
26
|
+
return (<button type="button" class={rootClass()} onMouseDown={handleMouseDown} onClick={handleClick} {...rest}>
|
|
27
|
+
{local.children ?? <ComboboxIcon />}
|
|
28
|
+
</button>);
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=combobox-trigger.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"combobox-trigger.jsx","sourceRoot":"","sources":["../../../../src/components/combobox/combobox-trigger.tsx"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAY,UAAU,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAE/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAE1C,MAAM,UAAU,eAAe,CAAC,KAA2B;IAC1D,MAAM,OAAO,GAAG,kBAAkB,EAAY,CAAC;IAC/C,MAAM,MAAM,GAAG,UAAU,CACxB;QACC,QAAQ,EAAE,CAAC,CAAC;KACZ,EACD,KAAK,CACL,CAAC;IACF,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC,CAAC;IAC1F,MAAM,SAAS,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAEjE,MAAM,eAAe,GAAyD,CAAC,KAAK,EAAE,EAAE;QACvF,gBAAgB,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QAC3C,KAAK,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC,CAAC;IAEF,MAAM,WAAW,GAAyD,CAAC,KAAK,EAAE,EAAE;QACnF,gBAAgB,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAEvC,IAAI,OAAO,CAAC,QAAQ,EAAE,IAAI,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;YAC9C,OAAO;QACR,CAAC;QAED,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC9B,OAAO,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC;IAC7B,CAAC,CAAC;IAEF,OAAO,CACN,CAAC,MAAM,CACN,IAAI,CAAC,QAAQ,CACb,KAAK,CAAC,CAAC,SAAS,EAAE,CAAC,CACnB,WAAW,CAAC,CAAC,eAAe,CAAC,CAC7B,OAAO,CAAC,CAAC,WAAW,CAAC,CACrB,IAAI,IAAI,CAAC,CAET;GAAA,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,YAAY,CAAC,AAAD,EAAG,CACpC;EAAA,EAAE,MAAM,CAAC,CACT,CAAC;AACH,CAAC","sourcesContent":["import clsx from 'clsx/lite';\nimport { type JSX, mergeProps, splitProps } from 'solid-js';\nimport { comboboxClass } from './class';\nimport { ComboboxIcon } from './combobox-icon';\nimport { useComboboxContext } from './context';\nimport type { ComboboxTriggerProps } from './types';\nimport { callEventHandler } from './util';\n\nexport function ComboboxTrigger(props: ComboboxTriggerProps) {\n\tconst context = useComboboxContext<any, any>();\n\tconst merged = mergeProps(\n\t\t{\n\t\t\ttabIndex: -1,\n\t\t},\n\t\tprops,\n\t);\n\tconst [local, rest] = splitProps(merged, ['class', 'children', 'onMouseDown', 'onClick']);\n\tconst rootClass = () => clsx(comboboxClass.trigger, local.class);\n\n\tconst handleMouseDown: JSX.EventHandlerUnion<HTMLButtonElement, MouseEvent> = (event) => {\n\t\tcallEventHandler(local.onMouseDown, event);\n\t\tevent.preventDefault();\n\t};\n\n\tconst handleClick: JSX.EventHandlerUnion<HTMLButtonElement, MouseEvent> = (event) => {\n\t\tcallEventHandler(local.onClick, event);\n\n\t\tif (context.disabled() || context.readOnly()) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontext.openPopup('preserve');\n\t\tcontext.inputRef()?.focus();\n\t};\n\n\treturn (\n\t\t<button\n\t\t\ttype=\"button\"\n\t\t\tclass={rootClass()}\n\t\t\tonMouseDown={handleMouseDown}\n\t\t\tonClick={handleClick}\n\t\t\t{...rest}\n\t\t>\n\t\t\t{local.children ?? <ComboboxIcon />}\n\t\t</button>\n\t);\n}\n"]}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { JSX } from 'solid-js';
|
|
2
|
+
import './combobox-root.css';
|
|
3
|
+
import './combobox-control.css';
|
|
4
|
+
import './combobox-input.css';
|
|
5
|
+
import './combobox-trigger.css';
|
|
6
|
+
import './combobox-icon.css';
|
|
7
|
+
import './combobox-content.css';
|
|
8
|
+
import './combobox-listbox.css';
|
|
9
|
+
import './combobox-item.css';
|
|
10
|
+
import './combobox-group.css';
|
|
11
|
+
import './combobox-item-indicator.css';
|
|
12
|
+
import { ComboboxContent } from './combobox-content';
|
|
13
|
+
import { ComboboxControl } from './combobox-control';
|
|
14
|
+
import { ComboboxGroup } from './combobox-group';
|
|
15
|
+
import { ComboboxHiddenSelect } from './combobox-hidden-select';
|
|
16
|
+
import { ComboboxIcon } from './combobox-icon';
|
|
17
|
+
import { ComboboxInput } from './combobox-input';
|
|
18
|
+
import { ComboboxItem } from './combobox-item';
|
|
19
|
+
import { ComboboxItemIndicator } from './combobox-item-indicator';
|
|
20
|
+
import { ComboboxItemLabel } from './combobox-item-label';
|
|
21
|
+
import { ComboboxListbox } from './combobox-listbox';
|
|
22
|
+
import { ComboboxPortal } from './combobox-portal';
|
|
23
|
+
import { ComboboxRoot } from './combobox-root';
|
|
24
|
+
import { ComboboxTrigger } from './combobox-trigger';
|
|
25
|
+
import type { ComboboxRootProps } from './types';
|
|
26
|
+
export type { ComboboxContentProps, ComboboxControlProps, ComboboxGroupData, ComboboxGroupProps, ComboboxHiddenSelectProps, ComboboxIconProps, ComboboxInputProps, ComboboxItemData, ComboboxItemIndicatorProps, ComboboxItemLabelProps, ComboboxItemProps, ComboboxListboxProps, ComboboxPortalProps, ComboboxRenderGroupProps, ComboboxRenderItemProps, ComboboxRootProps, ComboboxTriggerProps, } from './types';
|
|
27
|
+
export { ComboboxContent, ComboboxControl, ComboboxGroup, ComboboxHiddenSelect, ComboboxIcon, ComboboxInput, ComboboxItem, ComboboxItemIndicator, ComboboxItemLabel, ComboboxListbox, ComboboxPortal, ComboboxRoot, ComboboxTrigger, };
|
|
28
|
+
export interface ComboboxComponent {
|
|
29
|
+
<TOption, TOptionGroup = never>(props: ComboboxRootProps<TOption, TOptionGroup>): JSX.Element;
|
|
30
|
+
Control: typeof ComboboxControl;
|
|
31
|
+
Input: typeof ComboboxInput;
|
|
32
|
+
Trigger: typeof ComboboxTrigger;
|
|
33
|
+
Icon: typeof ComboboxIcon;
|
|
34
|
+
Portal: typeof ComboboxPortal;
|
|
35
|
+
Content: typeof ComboboxContent;
|
|
36
|
+
Listbox: typeof ComboboxListbox;
|
|
37
|
+
Item: typeof ComboboxItem;
|
|
38
|
+
ItemLabel: typeof ComboboxItemLabel;
|
|
39
|
+
ItemIndicator: typeof ComboboxItemIndicator;
|
|
40
|
+
Group: typeof ComboboxGroup;
|
|
41
|
+
HiddenSelect: typeof ComboboxHiddenSelect;
|
|
42
|
+
}
|
|
43
|
+
export declare const Combobox: ComboboxComponent;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import './combobox-root.css';
|
|
2
|
+
import './combobox-control.css';
|
|
3
|
+
import './combobox-input.css';
|
|
4
|
+
import './combobox-trigger.css';
|
|
5
|
+
import './combobox-icon.css';
|
|
6
|
+
import './combobox-content.css';
|
|
7
|
+
import './combobox-listbox.css';
|
|
8
|
+
import './combobox-item.css';
|
|
9
|
+
import './combobox-group.css';
|
|
10
|
+
import './combobox-item-indicator.css';
|
|
11
|
+
import { ComboboxContent } from './combobox-content';
|
|
12
|
+
import { ComboboxControl } from './combobox-control';
|
|
13
|
+
import { ComboboxGroup } from './combobox-group';
|
|
14
|
+
import { ComboboxHiddenSelect } from './combobox-hidden-select';
|
|
15
|
+
import { ComboboxIcon } from './combobox-icon';
|
|
16
|
+
import { ComboboxInput } from './combobox-input';
|
|
17
|
+
import { ComboboxItem } from './combobox-item';
|
|
18
|
+
import { ComboboxItemIndicator } from './combobox-item-indicator';
|
|
19
|
+
import { ComboboxItemLabel } from './combobox-item-label';
|
|
20
|
+
import { ComboboxListbox } from './combobox-listbox';
|
|
21
|
+
import { ComboboxPortal } from './combobox-portal';
|
|
22
|
+
import { ComboboxRoot } from './combobox-root';
|
|
23
|
+
import { ComboboxTrigger } from './combobox-trigger';
|
|
24
|
+
export { ComboboxContent, ComboboxControl, ComboboxGroup, ComboboxHiddenSelect, ComboboxIcon, ComboboxInput, ComboboxItem, ComboboxItemIndicator, ComboboxItemLabel, ComboboxListbox, ComboboxPortal, ComboboxRoot, ComboboxTrigger, };
|
|
25
|
+
export const Combobox = Object.assign(ComboboxRoot, {
|
|
26
|
+
Control: ComboboxControl,
|
|
27
|
+
Input: ComboboxInput,
|
|
28
|
+
Trigger: ComboboxTrigger,
|
|
29
|
+
Icon: ComboboxIcon,
|
|
30
|
+
Portal: ComboboxPortal,
|
|
31
|
+
Content: ComboboxContent,
|
|
32
|
+
Listbox: ComboboxListbox,
|
|
33
|
+
Item: ComboboxItem,
|
|
34
|
+
ItemLabel: ComboboxItemLabel,
|
|
35
|
+
ItemIndicator: ComboboxItemIndicator,
|
|
36
|
+
Group: ComboboxGroup,
|
|
37
|
+
HiddenSelect: ComboboxHiddenSelect,
|
|
38
|
+
});
|
|
39
|
+
//# sourceMappingURL=combobox.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"combobox.jsx","sourceRoot":"","sources":["../../../../src/components/combobox/combobox.tsx"],"names":[],"mappings":"AACA,OAAO,qBAAqB,CAAC;AAC7B,OAAO,wBAAwB,CAAC;AAChC,OAAO,sBAAsB,CAAC;AAC9B,OAAO,wBAAwB,CAAC;AAChC,OAAO,qBAAqB,CAAC;AAC7B,OAAO,wBAAwB,CAAC;AAChC,OAAO,wBAAwB,CAAC;AAChC,OAAO,qBAAqB,CAAC;AAC7B,OAAO,sBAAsB,CAAC;AAC9B,OAAO,+BAA+B,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAuBrD,OAAO,EACN,eAAe,EACf,eAAe,EACf,aAAa,EACb,oBAAoB,EACpB,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,qBAAqB,EACrB,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,YAAY,EACZ,eAAe,GACf,CAAC;AAkBF,MAAM,CAAC,MAAM,QAAQ,GAAsB,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE;IACtE,OAAO,EAAE,eAAe;IACxB,KAAK,EAAE,aAAa;IACpB,OAAO,EAAE,eAAe;IACxB,IAAI,EAAE,YAAY;IAClB,MAAM,EAAE,cAAc;IACtB,OAAO,EAAE,eAAe;IACxB,OAAO,EAAE,eAAe;IACxB,IAAI,EAAE,YAAY;IAClB,SAAS,EAAE,iBAAiB;IAC5B,aAAa,EAAE,qBAAqB;IACpC,KAAK,EAAE,aAAa;IACpB,YAAY,EAAE,oBAAoB;CAClC,CAAC,CAAC","sourcesContent":["import type { JSX } from 'solid-js';\nimport './combobox-root.css';\nimport './combobox-control.css';\nimport './combobox-input.css';\nimport './combobox-trigger.css';\nimport './combobox-icon.css';\nimport './combobox-content.css';\nimport './combobox-listbox.css';\nimport './combobox-item.css';\nimport './combobox-group.css';\nimport './combobox-item-indicator.css';\nimport { ComboboxContent } from './combobox-content';\nimport { ComboboxControl } from './combobox-control';\nimport { ComboboxGroup } from './combobox-group';\nimport { ComboboxHiddenSelect } from './combobox-hidden-select';\nimport { ComboboxIcon } from './combobox-icon';\nimport { ComboboxInput } from './combobox-input';\nimport { ComboboxItem } from './combobox-item';\nimport { ComboboxItemIndicator } from './combobox-item-indicator';\nimport { ComboboxItemLabel } from './combobox-item-label';\nimport { ComboboxListbox } from './combobox-listbox';\nimport { ComboboxPortal } from './combobox-portal';\nimport { ComboboxRoot } from './combobox-root';\nimport { ComboboxTrigger } from './combobox-trigger';\nimport type { ComboboxRootProps } from './types';\n\nexport type {\n\tComboboxContentProps,\n\tComboboxControlProps,\n\tComboboxGroupData,\n\tComboboxGroupProps,\n\tComboboxHiddenSelectProps,\n\tComboboxIconProps,\n\tComboboxInputProps,\n\tComboboxItemData,\n\tComboboxItemIndicatorProps,\n\tComboboxItemLabelProps,\n\tComboboxItemProps,\n\tComboboxListboxProps,\n\tComboboxPortalProps,\n\tComboboxRenderGroupProps,\n\tComboboxRenderItemProps,\n\tComboboxRootProps,\n\tComboboxTriggerProps,\n} from './types';\n\nexport {\n\tComboboxContent,\n\tComboboxControl,\n\tComboboxGroup,\n\tComboboxHiddenSelect,\n\tComboboxIcon,\n\tComboboxInput,\n\tComboboxItem,\n\tComboboxItemIndicator,\n\tComboboxItemLabel,\n\tComboboxListbox,\n\tComboboxPortal,\n\tComboboxRoot,\n\tComboboxTrigger,\n};\n\nexport interface ComboboxComponent {\n\t<TOption, TOptionGroup = never>(props: ComboboxRootProps<TOption, TOptionGroup>): JSX.Element;\n\tControl: typeof ComboboxControl;\n\tInput: typeof ComboboxInput;\n\tTrigger: typeof ComboboxTrigger;\n\tIcon: typeof ComboboxIcon;\n\tPortal: typeof ComboboxPortal;\n\tContent: typeof ComboboxContent;\n\tListbox: typeof ComboboxListbox;\n\tItem: typeof ComboboxItem;\n\tItemLabel: typeof ComboboxItemLabel;\n\tItemIndicator: typeof ComboboxItemIndicator;\n\tGroup: typeof ComboboxGroup;\n\tHiddenSelect: typeof ComboboxHiddenSelect;\n}\n\nexport const Combobox: ComboboxComponent = Object.assign(ComboboxRoot, {\n\tControl: ComboboxControl,\n\tInput: ComboboxInput,\n\tTrigger: ComboboxTrigger,\n\tIcon: ComboboxIcon,\n\tPortal: ComboboxPortal,\n\tContent: ComboboxContent,\n\tListbox: ComboboxListbox,\n\tItem: ComboboxItem,\n\tItemLabel: ComboboxItemLabel,\n\tItemIndicator: ComboboxItemIndicator,\n\tGroup: ComboboxGroup,\n\tHiddenSelect: ComboboxHiddenSelect,\n});\n"]}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { type Accessor, type Component, type Setter } from 'solid-js';
|
|
2
|
+
import type { ComboboxGroupData, ComboboxItemData, ComboboxRenderGroupProps, ComboboxRenderItemProps } from './types';
|
|
3
|
+
interface ComboboxItemState<TOption> {
|
|
4
|
+
item: ComboboxItemData<TOption>;
|
|
5
|
+
selected: boolean;
|
|
6
|
+
highlighted: boolean;
|
|
7
|
+
}
|
|
8
|
+
export interface ComboboxContextValue<TOption, TOptionGroup> {
|
|
9
|
+
rootId: string;
|
|
10
|
+
rootRef: Accessor<HTMLDivElement | undefined>;
|
|
11
|
+
setRootRef: Setter<HTMLDivElement | undefined>;
|
|
12
|
+
inputRef: Accessor<HTMLInputElement | undefined>;
|
|
13
|
+
setInputRef: Setter<HTMLInputElement | undefined>;
|
|
14
|
+
inputValue: Accessor<string>;
|
|
15
|
+
setInputValue: (value: string) => void;
|
|
16
|
+
isOpen: Accessor<boolean>;
|
|
17
|
+
openPopup: (strategy?: 'first' | 'last' | 'preserve') => void;
|
|
18
|
+
closePopup: (restoreInput?: boolean) => void;
|
|
19
|
+
togglePopup: () => void;
|
|
20
|
+
visibleGroups: Accessor<Array<ComboboxGroupData<TOptionGroup, TOption>>>;
|
|
21
|
+
visibleItems: Accessor<Array<ComboboxItemData<TOption>>>;
|
|
22
|
+
selectedItem: Accessor<ComboboxItemData<TOption> | null>;
|
|
23
|
+
highlightedKey: Accessor<string | null>;
|
|
24
|
+
setHighlightedKey: (key: string | null) => void;
|
|
25
|
+
highlightNext: () => void;
|
|
26
|
+
highlightPrevious: () => void;
|
|
27
|
+
highlightFirst: () => void;
|
|
28
|
+
highlightLast: () => void;
|
|
29
|
+
selectItem: (item: ComboboxItemData<TOption>) => void;
|
|
30
|
+
getItemId: (key: string) => string;
|
|
31
|
+
itemComponent?: Component<ComboboxRenderItemProps<TOption>>;
|
|
32
|
+
groupComponent?: Component<ComboboxRenderGroupProps<TOptionGroup, TOption>>;
|
|
33
|
+
placeholder: Accessor<string | undefined>;
|
|
34
|
+
disabled: Accessor<boolean>;
|
|
35
|
+
readOnly: Accessor<boolean>;
|
|
36
|
+
required: Accessor<boolean>;
|
|
37
|
+
name: Accessor<string | undefined>;
|
|
38
|
+
clearPendingInput: () => void;
|
|
39
|
+
clearSelectedItem: () => void;
|
|
40
|
+
}
|
|
41
|
+
export declare const ComboboxContext: import("solid-js").Context<ComboboxContextValue<any, any> | undefined>;
|
|
42
|
+
export declare const ComboboxItemContext: import("solid-js").Context<ComboboxItemState<any> | undefined>;
|
|
43
|
+
export declare function useComboboxContext<TOption, TOptionGroup>(): ComboboxContextValue<TOption, TOptionGroup>;
|
|
44
|
+
export declare function useComboboxItemContext<TOption>(): ComboboxItemState<TOption>;
|
|
45
|
+
export {};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { createContext, useContext } from 'solid-js';
|
|
2
|
+
export const ComboboxContext = createContext();
|
|
3
|
+
export const ComboboxItemContext = createContext();
|
|
4
|
+
export function useComboboxContext() {
|
|
5
|
+
const context = useContext(ComboboxContext);
|
|
6
|
+
if (!context) {
|
|
7
|
+
throw new Error('Combobox components must be used within Combobox.');
|
|
8
|
+
}
|
|
9
|
+
return context;
|
|
10
|
+
}
|
|
11
|
+
export function useComboboxItemContext() {
|
|
12
|
+
const context = useContext(ComboboxItemContext);
|
|
13
|
+
if (!context) {
|
|
14
|
+
throw new Error('Combobox item parts must be used within Combobox.Item.');
|
|
15
|
+
}
|
|
16
|
+
return context;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=context.js.map
|