@x15ventures/x15-ui-library 3.14.0 → 3.15.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/dist/cjs/autoGenerated/libraryThemes.js +12 -12
- package/dist/cjs/autoGenerated/libraryThemes.js.map +1 -1
- package/dist/cjs/autoGenerated/libraryThemes.json +12 -12
- package/dist/cjs/components/design/dialog/Dialog.js +1 -1
- package/dist/cjs/components/design/dialog/Dialog.js.map +1 -1
- package/dist/cjs/components/design/headerBar/HeaderBar.js +3 -1
- package/dist/cjs/components/design/headerBar/HeaderBar.js.map +1 -1
- package/dist/cjs/components/design/headerBar/headerBar.css +6 -1
- package/dist/cjs/components/design/skeleton/Skeleton.js +48 -0
- package/dist/cjs/components/design/skeleton/Skeleton.js.map +1 -0
- package/dist/cjs/components/design/skeleton/_skeletonVariables.css +0 -0
- package/dist/cjs/components/design/skeleton/skeleton.css +86 -0
- package/dist/cjs/components/form/formFields/formFieldWrapper/FormField.js +8 -5
- package/dist/cjs/components/form/formFields/formFieldWrapper/FormField.js.map +1 -1
- package/dist/cjs/components/form/formFields/formFieldWrapper/formFieldProps.js.map +1 -1
- package/dist/cjs/components/form/formFields/subComponents/inputs/autocomplete/Autocomplete.js +15 -11
- package/dist/cjs/components/form/formFields/subComponents/inputs/autocomplete/Autocomplete.js.map +1 -1
- package/dist/cjs/components/form/formFields/subComponents/inputs/checkbox/InputCheckbox.js +37 -15
- package/dist/cjs/components/form/formFields/subComponents/inputs/checkbox/InputCheckbox.js.map +1 -1
- package/dist/cjs/components/form/formFields/subComponents/inputs/checkbox/inputCheckbox.css +4 -4
- package/dist/cjs/components/form/formFields/subComponents/inputs/checkbox/inputCheckboxProps.js.map +1 -1
- package/dist/cjs/components/form/formFields/subComponents/inputs/file/dragAndDrop/DragAndDropFileUpload.js +9 -9
- package/dist/cjs/components/form/formFields/subComponents/inputs/file/dragAndDrop/DragAndDropFileUpload.js.map +1 -1
- package/dist/cjs/components/form/formFields/subComponents/inputs/radio/styled/StyledRadioGroup.js +14 -4
- package/dist/cjs/components/form/formFields/subComponents/inputs/radio/styled/StyledRadioGroup.js.map +1 -1
- package/dist/cjs/components/form/formFields/subComponents/inputs/text/InputText.js +23 -17
- package/dist/cjs/components/form/formFields/subComponents/inputs/text/InputText.js.map +1 -1
- package/dist/cjs/components/form/formFields/subComponents/select/Select.js +6 -5
- package/dist/cjs/components/form/formFields/subComponents/select/Select.js.map +1 -1
- package/dist/cjs/components/form/formFields/subComponents/textarea/Textarea.js +55 -83
- package/dist/cjs/components/form/formFields/subComponents/textarea/Textarea.js.map +1 -1
- package/dist/cjs/components/form/formFields/subComponents/textarea/textarea.css +20 -0
- package/dist/cjs/components/form/hookFormWrapper/HookFormWrapper.js +22 -5
- package/dist/cjs/components/form/hookFormWrapper/HookFormWrapper.js.map +1 -1
- package/dist/cjs/components/form/validation/ValidationMessages.js +36 -38
- package/dist/cjs/components/form/validation/ValidationMessages.js.map +1 -1
- package/dist/cjs/components/index.js +7 -0
- package/dist/cjs/components/index.js.map +1 -1
- package/dist/cjs/exampleUIs/exampleComponents/DemoContactForm.js +1 -2
- package/dist/cjs/exampleUIs/exampleComponents/DemoContactForm.js.map +1 -1
- package/dist/cjs/helpers/index.js +12 -0
- package/dist/cjs/helpers/index.js.map +1 -1
- package/dist/cjs/helpers/stringHelpers.js +48 -2
- package/dist/cjs/helpers/stringHelpers.js.map +1 -1
- package/dist/cjs/index.js +7 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/interfaces/headerText.interface.js.map +1 -1
- package/dist/cjs/package.json +137 -151
- package/dist/cjs/styles/index.css +36 -25
- package/dist/cjs/styles/shared/_allPartials.css +22 -25
- package/dist/cjs/styles/shared/forms/_forms.css +22 -25
- package/dist/cjs/styles/variables/cssVars/_darkModeVariables.css +3 -0
- package/dist/cjs/styles/variables/cssVars/_designVariables.css +11 -0
- package/dist/components/design/dialog/Dialog.d.ts.map +1 -1
- package/dist/components/design/dialog/Dialog.test.d.ts +5 -0
- package/dist/components/design/dialog/Dialog.test.d.ts.map +1 -0
- package/dist/components/design/headerBar/HeaderBar.d.ts.map +1 -1
- package/dist/components/design/skeleton/Skeleton.d.ts +27 -0
- package/dist/components/design/skeleton/Skeleton.d.ts.map +1 -0
- package/dist/components/form/formFields/formFieldWrapper/FormField.d.ts.map +1 -1
- package/dist/components/form/formFields/formFieldWrapper/formFieldProps.d.ts +7 -2
- package/dist/components/form/formFields/formFieldWrapper/formFieldProps.d.ts.map +1 -1
- package/dist/components/form/formFields/subComponents/inputs/autocomplete/Autocomplete.d.ts.map +1 -1
- package/dist/components/form/formFields/subComponents/inputs/checkbox/InputCheckbox.d.ts.map +1 -1
- package/dist/components/form/formFields/subComponents/inputs/checkbox/InputCheckbox.test.d.ts +5 -0
- package/dist/components/form/formFields/subComponents/inputs/checkbox/InputCheckbox.test.d.ts.map +1 -0
- package/dist/components/form/formFields/subComponents/inputs/checkbox/inputCheckboxProps.d.ts +8 -6
- package/dist/components/form/formFields/subComponents/inputs/checkbox/inputCheckboxProps.d.ts.map +1 -1
- package/dist/components/form/formFields/subComponents/inputs/file/dragAndDrop/DragAndDropFileUpload.d.ts.map +1 -1
- package/dist/components/form/formFields/subComponents/inputs/radio/styled/StyledRadioGroup.d.ts.map +1 -1
- package/dist/components/form/formFields/subComponents/inputs/text/InputText.d.ts.map +1 -1
- package/dist/components/form/formFields/subComponents/nestedFormContext.test.d.ts +5 -0
- package/dist/components/form/formFields/subComponents/nestedFormContext.test.d.ts.map +1 -0
- package/dist/components/form/formFields/subComponents/select/Select.d.ts.map +1 -1
- package/dist/components/form/formFields/subComponents/textarea/Textarea.d.ts +4 -3
- package/dist/components/form/formFields/subComponents/textarea/Textarea.d.ts.map +1 -1
- package/dist/components/form/hookFormWrapper/HookFormWrapper.d.ts +3 -0
- package/dist/components/form/hookFormWrapper/HookFormWrapper.d.ts.map +1 -1
- package/dist/components/form/hookFormWrapper/HookFormWrapper.test.d.ts +5 -0
- package/dist/components/form/hookFormWrapper/HookFormWrapper.test.d.ts.map +1 -0
- package/dist/components/form/validation/ValidationMessages.d.ts +8 -1
- package/dist/components/form/validation/ValidationMessages.d.ts.map +1 -1
- package/dist/components/form/validation/ValidationMessages.test.d.ts +5 -0
- package/dist/components/form/validation/ValidationMessages.test.d.ts.map +1 -0
- package/dist/components/index.d.ts +2 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/esm/autoGenerated/libraryThemes.js +12 -12
- package/dist/esm/autoGenerated/libraryThemes.js.map +1 -1
- package/dist/esm/autoGenerated/libraryThemes.json +12 -12
- package/dist/esm/components/design/dialog/Dialog.js +1 -1
- package/dist/esm/components/design/dialog/Dialog.js.map +1 -1
- package/dist/esm/components/design/headerBar/HeaderBar.js +3 -1
- package/dist/esm/components/design/headerBar/HeaderBar.js.map +1 -1
- package/dist/esm/components/design/headerBar/headerBar.css +6 -1
- package/dist/esm/components/design/skeleton/Skeleton.js +40 -0
- package/dist/esm/components/design/skeleton/Skeleton.js.map +1 -0
- package/dist/esm/components/design/skeleton/_skeletonVariables.css +0 -0
- package/dist/esm/components/design/skeleton/skeleton.css +86 -0
- package/dist/esm/components/form/formFields/formFieldWrapper/FormField.js +8 -5
- package/dist/esm/components/form/formFields/formFieldWrapper/FormField.js.map +1 -1
- package/dist/esm/components/form/formFields/formFieldWrapper/formFieldProps.js.map +1 -1
- package/dist/esm/components/form/formFields/subComponents/inputs/autocomplete/Autocomplete.js +16 -12
- package/dist/esm/components/form/formFields/subComponents/inputs/autocomplete/Autocomplete.js.map +1 -1
- package/dist/esm/components/form/formFields/subComponents/inputs/checkbox/InputCheckbox.js +37 -15
- package/dist/esm/components/form/formFields/subComponents/inputs/checkbox/InputCheckbox.js.map +1 -1
- package/dist/esm/components/form/formFields/subComponents/inputs/checkbox/inputCheckbox.css +4 -4
- package/dist/esm/components/form/formFields/subComponents/inputs/checkbox/inputCheckboxProps.js.map +1 -1
- package/dist/esm/components/form/formFields/subComponents/inputs/file/dragAndDrop/DragAndDropFileUpload.js +8 -8
- package/dist/esm/components/form/formFields/subComponents/inputs/file/dragAndDrop/DragAndDropFileUpload.js.map +1 -1
- package/dist/esm/components/form/formFields/subComponents/inputs/radio/styled/StyledRadioGroup.js +16 -6
- package/dist/esm/components/form/formFields/subComponents/inputs/radio/styled/StyledRadioGroup.js.map +1 -1
- package/dist/esm/components/form/formFields/subComponents/inputs/text/InputText.js +23 -17
- package/dist/esm/components/form/formFields/subComponents/inputs/text/InputText.js.map +1 -1
- package/dist/esm/components/form/formFields/subComponents/select/Select.js +6 -5
- package/dist/esm/components/form/formFields/subComponents/select/Select.js.map +1 -1
- package/dist/esm/components/form/formFields/subComponents/textarea/Textarea.js +50 -78
- package/dist/esm/components/form/formFields/subComponents/textarea/Textarea.js.map +1 -1
- package/dist/esm/components/form/formFields/subComponents/textarea/textarea.css +20 -0
- package/dist/esm/components/form/hookFormWrapper/HookFormWrapper.js +22 -5
- package/dist/esm/components/form/hookFormWrapper/HookFormWrapper.js.map +1 -1
- package/dist/esm/components/form/validation/ValidationMessages.js +36 -38
- package/dist/esm/components/form/validation/ValidationMessages.js.map +1 -1
- package/dist/esm/components/index.js +1 -0
- package/dist/esm/components/index.js.map +1 -1
- package/dist/esm/exampleUIs/exampleComponents/DemoContactForm.js +1 -2
- package/dist/esm/exampleUIs/exampleComponents/DemoContactForm.js.map +1 -1
- package/dist/esm/helpers/index.js +1 -1
- package/dist/esm/helpers/index.js.map +1 -1
- package/dist/esm/helpers/stringHelpers.js +44 -0
- package/dist/esm/helpers/stringHelpers.js.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/interfaces/headerText.interface.js.map +1 -1
- package/dist/esm/package.json +137 -151
- package/dist/esm/styles/index.css +36 -25
- package/dist/esm/styles/shared/_allPartials.css +22 -25
- package/dist/esm/styles/shared/forms/_forms.css +22 -25
- package/dist/esm/styles/variables/cssVars/_darkModeVariables.css +3 -0
- package/dist/esm/styles/variables/cssVars/_designVariables.css +11 -0
- package/dist/exampleUIs/exampleComponents/DemoContactForm.d.ts.map +1 -1
- package/dist/helpers/index.d.ts +1 -1
- package/dist/helpers/index.d.ts.map +1 -1
- package/dist/helpers/stringHelpers.d.ts +17 -0
- package/dist/helpers/stringHelpers.d.ts.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/interfaces/headerText.interface.d.ts +1 -0
- package/dist/interfaces/headerText.interface.d.ts.map +1 -1
- package/dist/package.json +137 -151
- package/package.json +137 -151
- package/dist/cjs/components/form/formFields/utilities/formUtilities.js +0 -22
- package/dist/cjs/components/form/formFields/utilities/formUtilities.js.map +0 -1
- package/dist/components/form/formFields/utilities/formUtilities.d.ts +0 -18
- package/dist/components/form/formFields/utilities/formUtilities.d.ts.map +0 -1
- package/dist/esm/components/form/formFields/utilities/formUtilities.js +0 -16
- package/dist/esm/components/form/formFields/utilities/formUtilities.js.map +0 -1
package/dist/cjs/components/form/formFields/subComponents/inputs/autocomplete/Autocomplete.js
CHANGED
|
@@ -30,7 +30,7 @@ const Autocomplete = ({
|
|
|
30
30
|
const [isOpen, setIsOpen] = (0, _react.useState)(false);
|
|
31
31
|
const [filteredOptions, setFilteredOptions] = (0, _react.useState)(field.options || []);
|
|
32
32
|
const [selectedOption, setSelectedOption] = (0, _react.useState)(null);
|
|
33
|
-
const
|
|
33
|
+
const inputElement = (0, _react.useRef)(null);
|
|
34
34
|
(0, _hooks.useOnClickOutside)(wrapperElement, () => setIsOpen(false));
|
|
35
35
|
(0, _hooks.usePopupKeys)(wrapperElement, () => setIsOpen(false));
|
|
36
36
|
const filterOptions = (0, _useDebounce.useDebouncedCallback)(searchTerm => {
|
|
@@ -49,15 +49,20 @@ const Autocomplete = ({
|
|
|
49
49
|
setIsOpen(true);
|
|
50
50
|
onInputChange(searchTerm);
|
|
51
51
|
}, debounceTime);
|
|
52
|
-
const handleInputChange = event => {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
};
|
|
52
|
+
const handleInputChange = (0, _react.useCallback)(event => {
|
|
53
|
+
inputElement.current = event.target;
|
|
54
|
+
filterOptions(event.target.value.toLowerCase());
|
|
55
|
+
}, [filterOptions]);
|
|
57
56
|
const handleOptionSelect = option => {
|
|
58
57
|
const displayValue = typeof option === 'string' ? option : JSON.stringify(option.label);
|
|
59
|
-
|
|
60
|
-
|
|
58
|
+
// The registered input is uncontrolled, so write to both the DOM and form state.
|
|
59
|
+
if (inputElement.current) {
|
|
60
|
+
inputElement.current.value = displayValue;
|
|
61
|
+
}
|
|
62
|
+
setValue(field.name, displayValue, {
|
|
63
|
+
shouldValidate: true,
|
|
64
|
+
shouldDirty: true
|
|
65
|
+
});
|
|
61
66
|
setSelectedOption(option);
|
|
62
67
|
setIsOpen(false);
|
|
63
68
|
onOptionSelect(option);
|
|
@@ -74,8 +79,7 @@ const Autocomplete = ({
|
|
|
74
79
|
'aria-haspopup': 'listbox',
|
|
75
80
|
role: 'combobox',
|
|
76
81
|
onFocus: () => setIsOpen(true),
|
|
77
|
-
onChange: handleInputChange
|
|
78
|
-
defaultValue: inputValue
|
|
82
|
+
onChange: handleInputChange
|
|
79
83
|
},
|
|
80
84
|
label,
|
|
81
85
|
validation,
|
|
@@ -83,7 +87,7 @@ const Autocomplete = ({
|
|
|
83
87
|
customCssClasses,
|
|
84
88
|
customContent
|
|
85
89
|
};
|
|
86
|
-
}, [field, isOpen, optionsContainerId, validation, showSpinner, customCssClasses, customContent, handleInputChange
|
|
90
|
+
}, [field, isOpen, optionsContainerId, label, validation, showSpinner, customCssClasses, customContent, handleInputChange]);
|
|
87
91
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
88
92
|
ref: wrapperElement,
|
|
89
93
|
className: `autocompleteWrapper ${isOpen ? 'open' : 'closed'}`
|
package/dist/cjs/components/form/formFields/subComponents/inputs/autocomplete/Autocomplete.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Autocomplete.js","names":["Object","defineProperty","exports","value","default","Autocomplete","_react","_interopRequireWildcard","require","_reactHookForm","_useDebounce","_hooks","_InputText","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","has","get","set","hasOwnProperty","call","getOwnPropertyDescriptor","field","label","validation","showSpinner","customCssClasses","customContent","onOptionSelect","onInputChange","debounceTime","setValue","useFormContext","wrapperElement","useRef","isOpen","setIsOpen","useState","filteredOptions","setFilteredOptions","options","selectedOption","setSelectedOption","inputValue","setInputValue","useOnClickOutside","usePopupKeys","filterOptions","useDebouncedCallback","searchTerm","matchingOptions","filter","option","toLowerCase","includes","JSON","stringify","handleInputChange","event","newValue","target","handleOptionSelect","displayValue","name","optionsContainerId","id","comboBoxFieldProps","useMemo","type","role","onFocus","onChange","defaultValue","createElement","ref","className","InputText","tabIndex","length","map","optionId","key","onClick","_default"],"sources":["../../../../../../../../src/components/form/formFields/subComponents/inputs/autocomplete/Autocomplete.tsx"],"sourcesContent":["'use client';\n\nimport React, { useState, useRef, useMemo } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { useDebouncedCallback } from 'use-debounce';\nimport { ComboboxOption, FieldProps, FormFieldProps } from '../../../formFieldWrapper/formFieldProps';\nimport { useOnClickOutside, usePopupKeys } from '../../../../../../hooks';\n\nimport { InputText, InputTextProps } from '../text/InputText';\n\nimport './autocomplete.scss';\n\n\nexport interface ComboboxFieldProps extends React.InputHTMLAttributes<HTMLInputElement>, Omit<FormFieldProps, 'field'> {\n field: Omit<FieldProps, 'type' | 'options'> & {\n options?: ComboboxOption[] | string[];\n };\n /* eslint-disable-next-line no-unused-vars */\n onOptionSelect?: (option: ComboboxOption | string) => void;\n /* eslint-disable-next-line no-unused-vars */\n onInputChange?: (inputValue: string) => void;\n debounceTime?: number;\n}\n\nexport const Autocomplete: React.FC<ComboboxFieldProps> = (\n {\n field,\n label,\n validation,\n showSpinner,\n customCssClasses,\n customContent,\n onOptionSelect = () => {},\n onInputChange = () => {},\n debounceTime = 500,\n }\n) => {\n const { setValue } = useFormContext();\n\n const wrapperElement = useRef<HTMLDivElement>(null);\n const [isOpen, setIsOpen] = useState(false);\n const [filteredOptions, setFilteredOptions] = useState<(string | ComboboxOption)[]>(field.options || []);\n const [selectedOption, setSelectedOption] = useState<ComboboxOption | string | null>(null);\n const [inputValue, setInputValue] = useState('');\n\n useOnClickOutside(wrapperElement, () => setIsOpen(false));\n usePopupKeys(wrapperElement, () => setIsOpen(false));\n\n const filterOptions = useDebouncedCallback((searchTerm: string) => {\n const matchingOptions: (string | ComboboxOption)[] = field.options ? field.options.filter((option) => {\n if (typeof option === 'string') {\n return option.toLowerCase().includes(searchTerm);\n }\n if (typeof option.label === 'string') {\n return option.label.toLowerCase().includes(searchTerm);\n }\n // For non-string labels, convert to JSON string and check\n return JSON.stringify(option.label).toLowerCase().includes(searchTerm);\n }) : [];\n setSelectedOption(null);\n setFilteredOptions(matchingOptions);\n setIsOpen(true);\n onInputChange(searchTerm);\n }, debounceTime);\n\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = event.target.value;\n setInputValue(newValue);\n filterOptions(newValue.toLowerCase());\n };\n\n const handleOptionSelect = (option: ComboboxOption | string) => {\n const displayValue = typeof option === 'string' ? option : JSON.stringify(option.label);\n setInputValue(displayValue);\n setValue(field.name, displayValue);\n setSelectedOption(option);\n setIsOpen(false);\n onOptionSelect(option);\n };\n\n const optionsContainerId = `${ field.id || field.name }Options`;\n\n const comboBoxFieldProps: InputTextProps = useMemo(() => {\n return {\n field: {\n ...field,\n type: 'search',\n 'aria-autocomplete': 'both',\n 'aria-expanded': isOpen,\n 'aria-controls': optionsContainerId,\n 'aria-haspopup': 'listbox',\n role: 'combobox',\n onFocus: () => setIsOpen(true),\n onChange: handleInputChange,\n defaultValue: inputValue,\n },\n label,\n validation,\n showSpinner,\n customCssClasses,\n customContent,\n };\n }, [field, isOpen, optionsContainerId, validation, showSpinner, customCssClasses, customContent, handleInputChange, selectedOption]);\n \n return (\n <div ref={ wrapperElement } className={ `autocompleteWrapper ${ isOpen ? 'open' : 'closed' }` }>\n <InputText { ...comboBoxFieldProps } />\n\n {\n isOpen && filteredOptions && (\n <div tabIndex={ -1 } className=\"autocompleteOptions\">\n {\n filteredOptions.length === 0 ?\n (\n <div aria-selected=\"false\" role=\"listbox\" id={ optionsContainerId }>\n No results found\n </div>\n )\n :\n (\n <ul className=\"noBullet\" role=\"listbox\" id={ optionsContainerId }>\n {\n filteredOptions.map((option) => {\n const optionId = `${ optionsContainerId }_${ option }`;\n\n return (\n <li\n key={ optionId }\n aria-selected={ option === selectedOption ? 'true' : 'false' }\n role=\"option\"\n data-option={ option }\n >\n <button className={ option === selectedOption ? 'selected' : '' } type=\"button\" id={ optionId } onClick={ () => handleOptionSelect(option) }>\n { typeof option === 'string' ? option : option.label }\n </button>\n </li>\n );\n })\n }\n </ul>\n )\n }\n </div>\n )\n }\n </div>\n );\n};\n\nexport default Autocomplete;"],"mappings":";AAAA,YAAY;;AAACA,MAAA,CAAAC,cAAA,CAAAC,OAAA;EAAAC,KAAA;AAAA;AAAAD,OAAA,CAAAE,OAAA,GAAAF,OAAA,CAAAG,YAAA;AAEb,IAAAC,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,cAAA,GAAAD,OAAA;AACA,IAAAE,YAAA,GAAAF,OAAA;AAEA,IAAAG,MAAA,GAAAH,OAAA;AAEA,IAAAI,UAAA,GAAAJ,OAAA;AAEAA,OAAA;AAA6B,SAAAD,wBAAAM,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAR,uBAAA,YAAAA,CAAAM,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAlB,OAAA,EAAAS,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAI,GAAA,CAAAV,CAAA,UAAAM,CAAA,CAAAK,GAAA,CAAAX,CAAA,GAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAY,cAAA,CAAAC,IAAA,CAAAd,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAnB,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAA4B,wBAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAI,GAAA,IAAAJ,CAAA,CAAAK,GAAA,IAAAN,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AActB,MAAMT,YAA0C,GAAGA,CACxD;EACEwB,KAAK;EACLC,KAAK;EACLC,UAAU;EACVC,WAAW;EACXC,gBAAgB;EAChBC,aAAa;EACbC,cAAc,GAAGA,CAAA,KAAM,CAAC,CAAC;EACzBC,aAAa,GAAGA,CAAA,KAAM,CAAC,CAAC;EACxBC,YAAY,GAAG;AACjB,CAAC,KACE;EACH,MAAM;IAAEC;EAAS,CAAC,GAAG,IAAAC,6BAAc,EAAC,CAAC;EAErC,MAAMC,cAAc,GAAG,IAAAC,aAAM,EAAiB,IAAI,CAAC;EACnD,MAAM,CAACC,MAAM,EAAEC,SAAS,CAAC,GAAG,IAAAC,eAAQ,EAAC,KAAK,CAAC;EAC3C,MAAM,CAACC,eAAe,EAAEC,kBAAkB,CAAC,GAAG,IAAAF,eAAQ,EAA8Bf,KAAK,CAACkB,OAAO,IAAI,EAAE,CAAC;EACxG,MAAM,CAACC,cAAc,EAAEC,iBAAiB,CAAC,GAAG,IAAAL,eAAQ,EAAiC,IAAI,CAAC;EAC1F,MAAM,CAACM,UAAU,EAAEC,aAAa,CAAC,GAAG,IAAAP,eAAQ,EAAC,EAAE,CAAC;EAEhD,IAAAQ,wBAAiB,EAACZ,cAAc,EAAE,MAAMG,SAAS,CAAC,KAAK,CAAC,CAAC;EACzD,IAAAU,mBAAY,EAACb,cAAc,EAAE,MAAMG,SAAS,CAAC,KAAK,CAAC,CAAC;EAEpD,MAAMW,aAAa,GAAG,IAAAC,iCAAoB,EAAEC,UAAkB,IAAK;IACjE,MAAMC,eAA4C,GAAG5B,KAAK,CAACkB,OAAO,GAAGlB,KAAK,CAACkB,OAAO,CAACW,MAAM,CAAEC,MAAM,IAAK;MACpG,IAAI,OAAOA,MAAM,KAAK,QAAQ,EAAE;QAC9B,OAAOA,MAAM,CAACC,WAAW,CAAC,CAAC,CAACC,QAAQ,CAACL,UAAU,CAAC;MAClD;MACA,IAAI,OAAOG,MAAM,CAAC7B,KAAK,KAAK,QAAQ,EAAE;QACpC,OAAO6B,MAAM,CAAC7B,KAAK,CAAC8B,WAAW,CAAC,CAAC,CAACC,QAAQ,CAACL,UAAU,CAAC;MACxD;MACA;MACA,OAAOM,IAAI,CAACC,SAAS,CAACJ,MAAM,CAAC7B,KAAK,CAAC,CAAC8B,WAAW,CAAC,CAAC,CAACC,QAAQ,CAACL,UAAU,CAAC;IACxE,CAAC,CAAC,GAAG,EAAE;IACPP,iBAAiB,CAAC,IAAI,CAAC;IACvBH,kBAAkB,CAACW,eAAe,CAAC;IACnCd,SAAS,CAAC,IAAI,CAAC;IACfP,aAAa,CAACoB,UAAU,CAAC;EAC3B,CAAC,EAAEnB,YAAY,CAAC;EAEhB,MAAM2B,iBAAiB,GAAIC,KAA0C,IAAK;IACxE,MAAMC,QAAQ,GAAGD,KAAK,CAACE,MAAM,CAAChE,KAAK;IACnCgD,aAAa,CAACe,QAAQ,CAAC;IACvBZ,aAAa,CAACY,QAAQ,CAACN,WAAW,CAAC,CAAC,CAAC;EACvC,CAAC;EAED,MAAMQ,kBAAkB,GAAIT,MAA+B,IAAK;IAC9D,MAAMU,YAAY,GAAG,OAAOV,MAAM,KAAK,QAAQ,GAAGA,MAAM,GAAGG,IAAI,CAACC,SAAS,CAACJ,MAAM,CAAC7B,KAAK,CAAC;IACvFqB,aAAa,CAACkB,YAAY,CAAC;IAC3B/B,QAAQ,CAACT,KAAK,CAACyC,IAAI,EAAED,YAAY,CAAC;IAClCpB,iBAAiB,CAACU,MAAM,CAAC;IACzBhB,SAAS,CAAC,KAAK,CAAC;IAChBR,cAAc,CAACwB,MAAM,CAAC;EACxB,CAAC;EAED,MAAMY,kBAAkB,GAAG,GAAI1C,KAAK,CAAC2C,EAAE,IAAI3C,KAAK,CAACyC,IAAI,SAAU;EAE/D,MAAMG,kBAAkC,GAAG,IAAAC,cAAO,EAAC,MAAM;IACvD,OAAO;MACL7C,KAAK,EAAE;QACL,GAAGA,KAAK;QACR8C,IAAI,EAAE,QAAQ;QACd,mBAAmB,EAAE,MAAM;QAC3B,eAAe,EAAEjC,MAAM;QACvB,eAAe,EAAE6B,kBAAkB;QACnC,eAAe,EAAE,SAAS;QAC1BK,IAAI,EAAE,UAAU;QAChBC,OAAO,EAAEA,CAAA,KAAMlC,SAAS,CAAC,IAAI,CAAC;QAC9BmC,QAAQ,EAAEd,iBAAiB;QAC3Be,YAAY,EAAE7B;MAChB,CAAC;MACDpB,KAAK;MACLC,UAAU;MACVC,WAAW;MACXC,gBAAgB;MAChBC;IACF,CAAC;EACH,CAAC,EAAE,CAACL,KAAK,EAAEa,MAAM,EAAE6B,kBAAkB,EAAExC,UAAU,EAAEC,WAAW,EAAEC,gBAAgB,EAAEC,aAAa,EAAE8B,iBAAiB,EAAEhB,cAAc,CAAC,CAAC;EAEpI,oBACE1C,MAAA,CAAAF,OAAA,CAAA4E,aAAA;IAAKC,GAAG,EAAGzC,cAAgB;IAAC0C,SAAS,EAAG,uBAAwBxC,MAAM,GAAG,MAAM,GAAG,QAAQ;EAAK,gBAC7FpC,MAAA,CAAAF,OAAA,CAAA4E,aAAA,CAACpE,UAAA,CAAAuE,SAAS,EAAMV,kBAAsB,CAAC,EAGrC/B,MAAM,IAAIG,eAAe,iBACvBvC,MAAA,CAAAF,OAAA,CAAA4E,aAAA;IAAKI,QAAQ,EAAG,CAAC,CAAG;IAACF,SAAS,EAAC;EAAqB,GAEhDrC,eAAe,CAACwC,MAAM,KAAK,CAAC,gBAExB/E,MAAA,CAAAF,OAAA,CAAA4E,aAAA;IAAK,iBAAc,OAAO;IAACJ,IAAI,EAAC,SAAS;IAACJ,EAAE,EAAGD;EAAoB,GAAC,kBAE/D,CAAC,gBAINjE,MAAA,CAAAF,OAAA,CAAA4E,aAAA;IAAIE,SAAS,EAAC,UAAU;IAACN,IAAI,EAAC,SAAS;IAACJ,EAAE,EAAGD;EAAoB,GAE7D1B,eAAe,CAACyC,GAAG,CAAE3B,MAAM,IAAK;IAC9B,MAAM4B,QAAQ,GAAG,GAAIhB,kBAAkB,IAAMZ,MAAM,EAAG;IAEtD,oBACErD,MAAA,CAAAF,OAAA,CAAA4E,aAAA;MACEQ,GAAG,EAAGD,QAAU;MAChB,iBAAgB5B,MAAM,KAAKX,cAAc,GAAG,MAAM,GAAG,OAAS;MAC9D4B,IAAI,EAAC,QAAQ;MACb,eAAcjB;IAAQ,gBAEtBrD,MAAA,CAAAF,OAAA,CAAA4E,aAAA;MAAQE,SAAS,EAAGvB,MAAM,KAAKX,cAAc,GAAG,UAAU,GAAG,EAAI;MAAC2B,IAAI,EAAC,QAAQ;MAACH,EAAE,EAAGe,QAAU;MAACE,OAAO,EAAGA,CAAA,KAAMrB,kBAAkB,CAACT,MAAM;IAAG,GACxI,OAAOA,MAAM,KAAK,QAAQ,GAAGA,MAAM,GAAGA,MAAM,CAAC7B,KACzC,CACN,CAAC;EAET,CAAC,CAED,CAGP,CAGN,CAAC;AAEV,CAAC;AAAC5B,OAAA,CAAAG,YAAA,GAAAA,YAAA;AAAA,IAAAqF,QAAA,GAAAxF,OAAA,CAAAE,OAAA,GAEaC,YAAY","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"Autocomplete.js","names":["Object","defineProperty","exports","value","default","Autocomplete","_react","_interopRequireWildcard","require","_reactHookForm","_useDebounce","_hooks","_InputText","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","has","get","set","hasOwnProperty","call","getOwnPropertyDescriptor","field","label","validation","showSpinner","customCssClasses","customContent","onOptionSelect","onInputChange","debounceTime","setValue","useFormContext","wrapperElement","useRef","isOpen","setIsOpen","useState","filteredOptions","setFilteredOptions","options","selectedOption","setSelectedOption","inputElement","useOnClickOutside","usePopupKeys","filterOptions","useDebouncedCallback","searchTerm","matchingOptions","filter","option","toLowerCase","includes","JSON","stringify","handleInputChange","useCallback","event","current","target","handleOptionSelect","displayValue","name","shouldValidate","shouldDirty","optionsContainerId","id","comboBoxFieldProps","useMemo","type","role","onFocus","onChange","createElement","ref","className","InputText","tabIndex","length","map","optionId","key","onClick","_default"],"sources":["../../../../../../../../src/components/form/formFields/subComponents/inputs/autocomplete/Autocomplete.tsx"],"sourcesContent":["'use client';\n\nimport React, { useState, useRef, useMemo, useCallback } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { useDebouncedCallback } from 'use-debounce';\nimport { ComboboxOption, FieldProps, FormFieldProps } from '../../../formFieldWrapper/formFieldProps';\nimport { useOnClickOutside, usePopupKeys } from '../../../../../../hooks';\n\nimport { InputText, InputTextProps } from '../text/InputText';\n\nimport './autocomplete.scss';\n\n\nexport interface ComboboxFieldProps extends React.InputHTMLAttributes<HTMLInputElement>, Omit<FormFieldProps, 'field'> {\n field: Omit<FieldProps, 'type' | 'options'> & {\n options?: ComboboxOption[] | string[];\n };\n /* eslint-disable-next-line no-unused-vars */\n onOptionSelect?: (option: ComboboxOption | string) => void;\n /* eslint-disable-next-line no-unused-vars */\n onInputChange?: (inputValue: string) => void;\n debounceTime?: number;\n}\n\nexport const Autocomplete: React.FC<ComboboxFieldProps> = (\n {\n field,\n label,\n validation,\n showSpinner,\n customCssClasses,\n customContent,\n onOptionSelect = () => {},\n onInputChange = () => {},\n debounceTime = 500,\n }\n) => {\n const { setValue } = useFormContext();\n\n const wrapperElement = useRef<HTMLDivElement>(null);\n const [isOpen, setIsOpen] = useState(false);\n const [filteredOptions, setFilteredOptions] = useState<(string | ComboboxOption)[]>(field.options || []);\n const [selectedOption, setSelectedOption] = useState<ComboboxOption | string | null>(null);\n const inputElement = useRef<HTMLInputElement | null>(null);\n\n useOnClickOutside(wrapperElement, () => setIsOpen(false));\n usePopupKeys(wrapperElement, () => setIsOpen(false));\n\n const filterOptions = useDebouncedCallback((searchTerm: string) => {\n const matchingOptions: (string | ComboboxOption)[] = field.options ? field.options.filter((option) => {\n if (typeof option === 'string') {\n return option.toLowerCase().includes(searchTerm);\n }\n if (typeof option.label === 'string') {\n return option.label.toLowerCase().includes(searchTerm);\n }\n // For non-string labels, convert to JSON string and check\n return JSON.stringify(option.label).toLowerCase().includes(searchTerm);\n }) : [];\n setSelectedOption(null);\n setFilteredOptions(matchingOptions);\n setIsOpen(true);\n onInputChange(searchTerm);\n }, debounceTime);\n\n const handleInputChange = useCallback((event: React.ChangeEvent<HTMLInputElement>) => {\n inputElement.current = event.target;\n filterOptions(event.target.value.toLowerCase());\n }, [filterOptions]);\n\n const handleOptionSelect = (option: ComboboxOption | string) => {\n const displayValue = typeof option === 'string' ? option : JSON.stringify(option.label);\n // The registered input is uncontrolled, so write to both the DOM and form state.\n if (inputElement.current) {\n inputElement.current.value = displayValue;\n }\n setValue(field.name, displayValue, { shouldValidate: true, shouldDirty: true });\n setSelectedOption(option);\n setIsOpen(false);\n onOptionSelect(option);\n };\n\n const optionsContainerId = `${ field.id || field.name }Options`;\n\n const comboBoxFieldProps: InputTextProps = useMemo(() => {\n return {\n field: {\n ...field,\n type: 'search',\n 'aria-autocomplete': 'both',\n 'aria-expanded': isOpen,\n 'aria-controls': optionsContainerId,\n 'aria-haspopup': 'listbox',\n role: 'combobox',\n onFocus: () => setIsOpen(true),\n onChange: handleInputChange,\n },\n label,\n validation,\n showSpinner,\n customCssClasses,\n customContent,\n };\n }, [field, isOpen, optionsContainerId, label, validation, showSpinner, customCssClasses, customContent, handleInputChange]);\n \n return (\n <div ref={ wrapperElement } className={ `autocompleteWrapper ${ isOpen ? 'open' : 'closed' }` }>\n <InputText { ...comboBoxFieldProps } />\n\n {\n isOpen && filteredOptions && (\n <div tabIndex={ -1 } className=\"autocompleteOptions\">\n {\n filteredOptions.length === 0 ?\n (\n <div aria-selected=\"false\" role=\"listbox\" id={ optionsContainerId }>\n No results found\n </div>\n )\n :\n (\n <ul className=\"noBullet\" role=\"listbox\" id={ optionsContainerId }>\n {\n filteredOptions.map((option) => {\n const optionId = `${ optionsContainerId }_${ option }`;\n\n return (\n <li\n key={ optionId }\n aria-selected={ option === selectedOption ? 'true' : 'false' }\n role=\"option\"\n data-option={ option }\n >\n <button className={ option === selectedOption ? 'selected' : '' } type=\"button\" id={ optionId } onClick={ () => handleOptionSelect(option) }>\n { typeof option === 'string' ? option : option.label }\n </button>\n </li>\n );\n })\n }\n </ul>\n )\n }\n </div>\n )\n }\n </div>\n );\n};\n\nexport default Autocomplete;"],"mappings":"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","ignoreList":[]}
|
|
@@ -7,7 +7,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports.InputCheckbox = exports.CheckboxInput = void 0;
|
|
8
8
|
var _react = _interopRequireWildcard(require("react"));
|
|
9
9
|
var _reactHookForm = require("react-hook-form");
|
|
10
|
-
var _formUtilities = require("../../../utilities/formUtilities");
|
|
11
10
|
var _HookFormWrapper = require("../../../../hookFormWrapper/HookFormWrapper");
|
|
12
11
|
var _FormFieldLabel = require("../../labels/FormFieldLabel");
|
|
13
12
|
var _ValidationMessages = require("../../../../validation/ValidationMessages");
|
|
@@ -15,11 +14,16 @@ var _Spinner = require("../../../../../design/spinner/Spinner");
|
|
|
15
14
|
var _Icon = require("../../../../../design/icons/basicIcon/Icon");
|
|
16
15
|
require("./inputCheckbox.css");
|
|
17
16
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
18
|
-
const InputCheckbox = ({
|
|
17
|
+
const InputCheckbox = props => /*#__PURE__*/_react.default.createElement(_HookFormWrapper.HookFormWrapper, {
|
|
18
|
+
formContext: props.formContext
|
|
19
|
+
}, /*#__PURE__*/_react.default.createElement(InputCheckboxField, props));
|
|
20
|
+
exports.InputCheckbox = InputCheckbox;
|
|
21
|
+
const InputCheckboxField = ({
|
|
19
22
|
label,
|
|
20
23
|
field: {
|
|
21
24
|
id,
|
|
22
25
|
name,
|
|
26
|
+
value,
|
|
23
27
|
defaultChecked,
|
|
24
28
|
onBlur = () => {},
|
|
25
29
|
onChange = () => {},
|
|
@@ -27,16 +31,27 @@ const InputCheckbox = ({
|
|
|
27
31
|
},
|
|
28
32
|
validation,
|
|
29
33
|
showSpinner,
|
|
34
|
+
icons,
|
|
30
35
|
customCssClasses,
|
|
31
36
|
customContent
|
|
32
37
|
}) => {
|
|
33
38
|
const [isTouched, setIsTouched] = (0, _react.useState)(false);
|
|
34
39
|
const {
|
|
35
40
|
register,
|
|
36
|
-
getFieldState
|
|
37
|
-
|
|
38
|
-
;
|
|
41
|
+
getFieldState,
|
|
42
|
+
setValue
|
|
43
|
+
} = (0, _reactHookForm.useFormContext)();
|
|
39
44
|
const fieldState = getFieldState(name);
|
|
45
|
+
|
|
46
|
+
// Initialize the form value with defaultChecked on mount
|
|
47
|
+
(0, _react.useEffect)(() => {
|
|
48
|
+
if (defaultChecked) {
|
|
49
|
+
setValue(name, true, {
|
|
50
|
+
shouldValidate: false,
|
|
51
|
+
shouldDirty: false
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
}, [name, setValue, defaultChecked, value]);
|
|
40
55
|
const wrapperCssClass = `formField checkBoxField ${customCssClasses?.wrapper || ''} ${isTouched ? 'touched' : ''}`;
|
|
41
56
|
const inputCssClass = `${customCssClasses?.input || ''}${fieldState?.invalid ? ' invalidField' : ''}`;
|
|
42
57
|
const isRequired = validation && typeof validation.required !== 'undefined';
|
|
@@ -56,19 +71,26 @@ const InputCheckbox = ({
|
|
|
56
71
|
isRequired,
|
|
57
72
|
customContent
|
|
58
73
|
};
|
|
74
|
+
const checkedIcon = icons?.checked ?? /*#__PURE__*/_react.default.createElement(_Icon.Icon, {
|
|
75
|
+
icon: "checkbox-checked"
|
|
76
|
+
});
|
|
77
|
+
const uncheckedIcon = icons?.unchecked ?? /*#__PURE__*/_react.default.createElement(_Icon.Icon, {
|
|
78
|
+
icon: "checkbox-unchecked"
|
|
79
|
+
});
|
|
59
80
|
const inputProps = {
|
|
60
81
|
type: 'checkbox',
|
|
61
82
|
id,
|
|
83
|
+
value: String(value),
|
|
62
84
|
className: inputCssClass,
|
|
63
|
-
defaultChecked,
|
|
64
85
|
'aria-required': isRequired,
|
|
65
86
|
...register(name, {
|
|
66
87
|
onChange,
|
|
67
88
|
onBlur: HandleOnBlur,
|
|
89
|
+
value: defaultChecked ? true : value,
|
|
68
90
|
...validation
|
|
69
91
|
})
|
|
70
92
|
};
|
|
71
|
-
return /*#__PURE__*/_react.default.createElement(
|
|
93
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
72
94
|
className: wrapperCssClass
|
|
73
95
|
}, /*#__PURE__*/_react.default.createElement("label", {
|
|
74
96
|
id: label.labelId || `${id}_label`,
|
|
@@ -77,17 +99,17 @@ const InputCheckbox = ({
|
|
|
77
99
|
}, label.position === 'left' && /*#__PURE__*/_react.default.createElement(_FormFieldLabel.FormFieldLabel, labelProps), /*#__PURE__*/_react.default.createElement("div", {
|
|
78
100
|
className: "inputContainer"
|
|
79
101
|
}, /*#__PURE__*/_react.default.createElement("input", inputProps), /*#__PURE__*/_react.default.createElement("span", {
|
|
80
|
-
className: "checkboxIcons"
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
102
|
+
className: "checkboxIcons",
|
|
103
|
+
"aria-hidden": "true"
|
|
104
|
+
}, /*#__PURE__*/_react.default.createElement("span", {
|
|
105
|
+
className: "checkboxIcon checkboxIconUnchecked"
|
|
106
|
+
}, uncheckedIcon), /*#__PURE__*/_react.default.createElement("span", {
|
|
107
|
+
className: "checkboxIcon checkboxIconChecked"
|
|
108
|
+
}, checkedIcon))), (!label?.position || label?.position === 'right') && /*#__PURE__*/_react.default.createElement(_FormFieldLabel.FormFieldLabel, labelProps), showSpinner && /*#__PURE__*/_react.default.createElement(_Spinner.Spinner, null), /*#__PURE__*/_react.default.createElement(_ValidationMessages.ValidationMessages, {
|
|
86
109
|
name: name,
|
|
87
110
|
validation: validation
|
|
88
|
-
})))
|
|
111
|
+
})));
|
|
89
112
|
};
|
|
90
|
-
exports.InputCheckbox = InputCheckbox;
|
|
91
113
|
const CheckboxInput = props => /*#__PURE__*/_react.default.createElement(InputCheckbox, props);
|
|
92
114
|
exports.CheckboxInput = CheckboxInput;
|
|
93
115
|
//# sourceMappingURL=InputCheckbox.js.map
|
package/dist/cjs/components/form/formFields/subComponents/inputs/checkbox/InputCheckbox.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InputCheckbox.js","names":["Object","defineProperty","exports","value","InputCheckbox","CheckboxInput","_react","_interopRequireWildcard","require","_reactHookForm","
|
|
1
|
+
{"version":3,"file":"InputCheckbox.js","names":["Object","defineProperty","exports","value","InputCheckbox","CheckboxInput","_react","_interopRequireWildcard","require","_reactHookForm","_HookFormWrapper","_FormFieldLabel","_ValidationMessages","_Spinner","_Icon","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","getOwnPropertyDescriptor","props","createElement","HookFormWrapper","formContext","InputCheckboxField","label","field","id","name","defaultChecked","onBlur","onChange","onTouched","validation","showSpinner","icons","customCssClasses","customContent","isTouched","setIsTouched","useState","register","getFieldState","setValue","useFormContext","fieldState","useEffect","shouldValidate","shouldDirty","wrapperCssClass","wrapper","inputCssClass","input","invalid","isRequired","required","HandleOnBlur","event","target","labelProps","inputId","checkedIcon","checked","Icon","icon","uncheckedIcon","unchecked","inputProps","type","String","className","labelId","htmlFor","position","FormFieldLabel","Spinner","ValidationMessages"],"sources":["../../../../../../../../src/components/form/formFields/subComponents/inputs/checkbox/InputCheckbox.tsx"],"sourcesContent":["'use client';\n\nimport React, { useEffect, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { HookFormWrapper } from '../../../../hookFormWrapper/HookFormWrapper';\nimport { FormFieldLabel } from '../../labels/FormFieldLabel';\nimport { ValidationMessages } from '../../../../validation/ValidationMessages';\nimport { Spinner } from '../../../../../design/spinner/Spinner';\nimport { Icon } from '../../../../../design/icons/basicIcon/Icon';\n\nimport { InputCheckboxProps } from './inputCheckboxProps';\n\nimport './inputCheckbox.scss';\n\nexport const InputCheckbox: React.FC<InputCheckboxProps> = (props) => (\n <HookFormWrapper formContext={ props.formContext }>\n <InputCheckboxField { ...props } />\n </HookFormWrapper>\n);\n\nconst InputCheckboxField: React.FC<InputCheckboxProps> = (\n {\n label,\n field: {\n id,\n name,\n value,\n defaultChecked,\n onBlur = () => {},\n onChange = () => {},\n onTouched = () => {}\n },\n validation,\n showSpinner,\n icons,\n customCssClasses,\n customContent\n }\n) => {\n const [isTouched, setIsTouched] = useState(false);\n const { register, getFieldState, setValue } = useFormContext();\n const fieldState = getFieldState(name);\n\n // Initialize the form value with defaultChecked on mount\n useEffect(() => {\n if (defaultChecked) {\n setValue(name, true, { shouldValidate: false, shouldDirty: false });\n }\n }, [name, setValue, defaultChecked, value]);\n\n const wrapperCssClass = `formField checkBoxField ${ customCssClasses?.wrapper || '' } ${ isTouched ? 'touched' : '' }`;\n\n const inputCssClass = `${ customCssClasses?.input || '' }${ fieldState?.invalid ? ' invalidField' : '' }`;\n\n const isRequired = validation && typeof validation.required !== 'undefined';\n\n const HandleOnBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n const { target } = event;\n setIsTouched(true);\n if (target) {\n onTouched();\n onBlur(event);\n }\n };\n\n const labelProps = {\n ...label,\n inputId: id,\n isRequired,\n customContent\n };\n\n const checkedIcon = icons?.checked ?? <Icon icon=\"checkbox-checked\" />;\n const uncheckedIcon = icons?.unchecked ?? <Icon icon=\"checkbox-unchecked\" />;\n\n const inputProps = {\n type: 'checkbox',\n id,\n value: String(value),\n className: inputCssClass,\n 'aria-required': isRequired,\n ...register(\n name,\n {\n onChange,\n onBlur: HandleOnBlur,\n value: defaultChecked ? true : value,\n ...validation\n }\n )\n };\n\n return (\n <div\n className={ wrapperCssClass }\n >\n <label\n id={ label.labelId || `${ id }_label` }\n className={ `${ customCssClasses?.label || '' } ${ showSpinner ? 'withSpinner' : '' }` }\n htmlFor={ id }\n >\n\n { label.position === 'left'\n && <FormFieldLabel { ...labelProps } /> }\n\n <div className=\"inputContainer\">\n <input { ...inputProps } />\n { /* The input conveys the checked state, so the icons are decorative. */ }\n <span className=\"checkboxIcons\" aria-hidden=\"true\">\n <span className=\"checkboxIcon checkboxIconUnchecked\">{ uncheckedIcon }</span>\n <span className=\"checkboxIcon checkboxIconChecked\">{ checkedIcon }</span>\n </span>\n </div>\n\n { (!label?.position || label?.position === 'right')\n && <FormFieldLabel { ...labelProps } /> }\n\n {\n showSpinner && <Spinner />\n }\n\n <ValidationMessages name={ name } validation={ validation } />\n </label>\n </div>\n );\n};\n\nexport const CheckboxInput: React.FC<InputCheckboxProps> = (props) => <InputCheckbox { ...props } />;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -28,15 +28,15 @@
|
|
|
28
28
|
.checkBoxField .inputContainer input[type=checkbox] ~ .checkboxIcons .icon {
|
|
29
29
|
font-size: 24px;
|
|
30
30
|
}
|
|
31
|
-
.checkBoxField .inputContainer input[type=checkbox] ~ .checkboxIcons .
|
|
31
|
+
.checkBoxField .inputContainer input[type=checkbox] ~ .checkboxIcons .checkboxIconUnchecked {
|
|
32
32
|
display: block;
|
|
33
33
|
}
|
|
34
|
-
.checkBoxField .inputContainer input[type=checkbox] ~ .checkboxIcons .
|
|
34
|
+
.checkBoxField .inputContainer input[type=checkbox] ~ .checkboxIcons .checkboxIconChecked {
|
|
35
35
|
display: none;
|
|
36
36
|
}
|
|
37
|
-
.checkBoxField .inputContainer input[type=checkbox][checked] ~ .checkboxIcons .
|
|
37
|
+
.checkBoxField .inputContainer input[type=checkbox][checked] ~ .checkboxIcons .checkboxIconUnchecked, .checkBoxField .inputContainer input[type=checkbox]:checked ~ .checkboxIcons .checkboxIconUnchecked {
|
|
38
38
|
display: none;
|
|
39
39
|
}
|
|
40
|
-
.checkBoxField .inputContainer input[type=checkbox][checked] ~ .checkboxIcons .
|
|
40
|
+
.checkBoxField .inputContainer input[type=checkbox][checked] ~ .checkboxIcons .checkboxIconChecked, .checkBoxField .inputContainer input[type=checkbox]:checked ~ .checkboxIcons .checkboxIconChecked {
|
|
41
41
|
display: block;
|
|
42
42
|
}
|
package/dist/cjs/components/form/formFields/subComponents/inputs/checkbox/inputCheckboxProps.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inputCheckboxProps.js","names":[],"sources":["../../../../../../../../src/components/form/formFields/subComponents/inputs/checkbox/inputCheckboxProps.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"inputCheckboxProps.js","names":[],"sources":["../../../../../../../../src/components/form/formFields/subComponents/inputs/checkbox/inputCheckboxProps.ts"],"sourcesContent":["import { ReactElement, ReactNode } from 'react';\nimport {\n CustomContentProps,\n CustomFieldCssClassesProps,\n FieldProps,\n FormFieldProps,\n LabelProps,\n ValidationProps\n} from '../../../formFieldWrapper/formFieldProps';\n\nexport interface InputCheckboxLabelProps extends Omit<LabelProps, 'hide' | 'position'> {\n position?: 'left' | 'right';\n}\n\nexport interface InputCheckboxIconsProps {\n checked: string | ReactNode | ReactElement;\n unchecked: string | ReactNode | ReactElement;\n}\n\nexport interface InputCheckboxFieldProps extends Omit<FieldProps, 'type' | 'placeholder' | 'value' | 'defaultValue' | 'referenceDate' | 'includeEmptyOption' | 'options'> {\n value: boolean | string;\n defaultChecked?: boolean;\n defaultValue?: boolean | string | number | readonly string[];\n}\n\nexport interface InputCheckboxValidationProps<TFieldValue = unknown, TFormValues = unknown>\n extends Omit<ValidationProps<TFieldValue, TFormValues>, 'validate'> {\n}\n\nexport interface InputCheckboxProps extends Omit<FormFieldProps, 'label' | 'field' | 'layout' | 'validation'> {\n label: InputCheckboxLabelProps,\n field: InputCheckboxFieldProps,\n validation?: InputCheckboxValidationProps;\n showSpinner?: boolean;\n icons?: InputCheckboxIconsProps;\n customCssClasses?: CustomFieldCssClassesProps;\n customContent?: CustomContentProps;\n}\n"],"mappings":"","ignoreList":[]}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
'use client';
|
|
3
3
|
|
|
4
|
-
/* eslint-disable no-unused-vars */
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
@@ -15,13 +14,16 @@ var _Spinner = require("../../../../../../design/spinner/Spinner");
|
|
|
15
14
|
var _FormFieldLabel = require("../../../../subComponents/labels/FormFieldLabel");
|
|
16
15
|
var _InputFile = require("../../../../subComponents/inputs/file/InputFile");
|
|
17
16
|
var _ValidationMessages = require("../../../../../validation/ValidationMessages");
|
|
18
|
-
var _formUtilities = require("../../../../utilities/formUtilities");
|
|
19
17
|
var _button = require("../../../../../buttons/button.helpers");
|
|
20
18
|
var _FileAttachmentsList = require("../fileAttachmentList/FileAttachmentsList");
|
|
21
19
|
var _constants = require("../../../../../../../constants");
|
|
22
20
|
require("./dragAndDropFileUpload.css");
|
|
23
21
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
24
|
-
const DragAndDropFileUpload = ({
|
|
22
|
+
const DragAndDropFileUpload = props => /*#__PURE__*/_react.default.createElement(_HookFormWrapper.HookFormWrapper, {
|
|
23
|
+
formContext: props.formContext
|
|
24
|
+
}, /*#__PURE__*/_react.default.createElement(DragAndDropFileUploadField, props));
|
|
25
|
+
exports.DragAndDropFileUpload = DragAndDropFileUpload;
|
|
26
|
+
const DragAndDropFileUploadField = ({
|
|
25
27
|
label,
|
|
26
28
|
field,
|
|
27
29
|
showSpinner,
|
|
@@ -51,9 +53,8 @@ const DragAndDropFileUpload = ({
|
|
|
51
53
|
}) => {
|
|
52
54
|
const {
|
|
53
55
|
setValue,
|
|
54
|
-
trigger
|
|
55
|
-
|
|
56
|
-
} = (0, _reactHookForm.useFormContext)() || _formUtilities.NoHookFormContext;
|
|
56
|
+
trigger
|
|
57
|
+
} = (0, _reactHookForm.useFormContext)();
|
|
57
58
|
const [activeFileList, setFileList] = (0, _react.useState)(fileList || []);
|
|
58
59
|
const [isTouched, setIsTouched] = (0, _react.useState)(false);
|
|
59
60
|
const [isDragActive, setIsDragActive] = (0, _react.useState)(false);
|
|
@@ -150,7 +151,7 @@ const DragAndDropFileUpload = ({
|
|
|
150
151
|
${showSpinner ? 'withSpinner' : ''}
|
|
151
152
|
${label.hide ? 'hiddenLabel' : ''}
|
|
152
153
|
`;
|
|
153
|
-
return /*#__PURE__*/_react.default.createElement(
|
|
154
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
154
155
|
className: wrapperCssClass,
|
|
155
156
|
onDragOver: e => {
|
|
156
157
|
e.preventDefault();
|
|
@@ -209,9 +210,8 @@ const DragAndDropFileUpload = ({
|
|
|
209
210
|
files: activeFileList,
|
|
210
211
|
onFilesRemoved: handleFilesEdited,
|
|
211
212
|
onFilesEdited: handleFilesEdited
|
|
212
|
-
}))
|
|
213
|
+
}));
|
|
213
214
|
};
|
|
214
|
-
exports.DragAndDropFileUpload = DragAndDropFileUpload;
|
|
215
215
|
var _default = exports.default = {
|
|
216
216
|
DragAndDropFileUpload
|
|
217
217
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DragAndDropFileUpload.js","names":["Object","defineProperty","exports","value","default","DragAndDropFileUpload","_react","_interopRequireWildcard","require","_iconDefinitions","_SvgIcon","_reactHookForm","_HookFormWrapper","_Spinner","_FormFieldLabel","_InputFile","_ValidationMessages","_formUtilities","_button","_FileAttachmentsList","_constants","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","has","get","set","hasOwnProperty","call","getOwnPropertyDescriptor","label","field","showSpinner","fileDisplayStyle","fileListSettings","fileList","validation","customContent","customCssClasses","labelStyle","labelAsButtonStyles","color","variant","labelUploadIcon","createElement","SvgIcon","svgDefinition","arrowUpFromBracket","multiple","restrictionsTxt","validFiles","extensions","DEFAULT_UPLOAD_FILE_EXTENSIONS","fileTypes","DEFAULT_UPLOAD_FILE_TYPES","maxFileCount","maxFileSize","onFilesChange","setValue","trigger","setError","useFormContext","NoHookFormContext","activeFileList","setFileList","useState","isTouched","setIsTouched","isDragActive","setIsDragActive","inputId","id","inputElRef","useRef","dialogOpenRef","useEffect","current","document","getElementById","onFocus","noneSelected","files","length","name","window","addEventListener","removeEventListener","supportedFileTypes","useMemo","join","validateAndCommit","useCallback","validated","filter","file","ext","split","pop","toLowerCase","isBlacklisted","BLACKLISTED_FILE_TYPES","includes","isValidExt","isValidSize","size","clipped","slice","shouldValidate","shouldDirty","shouldTouch","handleFileInputChange","event","target","Array","from","handleDrop","dropped","handleFilesEdited","wrapperCssClass","wrapper","position","labelProps","isRequired","required","labelStyleAsButtonClasses","generateButtonClass","cssClass","buttonStyle","hideLabel","hide","labelCssClass","HookFormWrapper","className","onDragOver","preventDefault","onDragLeave","currentTarget","onDrop","dataTransfer","labelId","htmlFor","onClick","FormFieldLabel","InputFile","type","defaultValue","accept","onInput","Spinner","map","index","key","ValidationMessages","FileAttachmentsList","customFileListSettings","onFilesRemoved","onFilesEdited","_default"],"sources":["../../../../../../../../../src/components/form/formFields/subComponents/inputs/file/dragAndDrop/DragAndDropFileUpload.tsx"],"sourcesContent":["'use client';\n\n/* eslint-disable no-unused-vars */\nimport React, { FormEvent, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { arrowUpFromBracket } from '@x15ventures/x15-ui-library-icons/iconDefinitions';\nimport { SvgIcon } from '@x15ventures/x15-ui-library-icons/svgIcon/SvgIcon';\nimport { useFormContext } from 'react-hook-form';\nimport { HookFormWrapper } from '../../../../../hookFormWrapper/HookFormWrapper';\nimport { Spinner } from '../../../../../../design/spinner/Spinner';\nimport { FormFieldLabel } from '../../../../subComponents/labels/FormFieldLabel';\nimport { InputFile } from '../../../../subComponents/inputs/file/InputFile';\nimport { ValidationMessages } from '../../../../../validation/ValidationMessages';\nimport { NoHookFormContext } from '../../../../utilities/formUtilities';\nimport { generateButtonClass } from '../../../../../buttons/button.helpers';\nimport { FileAttachmentsList } from '../fileAttachmentList/FileAttachmentsList';\nimport { DragAndDropFileUploadProps } from '../fileInputProps';\nimport {\n DEFAULT_UPLOAD_FILE_EXTENSIONS,\n DEFAULT_UPLOAD_FILE_TYPES,\n BLACKLISTED_FILE_TYPES\n} from '../../../../../../../constants';\n\nimport './dragAndDropFileUpload.scss';\n\nexport const DragAndDropFileUpload: React.FC<DragAndDropFileUploadProps> = (\n {\n label,\n field,\n showSpinner,\n fileDisplayStyle = 'names',\n fileListSettings,\n fileList,\n validation,\n customContent,\n customCssClasses,\n labelStyle = 'dragArea',\n labelAsButtonStyles = { color: 'primary', variant: 'outline' },\n labelUploadIcon = <SvgIcon svgDefinition={ arrowUpFromBracket } />,\n multiple = false,\n restrictionsTxt = '',\n validFiles = {\n extensions: DEFAULT_UPLOAD_FILE_EXTENSIONS,\n fileTypes: DEFAULT_UPLOAD_FILE_TYPES,\n maxFileCount: 5,\n maxFileSize: 52428800 // 50 MB\n },\n onFilesChange = () => {}\n }\n) => {\n const { setValue, trigger, setError } = useFormContext() || NoHookFormContext;\n\n const [activeFileList, setFileList] = useState<File[]>(fileList || []);\n const [isTouched, setIsTouched] = useState(false);\n const [isDragActive, setIsDragActive] = useState(false);\n\n const inputId = field.id;\n const inputElRef = useRef<HTMLInputElement | null>(null);\n const dialogOpenRef = useRef(false);\n\n useEffect(() => {\n inputElRef.current = document.getElementById(inputId) as HTMLInputElement | null;\n }, [inputId]);\n\n // Detect “Cancel” -> dialog closes, window regains focus, but input had no change.\n useEffect(() => {\n const onFocus = () => {\n if (!dialogOpenRef.current) { return; }\n dialogOpenRef.current = false;\n const noneSelected = !inputElRef.current?.files?.length;\n if (noneSelected) {\n // Trigger React Hook Form validators (e.g., required)\n trigger(field.name);\n }\n };\n window.addEventListener('focus', onFocus);\n return () => window.removeEventListener('focus', onFocus);\n }, [trigger, field.name]);\n\n const supportedFileTypes = useMemo(\n () => validFiles?.fileTypes?.join(', ') || '',\n [validFiles?.fileTypes]\n );\n\n const validateAndCommit = useCallback(\n (files: File[]) => {\n // basic validations\n const validated = files.filter((file) => {\n const ext = file.name.split('.').pop()?.toLowerCase() || '';\n const isBlacklisted = BLACKLISTED_FILE_TYPES.includes(ext);\n const isValidExt = validFiles.extensions ? validFiles.extensions.includes(ext) : true;\n const isValidSize = validFiles.maxFileSize ? file.size <= validFiles.maxFileSize : true;\n return !isBlacklisted && isValidExt && isValidSize;\n });\n\n const clipped = validFiles.maxFileCount\n ? validated.slice(0, validFiles.maxFileCount)\n : validated;\n\n setFileList(clipped);\n setIsTouched(true);\n\n setValue(field.name, clipped.length ? clipped : null, {\n shouldValidate: true,\n shouldDirty: true,\n shouldTouch: true\n });\n\n onFilesChange(clipped);\n },\n [field.name, onFilesChange, setValue, fileDisplayStyle, validFiles]\n );\n\n const handleFileInputChange = useCallback((event: FormEvent<HTMLInputElement>) => {\n const target = event.target as HTMLInputElement;\n const files = Array.from(target.files ?? []);\n validateAndCommit(files);\n trigger(field.name);\n dialogOpenRef.current = false;\n }, [trigger, field.name, validateAndCommit]);\n\n const handleDrop = useCallback((dropped: File[]) => {\n validateAndCommit(dropped);\n trigger(field.name);\n }, [trigger, field.name, validateAndCommit]);\n\n const handleFilesEdited = useCallback((files: File[]) => {\n // No need to validate again as they were already validated\n // Changes may include renaming or removing files\n setFileList(files);\n setValue(field.name, files.length > 0 ? files : null, {\n shouldValidate: true,\n shouldDirty: true,\n shouldTouch: true\n });\n onFilesChange(files);\n }, [field.name, setValue, onFilesChange]);\n\n const wrapperCssClass = `\n formField \n dragAndDropFileUpload \n ${ fileDisplayStyle === 'list' ? 'withFileList' : '' } \n ${ labelStyle || '' }Style \n ${ customCssClasses?.wrapper || '' } \n ${ isTouched ? 'touched' : '' } \n ${ typeof validation !== 'undefined' ? 'withValidation' : '' } \n ${ label?.position === 'inset' ? 'insetLabel' : '' } \n ${ isDragActive ? 'isDragActive' : '' }\n `;\n\n const labelProps = {\n ...label,\n inputId: inputId,\n isRequired: validation && typeof validation.required !== 'undefined',\n customContent\n };\n\n const labelStyleAsButtonClasses = generateButtonClass({\n cssClass: 'button dragAndDropFileUploadButtonLabel',\n buttonStyle: labelAsButtonStyles,\n hideLabel: label.hide\n });\n\n const labelCssClass = `\n ${ labelStyle === 'button' ? labelStyleAsButtonClasses : '' }\n ${ customCssClasses?.label || '' } \n ${ showSpinner ? 'withSpinner' : '' } \n ${ label.hide ? 'hiddenLabel' : '' }\n `;\n\n return (\n <HookFormWrapper>\n <div\n className={ wrapperCssClass }\n onDragOver={ (e) => {\n e.preventDefault();\n if (!isDragActive) setIsDragActive(true);\n } }\n onDragLeave={ (e) => {\n if (e.currentTarget === e.target) setIsDragActive(false);\n } }\n onDrop={ (e) => {\n e.preventDefault();\n setIsDragActive(false);\n const files = Array.from(e.dataTransfer?.files ?? []);\n handleDrop(files);\n } }\n >\n <label\n id={ label.labelId || `${ inputId }_label` }\n className={ labelCssClass }\n htmlFor={ inputId }\n onClick={ () => { dialogOpenRef.current = true; } }\n >\n <span className=\"dragAndDropFileUploadLabel\">\n { labelUploadIcon || null }\n <FormFieldLabel { ...labelProps } />\n { restrictionsTxt && <span className=\"fileRestrictionsText\">{ restrictionsTxt }</span> }\n </span>\n\n <span className=\"inputContainer\">\n <InputFile\n {\n ...{\n label,\n field: {\n ...field,\n type: 'file',\n id: inputId, // ensure we can query it by id\n defaultValue: '',\n multiple,\n accept: supportedFileTypes,\n onInput: (event: FormEvent<HTMLInputElement>) => {\n handleFileInputChange(event);\n }\n },\n validation,\n showSpinner,\n customCssClasses,\n customContent\n }\n }\n />\n </span>\n\n { showSpinner && <Spinner /> }\n\n { fileDisplayStyle === 'names' && activeFileList.length > 0 && (\n <span className=\"uploadedFileNames\">\n { activeFileList.map((file, index) => (\n <small key={ index } className=\"uploadedFileName\">\n { file.name }{ index < activeFileList.length - 1 ? ', ' : '' }\n </small>\n )) }\n </span>\n ) }\n\n <ValidationMessages name={ field.name } validation={ validation } />\n </label>\n\n { fileDisplayStyle === 'list' && activeFileList.length > 0 && (\n <FileAttachmentsList\n customFileListSettings={ fileListSettings }\n files={ activeFileList }\n onFilesRemoved={ handleFilesEdited }\n onFilesEdited={ handleFilesEdited }\n />\n ) }\n </div>\n </HookFormWrapper>\n );\n};\n\nexport default { DragAndDropFileUpload };\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"DragAndDropFileUpload.js","names":["Object","defineProperty","exports","value","default","DragAndDropFileUpload","_react","_interopRequireWildcard","require","_iconDefinitions","_SvgIcon","_reactHookForm","_HookFormWrapper","_Spinner","_FormFieldLabel","_InputFile","_ValidationMessages","_button","_FileAttachmentsList","_constants","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","has","get","set","hasOwnProperty","call","getOwnPropertyDescriptor","props","createElement","HookFormWrapper","formContext","DragAndDropFileUploadField","label","field","showSpinner","fileDisplayStyle","fileListSettings","fileList","validation","customContent","customCssClasses","labelStyle","labelAsButtonStyles","color","variant","labelUploadIcon","SvgIcon","svgDefinition","arrowUpFromBracket","multiple","restrictionsTxt","validFiles","extensions","DEFAULT_UPLOAD_FILE_EXTENSIONS","fileTypes","DEFAULT_UPLOAD_FILE_TYPES","maxFileCount","maxFileSize","onFilesChange","setValue","trigger","useFormContext","activeFileList","setFileList","useState","isTouched","setIsTouched","isDragActive","setIsDragActive","inputId","id","inputElRef","useRef","dialogOpenRef","useEffect","current","document","getElementById","onFocus","noneSelected","files","length","name","window","addEventListener","removeEventListener","supportedFileTypes","useMemo","join","validateAndCommit","useCallback","validated","filter","file","ext","split","pop","toLowerCase","isBlacklisted","BLACKLISTED_FILE_TYPES","includes","isValidExt","isValidSize","size","clipped","slice","shouldValidate","shouldDirty","shouldTouch","handleFileInputChange","event","target","Array","from","handleDrop","dropped","handleFilesEdited","wrapperCssClass","wrapper","position","labelProps","isRequired","required","labelStyleAsButtonClasses","generateButtonClass","cssClass","buttonStyle","hideLabel","hide","labelCssClass","className","onDragOver","preventDefault","onDragLeave","currentTarget","onDrop","dataTransfer","labelId","htmlFor","onClick","FormFieldLabel","InputFile","type","defaultValue","accept","onInput","Spinner","map","index","key","ValidationMessages","FileAttachmentsList","customFileListSettings","onFilesRemoved","onFilesEdited","_default"],"sources":["../../../../../../../../../src/components/form/formFields/subComponents/inputs/file/dragAndDrop/DragAndDropFileUpload.tsx"],"sourcesContent":["'use client';\n\nimport React, { FormEvent, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { arrowUpFromBracket } from '@x15ventures/x15-ui-library-icons/iconDefinitions';\nimport { SvgIcon } from '@x15ventures/x15-ui-library-icons/svgIcon/SvgIcon';\nimport { useFormContext } from 'react-hook-form';\nimport { HookFormWrapper } from '../../../../../hookFormWrapper/HookFormWrapper';\nimport { Spinner } from '../../../../../../design/spinner/Spinner';\nimport { FormFieldLabel } from '../../../../subComponents/labels/FormFieldLabel';\nimport { InputFile } from '../../../../subComponents/inputs/file/InputFile';\nimport { ValidationMessages } from '../../../../../validation/ValidationMessages';\nimport { generateButtonClass } from '../../../../../buttons/button.helpers';\nimport { FileAttachmentsList } from '../fileAttachmentList/FileAttachmentsList';\nimport { DragAndDropFileUploadProps } from '../fileInputProps';\nimport {\n DEFAULT_UPLOAD_FILE_EXTENSIONS,\n DEFAULT_UPLOAD_FILE_TYPES,\n BLACKLISTED_FILE_TYPES\n} from '../../../../../../../constants';\n\nimport './dragAndDropFileUpload.scss';\n\nexport const DragAndDropFileUpload: React.FC<DragAndDropFileUploadProps> = (props) => (\n <HookFormWrapper formContext={ props.formContext }>\n <DragAndDropFileUploadField { ...props } />\n </HookFormWrapper>\n);\n\nconst DragAndDropFileUploadField: React.FC<DragAndDropFileUploadProps> = (\n {\n label,\n field,\n showSpinner,\n fileDisplayStyle = 'names',\n fileListSettings,\n fileList,\n validation,\n customContent,\n customCssClasses,\n labelStyle = 'dragArea',\n labelAsButtonStyles = { color: 'primary', variant: 'outline' },\n labelUploadIcon = <SvgIcon svgDefinition={ arrowUpFromBracket } />,\n multiple = false,\n restrictionsTxt = '',\n validFiles = {\n extensions: DEFAULT_UPLOAD_FILE_EXTENSIONS,\n fileTypes: DEFAULT_UPLOAD_FILE_TYPES,\n maxFileCount: 5,\n maxFileSize: 52428800 // 50 MB\n },\n onFilesChange = () => {}\n }\n) => {\n const { setValue, trigger } = useFormContext();\n\n const [activeFileList, setFileList] = useState<File[]>(fileList || []);\n const [isTouched, setIsTouched] = useState(false);\n const [isDragActive, setIsDragActive] = useState(false);\n\n const inputId = field.id;\n const inputElRef = useRef<HTMLInputElement | null>(null);\n const dialogOpenRef = useRef(false);\n\n useEffect(() => {\n inputElRef.current = document.getElementById(inputId) as HTMLInputElement | null;\n }, [inputId]);\n\n // Detect “Cancel” -> dialog closes, window regains focus, but input had no change.\n useEffect(() => {\n const onFocus = () => {\n if (!dialogOpenRef.current) { return; }\n dialogOpenRef.current = false;\n const noneSelected = !inputElRef.current?.files?.length;\n if (noneSelected) {\n // Trigger React Hook Form validators (e.g., required)\n trigger(field.name);\n }\n };\n window.addEventListener('focus', onFocus);\n return () => window.removeEventListener('focus', onFocus);\n }, [trigger, field.name]);\n\n const supportedFileTypes = useMemo(\n () => validFiles?.fileTypes?.join(', ') || '',\n [validFiles?.fileTypes]\n );\n\n const validateAndCommit = useCallback(\n (files: File[]) => {\n // basic validations\n const validated = files.filter((file) => {\n const ext = file.name.split('.').pop()?.toLowerCase() || '';\n const isBlacklisted = BLACKLISTED_FILE_TYPES.includes(ext);\n const isValidExt = validFiles.extensions ? validFiles.extensions.includes(ext) : true;\n const isValidSize = validFiles.maxFileSize ? file.size <= validFiles.maxFileSize : true;\n return !isBlacklisted && isValidExt && isValidSize;\n });\n\n const clipped = validFiles.maxFileCount\n ? validated.slice(0, validFiles.maxFileCount)\n : validated;\n\n setFileList(clipped);\n setIsTouched(true);\n\n setValue(field.name, clipped.length ? clipped : null, {\n shouldValidate: true,\n shouldDirty: true,\n shouldTouch: true\n });\n\n onFilesChange(clipped);\n },\n [field.name, onFilesChange, setValue, fileDisplayStyle, validFiles]\n );\n\n const handleFileInputChange = useCallback((event: FormEvent<HTMLInputElement>) => {\n const target = event.target as HTMLInputElement;\n const files = Array.from(target.files ?? []);\n validateAndCommit(files);\n trigger(field.name);\n dialogOpenRef.current = false;\n }, [trigger, field.name, validateAndCommit]);\n\n const handleDrop = useCallback((dropped: File[]) => {\n validateAndCommit(dropped);\n trigger(field.name);\n }, [trigger, field.name, validateAndCommit]);\n\n const handleFilesEdited = useCallback((files: File[]) => {\n // No need to validate again as they were already validated\n // Changes may include renaming or removing files\n setFileList(files);\n setValue(field.name, files.length > 0 ? files : null, {\n shouldValidate: true,\n shouldDirty: true,\n shouldTouch: true\n });\n onFilesChange(files);\n }, [field.name, setValue, onFilesChange]);\n\n const wrapperCssClass = `\n formField \n dragAndDropFileUpload \n ${ fileDisplayStyle === 'list' ? 'withFileList' : '' } \n ${ labelStyle || '' }Style \n ${ customCssClasses?.wrapper || '' } \n ${ isTouched ? 'touched' : '' } \n ${ typeof validation !== 'undefined' ? 'withValidation' : '' } \n ${ label?.position === 'inset' ? 'insetLabel' : '' } \n ${ isDragActive ? 'isDragActive' : '' }\n `;\n\n const labelProps = {\n ...label,\n inputId: inputId,\n isRequired: validation && typeof validation.required !== 'undefined',\n customContent\n };\n\n const labelStyleAsButtonClasses = generateButtonClass({\n cssClass: 'button dragAndDropFileUploadButtonLabel',\n buttonStyle: labelAsButtonStyles,\n hideLabel: label.hide\n });\n\n const labelCssClass = `\n ${ labelStyle === 'button' ? labelStyleAsButtonClasses : '' }\n ${ customCssClasses?.label || '' } \n ${ showSpinner ? 'withSpinner' : '' } \n ${ label.hide ? 'hiddenLabel' : '' }\n `;\n\n return (\n <div\n className={ wrapperCssClass }\n onDragOver={ (e) => {\n e.preventDefault();\n if (!isDragActive) setIsDragActive(true);\n } }\n onDragLeave={ (e) => {\n if (e.currentTarget === e.target) setIsDragActive(false);\n } }\n onDrop={ (e) => {\n e.preventDefault();\n setIsDragActive(false);\n const files = Array.from(e.dataTransfer?.files ?? []);\n handleDrop(files);\n } }\n >\n <label\n id={ label.labelId || `${ inputId }_label` }\n className={ labelCssClass }\n htmlFor={ inputId }\n onClick={ () => { dialogOpenRef.current = true; } }\n >\n <span className=\"dragAndDropFileUploadLabel\">\n { labelUploadIcon || null }\n <FormFieldLabel { ...labelProps } />\n { restrictionsTxt && <span className=\"fileRestrictionsText\">{ restrictionsTxt }</span> }\n </span>\n\n <span className=\"inputContainer\">\n <InputFile\n {\n ...{\n label,\n field: {\n ...field,\n type: 'file',\n id: inputId, // ensure we can query it by id\n defaultValue: '',\n multiple,\n accept: supportedFileTypes,\n onInput: (event: FormEvent<HTMLInputElement>) => {\n handleFileInputChange(event);\n }\n },\n validation,\n showSpinner,\n customCssClasses,\n customContent\n }\n }\n />\n </span>\n\n { showSpinner && <Spinner /> }\n\n { fileDisplayStyle === 'names' && activeFileList.length > 0 && (\n <span className=\"uploadedFileNames\">\n { activeFileList.map((file, index) => (\n <small key={ index } className=\"uploadedFileName\">\n { file.name }{ index < activeFileList.length - 1 ? ', ' : '' }\n </small>\n )) }\n </span>\n ) }\n\n <ValidationMessages name={ field.name } validation={ validation } />\n </label>\n\n { fileDisplayStyle === 'list' && activeFileList.length > 0 && (\n <FileAttachmentsList\n customFileListSettings={ fileListSettings }\n files={ activeFileList }\n onFilesRemoved={ handleFilesEdited }\n onFilesEdited={ handleFilesEdited }\n />\n ) }\n </div>\n );\n};\n\nexport default { DragAndDropFileUpload };\n"],"mappings":"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","ignoreList":[]}
|
package/dist/cjs/components/form/formFields/subComponents/inputs/radio/styled/StyledRadioGroup.js
CHANGED
|
@@ -33,11 +33,19 @@ const StyledRadioGroup = ({
|
|
|
33
33
|
}) => {
|
|
34
34
|
const [isTouched, setIsTouched] = (0, _react.useState)(false);
|
|
35
35
|
const {
|
|
36
|
-
|
|
36
|
+
control,
|
|
37
37
|
setValue
|
|
38
38
|
} = (0, _reactHookForm.useFormContext)();
|
|
39
|
-
const
|
|
39
|
+
const groupValue = (0, _reactHookForm.useWatch)({
|
|
40
|
+
control,
|
|
41
|
+
name: groupName
|
|
42
|
+
});
|
|
40
43
|
const radioInputsGroup = (0, _react.useRef)(null);
|
|
44
|
+
(0, _react.useEffect)(() => {
|
|
45
|
+
if (typeof defaultGroupValue !== 'undefined') {
|
|
46
|
+
setValue(groupName, defaultGroupValue);
|
|
47
|
+
}
|
|
48
|
+
}, [defaultGroupValue, groupName, setValue]);
|
|
41
49
|
(0, _hooks.useTabbableInputGroup)({
|
|
42
50
|
groupWrappingElementRef: radioInputsGroup
|
|
43
51
|
});
|
|
@@ -46,8 +54,10 @@ const StyledRadioGroup = ({
|
|
|
46
54
|
target
|
|
47
55
|
} = event;
|
|
48
56
|
const newValue = target.value;
|
|
49
|
-
setValue(groupName, newValue
|
|
50
|
-
|
|
57
|
+
setValue(groupName, newValue, {
|
|
58
|
+
shouldValidate: true,
|
|
59
|
+
shouldDirty: true
|
|
60
|
+
});
|
|
51
61
|
setIsTouched(true);
|
|
52
62
|
onChange(newValue);
|
|
53
63
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StyledRadioGroup.js","names":["_interopRequireDefault","require","Object","defineProperty","exports","value","default","StyledRadioGroup","_extends2","_react","_interopRequireWildcard","_reactHookForm","_hooks","_FormFieldLabel","_StyledRadioInput","_ValidationMessages","_Spinner","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","has","get","set","hasOwnProperty","call","getOwnPropertyDescriptor","group","id","name","groupName","defaultGroupValue","label","layout","validation","showSpinner","customCssClasses","customContent","onChange","radioInputs","isTouched","setIsTouched","useState","
|
|
1
|
+
{"version":3,"file":"StyledRadioGroup.js","names":["_interopRequireDefault","require","Object","defineProperty","exports","value","default","StyledRadioGroup","_extends2","_react","_interopRequireWildcard","_reactHookForm","_hooks","_FormFieldLabel","_StyledRadioInput","_ValidationMessages","_Spinner","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","has","get","set","hasOwnProperty","call","getOwnPropertyDescriptor","group","id","name","groupName","defaultGroupValue","label","layout","validation","showSpinner","customCssClasses","customContent","onChange","radioInputs","isTouched","setIsTouched","useState","control","setValue","useFormContext","groupValue","useWatch","radioInputsGroup","useRef","useEffect","useTabbableInputGroup","groupWrappingElementRef","HandleOnChange","event","target","newValue","shouldValidate","shouldDirty","wrapperCssClass","wrapper","position","labelProps","isRequired","required","createElement","onBlur","className","hide","FormFieldLabel","ref","length","map","radioInput","StyledRadioInput","key","field","isChecked","defaultChecked","Spinner","ValidationMessages","_default"],"sources":["../../../../../../../../../src/components/form/formFields/subComponents/inputs/radio/styled/StyledRadioGroup.tsx"],"sourcesContent":["'use client';\n\nimport React, { useEffect, useRef, useState } from 'react';\nimport { useFormContext, useWatch } from 'react-hook-form';\nimport { StyledRadioGroupProps } from '../radioInputsProps';\nimport { useTabbableInputGroup } from '../../../../../../../hooks';\nimport { FormFieldLabel } from '../../../labels/FormFieldLabel';\nimport { StyledRadioInput } from './StyledRadioInput';\nimport { ValidationMessages } from '../../../../../validation/ValidationMessages';\nimport { Spinner } from '../../../../../../design/spinner/Spinner';\n\nimport './styledRadioGroup.scss';\n\nexport const StyledRadioGroup: React.FC<StyledRadioGroupProps> = (\n {\n group: {\n id,\n name: groupName,\n value: defaultGroupValue,\n label,\n layout,\n validation,\n showSpinner,\n customCssClasses,\n customContent,\n onChange = () => {}\n },\n radioInputs\n }\n) => {\n const [isTouched, setIsTouched] = useState(false);\n const { control, setValue } = useFormContext();\n const groupValue = useWatch({ control, name: groupName });\n const radioInputsGroup = useRef(null);\n\n useEffect(() => {\n if (typeof defaultGroupValue !== 'undefined') {\n setValue(groupName, defaultGroupValue);\n }\n }, [defaultGroupValue, groupName, setValue]);\n\n useTabbableInputGroup({ groupWrappingElementRef: radioInputsGroup });\n\n const HandleOnChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const { target } = event;\n const newValue = target.value;\n setValue(groupName, newValue, { shouldValidate: true, shouldDirty: true });\n setIsTouched(true);\n onChange(newValue);\n };\n\n const wrapperCssClass = `formField styledRadiosGroup ${ layout || '' } ${ isTouched ? 'touched' : '' } ${ customCssClasses?.wrapper || '' } ${ label?.position || '' }`;\n\n const labelProps = {\n ...label,\n isRequired: validation && typeof validation.required !== 'undefined',\n customContent\n };\n\n return (\n <fieldset id={ id } onBlur={ () => setIsTouched(true) } className={ wrapperCssClass }>\n <span className=\"sr-only\">\n Screen reader users are advised that this radio group supports\n custom keyboard navigation between radio options via tabbing.\n </span>\n\n <legend className={ label.hide ? 'sr-only' : '' }><FormFieldLabel { ...labelProps } /></legend>\n\n <div ref={ radioInputsGroup } className={ `radioInputs radioInputs_${ radioInputs.length }` }>\n {\n radioInputs.map((radioInput) => (\n <StyledRadioInput\n key={ radioInput.field.id }\n {\n ...{\n ...radioInput,\n label: {\n ...radioInput.label,\n isChecked: groupValue === radioInput.field.value\n },\n field: {\n ...radioInput.field,\n defaultChecked: groupValue === radioInput.field.value,\n groupName,\n onChange: HandleOnChange\n }\n }\n }\n />\n ))\n }\n </div>\n\n {\n showSpinner && <Spinner />\n }\n\n <ValidationMessages name={ groupName } validation={ validation } />\n </fieldset>\n );\n};\n\nexport default StyledRadioGroup;\n"],"mappings":"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","ignoreList":[]}
|