@torpor/ui 0.3.7 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +83 -7
- package/dist/Accordion/Accordion.torp +43 -165
- package/dist/Accordion/AccordionContent.torp +6 -6
- package/dist/Accordion/AccordionHeader.torp +7 -11
- package/dist/Accordion/AccordionItem.torp +24 -24
- package/dist/Accordion/AccordionTrigger.torp +17 -8
- package/dist/Accordion/AccordionTypes.ts +6 -6
- package/dist/Accordion/index.d.ts +23 -25
- package/dist/Accordion/index.js +6 -22
- package/dist/Breadcrumb/Breadcrumb.torp +12 -10
- package/dist/Breadcrumb/BreadcrumbItem.torp +6 -6
- package/dist/Breadcrumb/BreadcrumbList.torp +21 -0
- package/dist/Breadcrumb/BreadcrumbSeparator.torp +4 -4
- package/dist/Breadcrumb/index.d.ts +39 -15
- package/dist/Breadcrumb/index.js +5 -14
- package/dist/Calendar/Calendar.torp +163 -156
- package/dist/Calendar/CalendarDay.torp +91 -45
- package/dist/Calendar/CalendarDayHeader.torp +36 -0
- package/dist/Calendar/CalendarGrid.torp +104 -0
- package/dist/Calendar/CalendarGridHeader.torp +43 -0
- package/dist/Calendar/CalendarHeader.torp +48 -0
- package/dist/Calendar/CalendarHeaderTrigger.torp +54 -0
- package/dist/Calendar/CalendarTypes.ts +25 -4
- package/dist/Calendar/buildDays.ts +54 -0
- package/dist/Calendar/index.d.ts +191 -5
- package/dist/Calendar/index.js +8 -10
- package/dist/Carousel/Carousel.torp +180 -0
- package/dist/Carousel/CarouselIndicators.torp +65 -0
- package/dist/Carousel/CarouselNext.torp +43 -0
- package/dist/Carousel/CarouselPrevious.torp +44 -0
- package/dist/Carousel/CarouselSlide.torp +57 -0
- package/dist/Carousel/CarouselTypes.ts +28 -0
- package/dist/Carousel/index.d.ts +147 -0
- package/dist/Carousel/index.js +6 -0
- package/dist/Charts/BarChart.torp +70 -0
- package/dist/Charts/Chart.torp +120 -0
- package/dist/Charts/ChartBars.torp +78 -0
- package/dist/Charts/ChartColumns.torp +66 -0
- package/dist/Charts/ChartGrid.torp +54 -0
- package/dist/Charts/ChartLines.torp +60 -0
- package/dist/Charts/ChartTypes.ts +25 -0
- package/dist/Charts/ChartXAxis.torp +83 -0
- package/dist/Charts/ChartYAxis.torp +105 -0
- package/dist/Charts/ColumnChart.torp +70 -0
- package/dist/{Chart → Charts}/GridLines.torp +7 -4
- package/dist/Charts/LineChart.torp +73 -0
- package/dist/{Chart → Charts}/PieChart.torp +14 -20
- package/dist/{Chart → Charts}/ScatterChart.torp +45 -38
- package/dist/{Chart → Charts}/SparkLine.torp +16 -19
- package/dist/{Chart → Charts}/XAxis.torp +18 -12
- package/dist/{Chart → Charts}/YAxis.torp +15 -9
- package/dist/Charts/index.d.ts +469 -0
- package/dist/Charts/index.js +17 -0
- package/dist/ColorPicker/ColorPalette.torp +154 -0
- package/dist/ColorPicker/ColorPicker.torp +157 -0
- package/dist/ColorPicker/index.d.ts +85 -0
- package/dist/ColorPicker/index.js +3 -0
- package/dist/ComboBox/ComboBox.torp +205 -0
- package/dist/ComboBox/ComboBoxContent.torp +112 -0
- package/dist/ComboBox/ComboBoxInput.torp +145 -0
- package/dist/ComboBox/ComboBoxTrigger.torp +49 -0
- package/dist/ComboBox/ComboBoxTypes.ts +39 -0
- package/dist/ComboBox/index.d.ts +152 -0
- package/dist/ComboBox/index.js +6 -0
- package/dist/CommandPalette/CommandPalette.torp +220 -0
- package/dist/CommandPalette/CommandTypes.ts +14 -0
- package/dist/CommandPalette/index.d.ts +45 -0
- package/dist/CommandPalette/index.js +2 -0
- package/dist/Contextual/Contextual.torp +39 -52
- package/dist/Contextual/ContextualContent.torp +29 -73
- package/dist/Contextual/ContextualHover.torp +112 -0
- package/dist/Contextual/ContextualTrigger.torp +31 -42
- package/dist/Contextual/ContextualTypes.ts +5 -18
- package/dist/Contextual/index.d.ts +44 -27
- package/dist/Contextual/index.js +5 -14
- package/dist/DataGrid/DataGrid.torp +496 -0
- package/dist/DataGrid/DataGridTypes.ts +25 -0
- package/dist/DataGrid/index.d.ts +90 -0
- package/dist/DataGrid/index.js +3 -0
- package/dist/DataGrid/sortRows.ts +32 -0
- package/dist/DatePicker/DatePicker.torp +222 -0
- package/dist/DatePicker/DatePickerHeader.torp +20 -0
- package/dist/DatePicker/index.d.ts +55 -0
- package/dist/DatePicker/index.js +2 -0
- package/dist/DateRangePicker/DateRangePicker.torp +311 -0
- package/dist/DateRangePicker/DateRangePickerDay.torp +137 -0
- package/dist/DateRangePicker/DateRangePickerTypes.ts +21 -0
- package/dist/DateRangePicker/index.d.ts +76 -0
- package/dist/DateRangePicker/index.js +3 -0
- package/dist/Dialog/Dialog.torp +33 -30
- package/dist/Dialog/DialogBody.torp +5 -9
- package/dist/Dialog/DialogButton.torp +14 -11
- package/dist/Dialog/DialogFooter.torp +3 -7
- package/dist/Dialog/DialogHeader.torp +6 -10
- package/dist/Dialog/DialogTypes.ts +2 -2
- package/dist/Dialog/index.d.ts +28 -26
- package/dist/Dialog/index.js +6 -22
- package/dist/Disclosure/Disclosure.torp +18 -18
- package/dist/Disclosure/DisclosureContent.torp +5 -6
- package/dist/Disclosure/DisclosureHeader.torp +7 -11
- package/dist/Disclosure/DisclosureTrigger.torp +4 -5
- package/dist/Disclosure/DisclosureTypes.ts +1 -1
- package/dist/Disclosure/index.d.ts +14 -16
- package/dist/Disclosure/index.js +5 -18
- package/dist/Drawer/Drawer.torp +21 -51
- package/dist/Drawer/DrawerContent.torp +67 -13
- package/dist/Drawer/DrawerOverlay.torp +4 -4
- package/dist/Drawer/DrawerTrigger.torp +16 -4
- package/dist/Drawer/DrawerTypes.ts +4 -1
- package/dist/Drawer/index.d.ts +16 -20
- package/dist/Drawer/index.js +5 -18
- package/dist/FocusGroup/FocusGroup.torp +70 -0
- package/dist/FocusGroup/FocusGroupButton.torp +59 -0
- package/dist/FocusGroup/FocusGroupTypes.ts +14 -0
- package/dist/FocusGroup/index.d.ts +44 -0
- package/dist/FocusGroup/index.js +3 -0
- package/dist/Form/CheckBox.torp +28 -20
- package/dist/Form/Field.torp +17 -17
- package/dist/Form/File.torp +31 -22
- package/dist/Form/FileDrop.torp +187 -0
- package/dist/Form/Form.torp +24 -22
- package/dist/Form/FormTypes.ts +2 -0
- package/dist/Form/FormValues.torp +37 -0
- package/dist/Form/Hidden.torp +4 -12
- package/dist/Form/Input.torp +38 -32
- package/dist/Form/Label.torp +3 -3
- package/dist/Form/Message.torp +13 -5
- package/dist/Form/MessageSummary.torp +39 -0
- package/dist/Form/Option.torp +11 -7
- package/dist/Form/Select.torp +32 -28
- package/dist/Form/TextArea.torp +35 -31
- package/dist/Form/Toggle.torp +109 -0
- package/dist/Form/index.d.ts +198 -77
- package/dist/Form/index.js +16 -46
- package/dist/ListBox/ListBox.torp +374 -0
- package/dist/ListBox/ListBoxItem.torp +131 -0
- package/dist/ListBox/ListBoxSeparator.torp +29 -0
- package/dist/ListBox/ListBoxTypes.ts +41 -0
- package/dist/ListBox/LoadedListBoxItems.torp +41 -0
- package/dist/ListBox/index.d.ts +136 -0
- package/dist/ListBox/index.js +4 -0
- package/dist/MaskedInput/MaskedInput.torp +143 -0
- package/dist/MaskedInput/index.d.ts +52 -0
- package/dist/MaskedInput/index.js +2 -0
- package/dist/Menu/Menu.torp +90 -70
- package/dist/Menu/MenuButton.torp +17 -10
- package/dist/Menu/MenuCheck.torp +22 -18
- package/dist/Menu/MenuGroup.torp +4 -4
- package/dist/Menu/MenuIndicator.torp +5 -13
- package/dist/Menu/MenuPopout.torp +20 -50
- package/dist/Menu/MenuPopoutContent.torp +15 -66
- package/dist/Menu/MenuPopoutTrigger.torp +19 -100
- package/dist/Menu/MenuRadio.torp +25 -26
- package/dist/Menu/MenuRadioGroup.torp +25 -68
- package/dist/Menu/MenuSeparator.torp +3 -2
- package/dist/Menu/MenuTypes.ts +12 -21
- package/dist/Menu/index.d.ts +45 -51
- package/dist/Menu/index.js +12 -46
- package/dist/MenuBar/MenuBar.torp +31 -83
- package/dist/MenuBar/MenuBarItem.torp +34 -55
- package/dist/MenuBar/MenuBarItemContent.torp +15 -101
- package/dist/MenuBar/MenuBarItemTrigger.torp +20 -55
- package/dist/MenuBar/MenuBarTypes.ts +13 -12
- package/dist/MenuBar/index.d.ts +17 -19
- package/dist/MenuBar/index.js +5 -18
- package/dist/Modal/Modal.torp +28 -48
- package/dist/Modal/ModalContent.torp +21 -44
- package/dist/Modal/ModalOverlay.torp +4 -4
- package/dist/Modal/ModalTrigger.torp +16 -32
- package/dist/Modal/ModalTypes.ts +6 -17
- package/dist/Modal/index.d.ts +17 -29
- package/dist/Modal/index.js +29 -28
- package/dist/Modal/index.js.map +1 -1
- package/dist/Modal/showPrompt.ts +2 -2
- package/dist/NavMenu/NavMenu.torp +22 -104
- package/dist/NavMenu/NavMenuButton.torp +10 -8
- package/dist/NavMenu/NavMenuElement.torp +6 -7
- package/dist/NavMenu/NavMenuGroup.torp +5 -5
- package/dist/NavMenu/NavMenuGroupHeader.torp +5 -8
- package/dist/NavMenu/NavMenuLink.torp +7 -10
- package/dist/NavMenu/NavMenuPopout.torp +16 -61
- package/dist/NavMenu/NavMenuPopoutContent.torp +14 -73
- package/dist/NavMenu/NavMenuPopoutTrigger.torp +47 -0
- package/dist/NavMenu/NavMenuSeparator.torp +3 -6
- package/dist/NavMenu/NavMenuTypes.ts +6 -15
- package/dist/NavMenu/index.d.ts +55 -55
- package/dist/NavMenu/index.js +11 -42
- package/dist/Notification/Notification.torp +12 -24
- package/dist/Notification/NotificationClose.torp +6 -3
- package/dist/Notification/NotificationContainer.torp +3 -7
- package/dist/Notification/NotificationContent.torp +3 -7
- package/dist/Notification/NotificationTypes.ts +1 -1
- package/dist/Notification/index.d.ts +15 -12
- package/dist/Notification/index.js +22 -32
- package/dist/Notification/index.js.map +1 -1
- package/dist/NumberInput/NumberInput.torp +255 -0
- package/dist/NumberInput/index.d.ts +44 -0
- package/dist/NumberInput/index.js +2 -0
- package/dist/Pagination/Pagination.torp +152 -0
- package/dist/Pagination/PaginationItem.torp +137 -0
- package/dist/Pagination/PaginationTypes.ts +22 -0
- package/dist/Pagination/buildPages.ts +61 -0
- package/dist/Pagination/index.d.ts +63 -0
- package/dist/Pagination/index.js +3 -0
- package/dist/Popover/Popover.torp +39 -52
- package/dist/Popover/PopoverContent.torp +27 -76
- package/dist/Popover/PopoverHover.torp +90 -0
- package/dist/Popover/PopoverTrigger.torp +17 -40
- package/dist/Popover/PopoverTypes.ts +5 -18
- package/dist/Popover/index.d.ts +40 -25
- package/dist/Popover/index.js +18 -18
- package/dist/Popover/index.js.map +1 -1
- package/dist/Progress/Progress.torp +88 -0
- package/dist/Progress/index.d.ts +37 -0
- package/dist/Progress/index.js +2 -0
- package/dist/Rating/Rating.torp +225 -0
- package/dist/Rating/index.d.ts +44 -0
- package/dist/Rating/index.js +2 -0
- package/dist/SegmentedControl/SegmentedControl.torp +233 -0
- package/dist/SegmentedControl/SegmentedControlTypes.ts +26 -0
- package/dist/SegmentedControl/SegmentedItem.torp +78 -0
- package/dist/SegmentedControl/index.d.ts +74 -0
- package/dist/SegmentedControl/index.js +3 -0
- package/dist/SelectBox/SelectBox.torp +190 -0
- package/dist/SelectBox/SelectBoxContent.torp +107 -0
- package/dist/SelectBox/SelectBoxTrigger.torp +141 -0
- package/dist/SelectBox/SelectBoxTypes.ts +33 -0
- package/dist/SelectBox/index.d.ts +112 -0
- package/dist/SelectBox/index.js +5 -0
- package/dist/Slider/Slider.torp +248 -0
- package/dist/Slider/index.d.ts +45 -0
- package/dist/Slider/index.js +2 -0
- package/dist/Splitter/Splitter.torp +156 -0
- package/dist/Splitter/SplitterHandle.torp +161 -0
- package/dist/Splitter/SplitterPane.torp +63 -0
- package/dist/Splitter/SplitterTypes.ts +31 -0
- package/dist/Splitter/index.d.ts +103 -0
- package/dist/Splitter/index.js +4 -0
- package/dist/Stepper/Stepper.torp +146 -0
- package/dist/Stepper/StepperMarker.torp +24 -0
- package/dist/Stepper/StepperNext.torp +44 -0
- package/dist/Stepper/StepperPrevious.torp +44 -0
- package/dist/Stepper/StepperStep.torp +90 -0
- package/dist/Stepper/StepperTypes.ts +30 -0
- package/dist/Stepper/index.d.ts +149 -0
- package/dist/Stepper/index.js +6 -0
- package/dist/TabGroup/TabContent.torp +6 -6
- package/dist/TabGroup/TabGroup.torp +97 -113
- package/dist/TabGroup/TabGroupTypes.ts +3 -3
- package/dist/TabGroup/TabHeader.torp +23 -19
- package/dist/TabGroup/TabList.torp +8 -21
- package/dist/TabGroup/TabTrigger.torp +6 -7
- package/dist/TabGroup/index.d.ts +26 -26
- package/dist/TabGroup/index.js +6 -22
- package/dist/TagInput/TagInput.torp +378 -0
- package/dist/TagInput/index.d.ts +48 -0
- package/dist/TagInput/index.js +2 -0
- package/dist/TimePicker/TimePicker.torp +462 -0
- package/dist/TimePicker/index.d.ts +53 -0
- package/dist/TimePicker/index.js +2 -0
- package/dist/ToolBar/ToolBar.torp +117 -0
- package/dist/ToolBar/ToolBarButton.torp +56 -0
- package/dist/ToolBar/ToolBarElement.torp +51 -0
- package/dist/ToolBar/ToolBarPopout.torp +45 -0
- package/dist/ToolBar/ToolBarPopoutContent.torp +34 -0
- package/dist/ToolBar/ToolBarPopoutTrigger.torp +47 -0
- package/dist/ToolBar/ToolBarSeparator.torp +21 -0
- package/dist/ToolBar/ToolBarTypes.ts +28 -0
- package/dist/ToolBar/index.d.ts +210 -0
- package/dist/ToolBar/index.js +8 -0
- package/dist/Tree/Tree.torp +395 -0
- package/dist/Tree/TreeItem.torp +176 -0
- package/dist/Tree/TreeItemChildren.torp +60 -0
- package/dist/Tree/TreeItemContent.torp +46 -0
- package/dist/Tree/TreeItemLabel.torp +94 -0
- package/dist/Tree/TreeItemTrigger.torp +78 -0
- package/dist/Tree/TreeLoadedChildren.torp +122 -0
- package/dist/Tree/TreeTypes.ts +63 -0
- package/dist/Tree/index.d.ts +262 -0
- package/dist/Tree/index.js +7 -0
- package/dist/icons/ChevronDoubleLeft.torp +19 -0
- package/dist/icons/ChevronDoubleRight.torp +19 -0
- package/dist/icons/index.d.ts +61 -1
- package/dist/icons/index.js +17 -58
- package/dist/loader-DEeG5vFY.js +44 -0
- package/dist/loader-DEeG5vFY.js.map +1 -0
- package/dist/motion/index.d.ts +12 -8
- package/dist/motion/index.d.ts.map +1 -0
- package/dist/motion/index.js +72 -88
- package/dist/motion/index.js.map +1 -1
- package/dist/mount/draggable.ts +63 -0
- package/dist/mount/dropTarget.ts +108 -0
- package/dist/mount/hoverTrigger.ts +1 -1
- package/dist/utils/$handle.ts +23 -0
- package/dist/utils/LoadedItems.torp +47 -0
- package/dist/utils/PopoutClickTrigger.torp +99 -0
- package/dist/utils/PopoutTypes.ts +82 -0
- package/dist/utils/SubmenuPopout.torp +89 -0
- package/dist/utils/SubmenuPopoutContent.torp +87 -0
- package/dist/utils/SubmenuPopoutTrigger.torp +160 -0
- package/dist/utils/chartColors.ts +13 -13
- package/dist/utils/chartLayout.ts +143 -0
- package/dist/utils/chartUtils.ts +1 -1
- package/dist/utils/colorUtils.ts +103 -0
- package/dist/utils/createItemGroup.ts +152 -0
- package/dist/utils/dateUtils.ts +8 -7
- package/dist/utils/documentEvents.ts +4 -4
- package/dist/utils/dragState.ts +86 -0
- package/dist/utils/focusGroup.ts +204 -0
- package/dist/utils/focusItem.ts +44 -0
- package/dist/utils/formField.ts +70 -0
- package/dist/utils/hoverOpen.ts +50 -0
- package/dist/utils/hoverReveal.ts +194 -0
- package/dist/utils/loader.ts +113 -0
- package/dist/utils/maskUtils.ts +98 -0
- package/dist/utils/popoutContent.ts +137 -0
- package/dist/utils/reorderList.ts +52 -0
- package/package.json +116 -25
- package/dist/Accordion/index.js.map +0 -1
- package/dist/Breadcrumb/index.js.map +0 -1
- package/dist/Calendar/index.js.map +0 -1
- package/dist/Chart/BarChart.torp +0 -159
- package/dist/Chart/LineChart.torp +0 -196
- package/dist/Chart/index.d.ts +0 -220
- package/dist/Chart/index.js +0 -34
- package/dist/Chart/index.js.map +0 -1
- package/dist/Contextual/index.js.map +0 -1
- package/dist/Dialog/index.js.map +0 -1
- package/dist/Disclosure/index.js.map +0 -1
- package/dist/Drawer/index.js.map +0 -1
- package/dist/Form/index.js.map +0 -1
- package/dist/Menu/index.js.map +0 -1
- package/dist/MenuBar/index.js.map +0 -1
- package/dist/NavMenu/NavMenuPopoutButton.torp +0 -129
- package/dist/NavMenu/index.js.map +0 -1
- package/dist/TabGroup/index.js.map +0 -1
- package/dist/icons/index.js.map +0 -1
- package/dist/index.d.ts +0 -19
- package/dist/metafile-esm.json +0 -1
- package/dist/motion/fade.ts +0 -16
- package/dist/motion/grow.ts +0 -23
- package/dist/motion/measure.ts +0 -28
- package/dist/motion/slide.ts +0 -45
- package/dist/mount/index.d.ts +0 -2
- package/dist/utils/index.d.ts +0 -2
- /package/dist/{Chart → Charts}/DataSeries.ts +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export const DrawerContextName = "Drawer";
|
|
1
|
+
export const DrawerContextName: unique symbol = Symbol.for("torp.Drawer");
|
|
2
2
|
|
|
3
3
|
/** The shared context for drawer components (Contextual, Prompt and Drawer) */
|
|
4
4
|
export interface DrawerContext {
|
|
@@ -15,10 +15,13 @@ export interface DrawerContext {
|
|
|
15
15
|
// 3. set focus (for accessibility)
|
|
16
16
|
// There may be a more elegant way to accomplish this!
|
|
17
17
|
focusFirstElement?: () => void;
|
|
18
|
+
focusTrigger?: () => void;
|
|
18
19
|
}
|
|
19
20
|
|
|
20
21
|
export interface DrawerState {
|
|
21
22
|
visible: boolean;
|
|
22
23
|
modal: boolean;
|
|
23
24
|
position: "left" | "right" | "top" | "bottom";
|
|
25
|
+
triggerId?: string;
|
|
26
|
+
contentId?: string;
|
|
24
27
|
}
|
package/dist/Drawer/index.d.ts
CHANGED
|
@@ -5,30 +5,24 @@ interface DrawerProps {
|
|
|
5
5
|
/** An ID for the root element */
|
|
6
6
|
id?: string;
|
|
7
7
|
/** Classes for the root element */
|
|
8
|
-
class?: ClassValue
|
|
8
|
+
class?: ClassValue;
|
|
9
9
|
/** Styles for the root element */
|
|
10
|
-
style?: StyleValue
|
|
10
|
+
style?: StyleValue;
|
|
11
11
|
/** Whether the drawer is modal. If true, an overlay should be supplied to obscure outside content, and only the drawer content will be visible to screen readers */
|
|
12
|
-
modal?: boolean
|
|
12
|
+
modal?: boolean;
|
|
13
13
|
/** Whether the drawer is visible */
|
|
14
|
-
visible
|
|
14
|
+
visible: Bindable<boolean | undefined>;
|
|
15
15
|
/** Which side of the window to show the drawer from */
|
|
16
|
-
position?: "left" | "right" | "top" | "bottom"
|
|
17
|
-
/** A function to be called when the user selects a response */
|
|
18
|
-
callback?: ((value: any) => void),
|
|
19
|
-
/** Raised when the drawer is opened or closed */
|
|
20
|
-
ontoggle?: (open: boolean) => void,
|
|
16
|
+
position?: "left" | "right" | "top" | "bottom";
|
|
21
17
|
/** Raised when the drawer has opened */
|
|
22
|
-
onopen?: () => void
|
|
18
|
+
onopen?: () => void;
|
|
23
19
|
/** Raised when the drawer has closed */
|
|
24
|
-
onclose?: (result: any) => void
|
|
20
|
+
onclose?: (result: any) => void;
|
|
25
21
|
}
|
|
26
22
|
|
|
27
23
|
/**
|
|
28
24
|
* A drawer that can be used to show rich content or obtain information from a user.
|
|
29
25
|
*
|
|
30
|
-
* See [the WAI ARIA guidelines for Dialogs](https://www.w3.org/WAI/ARIA/apg/patterns/dialogmodal/).
|
|
31
|
-
*
|
|
32
26
|
* The structure of a Drawer is:
|
|
33
27
|
*
|
|
34
28
|
* ```
|
|
@@ -52,9 +46,11 @@ interface DrawerContentProps {
|
|
|
52
46
|
/** An ID for the root element */
|
|
53
47
|
id?: string;
|
|
54
48
|
/** Classes for the root element */
|
|
55
|
-
class?: ClassValue
|
|
49
|
+
class?: ClassValue;
|
|
56
50
|
/** Styles for the root element */
|
|
57
|
-
style?: StyleValue
|
|
51
|
+
style?: StyleValue;
|
|
52
|
+
/** An ARIA label for describing the drawer to screen readers */
|
|
53
|
+
ariaLabel?: string;
|
|
58
54
|
}
|
|
59
55
|
|
|
60
56
|
/**
|
|
@@ -74,9 +70,9 @@ interface DrawerOverlayProps {
|
|
|
74
70
|
/** An ID for the root element */
|
|
75
71
|
id?: string;
|
|
76
72
|
/** Classes for the root element */
|
|
77
|
-
class?: ClassValue
|
|
73
|
+
class?: ClassValue;
|
|
78
74
|
/** Styles for the root element */
|
|
79
|
-
style?: StyleValue
|
|
75
|
+
style?: StyleValue;
|
|
80
76
|
}
|
|
81
77
|
|
|
82
78
|
/**
|
|
@@ -97,9 +93,9 @@ interface DrawerTriggerProps {
|
|
|
97
93
|
/** An ID for the root element */
|
|
98
94
|
id?: string;
|
|
99
95
|
/** Classes for the root element */
|
|
100
|
-
class?: ClassValue
|
|
96
|
+
class?: ClassValue;
|
|
101
97
|
/** Styles for the root element */
|
|
102
|
-
style?: StyleValue
|
|
98
|
+
style?: StyleValue;
|
|
103
99
|
}
|
|
104
100
|
|
|
105
101
|
/**
|
|
@@ -113,4 +109,4 @@ declare function DrawerTrigger(
|
|
|
113
109
|
$slots?: Record<string, SlotRender>,
|
|
114
110
|
): void;
|
|
115
111
|
|
|
116
|
-
export { Drawer, DrawerContent, DrawerOverlay, DrawerTrigger };
|
|
112
|
+
export { Drawer, DrawerContent, DrawerOverlay, DrawerTrigger };
|
package/dist/Drawer/index.js
CHANGED
|
@@ -1,18 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
// src/Drawer/DrawerOverlay.torp
|
|
8
|
-
import DrawerOverlay_default from "./DrawerOverlay.torp";
|
|
9
|
-
|
|
10
|
-
// src/Drawer/DrawerTrigger.torp
|
|
11
|
-
import DrawerTrigger_default from "./DrawerTrigger.torp";
|
|
12
|
-
export {
|
|
13
|
-
Drawer_default as Drawer,
|
|
14
|
-
DrawerContent_default as DrawerContent,
|
|
15
|
-
DrawerOverlay_default as DrawerOverlay,
|
|
16
|
-
DrawerTrigger_default as DrawerTrigger
|
|
17
|
-
};
|
|
18
|
-
//# sourceMappingURL=index.js.map
|
|
1
|
+
import Drawer from "./Drawer.torp";
|
|
2
|
+
import DrawerContent from "./DrawerContent.torp";
|
|
3
|
+
import DrawerOverlay from "./DrawerOverlay.torp";
|
|
4
|
+
import DrawerTrigger from "./DrawerTrigger.torp";
|
|
5
|
+
export { Drawer, DrawerContent, DrawerOverlay, DrawerTrigger };
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import type { ClassValue, StyleValue } from "@torpor/view";
|
|
2
|
+
import { createFocusGroup } from "../utils/focusGroup";
|
|
3
|
+
import {
|
|
4
|
+
type FocusGroupContext,
|
|
5
|
+
FocusGroupContextName,
|
|
6
|
+
} from "./FocusGroupTypes";
|
|
7
|
+
|
|
8
|
+
interface FocusGroupProps {
|
|
9
|
+
/** An ID for the root element */
|
|
10
|
+
id?: string;
|
|
11
|
+
/** Classes for the root element */
|
|
12
|
+
class?: ClassValue;
|
|
13
|
+
/** Styles for the root element */
|
|
14
|
+
style?: StyleValue;
|
|
15
|
+
/**
|
|
16
|
+
* The orientation of the group, which affects which arrow keys move
|
|
17
|
+
* within it (default "horizontal")
|
|
18
|
+
*/
|
|
19
|
+
orientation?: "horizontal" | "vertical";
|
|
20
|
+
/** An accessible name for the group */
|
|
21
|
+
ariaLabel?: string;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* A group of buttons (or any focusable elements) that behaves as a single
|
|
26
|
+
* tab stop: tabbing into the group lands on one item, and the arrow keys
|
|
27
|
+
* move focus between items -- Home and End jump to the ends. Disabled items
|
|
28
|
+
* are skipped.
|
|
29
|
+
*
|
|
30
|
+
* Wrap any set of controls in it:
|
|
31
|
+
*
|
|
32
|
+
* ```
|
|
33
|
+
* <FocusGroup ariaLabel="Text options">
|
|
34
|
+
* <FocusGroupButton onclick={bold}>Bold</FocusGroupButton>
|
|
35
|
+
* <FocusGroupButton onclick={italic}>Italic</FocusGroupButton>
|
|
36
|
+
* </FocusGroup>
|
|
37
|
+
* ```
|
|
38
|
+
*
|
|
39
|
+
* Use ToolBar instead when the group needs popouts or separators; use
|
|
40
|
+
* SegmentedControl when exactly one item must be active.
|
|
41
|
+
*/
|
|
42
|
+
export default function FocusGroup($props?: FocusGroupProps) {
|
|
43
|
+
const orientation = $props?.orientation ?? "horizontal";
|
|
44
|
+
const group = createFocusGroup();
|
|
45
|
+
|
|
46
|
+
const context: FocusGroupContext = {
|
|
47
|
+
registerItem: (item) => group.registerItem(item),
|
|
48
|
+
removeItem: (index) => group.removeItem(index),
|
|
49
|
+
handleItemFocus: (index) => group.handleItemFocus(index),
|
|
50
|
+
handleItemKey: (e) => {
|
|
51
|
+
group.handleGroupKey(group.getFocusIndex(), e, {
|
|
52
|
+
vertical: orientation === "vertical",
|
|
53
|
+
});
|
|
54
|
+
},
|
|
55
|
+
isTabStop: (index) => group.isTabStop(index),
|
|
56
|
+
};
|
|
57
|
+
$context[FocusGroupContextName] = context;
|
|
58
|
+
|
|
59
|
+
@render {
|
|
60
|
+
<div
|
|
61
|
+
{$props?.id}
|
|
62
|
+
class={["torp-focus-group", $props?.class]}
|
|
63
|
+
{$props?.style}
|
|
64
|
+
role="group"
|
|
65
|
+
aria-label={$props?.ariaLabel}
|
|
66
|
+
>
|
|
67
|
+
<slot />
|
|
68
|
+
</div>
|
|
69
|
+
}
|
|
70
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import type { ClassValue, StyleValue } from "@torpor/view";
|
|
2
|
+
import {
|
|
3
|
+
type FocusGroupContext,
|
|
4
|
+
FocusGroupContextName,
|
|
5
|
+
} from "./FocusGroupTypes";
|
|
6
|
+
|
|
7
|
+
interface FocusGroupButtonProps {
|
|
8
|
+
/** An ID for the root element */
|
|
9
|
+
id?: string;
|
|
10
|
+
/** Classes for the root element */
|
|
11
|
+
class?: ClassValue;
|
|
12
|
+
/** Styles for the root element */
|
|
13
|
+
style?: StyleValue;
|
|
14
|
+
/** Whether this button is disabled */
|
|
15
|
+
disabled?: boolean;
|
|
16
|
+
/** Raised when the button is clicked */
|
|
17
|
+
onclick?: (e: MouseEvent) => void;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* A button inside a FocusGroup. The group's tab stop roves with focus:
|
|
22
|
+
* it starts on the first button and lands wherever focus last rested.
|
|
23
|
+
*/
|
|
24
|
+
export default function FocusGroupButton($props?: FocusGroupButtonProps) {
|
|
25
|
+
let button: HTMLButtonElement;
|
|
26
|
+
|
|
27
|
+
const context = $context[FocusGroupContextName] as FocusGroupContext;
|
|
28
|
+
if (!context) {
|
|
29
|
+
throw new Error("FocusGroupButton must be contained within a FocusGroup");
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
function setFocused() {
|
|
33
|
+
button.focus();
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
const { index } = context.registerItem({ setFocused, disabled: $props?.disabled });
|
|
37
|
+
|
|
38
|
+
$run(() => {
|
|
39
|
+
return () => context.removeItem(index);
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
@render {
|
|
43
|
+
<button
|
|
44
|
+
{$props?.id}
|
|
45
|
+
class={["torp-focus-group-button", $props?.class]}
|
|
46
|
+
{$props?.style}
|
|
47
|
+
type="button"
|
|
48
|
+
tabindex={context.isTabStop(index) ? 0 : -1}
|
|
49
|
+
{$props?.disabled}
|
|
50
|
+
aria-disabled={$props?.disabled ? "true" : undefined}
|
|
51
|
+
onclick={$props?.onclick}
|
|
52
|
+
onkeydown={(e: KeyboardEvent) => context.handleItemKey(e)}
|
|
53
|
+
onfocus={() => context.handleItemFocus(index)}
|
|
54
|
+
&ref={button}
|
|
55
|
+
>
|
|
56
|
+
<slot />
|
|
57
|
+
</button>
|
|
58
|
+
}
|
|
59
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { FocusItemState } from "../utils/focusGroup";
|
|
2
|
+
|
|
3
|
+
export const FocusGroupContextName: unique symbol = Symbol.for("torp.FocusGroupItem");
|
|
4
|
+
|
|
5
|
+
export type { FocusItemState };
|
|
6
|
+
|
|
7
|
+
export interface FocusGroupContext {
|
|
8
|
+
registerItem: (item: FocusItemState) => { index: number };
|
|
9
|
+
removeItem: (index: number) => void;
|
|
10
|
+
handleItemFocus: (index: number) => void;
|
|
11
|
+
handleItemKey: (e: KeyboardEvent) => void;
|
|
12
|
+
/** Whether item `index` is currently the group's single tab stop */
|
|
13
|
+
isTabStop: (index: number) => boolean;
|
|
14
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { type SlotRender } from "@torpor/view";
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* A group of buttons (or any focusable elements) that behaves as a single
|
|
6
|
+
* tab stop: tabbing into the group lands on one item, and the arrow keys
|
|
7
|
+
* move focus between items -- Home and End jump to the ends. Disabled items
|
|
8
|
+
* are skipped.
|
|
9
|
+
*
|
|
10
|
+
* Wrap any set of controls in it:
|
|
11
|
+
*
|
|
12
|
+
* ```
|
|
13
|
+
* <FocusGroup ariaLabel="Text options">
|
|
14
|
+
* <FocusGroupButton onclick={bold}>Bold</FocusGroupButton>
|
|
15
|
+
* <FocusGroupButton onclick={italic}>Italic</FocusGroupButton>
|
|
16
|
+
* </FocusGroup>
|
|
17
|
+
* ```
|
|
18
|
+
*
|
|
19
|
+
* Use ToolBar instead when the group needs popouts or separators; use
|
|
20
|
+
* SegmentedControl when exactly one item must be active.
|
|
21
|
+
*/
|
|
22
|
+
declare function FocusGroup(
|
|
23
|
+
$parent: ParentNode,
|
|
24
|
+
$anchor: Node | null,
|
|
25
|
+
$props?: FocusGroupProps,
|
|
26
|
+
$context?: Record<PropertyKey, any>,
|
|
27
|
+
$slots?: Record<string, SlotRender>,
|
|
28
|
+
): void;
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* A button inside a FocusGroup. The group's tab stop roves with focus:
|
|
34
|
+
* it starts on the first button and lands wherever focus last rested.
|
|
35
|
+
*/
|
|
36
|
+
declare function FocusGroupButton(
|
|
37
|
+
$parent: ParentNode,
|
|
38
|
+
$anchor: Node | null,
|
|
39
|
+
$props?: FocusGroupButtonProps,
|
|
40
|
+
$context?: Record<PropertyKey, any>,
|
|
41
|
+
$slots?: Record<string, SlotRender>,
|
|
42
|
+
): void;
|
|
43
|
+
|
|
44
|
+
export { FocusGroup, FocusGroupButton };
|
package/dist/Form/CheckBox.torp
CHANGED
|
@@ -1,25 +1,30 @@
|
|
|
1
1
|
import type { ClassValue, StyleValue } from "@torpor/view";
|
|
2
2
|
import getId from "../utils/getId";
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
type FieldContext,
|
|
5
|
+
FieldContextName,
|
|
6
|
+
type FormContext,
|
|
7
|
+
FormContextName,
|
|
8
|
+
} from "./FormTypes";
|
|
4
9
|
|
|
5
10
|
interface CheckBoxProps {
|
|
6
11
|
/** An ID for the root element */
|
|
7
12
|
id?: string;
|
|
8
13
|
/** Classes for the root element */
|
|
9
|
-
class?: ClassValue
|
|
14
|
+
class?: ClassValue;
|
|
10
15
|
/** Styles for the root element */
|
|
11
|
-
style?: StyleValue
|
|
16
|
+
style?: StyleValue;
|
|
12
17
|
/** The name of the checkbox's form data field */
|
|
13
|
-
name?: string
|
|
18
|
+
name?: string;
|
|
14
19
|
/** Whether the checkbox is checked */
|
|
15
|
-
checked?: boolean
|
|
20
|
+
checked?: boolean;
|
|
16
21
|
/** An ARIA label for describing the checkbox to screen readers when there is no associated label element */
|
|
17
|
-
ariaLabel?: string
|
|
22
|
+
ariaLabel?: string;
|
|
18
23
|
/** Raised on change */
|
|
19
|
-
onchange?: (e: Event) => void
|
|
24
|
+
onchange?: (e: Event) => void;
|
|
20
25
|
/** Raised on input */
|
|
21
|
-
oninput?: (e: Event) => void
|
|
22
|
-
}
|
|
26
|
+
oninput?: (e: Event) => void;
|
|
27
|
+
}
|
|
23
28
|
|
|
24
29
|
/**
|
|
25
30
|
* A checkbox input in a form.
|
|
@@ -27,7 +32,7 @@ interface CheckBoxProps {
|
|
|
27
32
|
export default function CheckBox($props: CheckBoxProps | undefined) {
|
|
28
33
|
let defaultId = getId();
|
|
29
34
|
|
|
30
|
-
let name = $props?.name
|
|
35
|
+
let name = $props?.name;
|
|
31
36
|
|
|
32
37
|
let blurred = false;
|
|
33
38
|
|
|
@@ -39,13 +44,15 @@ export default function CheckBox($props: CheckBoxProps | undefined) {
|
|
|
39
44
|
}
|
|
40
45
|
|
|
41
46
|
// Use the FieldContext's state, or create a new one
|
|
42
|
-
let $state =
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
47
|
+
let $state =
|
|
48
|
+
fieldContext?.state ??
|
|
49
|
+
$watch({
|
|
50
|
+
inputId: $props?.id ?? defaultId,
|
|
51
|
+
value: $props?.checked,
|
|
52
|
+
errors: {} as Record<string, string>,
|
|
53
|
+
valid: false,
|
|
54
|
+
message: "",
|
|
55
|
+
});
|
|
49
56
|
|
|
50
57
|
// Binding
|
|
51
58
|
$run(() => {
|
|
@@ -79,14 +86,15 @@ export default function CheckBox($props: CheckBoxProps | undefined) {
|
|
|
79
86
|
@render {
|
|
80
87
|
<input
|
|
81
88
|
id={$props?.id ?? defaultId}
|
|
82
|
-
class={
|
|
83
|
-
${$props?.class ?? ""}`.trim()}
|
|
89
|
+
class={["torp-check-box", $props?.class]}
|
|
84
90
|
type="checkbox"
|
|
85
91
|
{name}
|
|
86
92
|
&checked={$state.value}
|
|
87
93
|
aria-label={$props?.ariaLabel}
|
|
88
94
|
data-valid={$state.valid ? "valid" : "invalid"}
|
|
89
|
-
|
|
95
|
+
aria-describedby={$state.messageId}
|
|
96
|
+
aria-invalid={fieldContext && !$state.valid ? "true" : undefined}
|
|
97
|
+
{$props?.onchange}
|
|
90
98
|
oninput={handleInput}
|
|
91
99
|
onblur={handleBlur}
|
|
92
100
|
/>
|
package/dist/Form/Field.torp
CHANGED
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
import type { ClassValue, StyleValue } from "@torpor/view";
|
|
1
|
+
import type { Bindable, ClassValue, StyleValue } from "@torpor/view";
|
|
2
2
|
import {
|
|
3
|
-
|
|
3
|
+
type FieldContext,
|
|
4
4
|
FieldContextName,
|
|
5
|
-
type ValidationIssue,
|
|
6
5
|
type FormContext,
|
|
7
|
-
|
|
6
|
+
FormContextName,
|
|
7
|
+
type ValidationIssue,
|
|
8
8
|
} from "./FormTypes";
|
|
9
|
-
import { StandardSchemaV1 } from "./StandardSchemaV1"
|
|
9
|
+
import { StandardSchemaV1 } from "./StandardSchemaV1";
|
|
10
10
|
|
|
11
11
|
interface FieldProps {
|
|
12
12
|
/** An ID for the root element */
|
|
13
13
|
id?: string;
|
|
14
14
|
/** Classes for the root element */
|
|
15
|
-
class?: ClassValue
|
|
15
|
+
class?: ClassValue;
|
|
16
16
|
/** Styles for the root element */
|
|
17
|
-
style?: StyleValue
|
|
17
|
+
style?: StyleValue;
|
|
18
18
|
/** The name of the data that this field contains */
|
|
19
|
-
name: string
|
|
19
|
+
name: string;
|
|
20
20
|
/** The data value that this field is bound to */
|
|
21
|
-
value
|
|
21
|
+
value: Bindable<any>;
|
|
22
22
|
/** The schema validator to use for this form */
|
|
23
|
-
schema?: StandardSchemaV1
|
|
24
|
-
}
|
|
23
|
+
schema?: StandardSchemaV1;
|
|
24
|
+
}
|
|
25
25
|
|
|
26
26
|
/**
|
|
27
27
|
* A field in a form which automatically links up a Label and/or an input
|
|
@@ -36,14 +36,14 @@ export default function Field($props: FieldProps) {
|
|
|
36
36
|
return this.issues.find((i) => i.path === $props.name) === undefined;
|
|
37
37
|
},
|
|
38
38
|
get message() {
|
|
39
|
-
return this.issues
|
|
39
|
+
return this.issues
|
|
40
|
+
.filter((i) => i.path === $props.name)
|
|
41
|
+
.map((i) => i.message)
|
|
42
|
+
.join("\n");
|
|
40
43
|
},
|
|
41
44
|
});
|
|
42
45
|
|
|
43
|
-
|
|
44
|
-
$run(() => {
|
|
45
|
-
$props.value = $state.value;
|
|
46
|
-
});
|
|
46
|
+
$bind($state, $props, "value");
|
|
47
47
|
|
|
48
48
|
// Get stuff out of the FormContext, if applicable
|
|
49
49
|
const formContext = $context[FormContextName] as FormContext;
|
|
@@ -57,7 +57,7 @@ export default function Field($props: FieldProps) {
|
|
|
57
57
|
let context: FieldContext = {
|
|
58
58
|
name: $props.name,
|
|
59
59
|
state: $state,
|
|
60
|
-
validate: handleValidate
|
|
60
|
+
validate: handleValidate,
|
|
61
61
|
};
|
|
62
62
|
$context[FieldContextName] = context;
|
|
63
63
|
|
package/dist/Form/File.torp
CHANGED
|
@@ -1,31 +1,36 @@
|
|
|
1
1
|
import type { ClassValue, StyleValue } from "@torpor/view";
|
|
2
2
|
import getId from "../utils/getId";
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
type FieldContext,
|
|
5
|
+
FieldContextName,
|
|
6
|
+
type FormContext,
|
|
7
|
+
FormContextName,
|
|
8
|
+
} from "./FormTypes";
|
|
4
9
|
|
|
5
10
|
interface FileProps {
|
|
6
11
|
/** An ID for the root element */
|
|
7
12
|
id?: string;
|
|
8
13
|
/** Classes for the root element */
|
|
9
|
-
class?: ClassValue
|
|
14
|
+
class?: ClassValue;
|
|
10
15
|
/** Styles for the root element */
|
|
11
|
-
style?: StyleValue
|
|
16
|
+
style?: StyleValue;
|
|
12
17
|
/** The name of the input's form data field */
|
|
13
|
-
name?: string
|
|
18
|
+
name?: string;
|
|
14
19
|
/** The type of files that this input accepts e.g. `image/*` */
|
|
15
|
-
accept?: string
|
|
20
|
+
accept?: string;
|
|
16
21
|
/** Text to display when the input value is empty */
|
|
17
|
-
placeholder?: string
|
|
22
|
+
placeholder?: string;
|
|
18
23
|
/** Whether the input should be readonly */
|
|
19
|
-
readonly?: boolean
|
|
24
|
+
readonly?: boolean;
|
|
20
25
|
/** The maximum number of characters allowed for the input value */
|
|
21
|
-
maxlength?: number
|
|
26
|
+
maxlength?: number;
|
|
22
27
|
/** An ARIA label for describing the input to screen readers when there is no associated label element */
|
|
23
|
-
ariaLabel?: string
|
|
28
|
+
ariaLabel?: string;
|
|
24
29
|
/** Raised on change */
|
|
25
|
-
onchange?: (e: Event) => void
|
|
30
|
+
onchange?: (e: Event) => void;
|
|
26
31
|
/** Raised on input */
|
|
27
|
-
oninput?: (e: Event) => void
|
|
28
|
-
}
|
|
32
|
+
oninput?: (e: Event) => void;
|
|
33
|
+
}
|
|
29
34
|
|
|
30
35
|
/**
|
|
31
36
|
* A file input in a form.
|
|
@@ -33,7 +38,7 @@ interface FileProps {
|
|
|
33
38
|
export default function File($props: FileProps | undefined) {
|
|
34
39
|
let defaultId = getId();
|
|
35
40
|
|
|
36
|
-
let name = $props?.name
|
|
41
|
+
let name = $props?.name;
|
|
37
42
|
|
|
38
43
|
let blurred = false;
|
|
39
44
|
|
|
@@ -50,14 +55,16 @@ export default function File($props: FileProps | undefined) {
|
|
|
50
55
|
}
|
|
51
56
|
|
|
52
57
|
// Use the FieldContext's state, or create a new one
|
|
53
|
-
let $state =
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
58
|
+
let $state =
|
|
59
|
+
fieldContext?.state ??
|
|
60
|
+
$watch({
|
|
61
|
+
inputId: $props?.id ?? defaultId,
|
|
62
|
+
// You can't use value with a file input
|
|
63
|
+
value: null,
|
|
64
|
+
errors: {} as Record<string, string>,
|
|
65
|
+
valid: false,
|
|
66
|
+
message: "",
|
|
67
|
+
});
|
|
61
68
|
|
|
62
69
|
// Set the input ID now that we know it and it will get linked with the associated label
|
|
63
70
|
$state.inputId = $props?.id ?? defaultId;
|
|
@@ -94,7 +101,9 @@ export default function File($props: FileProps | undefined) {
|
|
|
94
101
|
{$props?.maxlength}
|
|
95
102
|
aria-label={$props?.ariaLabel}
|
|
96
103
|
data-valid={$state.valid ? "valid" : "invalid"}
|
|
97
|
-
|
|
104
|
+
aria-describedby={$state.messageId}
|
|
105
|
+
aria-invalid={fieldContext && !$state.valid ? "true" : undefined}
|
|
106
|
+
{$props?.onchange}
|
|
98
107
|
oninput={handleInput}
|
|
99
108
|
onblur={handleBlur}
|
|
100
109
|
/>
|