@neut/ui 0.0.12 → 0.0.14
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/components/calendar/Calendar/Calendar.d.ts +10 -0
- package/dist/components/calendar/Calendar/Calendar.js +306 -0
- package/dist/components/calendar/Calendar/Calendar.js.map +1 -0
- package/dist/components/calendar/Calendar/Calendar.types.d.ts +62 -0
- package/dist/components/calendar/Calendar/Calendar.utils.d.ts +21 -0
- package/dist/components/calendar/Calendar/Calendar.utils.js +68 -0
- package/dist/components/calendar/Calendar/Calendar.utils.js.map +1 -0
- package/dist/components/calendar/Calendar/index.d.ts +2 -0
- package/dist/components/calendar/index.d.ts +2 -0
- package/dist/components/calendar/index.js +2 -0
- package/dist/components/combobox/Combobox/Combobox.context.d.ts +3 -0
- package/dist/components/combobox/Combobox/Combobox.context.js +12 -0
- package/dist/components/combobox/Combobox/Combobox.context.js.map +1 -0
- package/dist/components/combobox/Combobox/Combobox.d.ts +3 -0
- package/dist/components/combobox/Combobox/Combobox.js +60 -0
- package/dist/components/combobox/Combobox/Combobox.js.map +1 -0
- package/dist/components/combobox/Combobox/Combobox.types.d.ts +40 -0
- package/dist/components/combobox/Combobox/index.d.ts +2 -0
- package/dist/components/combobox/ComboboxChip/ComboboxChip.d.ts +7 -0
- package/dist/components/combobox/ComboboxChip/ComboboxChip.js +35 -0
- package/dist/components/combobox/ComboboxChip/ComboboxChip.js.map +1 -0
- package/dist/components/combobox/ComboboxChip/index.d.ts +1 -0
- package/dist/components/combobox/ComboboxChips/ComboboxChips.d.ts +5 -0
- package/dist/components/combobox/ComboboxChips/ComboboxChips.js +16 -0
- package/dist/components/combobox/ComboboxChips/ComboboxChips.js.map +1 -0
- package/dist/components/combobox/ComboboxChips/index.d.ts +1 -0
- package/dist/components/combobox/ComboboxChipsInput/ComboboxChipsInput.d.ts +4 -0
- package/dist/components/combobox/ComboboxChipsInput/ComboboxChipsInput.js +27 -0
- package/dist/components/combobox/ComboboxChipsInput/ComboboxChipsInput.js.map +1 -0
- package/dist/components/combobox/ComboboxChipsInput/index.d.ts +1 -0
- package/dist/components/combobox/ComboboxClear/ComboboxClear.d.ts +4 -0
- package/dist/components/combobox/ComboboxClear/ComboboxClear.js +30 -0
- package/dist/components/combobox/ComboboxClear/ComboboxClear.js.map +1 -0
- package/dist/components/combobox/ComboboxClear/index.d.ts +1 -0
- package/dist/components/combobox/ComboboxCollection/ComboboxCollection.d.ts +5 -0
- package/dist/components/combobox/ComboboxCollection/ComboboxCollection.js +20 -0
- package/dist/components/combobox/ComboboxCollection/ComboboxCollection.js.map +1 -0
- package/dist/components/combobox/ComboboxCollection/index.d.ts +1 -0
- package/dist/components/combobox/ComboboxContent/ComboboxContent.d.ts +2 -0
- package/dist/components/combobox/ComboboxContent/ComboboxContent.js +49 -0
- package/dist/components/combobox/ComboboxContent/ComboboxContent.js.map +1 -0
- package/dist/components/combobox/ComboboxContent/ComboboxContent.types.d.ts +12 -0
- package/dist/components/combobox/ComboboxContent/ComboboxContent.utils.d.ts +2 -0
- package/dist/components/combobox/ComboboxContent/ComboboxContent.utils.js +6 -0
- package/dist/components/combobox/ComboboxContent/ComboboxContent.utils.js.map +1 -0
- package/dist/components/combobox/ComboboxContent/index.d.ts +1 -0
- package/dist/components/combobox/ComboboxContent/useComboboxContent.d.ts +13 -0
- package/dist/components/combobox/ComboboxContent/useComboboxContent.js +48 -0
- package/dist/components/combobox/ComboboxContent/useComboboxContent.js.map +1 -0
- package/dist/components/combobox/ComboboxEmpty/ComboboxEmpty.d.ts +5 -0
- package/dist/components/combobox/ComboboxEmpty/ComboboxEmpty.js +14 -0
- package/dist/components/combobox/ComboboxEmpty/ComboboxEmpty.js.map +1 -0
- package/dist/components/combobox/ComboboxEmpty/index.d.ts +1 -0
- package/dist/components/combobox/ComboboxGroup/ComboboxGroup.d.ts +5 -0
- package/dist/components/combobox/ComboboxGroup/ComboboxGroup.js +13 -0
- package/dist/components/combobox/ComboboxGroup/ComboboxGroup.js.map +1 -0
- package/dist/components/combobox/ComboboxGroup/index.d.ts +1 -0
- package/dist/components/combobox/ComboboxInput/ComboboxInput.d.ts +9 -0
- package/dist/components/combobox/ComboboxInput/ComboboxInput.js +85 -0
- package/dist/components/combobox/ComboboxInput/ComboboxInput.js.map +1 -0
- package/dist/components/combobox/ComboboxInput/index.d.ts +1 -0
- package/dist/components/combobox/ComboboxItem/ComboboxItem.d.ts +7 -0
- package/dist/components/combobox/ComboboxItem/ComboboxItem.js +40 -0
- package/dist/components/combobox/ComboboxItem/ComboboxItem.js.map +1 -0
- package/dist/components/combobox/ComboboxItem/index.d.ts +1 -0
- package/dist/components/combobox/ComboboxLabel/ComboboxLabel.d.ts +5 -0
- package/dist/components/combobox/ComboboxLabel/ComboboxLabel.js +14 -0
- package/dist/components/combobox/ComboboxLabel/ComboboxLabel.js.map +1 -0
- package/dist/components/combobox/ComboboxLabel/index.d.ts +1 -0
- package/dist/components/combobox/ComboboxList/ComboboxList.d.ts +5 -0
- package/dist/components/combobox/ComboboxList/ComboboxList.js +22 -0
- package/dist/components/combobox/ComboboxList/ComboboxList.js.map +1 -0
- package/dist/components/combobox/ComboboxList/index.d.ts +1 -0
- package/dist/components/combobox/ComboboxSeparator/ComboboxSeparator.d.ts +3 -0
- package/dist/components/combobox/ComboboxSeparator/ComboboxSeparator.js +14 -0
- package/dist/components/combobox/ComboboxSeparator/ComboboxSeparator.js.map +1 -0
- package/dist/components/combobox/ComboboxSeparator/index.d.ts +1 -0
- package/dist/components/combobox/ComboboxTrigger/ComboboxTrigger.d.ts +6 -0
- package/dist/components/combobox/ComboboxTrigger/ComboboxTrigger.js +34 -0
- package/dist/components/combobox/ComboboxTrigger/ComboboxTrigger.js.map +1 -0
- package/dist/components/combobox/ComboboxTrigger/index.d.ts +1 -0
- package/dist/components/combobox/ComboboxValue/ComboboxValue.d.ts +5 -0
- package/dist/components/combobox/ComboboxValue/ComboboxValue.js +15 -0
- package/dist/components/combobox/ComboboxValue/ComboboxValue.js.map +1 -0
- package/dist/components/combobox/ComboboxValue/index.d.ts +1 -0
- package/dist/components/combobox/index.d.ts +18 -0
- package/dist/components/combobox/index.js +18 -0
- package/dist/components/combobox/useComboboxAnchor/index.d.ts +1 -0
- package/dist/components/combobox/useComboboxAnchor/useComboboxAnchor.d.ts +1 -0
- package/dist/components/combobox/useComboboxAnchor/useComboboxAnchor.js +9 -0
- package/dist/components/combobox/useComboboxAnchor/useComboboxAnchor.js.map +1 -0
- package/dist/components/date-picker/DatePicker/DatePicker.d.ts +11 -0
- package/dist/components/date-picker/DatePicker/DatePicker.js +136 -0
- package/dist/components/date-picker/DatePicker/DatePicker.js.map +1 -0
- package/dist/components/date-picker/DatePicker/DatePicker.types.d.ts +32 -0
- package/dist/components/date-picker/DatePicker/index.d.ts +2 -0
- package/dist/components/date-picker/index.d.ts +2 -0
- package/dist/components/date-picker/index.js +2 -0
- package/dist/components/dialog/Dialog/Dialog.context.d.ts +2 -1
- package/dist/components/dialog/Dialog/Dialog.context.js.map +1 -1
- package/dist/components/dialog/Dialog/Dialog.js +21 -12
- package/dist/components/dialog/Dialog/Dialog.js.map +1 -1
- package/dist/components/dialog/Dialog/Dialog.types.d.ts +13 -1
- package/dist/components/dialog/Dialog/index.d.ts +1 -0
- package/dist/components/dialog/DialogTrigger/DialogTrigger.d.ts +4 -2
- package/dist/components/dialog/DialogTrigger/DialogTrigger.js +27 -6
- package/dist/components/dialog/DialogTrigger/DialogTrigger.js.map +1 -1
- package/dist/components/dialog/DialogTrigger/DialogTrigger.types.d.ts +3 -0
- package/dist/components/dialog/DialogTrigger/index.d.ts +3 -0
- package/dist/components/dialog/DialogTrigger/useDialogTrigger.d.ts +13 -2
- package/dist/components/dialog/DialogTrigger/useDialogTrigger.js +15 -19
- package/dist/components/dialog/DialogTrigger/useDialogTrigger.js.map +1 -1
- package/dist/components/dialog/index.js +3 -2
- package/dist/components/empty/Empty/Empty.d.ts +2 -0
- package/dist/components/empty/Empty/Empty.js +18 -0
- package/dist/components/empty/Empty/Empty.js.map +1 -0
- package/dist/components/empty/Empty/index.d.ts +1 -0
- package/dist/components/empty/EmptyContent/EmptyContent.d.ts +2 -0
- package/dist/components/empty/EmptyContent/EmptyContent.js +18 -0
- package/dist/components/empty/EmptyContent/EmptyContent.js.map +1 -0
- package/dist/components/empty/EmptyContent/index.d.ts +1 -0
- package/dist/components/empty/EmptyDescription/EmptyDescription.d.ts +2 -0
- package/dist/components/empty/EmptyDescription/EmptyDescription.js +18 -0
- package/dist/components/empty/EmptyDescription/EmptyDescription.js.map +1 -0
- package/dist/components/empty/EmptyDescription/index.d.ts +1 -0
- package/dist/components/empty/EmptyHeader/EmptyHeader.d.ts +2 -0
- package/dist/components/empty/EmptyHeader/EmptyHeader.js +18 -0
- package/dist/components/empty/EmptyHeader/EmptyHeader.js.map +1 -0
- package/dist/components/empty/EmptyHeader/index.d.ts +1 -0
- package/dist/components/empty/EmptyMedia/EmptyMedia.d.ts +4 -0
- package/dist/components/empty/EmptyMedia/EmptyMedia.js +27 -0
- package/dist/components/empty/EmptyMedia/EmptyMedia.js.map +1 -0
- package/dist/components/empty/EmptyMedia/EmptyMedia.styles.d.ts +3 -0
- package/dist/components/empty/EmptyMedia/EmptyMedia.styles.js +13 -0
- package/dist/components/empty/EmptyMedia/EmptyMedia.styles.js.map +1 -0
- package/dist/components/empty/EmptyMedia/EmptyMedia.types.d.ts +3 -0
- package/dist/components/empty/EmptyMedia/index.d.ts +2 -0
- package/dist/components/empty/EmptyTitle/EmptyTitle.d.ts +2 -0
- package/dist/components/empty/EmptyTitle/EmptyTitle.js +18 -0
- package/dist/components/empty/EmptyTitle/EmptyTitle.js.map +1 -0
- package/dist/components/empty/EmptyTitle/index.d.ts +1 -0
- package/dist/components/empty/index.d.ts +7 -0
- package/dist/components/empty/index.js +7 -0
- package/dist/components/image/Image.utils.js.map +1 -1
- package/dist/components/popover/Popover/Popover.context.d.ts +3 -0
- package/dist/components/popover/Popover/Popover.context.js +12 -0
- package/dist/components/popover/Popover/Popover.context.js.map +1 -0
- package/dist/components/popover/Popover/Popover.d.ts +18 -0
- package/dist/components/popover/Popover/Popover.js +37 -0
- package/dist/components/popover/Popover/Popover.js.map +1 -0
- package/dist/components/popover/Popover/Popover.types.d.ts +24 -0
- package/dist/components/popover/Popover/index.d.ts +3 -0
- package/dist/components/popover/PopoverContent/PopoverContent.d.ts +6 -0
- package/dist/components/popover/PopoverContent/PopoverContent.js +72 -0
- package/dist/components/popover/PopoverContent/PopoverContent.js.map +1 -0
- package/dist/components/popover/PopoverContent/PopoverContent.types.d.ts +16 -0
- package/dist/components/popover/PopoverContent/PopoverContent.utils.d.ts +20 -0
- package/dist/components/popover/PopoverContent/PopoverContent.utils.js +36 -0
- package/dist/components/popover/PopoverContent/PopoverContent.utils.js.map +1 -0
- package/dist/components/popover/PopoverContent/index.d.ts +6 -0
- package/dist/components/popover/PopoverContent/usePopoverContent.d.ts +11 -0
- package/dist/components/popover/PopoverContent/usePopoverContent.js +42 -0
- package/dist/components/popover/PopoverContent/usePopoverContent.js.map +1 -0
- package/dist/components/popover/PopoverDescription/PopoverDescription.d.ts +2 -0
- package/dist/components/popover/PopoverDescription/PopoverDescription.js +18 -0
- package/dist/components/popover/PopoverDescription/PopoverDescription.js.map +1 -0
- package/dist/components/popover/PopoverDescription/index.d.ts +1 -0
- package/dist/components/popover/PopoverHeader/PopoverHeader.d.ts +2 -0
- package/dist/components/popover/PopoverHeader/PopoverHeader.js +18 -0
- package/dist/components/popover/PopoverHeader/PopoverHeader.js.map +1 -0
- package/dist/components/popover/PopoverHeader/index.d.ts +1 -0
- package/dist/components/popover/PopoverTitle/PopoverTitle.d.ts +2 -0
- package/dist/components/popover/PopoverTitle/PopoverTitle.js +18 -0
- package/dist/components/popover/PopoverTitle/PopoverTitle.js.map +1 -0
- package/dist/components/popover/PopoverTitle/index.d.ts +1 -0
- package/dist/components/popover/PopoverTrigger/PopoverTrigger.d.ts +4 -0
- package/dist/components/popover/PopoverTrigger/PopoverTrigger.js +35 -0
- package/dist/components/popover/PopoverTrigger/PopoverTrigger.js.map +1 -0
- package/dist/components/popover/PopoverTrigger/PopoverTrigger.types.d.ts +3 -0
- package/dist/components/popover/PopoverTrigger/index.d.ts +4 -0
- package/dist/components/popover/PopoverTrigger/usePopoverTrigger.d.ts +14 -0
- package/dist/components/popover/PopoverTrigger/usePopoverTrigger.js +35 -0
- package/dist/components/popover/PopoverTrigger/usePopoverTrigger.js.map +1 -0
- package/dist/components/popover/index.d.ts +9 -0
- package/dist/components/popover/index.js +7 -0
- package/dist/components/radio-group/RadioGroup/RadioGroup.context.d.ts +3 -0
- package/dist/components/radio-group/RadioGroup/RadioGroup.context.js +12 -0
- package/dist/components/radio-group/RadioGroup/RadioGroup.context.js.map +1 -0
- package/dist/components/radio-group/RadioGroup/RadioGroup.d.ts +15 -0
- package/dist/components/radio-group/RadioGroup/RadioGroup.js +56 -0
- package/dist/components/radio-group/RadioGroup/RadioGroup.js.map +1 -0
- package/dist/components/radio-group/RadioGroup/RadioGroup.types.d.ts +22 -0
- package/dist/components/radio-group/RadioGroup/index.d.ts +3 -0
- package/dist/components/radio-group/RadioGroupItem/RadioGroupItem.d.ts +6 -0
- package/dist/components/radio-group/RadioGroupItem/RadioGroupItem.js +80 -0
- package/dist/components/radio-group/RadioGroupItem/RadioGroupItem.js.map +1 -0
- package/dist/components/radio-group/RadioGroupItem/RadioGroupItem.types.d.ts +9 -0
- package/dist/components/radio-group/RadioGroupItem/index.d.ts +2 -0
- package/dist/components/radio-group/index.d.ts +4 -0
- package/dist/components/radio-group/index.js +3 -0
- package/dist/components/select/Select/Select.context.d.ts +3 -3
- package/dist/components/select/Select/Select.context.js.map +1 -1
- package/dist/components/select/Select/Select.d.ts +5 -2
- package/dist/components/select/Select/Select.js +1 -1
- package/dist/components/select/Select/Select.js.map +1 -1
- package/dist/components/select/Select/Select.types.d.ts +19 -15
- package/dist/components/select/Select/index.d.ts +1 -1
- package/dist/components/select/SelectContent/SelectContent.js +2 -2
- package/dist/components/select/SelectContent/SelectContent.js.map +1 -1
- package/dist/components/select/SelectContent/SelectContent.utils.d.ts +2 -1
- package/dist/components/select/SelectContent/SelectContent.utils.js +2 -2
- package/dist/components/select/SelectContent/SelectContent.utils.js.map +1 -1
- package/dist/components/select/SelectContent/useSelectContent.js +6 -2
- package/dist/components/select/SelectContent/useSelectContent.js.map +1 -1
- package/dist/components/select/SelectItem/SelectItem.js +1 -1
- package/dist/components/select/SelectItem/SelectItem.js.map +1 -1
- package/dist/components/select/SelectItem/SelectItem.types.d.ts +3 -2
- package/dist/components/select/SelectItem/useSelectItem.d.ts +2 -1
- package/dist/components/select/SelectItem/useSelectItem.js +1 -1
- package/dist/components/select/SelectItem/useSelectItem.js.map +1 -1
- package/dist/components/select/SelectValue/SelectValue.js +1 -1
- package/dist/components/select/SelectValue/SelectValue.js.map +1 -1
- package/dist/components/toast/Toast/Toast.d.ts +3 -0
- package/dist/components/toast/Toast/Toast.js +181 -0
- package/dist/components/toast/Toast/Toast.js.map +1 -0
- package/dist/components/toast/Toast/Toast.styles.d.ts +6 -0
- package/dist/components/toast/Toast/Toast.styles.js +27 -0
- package/dist/components/toast/Toast/Toast.styles.js.map +1 -0
- package/dist/components/toast/Toast/Toast.types.d.ts +90 -0
- package/dist/components/toast/Toast/Toast.types.js +6 -0
- package/dist/components/toast/Toast/Toast.types.js.map +1 -0
- package/dist/components/toast/Toast/index.d.ts +2 -0
- package/dist/components/toast/{components → Toaster}/Toaster.d.ts +1 -1
- package/dist/components/toast/Toaster/Toaster.js +102 -0
- package/dist/components/toast/Toaster/Toaster.js.map +1 -0
- package/dist/components/toast/Toaster/Toaster.styles.d.ts +1 -0
- package/dist/components/toast/Toaster/Toaster.styles.js +6 -0
- package/dist/components/toast/Toaster/Toaster.styles.js.map +1 -0
- package/dist/components/toast/Toaster/Toaster.types.d.ts +44 -0
- package/dist/components/toast/Toaster/Toaster.utils.d.ts +7 -0
- package/dist/components/toast/Toaster/Toaster.utils.js +33 -0
- package/dist/components/toast/Toaster/Toaster.utils.js.map +1 -0
- package/dist/components/toast/Toaster/index.d.ts +3 -0
- package/dist/components/toast/index.d.ts +5 -10
- package/dist/components/toast/index.js +4 -5
- package/dist/components/toast/state/index.d.ts +1 -0
- package/dist/components/toast/state/toast.d.ts +24 -0
- package/dist/components/toast/state/toast.js +116 -0
- package/dist/components/toast/state/toast.js.map +1 -0
- package/dist/components/toggle/Toggle/Toggle.d.ts +3 -0
- package/dist/components/toggle/Toggle/Toggle.js +49 -0
- package/dist/components/toggle/Toggle/Toggle.js.map +1 -0
- package/dist/components/toggle/Toggle/Toggle.styles.d.ts +4 -0
- package/dist/components/toggle/Toggle/Toggle.styles.js +23 -0
- package/dist/components/toggle/Toggle/Toggle.styles.js.map +1 -0
- package/dist/components/toggle/Toggle/Toggle.types.d.ts +12 -0
- package/dist/components/toggle/Toggle/index.d.ts +3 -0
- package/dist/components/toggle/index.d.ts +2 -0
- package/dist/components/toggle/index.js +3 -0
- package/dist/components/toggle-group/ToggleGroup/ToggleGroup.context.d.ts +36 -0
- package/dist/components/toggle-group/ToggleGroup/ToggleGroup.context.js +40 -0
- package/dist/components/toggle-group/ToggleGroup/ToggleGroup.context.js.map +1 -0
- package/dist/components/toggle-group/ToggleGroup/ToggleGroup.d.ts +18 -0
- package/dist/components/toggle-group/ToggleGroup/ToggleGroup.js +94 -0
- package/dist/components/toggle-group/ToggleGroup/ToggleGroup.js.map +1 -0
- package/dist/components/toggle-group/ToggleGroup/ToggleGroup.styles.d.ts +8 -0
- package/dist/components/toggle-group/ToggleGroup/ToggleGroup.styles.js +7 -0
- package/dist/components/toggle-group/ToggleGroup/ToggleGroup.styles.js.map +1 -0
- package/dist/components/toggle-group/ToggleGroup/ToggleGroup.types.d.ts +104 -0
- package/dist/components/toggle-group/ToggleGroup/create-change-event-details.d.ts +8 -0
- package/dist/components/toggle-group/ToggleGroup/create-change-event-details.js +25 -0
- package/dist/components/toggle-group/ToggleGroup/create-change-event-details.js.map +1 -0
- package/dist/components/toggle-group/ToggleGroup/index.d.ts +3 -0
- package/dist/components/toggle-group/ToggleGroup/useToggleGroupKeyboard.d.ts +17 -0
- package/dist/components/toggle-group/ToggleGroup/useToggleGroupKeyboard.js +47 -0
- package/dist/components/toggle-group/ToggleGroup/useToggleGroupKeyboard.js.map +1 -0
- package/dist/components/toggle-group/ToggleGroupItem/ToggleGroupItem.d.ts +11 -0
- package/dist/components/toggle-group/ToggleGroupItem/ToggleGroupItem.js +88 -0
- package/dist/components/toggle-group/ToggleGroupItem/ToggleGroupItem.js.map +1 -0
- package/dist/components/toggle-group/ToggleGroupItem/ToggleGroupItem.styles.d.ts +12 -0
- package/dist/components/toggle-group/ToggleGroupItem/ToggleGroupItem.styles.js +7 -0
- package/dist/components/toggle-group/ToggleGroupItem/ToggleGroupItem.styles.js.map +1 -0
- package/dist/components/toggle-group/ToggleGroupItem/ToggleGroupItem.types.d.ts +20 -0
- package/dist/components/toggle-group/ToggleGroupItem/index.d.ts +2 -0
- package/dist/components/toggle-group/call-event-handler.d.ts +5 -0
- package/dist/components/toggle-group/call-event-handler.js +9 -0
- package/dist/components/toggle-group/call-event-handler.js.map +1 -0
- package/dist/components/toggle-group/index.d.ts +4 -0
- package/dist/components/toggle-group/index.js +3 -0
- package/dist/components/tooltip/Tooltip/Tooltip.js +51 -50
- package/dist/components/tooltip/Tooltip/Tooltip.js.map +1 -1
- package/dist/components/tooltip/TooltipArrow/TooltipArrow.d.ts +3 -28
- package/dist/components/tooltip/TooltipArrow/TooltipArrow.js +13 -45
- package/dist/components/tooltip/TooltipArrow/TooltipArrow.js.map +1 -1
- package/dist/components/tooltip/TooltipContent/TooltipContent.context.d.ts +2 -0
- package/dist/components/tooltip/TooltipContent/TooltipContent.context.js.map +1 -1
- package/dist/components/tooltip/TooltipContent/TooltipContent.js +2 -1
- package/dist/components/tooltip/TooltipContent/TooltipContent.js.map +1 -1
- package/dist/components/tooltip/TooltipContent/TooltipContent.types.d.ts +3 -2
- package/dist/components/tooltip/TooltipContent/TooltipContent.utils.d.ts +2 -1
- package/dist/components/tooltip/TooltipContent/TooltipContent.utils.js +8 -4
- package/dist/components/tooltip/TooltipContent/TooltipContent.utils.js.map +1 -1
- package/dist/components/tooltip/TooltipContent/useTooltipContent.js +20 -19
- package/dist/components/tooltip/TooltipContent/useTooltipContent.js.map +1 -1
- package/dist/components/tooltip/TooltipProvider/TooltipProvider.context.d.ts +3 -0
- package/dist/components/tooltip/TooltipProvider/TooltipProvider.context.js +10 -0
- package/dist/components/tooltip/TooltipProvider/TooltipProvider.context.js.map +1 -0
- package/dist/components/tooltip/TooltipProvider/TooltipProvider.d.ts +3 -0
- package/dist/components/tooltip/TooltipProvider/TooltipProvider.js +20 -0
- package/dist/components/tooltip/TooltipProvider/TooltipProvider.js.map +1 -0
- package/dist/components/tooltip/TooltipProvider/TooltipProvider.types.d.ts +11 -0
- package/dist/components/tooltip/TooltipProvider/index.d.ts +3 -0
- package/dist/components/tooltip/index.d.ts +2 -0
- package/dist/components/tooltip/index.js +7 -6
- package/dist/index.d.ts +8 -0
- package/dist/index.js +153 -115
- package/dist/ui.css +1 -1
- package/package.json +7 -6
- package/dist/components/toast/components/Assets.d.ts +0 -9
- package/dist/components/toast/components/Assets.js +0 -32
- package/dist/components/toast/components/Assets.js.map +0 -1
- package/dist/components/toast/components/Toast.d.ts +0 -3
- package/dist/components/toast/components/Toast.js +0 -152
- package/dist/components/toast/components/Toast.js.map +0 -1
- package/dist/components/toast/components/ToastActions.d.ts +0 -12
- package/dist/components/toast/components/ToastActions.js +0 -62
- package/dist/components/toast/components/ToastActions.js.map +0 -1
- package/dist/components/toast/components/ToastContent.d.ts +0 -9
- package/dist/components/toast/components/ToastContent.js +0 -36
- package/dist/components/toast/components/ToastContent.js.map +0 -1
- package/dist/components/toast/components/ToastIcon.d.ts +0 -9
- package/dist/components/toast/components/ToastIcon.js +0 -59
- package/dist/components/toast/components/ToastIcon.js.map +0 -1
- package/dist/components/toast/components/Toaster.js +0 -163
- package/dist/components/toast/components/Toaster.js.map +0 -1
- package/dist/components/toast/constants.d.ts +0 -16
- package/dist/components/toast/constants.js +0 -6
- package/dist/components/toast/constants.js.map +0 -1
- package/dist/components/toast/hooks/useSwipe.d.ts +0 -23
- package/dist/components/toast/hooks/useSwipe.js +0 -59
- package/dist/components/toast/hooks/useSwipe.js.map +0 -1
- package/dist/components/toast/hooks/useTheme.d.ts +0 -2
- package/dist/components/toast/hooks/useTheme.js +0 -22
- package/dist/components/toast/hooks/useTheme.js.map +0 -1
- package/dist/components/toast/hooks/useToastHeight.d.ts +0 -11
- package/dist/components/toast/hooks/useToastHeight.js +0 -35
- package/dist/components/toast/hooks/useToastHeight.js.map +0 -1
- package/dist/components/toast/hooks/useToastSubscription.d.ts +0 -5
- package/dist/components/toast/hooks/useToastSubscription.js +0 -38
- package/dist/components/toast/hooks/useToastSubscription.js.map +0 -1
- package/dist/components/toast/hooks/useToastTimer.d.ts +0 -11
- package/dist/components/toast/hooks/useToastTimer.js +0 -22
- package/dist/components/toast/hooks/useToastTimer.js.map +0 -1
- package/dist/components/toast/hooks/useToasterKeyboard.d.ts +0 -7
- package/dist/components/toast/hooks/useToasterKeyboard.js +0 -14
- package/dist/components/toast/hooks/useToasterKeyboard.js.map +0 -1
- package/dist/components/toast/hooks.d.ts +0 -13
- package/dist/components/toast/hooks.js +0 -37
- package/dist/components/toast/hooks.js.map +0 -1
- package/dist/components/toast/state.d.ts +0 -52
- package/dist/components/toast/state.js +0 -170
- package/dist/components/toast/state.js.map +0 -1
- package/dist/components/toast/types.d.ts +0 -168
- package/dist/components/toast/types.js +0 -6
- package/dist/components/toast/types.js.map +0 -1
- package/dist/components/toast/utils.d.ts +0 -10
- package/dist/components/toast/utils.js +0 -39
- package/dist/components/toast/utils.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PopoverHeader.js","names":["splitProps","ComponentProps","clsx","PopoverHeader","props","local","rest","_el$","_tmpl$","_$spread","_$mergeProps","class"],"sources":["../../../../src/components/popover/PopoverHeader/PopoverHeader.tsx"],"sourcesContent":["import { splitProps } from \"solid-js\";\nimport type { ComponentProps } from \"solid-js\";\nimport { clsx } from \"~/utils\";\n\nexport function PopoverHeader(props: ComponentProps<\"div\">) {\n const [local, rest] = splitProps(props, [\"class\"]);\n return (\n <div\n data-slot=\"popover-header\"\n class={clsx(\"flex flex-col gap-0.5 text-sm\", local.class)}\n {...rest}\n />\n );\n}\n"],"mappings":";;;;;AAIA,SAAgBG,EAAcC,GAA8B;CAC1D,IAAM,CAACC,GAAOC,KAAQN,EAAWI,GAAO,CAAC,OAAO,CAAC;CACjD,cAAA;EAAA,IAAAG,IAAAC,EAAA;EAIY,OAJZC,EAAAF,GAAAG,EAAA,EAAA,IAAA,QAAA;GAAA,OAGWR,EAAK,iCAAiCG,EAAMM,KAAK;EAAC,EAAA,GACrDL,CAAI,GAAA,IAAA,EAAA,GAAAC;CAAA,EAAA,CAAA;AAGd"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { PopoverHeader } from './PopoverHeader';
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { clsx as e } from "../../../utils/clsx.js";
|
|
2
|
+
import { mergeProps as t, spread as n, template as r } from "solid-js/web";
|
|
3
|
+
import { splitProps as i } from "solid-js";
|
|
4
|
+
//#region src/components/popover/PopoverTitle/PopoverTitle.tsx
|
|
5
|
+
var a = /*#__PURE__*/ r("<div data-slot=popover-title>");
|
|
6
|
+
function o(r) {
|
|
7
|
+
let [o, s] = i(r, ["class"]);
|
|
8
|
+
return (() => {
|
|
9
|
+
var r = a();
|
|
10
|
+
return n(r, t({ get class() {
|
|
11
|
+
return e("font-medium", o.class);
|
|
12
|
+
} }, s), !1, !1), r;
|
|
13
|
+
})();
|
|
14
|
+
}
|
|
15
|
+
//#endregion
|
|
16
|
+
export { o as PopoverTitle };
|
|
17
|
+
|
|
18
|
+
//# sourceMappingURL=PopoverTitle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PopoverTitle.js","names":["splitProps","ComponentProps","clsx","PopoverTitle","props","local","rest","_el$","_tmpl$","_$spread","_$mergeProps","class"],"sources":["../../../../src/components/popover/PopoverTitle/PopoverTitle.tsx"],"sourcesContent":["import { splitProps } from \"solid-js\";\nimport type { ComponentProps } from \"solid-js\";\nimport { clsx } from \"~/utils\";\n\nexport function PopoverTitle(props: ComponentProps<\"div\">) {\n const [local, rest] = splitProps(props, [\"class\"]);\n return (\n <div\n data-slot=\"popover-title\"\n class={clsx(\"font-medium\", local.class)}\n {...rest}\n />\n );\n}\n"],"mappings":";;;;;AAIA,SAAgBG,EAAaC,GAA8B;CACzD,IAAM,CAACC,GAAOC,KAAQN,EAAWI,GAAO,CAAC,OAAO,CAAC;CACjD,cAAA;EAAA,IAAAG,IAAAC,EAAA;EAIY,OAJZC,EAAAF,GAAAG,EAAA,EAAA,IAAA,QAAA;GAAA,OAGWR,EAAK,eAAeG,EAAMM,KAAK;EAAC,EAAA,GACnCL,CAAI,GAAA,IAAA,EAAA,GAAAC;CAAA,EAAA,CAAA;AAGd"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { PopoverTitle } from './PopoverTitle';
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { ValidComponent } from 'solid-js';
|
|
2
|
+
import { Button } from '../../button';
|
|
3
|
+
import { PopoverTriggerProps } from './PopoverTrigger.types';
|
|
4
|
+
export declare const PopoverTrigger: <T extends ValidComponent = typeof Button<"button">>(props: PopoverTriggerProps<T>) => import("solid-js").JSX.Element;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { mergeRefs as e } from "../../../utils/ref.js";
|
|
2
|
+
import { Button as t } from "../../button/Button.js";
|
|
3
|
+
import { usePopoverTrigger as n } from "./usePopoverTrigger.js";
|
|
4
|
+
import { Dynamic as r, createComponent as i, memo as a, mergeProps as o } from "solid-js/web";
|
|
5
|
+
//#region src/components/popover/PopoverTrigger/PopoverTrigger.tsx
|
|
6
|
+
var s = (s) => {
|
|
7
|
+
let { ctx: c, isDisabled: l, attachListeners: u } = n(() => s);
|
|
8
|
+
return i(r, o(s, {
|
|
9
|
+
get component() {
|
|
10
|
+
return s.component ?? t;
|
|
11
|
+
},
|
|
12
|
+
ref(t) {
|
|
13
|
+
var n = e(c.setReference, s.ref, u);
|
|
14
|
+
typeof n == "function" && n(t);
|
|
15
|
+
},
|
|
16
|
+
get disabled() {
|
|
17
|
+
return l();
|
|
18
|
+
},
|
|
19
|
+
"data-slot": "popover-trigger",
|
|
20
|
+
"aria-haspopup": "dialog",
|
|
21
|
+
get "aria-expanded"() {
|
|
22
|
+
return c.open();
|
|
23
|
+
},
|
|
24
|
+
get "aria-controls"() {
|
|
25
|
+
return a(() => !!c.open())() ? c.contentId : void 0;
|
|
26
|
+
},
|
|
27
|
+
get "data-state"() {
|
|
28
|
+
return c.open() ? "open" : "closed";
|
|
29
|
+
}
|
|
30
|
+
}));
|
|
31
|
+
};
|
|
32
|
+
//#endregion
|
|
33
|
+
export { s as PopoverTrigger };
|
|
34
|
+
|
|
35
|
+
//# sourceMappingURL=PopoverTrigger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PopoverTrigger.js","names":["ValidComponent","Dynamic","Button","mergeRefs","usePopoverTrigger","PopoverTriggerProps","PopoverTrigger","props","T","ctx","isDisabled","attachListeners","_$createComponent","_$mergeProps","component","ref","r$","_ref$","setReference","disabled","aria-expanded","open","aria-controls","_$memo","contentId","undefined","data-state"],"sources":["../../../../src/components/popover/PopoverTrigger/PopoverTrigger.tsx"],"sourcesContent":["import type { ValidComponent } from \"solid-js\";\nimport { Dynamic } from \"solid-js/web\";\nimport { Button } from \"~/components/button\";\nimport { mergeRefs } from \"~/utils\";\nimport { usePopoverTrigger } from \"./usePopoverTrigger\";\nimport type { PopoverTriggerProps } from \"./PopoverTrigger.types\";\n\nexport const PopoverTrigger = <\n T extends ValidComponent = typeof Button<\"button\">,\n>(\n props: PopoverTriggerProps<T>,\n) => {\n const { ctx, isDisabled, attachListeners } = usePopoverTrigger(() => props);\n\n return (\n <Dynamic\n {...props}\n component={(props.component as ValidComponent) ?? Button<\"button\">}\n ref={mergeRefs(ctx.setReference, props.ref, attachListeners)}\n disabled={isDisabled()}\n data-slot=\"popover-trigger\"\n aria-haspopup=\"dialog\"\n aria-expanded={ctx.open()}\n aria-controls={ctx.open() ? ctx.contentId : undefined}\n data-state={ctx.open() ? \"open\" : \"closed\"}\n />\n );\n};\n"],"mappings":";;;;;AAOA,IAAaM,KAGXC,MACG;CACH,IAAM,EAAEE,QAAKC,eAAYC,uBAAoBP,QAAwBG,CAAK;CAE1E,OAAAK,EACGX,GAAOY,EACFN,GAAK;EAAA,IACTO,YAAS;GAAA,OAAGP,EAAMO,aAAgCZ;EAAgB;EAAAa,IAAAC,GAAA;GAAA,IAAAC,IAC7Dd,EAAUM,EAAIS,cAAcX,EAAMQ,KAAKJ,CAAe;GAAC,OAAAM,KAAA,cAAAA,EAAAD,CAAA;EAAA;EAAA,IAC5DG,WAAQ;GAAA,OAAET,EAAW;EAAC;EAAA,aAAA;EAAA,iBAAA;EAAA,IAAA,kBAAA;GAAA,OAGPD,EAAIY,KAAK;EAAC;EAAA,IAAA,kBAAA;GAAA,OACVE,QAAA,CAAA,CAAAd,EAAIY,KAAK,CAAC,CAAA,CAAA,IAAGZ,EAAIe,YAAYC,KAAAA;EAAS;EAAA,IAAA,eAAA;GAAA,OACzChB,EAAIY,KAAK,IAAI,SAAS;EAAQ;CAAA,CAAA,CAAA;AAGhD"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { usePopoverContext } from '../Popover/Popover.context';
|
|
2
|
+
import { PopoverTriggerProps } from './PopoverTrigger.types';
|
|
3
|
+
import { ValidComponent } from 'solid-js';
|
|
4
|
+
export interface UsePopoverTriggerResult {
|
|
5
|
+
ctx: ReturnType<typeof usePopoverContext>;
|
|
6
|
+
isDisabled: () => boolean;
|
|
7
|
+
/**
|
|
8
|
+
* 把开关浮层相关的原生事件监听器绑定到真正的 DOM 元素上(通过 ref 调用)。
|
|
9
|
+
* 使用 addEventListener 而不是 JSX 的 onXxx prop,是为了不占用这些 prop 名——
|
|
10
|
+
* 调用方自己传的 onClick 不会被覆盖。
|
|
11
|
+
*/
|
|
12
|
+
attachListeners: (el: Element) => void;
|
|
13
|
+
}
|
|
14
|
+
export declare function usePopoverTrigger<T extends ValidComponent>(props: () => PopoverTriggerProps<T>): UsePopoverTriggerResult;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { usePopoverContext as e } from "../Popover/Popover.context.js";
|
|
2
|
+
import { onCleanup as t } from "solid-js";
|
|
3
|
+
//#region src/components/popover/PopoverTrigger/usePopoverTrigger.ts
|
|
4
|
+
function n(n) {
|
|
5
|
+
let r = e("PopoverTrigger"), i = () => r.disabled() || !!n().disabled;
|
|
6
|
+
return {
|
|
7
|
+
ctx: r,
|
|
8
|
+
isDisabled: i,
|
|
9
|
+
attachListeners: (e) => {
|
|
10
|
+
let n = () => {
|
|
11
|
+
i() || r.togglePopover();
|
|
12
|
+
}, a = (e) => {
|
|
13
|
+
if (i()) return;
|
|
14
|
+
let t = e;
|
|
15
|
+
if (!r.open()) {
|
|
16
|
+
[
|
|
17
|
+
"ArrowDown",
|
|
18
|
+
"ArrowUp",
|
|
19
|
+
"Enter",
|
|
20
|
+
" "
|
|
21
|
+
].includes(t.key) && (t.preventDefault(), r.openPopover());
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
t.key === "Escape" && (t.stopPropagation(), r.closePopover());
|
|
25
|
+
};
|
|
26
|
+
e.addEventListener("click", n), e.addEventListener("keydown", a), t(() => {
|
|
27
|
+
e.removeEventListener("click", n), e.removeEventListener("keydown", a);
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
//#endregion
|
|
33
|
+
export { n as usePopoverTrigger };
|
|
34
|
+
|
|
35
|
+
//# sourceMappingURL=usePopoverTrigger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usePopoverTrigger.js","names":[],"sources":["../../../../src/components/popover/PopoverTrigger/usePopoverTrigger.ts"],"sourcesContent":["import { onCleanup } from \"solid-js\";\nimport { usePopoverContext } from \"../Popover/Popover.context\";\nimport type { PopoverTriggerProps } from \"./PopoverTrigger.types\";\nimport type { ValidComponent } from \"solid-js\";\n\nexport interface UsePopoverTriggerResult {\n ctx: ReturnType<typeof usePopoverContext>;\n isDisabled: () => boolean;\n /**\n * 把开关浮层相关的原生事件监听器绑定到真正的 DOM 元素上(通过 ref 调用)。\n * 使用 addEventListener 而不是 JSX 的 onXxx prop,是为了不占用这些 prop 名——\n * 调用方自己传的 onClick 不会被覆盖。\n */\n attachListeners: (el: Element) => void;\n}\n\nexport function usePopoverTrigger<T extends ValidComponent>(\n props: () => PopoverTriggerProps<T>,\n): UsePopoverTriggerResult {\n const ctx = usePopoverContext(\"PopoverTrigger\");\n\n const isDisabled = () => ctx.disabled() || !!props().disabled;\n\n const attachListeners = (el: Element) => {\n const onClick = () => {\n if (isDisabled()) return;\n ctx.togglePopover();\n };\n\n const onKeyDown = (e: Event) => {\n if (isDisabled()) return;\n const keyboardEvent = e as KeyboardEvent;\n\n if (!ctx.open()) {\n if (\n [\"ArrowDown\", \"ArrowUp\", \"Enter\", \" \"].includes(keyboardEvent.key)\n ) {\n keyboardEvent.preventDefault();\n ctx.openPopover();\n }\n return;\n }\n\n if (keyboardEvent.key === \"Escape\") {\n keyboardEvent.stopPropagation();\n ctx.closePopover();\n }\n };\n\n el.addEventListener(\"click\", onClick);\n el.addEventListener(\"keydown\", onKeyDown);\n\n onCleanup(() => {\n el.removeEventListener(\"click\", onClick);\n el.removeEventListener(\"keydown\", onKeyDown);\n });\n };\n\n return { ctx, isDisabled, attachListeners };\n}\n"],"mappings":";;;AAgBA,SAAgB,EACd,GACyB;CACzB,IAAM,IAAM,EAAkB,gBAAgB,GAExC,UAAmB,EAAI,SAAS,KAAK,CAAC,CAAC,EAAM,CAAC,CAAC;CAqCrD,OAAO;EAAE;EAAK;EAAY,kBAnCD,MAAgB;GACvC,IAAM,UAAgB;IAChB,EAAW,KACf,EAAI,cAAc;GACpB,GAEM,KAAa,MAAa;IAC9B,IAAI,EAAW,GAAG;IAClB,IAAM,IAAgB;IAEtB,IAAI,CAAC,EAAI,KAAK,GAAG;KACf,AACE;MAAC;MAAa;MAAW;MAAS;KAAG,CAAC,CAAC,SAAS,EAAc,GAAG,MAEjE,EAAc,eAAe,GAC7B,EAAI,YAAY;KAElB;IACF;IAEA,AAAI,EAAc,QAAQ,aACxB,EAAc,gBAAgB,GAC9B,EAAI,aAAa;GAErB;GAKA,AAHA,EAAG,iBAAiB,SAAS,CAAO,GACpC,EAAG,iBAAiB,WAAW,CAAS,GAExC,QAAgB;IAEd,AADA,EAAG,oBAAoB,SAAS,CAAO,GACvC,EAAG,oBAAoB,WAAW,CAAS;GAC7C,CAAC;EACH;CAE0C;AAC5C"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { Popover } from './Popover';
|
|
2
|
+
export type { PopoverProps, PopoverContextValue } from './Popover';
|
|
3
|
+
export { PopoverTrigger } from './PopoverTrigger';
|
|
4
|
+
export type { PopoverTriggerProps } from './PopoverTrigger';
|
|
5
|
+
export { PopoverContent } from './PopoverContent';
|
|
6
|
+
export type { PopoverContentProps, PopoverSide } from './PopoverContent';
|
|
7
|
+
export { PopoverHeader } from './PopoverHeader';
|
|
8
|
+
export { PopoverTitle } from './PopoverTitle';
|
|
9
|
+
export { PopoverDescription } from './PopoverDescription';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Popover as e } from "./Popover/Popover.js";
|
|
2
|
+
import { PopoverTrigger as t } from "./PopoverTrigger/PopoverTrigger.js";
|
|
3
|
+
import { PopoverContent as n } from "./PopoverContent/PopoverContent.js";
|
|
4
|
+
import { PopoverHeader as r } from "./PopoverHeader/PopoverHeader.js";
|
|
5
|
+
import { PopoverTitle as i } from "./PopoverTitle/PopoverTitle.js";
|
|
6
|
+
import { PopoverDescription as a } from "./PopoverDescription/PopoverDescription.js";
|
|
7
|
+
export { e as Popover, n as PopoverContent, a as PopoverDescription, r as PopoverHeader, i as PopoverTitle, t as PopoverTrigger };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { createContext as e, useContext as t } from "solid-js";
|
|
2
|
+
//#region src/components/radio-group/RadioGroup/RadioGroup.context.ts
|
|
3
|
+
var n = e();
|
|
4
|
+
function r(e) {
|
|
5
|
+
let r = t(n);
|
|
6
|
+
if (!r) throw Error(`<${e}> 必须渲染在 <RadioGroup> 内部`);
|
|
7
|
+
return r;
|
|
8
|
+
}
|
|
9
|
+
//#endregion
|
|
10
|
+
export { n as RadioGroupContext, r as useRadioGroupContext };
|
|
11
|
+
|
|
12
|
+
//# sourceMappingURL=RadioGroup.context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RadioGroup.context.js","names":[],"sources":["../../../../src/components/radio-group/RadioGroup/RadioGroup.context.ts"],"sourcesContent":["import { createContext, useContext } from \"solid-js\";\nimport type { RadioGroupContextValue } from \"./RadioGroup.types\";\n\nexport const RadioGroupContext = createContext<RadioGroupContextValue>();\n\nexport function useRadioGroupContext(\n component: string,\n): RadioGroupContextValue {\n const ctx = useContext(RadioGroupContext);\n if (!ctx) {\n throw new Error(`<${component}> 必须渲染在 <RadioGroup> 内部`);\n }\n return ctx;\n}\n"],"mappings":";;AAGA,IAAa,IAAoB,EAAsC;AAEvE,SAAgB,EACd,GACwB;CACxB,IAAM,IAAM,EAAW,CAAiB;CACxC,IAAI,CAAC,GACH,MAAU,MAAM,IAAI,EAAU,wBAAwB;CAExD,OAAO;AACT"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { JSX } from 'solid-js';
|
|
2
|
+
import { RadioGroupProps } from './RadioGroup.types';
|
|
3
|
+
/**
|
|
4
|
+
* RadioGroup 根组件:渲染一个 <div role="radiogroup">,并向下提供选中值、
|
|
5
|
+
* 禁用状态和 item 注册方法。选中值支持受控(value)和非受控(defaultValue)。
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```tsx
|
|
9
|
+
* <RadioGroup defaultValue="comfortable">
|
|
10
|
+
* <RadioGroupItem value="default" />
|
|
11
|
+
* <RadioGroupItem value="comfortable" />
|
|
12
|
+
* </RadioGroup>
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
export declare function RadioGroup(props: RadioGroupProps): JSX.Element;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { clsx as e } from "../../../utils/clsx.js";
|
|
2
|
+
import { RadioGroupContext as t } from "./RadioGroup.context.js";
|
|
3
|
+
import { createComponent as n, insert as r, mergeProps as i, spread as a, template as o } from "solid-js/web";
|
|
4
|
+
import { createMemo as s, createSignal as c, splitProps as l } from "solid-js";
|
|
5
|
+
//#region src/components/radio-group/RadioGroup/RadioGroup.tsx
|
|
6
|
+
var u = /*#__PURE__*/ o("<div role=radiogroup data-slot=radio-group>");
|
|
7
|
+
function d(o) {
|
|
8
|
+
let [d, f] = l(o, [
|
|
9
|
+
"value",
|
|
10
|
+
"defaultValue",
|
|
11
|
+
"onValueChange",
|
|
12
|
+
"disabled",
|
|
13
|
+
"name",
|
|
14
|
+
"class",
|
|
15
|
+
"classList",
|
|
16
|
+
"style",
|
|
17
|
+
"dir",
|
|
18
|
+
"children"
|
|
19
|
+
]), [p, m] = c(d.defaultValue), h = s(() => d.value === void 0 ? p() : d.value), g = s(() => !!d.disabled), _ = /* @__PURE__ */ new Map(), v = {
|
|
20
|
+
value: h,
|
|
21
|
+
setValue: (e) => {
|
|
22
|
+
d.value === void 0 && m(e), d.onValueChange?.(e);
|
|
23
|
+
},
|
|
24
|
+
disabled: g,
|
|
25
|
+
name: d.name,
|
|
26
|
+
registerItem: (e, t) => (_.set(e, t), () => {
|
|
27
|
+
_.get(e) === t && _.delete(e);
|
|
28
|
+
}),
|
|
29
|
+
focusItem: (e) => {
|
|
30
|
+
_.get(e)?.focus();
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
return (() => {
|
|
34
|
+
var o = u();
|
|
35
|
+
return a(o, i({
|
|
36
|
+
get class() {
|
|
37
|
+
return e("grid w-full gap-2", d.class);
|
|
38
|
+
},
|
|
39
|
+
get style() {
|
|
40
|
+
return d.style;
|
|
41
|
+
},
|
|
42
|
+
get dir() {
|
|
43
|
+
return d.dir;
|
|
44
|
+
}
|
|
45
|
+
}, f), !1, !0), r(o, n(t.Provider, {
|
|
46
|
+
value: v,
|
|
47
|
+
get children() {
|
|
48
|
+
return d.children;
|
|
49
|
+
}
|
|
50
|
+
})), o;
|
|
51
|
+
})();
|
|
52
|
+
}
|
|
53
|
+
//#endregion
|
|
54
|
+
export { d as RadioGroup };
|
|
55
|
+
|
|
56
|
+
//# sourceMappingURL=RadioGroup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RadioGroup.js","names":["createMemo","createSignal","splitProps","JSX","clsx","RadioGroupContext","RadioGroupContextValue","RadioGroupProps","RadioGroup","props","Element","local","rest","internalValue","setInternalValue","defaultValue","value","undefined","disabled","itemElements","Map","HTMLElement","setValue","next","onValueChange","registerItem","itemValue","element","set","get","delete","focusItem","focus","ctx","name","_el$","_tmpl$","_$spread","_$mergeProps","class","style","dir","_$insert","_$createComponent","Provider","children"],"sources":["../../../../src/components/radio-group/RadioGroup/RadioGroup.tsx"],"sourcesContent":["import { createMemo, createSignal, splitProps, type JSX } from \"solid-js\";\nimport { clsx } from \"~/utils\";\nimport { RadioGroupContext } from \"./RadioGroup.context\";\nimport type {\n RadioGroupContextValue,\n RadioGroupProps,\n} from \"./RadioGroup.types\";\n\n/**\n * RadioGroup 根组件:渲染一个 <div role=\"radiogroup\">,并向下提供选中值、\n * 禁用状态和 item 注册方法。选中值支持受控(value)和非受控(defaultValue)。\n *\n * @example\n * ```tsx\n * <RadioGroup defaultValue=\"comfortable\">\n * <RadioGroupItem value=\"default\" />\n * <RadioGroupItem value=\"comfortable\" />\n * </RadioGroup>\n * ```\n */\nexport function RadioGroup(props: RadioGroupProps): JSX.Element {\n const [local, rest] = splitProps(props, [\n \"value\",\n \"defaultValue\",\n \"onValueChange\",\n \"disabled\",\n \"name\",\n \"class\",\n \"classList\",\n \"style\",\n \"dir\",\n \"children\",\n ]);\n\n const [internalValue, setInternalValue] = createSignal(local.defaultValue);\n const value = createMemo(() =>\n local.value !== undefined ? local.value : internalValue(),\n );\n const disabled = createMemo(() => !!local.disabled);\n\n const itemElements = new Map<string, HTMLElement>();\n\n const setValue = (next: string) => {\n if (local.value === undefined) setInternalValue(next);\n local.onValueChange?.(next);\n };\n\n const registerItem = (itemValue: string, element: HTMLElement) => {\n itemElements.set(itemValue, element);\n return () => {\n if (itemElements.get(itemValue) === element) {\n itemElements.delete(itemValue);\n }\n };\n };\n\n const focusItem = (itemValue: string) => {\n itemElements.get(itemValue)?.focus();\n };\n\n const ctx: RadioGroupContextValue = {\n value,\n setValue,\n disabled,\n name: local.name,\n registerItem,\n focusItem,\n };\n\n return (\n <div\n role=\"radiogroup\"\n data-slot=\"radio-group\"\n class={clsx(\"grid w-full gap-2\", local.class)}\n style={local.style}\n dir={local.dir}\n {...rest}\n >\n <RadioGroupContext.Provider value={ctx}>\n {local.children}\n </RadioGroupContext.Provider>\n </div>\n );\n}\n"],"mappings":";;;;;;AAoBA,SAAgBQ,EAAWC,GAAqC;CAC9D,IAAM,CAACE,GAAOC,KAAQV,EAAWO,GAAO;EACtC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CAAU,CACX,GAEK,CAACI,GAAeC,KAAoBb,EAAaU,EAAMI,YAAY,GACnEC,IAAQhB,QACZW,EAAMK,UAAUC,KAAAA,IAA0BJ,EAAc,IAA5BF,EAAMK,KACpC,GACME,IAAWlB,QAAiB,CAAC,CAACW,EAAMO,QAAQ,GAE5CC,oBAAe,IAAIC,IAAyB,GAoB5Ca,IAA8B;EAClCjB;EACAM,WApBgBC,MAAiB;GAEjCZ,AADIA,EAAMK,UAAUC,KAAAA,KAAWH,EAAiBS,CAAI,GACpDZ,EAAMa,gBAAgBD,CAAI;EAC5B;EAkBEL;EACAgB,MAAMvB,EAAMuB;EACZT,eAlBoBC,GAAmBC,OACvCR,EAAaS,IAAIF,GAAWC,CAAO,SACtB;GACX,AAAIR,EAAaU,IAAIH,CAAS,MAAMC,KAClCR,EAAaW,OAAOJ,CAAS;EAEjC;EAaAK,YAViBL,MAAsB;GACvCP,EAAaU,IAAIH,CAAS,CAAC,EAAEM,MAAM;EACrC;CASA;CAEA,cAAA;EAAA,IAAAG,IAAAC,EAAA;EAUqB,OAVrBC,EAAAF,GAAAG,EAAA;GAAA,IAAA,QAAA;IAAA,OAIWlC,EAAK,qBAAqBO,EAAM4B,KAAK;GAAC;GAAA,IAC7CC,QAAK;IAAA,OAAE7B,EAAM6B;GAAK;GAAA,IAClBC,MAAG;IAAA,OAAE9B,EAAM8B;GAAG;EAAA,GACV7B,CAAI,GAAA,IAAA,EAAA,GAAA8B,EAAAP,GAAAQ,EAEPtC,EAAkBuC,UAAQ;GAAC5B,OAAOiB;GAAG,IAAAY,WAAA;IAAA,OACnClC,EAAMkC;GAAQ;EAAA,CAAA,CAAA,GAAAV;CAAA,EAAA,CAAA;AAIvB"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Accessor, ParentProps } from 'solid-js';
|
|
2
|
+
import { BaseProps } from '../../../types';
|
|
3
|
+
export interface RadioGroupProps extends BaseProps, ParentProps {
|
|
4
|
+
/** 受控选中值;不传则内部自管理(非受控模式) */
|
|
5
|
+
value?: string;
|
|
6
|
+
/** 非受控模式下的初始选中值 */
|
|
7
|
+
defaultValue?: string;
|
|
8
|
+
onValueChange?: (value: string) => void;
|
|
9
|
+
disabled?: boolean;
|
|
10
|
+
/** 原生 radio input 的 name,便于表单提交 */
|
|
11
|
+
name?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface RadioGroupContextValue {
|
|
14
|
+
value: Accessor<string | undefined>;
|
|
15
|
+
setValue: (value: string) => void;
|
|
16
|
+
disabled: Accessor<boolean>;
|
|
17
|
+
name?: string;
|
|
18
|
+
/** RadioGroupItem 挂载时注册自己的 DOM 元素,返回取消注册函数 */
|
|
19
|
+
registerItem: (value: string, element: HTMLElement) => () => void;
|
|
20
|
+
/** 把焦点移动到指定 value 的 item 上 */
|
|
21
|
+
focusItem: (value: string) => void;
|
|
22
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { RadioGroupItemProps } from './RadioGroupItem.types';
|
|
2
|
+
/**
|
|
3
|
+
* RadioGroupItem:一个 role="radio" 的按钮。选中时内部渲染指示圆点。
|
|
4
|
+
* 通过 context 读取 RadioGroup 的选中值和禁用状态,支持受控/非受控。
|
|
5
|
+
*/
|
|
6
|
+
export declare function RadioGroupItem(props: RadioGroupItemProps): import("solid-js").JSX.Element;
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { clsx as e } from "../../../utils/clsx.js";
|
|
2
|
+
import { useRadioGroupContext as t } from "../RadioGroup/RadioGroup.context.js";
|
|
3
|
+
import { createComponent as n, insert as r, mergeProps as i, spread as a, template as o, use as s } from "solid-js/web";
|
|
4
|
+
import { Show as c, createMemo as l, onCleanup as u, splitProps as d } from "solid-js";
|
|
5
|
+
//#region src/components/radio-group/RadioGroupItem/RadioGroupItem.tsx
|
|
6
|
+
var f = /*#__PURE__*/ o("<span data-slot=radio-group-indicator class=\"size-2 rounded-full bg-primary-foreground\">"), p = /*#__PURE__*/ o("<button type=button role=radio data-slot=radio-group-item>");
|
|
7
|
+
function m(o) {
|
|
8
|
+
let m = t("RadioGroupItem"), [h, g] = d(o, [
|
|
9
|
+
"value",
|
|
10
|
+
"disabled",
|
|
11
|
+
"class",
|
|
12
|
+
"classList",
|
|
13
|
+
"style",
|
|
14
|
+
"dir",
|
|
15
|
+
"children"
|
|
16
|
+
]), _ = l(() => m.value() === h.value), v = () => m.disabled() || !!h.disabled, y = () => {
|
|
17
|
+
v() || m.setValue(h.value);
|
|
18
|
+
}, b, x = (e) => {
|
|
19
|
+
let t = () => y(), n = (t) => {
|
|
20
|
+
if (!v()) {
|
|
21
|
+
if (t.key === "Enter" || t.key === " ") {
|
|
22
|
+
t.preventDefault(), y();
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
if ([
|
|
26
|
+
"ArrowDown",
|
|
27
|
+
"ArrowRight",
|
|
28
|
+
"ArrowUp",
|
|
29
|
+
"ArrowLeft"
|
|
30
|
+
].includes(t.key)) {
|
|
31
|
+
t.preventDefault();
|
|
32
|
+
let n = e.closest("[data-slot=\"radio-group\"]"), r = Array.from(n?.querySelectorAll("[data-slot=\"radio-group-item\"]") ?? []).map((e) => e.dataset.value).filter((e) => e !== void 0);
|
|
33
|
+
if (r.length === 0) return;
|
|
34
|
+
let i = r[(r.indexOf(h.value) + (t.key === "ArrowDown" || t.key === "ArrowRight" ? 1 : -1) + r.length) % r.length];
|
|
35
|
+
m.setValue(i), m.focusItem(i);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
e.addEventListener("click", t), e.addEventListener("keydown", n), b = m.registerItem(h.value, e), u(() => {
|
|
40
|
+
e.removeEventListener("click", t), e.removeEventListener("keydown", n), b?.();
|
|
41
|
+
});
|
|
42
|
+
};
|
|
43
|
+
return (() => {
|
|
44
|
+
var t = p();
|
|
45
|
+
return s(x, t), a(t, i({
|
|
46
|
+
get "aria-checked"() {
|
|
47
|
+
return _();
|
|
48
|
+
},
|
|
49
|
+
get "data-value"() {
|
|
50
|
+
return h.value;
|
|
51
|
+
},
|
|
52
|
+
get "data-checked"() {
|
|
53
|
+
return _() ? "" : void 0;
|
|
54
|
+
},
|
|
55
|
+
get disabled() {
|
|
56
|
+
return v();
|
|
57
|
+
},
|
|
58
|
+
get style() {
|
|
59
|
+
return h.style;
|
|
60
|
+
},
|
|
61
|
+
get dir() {
|
|
62
|
+
return h.dir;
|
|
63
|
+
},
|
|
64
|
+
get class() {
|
|
65
|
+
return e("group/radio-group-item peer relative flex aspect-square size-4 shrink-0 items-center justify-center rounded-full border border-input outline-none transition-colors", "focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50", "disabled:cursor-not-allowed disabled:opacity-50", "aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 aria-invalid:aria-checked:border-primary", "dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40", "data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary", h.class);
|
|
66
|
+
}
|
|
67
|
+
}, g), !1, !0), r(t, n(c, {
|
|
68
|
+
get when() {
|
|
69
|
+
return _();
|
|
70
|
+
},
|
|
71
|
+
get children() {
|
|
72
|
+
return f();
|
|
73
|
+
}
|
|
74
|
+
})), t;
|
|
75
|
+
})();
|
|
76
|
+
}
|
|
77
|
+
//#endregion
|
|
78
|
+
export { m as RadioGroupItem };
|
|
79
|
+
|
|
80
|
+
//# sourceMappingURL=RadioGroupItem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RadioGroupItem.js","names":["Show","createMemo","onCleanup","splitProps","clsx","useRadioGroupContext","RadioGroupItemProps","RadioGroupItem","props","ctx","local","rest","checked","value","isDisabled","disabled","select","setValue","unregister","attachListeners","el","HTMLButtonElement","onClick","onKeyDown","e","KeyboardEvent","key","preventDefault","includes","group","closest","HTMLElement","values","Array","from","querySelectorAll","map","item","dataset","filter","undefined","length","currentIndex","indexOf","direction","nextIndex","nextValue","focusItem","addEventListener","registerItem","removeEventListener","_el$","_tmpl$2","_$use","_$spread","_$mergeProps","aria-checked","data-value","data-checked","style","dir","class","_$insert","_$createComponent","when","children","_tmpl$"],"sources":["../../../../src/components/radio-group/RadioGroupItem/RadioGroupItem.tsx"],"sourcesContent":["import { Show, createMemo, onCleanup, splitProps } from \"solid-js\";\nimport { clsx } from \"~/utils\";\nimport { useRadioGroupContext } from \"../RadioGroup\";\nimport type { RadioGroupItemProps } from \"./RadioGroupItem.types\";\n\n/**\n * RadioGroupItem:一个 role=\"radio\" 的按钮。选中时内部渲染指示圆点。\n * 通过 context 读取 RadioGroup 的选中值和禁用状态,支持受控/非受控。\n */\nexport function RadioGroupItem(props: RadioGroupItemProps) {\n const ctx = useRadioGroupContext(\"RadioGroupItem\");\n\n const [local, rest] = splitProps(props, [\n \"value\",\n \"disabled\",\n \"class\",\n \"classList\",\n \"style\",\n \"dir\",\n \"children\",\n ]);\n\n const checked = createMemo(() => ctx.value() === local.value);\n const isDisabled = () => ctx.disabled() || !!local.disabled;\n\n const select = () => {\n if (isDisabled()) return;\n ctx.setValue(local.value);\n };\n\n let unregister: (() => void) | undefined;\n\n const attachListeners = (el: HTMLButtonElement) => {\n const onClick = () => select();\n const onKeyDown = (e: KeyboardEvent) => {\n if (isDisabled()) return;\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n select();\n return;\n }\n\n if ([\"ArrowDown\", \"ArrowRight\", \"ArrowUp\", \"ArrowLeft\"].includes(e.key)) {\n e.preventDefault();\n const group = el.closest<HTMLElement>('[data-slot=\"radio-group\"]');\n const values = Array.from(\n group?.querySelectorAll<HTMLElement>(\n '[data-slot=\"radio-group-item\"]',\n ) ?? [],\n )\n .map((item) => item.dataset.value)\n .filter((value): value is string => value !== undefined);\n if (values.length === 0) return;\n const currentIndex = values.indexOf(local.value);\n const direction =\n e.key === \"ArrowDown\" || e.key === \"ArrowRight\" ? 1 : -1;\n const nextIndex =\n (currentIndex + direction + values.length) % values.length;\n const nextValue = values[nextIndex];\n ctx.setValue(nextValue);\n ctx.focusItem(nextValue);\n }\n };\n\n el.addEventListener(\"click\", onClick);\n el.addEventListener(\"keydown\", onKeyDown);\n unregister = ctx.registerItem(local.value, el);\n\n onCleanup(() => {\n el.removeEventListener(\"click\", onClick);\n el.removeEventListener(\"keydown\", onKeyDown);\n unregister?.();\n });\n };\n\n return (\n <button\n ref={attachListeners}\n type=\"button\"\n role=\"radio\"\n aria-checked={checked()}\n data-slot=\"radio-group-item\"\n data-value={local.value}\n data-checked={checked() ? \"\" : undefined}\n disabled={isDisabled()}\n style={local.style}\n dir={local.dir}\n class={clsx(\n \"group/radio-group-item peer relative flex aspect-square size-4 shrink-0 items-center justify-center rounded-full border border-input outline-none transition-colors\",\n \"focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 aria-invalid:aria-checked:border-primary\",\n \"dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40\",\n \"data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary\",\n local.class,\n )}\n {...rest}\n >\n <Show when={checked()}>\n <span\n data-slot=\"radio-group-indicator\"\n class=\"size-2 rounded-full bg-primary-foreground\"\n />\n </Show>\n </button>\n );\n}\n"],"mappings":";;;;;;AASA,SAAgBO,EAAeC,GAA4B;CACzD,IAAMC,IAAMJ,EAAqB,gBAAgB,GAE3C,CAACK,GAAOC,KAAQR,EAAWK,GAAO;EACtC;EACA;EACA;EACA;EACA;EACA;EACA;CAAU,CACX,GAEKI,IAAUX,QAAiBQ,EAAII,MAAM,MAAMH,EAAMG,KAAK,GACtDC,UAAmBL,EAAIM,SAAS,KAAK,CAAC,CAACL,EAAMK,UAE7CC,UAAe;EACfF,EAAW,KACfL,EAAIQ,SAASP,EAAMG,KAAK;CAC1B,GAEIK,GAEEC,KAAmBC,MAA0B;EACjD,IAAME,UAAgBN,EAAO,GACvBO,KAAaC,MAAqB;GAClCV,OAAW,GACf;QAAIU,EAAEE,QAAQ,WAAWF,EAAEE,QAAQ,KAAK;KAEtCV,AADAQ,EAAEG,eAAe,GACjBX,EAAO;KACP;IACF;IAEA,IAAI;KAAC;KAAa;KAAc;KAAW;IAAW,CAAC,CAACY,SAASJ,EAAEE,GAAG,GAAG;KACvEF,EAAEG,eAAe;KACjB,IAAME,IAAQT,EAAGU,QAAqB,6BAA2B,GAC3DE,IAASC,MAAMC,KACnBL,GAAOM,iBACL,kCACF,KAAK,CAAA,CACP,CAAC,CACEC,KAAKC,MAASA,EAAKC,QAAQzB,KAAK,CAAC,CACjC0B,QAAQ1B,MAA2BA,MAAU2B,KAAAA,CAAS;KACzD,IAAIR,EAAOS,WAAW,GAAG;KAMzB,IAAMK,IAAYd,GALGA,EAAOW,QAAQjC,EAAMG,KAIvC6B,KAFDlB,EAAEE,QAAQ,eAAeF,EAAEE,QAAQ,eAAe,IAAI,MAE1BM,EAAOS,UAAUT,EAAOS;KAGtDhC,AADAA,EAAIQ,SAAS6B,CAAS,GACtBrC,EAAIsC,UAAUD,CAAS;IACzB;GArBA;EAsBF;EAMA5C,AAJAkB,EAAG4B,iBAAiB,SAAS1B,CAAO,GACpCF,EAAG4B,iBAAiB,WAAWzB,CAAS,GACxCL,IAAaT,EAAIwC,aAAavC,EAAMG,OAAOO,CAAE,GAE7ClB,QAAgB;GAGdgB,AAFAE,EAAG8B,oBAAoB,SAAS5B,CAAO,GACvCF,EAAG8B,oBAAoB,WAAW3B,CAAS,GAC3CL,IAAa;EACf,CAAC;CACH;CAEA,cAAA;EAAA,IAAAiC,IAAAC,EAAA;EAuByB,OAvBzBC,EAESlC,GAAegC,CAAA,GAAAG,EAAAH,GAAAI,EAAA;GAAA,IAAA,iBAAA;IAAA,OAGN3C,EAAQ;GAAC;GAAA,IAAA,eAAA;IAAA,OAEXF,EAAMG;GAAK;GAAA,IAAA,iBAAA;IAAA,OACTD,EAAQ,IAAI,KAAK4B,KAAAA;GAAS;GAAA,IACxCzB,WAAQ;IAAA,OAAED,EAAW;GAAC;GAAA,IACtB6C,QAAK;IAAA,OAAEjD,EAAMiD;GAAK;GAAA,IAClBC,MAAG;IAAA,OAAElD,EAAMkD;GAAG;GAAA,IAAA,QAAA;IAAA,OACPxD,EACL,uKACA,6EACA,mDACA,iIACA,kGACA,yHACAM,EAAMmD,KACR;GAAC;EAAA,GACGlD,CAAI,GAAA,IAAA,EAAA,GAAAmD,EAAAX,GAAAY,EAEP/D,GAAI;GAAA,IAACgE,OAAI;IAAA,OAAEpD,EAAQ;GAAC;GAAA,IAAAqD,WAAA;IAAA,OAAAC,EAAA;GAAA;EAAA,CAAA,CAAA,GAAAf;CAAA,EAAA,CAAA;AAQ3B"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { BaseProps } from '../../../types';
|
|
2
|
+
export interface RadioGroupItemProps extends BaseProps {
|
|
3
|
+
/** 当前 radio 的值,必须与 RadioGroup 的 value 进行比较 */
|
|
4
|
+
value: string;
|
|
5
|
+
disabled?: boolean;
|
|
6
|
+
id?: string;
|
|
7
|
+
/** 透传给原生 button 的其余属性,例如 aria-invalid、dir 等 */
|
|
8
|
+
[key: string]: any;
|
|
9
|
+
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { SelectContextValue } from './Select.types';
|
|
2
|
-
export declare const SelectContext: import('solid-js').Context<SelectContextValue | undefined>;
|
|
3
|
-
export declare function useSelectContext(component: string): SelectContextValue
|
|
1
|
+
import { SelectContextValue, SelectOptionValue } from './Select.types';
|
|
2
|
+
export declare const SelectContext: import('solid-js').Context<SelectContextValue<SelectOptionValue> | undefined>;
|
|
3
|
+
export declare function useSelectContext(component: string): SelectContextValue<SelectOptionValue>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Select.context.js","names":[],"sources":["../../../../src/components/select/Select/Select.context.ts"],"sourcesContent":["import { createContext, useContext } from \"solid-js\";\nimport type { SelectContextValue } from \"./Select.types\";\n\nexport const SelectContext = createContext<SelectContextValue>();\n\nexport function useSelectContext(component: string): SelectContextValue {\n const ctx = useContext(SelectContext);\n if (!ctx) {\n throw new Error(`<${component}> 必须渲染在 <Select> 内部`);\n }\n return ctx;\n}\n"],"mappings":";;AAGA,IAAa,IAAgB,EAAkC;AAE/D,SAAgB,
|
|
1
|
+
{"version":3,"file":"Select.context.js","names":[],"sources":["../../../../src/components/select/Select/Select.context.ts"],"sourcesContent":["import { createContext, useContext } from \"solid-js\";\nimport type { SelectContextValue, SelectOptionValue } from \"./Select.types\";\n\nexport const SelectContext = createContext<SelectContextValue>();\n\nexport function useSelectContext(\n component: string,\n): SelectContextValue<SelectOptionValue> {\n const ctx = useContext(SelectContext);\n if (!ctx) {\n throw new Error(`<${component}> 必须渲染在 <Select> 内部`);\n }\n return ctx;\n}\n"],"mappings":";;AAGA,IAAa,IAAgB,EAAkC;AAE/D,SAAgB,EACd,GACuC;CACvC,IAAM,IAAM,EAAW,CAAa;CACpC,IAAI,CAAC,GACH,MAAU,MAAM,IAAI,EAAU,oBAAoB;CAEpD,OAAO;AACT"}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import { JSX } from 'solid-js';
|
|
2
|
-
import { SelectProps } from './Select.types';
|
|
2
|
+
import { SelectOptionValue, SelectProps } from './Select.types';
|
|
3
3
|
/**
|
|
4
4
|
* Select 根组件:不渲染任何 DOM,只负责状态管理 + 提供 context。
|
|
5
5
|
* 真正的展示交给 <SelectTrigger>/<SelectValue>/<SelectContent>/<SelectItem>。
|
|
6
6
|
*
|
|
7
|
+
* 泛型 T 约束为 string | number,用于约束 value / defaultValue /
|
|
8
|
+
* onValueChange / SelectItem.value 的类型。
|
|
9
|
+
*
|
|
7
10
|
* @example
|
|
8
11
|
* ```tsx
|
|
9
12
|
* <Select value={fruit()} onValueChange={setFruit}>
|
|
@@ -16,4 +19,4 @@ import { SelectProps } from './Select.types';
|
|
|
16
19
|
* </Select>
|
|
17
20
|
* ```
|
|
18
21
|
*/
|
|
19
|
-
export declare function Select(props: SelectProps): JSX.Element;
|
|
22
|
+
export declare function Select<T extends SelectOptionValue = string>(props: SelectProps<T>): JSX.Element;
|
|
@@ -5,7 +5,7 @@ import { createStore as a, produce as o } from "solid-js/store";
|
|
|
5
5
|
//#region src/components/select/Select/Select.tsx
|
|
6
6
|
function s(s) {
|
|
7
7
|
let [c, l] = r(s.defaultValue), u = n(() => s.value === void 0 ? c() : s.value), d = (e) => {
|
|
8
|
-
s.value === void 0 && l(e), s.onValueChange?.(e);
|
|
8
|
+
s.value === void 0 && l(() => e), s.onValueChange?.(e);
|
|
9
9
|
}, [f, p] = r(s.defaultOpen ?? !1), m = n(() => s.open === void 0 ? f() : s.open), h = n(() => !!s.disabled), g = (e) => {
|
|
10
10
|
s.open === void 0 && p(e), s.onOpenChange?.(e);
|
|
11
11
|
}, [_, v] = r(), [y, b] = r(), [x, S] = r(), [C, w] = a([]), T = `select-content-${i()}`, E = (e) => (w(o((t) => t.push(e))), () => w(o((t) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Select.js","names":["createSignal","createMemo","createUniqueId","JSX","createStore","produce","SelectContext","SelectContextValue","SelectItemMeta","SelectProps","Select","props","Element","internalValue","setInternalValue","defaultValue","value","undefined","setValue","v","onValueChange","internalOpen","setInternalOpen","defaultOpen","open","disabled","setOpen","next","onOpenChange","reference","setReference","floating","setFloating","HTMLElement","activeValue","setActiveValue","items","setItems","contentId","registerItem","item","list","push","idx","findIndex","it","splice","close","closeAndFocusTrigger","focus","selectValue","ctx","_$createComponent","Provider","children"],"sources":["../../../../src/components/select/Select/Select.tsx"],"sourcesContent":["import { createSignal, createMemo, createUniqueId, type JSX } from \"solid-js\";\nimport { createStore, produce } from \"solid-js/store\";\nimport { SelectContext } from \"./Select.context\";\nimport type {\n SelectContextValue,\n SelectItemMeta,\n SelectProps,\n} from \"./Select.types\";\n\n/**\n * Select 根组件:不渲染任何 DOM,只负责状态管理 + 提供 context。\n * 真正的展示交给 <SelectTrigger>/<SelectValue>/<SelectContent>/<SelectItem>。\n *\n * @example\n * ```tsx\n * <Select value={fruit()} onValueChange={setFruit}>\n * <SelectTrigger>\n * <SelectValue placeholder=\"选择一个水果\" />\n * </SelectTrigger>\n * <SelectContent>\n * <SelectItem value=\"apple\">苹果</SelectItem>\n * </SelectContent>\n * </Select>\n * ```\n */\nexport function Select(props: SelectProps): JSX.Element {\n const [internalValue, setInternalValue] = createSignal(props.defaultValue);\n const value = createMemo(() =>\n props.value !== undefined ? props.value : internalValue(),\n );\n\n const setValue = (v:
|
|
1
|
+
{"version":3,"file":"Select.js","names":["createSignal","createMemo","createUniqueId","JSX","createStore","produce","SelectContext","SelectContextValue","SelectItemMeta","SelectOptionValue","SelectProps","Select","props","T","Element","internalValue","setInternalValue","defaultValue","value","undefined","setValue","v","onValueChange","internalOpen","setInternalOpen","defaultOpen","open","disabled","setOpen","next","onOpenChange","reference","setReference","floating","setFloating","HTMLElement","activeValue","setActiveValue","items","setItems","contentId","registerItem","item","list","push","idx","findIndex","it","splice","close","closeAndFocusTrigger","focus","selectValue","ctx","_$createComponent","Provider","children"],"sources":["../../../../src/components/select/Select/Select.tsx"],"sourcesContent":["import { createSignal, createMemo, createUniqueId, type JSX } from \"solid-js\";\nimport { createStore, produce } from \"solid-js/store\";\nimport { SelectContext } from \"./Select.context\";\nimport type {\n SelectContextValue,\n SelectItemMeta,\n SelectOptionValue,\n SelectProps,\n} from \"./Select.types\";\n\n/**\n * Select 根组件:不渲染任何 DOM,只负责状态管理 + 提供 context。\n * 真正的展示交给 <SelectTrigger>/<SelectValue>/<SelectContent>/<SelectItem>。\n *\n * 泛型 T 约束为 string | number,用于约束 value / defaultValue /\n * onValueChange / SelectItem.value 的类型。\n *\n * @example\n * ```tsx\n * <Select value={fruit()} onValueChange={setFruit}>\n * <SelectTrigger>\n * <SelectValue placeholder=\"选择一个水果\" />\n * </SelectTrigger>\n * <SelectContent>\n * <SelectItem value=\"apple\">苹果</SelectItem>\n * </SelectContent>\n * </Select>\n * ```\n */\nexport function Select<T extends SelectOptionValue = string>(\n props: SelectProps<T>,\n): JSX.Element {\n const [internalValue, setInternalValue] = createSignal<T | undefined>(\n props.defaultValue,\n );\n const value = createMemo(() =>\n props.value !== undefined ? props.value : internalValue(),\n );\n\n const setValue = (v: T) => {\n if (props.value === undefined) setInternalValue(() => v);\n props.onValueChange?.(v);\n };\n\n const [internalOpen, setInternalOpen] = createSignal(\n props.defaultOpen ?? false,\n );\n const open = createMemo(() =>\n props.open !== undefined ? props.open : internalOpen(),\n );\n const disabled = createMemo(() => !!props.disabled);\n\n const setOpen = (next: boolean) => {\n if (props.open === undefined) setInternalOpen(next);\n props.onOpenChange?.(next);\n };\n\n const [reference, setReference] = createSignal<Element>();\n const [floating, setFloating] = createSignal<HTMLElement>();\n const [activeValue, setActiveValue] = createSignal<T>();\n const [items, setItems] = createStore<SelectItemMeta<SelectOptionValue>[]>(\n [],\n );\n const contentId = `select-content-${createUniqueId()}`;\n\n const registerItem = (item: SelectItemMeta<SelectOptionValue>) => {\n setItems(produce((list) => list.push(item)));\n return () =>\n setItems(\n produce((list) => {\n const idx = list.findIndex((it) => it.value === item.value);\n if (idx !== -1) list.splice(idx, 1);\n }),\n );\n };\n\n const close = () => setOpen(false);\n\n const closeAndFocusTrigger = () => {\n setOpen(false);\n (reference() as HTMLElement | undefined)?.focus?.();\n };\n\n const selectValue = (v: SelectOptionValue) => {\n setValue(v as T);\n closeAndFocusTrigger();\n };\n\n const ctx: SelectContextValue = {\n value: value as SelectContextValue[\"value\"],\n setValue: setValue as SelectContextValue[\"setValue\"],\n open,\n setOpen,\n disabled,\n contentId,\n reference,\n setReference,\n floating,\n setFloating,\n get items() {\n return items;\n },\n registerItem,\n activeValue: activeValue as SelectContextValue[\"activeValue\"],\n setActiveValue: setActiveValue as SelectContextValue[\"setActiveValue\"],\n selectValue,\n close,\n };\n\n return (\n <SelectContext.Provider value={ctx}>\n {props.children}\n </SelectContext.Provider>\n );\n}\n"],"mappings":";;;;;AA6BA,SAAgBW,EACdC,GACa;CACb,IAAM,CAACG,GAAeC,KAAoBhB,EACxCY,EAAMK,YACR,GACMC,IAAQjB,QACZW,EAAMM,UAAUC,KAAAA,IAA0BJ,EAAc,IAA5BH,EAAMM,KACpC,GAEME,KAAYC,MAAS;EAEzBT,AADIA,EAAMM,UAAUC,KAAAA,KAAWH,QAAuBK,CAAC,GACvDT,EAAMU,gBAAgBD,CAAC;CACzB,GAEM,CAACE,GAAcC,KAAmBxB,EACtCY,EAAMa,eAAe,EACvB,GACMC,IAAOzB,QACXW,EAAMc,SAASP,KAAAA,IAAyBI,EAAa,IAA1BX,EAAMc,IACnC,GACMC,IAAW1B,QAAiB,CAAC,CAACW,EAAMe,QAAQ,GAE5CC,KAAWC,MAAkB;EAEjCjB,AADIA,EAAMc,SAASP,KAAAA,KAAWK,EAAgBK,CAAI,GAClDjB,EAAMkB,eAAeD,CAAI;CAC3B,GAEM,CAACE,GAAWC,KAAgBhC,EAAsB,GAClD,CAACiC,GAAUC,KAAelC,EAA0B,GACpD,CAACoC,GAAaC,KAAkBrC,EAAgB,GAChD,CAACsC,GAAOC,KAAYnC,EACxB,CAAA,CACF,GACMoC,IAAY,kBAAkBtC,EAAe,KAE7CuC,KAAgBC,OACpBH,EAASlC,GAASsC,MAASA,EAAKC,KAAKF,CAAI,CAAC,CAAC,SAEzCH,EACElC,GAASsC,MAAS;EAChB,IAAME,IAAMF,EAAKG,WAAWC,MAAOA,EAAG7B,UAAUwB,EAAKxB,KAAK;EAC1D,AAAI2B,MAAQ,MAAIF,EAAKK,OAAOH,GAAK,CAAC;CACpC,CAAC,CACH,IAGEI,UAAcrB,EAAQ,EAAK,GAE3BsB,UAA6B;EAEjC,AADAtB,EAAQ,EAAK,GACb,EAAW,CAAC,EAA8BuB,QAAQ;CACpD,GAOME,IAA0B;EACvBnC;EACGE;EACVM;EACAE;EACAD;EACAa;EACAT;EACAC;EACAC;EACAC;EACA,IAAII,QAAQ;GACV,OAAOA;EACT;EACAG;EACaL;EACGC;EAChBe,cAtBmB/B,MAAyB;GAE5C6B,AADA9B,EAASC,CAAM,GACf6B,EAAqB;EACvB;EAoBED;CACF;CAEA,OAAAK,EACGhD,EAAciD,UAAQ;EAACrC,OAAOmC;EAAG,IAAAG,WAAA;GAAA,OAC/B5C,EAAM4C;EAAQ;CAAA,CAAA;AAGrB"}
|
|
@@ -1,24 +1,28 @@
|
|
|
1
1
|
import { Accessor, ParentProps } from 'solid-js';
|
|
2
|
-
export
|
|
3
|
-
|
|
2
|
+
export type SelectOptionValue = string | number;
|
|
3
|
+
export interface SelectItemMeta<T extends SelectOptionValue = SelectOptionValue> {
|
|
4
|
+
value: T;
|
|
4
5
|
label: string;
|
|
5
6
|
disabled?: boolean;
|
|
6
7
|
}
|
|
7
|
-
export interface SelectProps extends ParentProps {
|
|
8
|
-
/**
|
|
9
|
-
|
|
8
|
+
export interface SelectProps<T extends SelectOptionValue = string> extends ParentProps {
|
|
9
|
+
/**
|
|
10
|
+
* 受控选中值;传入 null 表示受控模式下清空已选值。
|
|
11
|
+
* 不传(undefined)则内部自管理(非受控模式)。
|
|
12
|
+
*/
|
|
13
|
+
value?: T | null;
|
|
10
14
|
/** 非受控模式下的初始选中值 */
|
|
11
|
-
defaultValue?:
|
|
12
|
-
onValueChange?: (value:
|
|
15
|
+
defaultValue?: T;
|
|
16
|
+
onValueChange?: (value: T) => void;
|
|
13
17
|
/** 受控 open 状态;不传则内部自管理 */
|
|
14
18
|
open?: boolean;
|
|
15
19
|
defaultOpen?: boolean;
|
|
16
20
|
onOpenChange?: (open: boolean) => void;
|
|
17
21
|
disabled?: boolean;
|
|
18
22
|
}
|
|
19
|
-
export interface SelectContextValue {
|
|
20
|
-
value: Accessor<
|
|
21
|
-
setValue: (v:
|
|
23
|
+
export interface SelectContextValue<T extends SelectOptionValue = SelectOptionValue> {
|
|
24
|
+
value: Accessor<T | null | undefined>;
|
|
25
|
+
setValue: (v: T) => void;
|
|
22
26
|
open: Accessor<boolean>;
|
|
23
27
|
setOpen: (v: boolean) => void;
|
|
24
28
|
disabled: Accessor<boolean>;
|
|
@@ -28,14 +32,14 @@ export interface SelectContextValue {
|
|
|
28
32
|
floating: Accessor<HTMLElement | undefined>;
|
|
29
33
|
setFloating: (el: HTMLElement | undefined) => void;
|
|
30
34
|
/** 已注册的选项列表(响应式 store),SelectContent/SelectValue 都要读 */
|
|
31
|
-
items: SelectItemMeta[];
|
|
35
|
+
items: SelectItemMeta<T>[];
|
|
32
36
|
/** SelectItem 挂载时注册自己,返回取消注册函数(卸载时调用) */
|
|
33
|
-
registerItem: (item: SelectItemMeta) => () => void;
|
|
37
|
+
registerItem: (item: SelectItemMeta<T>) => () => void;
|
|
34
38
|
/** 键盘/鼠标悬停高亮的项 */
|
|
35
|
-
activeValue: Accessor<
|
|
36
|
-
setActiveValue: (v:
|
|
39
|
+
activeValue: Accessor<T | undefined>;
|
|
40
|
+
setActiveValue: (v: T | undefined) => void;
|
|
37
41
|
/** 选中某项后调用:设值、关闭、把 focus 还给 trigger */
|
|
38
|
-
selectValue: (v:
|
|
42
|
+
selectValue: (v: T) => void;
|
|
39
43
|
/** 单纯关闭(不选择任何值),键盘 Esc / 点击外部时用 */
|
|
40
44
|
close: () => void;
|
|
41
45
|
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export { Select } from './Select';
|
|
2
2
|
export { SelectContext, useSelectContext } from './Select.context';
|
|
3
|
-
export type { SelectProps, SelectContextValue, SelectItemMeta, } from './Select.types';
|
|
3
|
+
export type { SelectOptionValue, SelectProps, SelectContextValue, SelectItemMeta, } from './Select.types';
|
|
@@ -3,7 +3,7 @@ import { useSelectContent as t } from "./useSelectContent.js";
|
|
|
3
3
|
import { Portal as n, createComponent as r, effect as i, insert as a, mergeProps as o, spread as s, style as c, template as l, use as u } from "solid-js/web";
|
|
4
4
|
import { createEffect as d, createMemo as f, onCleanup as p, splitProps as m } from "solid-js";
|
|
5
5
|
//#region src/components/select/SelectContent/SelectContent.tsx
|
|
6
|
-
var h = /*#__PURE__*/ l("<div style=z-index:1000><div role=listbox>");
|
|
6
|
+
var h = /*#__PURE__*/ l("<div data-slot=select-content style=z-index:1000><div role=listbox>");
|
|
7
7
|
function g(l) {
|
|
8
8
|
let { ctx: g, pos: _, maxHeight: v, isVisible: y, animationState: b, contentElement: x, setContentElement: S } = t(() => l), [C, w] = m(l, [
|
|
9
9
|
"placement",
|
|
@@ -45,7 +45,7 @@ function g(l) {
|
|
|
45
45
|
g.open() && (document.addEventListener("keydown", D), p(() => document.removeEventListener("keydown", D)));
|
|
46
46
|
}), d(() => {
|
|
47
47
|
let e = g.activeValue(), t = x();
|
|
48
|
-
!e || !t || t.querySelector(`[data-value="${CSS.escape(e)}"]`)?.scrollIntoView({ block: "nearest" });
|
|
48
|
+
!e || !t || t.querySelector(`[data-value="${CSS.escape(String(e))}"]`)?.scrollIntoView({ block: "nearest" });
|
|
49
49
|
}), r(n, { get children() {
|
|
50
50
|
var t = h(), n = t.firstChild;
|
|
51
51
|
return u((e) => {
|