@rjsf/daisyui 6.0.0-beta.2
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 +231 -0
- package/dist/chakra-ui.esm.js +2192 -0
- package/dist/chakra-ui.esm.js.map +7 -0
- package/dist/chakra-ui.umd.js +2011 -0
- package/dist/index.js +2180 -0
- package/dist/index.js.map +7 -0
- package/lib/DaisyUIForm.d.ts +5 -0
- package/lib/DaisyUIForm.js +8 -0
- package/lib/DaisyUIForm.js.map +1 -0
- package/lib/DaisyUIFrameProvider.d.ts +35 -0
- package/lib/DaisyUIFrameProvider.js +93 -0
- package/lib/DaisyUIFrameProvider.js.map +1 -0
- package/lib/daisyForm/DaisyForm.d.ts +12 -0
- package/lib/daisyForm/DaisyForm.js +15 -0
- package/lib/daisyForm/DaisyForm.js.map +1 -0
- package/lib/daisyForm/index.d.ts +2 -0
- package/lib/daisyForm/index.js +3 -0
- package/lib/daisyForm/index.js.map +1 -0
- package/lib/index.d.ts +10 -0
- package/lib/index.js +11 -0
- package/lib/index.js.map +1 -0
- package/lib/templates/ArrayFieldDescriptionTemplate/ArrayFieldDescriptionTemplate.d.ts +7 -0
- package/lib/templates/ArrayFieldDescriptionTemplate/ArrayFieldDescriptionTemplate.js +11 -0
- package/lib/templates/ArrayFieldDescriptionTemplate/ArrayFieldDescriptionTemplate.js.map +1 -0
- package/lib/templates/ArrayFieldDescriptionTemplate/index.d.ts +2 -0
- package/lib/templates/ArrayFieldDescriptionTemplate/index.js +3 -0
- package/lib/templates/ArrayFieldDescriptionTemplate/index.js.map +1 -0
- package/lib/templates/ArrayFieldItemButtonsTemplate/ArrayFieldItemButtonsTemplate.d.ts +5 -0
- package/lib/templates/ArrayFieldItemButtonsTemplate/ArrayFieldItemButtonsTemplate.js +20 -0
- package/lib/templates/ArrayFieldItemButtonsTemplate/ArrayFieldItemButtonsTemplate.js.map +1 -0
- package/lib/templates/ArrayFieldItemButtonsTemplate/index.d.ts +2 -0
- package/lib/templates/ArrayFieldItemButtonsTemplate/index.js +3 -0
- package/lib/templates/ArrayFieldItemButtonsTemplate/index.js.map +1 -0
- package/lib/templates/ArrayFieldItemTemplate/ArrayFieldItemTemplate.d.ts +14 -0
- package/lib/templates/ArrayFieldItemTemplate/ArrayFieldItemTemplate.js +27 -0
- package/lib/templates/ArrayFieldItemTemplate/ArrayFieldItemTemplate.js.map +1 -0
- package/lib/templates/ArrayFieldItemTemplate/index.d.ts +2 -0
- package/lib/templates/ArrayFieldItemTemplate/index.js +3 -0
- package/lib/templates/ArrayFieldItemTemplate/index.js.map +1 -0
- package/lib/templates/ArrayFieldTemplate/ArrayFieldTemplate.d.ts +15 -0
- package/lib/templates/ArrayFieldTemplate/ArrayFieldTemplate.js +37 -0
- package/lib/templates/ArrayFieldTemplate/ArrayFieldTemplate.js.map +1 -0
- package/lib/templates/ArrayFieldTemplate/index.d.ts +2 -0
- package/lib/templates/ArrayFieldTemplate/index.js +3 -0
- package/lib/templates/ArrayFieldTemplate/index.js.map +1 -0
- package/lib/templates/ArrayFieldTitleTemplate/ArrayFieldTitleTemplate.d.ts +7 -0
- package/lib/templates/ArrayFieldTitleTemplate/ArrayFieldTitleTemplate.js +11 -0
- package/lib/templates/ArrayFieldTitleTemplate/ArrayFieldTitleTemplate.js.map +1 -0
- package/lib/templates/ArrayFieldTitleTemplate/index.d.ts +2 -0
- package/lib/templates/ArrayFieldTitleTemplate/index.js +3 -0
- package/lib/templates/ArrayFieldTitleTemplate/index.js.map +1 -0
- package/lib/templates/BaseInputTemplate/BaseInputTemplate.d.ts +16 -0
- package/lib/templates/BaseInputTemplate/BaseInputTemplate.js +33 -0
- package/lib/templates/BaseInputTemplate/BaseInputTemplate.js.map +1 -0
- package/lib/templates/BaseInputTemplate/index.d.ts +2 -0
- package/lib/templates/BaseInputTemplate/index.js +3 -0
- package/lib/templates/BaseInputTemplate/index.js.map +1 -0
- package/lib/templates/ButtonTemplates/AddButton.d.ts +6 -0
- package/lib/templates/ButtonTemplates/AddButton.js +15 -0
- package/lib/templates/ButtonTemplates/AddButton.js.map +1 -0
- package/lib/templates/ButtonTemplates/DaisyUIButton.d.ts +18 -0
- package/lib/templates/ButtonTemplates/DaisyUIButton.js +15 -0
- package/lib/templates/ButtonTemplates/DaisyUIButton.js.map +1 -0
- package/lib/templates/ButtonTemplates/IconButton.d.ts +5 -0
- package/lib/templates/ButtonTemplates/IconButton.js +21 -0
- package/lib/templates/ButtonTemplates/IconButton.js.map +1 -0
- package/lib/templates/ButtonTemplates/SubmitButton.d.ts +4 -0
- package/lib/templates/ButtonTemplates/SubmitButton.js +12 -0
- package/lib/templates/ButtonTemplates/SubmitButton.js.map +1 -0
- package/lib/templates/ButtonTemplates/index.d.ts +15 -0
- package/lib/templates/ButtonTemplates/index.js +17 -0
- package/lib/templates/ButtonTemplates/index.js.map +1 -0
- package/lib/templates/DescriptionField/DescriptionField.d.ts +8 -0
- package/lib/templates/DescriptionField/DescriptionField.js +16 -0
- package/lib/templates/DescriptionField/DescriptionField.js.map +1 -0
- package/lib/templates/DescriptionField/index.d.ts +2 -0
- package/lib/templates/DescriptionField/index.js +3 -0
- package/lib/templates/DescriptionField/index.js.map +1 -0
- package/lib/templates/ErrorList/ErrorList.d.ts +7 -0
- package/lib/templates/ErrorList/ErrorList.js +11 -0
- package/lib/templates/ErrorList/ErrorList.js.map +1 -0
- package/lib/templates/ErrorList/index.d.ts +2 -0
- package/lib/templates/ErrorList/index.js +3 -0
- package/lib/templates/ErrorList/index.js.map +1 -0
- package/lib/templates/FieldErrorTemplate/FieldErrorTemplate.d.ts +10 -0
- package/lib/templates/FieldErrorTemplate/FieldErrorTemplate.js +15 -0
- package/lib/templates/FieldErrorTemplate/FieldErrorTemplate.js.map +1 -0
- package/lib/templates/FieldErrorTemplate/index.d.ts +2 -0
- package/lib/templates/FieldErrorTemplate/index.js +3 -0
- package/lib/templates/FieldErrorTemplate/index.js.map +1 -0
- package/lib/templates/FieldHelpTemplate/FieldHelpTemplate.d.ts +11 -0
- package/lib/templates/FieldHelpTemplate/FieldHelpTemplate.js +15 -0
- package/lib/templates/FieldHelpTemplate/FieldHelpTemplate.js.map +1 -0
- package/lib/templates/FieldHelpTemplate/index.d.ts +2 -0
- package/lib/templates/FieldHelpTemplate/index.js +3 -0
- package/lib/templates/FieldHelpTemplate/index.js.map +1 -0
- package/lib/templates/FieldTemplate/FieldTemplate.d.ts +15 -0
- package/lib/templates/FieldTemplate/FieldTemplate.js +23 -0
- package/lib/templates/FieldTemplate/FieldTemplate.js.map +1 -0
- package/lib/templates/FieldTemplate/index.d.ts +2 -0
- package/lib/templates/FieldTemplate/index.js +3 -0
- package/lib/templates/FieldTemplate/index.js.map +1 -0
- package/lib/templates/GridTemplate/GridTemplate.d.ts +7 -0
- package/lib/templates/GridTemplate/GridTemplate.js +16 -0
- package/lib/templates/GridTemplate/GridTemplate.js.map +1 -0
- package/lib/templates/GridTemplate/index.d.ts +2 -0
- package/lib/templates/GridTemplate/index.js +3 -0
- package/lib/templates/GridTemplate/index.js.map +1 -0
- package/lib/templates/ObjectFieldTemplate/ObjectFieldTemplate.d.ts +13 -0
- package/lib/templates/ObjectFieldTemplate/ObjectFieldTemplate.js +25 -0
- package/lib/templates/ObjectFieldTemplate/ObjectFieldTemplate.js.map +1 -0
- package/lib/templates/ObjectFieldTemplate/index.d.ts +2 -0
- package/lib/templates/ObjectFieldTemplate/index.js +3 -0
- package/lib/templates/ObjectFieldTemplate/index.js.map +1 -0
- package/lib/templates/Templates.d.ts +19 -0
- package/lib/templates/Templates.js +56 -0
- package/lib/templates/Templates.js.map +1 -0
- package/lib/templates/TitleField/TitleField.d.ts +13 -0
- package/lib/templates/TitleField/TitleField.js +19 -0
- package/lib/templates/TitleField/TitleField.js.map +1 -0
- package/lib/templates/TitleField/index.d.ts +2 -0
- package/lib/templates/TitleField/index.js +3 -0
- package/lib/templates/TitleField/index.js.map +1 -0
- package/lib/templates/WrapIfAdditionalTemplate/WrapIfAdditionalTemplate.d.ts +7 -0
- package/lib/templates/WrapIfAdditionalTemplate/WrapIfAdditionalTemplate.js +20 -0
- package/lib/templates/WrapIfAdditionalTemplate/WrapIfAdditionalTemplate.js.map +1 -0
- package/lib/templates/WrapIfAdditionalTemplate/index.d.ts +2 -0
- package/lib/templates/WrapIfAdditionalTemplate/index.js +3 -0
- package/lib/templates/WrapIfAdditionalTemplate/index.js.map +1 -0
- package/lib/templates/index.d.ts +19 -0
- package/lib/templates/index.js +20 -0
- package/lib/templates/index.js.map +1 -0
- package/lib/theme/Theme.d.ts +43 -0
- package/lib/theme/Theme.js +68 -0
- package/lib/theme/Theme.js.map +1 -0
- package/lib/theme/index.d.ts +2 -0
- package/lib/theme/index.js +3 -0
- package/lib/theme/index.js.map +1 -0
- package/lib/tsconfig.tsbuildinfo +1 -0
- package/lib/types/DaisyProps.d.ts +5 -0
- package/lib/types/DaisyProps.js +2 -0
- package/lib/types/DaisyProps.js.map +1 -0
- package/lib/utils.d.ts +13 -0
- package/lib/utils.js +5 -0
- package/lib/utils.js.map +1 -0
- package/lib/widgets/AltDateTimeWidget/AltDateTimeWidget.d.ts +6 -0
- package/lib/widgets/AltDateTimeWidget/AltDateTimeWidget.js +10 -0
- package/lib/widgets/AltDateTimeWidget/AltDateTimeWidget.js.map +1 -0
- package/lib/widgets/AltDateTimeWidget/index.d.ts +2 -0
- package/lib/widgets/AltDateTimeWidget/index.js +3 -0
- package/lib/widgets/AltDateTimeWidget/index.js.map +1 -0
- package/lib/widgets/AltDateWidget/AltDateWidget.d.ts +15 -0
- package/lib/widgets/AltDateWidget/AltDateWidget.js +138 -0
- package/lib/widgets/AltDateWidget/AltDateWidget.js.map +1 -0
- package/lib/widgets/AltDateWidget/index.d.ts +2 -0
- package/lib/widgets/AltDateWidget/index.js +3 -0
- package/lib/widgets/AltDateWidget/index.js.map +1 -0
- package/lib/widgets/CheckboxWidget/CheckboxWidget.d.ts +13 -0
- package/lib/widgets/CheckboxWidget/CheckboxWidget.js +43 -0
- package/lib/widgets/CheckboxWidget/CheckboxWidget.js.map +1 -0
- package/lib/widgets/CheckboxWidget/index.d.ts +2 -0
- package/lib/widgets/CheckboxWidget/index.js +3 -0
- package/lib/widgets/CheckboxWidget/index.js.map +1 -0
- package/lib/widgets/CheckboxesWidget/CheckboxesWidget.d.ts +16 -0
- package/lib/widgets/CheckboxesWidget/CheckboxesWidget.js +73 -0
- package/lib/widgets/CheckboxesWidget/CheckboxesWidget.js.map +1 -0
- package/lib/widgets/CheckboxesWidget/index.d.ts +2 -0
- package/lib/widgets/CheckboxesWidget/index.js +3 -0
- package/lib/widgets/CheckboxesWidget/index.js.map +1 -0
- package/lib/widgets/DateTimeWidget/DateTimeWidget.d.ts +14 -0
- package/lib/widgets/DateTimeWidget/DateTimeWidget.js +207 -0
- package/lib/widgets/DateTimeWidget/DateTimeWidget.js.map +1 -0
- package/lib/widgets/DateTimeWidget/index.d.ts +2 -0
- package/lib/widgets/DateTimeWidget/index.js +3 -0
- package/lib/widgets/DateTimeWidget/index.js.map +1 -0
- package/lib/widgets/DateWidget/DateWidget.d.ts +14 -0
- package/lib/widgets/DateWidget/DateWidget.js +274 -0
- package/lib/widgets/DateWidget/DateWidget.js.map +1 -0
- package/lib/widgets/DateWidget/index.d.ts +2 -0
- package/lib/widgets/DateWidget/index.js +3 -0
- package/lib/widgets/DateWidget/index.js.map +1 -0
- package/lib/widgets/FileWidget/FileWidget.d.ts +12 -0
- package/lib/widgets/FileWidget/FileWidget.js +57 -0
- package/lib/widgets/FileWidget/FileWidget.js.map +1 -0
- package/lib/widgets/FileWidget/index.d.ts +2 -0
- package/lib/widgets/FileWidget/index.js +3 -0
- package/lib/widgets/FileWidget/index.js.map +1 -0
- package/lib/widgets/RadioWidget/RadioWidget.d.ts +14 -0
- package/lib/widgets/RadioWidget/RadioWidget.js +67 -0
- package/lib/widgets/RadioWidget/RadioWidget.js.map +1 -0
- package/lib/widgets/RadioWidget/index.d.ts +2 -0
- package/lib/widgets/RadioWidget/index.js +3 -0
- package/lib/widgets/RadioWidget/index.js.map +1 -0
- package/lib/widgets/RangeWidget/RangeWidget.d.ts +13 -0
- package/lib/widgets/RangeWidget/RangeWidget.js +42 -0
- package/lib/widgets/RangeWidget/RangeWidget.js.map +1 -0
- package/lib/widgets/RangeWidget/index.d.ts +2 -0
- package/lib/widgets/RangeWidget/index.js +3 -0
- package/lib/widgets/RangeWidget/index.js.map +1 -0
- package/lib/widgets/RatingWidget/RatingWidget.d.ts +17 -0
- package/lib/widgets/RatingWidget/RatingWidget.js +64 -0
- package/lib/widgets/RatingWidget/RatingWidget.js.map +1 -0
- package/lib/widgets/RatingWidget/index.d.ts +2 -0
- package/lib/widgets/RatingWidget/index.js +3 -0
- package/lib/widgets/RatingWidget/index.js.map +1 -0
- package/lib/widgets/SelectWidget/SelectWidget.d.ts +14 -0
- package/lib/widgets/SelectWidget/SelectWidget.js +74 -0
- package/lib/widgets/SelectWidget/SelectWidget.js.map +1 -0
- package/lib/widgets/SelectWidget/index.d.ts +2 -0
- package/lib/widgets/SelectWidget/index.js +3 -0
- package/lib/widgets/SelectWidget/index.js.map +1 -0
- package/lib/widgets/TextareaWidget/TextareaWidget.d.ts +12 -0
- package/lib/widgets/TextareaWidget/TextareaWidget.js +44 -0
- package/lib/widgets/TextareaWidget/TextareaWidget.js.map +1 -0
- package/lib/widgets/TextareaWidget/index.d.ts +2 -0
- package/lib/widgets/TextareaWidget/index.js +3 -0
- package/lib/widgets/TextareaWidget/index.js.map +1 -0
- package/lib/widgets/TimeWidget/TimeWidget.d.ts +12 -0
- package/lib/widgets/TimeWidget/TimeWidget.js +42 -0
- package/lib/widgets/TimeWidget/TimeWidget.js.map +1 -0
- package/lib/widgets/TimeWidget/index.d.ts +2 -0
- package/lib/widgets/TimeWidget/index.js +3 -0
- package/lib/widgets/TimeWidget/index.js.map +1 -0
- package/lib/widgets/ToggleWidget/ToggleWidget.d.ts +13 -0
- package/lib/widgets/ToggleWidget/ToggleWidget.js +40 -0
- package/lib/widgets/ToggleWidget/ToggleWidget.js.map +1 -0
- package/lib/widgets/ToggleWidget/index.d.ts +2 -0
- package/lib/widgets/ToggleWidget/index.js +3 -0
- package/lib/widgets/ToggleWidget/index.js.map +1 -0
- package/lib/widgets/Widgets.d.ts +18 -0
- package/lib/widgets/Widgets.js +35 -0
- package/lib/widgets/Widgets.js.map +1 -0
- package/lib/widgets/index.d.ts +2 -0
- package/lib/widgets/index.js +3 -0
- package/lib/widgets/index.js.map +1 -0
- package/package.json +95 -0
- package/src/DaisyUIForm.tsx +9 -0
- package/src/DaisyUIFrameProvider.tsx +107 -0
- package/src/daisyForm/DaisyForm.tsx +20 -0
- package/src/daisyForm/index.ts +2 -0
- package/src/index.ts +13 -0
- package/src/styles.css +9 -0
- package/src/templates/ArrayFieldDescriptionTemplate/ArrayFieldDescriptionTemplate.tsx +19 -0
- package/src/templates/ArrayFieldDescriptionTemplate/index.ts +2 -0
- package/src/templates/ArrayFieldItemButtonsTemplate/ArrayFieldItemButtonsTemplate.tsx +89 -0
- package/src/templates/ArrayFieldItemButtonsTemplate/index.ts +2 -0
- package/src/templates/ArrayFieldItemTemplate/ArrayFieldItemTemplate.tsx +55 -0
- package/src/templates/ArrayFieldItemTemplate/index.ts +2 -0
- package/src/templates/ArrayFieldTemplate/ArrayFieldTemplate.tsx +120 -0
- package/src/templates/ArrayFieldTemplate/index.ts +2 -0
- package/src/templates/ArrayFieldTitleTemplate/ArrayFieldTitleTemplate.tsx +15 -0
- package/src/templates/ArrayFieldTitleTemplate/index.ts +2 -0
- package/src/templates/BaseInputTemplate/BaseInputTemplate.tsx +104 -0
- package/src/templates/BaseInputTemplate/index.ts +2 -0
- package/src/templates/ButtonTemplates/AddButton.tsx +38 -0
- package/src/templates/ButtonTemplates/DaisyUIButton.tsx +31 -0
- package/src/templates/ButtonTemplates/IconButton.tsx +62 -0
- package/src/templates/ButtonTemplates/SubmitButton.tsx +25 -0
- package/src/templates/ButtonTemplates/index.ts +19 -0
- package/src/templates/DescriptionField/DescriptionField.tsx +26 -0
- package/src/templates/DescriptionField/index.ts +2 -0
- package/src/templates/ErrorList/ErrorList.tsx +21 -0
- package/src/templates/ErrorList/index.ts +2 -0
- package/src/templates/FieldErrorTemplate/FieldErrorTemplate.tsx +22 -0
- package/src/templates/FieldErrorTemplate/index.ts +2 -0
- package/src/templates/FieldHelpTemplate/FieldHelpTemplate.tsx +23 -0
- package/src/templates/FieldHelpTemplate/index.ts +2 -0
- package/src/templates/FieldTemplate/FieldTemplate.tsx +66 -0
- package/src/templates/FieldTemplate/index.ts +2 -0
- package/src/templates/GridTemplate/GridTemplate.tsx +26 -0
- package/src/templates/GridTemplate/index.ts +2 -0
- package/src/templates/ObjectFieldTemplate/ObjectFieldTemplate.tsx +108 -0
- package/src/templates/ObjectFieldTemplate/index.ts +2 -0
- package/src/templates/Templates.tsx +63 -0
- package/src/templates/TitleField/TitleField.tsx +26 -0
- package/src/templates/TitleField/index.ts +2 -0
- package/src/templates/WrapIfAdditionalTemplate/WrapIfAdditionalTemplate.tsx +74 -0
- package/src/templates/WrapIfAdditionalTemplate/index.ts +2 -0
- package/src/templates/index.ts +22 -0
- package/src/theme/Theme.tsx +93 -0
- package/src/theme/index.ts +2 -0
- package/src/tsconfig.json +26 -0
- package/src/types/DaisyProps.ts +5 -0
- package/src/types.d.ts +4 -0
- package/src/utils.ts +18 -0
- package/src/widgets/AltDateTimeWidget/AltDateTimeWidget.tsx +14 -0
- package/src/widgets/AltDateTimeWidget/index.ts +2 -0
- package/src/widgets/AltDateWidget/AltDateWidget.tsx +328 -0
- package/src/widgets/AltDateWidget/index.ts +2 -0
- package/src/widgets/CheckboxWidget/CheckboxWidget.tsx +108 -0
- package/src/widgets/CheckboxWidget/index.ts +2 -0
- package/src/widgets/CheckboxesWidget/CheckboxesWidget.tsx +124 -0
- package/src/widgets/CheckboxesWidget/index.ts +2 -0
- package/src/widgets/DateTimeWidget/DateTimeWidget.tsx +343 -0
- package/src/widgets/DateTimeWidget/index.ts +2 -0
- package/src/widgets/DateWidget/DateWidget.tsx +393 -0
- package/src/widgets/DateWidget/index.ts +2 -0
- package/src/widgets/FileWidget/FileWidget.tsx +86 -0
- package/src/widgets/FileWidget/index.ts +2 -0
- package/src/widgets/RadioWidget/RadioWidget.tsx +114 -0
- package/src/widgets/RadioWidget/index.ts +2 -0
- package/src/widgets/RangeWidget/RangeWidget.tsx +78 -0
- package/src/widgets/RangeWidget/index.ts +2 -0
- package/src/widgets/RatingWidget/RatingWidget.tsx +120 -0
- package/src/widgets/RatingWidget/index.ts +2 -0
- package/src/widgets/SelectWidget/SelectWidget.tsx +161 -0
- package/src/widgets/SelectWidget/index.ts +2 -0
- package/src/widgets/TextareaWidget/TextareaWidget.tsx +77 -0
- package/src/widgets/TextareaWidget/index.ts +2 -0
- package/src/widgets/TimeWidget/TimeWidget.tsx +72 -0
- package/src/widgets/TimeWidget/index.ts +2 -0
- package/src/widgets/ToggleWidget/ToggleWidget.tsx +70 -0
- package/src/widgets/ToggleWidget/index.ts +2 -0
- package/src/widgets/Widgets.tsx +58 -0
- package/src/widgets/index.ts +2 -0
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { ChangeEvent, FocusEvent, useCallback } from 'react';
|
|
2
|
+
import { FormContextType, RJSFSchema, StrictRJSFSchema, WidgetProps } from '@rjsf/utils';
|
|
3
|
+
|
|
4
|
+
/** The `RatingWidget` component renders a star or heart rating input with DaisyUI styling
|
|
5
|
+
*
|
|
6
|
+
* Features:
|
|
7
|
+
* - Configurable number of stars/hearts (1-5) with default of 5
|
|
8
|
+
* - Supports different shapes (star, heart)
|
|
9
|
+
* - Supports different colors (red, orange, yellow, lime, green, blue, purple, pink)
|
|
10
|
+
* - Supports different sizes (xs, sm, md, lg, xl)
|
|
11
|
+
* - Uses DaisyUI's mask and star/heart styling
|
|
12
|
+
* - Supports minimum and maximum values from schema
|
|
13
|
+
* - Handles required, disabled, and readonly states
|
|
14
|
+
* - Provides focus and blur event handling for accessibility
|
|
15
|
+
* - Uses radio inputs for a11y compatibility
|
|
16
|
+
*
|
|
17
|
+
* @param props - The `WidgetProps` for this component
|
|
18
|
+
*/
|
|
19
|
+
export default function RatingWidget<
|
|
20
|
+
T = any,
|
|
21
|
+
S extends StrictRJSFSchema = RJSFSchema,
|
|
22
|
+
F extends FormContextType = any,
|
|
23
|
+
>({
|
|
24
|
+
id,
|
|
25
|
+
value,
|
|
26
|
+
required,
|
|
27
|
+
disabled,
|
|
28
|
+
readonly,
|
|
29
|
+
autofocus,
|
|
30
|
+
onChange,
|
|
31
|
+
onFocus,
|
|
32
|
+
onBlur,
|
|
33
|
+
schema,
|
|
34
|
+
options,
|
|
35
|
+
}: WidgetProps<T, S, F>) {
|
|
36
|
+
const { stars = 5, shape = 'star', color = 'orange', size = 'md', colorGradient = false } = options;
|
|
37
|
+
|
|
38
|
+
// Use schema.maximum if provided, otherwise use stars option (limited to 1-5)
|
|
39
|
+
const numStars = schema.maximum ? Math.min(schema.maximum, 5) : Math.min(Math.max(stars as number, 1), 5);
|
|
40
|
+
const min = schema.minimum || 0;
|
|
41
|
+
|
|
42
|
+
// Generate shape class
|
|
43
|
+
const maskClass = shape === 'heart' ? 'mask-heart' : 'mask-star-2';
|
|
44
|
+
|
|
45
|
+
// Generate size class
|
|
46
|
+
const sizeClass = size === 'md' ? '' : `rating-${size}`;
|
|
47
|
+
|
|
48
|
+
/** Handles change events from radio inputs */
|
|
49
|
+
const _onChange = useCallback(
|
|
50
|
+
({ target: { value } }: ChangeEvent<HTMLInputElement>) => {
|
|
51
|
+
onChange(parseInt(value));
|
|
52
|
+
},
|
|
53
|
+
[onChange],
|
|
54
|
+
);
|
|
55
|
+
|
|
56
|
+
/** Handles focus events for accessibility */
|
|
57
|
+
const handleFocus = useCallback(
|
|
58
|
+
(event: FocusEvent<HTMLInputElement>) => {
|
|
59
|
+
if (onFocus) {
|
|
60
|
+
const starValue = Number(event.target.value);
|
|
61
|
+
onFocus(id, starValue);
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
[onFocus, id],
|
|
65
|
+
);
|
|
66
|
+
|
|
67
|
+
/** Handles blur events for accessibility */
|
|
68
|
+
const handleBlur = useCallback(
|
|
69
|
+
(event: FocusEvent<HTMLInputElement>) => {
|
|
70
|
+
if (onBlur) {
|
|
71
|
+
const starValue = Number(event.target.value);
|
|
72
|
+
onBlur(id, starValue);
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
[onBlur, id],
|
|
76
|
+
);
|
|
77
|
+
|
|
78
|
+
/** Get color class for a specific star/heart
|
|
79
|
+
*
|
|
80
|
+
* @param index - The index of the star/heart (0-based)
|
|
81
|
+
* @returns The appropriate color class
|
|
82
|
+
*/
|
|
83
|
+
const getColorClass = (index: number): string => {
|
|
84
|
+
if (!colorGradient) {
|
|
85
|
+
return `bg-${color}-400`;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
// For gradient effect, use different colors based on position
|
|
89
|
+
const colors = ['red', 'orange', 'yellow', 'lime', 'green'];
|
|
90
|
+
const colorIdx = Math.min(index, colors.length - 1);
|
|
91
|
+
return `bg-${colors[colorIdx]}-400`;
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
return (
|
|
95
|
+
<div className='form-control w-full'>
|
|
96
|
+
<div className={`rating gap-1 ${sizeClass}`}>
|
|
97
|
+
{[...Array(numStars)].map((_, index) => {
|
|
98
|
+
const starValue = min + index;
|
|
99
|
+
return (
|
|
100
|
+
<input
|
|
101
|
+
key={index}
|
|
102
|
+
type='radio'
|
|
103
|
+
name={id}
|
|
104
|
+
value={starValue}
|
|
105
|
+
checked={value === starValue}
|
|
106
|
+
onChange={_onChange}
|
|
107
|
+
onFocus={handleFocus}
|
|
108
|
+
onBlur={handleBlur}
|
|
109
|
+
className={`mask ${maskClass} ${getColorClass(index)}`}
|
|
110
|
+
disabled={disabled || readonly}
|
|
111
|
+
required={required}
|
|
112
|
+
autoFocus={autofocus && index === 0}
|
|
113
|
+
aria-label={`${starValue} ${shape === 'heart' ? 'heart' : 'star'}${starValue === 1 ? '' : 's'}`}
|
|
114
|
+
/>
|
|
115
|
+
);
|
|
116
|
+
})}
|
|
117
|
+
</div>
|
|
118
|
+
</div>
|
|
119
|
+
);
|
|
120
|
+
}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
import { FocusEvent, useCallback } from 'react';
|
|
2
|
+
import {
|
|
3
|
+
enumOptionsIndexForValue,
|
|
4
|
+
enumOptionsValueForIndex,
|
|
5
|
+
FormContextType,
|
|
6
|
+
RJSFSchema,
|
|
7
|
+
StrictRJSFSchema,
|
|
8
|
+
WidgetProps,
|
|
9
|
+
} from '@rjsf/utils';
|
|
10
|
+
|
|
11
|
+
/** The `SelectWidget` component renders a select input with DaisyUI styling
|
|
12
|
+
*
|
|
13
|
+
* Features:
|
|
14
|
+
* - Supports both single and multiple selection
|
|
15
|
+
* - Handles enumerated objects and primitive values
|
|
16
|
+
* - Uses DaisyUI select styling with proper width
|
|
17
|
+
* - Supports required, disabled, and readonly states
|
|
18
|
+
* - Manages focus and blur events for accessibility
|
|
19
|
+
* - Provides placeholder option when needed
|
|
20
|
+
*
|
|
21
|
+
* @param props - The `WidgetProps` for this component
|
|
22
|
+
*/
|
|
23
|
+
export default function SelectWidget<
|
|
24
|
+
T = any,
|
|
25
|
+
S extends StrictRJSFSchema = RJSFSchema,
|
|
26
|
+
F extends FormContextType = any,
|
|
27
|
+
>({
|
|
28
|
+
schema,
|
|
29
|
+
id,
|
|
30
|
+
options,
|
|
31
|
+
label,
|
|
32
|
+
disabled,
|
|
33
|
+
placeholder,
|
|
34
|
+
readonly,
|
|
35
|
+
value,
|
|
36
|
+
multiple,
|
|
37
|
+
onChange,
|
|
38
|
+
onBlur,
|
|
39
|
+
onFocus,
|
|
40
|
+
}: WidgetProps<T, S, F>) {
|
|
41
|
+
const { enumOptions, emptyValue: optEmptyVal } = options;
|
|
42
|
+
multiple = typeof multiple === 'undefined' ? false : !!multiple;
|
|
43
|
+
|
|
44
|
+
const getDisplayValue = (val: any) => {
|
|
45
|
+
if (!val) {
|
|
46
|
+
return '';
|
|
47
|
+
}
|
|
48
|
+
if (typeof val === 'object') {
|
|
49
|
+
if (val.name) {
|
|
50
|
+
return val.name;
|
|
51
|
+
}
|
|
52
|
+
return val.label || JSON.stringify(val);
|
|
53
|
+
}
|
|
54
|
+
return String(val);
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
const isEnumeratedObject = enumOptions && enumOptions[0]?.value && typeof enumOptions[0].value === 'object';
|
|
58
|
+
|
|
59
|
+
const handleOptionClick = useCallback(
|
|
60
|
+
(event: React.MouseEvent<HTMLLIElement>) => {
|
|
61
|
+
const index = Number(event.currentTarget.dataset.value);
|
|
62
|
+
if (isNaN(index)) {
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
if (multiple) {
|
|
67
|
+
const currentValue = Array.isArray(value) ? value : [];
|
|
68
|
+
const optionValue = isEnumeratedObject
|
|
69
|
+
? enumOptions[index].value
|
|
70
|
+
: enumOptionsValueForIndex<S>(String(index), enumOptions, optEmptyVal);
|
|
71
|
+
const newValue = currentValue.includes(optionValue)
|
|
72
|
+
? currentValue.filter((v) => v !== optionValue)
|
|
73
|
+
: [...currentValue, optionValue];
|
|
74
|
+
onChange(newValue);
|
|
75
|
+
} else {
|
|
76
|
+
onChange(
|
|
77
|
+
isEnumeratedObject
|
|
78
|
+
? enumOptions[index].value
|
|
79
|
+
: enumOptionsValueForIndex<S>(String(index), enumOptions, optEmptyVal),
|
|
80
|
+
);
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
[value, multiple, isEnumeratedObject, enumOptions, optEmptyVal, onChange],
|
|
84
|
+
);
|
|
85
|
+
|
|
86
|
+
const _onBlur = useCallback(
|
|
87
|
+
({ target }: FocusEvent<HTMLDivElement>) => {
|
|
88
|
+
const dataValue = target?.getAttribute('data-value');
|
|
89
|
+
if (dataValue !== null) {
|
|
90
|
+
onBlur(id, enumOptionsValueForIndex<S>(dataValue, enumOptions, optEmptyVal));
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
[onBlur, id, enumOptions, optEmptyVal],
|
|
94
|
+
);
|
|
95
|
+
|
|
96
|
+
const _onFocus = useCallback(
|
|
97
|
+
({ target }: FocusEvent<HTMLDivElement>) => {
|
|
98
|
+
const dataValue = target?.getAttribute('data-value');
|
|
99
|
+
if (dataValue !== null) {
|
|
100
|
+
onFocus(id, enumOptionsValueForIndex<S>(dataValue, enumOptions, optEmptyVal));
|
|
101
|
+
}
|
|
102
|
+
},
|
|
103
|
+
[onFocus, id, enumOptions, optEmptyVal],
|
|
104
|
+
);
|
|
105
|
+
|
|
106
|
+
const selectedIndexes = enumOptionsIndexForValue<S>(value, enumOptions, multiple);
|
|
107
|
+
const selectedValues = Array.isArray(selectedIndexes) ? selectedIndexes : [selectedIndexes];
|
|
108
|
+
|
|
109
|
+
const optionsList =
|
|
110
|
+
enumOptions ||
|
|
111
|
+
(Array.isArray(schema.examples) ? schema.examples.map((example) => ({ value: example, label: example })) : []);
|
|
112
|
+
|
|
113
|
+
return (
|
|
114
|
+
<div className='form-control w-full'>
|
|
115
|
+
<div className='dropdown w-full'>
|
|
116
|
+
<div
|
|
117
|
+
tabIndex={0}
|
|
118
|
+
role='button'
|
|
119
|
+
className={`btn btn-outline w-full text-left flex justify-between items-center ${
|
|
120
|
+
disabled || readonly ? 'btn-disabled' : ''
|
|
121
|
+
}`}
|
|
122
|
+
onBlur={_onBlur}
|
|
123
|
+
onFocus={_onFocus}
|
|
124
|
+
>
|
|
125
|
+
<span className='truncate'>
|
|
126
|
+
{selectedValues.length > 0
|
|
127
|
+
? selectedValues.map((index) => optionsList[Number(index)]?.label).join(', ')
|
|
128
|
+
: placeholder || label || 'Select...'}
|
|
129
|
+
</span>
|
|
130
|
+
<span className='ml-2'>▼</span>
|
|
131
|
+
</div>
|
|
132
|
+
<ul className='dropdown-content z-[1] bg-base-100 w-full max-h-60 overflow-auto rounded-box shadow-lg'>
|
|
133
|
+
{optionsList.map(({ label }, i) => (
|
|
134
|
+
<li
|
|
135
|
+
key={i}
|
|
136
|
+
role='button'
|
|
137
|
+
tabIndex={0}
|
|
138
|
+
className={`px-4 py-2 hover:bg-base-200 cursor-pointer ${
|
|
139
|
+
selectedValues.includes(String(i)) ? 'bg-primary/10' : ''
|
|
140
|
+
}`}
|
|
141
|
+
onClick={handleOptionClick}
|
|
142
|
+
data-value={i}
|
|
143
|
+
>
|
|
144
|
+
<div className='flex items-center gap-2'>
|
|
145
|
+
{multiple && (
|
|
146
|
+
<input
|
|
147
|
+
type='checkbox'
|
|
148
|
+
className='checkbox checkbox-sm'
|
|
149
|
+
checked={selectedValues.includes(String(i))}
|
|
150
|
+
readOnly
|
|
151
|
+
/>
|
|
152
|
+
)}
|
|
153
|
+
<span>{isEnumeratedObject ? label : getDisplayValue(label)}</span>
|
|
154
|
+
</div>
|
|
155
|
+
</li>
|
|
156
|
+
))}
|
|
157
|
+
</ul>
|
|
158
|
+
</div>
|
|
159
|
+
</div>
|
|
160
|
+
);
|
|
161
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { FocusEvent, useCallback } from 'react';
|
|
2
|
+
import { WidgetProps, StrictRJSFSchema, RJSFSchema, FormContextType } from '@rjsf/utils';
|
|
3
|
+
|
|
4
|
+
/** The `TextareaWidget` component renders a multi-line text input with DaisyUI styling
|
|
5
|
+
*
|
|
6
|
+
* Features:
|
|
7
|
+
* - Handles multi-line text input with proper styling
|
|
8
|
+
* - Supports required, disabled, and readonly states
|
|
9
|
+
* - Manages focus and blur events for accessibility
|
|
10
|
+
* - Uses DaisyUI's textarea component for consistent styling
|
|
11
|
+
*
|
|
12
|
+
* @param props - The `WidgetProps` for this component
|
|
13
|
+
*/
|
|
14
|
+
export default function TextareaWidget<
|
|
15
|
+
T = any,
|
|
16
|
+
S extends StrictRJSFSchema = RJSFSchema,
|
|
17
|
+
F extends FormContextType = any,
|
|
18
|
+
>(props: WidgetProps<T, S, F>) {
|
|
19
|
+
const { id, value, required, disabled, readonly, onChange, onFocus, onBlur, options } = props;
|
|
20
|
+
|
|
21
|
+
/** Handle focus events
|
|
22
|
+
*
|
|
23
|
+
* @param event - The focus event
|
|
24
|
+
*/
|
|
25
|
+
const handleFocus = useCallback(
|
|
26
|
+
(event: FocusEvent<HTMLTextAreaElement>) => {
|
|
27
|
+
if (onFocus) {
|
|
28
|
+
onFocus(id, event.target.value);
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
[onFocus, id],
|
|
32
|
+
);
|
|
33
|
+
|
|
34
|
+
/** Handle blur events
|
|
35
|
+
*
|
|
36
|
+
* @param event - The blur event
|
|
37
|
+
*/
|
|
38
|
+
const handleBlur = useCallback(
|
|
39
|
+
(event: FocusEvent<HTMLTextAreaElement>) => {
|
|
40
|
+
if (onBlur) {
|
|
41
|
+
onBlur(id, event.target.value);
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
[onBlur, id],
|
|
45
|
+
);
|
|
46
|
+
|
|
47
|
+
/** Handle change events
|
|
48
|
+
*
|
|
49
|
+
* @param event - The change event
|
|
50
|
+
*/
|
|
51
|
+
const handleChange = useCallback(
|
|
52
|
+
(event: React.ChangeEvent<HTMLTextAreaElement>) => {
|
|
53
|
+
onChange(event.target.value);
|
|
54
|
+
},
|
|
55
|
+
[onChange],
|
|
56
|
+
);
|
|
57
|
+
|
|
58
|
+
// Extract rows and other textarea-specific props from options
|
|
59
|
+
const rows = options?.rows || 5;
|
|
60
|
+
|
|
61
|
+
return (
|
|
62
|
+
<div className='form-control'>
|
|
63
|
+
<textarea
|
|
64
|
+
id={id}
|
|
65
|
+
value={value || ''}
|
|
66
|
+
required={required}
|
|
67
|
+
disabled={disabled || readonly}
|
|
68
|
+
readOnly={readonly}
|
|
69
|
+
rows={rows}
|
|
70
|
+
onChange={handleChange}
|
|
71
|
+
onFocus={handleFocus}
|
|
72
|
+
onBlur={handleBlur}
|
|
73
|
+
className='textarea textarea-bordered w-full'
|
|
74
|
+
/>
|
|
75
|
+
</div>
|
|
76
|
+
);
|
|
77
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { FocusEvent, useCallback } from 'react';
|
|
2
|
+
import { WidgetProps, StrictRJSFSchema, RJSFSchema, FormContextType } from '@rjsf/utils';
|
|
3
|
+
|
|
4
|
+
/** The `TimeWidget` component renders a time input with DaisyUI styling
|
|
5
|
+
*
|
|
6
|
+
* Features:
|
|
7
|
+
* - Provides a time picker with hours and minutes
|
|
8
|
+
* - Handles required, disabled, and readonly states
|
|
9
|
+
* - Manages focus and blur events for accessibility
|
|
10
|
+
* - Uses DaisyUI's input styling with proper width
|
|
11
|
+
*
|
|
12
|
+
* @param props - The `WidgetProps` for this component
|
|
13
|
+
*/
|
|
14
|
+
export default function TimeWidget<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(
|
|
15
|
+
props: WidgetProps<T, S, F>,
|
|
16
|
+
) {
|
|
17
|
+
const { id, value, onChange, onFocus, onBlur, required, disabled, readonly } = props;
|
|
18
|
+
|
|
19
|
+
/** Handle focus events
|
|
20
|
+
*
|
|
21
|
+
* @param event - The focus event
|
|
22
|
+
*/
|
|
23
|
+
const handleFocus = useCallback(
|
|
24
|
+
(event: FocusEvent<HTMLInputElement>) => {
|
|
25
|
+
if (onFocus) {
|
|
26
|
+
onFocus(id, event.target.value);
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
[onFocus, id],
|
|
30
|
+
);
|
|
31
|
+
|
|
32
|
+
/** Handle blur events
|
|
33
|
+
*
|
|
34
|
+
* @param event - The blur event
|
|
35
|
+
*/
|
|
36
|
+
const handleBlur = useCallback(
|
|
37
|
+
(event: FocusEvent<HTMLInputElement>) => {
|
|
38
|
+
if (onBlur) {
|
|
39
|
+
onBlur(id, event.target.value);
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
[onBlur, id],
|
|
43
|
+
);
|
|
44
|
+
|
|
45
|
+
/** Handle change events
|
|
46
|
+
*
|
|
47
|
+
* @param event - The change event
|
|
48
|
+
*/
|
|
49
|
+
const handleChange = useCallback(
|
|
50
|
+
(event: React.ChangeEvent<HTMLInputElement>) => {
|
|
51
|
+
onChange(event.target.value);
|
|
52
|
+
},
|
|
53
|
+
[onChange],
|
|
54
|
+
);
|
|
55
|
+
|
|
56
|
+
return (
|
|
57
|
+
<div className='form-control'>
|
|
58
|
+
<input
|
|
59
|
+
type='time'
|
|
60
|
+
id={id}
|
|
61
|
+
className='input input-bordered w-full'
|
|
62
|
+
value={value || ''}
|
|
63
|
+
required={required}
|
|
64
|
+
disabled={disabled || readonly}
|
|
65
|
+
readOnly={readonly}
|
|
66
|
+
onChange={handleChange}
|
|
67
|
+
onFocus={handleFocus}
|
|
68
|
+
onBlur={handleBlur}
|
|
69
|
+
/>
|
|
70
|
+
</div>
|
|
71
|
+
);
|
|
72
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { ChangeEvent, useCallback } from 'react';
|
|
2
|
+
import { FormContextType, RJSFSchema, StrictRJSFSchema, WidgetProps } from '@rjsf/utils';
|
|
3
|
+
|
|
4
|
+
/** The `ToggleWidget` component renders a toggle switch input with DaisyUI styling
|
|
5
|
+
*
|
|
6
|
+
* Features:
|
|
7
|
+
* - Provides a visual toggle switch rather than a standard checkbox
|
|
8
|
+
* - Supports different sizes through options (sm, md, lg)
|
|
9
|
+
* - Handles required, disabled, and readonly states
|
|
10
|
+
* - Manages focus and blur events for accessibility
|
|
11
|
+
* - Includes an optional label from options
|
|
12
|
+
*
|
|
13
|
+
* @param props - The `WidgetProps` for this component
|
|
14
|
+
*/
|
|
15
|
+
export default function ToggleWidget<
|
|
16
|
+
T = any,
|
|
17
|
+
S extends StrictRJSFSchema = RJSFSchema,
|
|
18
|
+
F extends FormContextType = any,
|
|
19
|
+
>({ id, value, required, disabled, readonly, autofocus, onChange, onFocus, onBlur, options }: WidgetProps<T, S, F>) {
|
|
20
|
+
/** Handle change events from the toggle input
|
|
21
|
+
*
|
|
22
|
+
* @param event - The change event
|
|
23
|
+
*/
|
|
24
|
+
const _onChange = useCallback(
|
|
25
|
+
({ target: { checked } }: ChangeEvent<HTMLInputElement>) => onChange(checked),
|
|
26
|
+
[onChange],
|
|
27
|
+
);
|
|
28
|
+
|
|
29
|
+
/** Handle focus events
|
|
30
|
+
*/
|
|
31
|
+
const handleFocus = useCallback(() => {
|
|
32
|
+
if (onFocus) {
|
|
33
|
+
onFocus(id, value);
|
|
34
|
+
}
|
|
35
|
+
}, [onFocus, id, value]);
|
|
36
|
+
|
|
37
|
+
/** Handle blur events
|
|
38
|
+
*/
|
|
39
|
+
const handleBlur = useCallback(() => {
|
|
40
|
+
if (onBlur) {
|
|
41
|
+
onBlur(id, value);
|
|
42
|
+
}
|
|
43
|
+
}, [onBlur, id, value]);
|
|
44
|
+
|
|
45
|
+
// Get size from options or use default "md"
|
|
46
|
+
const { size = 'md' } = options;
|
|
47
|
+
|
|
48
|
+
// Only add size class if it's not the default size
|
|
49
|
+
const sizeClass = size !== 'md' ? `toggle-${size}` : '';
|
|
50
|
+
|
|
51
|
+
return (
|
|
52
|
+
<div className='form-control'>
|
|
53
|
+
<label className='cursor-pointer label my-auto'>
|
|
54
|
+
<input
|
|
55
|
+
type='checkbox'
|
|
56
|
+
id={id}
|
|
57
|
+
checked={value}
|
|
58
|
+
required={required}
|
|
59
|
+
disabled={disabled || readonly}
|
|
60
|
+
autoFocus={autofocus}
|
|
61
|
+
onChange={_onChange}
|
|
62
|
+
onFocus={handleFocus}
|
|
63
|
+
onBlur={handleBlur}
|
|
64
|
+
className={`toggle ${sizeClass}`}
|
|
65
|
+
/>
|
|
66
|
+
<span className='label-text'>{options.label}</span>
|
|
67
|
+
</label>
|
|
68
|
+
</div>
|
|
69
|
+
);
|
|
70
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { FormContextType, RegistryWidgetsType, RJSFSchema, StrictRJSFSchema } from '@rjsf/utils';
|
|
2
|
+
|
|
3
|
+
import AltDateTimeWidget from './AltDateTimeWidget/AltDateTimeWidget';
|
|
4
|
+
import AltDateWidget from './AltDateWidget/AltDateWidget';
|
|
5
|
+
import CheckboxWidget from './CheckboxWidget/CheckboxWidget';
|
|
6
|
+
import CheckboxesWidget from './CheckboxesWidget/CheckboxesWidget';
|
|
7
|
+
import DateTimeWidget from './DateTimeWidget/DateTimeWidget';
|
|
8
|
+
import DateWidget from './DateWidget/DateWidget';
|
|
9
|
+
import FileWidget from './FileWidget/FileWidget';
|
|
10
|
+
import RadioWidget from './RadioWidget/RadioWidget';
|
|
11
|
+
import RangeWidget from './RangeWidget/RangeWidget';
|
|
12
|
+
import RatingWidget from './RatingWidget/RatingWidget';
|
|
13
|
+
import SelectWidget from './SelectWidget/SelectWidget';
|
|
14
|
+
import TextareaWidget from './TextareaWidget/TextareaWidget';
|
|
15
|
+
import TimeWidget from './TimeWidget/TimeWidget';
|
|
16
|
+
import ToggleWidget from './ToggleWidget/ToggleWidget';
|
|
17
|
+
|
|
18
|
+
export {
|
|
19
|
+
AltDateTimeWidget,
|
|
20
|
+
AltDateWidget,
|
|
21
|
+
CheckboxesWidget,
|
|
22
|
+
CheckboxWidget,
|
|
23
|
+
DateTimeWidget,
|
|
24
|
+
DateWidget,
|
|
25
|
+
FileWidget,
|
|
26
|
+
RadioWidget,
|
|
27
|
+
RangeWidget,
|
|
28
|
+
RatingWidget,
|
|
29
|
+
SelectWidget,
|
|
30
|
+
TextareaWidget,
|
|
31
|
+
TimeWidget,
|
|
32
|
+
ToggleWidget,
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
export function generateWidgets<
|
|
36
|
+
T = any,
|
|
37
|
+
S extends StrictRJSFSchema = RJSFSchema,
|
|
38
|
+
F extends FormContextType = any,
|
|
39
|
+
>(): RegistryWidgetsType<T, S, F> {
|
|
40
|
+
return {
|
|
41
|
+
AltDateTimeWidget,
|
|
42
|
+
AltDateWidget,
|
|
43
|
+
CheckboxesWidget,
|
|
44
|
+
CheckboxWidget,
|
|
45
|
+
DateTimeWidget,
|
|
46
|
+
DateWidget,
|
|
47
|
+
FileWidget,
|
|
48
|
+
RadioWidget,
|
|
49
|
+
RangeWidget,
|
|
50
|
+
RatingWidget,
|
|
51
|
+
SelectWidget,
|
|
52
|
+
TextareaWidget,
|
|
53
|
+
TimeWidget,
|
|
54
|
+
toggle: ToggleWidget,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export default generateWidgets;
|