@neut/ui 0.0.17 → 0.0.18
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/accordion/Accordion/Accordion.js +3 -0
- package/dist/components/accordion/Accordion/Accordion.js.map +1 -1
- package/dist/components/accordion/AccordionContent/AccordionContent.js +27 -21
- package/dist/components/accordion/AccordionContent/AccordionContent.js.map +1 -1
- package/dist/components/accordion/AccordionItem/AccordionItem.js +3 -0
- package/dist/components/accordion/AccordionItem/AccordionItem.js.map +1 -1
- package/dist/components/accordion/AccordionTrigger/AccordionTrigger.js +19 -18
- package/dist/components/accordion/AccordionTrigger/AccordionTrigger.js.map +1 -1
- package/dist/components/alert/Alert/Alert.js +8 -3
- package/dist/components/alert/Alert/Alert.js.map +1 -1
- package/dist/components/alert/AlertAction/AlertAction.js +8 -3
- package/dist/components/alert/AlertAction/AlertAction.js.map +1 -1
- package/dist/components/alert/AlertDescription/AlertDescription.js +8 -3
- package/dist/components/alert/AlertDescription/AlertDescription.js.map +1 -1
- package/dist/components/alert/AlertTitle/AlertTitle.js +8 -3
- package/dist/components/alert/AlertTitle/AlertTitle.js.map +1 -1
- package/dist/components/alert-dialog/AlertDialog/AlertDialog.d.ts +3 -1
- package/dist/components/alert-dialog/AlertDialog/AlertDialog.js +6 -1
- package/dist/components/alert-dialog/AlertDialog/AlertDialog.js.map +1 -1
- package/dist/components/alert-dialog/AlertDialogCancel/AlertDialogCancel.js +9 -7
- package/dist/components/alert-dialog/AlertDialogCancel/AlertDialogCancel.js.map +1 -1
- package/dist/components/alert-dialog/AlertDialogContent/AlertDialogContent.types.d.ts +9 -3
- package/dist/components/alert-dialog/AlertDialogDescription/AlertDialogDescription.js +8 -3
- package/dist/components/alert-dialog/AlertDialogDescription/AlertDialogDescription.js.map +1 -1
- package/dist/components/alert-dialog/AlertDialogFooter/AlertDialogFooter.js +8 -3
- package/dist/components/alert-dialog/AlertDialogFooter/AlertDialogFooter.js.map +1 -1
- package/dist/components/alert-dialog/AlertDialogHeader/AlertDialogHeader.js +8 -3
- package/dist/components/alert-dialog/AlertDialogHeader/AlertDialogHeader.js.map +1 -1
- package/dist/components/alert-dialog/AlertDialogMedia/AlertDialogMedia.js +8 -3
- package/dist/components/alert-dialog/AlertDialogMedia/AlertDialogMedia.js.map +1 -1
- package/dist/components/alert-dialog/AlertDialogTitle/AlertDialogTitle.js +8 -3
- package/dist/components/alert-dialog/AlertDialogTitle/AlertDialogTitle.js.map +1 -1
- package/dist/components/aspect-ratio/AspectRatio.js +3 -0
- package/dist/components/aspect-ratio/AspectRatio.js.map +1 -1
- package/dist/components/attachment/AttachmentTrigger/AttachmentTrigger.js +15 -7
- package/dist/components/attachment/AttachmentTrigger/AttachmentTrigger.js.map +1 -1
- package/dist/components/avatar/Avatar/Avatar.context.d.ts +7 -0
- package/dist/components/avatar/Avatar/Avatar.context.js +1 -1
- package/dist/components/avatar/Avatar/Avatar.context.js.map +1 -1
- package/dist/components/avatar/Avatar/Avatar.js +7 -2
- package/dist/components/avatar/Avatar/Avatar.js.map +1 -1
- package/dist/components/avatar/AvatarBadge/AvatarBadge.js +8 -3
- package/dist/components/avatar/AvatarBadge/AvatarBadge.js.map +1 -1
- package/dist/components/avatar/AvatarFallback/AvatarFallback.js +10 -5
- package/dist/components/avatar/AvatarFallback/AvatarFallback.js.map +1 -1
- package/dist/components/avatar/AvatarGroup/AvatarGroup.js +8 -3
- package/dist/components/avatar/AvatarGroup/AvatarGroup.js.map +1 -1
- package/dist/components/avatar/AvatarGroupCount/AvatarGroupCount.js +8 -3
- package/dist/components/avatar/AvatarGroupCount/AvatarGroupCount.js.map +1 -1
- package/dist/components/avatar/AvatarImage/AvatarImage.js +19 -12
- package/dist/components/avatar/AvatarImage/AvatarImage.js.map +1 -1
- package/dist/components/badge/Badge.js +9 -4
- package/dist/components/badge/Badge.js.map +1 -1
- package/dist/components/breadcrumb/BreadcrumbEllipsis/BreadcrumbEllipsis.js +8 -3
- package/dist/components/breadcrumb/BreadcrumbEllipsis/BreadcrumbEllipsis.js.map +1 -1
- package/dist/components/breadcrumb/BreadcrumbItem/BreadcrumbItem.js +8 -3
- package/dist/components/breadcrumb/BreadcrumbItem/BreadcrumbItem.js.map +1 -1
- package/dist/components/breadcrumb/BreadcrumbLink/BreadcrumbLink.js +3 -0
- package/dist/components/breadcrumb/BreadcrumbLink/BreadcrumbLink.js.map +1 -1
- package/dist/components/breadcrumb/BreadcrumbList/BreadcrumbList.js +8 -3
- package/dist/components/breadcrumb/BreadcrumbList/BreadcrumbList.js.map +1 -1
- package/dist/components/breadcrumb/BreadcrumbPage/BreadcrumbPage.js +8 -3
- package/dist/components/breadcrumb/BreadcrumbPage/BreadcrumbPage.js.map +1 -1
- package/dist/components/breadcrumb/BreadcrumbSeparator/BreadcrumbSeparator.js +8 -3
- package/dist/components/breadcrumb/BreadcrumbSeparator/BreadcrumbSeparator.js.map +1 -1
- package/dist/components/bubble/BubbleContent/BubbleContent.js +21 -10
- package/dist/components/bubble/BubbleContent/BubbleContent.js.map +1 -1
- package/dist/components/button/Button.js +3 -0
- package/dist/components/button/Button.js.map +1 -1
- package/dist/components/button-group/ButtonGroup/ButtonGroup.js +3 -0
- package/dist/components/button-group/ButtonGroup/ButtonGroup.js.map +1 -1
- package/dist/components/button-group/ButtonGroupText/ButtonGroupText.js +16 -7
- package/dist/components/button-group/ButtonGroupText/ButtonGroupText.js.map +1 -1
- package/dist/components/calendar/Calendar/Calendar.d.ts +2 -3
- package/dist/components/calendar/Calendar/Calendar.js +89 -264
- package/dist/components/calendar/Calendar/Calendar.js.map +1 -1
- package/dist/components/calendar/Calendar/Calendar.options.d.ts +43 -0
- package/dist/components/calendar/Calendar/Calendar.options.js +38 -0
- package/dist/components/calendar/Calendar/Calendar.options.js.map +1 -0
- package/dist/components/calendar/Calendar/Calendar.selection.d.ts +16 -0
- package/dist/components/calendar/Calendar/Calendar.selection.js +50 -0
- package/dist/components/calendar/Calendar/Calendar.selection.js.map +1 -0
- package/dist/components/calendar/Calendar/Calendar.styles.d.ts +8 -0
- package/dist/components/calendar/Calendar/Calendar.styles.js +32 -0
- package/dist/components/calendar/Calendar/Calendar.styles.js.map +1 -0
- package/dist/components/calendar/Calendar/Calendar.utils.d.ts +3 -1
- package/dist/components/calendar/Calendar/Calendar.utils.js +4 -1
- package/dist/components/calendar/Calendar/Calendar.utils.js.map +1 -1
- package/dist/components/calendar/Calendar/CalendarDay.d.ts +28 -0
- package/dist/components/calendar/Calendar/CalendarDay.js +41 -0
- package/dist/components/calendar/Calendar/CalendarDay.js.map +1 -0
- package/dist/components/calendar/Calendar/CalendarMonth.d.ts +35 -0
- package/dist/components/calendar/Calendar/CalendarMonth.js +127 -0
- package/dist/components/calendar/Calendar/CalendarMonth.js.map +1 -0
- package/dist/components/calendar/Calendar/CalendarMonthCaption.d.ts +22 -0
- package/dist/components/calendar/Calendar/CalendarMonthCaption.js +103 -0
- package/dist/components/calendar/Calendar/CalendarMonthCaption.js.map +1 -0
- package/dist/components/calendar/index.js +3 -2
- package/dist/components/card/Card/Card.js +3 -0
- package/dist/components/card/Card/Card.js.map +1 -1
- package/dist/components/card/CardAction/CardAction.js +8 -3
- package/dist/components/card/CardAction/CardAction.js.map +1 -1
- package/dist/components/card/CardContent/CardContent.js +8 -3
- package/dist/components/card/CardContent/CardContent.js.map +1 -1
- package/dist/components/card/CardDescription/CardDescription.js +8 -3
- package/dist/components/card/CardDescription/CardDescription.js.map +1 -1
- package/dist/components/card/CardFooter/CardFooter.js +8 -3
- package/dist/components/card/CardFooter/CardFooter.js.map +1 -1
- package/dist/components/card/CardHeader/CardHeader.js +8 -3
- package/dist/components/card/CardHeader/CardHeader.js.map +1 -1
- package/dist/components/card/CardTitle/CardTitle.js +8 -3
- package/dist/components/card/CardTitle/CardTitle.js.map +1 -1
- package/dist/components/carousel/Carousel/Carousel.context.js +1 -1
- package/dist/components/carousel/Carousel/Carousel.context.js.map +1 -1
- package/dist/components/carousel/Carousel/Carousel.js +19 -12
- package/dist/components/carousel/Carousel/Carousel.js.map +1 -1
- package/dist/components/carousel/Carousel/useKeyboardNavigation.d.ts +11 -1
- package/dist/components/carousel/Carousel/useKeyboardNavigation.js +5 -4
- package/dist/components/carousel/Carousel/useKeyboardNavigation.js.map +1 -1
- package/dist/components/carousel/CarouselContent/CarouselContent.js +8 -3
- package/dist/components/carousel/CarouselContent/CarouselContent.js.map +1 -1
- package/dist/components/carousel/CarouselNext/CarouselNext.js +29 -16
- package/dist/components/carousel/CarouselNext/CarouselNext.js.map +1 -1
- package/dist/components/carousel/CarouselPrevious/CarouselPrevious.js +29 -16
- package/dist/components/carousel/CarouselPrevious/CarouselPrevious.js.map +1 -1
- package/dist/components/checkbox/Checkbox/Checkbox.js +32 -25
- package/dist/components/checkbox/Checkbox/Checkbox.js.map +1 -1
- package/dist/components/collapsible/Collapsible/Collapsible.context.js +1 -1
- package/dist/components/collapsible/Collapsible/Collapsible.context.js.map +1 -1
- package/dist/components/collapsible/CollapsibleTrigger/CollapsibleTrigger.js +13 -12
- package/dist/components/collapsible/CollapsibleTrigger/CollapsibleTrigger.js.map +1 -1
- package/dist/components/combobox/Combobox/Combobox.js +52 -52
- package/dist/components/combobox/Combobox/Combobox.js.map +1 -1
- package/dist/components/combobox/Combobox/Combobox.types.d.ts +15 -6
- package/dist/components/combobox/ComboboxChipsInput/ComboboxChipsInput.js +7 -3
- package/dist/components/combobox/ComboboxChipsInput/ComboboxChipsInput.js.map +1 -1
- package/dist/components/combobox/ComboboxClear/ComboboxClear.js +1 -1
- package/dist/components/combobox/ComboboxClear/ComboboxClear.js.map +1 -1
- package/dist/components/combobox/ComboboxInput/ComboboxInput.js +26 -10
- package/dist/components/combobox/ComboboxInput/ComboboxInput.js.map +1 -1
- package/dist/components/combobox/ComboboxItem/ComboboxItem.js +6 -5
- package/dist/components/combobox/ComboboxItem/ComboboxItem.js.map +1 -1
- package/dist/components/combobox/ComboboxList/ComboboxList.js +17 -11
- package/dist/components/combobox/ComboboxList/ComboboxList.js.map +1 -1
- package/dist/components/combobox/ComboboxTrigger/ComboboxTrigger.js +8 -1
- package/dist/components/combobox/ComboboxTrigger/ComboboxTrigger.js.map +1 -1
- package/dist/components/context-menu/ContextMenu/ContextMenu.js +10 -8
- package/dist/components/context-menu/ContextMenu/ContextMenu.js.map +1 -1
- package/dist/components/context-menu/ContextMenuContent/context-menu.highlight.d.ts +33 -0
- package/dist/components/context-menu/ContextMenuContent/context-menu.highlight.js +41 -0
- package/dist/components/context-menu/ContextMenuContent/context-menu.highlight.js.map +1 -0
- package/dist/components/context-menu/ContextMenuContent/context-menu.popup-items.d.ts +25 -0
- package/dist/components/context-menu/ContextMenuContent/context-menu.popup-items.js +20 -0
- package/dist/components/context-menu/ContextMenuContent/context-menu.popup-items.js.map +1 -0
- package/dist/components/context-menu/ContextMenuContent/context-menu.positioner.d.ts +31 -0
- package/dist/components/context-menu/ContextMenuContent/context-menu.positioner.js +39 -0
- package/dist/components/context-menu/ContextMenuContent/context-menu.positioner.js.map +1 -0
- package/dist/components/context-menu/ContextMenuContent/useContextMenuContent.js +70 -136
- package/dist/components/context-menu/ContextMenuContent/useContextMenuContent.js.map +1 -1
- package/dist/components/context-menu/ContextMenuSub/ContextMenuSub.js +2 -1
- package/dist/components/context-menu/ContextMenuSub/ContextMenuSub.js.map +1 -1
- package/dist/components/context-menu/ContextMenuTrigger/ContextMenuTrigger.js +20 -10
- package/dist/components/context-menu/ContextMenuTrigger/ContextMenuTrigger.js.map +1 -1
- package/dist/components/context-menu/ContextMenuTrigger/context-menu.long-press.d.ts +24 -0
- package/dist/components/context-menu/ContextMenuTrigger/context-menu.long-press.js +26 -0
- package/dist/components/context-menu/ContextMenuTrigger/context-menu.long-press.js.map +1 -0
- package/dist/components/context-menu/ContextMenuTrigger/context-menu.trigger.utils.d.ts +35 -0
- package/dist/components/context-menu/ContextMenuTrigger/context-menu.trigger.utils.js +17 -0
- package/dist/components/context-menu/ContextMenuTrigger/context-menu.trigger.utils.js.map +1 -0
- package/dist/components/context-menu/ContextMenuTrigger/useContextMenuTrigger.d.ts +9 -11
- package/dist/components/context-menu/ContextMenuTrigger/useContextMenuTrigger.js +36 -33
- package/dist/components/context-menu/ContextMenuTrigger/useContextMenuTrigger.js.map +1 -1
- package/dist/components/context-menu/context-menu.keyboard.d.ts +29 -0
- package/dist/components/context-menu/context-menu.keyboard.js +52 -0
- package/dist/components/context-menu/context-menu.keyboard.js.map +1 -0
- package/dist/components/context-menu/context-menu.typeahead.d.ts +27 -0
- package/dist/components/context-menu/context-menu.typeahead.js +19 -0
- package/dist/components/context-menu/context-menu.typeahead.js.map +1 -0
- package/dist/components/context-menu/context-menu.utils.d.ts +5 -2
- package/dist/components/context-menu/context-menu.utils.js +17 -39
- package/dist/components/context-menu/context-menu.utils.js.map +1 -1
- package/dist/components/date-picker/DatePicker/DatePicker.js +6 -0
- package/dist/components/date-picker/DatePicker/DatePicker.js.map +1 -1
- package/dist/components/dialog/Dialog/Dialog.context.js +1 -1
- package/dist/components/dialog/Dialog/Dialog.context.js.map +1 -1
- package/dist/components/dialog/Dialog/Dialog.js +24 -15
- package/dist/components/dialog/Dialog/Dialog.js.map +1 -1
- package/dist/components/dialog/Dialog/Dialog.types.d.ts +5 -0
- package/dist/components/dialog/DialogClose/DialogClose.js +20 -19
- package/dist/components/dialog/DialogClose/DialogClose.js.map +1 -1
- package/dist/components/dialog/DialogContent/DialogContent.context.js +1 -1
- package/dist/components/dialog/DialogContent/DialogContent.context.js.map +1 -1
- package/dist/components/dialog/DialogDescription/DialogDescription.js +8 -3
- package/dist/components/dialog/DialogDescription/DialogDescription.js.map +1 -1
- package/dist/components/dialog/DialogFooter/DialogFooter.js +8 -3
- package/dist/components/dialog/DialogFooter/DialogFooter.js.map +1 -1
- package/dist/components/dialog/DialogHeader/DialogHeader.js +8 -3
- package/dist/components/dialog/DialogHeader/DialogHeader.js.map +1 -1
- package/dist/components/dialog/DialogOverlay/DialogOverlay.js +3 -0
- package/dist/components/dialog/DialogOverlay/DialogOverlay.js.map +1 -1
- package/dist/components/dialog/DialogSurface/DialogSurface.js +34 -26
- package/dist/components/dialog/DialogSurface/DialogSurface.js.map +1 -1
- package/dist/components/dialog/DialogTitle/DialogTitle.js +8 -3
- package/dist/components/dialog/DialogTitle/DialogTitle.js.map +1 -1
- package/dist/components/drawer/Drawer/Drawer.js +1 -1
- package/dist/components/drawer/Drawer/Drawer.js.map +1 -1
- package/dist/components/drawer/Drawer/create-change-event-details.js +4 -20
- package/dist/components/drawer/Drawer/create-change-event-details.js.map +1 -1
- package/dist/components/drawer/DrawerContent/drawer-swipe.utils.d.ts +32 -0
- package/dist/components/drawer/DrawerContent/drawer-swipe.utils.js +36 -0
- package/dist/components/drawer/DrawerContent/drawer-swipe.utils.js.map +1 -0
- package/dist/components/drawer/DrawerContent/useDrawerSwipe.d.ts +3 -0
- package/dist/components/drawer/DrawerContent/useDrawerSwipe.js +22 -42
- package/dist/components/drawer/DrawerContent/useDrawerSwipe.js.map +1 -1
- package/dist/components/drawer/DrawerOverlay/DrawerOverlay.js +1 -1
- package/dist/components/drawer/DrawerOverlay/DrawerOverlay.js.map +1 -1
- package/dist/components/dropdown-menu/DropdownMenuTrigger/DropdownMenuTrigger.js +7 -7
- package/dist/components/dropdown-menu/DropdownMenuTrigger/DropdownMenuTrigger.js.map +1 -1
- package/dist/components/dropdown-menu/DropdownMenuTrigger/useDropdownMenuTrigger.d.ts +7 -1
- package/dist/components/dropdown-menu/DropdownMenuTrigger/useDropdownMenuTrigger.js +10 -10
- package/dist/components/dropdown-menu/DropdownMenuTrigger/useDropdownMenuTrigger.js.map +1 -1
- package/dist/components/field/Field/Field.js +3 -0
- package/dist/components/field/Field/Field.js.map +1 -1
- package/dist/components/field/FieldContent/FieldContent.js +8 -3
- package/dist/components/field/FieldContent/FieldContent.js.map +1 -1
- package/dist/components/field/FieldDescription/FieldDescription.js +8 -3
- package/dist/components/field/FieldDescription/FieldDescription.js.map +1 -1
- package/dist/components/field/FieldError/FieldError.js +8 -3
- package/dist/components/field/FieldError/FieldError.js.map +1 -1
- package/dist/components/field/FieldGroup/FieldGroup.js +8 -3
- package/dist/components/field/FieldGroup/FieldGroup.js.map +1 -1
- package/dist/components/field/FieldLabel/FieldLabel.js +3 -0
- package/dist/components/field/FieldLabel/FieldLabel.js.map +1 -1
- package/dist/components/field/FieldLegend/FieldLegend.js +3 -0
- package/dist/components/field/FieldLegend/FieldLegend.js.map +1 -1
- package/dist/components/field/FieldSeparator/FieldSeparator.js +3 -0
- package/dist/components/field/FieldSeparator/FieldSeparator.js.map +1 -1
- package/dist/components/field/FieldSet/FieldSet.js +8 -3
- package/dist/components/field/FieldSet/FieldSet.js.map +1 -1
- package/dist/components/field/FieldTitle/FieldTitle.js +8 -3
- package/dist/components/field/FieldTitle/FieldTitle.js.map +1 -1
- package/dist/components/image/Image.utils.d.ts +14 -16
- package/dist/components/image/Image.utils.js +146 -190
- package/dist/components/image/Image.utils.js.map +1 -1
- package/dist/components/image/ImageElement.js +31 -27
- package/dist/components/image/ImageElement.js.map +1 -1
- package/dist/components/image/lib/blur.d.ts +31 -0
- package/dist/components/image/lib/blur.js +24 -0
- package/dist/components/image/lib/blur.js.map +1 -0
- package/dist/components/image/lib/dev-checks.d.ts +52 -0
- package/dist/components/image/lib/handle-loading.d.ts +13 -0
- package/dist/components/image/lib/handle-loading.js +20 -0
- package/dist/components/image/lib/handle-loading.js.map +1 -0
- package/dist/components/image/lib/loader.d.ts +39 -0
- package/dist/components/image/lib/loader.js +57 -0
- package/dist/components/image/lib/loader.js.map +1 -0
- package/dist/components/image/lib/static-import.d.ts +14 -0
- package/dist/components/image/lib/static-import.js +17 -0
- package/dist/components/image/lib/static-import.js.map +1 -0
- package/dist/components/input-group/InputGroup/InputGroup.js +8 -3
- package/dist/components/input-group/InputGroup/InputGroup.js.map +1 -1
- package/dist/components/input-group/InputGroupAddon/InputGroupAddon.js +3 -0
- package/dist/components/input-group/InputGroupAddon/InputGroupAddon.js.map +1 -1
- package/dist/components/input-group/InputGroupButton/InputGroupButton.js +3 -0
- package/dist/components/input-group/InputGroupButton/InputGroupButton.js.map +1 -1
- package/dist/components/input-group/InputGroupInput/InputGroupInput.js +3 -0
- package/dist/components/input-group/InputGroupInput/InputGroupInput.js.map +1 -1
- package/dist/components/input-group/InputGroupText/InputGroupText.js +8 -3
- package/dist/components/input-group/InputGroupText/InputGroupText.js.map +1 -1
- package/dist/components/input-group/InputGroupTextarea/InputGroupTextarea.js +3 -0
- package/dist/components/input-group/InputGroupTextarea/InputGroupTextarea.js.map +1 -1
- package/dist/components/item/Item/Item.js +9 -0
- package/dist/components/item/Item/Item.js.map +1 -1
- package/dist/components/item/ItemActions/ItemActions.js +8 -3
- package/dist/components/item/ItemActions/ItemActions.js.map +1 -1
- package/dist/components/item/ItemContent/ItemContent.js +8 -3
- package/dist/components/item/ItemContent/ItemContent.js.map +1 -1
- package/dist/components/item/ItemDescription/ItemDescription.js +8 -3
- package/dist/components/item/ItemDescription/ItemDescription.js.map +1 -1
- package/dist/components/item/ItemFooter/ItemFooter.js +8 -3
- package/dist/components/item/ItemFooter/ItemFooter.js.map +1 -1
- package/dist/components/item/ItemGroup/ItemGroup.js +8 -3
- package/dist/components/item/ItemGroup/ItemGroup.js.map +1 -1
- package/dist/components/item/ItemHeader/ItemHeader.js +8 -3
- package/dist/components/item/ItemHeader/ItemHeader.js.map +1 -1
- package/dist/components/item/ItemMedia/ItemMedia.js +3 -0
- package/dist/components/item/ItemMedia/ItemMedia.js.map +1 -1
- package/dist/components/item/ItemSeparator/ItemSeparator.js +3 -0
- package/dist/components/item/ItemSeparator/ItemSeparator.js.map +1 -1
- package/dist/components/item/ItemTitle/ItemTitle.js +8 -3
- package/dist/components/item/ItemTitle/ItemTitle.js.map +1 -1
- package/dist/components/kbd/Kbd.js +16 -6
- package/dist/components/kbd/Kbd.js.map +1 -1
- package/dist/components/label/Label.js +3 -0
- package/dist/components/label/Label.js.map +1 -1
- package/dist/components/marker/Marker/Marker.styles.d.ts +1 -1
- package/dist/components/message-scroller/message-scroller.anchoring.d.ts +60 -0
- package/dist/components/message-scroller/message-scroller.anchoring.js +139 -0
- package/dist/components/message-scroller/message-scroller.anchoring.js.map +1 -0
- package/dist/components/message-scroller/message-scroller.anchors.d.ts +12 -0
- package/dist/components/message-scroller/message-scroller.anchors.js +23 -0
- package/dist/components/message-scroller/message-scroller.anchors.js.map +1 -0
- package/dist/components/message-scroller/message-scroller.commands.d.ts +43 -0
- package/dist/components/message-scroller/message-scroller.commands.js +51 -0
- package/dist/components/message-scroller/message-scroller.commands.js.map +1 -0
- package/dist/components/message-scroller/message-scroller.dom-measure.d.ts +29 -0
- package/dist/components/message-scroller/message-scroller.dom-measure.js +37 -0
- package/dist/components/message-scroller/message-scroller.dom-measure.js.map +1 -0
- package/dist/components/message-scroller/message-scroller.measure.d.ts +27 -0
- package/dist/components/message-scroller/message-scroller.measure.js +21 -0
- package/dist/components/message-scroller/message-scroller.measure.js.map +1 -0
- package/dist/components/message-scroller/message-scroller.scroll-state.d.ts +54 -0
- package/dist/components/message-scroller/message-scroller.scroll-state.js +74 -0
- package/dist/components/message-scroller/message-scroller.scroll-state.js.map +1 -0
- package/dist/components/message-scroller/message-scroller.scroll-target.d.ts +27 -0
- package/dist/components/message-scroller/message-scroller.scroll-target.js +33 -0
- package/dist/components/message-scroller/message-scroller.scroll-target.js.map +1 -0
- package/dist/components/message-scroller/message-scroller.utils.d.ts +7 -0
- package/dist/components/message-scroller/message-scroller.utils.js +3 -2
- package/dist/components/message-scroller/message-scroller.utils.js.map +1 -1
- package/dist/components/message-scroller/message-scroller.visibility.d.ts +43 -0
- package/dist/components/message-scroller/message-scroller.visibility.js +82 -0
- package/dist/components/message-scroller/message-scroller.visibility.js.map +1 -0
- package/dist/components/message-scroller/useMessageScrollerEngine.js +87 -337
- package/dist/components/message-scroller/useMessageScrollerEngine.js.map +1 -1
- package/dist/components/number-input/NumberInput/NumberInput.js +21 -19
- package/dist/components/number-input/NumberInput/NumberInput.js.map +1 -1
- package/dist/components/number-input/NumberInput/NumberInput.utils.d.ts +6 -2
- package/dist/components/number-input/NumberInput/NumberInput.utils.js +1 -3
- package/dist/components/number-input/NumberInput/NumberInput.utils.js.map +1 -1
- package/dist/components/number-input/NumberInput/create-change-event-details.d.ts +1 -2
- package/dist/components/number-input/NumberInput/create-change-event-details.js +4 -20
- package/dist/components/number-input/NumberInput/create-change-event-details.js.map +1 -1
- package/dist/components/pagination/Pagination/Pagination.js +8 -3
- package/dist/components/pagination/Pagination/Pagination.js.map +1 -1
- package/dist/components/pagination/PaginationContent/PaginationContent.js +8 -3
- package/dist/components/pagination/PaginationContent/PaginationContent.js.map +1 -1
- package/dist/components/pagination/PaginationEllipsis/PaginationEllipsis.js +8 -3
- package/dist/components/pagination/PaginationEllipsis/PaginationEllipsis.js.map +1 -1
- package/dist/components/pagination/PaginationLink/PaginationLink.js +3 -0
- package/dist/components/pagination/PaginationLink/PaginationLink.js.map +1 -1
- package/dist/components/pagination/PaginationNext/PaginationNext.js +3 -0
- package/dist/components/pagination/PaginationNext/PaginationNext.js.map +1 -1
- package/dist/components/pagination/PaginationPrevious/PaginationPrevious.js +3 -0
- package/dist/components/pagination/PaginationPrevious/PaginationPrevious.js.map +1 -1
- package/dist/components/popover/PopoverContent/PopoverContent.js +3 -0
- package/dist/components/popover/PopoverContent/PopoverContent.js.map +1 -1
- package/dist/components/progress/Progress/Progress.context.js +1 -1
- package/dist/components/progress/Progress/Progress.context.js.map +1 -1
- package/dist/components/progress/Progress/Progress.js +3 -0
- package/dist/components/progress/Progress/Progress.js.map +1 -1
- package/dist/components/progress/ProgressIndicator/ProgressIndicator.js +3 -0
- package/dist/components/progress/ProgressIndicator/ProgressIndicator.js.map +1 -1
- package/dist/components/progress/ProgressLabel/ProgressLabel.js +8 -3
- package/dist/components/progress/ProgressLabel/ProgressLabel.js.map +1 -1
- package/dist/components/progress/ProgressTrack/ProgressTrack.js +3 -0
- package/dist/components/progress/ProgressTrack/ProgressTrack.js.map +1 -1
- package/dist/components/progress/ProgressValue/ProgressValue.js +8 -3
- package/dist/components/progress/ProgressValue/ProgressValue.js.map +1 -1
- package/dist/components/questionnaire/QuestionnaireChoice/questionnaire-choice.utils.d.ts +48 -0
- package/dist/components/questionnaire/QuestionnaireChoice/questionnaire-choice.utils.js +23 -0
- package/dist/components/questionnaire/QuestionnaireChoice/questionnaire-choice.utils.js.map +1 -0
- package/dist/components/questionnaire/QuestionnaireChoice/useQuestionnaireChoice.js +62 -49
- package/dist/components/questionnaire/QuestionnaireChoice/useQuestionnaireChoice.js.map +1 -1
- package/dist/components/questionnaire/QuestionnaireInput/useQuestionnaireInput.js +4 -1
- package/dist/components/questionnaire/QuestionnaireInput/useQuestionnaireInput.js.map +1 -1
- package/dist/components/questionnaire/QuestionnaireItem/QuestionnaireItem.js +1 -2
- package/dist/components/questionnaire/QuestionnaireItem/QuestionnaireItem.js.map +1 -1
- package/dist/components/questionnaire/questionnaire.answers.d.ts +42 -0
- package/dist/components/questionnaire/questionnaire.answers.js +62 -0
- package/dist/components/questionnaire/questionnaire.answers.js.map +1 -0
- package/dist/components/questionnaire/questionnaire.aria.d.ts +34 -0
- package/dist/components/questionnaire/questionnaire.aria.js +28 -0
- package/dist/components/questionnaire/questionnaire.aria.js.map +1 -0
- package/dist/components/questionnaire/questionnaire.dom-watch.d.ts +9 -0
- package/dist/components/questionnaire/questionnaire.dom-watch.js +18 -0
- package/dist/components/questionnaire/questionnaire.dom-watch.js.map +1 -0
- package/dist/components/questionnaire/questionnaire.focus.d.ts +26 -0
- package/dist/components/questionnaire/questionnaire.focus.js +19 -0
- package/dist/components/questionnaire/questionnaire.focus.js.map +1 -0
- package/dist/components/questionnaire/questionnaire.item-view.d.ts +50 -0
- package/dist/components/questionnaire/questionnaire.item-view.js +36 -0
- package/dist/components/questionnaire/questionnaire.item-view.js.map +1 -0
- package/dist/components/questionnaire/questionnaire.keys.d.ts +29 -0
- package/dist/components/questionnaire/questionnaire.keys.js +34 -0
- package/dist/components/questionnaire/questionnaire.keys.js.map +1 -0
- package/dist/components/questionnaire/questionnaire.registry.d.ts +21 -0
- package/dist/components/questionnaire/questionnaire.registry.js +15 -0
- package/dist/components/questionnaire/questionnaire.registry.js.map +1 -0
- package/dist/components/questionnaire/questionnaire.shortcuts.d.ts +24 -0
- package/dist/components/questionnaire/questionnaire.shortcuts.js +31 -0
- package/dist/components/questionnaire/questionnaire.shortcuts.js.map +1 -0
- package/dist/components/questionnaire/questionnaire.utils.d.ts +17 -1
- package/dist/components/questionnaire/questionnaire.utils.js +5 -2
- package/dist/components/questionnaire/questionnaire.utils.js.map +1 -1
- package/dist/components/questionnaire/questionnaire.validation.d.ts +43 -0
- package/dist/components/questionnaire/questionnaire.validation.js +17 -0
- package/dist/components/questionnaire/questionnaire.validation.js.map +1 -0
- package/dist/components/questionnaire/useQuestionnaireItem.d.ts +0 -2
- package/dist/components/questionnaire/useQuestionnaireItem.js +83 -121
- package/dist/components/questionnaire/useQuestionnaireItem.js.map +1 -1
- package/dist/components/questionnaire/useQuestionnaireRoot.js +78 -99
- package/dist/components/questionnaire/useQuestionnaireRoot.js.map +1 -1
- package/dist/components/radio-group/RadioGroup/RadioGroup.js +3 -0
- package/dist/components/radio-group/RadioGroup/RadioGroup.js.map +1 -1
- package/dist/components/radio-group/RadioGroupItem/RadioGroupItem.js +3 -0
- package/dist/components/radio-group/RadioGroupItem/RadioGroupItem.js.map +1 -1
- package/dist/components/resizable/ResizableHandle/resizable.handle-drag.d.ts +37 -0
- package/dist/components/resizable/ResizableHandle/resizable.handle-drag.js +37 -0
- package/dist/components/resizable/ResizableHandle/resizable.handle-drag.js.map +1 -0
- package/dist/components/resizable/ResizableHandle/resizable.handle-keys.d.ts +24 -0
- package/dist/components/resizable/ResizableHandle/resizable.handle-keys.js +36 -0
- package/dist/components/resizable/ResizableHandle/resizable.handle-keys.js.map +1 -0
- package/dist/components/resizable/ResizableHandle/useResizableHandle.d.ts +3 -4
- package/dist/components/resizable/ResizableHandle/useResizableHandle.js +30 -63
- package/dist/components/resizable/ResizableHandle/useResizableHandle.js.map +1 -1
- package/dist/components/resizable/ResizablePanel/ResizablePanel.d.ts +4 -2
- package/dist/components/resizable/ResizablePanel/ResizablePanel.js +23 -50
- package/dist/components/resizable/ResizablePanel/ResizablePanel.js.map +1 -1
- package/dist/components/resizable/ResizablePanel/useResizablePanel.d.ts +30 -0
- package/dist/components/resizable/ResizablePanel/useResizablePanel.js +37 -0
- package/dist/components/resizable/ResizablePanel/useResizablePanel.js.map +1 -0
- package/dist/components/resizable/ResizablePanelGroup/ResizablePanelGroup.d.ts +4 -1
- package/dist/components/resizable/ResizablePanelGroup/ResizablePanelGroup.js +10 -17
- package/dist/components/resizable/ResizablePanelGroup/ResizablePanelGroup.js.map +1 -1
- package/dist/components/resizable/ResizablePanelGroup/useDragCursor.d.ts +11 -0
- package/dist/components/resizable/ResizablePanelGroup/useDragCursor.js +17 -0
- package/dist/components/resizable/ResizablePanelGroup/useDragCursor.js.map +1 -0
- package/dist/components/resizable/resizable.collapse.d.ts +27 -0
- package/dist/components/resizable/resizable.collapse.js +24 -0
- package/dist/components/resizable/resizable.collapse.js.map +1 -0
- package/dist/components/resizable/resizable.commands.d.ts +32 -0
- package/dist/components/resizable/resizable.commands.js +40 -0
- package/dist/components/resizable/resizable.commands.js.map +1 -0
- package/dist/components/resizable/resizable.constraints.d.ts +23 -0
- package/dist/components/resizable/resizable.constraints.js +32 -0
- package/dist/components/resizable/resizable.constraints.js.map +1 -0
- package/dist/components/resizable/resizable.lifecycle.d.ts +35 -0
- package/dist/components/resizable/resizable.lifecycle.js +32 -0
- package/dist/components/resizable/resizable.lifecycle.js.map +1 -0
- package/dist/components/resizable/resizable.registry.d.ts +31 -0
- package/dist/components/resizable/resizable.registry.js +38 -0
- package/dist/components/resizable/resizable.registry.js.map +1 -0
- package/dist/components/resizable/resizable.reporting.d.ts +36 -0
- package/dist/components/resizable/resizable.reporting.js +33 -0
- package/dist/components/resizable/resizable.reporting.js.map +1 -0
- package/dist/components/resizable/resizable.resize.d.ts +47 -0
- package/dist/components/resizable/resizable.resize.js +28 -0
- package/dist/components/resizable/resizable.resize.js.map +1 -0
- package/dist/components/resizable/resizable.sizes.d.ts +31 -0
- package/dist/components/resizable/resizable.sizes.js +46 -0
- package/dist/components/resizable/resizable.sizes.js.map +1 -0
- package/dist/components/resizable/resizable.storage.d.ts +17 -0
- package/dist/components/resizable/resizable.storage.js +29 -0
- package/dist/components/resizable/resizable.storage.js.map +1 -0
- package/dist/components/resizable/resizable.utils.d.ts +10 -3
- package/dist/components/resizable/resizable.utils.js +16 -10
- package/dist/components/resizable/resizable.utils.js.map +1 -1
- package/dist/components/resizable/useResizablePanelGroup.js +62 -164
- package/dist/components/resizable/useResizablePanelGroup.js.map +1 -1
- package/dist/components/scroll-area/ScrollArea/ScrollArea.context.js +1 -1
- package/dist/components/scroll-area/ScrollArea/ScrollArea.context.js.map +1 -1
- package/dist/components/scroll-area/ScrollArea/ScrollArea.d.ts +9 -0
- package/dist/components/scroll-area/ScrollArea/ScrollArea.js +28 -39
- package/dist/components/scroll-area/ScrollArea/ScrollArea.js.map +1 -1
- package/dist/components/scroll-area/ScrollArea/ScrollArea.utils.js +3 -3
- package/dist/components/scroll-area/ScrollArea/ScrollArea.utils.js.map +1 -1
- package/dist/components/scroll-area/ScrollArea/useScrollAreaMetrics.d.ts +22 -0
- package/dist/components/scroll-area/ScrollArea/useScrollAreaMetrics.js +34 -0
- package/dist/components/scroll-area/ScrollArea/useScrollAreaMetrics.js.map +1 -0
- package/dist/components/scroll-area/ScrollBar/ScrollBar.d.ts +8 -0
- package/dist/components/scroll-area/ScrollBar/ScrollBar.js +38 -71
- package/dist/components/scroll-area/ScrollBar/ScrollBar.js.map +1 -1
- package/dist/components/scroll-area/ScrollBar/ScrollBar.utils.d.ts +56 -0
- package/dist/components/scroll-area/ScrollBar/ScrollBar.utils.js +61 -0
- package/dist/components/scroll-area/ScrollBar/ScrollBar.utils.js.map +1 -0
- package/dist/components/scroll-area/ScrollBar/scroll-bar.thumb-drag.d.ts +25 -0
- package/dist/components/scroll-area/ScrollBar/scroll-bar.thumb-drag.js +26 -0
- package/dist/components/scroll-area/ScrollBar/scroll-bar.thumb-drag.js.map +1 -0
- package/dist/components/scroll-area/ScrollBar/useScrollBarInteraction.d.ts +19 -0
- package/dist/components/scroll-area/ScrollBar/useScrollBarInteraction.js +37 -0
- package/dist/components/scroll-area/ScrollBar/useScrollBarInteraction.js.map +1 -0
- package/dist/components/scroll-arrows/ScrollArrowButton.d.ts +5 -7
- package/dist/components/scroll-arrows/ScrollArrowButton.js +14 -44
- package/dist/components/scroll-arrows/ScrollArrowButton.js.map +1 -1
- package/dist/components/scroll-arrows/ScrollArrows.d.ts +4 -3
- package/dist/components/scroll-arrows/ScrollArrows.js +16 -22
- package/dist/components/scroll-arrows/ScrollArrows.js.map +1 -1
- package/dist/components/scroll-arrows/ScrollArrows.types.d.ts +7 -7
- package/dist/components/scroll-arrows/useHoverScroll.d.ts +29 -0
- package/dist/components/scroll-arrows/useHoverScroll.js +39 -0
- package/dist/components/scroll-arrows/useHoverScroll.js.map +1 -0
- package/dist/components/select/SelectContent/useSelectContent.js +3 -3
- package/dist/components/select/SelectGroup/SelectGroup.d.ts +8 -2
- package/dist/components/select/SelectGroup/SelectGroup.js +20 -6
- package/dist/components/select/SelectGroup/SelectGroup.js.map +1 -1
- package/dist/components/select/SelectGroup/SelectGroup.types.d.ts +9 -0
- package/dist/components/select/SelectGroup/index.d.ts +1 -0
- package/dist/components/select/SelectTrigger/SelectTrigger.js.map +1 -1
- package/dist/components/select/SelectTrigger/useSelectTrigger.js +1 -1
- package/dist/components/select/SelectTrigger/useSelectTrigger.js.map +1 -1
- package/dist/components/separator/Separator.js +3 -0
- package/dist/components/separator/Separator.js.map +1 -1
- package/dist/components/sheet/SheetClose/SheetClose.js +18 -17
- package/dist/components/sheet/SheetClose/SheetClose.js.map +1 -1
- package/dist/components/sidebar/Sidebar/Sidebar.js +14 -6
- package/dist/components/sidebar/Sidebar/Sidebar.js.map +1 -1
- package/dist/components/sidebar/SidebarContent/SidebarContent.js +8 -3
- package/dist/components/sidebar/SidebarContent/SidebarContent.js.map +1 -1
- package/dist/components/sidebar/SidebarFooter/SidebarFooter.js +8 -3
- package/dist/components/sidebar/SidebarFooter/SidebarFooter.js.map +1 -1
- package/dist/components/sidebar/SidebarGroup/SidebarGroup.js +8 -3
- package/dist/components/sidebar/SidebarGroup/SidebarGroup.js.map +1 -1
- package/dist/components/sidebar/SidebarGroupAction/SidebarGroupAction.js +3 -0
- package/dist/components/sidebar/SidebarGroupAction/SidebarGroupAction.js.map +1 -1
- package/dist/components/sidebar/SidebarGroupContent/SidebarGroupContent.js +8 -3
- package/dist/components/sidebar/SidebarGroupContent/SidebarGroupContent.js.map +1 -1
- package/dist/components/sidebar/SidebarGroupLabel/SidebarGroupLabel.js +3 -0
- package/dist/components/sidebar/SidebarGroupLabel/SidebarGroupLabel.js.map +1 -1
- package/dist/components/sidebar/SidebarHeader/SidebarHeader.js +8 -3
- package/dist/components/sidebar/SidebarHeader/SidebarHeader.js.map +1 -1
- package/dist/components/sidebar/SidebarInput/SidebarInput.js +3 -0
- package/dist/components/sidebar/SidebarInput/SidebarInput.js.map +1 -1
- package/dist/components/sidebar/SidebarInset/SidebarInset.js +8 -3
- package/dist/components/sidebar/SidebarInset/SidebarInset.js.map +1 -1
- package/dist/components/sidebar/SidebarMenu/SidebarMenu.js +8 -3
- package/dist/components/sidebar/SidebarMenu/SidebarMenu.js.map +1 -1
- package/dist/components/sidebar/SidebarMenuBadge/SidebarMenuBadge.js +8 -3
- package/dist/components/sidebar/SidebarMenuBadge/SidebarMenuBadge.js.map +1 -1
- package/dist/components/sidebar/SidebarMenuButton/SidebarMenuButton.js +6 -0
- package/dist/components/sidebar/SidebarMenuButton/SidebarMenuButton.js.map +1 -1
- package/dist/components/sidebar/SidebarMenuItem/SidebarMenuItem.js +8 -3
- package/dist/components/sidebar/SidebarMenuItem/SidebarMenuItem.js.map +1 -1
- package/dist/components/sidebar/SidebarMenuSkeleton/SidebarMenuSkeleton.js +8 -3
- package/dist/components/sidebar/SidebarMenuSkeleton/SidebarMenuSkeleton.js.map +1 -1
- package/dist/components/sidebar/SidebarMenuSub/SidebarMenuSub.js +8 -3
- package/dist/components/sidebar/SidebarMenuSub/SidebarMenuSub.js.map +1 -1
- package/dist/components/sidebar/SidebarMenuSubButton/SidebarMenuSubButton.js +3 -0
- package/dist/components/sidebar/SidebarMenuSubButton/SidebarMenuSubButton.js.map +1 -1
- package/dist/components/sidebar/SidebarMenuSubItem/SidebarMenuSubItem.js +8 -3
- package/dist/components/sidebar/SidebarMenuSubItem/SidebarMenuSubItem.js.map +1 -1
- package/dist/components/sidebar/SidebarProvider/SidebarProvider.context.js +1 -1
- package/dist/components/sidebar/SidebarProvider/SidebarProvider.context.js.map +1 -1
- package/dist/components/sidebar/SidebarProvider/SidebarProvider.js +30 -27
- package/dist/components/sidebar/SidebarProvider/SidebarProvider.js.map +1 -1
- package/dist/components/sidebar/SidebarProvider/useIsMobile.d.ts +10 -0
- package/dist/components/sidebar/SidebarProvider/useIsMobile.js +14 -0
- package/dist/components/sidebar/SidebarProvider/useIsMobile.js.map +1 -0
- package/dist/components/sidebar/SidebarRail/SidebarRail.js +8 -3
- package/dist/components/sidebar/SidebarRail/SidebarRail.js.map +1 -1
- package/dist/components/sidebar/SidebarSeparator/SidebarSeparator.js +3 -0
- package/dist/components/sidebar/SidebarSeparator/SidebarSeparator.js.map +1 -1
- package/dist/components/sidebar/SidebarTrigger/SidebarTrigger.js +3 -0
- package/dist/components/sidebar/SidebarTrigger/SidebarTrigger.js.map +1 -1
- package/dist/components/skeleton/Skeleton.js +8 -3
- package/dist/components/skeleton/Skeleton.js.map +1 -1
- package/dist/components/slider/Slider/Slider.context.js +1 -1
- package/dist/components/slider/Slider/Slider.context.js.map +1 -1
- package/dist/components/slider/Slider/Slider.js +3 -0
- package/dist/components/slider/Slider/Slider.js.map +1 -1
- package/dist/components/slider/SliderControl/SliderControl.js +4 -1
- package/dist/components/slider/SliderControl/SliderControl.js.map +1 -1
- package/dist/components/slider/SliderIndicator/SliderIndicator.js +3 -0
- package/dist/components/slider/SliderIndicator/SliderIndicator.js.map +1 -1
- package/dist/components/slider/SliderThumb/SliderThumb.js +18 -3
- package/dist/components/slider/SliderThumb/SliderThumb.js.map +1 -1
- package/dist/components/slider/SliderThumb/useSliderThumb.d.ts +1 -0
- package/dist/components/slider/SliderThumb/useSliderThumb.js +3 -2
- package/dist/components/slider/SliderThumb/useSliderThumb.js.map +1 -1
- package/dist/components/slider/SliderTrack/SliderTrack.js +3 -0
- package/dist/components/slider/SliderTrack/SliderTrack.js.map +1 -1
- package/dist/components/spinner/Spinner.js +3 -0
- package/dist/components/spinner/Spinner.js.map +1 -1
- package/dist/components/switch/Switch.js +7 -0
- package/dist/components/switch/Switch.js.map +1 -1
- package/dist/components/tabs/Tabs/Tabs.context.js +1 -1
- package/dist/components/tabs/Tabs/Tabs.context.js.map +1 -1
- package/dist/components/tabs/Tabs/useTabsKeyboard.d.ts +7 -11
- package/dist/components/tabs/Tabs/useTabsKeyboard.js +8 -42
- package/dist/components/tabs/Tabs/useTabsKeyboard.js.map +1 -1
- package/dist/components/tabs/TabsList/TabsList.context.js +1 -1
- package/dist/components/tabs/TabsList/TabsList.context.js.map +1 -1
- package/dist/components/tabs/TabsList/TabsList.js +10 -10
- package/dist/components/tabs/TabsList/TabsList.js.map +1 -1
- package/dist/components/tabs/TabsTrigger/TabsTrigger.js +8 -8
- package/dist/components/tabs/TabsTrigger/TabsTrigger.js.map +1 -1
- package/dist/components/textarea/Textarea.js +8 -3
- package/dist/components/textarea/Textarea.js.map +1 -1
- package/dist/components/time-picker/TimePicker/create-change-event-details.d.ts +1 -2
- package/dist/components/time-picker/TimePicker/create-change-event-details.js +4 -20
- package/dist/components/time-picker/TimePicker/create-change-event-details.js.map +1 -1
- package/dist/components/time-picker/TimePickerColumn/TimePickerColumn.js +1 -3
- package/dist/components/time-picker/TimePickerColumn/TimePickerColumn.js.map +1 -1
- package/dist/components/time-picker/TimePickerColumn/time-picker.column-utils.d.ts +34 -0
- package/dist/components/time-picker/TimePickerColumn/time-picker.column-utils.js +43 -0
- package/dist/components/time-picker/TimePickerColumn/time-picker.column-utils.js.map +1 -0
- package/dist/components/time-picker/TimePickerColumn/useTimePickerColumn.js +34 -59
- package/dist/components/time-picker/TimePickerColumn/useTimePickerColumn.js.map +1 -1
- package/dist/components/toast/Toast/Toast.d.ts +8 -2
- package/dist/components/toast/Toast/Toast.js +92 -146
- package/dist/components/toast/Toast/Toast.js.map +1 -1
- package/dist/components/toast/Toast/Toast.types.d.ts +1 -1
- package/dist/components/toast/Toast/Toast.types.js.map +1 -1
- package/dist/components/toast/Toast/Toast.utils.d.ts +47 -0
- package/dist/components/toast/Toast/Toast.utils.js +47 -0
- package/dist/components/toast/Toast/Toast.utils.js.map +1 -0
- package/dist/components/toast/Toast/ToastActionButton.d.ts +16 -0
- package/dist/components/toast/Toast/ToastActionButton.js +27 -0
- package/dist/components/toast/Toast/ToastActionButton.js.map +1 -0
- package/dist/components/toast/Toast/ToastActions.d.ts +12 -0
- package/dist/components/toast/Toast/ToastActions.js +65 -0
- package/dist/components/toast/Toast/ToastActions.js.map +1 -0
- package/dist/components/toast/Toast/ToastCloseButton.d.ts +12 -0
- package/dist/components/toast/Toast/ToastCloseButton.js +26 -0
- package/dist/components/toast/Toast/ToastCloseButton.js.map +1 -0
- package/dist/components/toast/Toast/ToastContent.d.ts +8 -0
- package/dist/components/toast/Toast/ToastContent.js +30 -0
- package/dist/components/toast/Toast/ToastContent.js.map +1 -0
- package/dist/components/toast/Toast/ToastIcon.d.ts +14 -0
- package/dist/components/toast/Toast/ToastIcon.js +36 -0
- package/dist/components/toast/Toast/ToastIcon.js.map +1 -0
- package/dist/components/toast/Toast/useToastLifecycle.d.ts +29 -0
- package/dist/components/toast/Toast/useToastLifecycle.js +30 -0
- package/dist/components/toast/Toast/useToastLifecycle.js.map +1 -0
- package/dist/components/toast/Toaster/ToastViewport.d.ts +33 -0
- package/dist/components/toast/Toaster/ToastViewport.js +73 -0
- package/dist/components/toast/Toaster/ToastViewport.js.map +1 -0
- package/dist/components/toast/Toaster/Toaster.d.ts +4 -0
- package/dist/components/toast/Toaster/Toaster.js +64 -82
- package/dist/components/toast/Toaster/Toaster.js.map +1 -1
- package/dist/components/toast/Toaster/Toaster.utils.d.ts +15 -0
- package/dist/components/toast/Toaster/Toaster.utils.js +4 -1
- package/dist/components/toast/Toaster/Toaster.utils.js.map +1 -1
- package/dist/components/toast/Toaster/useToaster.d.ts +28 -0
- package/dist/components/toast/Toaster/useToaster.js +26 -0
- package/dist/components/toast/Toaster/useToaster.js.map +1 -0
- package/dist/components/toast/index.js +4 -3
- package/dist/components/toast/state/promise-toast.d.ts +17 -0
- package/dist/components/toast/state/promise-toast.js +33 -0
- package/dist/components/toast/state/promise-toast.js.map +1 -0
- package/dist/components/toast/state/store.d.ts +21 -0
- package/dist/components/toast/state/store.js +45 -0
- package/dist/components/toast/state/store.js.map +1 -0
- package/dist/components/toast/state/toast.d.ts +9 -10
- package/dist/components/toast/state/toast.js +30 -89
- package/dist/components/toast/state/toast.js.map +1 -1
- package/dist/components/toggle/Toggle/Toggle.js +2 -1
- package/dist/components/toggle/Toggle/Toggle.js.map +1 -1
- package/dist/components/toggle-group/ToggleGroup/ToggleGroup.js +1 -1
- package/dist/components/toggle-group/ToggleGroup/ToggleGroup.js.map +1 -1
- package/dist/components/toggle-group/ToggleGroup/create-change-event-details.d.ts +6 -2
- package/dist/components/toggle-group/ToggleGroup/create-change-event-details.js +4 -20
- package/dist/components/toggle-group/ToggleGroup/create-change-event-details.js.map +1 -1
- package/dist/components/toggle-group/ToggleGroup/useToggleGroupKeyboard.d.ts +7 -10
- package/dist/components/toggle-group/ToggleGroup/useToggleGroupKeyboard.js +10 -40
- package/dist/components/toggle-group/ToggleGroup/useToggleGroupKeyboard.js.map +1 -1
- package/dist/components/toggle-group/ToggleGroupItem/ToggleGroupItem.js +5 -5
- package/dist/components/toggle-group/ToggleGroupItem/ToggleGroupItem.js.map +1 -1
- package/dist/components/tooltip/TooltipContent/usePresence.d.ts +27 -0
- package/dist/components/tooltip/TooltipContent/usePresence.js +24 -0
- package/dist/components/tooltip/TooltipContent/usePresence.js.map +1 -0
- package/dist/components/tooltip/TooltipContent/useTooltipContent.js +22 -35
- package/dist/components/tooltip/TooltipContent/useTooltipContent.js.map +1 -1
- package/dist/hooks/useFontLoader.js +1 -1
- package/dist/hooks/useFontLoader.js.map +1 -1
- package/dist/hooks/useScrollLock.js +13 -16
- package/dist/hooks/useScrollLock.js.map +1 -1
- package/dist/index.js +328 -320
- package/dist/lib/positioner/index.d.ts +1 -0
- package/dist/lib/positioner/utils/dom.d.ts +8 -0
- package/dist/lib/positioner/utils/dom.js +1 -1
- package/dist/lib/positioner/utils/dom.js.map +1 -1
- package/dist/types/props.types.d.ts +1 -1
- package/dist/ui.css +1 -1
- package/dist/utils/call-event-handler.d.ts +16 -0
- package/dist/utils/call-event-handler.js +15 -0
- package/dist/utils/call-event-handler.js.map +1 -0
- package/dist/utils/clsx.d.ts +1 -1
- package/dist/utils/clsx.js +2 -7
- package/dist/utils/create-change-event-details.d.ts +25 -0
- package/dist/utils/create-change-event-details.js +25 -0
- package/dist/utils/create-change-event-details.js.map +1 -0
- package/dist/utils/get-style.d.ts +7 -9
- package/dist/utils/get-style.js +16 -0
- package/dist/utils/get-style.js.map +1 -0
- package/dist/utils/index.d.ts +8 -0
- package/dist/utils/index.js +7 -1
- package/dist/utils/number.d.ts +7 -0
- package/dist/utils/number.js +8 -0
- package/dist/utils/number.js.map +1 -0
- package/dist/utils/roving-navigation.d.ts +64 -0
- package/dist/utils/roving-navigation.js +66 -0
- package/dist/utils/roving-navigation.js.map +1 -0
- package/dist/utils/string.d.ts +17 -0
- package/dist/utils/string.js +11 -0
- package/dist/utils/string.js.map +1 -0
- package/package.json +18 -7
- package/dist/components/carousel/Carousel/Carousel.utils.d.ts +0 -0
- package/dist/components/field/FieldError/useFieldError.d.ts +0 -0
- package/dist/components/hover-card/hover-card.utils.d.ts +0 -6
- package/dist/components/tabs/Tabs/call-event-handler.d.ts +0 -5
- package/dist/components/tabs/Tabs/call-event-handler.js +0 -9
- package/dist/components/tabs/Tabs/call-event-handler.js.map +0 -1
- package/dist/components/toggle-group/call-event-handler.d.ts +0 -5
- package/dist/components/toggle-group/call-event-handler.js +0 -9
- package/dist/components/toggle-group/call-event-handler.js.map +0 -1
- package/dist/utils/clsx.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProgressTrack.js","names":["splitProps","ProgressTrackProps","clsx","classes","useProgressContext","ProgressTrack","props","value","local","others","_el$","_tmpl$","_$spread","_$mergeProps","data-progressing","_$memo","class","_$mergeProps","_$memo","_tmpl$","ProgressTrack","useProgressContext","local","others","splitProps","props","_el$","spread","mergeProps","memo","value","\"class\"","clsx","classes"],"sources":["../../../../src/components/progress/ProgressTrack/ProgressTrack.tsx"],"sourcesContent":["import { splitProps } from \"solid-js\";\nimport type { ProgressTrackProps } from \"./ProgressTrack.types\";\nimport { clsx } from \"~/utils\";\nimport { classes } from \"./ProgressTrack.styles\";\nimport { useProgressContext } from \"../Progress\";\n\nexport const ProgressTrack = (props: ProgressTrackProps) => {\n const { value } = useProgressContext();\n\n const [local, others] = splitProps(props, [\"class\", \"classList\"]);\n\n return (\n <div\n data-slot=\"progress-track\"\n data-progressing={value() > 0 && value() < 100}\n class={clsx(classes, local.class)}\n {...others}\n />\n );\n};\n"],"mappings":";;;;;;2DAMaK,KAAiBC,MAA8B;CAC1D,IAAM,EAAEC,aAAUH,EAAmB,GAE/B,CAACI,GAAOC,KAAUT,EAAWM,GAAO,CAAC,SAAS,WAAW,CAAC;CAEhE,cAAA;EAAA,IAAAI,IAAAC,EAAA;
|
|
1
|
+
{"version":3,"file":"ProgressTrack.js","names":["splitProps","ProgressTrackProps","clsx","classes","useProgressContext","ProgressTrack","props","value","local","others","_el$","_tmpl$","_$spread","_$mergeProps","data-progressing","_$memo","class","classList","_$mergeProps","_$memo","_tmpl$","ProgressTrack","useProgressContext","local","others","splitProps","props","_el$","spread","mergeProps","memo","value","\"class\"","clsx","classes"],"sources":["../../../../src/components/progress/ProgressTrack/ProgressTrack.tsx"],"sourcesContent":["import { splitProps } from \"solid-js\";\nimport type { ProgressTrackProps } from \"./ProgressTrack.types\";\nimport { clsx } from \"~/utils\";\nimport { classes } from \"./ProgressTrack.styles\";\nimport { useProgressContext } from \"../Progress\";\n\nexport const ProgressTrack = (props: ProgressTrackProps) => {\n const { value } = useProgressContext();\n\n const [local, others] = splitProps(props, [\"class\", \"classList\"]);\n\n return (\n <div\n data-slot=\"progress-track\"\n data-progressing={value() > 0 && value() < 100}\n class={clsx(classes, local.class)}\n classList={local.classList}\n {...others}\n />\n );\n};\n"],"mappings":";;;;;;2DAMaK,KAAiBC,MAA8B;CAC1D,IAAM,EAAEC,aAAUH,EAAmB,GAE/B,CAACI,GAAOC,KAAUT,EAAWM,GAAO,CAAC,SAAS,WAAW,CAAC;CAEhE,cAAA;EAAA,IAAAI,IAAAC,EAAA;EAMc,OANdC,EAAAF,GAAAG,EAAA;GAAA,IAAA,qBAAA;IAAA,OAGsBE,QAAAR,EAAM,IAAI,CAAC,CAAA,CAAA,KAAIA,EAAM,IAAI;GAAG;GAAA,IAAAyB,QAAA;IAAA,OACvC9B,EAAKC,GAASK,EAAMQ,KAAK;GAAC;GAAA,IACjCC,YAAS;IAAA,OAAET,EAAMS;GAAS;EAAA,GACtBR,CAAM,GAAA,IAAA,EAAA,GAAAC;CAAA,EAAA,CAAA;AAGhB"}
|
|
@@ -8,9 +8,14 @@ var c = /*#__PURE__*/ o("<span data-slot=progress-value>%"), l = (o) => {
|
|
|
8
8
|
let { value: l } = t(), [u, d] = s(o, ["class", "classList"]);
|
|
9
9
|
return (() => {
|
|
10
10
|
var t = c(), o = t.firstChild;
|
|
11
|
-
return a(t, i({
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
return a(t, i({
|
|
12
|
+
get class() {
|
|
13
|
+
return e(n, u.class);
|
|
14
|
+
},
|
|
15
|
+
get classList() {
|
|
16
|
+
return u.classList;
|
|
17
|
+
}
|
|
18
|
+
}, d), !1, !0), r(t, l, o), t;
|
|
14
19
|
})();
|
|
15
20
|
};
|
|
16
21
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProgressValue.js","names":["splitProps","ProgressValueProps","clsx","classes","useProgressContext","ProgressValue","props","value","local","others","_el$","_tmpl$","_el$2","firstChild","_$spread","_$mergeProps","class","_$insert","_$mergeProps","_tmpl$","ProgressValue","useProgressContext","local","others","splitProps","props","_el$","_el$2","spread","mergeProps","\"class\"","clsx","classes","insert","value"],"sources":["../../../../src/components/progress/ProgressValue/ProgressValue.tsx"],"sourcesContent":["import { splitProps } from \"solid-js\";\nimport type { ProgressValueProps } from \"./ProgressValue.types\";\nimport { clsx } from \"~/utils\";\nimport { classes } from \"./ProgressValue.styles\";\nimport { useProgressContext } from \"../Progress\";\n\nexport const ProgressValue = (props: ProgressValueProps) => {\n const { value } = useProgressContext();\n\n const [local, others] = splitProps(props, [\"class\", \"classList\"]);\n\n return (\n <span\n data-slot=\"progress-value\"\n class={clsx(classes, local.class)}\n {...others}\n >\n {value()}%\n </span>\n );\n};\n"],"mappings":";;;;;;6DAMaK,KAAiBC,MAA8B;CAC1D,IAAM,EAAEC,aAAUH,EAAmB,GAE/B,CAACI,GAAOC,KAAUT,EAAWM,GAAO,CAAC,SAAS,WAAW,CAAC;CAEhE,cAAA;EAAA,IAAAI,IAAAC,EAAA,GAAAC,IAAAF,EAAAG;
|
|
1
|
+
{"version":3,"file":"ProgressValue.js","names":["splitProps","ProgressValueProps","clsx","classes","useProgressContext","ProgressValue","props","value","local","others","_el$","_tmpl$","_el$2","firstChild","_$spread","_$mergeProps","class","classList","_$insert","_$mergeProps","_tmpl$","ProgressValue","useProgressContext","local","others","splitProps","props","_el$","_el$2","spread","mergeProps","\"class\"","clsx","classes","insert","value"],"sources":["../../../../src/components/progress/ProgressValue/ProgressValue.tsx"],"sourcesContent":["import { splitProps } from \"solid-js\";\nimport type { ProgressValueProps } from \"./ProgressValue.types\";\nimport { clsx } from \"~/utils\";\nimport { classes } from \"./ProgressValue.styles\";\nimport { useProgressContext } from \"../Progress\";\n\nexport const ProgressValue = (props: ProgressValueProps) => {\n const { value } = useProgressContext();\n\n const [local, others] = splitProps(props, [\"class\", \"classList\"]);\n\n return (\n <span\n data-slot=\"progress-value\"\n class={clsx(classes, local.class)}\n classList={local.classList}\n {...others}\n >\n {value()}%\n </span>\n );\n};\n"],"mappings":";;;;;;6DAMaK,KAAiBC,MAA8B;CAC1D,IAAM,EAAEC,aAAUH,EAAmB,GAE/B,CAACI,GAAOC,KAAUT,EAAWM,GAAO,CAAC,SAAS,WAAW,CAAC;CAEhE,cAAA;EAAA,IAAAI,IAAAC,EAAA,GAAAC,IAAAF,EAAAG;EAOU,OAPVC,EAAAJ,GAAAK,EAAA;GAAA,IAAAgB,QAAA;IAAA,OAGW7B,EAAKC,GAASK,EAAMQ,KAAK;GAAC;GAAA,IACjCC,YAAS;IAAA,OAAET,EAAMS;GAAS;EAAA,GACtBR,CAAM,GAAA,IAAA,EAAA,GAAAS,EAAAR,GAETH,GAAKK,CAAA,GAAAF;CAAA,EAAA,CAAA;AAGZ"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { QuestionnaireItemStatus } from '../questionnaire.types';
|
|
2
|
+
/**
|
|
3
|
+
* 固定选项(radio / checkbox)的纯判定。
|
|
4
|
+
*
|
|
5
|
+
* 单一职责:把"受控值 / 跳过状态 / 选中集合 / 校验上下文"换算成
|
|
6
|
+
* 最终要渲染与写回的布尔值,不读信号、不碰 DOM。
|
|
7
|
+
* 受控与非受控、跳过与未跳过、交互前后的一致性都由这些函数显式表达。
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* 最终是否勾选:
|
|
11
|
+
* - 受控(`checked` 有值)时以它为唯一来源,但"已跳过"的题目一律不勾选;
|
|
12
|
+
* - 非受控时看 Item 的选中集合里有没有自己。
|
|
13
|
+
*/
|
|
14
|
+
export declare function resolveChoiceChecked(options: {
|
|
15
|
+
controlled: boolean | undefined;
|
|
16
|
+
status: QuestionnaireItemStatus;
|
|
17
|
+
selectedAnswerIds: readonly string[];
|
|
18
|
+
id: string;
|
|
19
|
+
}): boolean;
|
|
20
|
+
/** 选项是否需要原生 `required`:整题必填、单选、且本题没有文本框作答 */
|
|
21
|
+
export declare function isChoiceRequired(options: {
|
|
22
|
+
required: boolean;
|
|
23
|
+
multiple: boolean;
|
|
24
|
+
hasInputAnswer: boolean;
|
|
25
|
+
}): boolean;
|
|
26
|
+
/** 已跳过的题目不提交表单字段值(避免把跳过题目的答案一起提交) */
|
|
27
|
+
export declare function resolveChoiceName(status: QuestionnaireItemStatus, name: string): string | undefined;
|
|
28
|
+
/**
|
|
29
|
+
* 交互后要不要写回选中集合,以及写成什么值:
|
|
30
|
+
* - 用户回调已经 `preventDefault()` → 什么都不做;
|
|
31
|
+
* - 非受控 → 直接采用原生控件的勾选结果;
|
|
32
|
+
* - 受控且题目"已跳过"、原生结果恰好与受控值相同时 → 补一次写回,
|
|
33
|
+
* 否则 DOM 上的临时勾选会残留(受控方不会再送新值过来);
|
|
34
|
+
* - 其余受控情况 → 交给受控方,自己不写。
|
|
35
|
+
*/
|
|
36
|
+
export declare function decideChoiceSelectionChange(options: {
|
|
37
|
+
canceled: boolean;
|
|
38
|
+
controlled: boolean | undefined;
|
|
39
|
+
status: QuestionnaireItemStatus;
|
|
40
|
+
checked: boolean;
|
|
41
|
+
}): boolean | null;
|
|
42
|
+
/** 选项的快捷键:优先声明式 value 映射,其次按答案 id 分配,都没有则为 null */
|
|
43
|
+
export declare function resolveChoiceShortcut(options: {
|
|
44
|
+
byChoiceValue: Map<string, string> | null;
|
|
45
|
+
byAnswerId: Map<string, string>;
|
|
46
|
+
value: string;
|
|
47
|
+
id: string;
|
|
48
|
+
}): string | null;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
//#region src/components/questionnaire/QuestionnaireChoice/questionnaire-choice.utils.ts
|
|
2
|
+
function e(e) {
|
|
3
|
+
let { controlled: t, status: n, selectedAnswerIds: r, id: i } = e;
|
|
4
|
+
return t === void 0 ? r.includes(i) : n !== "skipped" && t;
|
|
5
|
+
}
|
|
6
|
+
function t(e) {
|
|
7
|
+
return e.required && !e.multiple && !e.hasInputAnswer;
|
|
8
|
+
}
|
|
9
|
+
function n(e, t) {
|
|
10
|
+
return e === "skipped" ? void 0 : t;
|
|
11
|
+
}
|
|
12
|
+
function r(e) {
|
|
13
|
+
let { canceled: t, controlled: n, status: r, checked: i } = e;
|
|
14
|
+
return t ? null : n === void 0 ? i : r === "skipped" && n === i ? n : null;
|
|
15
|
+
}
|
|
16
|
+
function i(e) {
|
|
17
|
+
let { byChoiceValue: t, byAnswerId: n, value: r, id: i } = e;
|
|
18
|
+
return t?.get(r) ?? n.get(i) ?? null;
|
|
19
|
+
}
|
|
20
|
+
//#endregion
|
|
21
|
+
export { r as decideChoiceSelectionChange, t as isChoiceRequired, e as resolveChoiceChecked, n as resolveChoiceName, i as resolveChoiceShortcut };
|
|
22
|
+
|
|
23
|
+
//# sourceMappingURL=questionnaire-choice.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"questionnaire-choice.utils.js","names":["resolveChoiceChecked","options","controlled","selectedAnswerIds","id","status","isChoiceRequired","resolveChoiceName","name","decideChoiceSelectionChange","canceled","checked","resolveChoiceShortcut","byChoiceValue","value","byAnswerId"],"sources":["../../../../src/components/questionnaire/QuestionnaireChoice/questionnaire-choice.utils.ts"],"sourcesContent":["import type { QuestionnaireItemStatus } from \"../questionnaire.types\";\n\n/**\n * 固定选项(radio / checkbox)的纯判定。\n *\n * 单一职责:把\"受控值 / 跳过状态 / 选中集合 / 校验上下文\"换算成\n * 最终要渲染与写回的布尔值,不读信号、不碰 DOM。\n * 受控与非受控、跳过与未跳过、交互前后的一致性都由这些函数显式表达。\n */\n\n/**\n * 最终是否勾选:\n * - 受控(`checked` 有值)时以它为唯一来源,但\"已跳过\"的题目一律不勾选;\n * - 非受控时看 Item 的选中集合里有没有自己。\n */\nexport function resolveChoiceChecked(options: {\n controlled: boolean | undefined;\n status: QuestionnaireItemStatus;\n selectedAnswerIds: readonly string[];\n id: string;\n}): boolean {\n const { controlled, status, selectedAnswerIds, id } = options;\n if (controlled !== undefined) {\n return status === \"skipped\" ? false : controlled;\n }\n return selectedAnswerIds.includes(id);\n}\n\n/** 选项是否需要原生 `required`:整题必填、单选、且本题没有文本框作答 */\nexport function isChoiceRequired(options: {\n required: boolean;\n multiple: boolean;\n hasInputAnswer: boolean;\n}): boolean {\n return options.required && !options.multiple && !options.hasInputAnswer;\n}\n\n/** 已跳过的题目不提交表单字段值(避免把跳过题目的答案一起提交) */\nexport function resolveChoiceName(\n status: QuestionnaireItemStatus,\n name: string,\n): string | undefined {\n return status === \"skipped\" ? undefined : name;\n}\n\n/**\n * 交互后要不要写回选中集合,以及写成什么值:\n * - 用户回调已经 `preventDefault()` → 什么都不做;\n * - 非受控 → 直接采用原生控件的勾选结果;\n * - 受控且题目\"已跳过\"、原生结果恰好与受控值相同时 → 补一次写回,\n * 否则 DOM 上的临时勾选会残留(受控方不会再送新值过来);\n * - 其余受控情况 → 交给受控方,自己不写。\n */\nexport function decideChoiceSelectionChange(options: {\n canceled: boolean;\n controlled: boolean | undefined;\n status: QuestionnaireItemStatus;\n checked: boolean;\n}): boolean | null {\n const { canceled, controlled, status, checked } = options;\n if (canceled) return null;\n if (controlled === undefined) return checked;\n if (status === \"skipped\" && controlled === checked) return controlled;\n return null;\n}\n\n/** 选项的快捷键:优先声明式 value 映射,其次按答案 id 分配,都没有则为 null */\nexport function resolveChoiceShortcut(options: {\n byChoiceValue: Map<string, string> | null;\n byAnswerId: Map<string, string>;\n value: string;\n id: string;\n}): string | null {\n const { byChoiceValue, byAnswerId, value, id } = options;\n return byChoiceValue?.get(value) ?? byAnswerId.get(id) ?? null;\n}\n"],"mappings":";AAeA,SAAgBA,EAAqB,GAKzB;CACV,IAAM,EAAE,eAAY,WAAQ,sBAAmB,UAAOC;CAItD,OAHIC,MAAe,KAAA,IAGZC,EAAkB,SAASC,CAAE,IAF3BC,MAAW,aAAoBH;AAG1C;AAGA,SAAgBI,EAAiB,GAIrB;CACV,OAAOL,EAAQ,YAAY,CAACA,EAAQ,YAAY,CAACA,EAAQ;AAC3D;AAGA,SAAgBM,EACd,GACA,GACoB;CACpB,OAAOF,MAAW,YAAY,KAAA,IAAYG;AAC5C;AAUA,SAAgBC,EAA4B,GAKzB;CACjB,IAAM,EAAE,aAAU,eAAY,WAAQ,eAAYR;CAIlD,OAHIS,IAAiB,OACjBR,MAAe,KAAA,IAAkBS,IACjCN,MAAW,aAAaH,MAAeS,IAAgBT,IACpD;AACT;AAGA,SAAgBU,EAAsB,GAKpB;CAChB,IAAM,EAAE,kBAAe,eAAY,UAAO,UAAOX;CACjD,OAAOY,GAAe,IAAIC,CAAK,KAAKC,EAAW,IAAIX,CAAE,KAAK;AAC5D"}
|
|
@@ -1,67 +1,80 @@
|
|
|
1
1
|
import { useQuestionnaireItemContext as e } from "../questionnaire.context.js";
|
|
2
2
|
import { keyShortcutText as t } from "../questionnaire.utils.js";
|
|
3
|
-
import {
|
|
3
|
+
import { decideChoiceSelectionChange as n, isChoiceRequired as r, resolveChoiceChecked as i, resolveChoiceName as a, resolveChoiceShortcut as o } from "./questionnaire-choice.utils.js";
|
|
4
|
+
import { createEffect as s, createSignal as c, createUniqueId as l, onCleanup as u } from "solid-js";
|
|
4
5
|
//#region src/components/questionnaire/QuestionnaireChoice/useQuestionnaireChoice.ts
|
|
5
|
-
function
|
|
6
|
-
let
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
function d(d) {
|
|
7
|
+
let f = e("QuestionnaireChoice"), p = l(), [m, h] = c(), g = () => f.disabled() || !!d.disabled?.(), _ = () => f.multiple() ? "checkbox" : "radio", v = () => o({
|
|
8
|
+
byChoiceValue: f.shortcutByChoiceValue(),
|
|
9
|
+
byAnswerId: f.shortcutByAnswerId(),
|
|
10
|
+
value: d.value,
|
|
11
|
+
id: p
|
|
12
|
+
}), y = () => r({
|
|
13
|
+
required: f.required(),
|
|
14
|
+
multiple: f.multiple(),
|
|
15
|
+
hasInputAnswer: f.hasInputAnswer()
|
|
16
|
+
}), b = () => a(f.status(), f.name);
|
|
17
|
+
u(f.registerAnswerSelection(p, !!d.defaultChecked?.())), s(() => f.setAnswerDefault(p, !!d.defaultChecked?.())), s(() => {
|
|
18
|
+
let e = m();
|
|
9
19
|
if (!e) return;
|
|
10
|
-
let t =
|
|
11
|
-
id:
|
|
20
|
+
let t = f.registerAnswerControl({
|
|
21
|
+
id: p,
|
|
12
22
|
element: e,
|
|
13
23
|
type: "choice",
|
|
14
|
-
value:
|
|
15
|
-
disabled:
|
|
16
|
-
ownDisabled: !!
|
|
24
|
+
value: d.value,
|
|
25
|
+
disabled: g(),
|
|
26
|
+
ownDisabled: !!d.disabled?.()
|
|
17
27
|
});
|
|
18
|
-
|
|
28
|
+
u(t);
|
|
19
29
|
});
|
|
20
|
-
let
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
30
|
+
let x = () => i({
|
|
31
|
+
controlled: d.checked?.(),
|
|
32
|
+
status: f.status(),
|
|
33
|
+
selectedAnswerIds: f.selectedAnswerIds(),
|
|
34
|
+
id: p
|
|
35
|
+
});
|
|
36
|
+
s(() => {
|
|
37
|
+
let e = m(), t = d.checked?.();
|
|
38
|
+
f.resetVersion(), e && t !== void 0 && f.syncControlledAnswerSelection(p, t), e && (e.checked = x());
|
|
27
39
|
});
|
|
28
|
-
let
|
|
40
|
+
let S = (e) => {
|
|
29
41
|
let t = e.target;
|
|
30
|
-
|
|
31
|
-
let
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
42
|
+
d.onChange?.(e);
|
|
43
|
+
let r = n({
|
|
44
|
+
canceled: e.defaultPrevented,
|
|
45
|
+
controlled: d.checked?.(),
|
|
46
|
+
status: f.status(),
|
|
47
|
+
checked: t.checked
|
|
48
|
+
});
|
|
49
|
+
r !== null && f.setAnswerSelectionFromInteraction(p, r);
|
|
50
|
+
}, C = () => t(v(), !g() && x());
|
|
38
51
|
return {
|
|
39
|
-
id:
|
|
40
|
-
setInput:
|
|
41
|
-
type:
|
|
42
|
-
isDisabled:
|
|
43
|
-
shortcut:
|
|
44
|
-
checkedResolved:
|
|
45
|
-
handleChange:
|
|
46
|
-
invalid:
|
|
47
|
-
required:
|
|
48
|
-
name:
|
|
49
|
-
ariaKeyShortcuts:
|
|
52
|
+
id: p,
|
|
53
|
+
setInput: h,
|
|
54
|
+
type: _,
|
|
55
|
+
isDisabled: g,
|
|
56
|
+
shortcut: v,
|
|
57
|
+
checkedResolved: x,
|
|
58
|
+
handleChange: S,
|
|
59
|
+
invalid: f.invalid,
|
|
60
|
+
required: y,
|
|
61
|
+
name: b,
|
|
62
|
+
ariaKeyShortcuts: C,
|
|
50
63
|
inputProps: () => ({
|
|
51
|
-
"aria-keyshortcuts":
|
|
52
|
-
"aria-invalid":
|
|
53
|
-
checked:
|
|
54
|
-
disabled:
|
|
55
|
-
id:
|
|
56
|
-
name:
|
|
57
|
-
onChange:
|
|
58
|
-
required:
|
|
59
|
-
type:
|
|
60
|
-
value:
|
|
64
|
+
"aria-keyshortcuts": C(),
|
|
65
|
+
"aria-invalid": f.invalid() || void 0,
|
|
66
|
+
checked: x(),
|
|
67
|
+
disabled: g(),
|
|
68
|
+
id: p,
|
|
69
|
+
name: b(),
|
|
70
|
+
onChange: S,
|
|
71
|
+
required: y(),
|
|
72
|
+
type: _(),
|
|
73
|
+
value: d.value
|
|
61
74
|
})
|
|
62
75
|
};
|
|
63
76
|
}
|
|
64
77
|
//#endregion
|
|
65
|
-
export {
|
|
78
|
+
export { d as useQuestionnaireChoice };
|
|
66
79
|
|
|
67
80
|
//# sourceMappingURL=useQuestionnaireChoice.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useQuestionnaireChoice.js","names":["useQuestionnaireChoice","item","useQuestionnaireItemContext","id","createUniqueId","input","setInput","createSignal","isDisabled","options","type","shortcut","onCleanup","createEffect","element","unregister","checkedResolved","controlled","handleChange","target","event","keyShortcutText"],"sources":["../../../../src/components/questionnaire/QuestionnaireChoice/useQuestionnaireChoice.ts"],"sourcesContent":["import {\n createEffect,\n createSignal,\n createUniqueId,\n onCleanup,\n type Accessor,\n} from \"solid-js\";\nimport { useQuestionnaireItemContext } from \"../questionnaire.context\";\nimport { keyShortcutText } from \"../questionnaire.utils\";\n\ninterface Options {\n value: string;\n checked?: Accessor<boolean | undefined>;\n defaultChecked?: Accessor<boolean>;\n disabled?: Accessor<boolean>;\n onChange?: (event: Event) => void;\n}\n\n/**\n * 固定选项的状态:选中由 Item 的选中集合驱动(受控时用 checked),\n * 同时把 input 注册成 Item 的 answer control,以便校验与快捷键。\n */\nexport function useQuestionnaireChoice(options: Options) {\n const item = useQuestionnaireItemContext(\"QuestionnaireChoice\");\n const id = createUniqueId();\n const [input, setInput] = createSignal<HTMLInputElement>();\n\n const isDisabled = () => item.disabled() || !!options.disabled?.();\n const type = () => (item.multiple() ? \"checkbox\" : \"radio\");\n const shortcut = () =>\n item.shortcutByChoiceValue()
|
|
1
|
+
{"version":3,"file":"useQuestionnaireChoice.js","names":["useQuestionnaireChoice","item","useQuestionnaireItemContext","id","createUniqueId","input","setInput","createSignal","isDisabled","options","type","shortcut","resolveChoiceShortcut","required","isChoiceRequired","name","resolveChoiceName","onCleanup","createEffect","element","unregister","checkedResolved","resolveChoiceChecked","controlled","handleChange","target","event","next","decideChoiceSelectionChange","ariaKeyShortcuts","keyShortcutText"],"sources":["../../../../src/components/questionnaire/QuestionnaireChoice/useQuestionnaireChoice.ts"],"sourcesContent":["import {\n createEffect,\n createSignal,\n createUniqueId,\n onCleanup,\n type Accessor,\n} from \"solid-js\";\nimport { useQuestionnaireItemContext } from \"../questionnaire.context\";\nimport { keyShortcutText } from \"../questionnaire.utils\";\nimport {\n decideChoiceSelectionChange,\n isChoiceRequired,\n resolveChoiceChecked,\n resolveChoiceName,\n resolveChoiceShortcut,\n} from \"./questionnaire-choice.utils\";\n\ninterface Options {\n value: string;\n checked?: Accessor<boolean | undefined>;\n defaultChecked?: Accessor<boolean>;\n disabled?: Accessor<boolean>;\n onChange?: (event: Event) => void;\n}\n\n/**\n * 固定选项的状态:选中由 Item 的选中集合驱动(受控时用 checked),\n * 同时把 input 注册成 Item 的 answer control,以便校验与快捷键。\n */\nexport function useQuestionnaireChoice(options: Options) {\n const item = useQuestionnaireItemContext(\"QuestionnaireChoice\");\n const id = createUniqueId();\n const [input, setInput] = createSignal<HTMLInputElement>();\n\n const isDisabled = () => item.disabled() || !!options.disabled?.();\n const type = () => (item.multiple() ? \"checkbox\" : \"radio\");\n const shortcut = () =>\n resolveChoiceShortcut({\n byChoiceValue: item.shortcutByChoiceValue(),\n byAnswerId: item.shortcutByAnswerId(),\n value: options.value,\n id,\n });\n\n const required = () =>\n isChoiceRequired({\n required: item.required(),\n multiple: item.multiple(),\n hasInputAnswer: item.hasInputAnswer(),\n });\n\n const name = () => resolveChoiceName(item.status(), item.name);\n\n onCleanup(item.registerAnswerSelection(id, !!options.defaultChecked?.()));\n createEffect(() => item.setAnswerDefault(id, !!options.defaultChecked?.()));\n\n createEffect(() => {\n const element = input();\n if (!element) return;\n const unregister = item.registerAnswerControl({\n id,\n element,\n type: \"choice\",\n value: options.value,\n disabled: isDisabled(),\n ownDisabled: !!options.disabled?.(),\n });\n onCleanup(unregister);\n });\n\n const checkedResolved = () =>\n resolveChoiceChecked({\n controlled: options.checked?.(),\n status: item.status(),\n selectedAnswerIds: item.selectedAnswerIds(),\n id,\n });\n\n // 受控同步 + reset 后强制同步 DOM checked\n createEffect(() => {\n const element = input();\n const controlled = options.checked?.();\n item.resetVersion();\n if (element && controlled !== undefined) {\n item.syncControlledAnswerSelection(id, controlled);\n }\n if (element) element.checked = checkedResolved();\n });\n\n const handleChange = (event: Event) => {\n const target = event.target as HTMLInputElement;\n options.onChange?.(event);\n const next = decideChoiceSelectionChange({\n canceled: event.defaultPrevented,\n controlled: options.checked?.(),\n status: item.status(),\n checked: target.checked,\n });\n if (next !== null) item.setAnswerSelectionFromInteraction(id, next);\n };\n\n /** aria-keyshortcuts:只有\"可用且当前勾选\"时才附上 Enter 提示 */\n const ariaKeyShortcuts = () =>\n keyShortcutText(shortcut(), !isDisabled() && checkedResolved());\n\n return {\n id,\n setInput,\n type,\n isDisabled,\n shortcut,\n checkedResolved,\n handleChange,\n invalid: item.invalid,\n required,\n name,\n ariaKeyShortcuts,\n inputProps: () => ({\n \"aria-keyshortcuts\": ariaKeyShortcuts(),\n \"aria-invalid\": item.invalid() || undefined,\n checked: checkedResolved(),\n disabled: isDisabled(),\n id,\n name: name(),\n onChange: handleChange,\n required: required(),\n type: type(),\n value: options.value,\n }),\n };\n}\n"],"mappings":";;;;;AA6BA,SAAgBA,EAAuB,GAAkB;CACvD,IAAMC,IAAOC,EAA4B,qBAAqB,GACxDC,IAAKC,EAAe,GACpB,CAACC,GAAOC,KAAYC,EAA+B,GAEnDC,UAAmBP,EAAK,SAAS,KAAK,CAAC,CAACQ,EAAQ,WAAW,GAC3DC,UAAcT,EAAK,SAAS,IAAI,aAAa,SAC7CU,UACJC,EAAsB;EACpB,eAAeX,EAAK,sBAAsB;EAC1C,YAAYA,EAAK,mBAAmB;EACpC,OAAOQ,EAAQ;EACf;CACF,CAAC,GAEGI,UACJC,EAAiB;EACf,UAAUb,EAAK,SAAS;EACxB,UAAUA,EAAK,SAAS;EACxB,gBAAgBA,EAAK,eAAe;CACtC,CAAC,GAEGc,UAAaC,EAAkBf,EAAK,OAAO,GAAGA,EAAK,IAAI;CAK7D,AAHAgB,EAAUhB,EAAK,wBAAwBE,GAAI,CAAC,CAACM,EAAQ,iBAAiB,CAAC,CAAC,GACxES,QAAmBjB,EAAK,iBAAiBE,GAAI,CAAC,CAACM,EAAQ,iBAAiB,CAAC,CAAC,GAE1ES,QAAmB;EACjB,IAAMC,IAAUd,EAAM;EACtB,IAAI,CAACc,GAAS;EACd,IAAMC,IAAanB,EAAK,sBAAsB;GAC5C;GACA;GACA,MAAM;GACN,OAAOQ,EAAQ;GACf,UAAUD,EAAW;GACrB,aAAa,CAAC,CAACC,EAAQ,WAAW;EACpC,CAAC;EACD,EAAUW,CAAU;CACtB,CAAC;CAED,IAAMC,UACJC,EAAqB;EACnB,YAAYb,EAAQ,UAAU;EAC9B,QAAQR,EAAK,OAAO;EACpB,mBAAmBA,EAAK,kBAAkB;EAC1C;CACF,CAAC;CAGH,QAAmB;EACjB,IAAMkB,IAAUd,EAAM,GAChBkB,IAAad,EAAQ,UAAU;EAKrC,AAJAR,EAAK,aAAa,GACdkB,KAAWI,MAAe,KAAA,KAC5BtB,EAAK,8BAA8BE,GAAIoB,CAAU,GAE/CJ,MAAS,EAAQ,UAAUE,EAAgB;CACjD,CAAC;CAED,IAAMG,KAAgB,MAAiB;EACrC,IAAMC,IAASC,EAAM;EACrB,EAAQ,WAAWA,CAAK;EACxB,IAAMC,IAAOC,EAA4B;GACvC,UAAUF,EAAM;GAChB,YAAYjB,EAAQ,UAAU;GAC9B,QAAQR,EAAK,OAAO;GACpB,SAASwB,EAAO;EAClB,CAAC;EACD,AAAIE,MAAS,QAAM1B,EAAK,kCAAkCE,GAAIwB,CAAI;CACpE,GAGME,UACJC,EAAgBnB,EAAS,GAAG,CAACH,EAAW,KAAKa,EAAgB,CAAC;CAEhE,OAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA,SAASpB,EAAK;EACd;EACA;EACA;EACA,mBAAmB;GACjB,qBAAqB4B,EAAiB;GACtC,gBAAgB5B,EAAK,QAAQ,KAAK,KAAA;GAClC,SAASoB,EAAgB;GACzB,UAAUb,EAAW;GACrB;GACA,MAAMO,EAAK;GACX,UAAUS;GACV,UAAUX,EAAS;GACnB,MAAMH,EAAK;GACX,OAAOD,EAAQ;EACjB;CACF;AACF"}
|
|
@@ -19,7 +19,10 @@ function s(s) {
|
|
|
19
19
|
e !== h() && (g(e), _() || m(f));
|
|
20
20
|
}), r(() => {
|
|
21
21
|
let e = u(), n = s.value();
|
|
22
|
-
e &&
|
|
22
|
+
if (e && _()) {
|
|
23
|
+
c.syncControlledAnswerSelection(l, t(n));
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
23
26
|
});
|
|
24
27
|
let x = (e) => {
|
|
25
28
|
let n = e.target;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useQuestionnaireInput.js","names":["useQuestionnaireInput","item","useQuestionnaireItemContext","id","createUniqueId","input","setInput","createSignal","initialFilled","hasText","options","internalFilled","setInternalFilled","resetSeen","setResetSeen","controlled","isDisabled","selected","filled","onCleanup","createEffect","element","unregister","version","value","handleChange","target","event","nextFilled","keyShortcutText"],"sources":["../../../../src/components/questionnaire/QuestionnaireInput/useQuestionnaireInput.ts"],"sourcesContent":["import {\n createEffect,\n createSignal,\n createUniqueId,\n onCleanup,\n type Accessor,\n} from \"solid-js\";\nimport { useQuestionnaireItemContext } from \"../questionnaire.context\";\nimport { hasText, keyShortcutText } from \"../questionnaire.utils\";\n\ninterface Options {\n type: Accessor<string>;\n defaultValue: Accessor<string | undefined>;\n value: Accessor<string | undefined>;\n disabled: Accessor<boolean | undefined>;\n onChange?: (event: Event) => void;\n}\n\n/**\n * 自由作答输入:作为 Item 的一个 answer control 参与校验与 FormData。\n * 选中时才有 name(参与提交),否则用 form=\"\" 排除在表单之外。\n */\nexport function useQuestionnaireInput(options: Options) {\n const item = useQuestionnaireItemContext(\"QuestionnaireInput\");\n const id = createUniqueId();\n const [input, setInput] = createSignal<HTMLInputElement>();\n const initialFilled = hasText(options.defaultValue());\n const [internalFilled, setInternalFilled] = createSignal(initialFilled);\n const [resetSeen, setResetSeen] = createSignal(0);\n\n const controlled = () => options.value() !== undefined;\n const isDisabled = () => item.disabled() || !!options.disabled?.();\n const selected = () => item.selectedAnswerIds().includes(id);\n const filled = () =>\n controlled() ? hasText(options.value()) : internalFilled();\n\n onCleanup(item.registerAnswerSelection(id, initialFilled));\n createEffect(() => item.setAnswerDefault(id, initialFilled));\n\n createEffect(() => {\n const element = input();\n if (!element) return;\n const unregister = item.registerAnswerControl({\n id,\n element,\n type: \"input\",\n disabled: isDisabled(),\n });\n onCleanup(unregister);\n });\n\n createEffect(() => {\n const version = item.resetVersion();\n if (version === resetSeen()) return;\n setResetSeen(version);\n if (!controlled()) setInternalFilled(initialFilled);\n });\n\n createEffect(() => {\n const element = input();\n const value = options.value();\n if (!element) return;\n if (controlled()) {\n item.syncControlledAnswerSelection(id, hasText(value));\n } else if (value !== undefined)
|
|
1
|
+
{"version":3,"file":"useQuestionnaireInput.js","names":["useQuestionnaireInput","item","useQuestionnaireItemContext","id","createUniqueId","input","setInput","createSignal","initialFilled","hasText","options","internalFilled","setInternalFilled","resetSeen","setResetSeen","controlled","isDisabled","selected","filled","onCleanup","createEffect","element","unregister","version","value","handleChange","target","event","nextFilled","keyShortcutText"],"sources":["../../../../src/components/questionnaire/QuestionnaireInput/useQuestionnaireInput.ts"],"sourcesContent":["import {\n createEffect,\n createSignal,\n createUniqueId,\n onCleanup,\n type Accessor,\n} from \"solid-js\";\nimport { useQuestionnaireItemContext } from \"../questionnaire.context\";\nimport { hasText, keyShortcutText } from \"../questionnaire.utils\";\n\ninterface Options {\n type: Accessor<string>;\n defaultValue: Accessor<string | undefined>;\n value: Accessor<string | undefined>;\n disabled: Accessor<boolean | undefined>;\n onChange?: (event: Event) => void;\n}\n\n/**\n * 自由作答输入:作为 Item 的一个 answer control 参与校验与 FormData。\n * 选中时才有 name(参与提交),否则用 form=\"\" 排除在表单之外。\n */\nexport function useQuestionnaireInput(options: Options) {\n const item = useQuestionnaireItemContext(\"QuestionnaireInput\");\n const id = createUniqueId();\n const [input, setInput] = createSignal<HTMLInputElement>();\n const initialFilled = hasText(options.defaultValue());\n const [internalFilled, setInternalFilled] = createSignal(initialFilled);\n const [resetSeen, setResetSeen] = createSignal(0);\n\n const controlled = () => options.value() !== undefined;\n const isDisabled = () => item.disabled() || !!options.disabled?.();\n const selected = () => item.selectedAnswerIds().includes(id);\n const filled = () =>\n controlled() ? hasText(options.value()) : internalFilled();\n\n onCleanup(item.registerAnswerSelection(id, initialFilled));\n createEffect(() => item.setAnswerDefault(id, initialFilled));\n\n createEffect(() => {\n const element = input();\n if (!element) return;\n const unregister = item.registerAnswerControl({\n id,\n element,\n type: \"input\",\n disabled: isDisabled(),\n });\n onCleanup(unregister);\n });\n\n createEffect(() => {\n const version = item.resetVersion();\n if (version === resetSeen()) return;\n setResetSeen(version);\n if (!controlled()) setInternalFilled(initialFilled);\n });\n\n createEffect(() => {\n const element = input();\n const value = options.value();\n if (!element) return;\n if (controlled()) {\n item.syncControlledAnswerSelection(id, hasText(value));\n return;\n }\n // 非受控:value 恒为 undefined(受控/非受控由同一个 accessor 判定),\n // 因此这里没有\"按 value 写 defaultValue\"的分支——之前那句\n // `else if (value !== undefined)` 永远不成立,已删除。\n });\n\n const handleChange = (event: Event) => {\n const target = event.target as HTMLInputElement;\n options.onChange?.(event);\n if (event.defaultPrevented) return;\n const nextFilled = hasText(target.value);\n if (!controlled()) setInternalFilled(nextFilled);\n item.setAnswerSelectionFromInteraction(id, nextFilled);\n };\n\n return {\n id,\n setInput,\n selected,\n filled,\n isDisabled,\n invalid: item.invalid,\n controlled,\n name: () => (selected() ? item.name : undefined),\n formValue: () => (selected() ? undefined : \"\"),\n ariaKeyShortcuts: () =>\n keyShortcutText(null, !isDisabled() && filled() && selected()),\n inputProps: () => ({\n \"aria-invalid\": item.invalid() || undefined,\n \"aria-keyshortcuts\": keyShortcutText(\n null,\n !isDisabled() && filled() && selected(),\n ),\n defaultValue: controlled() ? undefined : options.defaultValue(),\n disabled: isDisabled(),\n form: selected() ? undefined : \"\",\n id,\n name: selected() ? item.name : undefined,\n onChange: handleChange,\n type: options.type(),\n value: controlled() ? options.value() : undefined,\n }),\n };\n}\n"],"mappings":";;;;AAsBA,SAAgBA,EAAsB,GAAkB;CACtD,IAAMC,IAAOC,EAA4B,oBAAoB,GACvDC,IAAKC,EAAe,GACpB,CAACC,GAAOC,KAAYC,EAA+B,GACnDC,IAAgBC,EAAQC,EAAQ,aAAa,CAAC,GAC9C,CAACC,GAAgBC,KAAqBL,EAAaC,CAAa,GAChE,CAACK,GAAWC,KAAgBP,EAAa,CAAC,GAE1CQ,UAAmBL,EAAQ,MAAM,MAAM,KAAA,GACvCM,UAAmBf,EAAK,SAAS,KAAK,CAAC,CAACS,EAAQ,WAAW,GAC3DO,UAAiBhB,EAAK,kBAAkB,CAAC,CAAC,SAASE,CAAE,GACrDe,UACJH,EAAW,IAAIN,EAAQC,EAAQ,MAAM,CAAC,IAAIC,EAAe;CAwB3D,AAtBAQ,EAAUlB,EAAK,wBAAwBE,GAAIK,CAAa,CAAC,GACzDY,QAAmBnB,EAAK,iBAAiBE,GAAIK,CAAa,CAAC,GAE3DY,QAAmB;EACjB,IAAMC,IAAUhB,EAAM;EACtB,IAAI,CAACgB,GAAS;EACd,IAAMC,IAAarB,EAAK,sBAAsB;GAC5C;GACA;GACA,MAAM;GACN,UAAUe,EAAW;EACvB,CAAC;EACD,EAAUM,CAAU;CACtB,CAAC,GAEDF,QAAmB;EACjB,IAAMG,IAAUtB,EAAK,aAAa;EAClC,AAAIsB,MAAYV,EAAU,MAC1BC,EAAaS,CAAO,GACfR,EAAW,KAAGH,EAAkBJ,CAAa;CACpD,CAAC,GAEDY,QAAmB;EACjB,IAAMC,IAAUhB,EAAM,GAChBmB,IAAQd,EAAQ,MAAM;EAC5B,IAAKW,KACDN,EAAW,GAAG;GAChB,EAAK,8BAA8BZ,GAAIM,EAAQe,CAAK,CAAC;GACrD;EACF;CAIF,CAAC;CAED,IAAMC,KAAgB,MAAiB;EACrC,IAAMC,IAASC,EAAM;EAErB,IADAjB,EAAQ,WAAWiB,CAAK,GACpBA,EAAM,kBAAkB;EAC5B,IAAMC,IAAanB,EAAQiB,EAAO,KAAK;EAEvC,AADKX,EAAW,KAAGH,EAAkBgB,CAAU,GAC/C3B,EAAK,kCAAkCE,GAAIyB,CAAU;CACvD;CAEA,OAAO;EACL;EACA;EACA;EACA;EACA;EACA,SAAS3B,EAAK;EACd;EACA,YAAagB,EAAS,IAAIhB,EAAK,OAAO,KAAA;EACtC,iBAAkBgB,EAAS,IAAI,KAAA,IAAY;EAC3C,wBACEY,EAAgB,MAAM,CAACb,EAAW,KAAKE,EAAO,KAAKD,EAAS,CAAC;EAC/D,mBAAmB;GACjB,gBAAgBhB,EAAK,QAAQ,KAAK,KAAA;GAClC,qBAAqB4B,EACnB,MACA,CAACb,EAAW,KAAKE,EAAO,KAAKD,EAAS,CACxC;GACA,cAAcF,EAAW,IAAI,KAAA,IAAYL,EAAQ,aAAa;GAC9D,UAAUM,EAAW;GACrB,MAAMC,EAAS,IAAI,KAAA,IAAY;GAC/B;GACA,MAAMA,EAAS,IAAIhB,EAAK,OAAO,KAAA;GAC/B,UAAUwB;GACV,MAAMf,EAAQ,KAAK;GACnB,OAAOK,EAAW,IAAIL,EAAQ,MAAM,IAAI,KAAA;EAC1C;CACF;AACF"}
|
|
@@ -26,8 +26,7 @@ function m(s) {
|
|
|
26
26
|
required: () => h.required,
|
|
27
27
|
multiple: () => h.multiple,
|
|
28
28
|
disabled: () => h.disabled,
|
|
29
|
-
invalid: () => h.invalid
|
|
30
|
-
onStatusChange: (e) => h.onStatusChange?.(e)
|
|
29
|
+
invalid: () => h.invalid
|
|
31
30
|
}), v;
|
|
32
31
|
return l(() => {
|
|
33
32
|
let e = _.context.status();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QuestionnaireItem.js","names":["createEffect","mergeProps","onCleanup","splitProps","clsx","QuestionnaireItemContext","useQuestionnaireItem","QuestionnaireItemStatus","QuestionnaireItemProps","QuestionnaireItem","props","merged","required","multiple","disabled","invalid","local","rest","engine","name","
|
|
1
|
+
{"version":3,"file":"QuestionnaireItem.js","names":["createEffect","mergeProps","onCleanup","splitProps","clsx","QuestionnaireItemContext","useQuestionnaireItem","QuestionnaireItemStatus","QuestionnaireItemProps","QuestionnaireItem","props","merged","required","multiple","disabled","invalid","local","rest","engine","name","lastStatus","status","context","undefined","onStatusChange","_$createComponent","Provider","value","children","_el$","_tmpl$","_$use","el","registerElement","_$spread","_$mergeProps","hidden","active","inert","aria-describedby","describedBy","aria-invalid","aria-keyshortcuts","keyshortcuts","data-active","data-status","data-invalid","data-disabled","class","classList","_$insert","mergeProps","_$createComponent","_$mergeProps","mergeProps$1","_tmpl$","QuestionnaireItem","merged","props","local","rest","splitProps","engine","useQuestionnaireItem","lastStatus","createEffect","status","createComponent","QuestionnaireItemContext","_el$","use","el","spread","mergeProps","\"tabIndex\"","\"class\"","clsx","insert"],"sources":["../../../../src/components/questionnaire/QuestionnaireItem/QuestionnaireItem.tsx"],"sourcesContent":["import { createEffect, mergeProps, onCleanup, splitProps } from \"solid-js\";\nimport { clsx } from \"~/utils\";\nimport { QuestionnaireItemContext } from \"../questionnaire.context\";\nimport { useQuestionnaireItem } from \"../useQuestionnaireItem\";\nimport type { QuestionnaireItemStatus } from \"../questionnaire.types\";\nimport type { QuestionnaireItemProps } from \"../questionnaire.types\";\n\n/** 单个题目:fieldset,非激活时 hidden + inert,并向 Root 注册命令式句柄 */\nexport function QuestionnaireItem(props: QuestionnaireItemProps) {\n const merged = mergeProps(\n { required: false, multiple: false, disabled: false, invalid: false },\n props,\n );\n const [local, rest] = splitProps(merged, [\n \"name\",\n \"required\",\n \"multiple\",\n \"disabled\",\n \"invalid\",\n \"onStatusChange\",\n \"class\",\n \"classList\",\n \"children\",\n ]);\n\n const engine = useQuestionnaireItem({\n name: local.name,\n required: () => local.required,\n multiple: () => local.multiple,\n disabled: () => local.disabled,\n invalid: () => local.invalid,\n });\n\n let lastStatus: QuestionnaireItemStatus | undefined;\n createEffect(() => {\n const status = engine.context.status();\n if (lastStatus !== undefined && lastStatus !== status) {\n local.onStatusChange?.(status);\n }\n lastStatus = status;\n });\n\n return (\n <QuestionnaireItemContext.Provider value={engine.context}>\n <fieldset\n {...rest}\n ref={(el) => {\n onCleanup(engine.registerElement(el));\n }}\n disabled={engine.context.disabled()}\n hidden={!engine.context.active()}\n inert={!engine.context.active()}\n tabIndex={-1}\n aria-describedby={engine.describedBy()}\n aria-invalid={engine.context.invalid() || undefined}\n aria-keyshortcuts={engine.keyshortcuts()}\n data-slot=\"questionnaire-item\"\n data-active={engine.context.active() ? \"\" : undefined}\n data-status={engine.context.status()}\n data-invalid={engine.context.invalid() ? \"\" : undefined}\n data-disabled={engine.context.disabled() ? \"\" : undefined}\n class={clsx(\n \"flex min-w-0 flex-col gap-4 border-0 p-0 outline-none\",\n local.class,\n )}\n classList={local.classList}\n >\n {local.children}\n </fieldset>\n </QuestionnaireItemContext.Provider>\n );\n}\n"],"mappings":";;;;;;;AAQA,SAAgBS,EAAkBC,GAA+B;CAC/D,IAAMC,IAASV,EACb;EAAEW,UAAU;EAAOC,UAAU;EAAOC,UAAU;EAAOC,SAAS;CAAM,GACpEL,CACF,GACM,CAACM,GAAOC,KAAQd,EAAWQ,GAAQ;EACvC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CAAU,CACX,GAEKO,IAASZ,EAAqB;EAClCa,MAAMH,EAAMG;EACZP,gBAAgBI,EAAMJ;EACtBC,gBAAgBG,EAAMH;EACtBC,gBAAgBE,EAAMF;EACtBC,eAAeC,EAAMD;CACvB,CAAC,GAEGK;CASJ,OARApB,QAAmB;EACjB,IAAMqB,IAASH,EAAOI,QAAQD,OAAO;EAIrCD,AAHIA,MAAeG,KAAAA,KAAaH,MAAeC,KAC7CL,EAAMQ,iBAAiBH,CAAM,GAE/BD,IAAaC;CACf,CAAC,GAEDI,EACGpB,EAAyBqB,UAAQ;EAAA,IAACC,QAAK;GAAA,OAAET,EAAOI;EAAO;EAAA,IAAAM,WAAA;GAAA,IAAAC,IAAAC,EAAA;GAwBrC,OAxBqCC,GAG9CC,MAAO;IACX9B,EAAUgB,EAAOe,gBAAgBD,CAAE,CAAC;GACtC,GAACH,CAAA,GAAAK,EAAAL,GAAAM,EAHGlB,GAAI;IAAA,IAIRH,WAAQ;KAAA,OAAEI,EAAOI,QAAQR,SAAS;IAAC;IAAA,IACnCsB,SAAM;KAAA,OAAE,CAAClB,EAAOI,QAAQe,OAAO;IAAC;IAAA,IAChCC,QAAK;KAAA,OAAE,CAACpB,EAAOI,QAAQe,OAAO;IAAC;IAAAqC,UAAA;IAAA,IAAA,qBAAA;KAAA,OAEbxD,EAAOsB,YAAY;IAAC;IAAA,IAAA,iBAAA;KAAA,OACxBtB,EAAOI,QAAQP,QAAQ,KAAKQ,KAAAA;IAAS;IAAA,IAAA,sBAAA;KAAA,OAChCL,EAAOyB,aAAa;IAAC;IAAA,aAC9B;IAAoB,IAAA,gBAAA;KAAA,OACjBzB,EAAOI,QAAQe,OAAO,IAAI,KAAKd,KAAAA;IAAS;IAAA,IAAA,gBAAA;KAAA,OACxCL,EAAOI,QAAQD,OAAO;IAAC;IAAA,IAAA,iBAAA;KAAA,OACtBH,EAAOI,QAAQP,QAAQ,IAAI,KAAKQ,KAAAA;IAAS;IAAA,IAAA,kBAAA;KAAA,OACxCL,EAAOI,QAAQR,SAAS,IAAI,KAAKS,KAAAA;IAAS;IAAA,IAAAoD,QAAA;KAAA,OAClDvE,EACL,yDACAY,EAAMgC,KACR;IAAC;IAAA,IACDC,YAAS;KAAA,OAAEjC,EAAMiC;IAAS;GAAA,CAAA,GAAA,IAAA,EAAA,GAAAC,EAAArB,SAEzBb,EAAMY,QAAQ,GAAAC;EAAA;CAAA,CAAA;AAIvB"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { Accessor } from 'solid-js';
|
|
2
|
+
import { QuestionnaireAnswerEntry } from './questionnaire.context';
|
|
3
|
+
import { QuestionnaireItemStatus } from './questionnaire.types';
|
|
4
|
+
export interface AnswerBookkeepingOptions {
|
|
5
|
+
/** 多选:选中集合可以有多项 */
|
|
6
|
+
multiple: Accessor<boolean>;
|
|
7
|
+
/** 必填:必填题不允许跳过 */
|
|
8
|
+
required: Accessor<boolean>;
|
|
9
|
+
}
|
|
10
|
+
export interface AnswerBookkeeping {
|
|
11
|
+
answers: Accessor<QuestionnaireAnswerEntry[]>;
|
|
12
|
+
selections: Accessor<string[]>;
|
|
13
|
+
defaults: Accessor<string[]>;
|
|
14
|
+
touched: Accessor<boolean>;
|
|
15
|
+
/** 每次 reset 自增,供子组件强制同步 DOM */
|
|
16
|
+
resetVersion: Accessor<number>;
|
|
17
|
+
status: Accessor<QuestionnaireItemStatus>;
|
|
18
|
+
/** 已跳过:状态为 skipped 且不是必填 */
|
|
19
|
+
skippable: Accessor<boolean>;
|
|
20
|
+
answeredOk: Accessor<boolean>;
|
|
21
|
+
hasInputAnswer: Accessor<boolean>;
|
|
22
|
+
registerAnswerControl: (entry: QuestionnaireAnswerEntry) => () => void;
|
|
23
|
+
registerAnswerSelection: (id: string, initialSelected: boolean) => () => void;
|
|
24
|
+
setAnswerDefault: (id: string, selected: boolean) => void;
|
|
25
|
+
setAnswerSelectionFromInteraction: (id: string, selected: boolean) => void;
|
|
26
|
+
syncControlledAnswerSelection: (id: string, selected: boolean) => void;
|
|
27
|
+
getAnswerByElement: (target: Element) => QuestionnaireAnswerEntry | null;
|
|
28
|
+
/** 标记已交互(首次校验失败后才显示错误) */
|
|
29
|
+
markTouched: () => void;
|
|
30
|
+
/** 跳过本题目;必填时返回 false 且不改变状态 */
|
|
31
|
+
skip: () => boolean;
|
|
32
|
+
/** 回到默认选择并把 touched/skipped 复位 */
|
|
33
|
+
reset: () => void;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* 单个题目的答案账目:注册了哪些答案控件、选中的是哪些、默认值是什么、
|
|
37
|
+
* 是否被跳过/触碰,以及由这些推导出的作答状态。
|
|
38
|
+
*
|
|
39
|
+
* 单一职责:只维护这份账目与它的读写方法,不碰 DOM 焦点、不拼 ARIA 文本、
|
|
40
|
+
* 不决定校验结果——那些是 item 层的事。
|
|
41
|
+
*/
|
|
42
|
+
export declare function createAnswerBookkeeping(options: AnswerBookkeepingOptions): AnswerBookkeeping;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { isAnswerDisabled as e } from "./questionnaire.utils.js";
|
|
2
|
+
import { createMemo as t, createSignal as n } from "solid-js";
|
|
3
|
+
//#region src/components/questionnaire/questionnaire.answers.ts
|
|
4
|
+
function r(r) {
|
|
5
|
+
let [i, a] = n([]), [o, s] = n([]), [c, l] = n([]), [u, d] = n(!1), [f, p] = n(!1), [m, h] = n(0), g = (e, t) => {
|
|
6
|
+
s((n) => t ? r.multiple() ? n.includes(e) ? n : [...n, e] : [e] : n.filter((t) => t !== e));
|
|
7
|
+
}, _ = t(() => i().some((e) => e.type === "input" && ![
|
|
8
|
+
"button",
|
|
9
|
+
"checkbox",
|
|
10
|
+
"radio",
|
|
11
|
+
"reset",
|
|
12
|
+
"submit"
|
|
13
|
+
].includes(e.element.type))), v = t(() => {
|
|
14
|
+
if (u()) return "skipped";
|
|
15
|
+
let t = o();
|
|
16
|
+
return i().some((n) => t.includes(n.id) && !e(n)) ? "answered" : "unanswered";
|
|
17
|
+
});
|
|
18
|
+
return {
|
|
19
|
+
answers: i,
|
|
20
|
+
selections: o,
|
|
21
|
+
defaults: c,
|
|
22
|
+
touched: f,
|
|
23
|
+
resetVersion: m,
|
|
24
|
+
status: v,
|
|
25
|
+
hasInputAnswer: _,
|
|
26
|
+
skippable: t(() => v() === "skipped" && !r.required()),
|
|
27
|
+
answeredOk: t(() => v() === "answered"),
|
|
28
|
+
registerAnswerControl(e) {
|
|
29
|
+
return a((t) => [...t.filter((t) => t.id !== e.id && t.element !== e.element), e]), () => a((t) => t.filter((t) => t !== e));
|
|
30
|
+
},
|
|
31
|
+
registerAnswerSelection(e, t) {
|
|
32
|
+
return t && s((t) => r.multiple() ? t.includes(e) ? t : [...t, e] : t.length ? t : [e]), () => {
|
|
33
|
+
s((t) => t.filter((t) => t !== e)), l((t) => t.filter((t) => t !== e));
|
|
34
|
+
};
|
|
35
|
+
},
|
|
36
|
+
setAnswerDefault(e, t) {
|
|
37
|
+
l((n) => t ? n.includes(e) ? n : [...n, e] : n.filter((t) => t !== e));
|
|
38
|
+
},
|
|
39
|
+
setAnswerSelectionFromInteraction(e, t) {
|
|
40
|
+
d(!1), g(e, t);
|
|
41
|
+
},
|
|
42
|
+
syncControlledAnswerSelection(e, t) {
|
|
43
|
+
g(e, t);
|
|
44
|
+
},
|
|
45
|
+
getAnswerByElement(e) {
|
|
46
|
+
return i().find((t) => t.element === e) ?? null;
|
|
47
|
+
},
|
|
48
|
+
markTouched() {
|
|
49
|
+
p(!0);
|
|
50
|
+
},
|
|
51
|
+
skip() {
|
|
52
|
+
return !r.required() && (s([]), d(!0), !0);
|
|
53
|
+
},
|
|
54
|
+
reset() {
|
|
55
|
+
p(!1), d(!1), s(r.multiple() ? [...c()] : c().slice(0, 1)), h((e) => e + 1);
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
//#endregion
|
|
60
|
+
export { r as createAnswerBookkeeping };
|
|
61
|
+
|
|
62
|
+
//# sourceMappingURL=questionnaire.answers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"questionnaire.answers.js","names":["createAnswerBookkeeping","answers","setAnswers","createSignal","selections","setSelections","defaults","setDefaults","skipped","setSkipped","touched","setTouched","resetVersion","setResetVersion","applySelection","selected","options","prev","id","value","hasInputAnswer","createMemo","entry","status","isAnswerDisabled","item","initialSelected","target"],"sources":["../../../src/components/questionnaire/questionnaire.answers.ts"],"sourcesContent":["import { createMemo, createSignal, type Accessor } from \"solid-js\";\nimport type { QuestionnaireAnswerEntry } from \"./questionnaire.context\";\nimport type { QuestionnaireItemStatus } from \"./questionnaire.types\";\nimport { isAnswerDisabled } from \"./questionnaire.utils\";\n\nexport interface AnswerBookkeepingOptions {\n /** 多选:选中集合可以有多项 */\n multiple: Accessor<boolean>;\n /** 必填:必填题不允许跳过 */\n required: Accessor<boolean>;\n}\n\nexport interface AnswerBookkeeping {\n answers: Accessor<QuestionnaireAnswerEntry[]>;\n selections: Accessor<string[]>;\n defaults: Accessor<string[]>;\n touched: Accessor<boolean>;\n /** 每次 reset 自增,供子组件强制同步 DOM */\n resetVersion: Accessor<number>;\n status: Accessor<QuestionnaireItemStatus>;\n /** 已跳过:状态为 skipped 且不是必填 */\n skippable: Accessor<boolean>;\n answeredOk: Accessor<boolean>;\n hasInputAnswer: Accessor<boolean>;\n\n registerAnswerControl: (entry: QuestionnaireAnswerEntry) => () => void;\n registerAnswerSelection: (id: string, initialSelected: boolean) => () => void;\n setAnswerDefault: (id: string, selected: boolean) => void;\n setAnswerSelectionFromInteraction: (id: string, selected: boolean) => void;\n syncControlledAnswerSelection: (id: string, selected: boolean) => void;\n getAnswerByElement: (target: Element) => QuestionnaireAnswerEntry | null;\n\n /** 标记已交互(首次校验失败后才显示错误) */\n markTouched: () => void;\n /** 跳过本题目;必填时返回 false 且不改变状态 */\n skip: () => boolean;\n /** 回到默认选择并把 touched/skipped 复位 */\n reset: () => void;\n}\n\n/**\n * 单个题目的答案账目:注册了哪些答案控件、选中的是哪些、默认值是什么、\n * 是否被跳过/触碰,以及由这些推导出的作答状态。\n *\n * 单一职责:只维护这份账目与它的读写方法,不碰 DOM 焦点、不拼 ARIA 文本、\n * 不决定校验结果——那些是 item 层的事。\n */\nexport function createAnswerBookkeeping(\n options: AnswerBookkeepingOptions,\n): AnswerBookkeeping {\n const [answers, setAnswers] = createSignal<QuestionnaireAnswerEntry[]>([]);\n const [selections, setSelections] = createSignal<string[]>([]);\n const [defaults, setDefaults] = createSignal<string[]>([]);\n const [skipped, setSkipped] = createSignal(false);\n const [touched, setTouched] = createSignal(false);\n const [resetVersion, setResetVersion] = createSignal(0);\n\n const applySelection = (id: string, selected: boolean) => {\n setSelections((prev) => {\n if (!selected) return prev.filter((value) => value !== id);\n if (!options.multiple()) return [id];\n return prev.includes(id) ? prev : [...prev, id];\n });\n };\n\n const hasInputAnswer = createMemo(() =>\n answers().some(\n (entry) =>\n entry.type === \"input\" &&\n ![\"button\", \"checkbox\", \"radio\", \"reset\", \"submit\"].includes(\n entry.element.type,\n ),\n ),\n );\n\n const status = createMemo<QuestionnaireItemStatus>(() => {\n if (skipped()) return \"skipped\";\n const selected = selections();\n const answered = answers().some(\n (entry) => selected.includes(entry.id) && !isAnswerDisabled(entry),\n );\n return answered ? \"answered\" : \"unanswered\";\n });\n\n return {\n answers,\n selections,\n defaults,\n touched,\n resetVersion,\n status,\n hasInputAnswer,\n skippable: createMemo(() => status() === \"skipped\" && !options.required()),\n answeredOk: createMemo(() => status() === \"answered\"),\n\n registerAnswerControl(entry) {\n setAnswers((prev) => [\n ...prev.filter(\n (item) => item.id !== entry.id && item.element !== entry.element,\n ),\n entry,\n ]);\n return () => setAnswers((prev) => prev.filter((item) => item !== entry));\n },\n\n registerAnswerSelection(id, initialSelected) {\n if (initialSelected) {\n setSelections((prev) => {\n if (!options.multiple()) return prev.length ? prev : [id];\n return prev.includes(id) ? prev : [...prev, id];\n });\n }\n return () => {\n setSelections((prev) => prev.filter((value) => value !== id));\n setDefaults((prev) => prev.filter((value) => value !== id));\n };\n },\n\n setAnswerDefault(id, selected) {\n setDefaults((prev) => {\n if (!selected) return prev.filter((value) => value !== id);\n return prev.includes(id) ? prev : [...prev, id];\n });\n },\n\n setAnswerSelectionFromInteraction(id, selected) {\n // 用户重新作答即视为取消\"跳过\"\n setSkipped(false);\n applySelection(id, selected);\n },\n\n syncControlledAnswerSelection(id, selected) {\n applySelection(id, selected);\n },\n\n getAnswerByElement(target) {\n return answers().find((entry) => entry.element === target) ?? null;\n },\n\n markTouched() {\n setTouched(true);\n },\n\n skip() {\n if (options.required()) return false;\n setSelections([]);\n setSkipped(true);\n return true;\n },\n\n reset() {\n setTouched(false);\n setSkipped(false);\n setSelections(\n options.multiple() ? [...defaults()] : defaults().slice(0, 1),\n );\n setResetVersion((value) => value + 1);\n },\n };\n}\n"],"mappings":";;;AA+CA,SAAgBA,EACd,GACmB;CACnB,IAAM,CAACC,GAASC,KAAcC,EAAyC,CAAC,CAAC,GACnE,CAACC,GAAYC,KAAiBF,EAAuB,CAAC,CAAC,GACvD,CAACG,GAAUC,KAAeJ,EAAuB,CAAC,CAAC,GACnD,CAACK,GAASC,KAAcN,EAAa,EAAK,GAC1C,CAACO,GAASC,KAAcR,EAAa,EAAK,GAC1C,CAACS,GAAcC,KAAmBV,EAAa,CAAC,GAEhDW,KAAkB,GAAY,MAAsB;EACxD,GAAe,MACRC,IACAC,EAAQ,SAAS,IACfC,EAAK,SAASC,CAAE,IAAID,IAAO,CAAC,GAAGA,GAAMC,CAAE,IADd,CAACA,CAAE,IADbD,EAAK,QAAQ,MAAUE,MAAUD,CAAE,CAG1D;CACH,GAEME,IAAiBC,QACrBpB,EAAQ,CAAC,CAAC,MACP,MACCqB,EAAM,SAAS,WACf,CAAC;EAAC;EAAU;EAAY;EAAS;EAAS;CAAQ,CAAC,CAAC,SAClDA,EAAM,QAAQ,IAChB,CACJ,CACF,GAEMC,IAASF,QAA0C;EACvD,IAAIb,EAAQ,GAAG,OAAO;EACtB,IAAMO,IAAWX,EAAW;EAI5B,OAHiBH,EAAQ,CAAC,CAAC,MACxB,MAAUc,EAAS,SAASO,EAAM,EAAE,KAAK,CAACE,EAAiBF,CAAK,CAE5D,IAAW,aAAa;CACjC,CAAC;CAED,OAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA,WAAWD,QAAiBE,EAAO,MAAM,aAAa,CAACP,EAAQ,SAAS,CAAC;EACzE,YAAYK,QAAiBE,EAAO,MAAM,UAAU;EAEpD,sBAAsB,GAAO;GAO3B,OANArB,GAAY,MAAS,CACnB,GAAGe,EAAK,QACL,MAASQ,EAAK,OAAOH,EAAM,MAAMG,EAAK,YAAYH,EAAM,OAC3D,GACAA,CACF,CAAC,SACYpB,GAAY,MAASe,EAAK,QAAQ,MAASQ,MAASH,CAAK,CAAC;EACzE;EAEA,wBAAwB,GAAI,GAAiB;GAO3C,OANII,KACFrB,GAAe,MACRW,EAAQ,SAAS,IACfC,EAAK,SAASC,CAAE,IAAID,IAAO,CAAC,GAAGA,GAAMC,CAAE,IADdD,EAAK,SAASA,IAAO,CAACC,CAAE,CAEzD,SAEU;IAEX,AADAb,GAAe,MAASY,EAAK,QAAQ,MAAUE,MAAUD,CAAE,CAAC,GAC5DX,GAAa,MAASU,EAAK,QAAQ,MAAUE,MAAUD,CAAE,CAAC;GAC5D;EACF;EAEA,iBAAiB,GAAI,GAAU;GAC7B,GAAa,MACNH,IACEE,EAAK,SAASC,CAAE,IAAID,IAAO,CAAC,GAAGA,GAAMC,CAAE,IADxBD,EAAK,QAAQ,MAAUE,MAAUD,CAAE,CAE1D;EACH;EAEA,kCAAkC,GAAI,GAAU;GAG9C,AADAT,EAAW,EAAK,GAChBK,EAAeI,GAAIH,CAAQ;EAC7B;EAEA,8BAA8B,GAAI,GAAU;GAC1C,EAAeG,GAAIH,CAAQ;EAC7B;EAEA,mBAAmB,GAAQ;GACzB,OAAOd,EAAQ,CAAC,CAAC,MAAM,MAAUqB,EAAM,YAAYK,CAAM,KAAK;EAChE;EAEA,cAAc;GACZ,EAAW,EAAI;EACjB;EAEA,OAAO;GAIL,OAHA,CAAIX,EAAQ,SAAS,MACrBX,EAAc,CAAC,CAAC,GAChBI,EAAW,EAAI,GACR;EACT;EAEA,QAAQ;GAMN,AALAE,EAAW,EAAK,GAChBF,EAAW,EAAK,GAChBJ,EACEW,EAAQ,SAAS,IAAI,CAAC,GAAGV,EAAS,CAAC,IAAIA,EAAS,CAAC,CAAC,MAAM,GAAG,CAAC,CAC9D,GACAO,GAAiB,MAAUM,IAAQ,CAAC;EACtC;CACF;AACF"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { Accessor } from 'solid-js';
|
|
2
|
+
import { QuestionnaireItemStatus } from './questionnaire.types';
|
|
3
|
+
/**
|
|
4
|
+
* 题目 ARIA 文本的组装与 id 登记。
|
|
5
|
+
*
|
|
6
|
+
* 单一职责:只负责"对外描述文字"——`aria-describedby` 的 id 合并、
|
|
7
|
+
* `aria-keyshortcuts` 的按键列表。不持有作答状态,也不决定对错:
|
|
8
|
+
* 是否无效、是否首尾题都由调用方以布尔量传入。
|
|
9
|
+
*/
|
|
10
|
+
export interface IdRegistry {
|
|
11
|
+
ids: Accessor<string[]>;
|
|
12
|
+
/** 登记一个 id(重复登记不会加两次),返回注销函数 */
|
|
13
|
+
register: (id: string) => () => void;
|
|
14
|
+
}
|
|
15
|
+
/** 生成 id 集合并提供登记/注销:描述与错误的多个来源各自登记,读取时合并 */
|
|
16
|
+
export declare function createIdRegistry(): IdRegistry;
|
|
17
|
+
/**
|
|
18
|
+
* `aria-describedby`:描述 id 常驻,只有**当前无效**时才附上错误 id,
|
|
19
|
+
* 去重后以空格连接;没有任何 id 时返回 undefined(不输出空属性)。
|
|
20
|
+
*/
|
|
21
|
+
export declare function buildDescribedBy(descriptionIds: readonly string[], errorIds: readonly string[], invalid: boolean): string | undefined;
|
|
22
|
+
/**
|
|
23
|
+
* `aria-keyshortcuts`:只在题目处于激活态时给出(键盘操作只作用于当前题)。
|
|
24
|
+
* - 始终可提交(Mod+Enter);
|
|
25
|
+
* - 有答案控件时上下箭头可在答案间移动;
|
|
26
|
+
* - 非首题才提示上一题;非末题且已作答才提示下一题(未作答时右箭头不前进)。
|
|
27
|
+
*/
|
|
28
|
+
export declare function buildItemKeyshortcuts(input: {
|
|
29
|
+
active: boolean;
|
|
30
|
+
hasAnswers: boolean;
|
|
31
|
+
first: boolean;
|
|
32
|
+
last: boolean;
|
|
33
|
+
status: QuestionnaireItemStatus;
|
|
34
|
+
}): string | undefined;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { createSignal as e } from "solid-js";
|
|
2
|
+
//#region src/components/questionnaire/questionnaire.aria.ts
|
|
3
|
+
function t() {
|
|
4
|
+
let [t, n] = e([]);
|
|
5
|
+
return {
|
|
6
|
+
ids: t,
|
|
7
|
+
register(e) {
|
|
8
|
+
return n((t) => t.includes(e) ? t : [...t, e]), () => n((t) => t.filter((t) => t !== e));
|
|
9
|
+
}
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
function n(e, t, n) {
|
|
13
|
+
let r = [...e, ...n ? t : []];
|
|
14
|
+
return [...new Set(r)].join(" ") || void 0;
|
|
15
|
+
}
|
|
16
|
+
function r(e) {
|
|
17
|
+
let { active: t, hasAnswers: n, first: r, last: i, status: a } = e;
|
|
18
|
+
if (t) return [
|
|
19
|
+
"Meta+Enter Control+Enter",
|
|
20
|
+
n ? "ArrowUp ArrowDown" : null,
|
|
21
|
+
r ? null : "ArrowLeft",
|
|
22
|
+
!i && a !== "unanswered" ? "ArrowRight" : null
|
|
23
|
+
].filter(Boolean).join(" ");
|
|
24
|
+
}
|
|
25
|
+
//#endregion
|
|
26
|
+
export { n as buildDescribedBy, r as buildItemKeyshortcuts, t as createIdRegistry };
|
|
27
|
+
|
|
28
|
+
//# sourceMappingURL=questionnaire.aria.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"questionnaire.aria.js","names":["createIdRegistry","ids","setIds","createSignal","prev","id","value","buildDescribedBy","descriptionIds","invalid","errorIds","buildItemKeyshortcuts","input","active","hasAnswers","first","last","status"],"sources":["../../../src/components/questionnaire/questionnaire.aria.ts"],"sourcesContent":["import { createSignal, type Accessor } from \"solid-js\";\nimport type { QuestionnaireItemStatus } from \"./questionnaire.types\";\n\n/**\n * 题目 ARIA 文本的组装与 id 登记。\n *\n * 单一职责:只负责\"对外描述文字\"——`aria-describedby` 的 id 合并、\n * `aria-keyshortcuts` 的按键列表。不持有作答状态,也不决定对错:\n * 是否无效、是否首尾题都由调用方以布尔量传入。\n */\n\nexport interface IdRegistry {\n ids: Accessor<string[]>;\n /** 登记一个 id(重复登记不会加两次),返回注销函数 */\n register: (id: string) => () => void;\n}\n\n/** 生成 id 集合并提供登记/注销:描述与错误的多个来源各自登记,读取时合并 */\nexport function createIdRegistry(): IdRegistry {\n const [ids, setIds] = createSignal<string[]>([]);\n\n return {\n ids,\n register(id) {\n setIds((prev) => (prev.includes(id) ? prev : [...prev, id]));\n return () => setIds((prev) => prev.filter((value) => value !== id));\n },\n };\n}\n\n/**\n * `aria-describedby`:描述 id 常驻,只有**当前无效**时才附上错误 id,\n * 去重后以空格连接;没有任何 id 时返回 undefined(不输出空属性)。\n */\nexport function buildDescribedBy(\n descriptionIds: readonly string[],\n errorIds: readonly string[],\n invalid: boolean,\n): string | undefined {\n const ids = [...descriptionIds, ...(invalid ? errorIds : [])];\n return [...new Set(ids)].join(\" \") || undefined;\n}\n\n/**\n * `aria-keyshortcuts`:只在题目处于激活态时给出(键盘操作只作用于当前题)。\n * - 始终可提交(Mod+Enter);\n * - 有答案控件时上下箭头可在答案间移动;\n * - 非首题才提示上一题;非末题且已作答才提示下一题(未作答时右箭头不前进)。\n */\nexport function buildItemKeyshortcuts(input: {\n active: boolean;\n hasAnswers: boolean;\n first: boolean;\n last: boolean;\n status: QuestionnaireItemStatus;\n}): string | undefined {\n const { active, hasAnswers, first, last, status } = input;\n if (!active) return undefined;\n\n // 第一项是常量,拼接结果不可能为空串,因此不需要 `|| undefined` 兜底\n return [\n \"Meta+Enter Control+Enter\",\n hasAnswers ? \"ArrowUp ArrowDown\" : null,\n !first ? \"ArrowLeft\" : null,\n !last && status !== \"unanswered\" ? \"ArrowRight\" : null,\n ]\n .filter(Boolean)\n .join(\" \");\n}\n"],"mappings":";;AAkBA,SAAgBA,IAA+B;CAC7C,IAAM,CAACC,GAAKC,KAAUC,EAAuB,CAAC,CAAC;CAE/C,OAAO;EACL;EACA,SAAS,GAAI;GAEX,OADAD,GAAQ,MAAUE,EAAK,SAASC,CAAE,IAAID,IAAO,CAAC,GAAGA,GAAMC,CAAE,CAAE,SAC9CH,GAAQ,MAASE,EAAK,QAAQ,MAAUE,MAAUD,CAAE,CAAC;EACpE;CACF;AACF;AAMA,SAAgBE,EACd,GACA,GACA,GACoB;CACpB,IAAMN,IAAM,CAAC,GAAGO,GAAgB,GAAIC,IAAUC,IAAW,CAAC,CAAE;CAC5D,OAAO,CAAC,GAAG,IAAI,IAAIT,CAAG,CAAC,CAAC,CAAC,KAAK,GAAG,KAAK,KAAA;AACxC;AAQA,SAAgBU,EAAsB,GAMf;CACrB,IAAM,EAAE,WAAQ,eAAY,UAAO,SAAM,cAAWC;CACpD,IAAKC,GAGL,OAAO;EACL;EACAC,IAAa,sBAAsB;EAClCC,IAAsB,OAAd;EACT,CAACC,KAAQC,MAAW,eAAe,eAAe;CACpD,CAAC,CACE,OAAO,OAAO,CAAC,CACf,KAAK,GAAG;AACb"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Accessor } from 'solid-js';
|
|
2
|
+
/**
|
|
3
|
+
* 监视表单子树里的 DOM 增删,返回一个"每次变化都会自增"的版本号。
|
|
4
|
+
*
|
|
5
|
+
* 单一职责:把结构变化变成一条可被 memo 依赖的响应式边——注册表本身是普通数组,
|
|
6
|
+
* 子节点被移动位置时注册顺序不变,只有 DOM 顺序变了,排序 memo 需要这条边才会重算。
|
|
7
|
+
* 环境不支持 `MutationObserver`(SSR)时不做任何事,版本号恒为 0。
|
|
8
|
+
*/
|
|
9
|
+
export declare function createDomVersionWatcher(root: Accessor<Element | undefined>): Accessor<number>;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { createEffect as e, createSignal as t, onCleanup as n } from "solid-js";
|
|
2
|
+
//#region src/components/questionnaire/questionnaire.dom-watch.ts
|
|
3
|
+
function r(r) {
|
|
4
|
+
let [i, a] = t(0);
|
|
5
|
+
return e(() => {
|
|
6
|
+
let e = r();
|
|
7
|
+
if (!e || typeof MutationObserver > "u") return;
|
|
8
|
+
let t = new MutationObserver(() => a((e) => e + 1));
|
|
9
|
+
t.observe(e, {
|
|
10
|
+
childList: !0,
|
|
11
|
+
subtree: !0
|
|
12
|
+
}), a((e) => e + 1), n(() => t.disconnect());
|
|
13
|
+
}), i;
|
|
14
|
+
}
|
|
15
|
+
//#endregion
|
|
16
|
+
export { r as createDomVersionWatcher };
|
|
17
|
+
|
|
18
|
+
//# sourceMappingURL=questionnaire.dom-watch.js.map
|