@torpor/ui 0.4.0 → 1.0.1
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 +42 -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 +1 -1
- 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 +24 -3
- 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 +55 -144
- 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 +85 -0
- package/dist/Charts/ChartYAxis.torp +107 -0
- package/dist/Charts/ColumnChart.torp +70 -0
- package/dist/Charts/GridLines.torp +4 -4
- package/dist/Charts/LineChart.torp +55 -178
- package/dist/Charts/PieChart.torp +14 -20
- package/dist/Charts/ScatterChart.torp +45 -38
- package/dist/Charts/SparkLine.torp +16 -19
- package/dist/Charts/XAxis.torp +14 -11
- package/dist/Charts/YAxis.torp +10 -8
- package/dist/Charts/index.d.ts +328 -79
- package/dist/Charts/index.js +17 -34
- 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 +120 -0
- package/dist/ComboBox/ComboBoxInput.torp +161 -0
- package/dist/ComboBox/ComboBoxTrigger.torp +49 -0
- package/dist/ComboBox/ComboBoxTypes.ts +39 -0
- package/dist/ComboBox/index.d.ts +154 -0
- package/dist/ComboBox/index.js +6 -0
- package/dist/CommandPalette/CommandPalette.torp +223 -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 +32 -50
- 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 +4 -17
- 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 +315 -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 +24 -17
- package/dist/Dialog/DialogBody.torp +5 -9
- package/dist/Dialog/DialogButton.torp +12 -12
- package/dist/Dialog/DialogFooter.torp +3 -7
- package/dist/Dialog/DialogHeader.torp +6 -10
- package/dist/Dialog/index.d.ts +27 -27
- 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/index.d.ts +14 -16
- package/dist/Disclosure/index.js +5 -18
- package/dist/Drawer/Drawer.torp +19 -49
- package/dist/Drawer/DrawerContent.torp +70 -13
- package/dist/Drawer/DrawerOverlay.torp +4 -4
- package/dist/Drawer/DrawerTrigger.torp +16 -4
- package/dist/Drawer/DrawerTypes.ts +3 -0
- 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 +27 -18
- 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 +5 -4
- 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 +178 -79
- package/dist/Form/index.js +16 -50
- package/dist/ListBox/ListBox.torp +253 -150
- package/dist/ListBox/ListBoxItem.torp +54 -30
- package/dist/ListBox/ListBoxSeparator.torp +5 -2
- package/dist/ListBox/ListBoxTypes.ts +23 -5
- package/dist/ListBox/LoadedListBoxItems.torp +41 -0
- package/dist/ListBox/index.d.ts +56 -17
- package/dist/ListBox/index.js +4 -14
- 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 +86 -71
- 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 +9 -19
- 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 +33 -51
- package/dist/MenuBar/MenuBarItemContent.torp +15 -101
- package/dist/MenuBar/MenuBarItemTrigger.torp +20 -55
- package/dist/MenuBar/MenuBarTypes.ts +11 -10
- package/dist/MenuBar/index.d.ts +17 -19
- package/dist/MenuBar/index.js +5 -18
- package/dist/Modal/Modal.torp +22 -47
- 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 +5 -16
- 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 -111
- package/dist/NavMenu/NavMenuButton.torp +7 -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 +15 -60
- package/dist/NavMenu/NavMenuPopoutContent.torp +14 -73
- package/dist/NavMenu/NavMenuPopoutTrigger.torp +17 -99
- package/dist/NavMenu/NavMenuSeparator.torp +3 -7
- package/dist/NavMenu/NavMenuTypes.ts +4 -14
- package/dist/NavMenu/index.d.ts +40 -44
- 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 +41 -34
- package/dist/Pagination/PaginationItem.torp +50 -13
- package/dist/Pagination/PaginationTypes.ts +3 -6
- package/dist/Pagination/buildPages.ts +9 -5
- package/dist/Pagination/index.d.ts +19 -9
- package/dist/Pagination/index.js +3 -40
- package/dist/Popover/Popover.torp +32 -50
- 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 +4 -17
- 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 +107 -53
- package/dist/SelectBox/SelectBoxContent.torp +49 -19
- package/dist/SelectBox/SelectBoxTrigger.torp +108 -8
- package/dist/SelectBox/SelectBoxTypes.ts +26 -11
- package/dist/SelectBox/index.d.ts +39 -54
- package/dist/SelectBox/index.js +5 -18
- package/dist/Slider/Slider.torp +245 -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 +1 -1
- 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 +29 -110
- package/dist/ToolBar/ToolBarButton.torp +7 -8
- package/dist/ToolBar/ToolBarElement.torp +7 -11
- package/dist/ToolBar/ToolBarPopout.torp +16 -68
- package/dist/ToolBar/ToolBarPopoutContent.torp +15 -73
- package/dist/ToolBar/ToolBarPopoutTrigger.torp +19 -110
- package/dist/ToolBar/ToolBarSeparator.torp +3 -7
- package/dist/ToolBar/ToolBarTypes.ts +7 -14
- package/dist/ToolBar/index.d.ts +30 -32
- package/dist/ToolBar/index.js +8 -30
- 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 +70 -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 +59 -12
- 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/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 +97 -22
- 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/Charts/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/ListBox/index.js.map +0 -1
- package/dist/Menu/index.js.map +0 -1
- package/dist/MenuBar/index.js.map +0 -1
- package/dist/NavMenu/index.js.map +0 -1
- package/dist/Pagination/index.js.map +0 -1
- package/dist/SelectBox/SelectBoxInput.torp +0 -95
- package/dist/SelectBox/index.js.map +0 -1
- package/dist/TabGroup/index.js.map +0 -1
- package/dist/ToolBar/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/Form/Select.torp
CHANGED
|
@@ -1,29 +1,34 @@
|
|
|
1
|
-
import type { ClassValue, StyleValue } from "@torpor/view";
|
|
1
|
+
import type { Bindable, 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 SelectProps {
|
|
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 data value that this field is bound to */
|
|
15
|
-
value
|
|
20
|
+
value: Bindable<any>;
|
|
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
|
/** An ARIA label for describing the input to screen readers when there is no associated label element */
|
|
21
|
-
ariaLabel?: string
|
|
26
|
+
ariaLabel?: string;
|
|
22
27
|
/** Raised on change */
|
|
23
|
-
onchange?: (e: Event) => void
|
|
28
|
+
onchange?: (e: Event) => void;
|
|
24
29
|
/** Raised on input */
|
|
25
|
-
oninput?: (e: Event) => void
|
|
26
|
-
}
|
|
30
|
+
oninput?: (e: Event) => void;
|
|
31
|
+
}
|
|
27
32
|
|
|
28
33
|
/**
|
|
29
34
|
* A select in a form.
|
|
@@ -31,7 +36,7 @@ interface SelectProps {
|
|
|
31
36
|
export default function Select($props: SelectProps | undefined) {
|
|
32
37
|
let defaultId = getId();
|
|
33
38
|
|
|
34
|
-
let name = $props?.name
|
|
39
|
+
let name = $props?.name;
|
|
35
40
|
|
|
36
41
|
let blurred = false;
|
|
37
42
|
|
|
@@ -43,24 +48,21 @@ export default function Select($props: SelectProps | undefined) {
|
|
|
43
48
|
}
|
|
44
49
|
|
|
45
50
|
// Use the FieldContext's state, or create a new one
|
|
46
|
-
let $state =
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
$run(() => {
|
|
56
|
-
if ($props !== undefined) {
|
|
57
|
-
$props.value = $state.value;
|
|
58
|
-
}
|
|
59
|
-
});
|
|
51
|
+
let $state =
|
|
52
|
+
fieldContext?.state ??
|
|
53
|
+
$watch({
|
|
54
|
+
inputId: $props?.id ?? defaultId,
|
|
55
|
+
value: $props?.value,
|
|
56
|
+
errors: {} as Record<string, string>,
|
|
57
|
+
valid: false,
|
|
58
|
+
message: "",
|
|
59
|
+
});
|
|
60
60
|
|
|
61
61
|
// Set the input ID now that we know it and it will get linked with the associated label
|
|
62
62
|
$state.inputId = $props?.id ?? defaultId;
|
|
63
63
|
|
|
64
|
+
$bind($state, $props, "value");
|
|
65
|
+
|
|
64
66
|
function handleInput(e: Event & { currentTarget: EventTarget & HTMLInputElement }) {
|
|
65
67
|
if (formContext) {
|
|
66
68
|
formContext.validate();
|
|
@@ -91,7 +93,9 @@ export default function Select($props: SelectProps | undefined) {
|
|
|
91
93
|
{$props?.readonly}
|
|
92
94
|
aria-label={$props?.ariaLabel}
|
|
93
95
|
data-valid={$state.valid ? "valid" : "invalid"}
|
|
94
|
-
|
|
96
|
+
aria-describedby={$state.messageId}
|
|
97
|
+
aria-invalid={fieldContext && !$state.valid ? "true" : undefined}
|
|
98
|
+
{$props?.onchange}
|
|
95
99
|
oninput={handleInput}
|
|
96
100
|
onblur={handleBlur}
|
|
97
101
|
>
|
package/dist/Form/TextArea.torp
CHANGED
|
@@ -1,35 +1,40 @@
|
|
|
1
|
-
import type { ClassValue, StyleValue } from "@torpor/view";
|
|
1
|
+
import type { Bindable, 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 TextAreaProps {
|
|
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 data value that this field is bound to */
|
|
15
|
-
value
|
|
20
|
+
value: Bindable<any>;
|
|
16
21
|
/** The number of rows to show in the input */
|
|
17
|
-
rows?: number
|
|
22
|
+
rows?: number;
|
|
18
23
|
/** Text to display when the input's value is empty */
|
|
19
|
-
placeholder?: string
|
|
24
|
+
placeholder?: string;
|
|
20
25
|
/** Whether the input should be readonly */
|
|
21
|
-
readonly?: boolean
|
|
26
|
+
readonly?: boolean;
|
|
22
27
|
/** Whether the input's value is required */
|
|
23
|
-
required?: boolean
|
|
28
|
+
required?: boolean;
|
|
24
29
|
/** The maximum number of characters allowed for the input value */
|
|
25
|
-
maxlength?: number
|
|
30
|
+
maxlength?: number;
|
|
26
31
|
/** An ARIA label for describing the input to screen readers when there is no associated label element */
|
|
27
|
-
ariaLabel?: string
|
|
32
|
+
ariaLabel?: string;
|
|
28
33
|
/** Raised on change */
|
|
29
|
-
onchange?: (e: Event) => void
|
|
34
|
+
onchange?: (e: Event) => void;
|
|
30
35
|
/** Raised on input */
|
|
31
|
-
oninput?: (e: Event) => void
|
|
32
|
-
}
|
|
36
|
+
oninput?: (e: Event) => void;
|
|
37
|
+
}
|
|
33
38
|
|
|
34
39
|
/**
|
|
35
40
|
* A standard input in a form.
|
|
@@ -37,7 +42,7 @@ interface TextAreaProps {
|
|
|
37
42
|
export default function TextArea($props: TextAreaProps | undefined) {
|
|
38
43
|
let defaultId = getId();
|
|
39
44
|
|
|
40
|
-
let name = $props?.name
|
|
45
|
+
let name = $props?.name;
|
|
41
46
|
|
|
42
47
|
let blurred = false;
|
|
43
48
|
|
|
@@ -49,24 +54,21 @@ export default function TextArea($props: TextAreaProps | undefined) {
|
|
|
49
54
|
}
|
|
50
55
|
|
|
51
56
|
// Use the FieldContext's state, or create a new one
|
|
52
|
-
let $state =
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
$run(() => {
|
|
62
|
-
if ($props !== undefined) {
|
|
63
|
-
$props.value = $state.value;
|
|
64
|
-
}
|
|
65
|
-
});
|
|
57
|
+
let $state =
|
|
58
|
+
fieldContext?.state ??
|
|
59
|
+
$watch({
|
|
60
|
+
inputId: $props?.id ?? defaultId,
|
|
61
|
+
value: $props?.value,
|
|
62
|
+
errors: {} as Record<string, string>,
|
|
63
|
+
valid: false,
|
|
64
|
+
message: "",
|
|
65
|
+
});
|
|
66
66
|
|
|
67
67
|
// Set the input ID now that we know it and it will get linked with the associated label
|
|
68
68
|
$state.inputId = $props?.id ?? defaultId;
|
|
69
69
|
|
|
70
|
+
$bind($state, $props, "value");
|
|
71
|
+
|
|
70
72
|
function handleInput(e: Event) {
|
|
71
73
|
if (formContext) {
|
|
72
74
|
formContext.validate();
|
|
@@ -100,7 +102,9 @@ export default function TextArea($props: TextAreaProps | undefined) {
|
|
|
100
102
|
{$props?.maxlength}
|
|
101
103
|
aria-label={$props?.ariaLabel}
|
|
102
104
|
data-valid={$state.valid ? "valid" : "invalid"}
|
|
103
|
-
|
|
105
|
+
aria-describedby={$state.messageId}
|
|
106
|
+
aria-invalid={fieldContext && !$state.valid ? "true" : undefined}
|
|
107
|
+
{$props?.onchange}
|
|
104
108
|
oninput={handleInput}
|
|
105
109
|
onblur={handleBlur}
|
|
106
110
|
/>
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import type { ClassValue, StyleValue } from "@torpor/view";
|
|
2
|
+
import getId from "../utils/getId";
|
|
3
|
+
import {
|
|
4
|
+
type FieldContext,
|
|
5
|
+
FieldContextName,
|
|
6
|
+
type FormContext,
|
|
7
|
+
FormContextName,
|
|
8
|
+
} from "./FormTypes";
|
|
9
|
+
|
|
10
|
+
interface ToggleProps {
|
|
11
|
+
/** An ID for the root element */
|
|
12
|
+
id?: string;
|
|
13
|
+
/** Classes for the root element */
|
|
14
|
+
class?: ClassValue;
|
|
15
|
+
/** Styles for the root element */
|
|
16
|
+
style?: StyleValue;
|
|
17
|
+
/** The name of the toggle's form data field */
|
|
18
|
+
name?: string;
|
|
19
|
+
/** Whether the toggle is switched on */
|
|
20
|
+
checked?: boolean;
|
|
21
|
+
/** If set to true, the user cannot interact with this toggle */
|
|
22
|
+
disabled?: boolean;
|
|
23
|
+
/** An ARIA label for describing the toggle to screen readers when there is no associated label element */
|
|
24
|
+
ariaLabel?: string;
|
|
25
|
+
/** Raised on change */
|
|
26
|
+
onchange?: (e: Event) => void;
|
|
27
|
+
/** Raised on input */
|
|
28
|
+
oninput?: (e: Event) => void;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* A switch input in a form, which can be turned on or off.
|
|
33
|
+
*
|
|
34
|
+
* See [the WAI ARIA guidelines for Switches](https://www.w3.org/WAI/ARIA/apg/patterns/switch/).
|
|
35
|
+
*/
|
|
36
|
+
export default function Toggle($props: ToggleProps | undefined) {
|
|
37
|
+
let defaultId = getId();
|
|
38
|
+
|
|
39
|
+
let name = $props?.name;
|
|
40
|
+
|
|
41
|
+
let blurred = false;
|
|
42
|
+
|
|
43
|
+
// Get stuff out of the FormContext and FieldContext
|
|
44
|
+
const formContext = $context[FormContextName] as FormContext;
|
|
45
|
+
const fieldContext = $context[FieldContextName] as FieldContext;
|
|
46
|
+
if (fieldContext) {
|
|
47
|
+
name ??= fieldContext.name;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// Use the FieldContext's state, or create a new one
|
|
51
|
+
let $state =
|
|
52
|
+
fieldContext?.state ??
|
|
53
|
+
$watch({
|
|
54
|
+
inputId: $props?.id ?? defaultId,
|
|
55
|
+
value: $props?.checked,
|
|
56
|
+
errors: {} as Record<string, string>,
|
|
57
|
+
valid: false,
|
|
58
|
+
message: "",
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
// Binding
|
|
62
|
+
$run(() => {
|
|
63
|
+
if ($props !== undefined) {
|
|
64
|
+
$props.checked = $state.value === true;
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
// Set the input ID now that we know it and it will get linked with the associated label
|
|
69
|
+
$state.inputId = $props?.id ?? defaultId;
|
|
70
|
+
|
|
71
|
+
function handleInput(e: Event) {
|
|
72
|
+
if (formContext) {
|
|
73
|
+
formContext.validate();
|
|
74
|
+
}
|
|
75
|
+
if (fieldContext && blurred) {
|
|
76
|
+
fieldContext.validate();
|
|
77
|
+
}
|
|
78
|
+
if ($props?.oninput) {
|
|
79
|
+
$props.oninput(e);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
function handleBlur() {
|
|
84
|
+
if (fieldContext) {
|
|
85
|
+
fieldContext.validate();
|
|
86
|
+
}
|
|
87
|
+
blurred = true;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
@render {
|
|
91
|
+
<input
|
|
92
|
+
id={$props?.id ?? defaultId}
|
|
93
|
+
class={["torp-toggle", $props?.class]}
|
|
94
|
+
type="checkbox"
|
|
95
|
+
role="switch"
|
|
96
|
+
{name}
|
|
97
|
+
&checked={$state.value}
|
|
98
|
+
aria-checked={$state.value === true ? "true" : "false"}
|
|
99
|
+
disabled={$props?.disabled}
|
|
100
|
+
aria-label={$props?.ariaLabel}
|
|
101
|
+
data-valid={$state.valid ? "valid" : "invalid"}
|
|
102
|
+
aria-describedby={$state.messageId}
|
|
103
|
+
aria-invalid={fieldContext && !$state.valid ? "true" : undefined}
|
|
104
|
+
{$props?.onchange}
|
|
105
|
+
oninput={handleInput}
|
|
106
|
+
onblur={handleBlur}
|
|
107
|
+
/>
|
|
108
|
+
}
|
|
109
|
+
}
|