@simplybusiness/mobius-datepicker 6.0.27 → 6.1.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/CHANGELOG.md CHANGED
@@ -1,5 +1,26 @@
1
1
  # Changelog
2
2
 
3
+ ## 6.1.1
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [f9cd018]
8
+ - @simplybusiness/icons@4.20.0
9
+ - @simplybusiness/mobius@5.15.5
10
+
11
+ ## 6.1.0
12
+
13
+ ### Minor Changes
14
+
15
+ - 819fc3b: Questionnaire: added DateQuestion component
16
+
17
+ ## 6.0.28
18
+
19
+ ### Patch Changes
20
+
21
+ - Updated dependencies [088cf5b]
22
+ - @simplybusiness/mobius@5.15.4
23
+
3
24
  ## 6.0.27
4
25
 
5
26
  ### Patch Changes
@@ -96,6 +96,13 @@ const DatePicker = (props)=>{
96
96
  "--is-touch-device": touchDevice
97
97
  }, validationClasses);
98
98
  const popoverToggleClasses = (0, _dedupe.default)("mobius-date-picker__field-button", validationClasses);
99
+ (0, _react.useEffect)(()=>{
100
+ const validatedValue = (0, _utils.validateDateFormat)(defaultValue);
101
+ setTextFieldVal(validatedValue);
102
+ setIsValid(true);
103
+ }, [
104
+ defaultValue
105
+ ]);
99
106
  const togglePopoverVisibility = ()=>{
100
107
  setIsValid(true);
101
108
  setIsOpen(!isOpen);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/DatePicker/DatePicker.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n Button,\n TextField,\n TextFieldElementType,\n TextFieldProps,\n VisuallyHidden,\n Validation,\n useValidationClasses,\n Icon,\n} from \"@simplybusiness/mobius\";\nimport { calendarDay } from \"@simplybusiness/icons\";\nimport classNames from \"classnames/dedupe\";\nimport {\n ChangeEvent,\n FocusEvent,\n Suspense,\n lazy,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport { isTouchDevice } from \"../../utils/isTouchDevice\";\nimport { formatErrorMessageText, validateDateFormat } from \"./utils\";\n\nconst DatePickerModal = lazy(() => import(\"./DatePickerModal\"));\n\nexport interface GetValidationStateProps {\n validationState?: Validation[\"validationState\"];\n isInvalid?: Validation[\"isInvalid\"];\n}\n\nconst getValidationState = (props: GetValidationStateProps) => {\n const { validationState, isInvalid } = props;\n\n if (isInvalid || validationState === \"invalid\") {\n return true;\n }\n\n if (isInvalid === false || validationState === \"valid\") {\n return false;\n }\n\n return undefined;\n};\n\nexport interface DatePickerProps\n extends Validation,\n Omit<TextFieldProps, \"defaultValue\" | \"onChange\" | \"onBlur\" | \"onFocus\"> {\n onChange?: (date: string | undefined) => void;\n defaultValue?: string;\n min?: string;\n max?: string;\n id?: string;\n}\n\nexport const DatePicker = (props: DatePickerProps) => {\n const {\n onChange,\n defaultValue = \"\",\n isDisabled,\n validationState,\n isInvalid,\n errorMessage = \"\",\n ...otherProps\n } = props;\n const containerRef = useRef<HTMLDivElement | null>(null);\n const [top, setTop] = useState<number>(0);\n const inputRef = useRef<TextFieldElementType | null>(null);\n const [isOpen, setIsOpen] = useState<boolean>(false);\n const [textFieldVal, setTextFieldVal] = useState<string>(\n validateDateFormat(defaultValue),\n );\n const [isValid, setIsValid] = useState<boolean | undefined>(undefined);\n const isInvalidProp = getValidationState({\n validationState,\n isInvalid: isValid === false || isInvalid,\n });\n const errorMessageText = isInvalidProp\n ? // eslint-disable-next-line react/destructuring-assignment\n formatErrorMessageText(textFieldVal, props.min, props.max)\n : errorMessage;\n const touchDevice = isTouchDevice();\n\n const validationClasses = useValidationClasses({\n validationState,\n isInvalid: isInvalidProp,\n });\n\n const containerClasses = classNames(\n \"mobius-date-picker__container\",\n {\n \"--is-disabled\": isDisabled,\n \"--is-touch-device\": touchDevice,\n },\n validationClasses,\n );\n\n const popoverToggleClasses = classNames(\n \"mobius-date-picker__field-button\",\n validationClasses,\n );\n\n const togglePopoverVisibility = () => {\n setIsValid(true);\n setIsOpen(!isOpen);\n };\n\n const handleTextFieldChange = (event: ChangeEvent<TextFieldElementType>) => {\n setTextFieldVal(event.target.value);\n // onChange only triggers on a valid date\n // so this clears the error\n setIsValid(true);\n };\n\n const validate = () => {\n // If 'min' or 'max' values are provided, checkValidity() will\n // validate the date and return a boolean\n const isValidInput = inputRef.current?.checkValidity();\n\n if (!isValidInput) {\n setIsValid(false);\n }\n };\n\n const onDateSelected = (selectedDate: string | undefined) => {\n // Handle null callback from useOnClickOutside\n if (selectedDate) {\n setTextFieldVal(selectedDate);\n setIsValid(true);\n // Add other callback events here\n onChange?.(selectedDate);\n }\n\n setIsOpen(false);\n };\n\n // User has interacted with the component and navigated away\n const handleBlur = (event: FocusEvent<TextFieldElementType>) => {\n validate();\n\n // User hasn't entered a date OR\n // entered an invalid date\n if (!textFieldVal) {\n setIsValid(false);\n }\n\n onChange?.(event.target.value);\n };\n\n useEffect(() => {\n if (isOpen) {\n setTop(containerRef.current?.getBoundingClientRect().height || 0);\n // Disable validation when day picker is open\n setIsValid(true);\n return;\n }\n\n validate();\n }, [isOpen]);\n\n if (touchDevice) {\n return (\n <div className={containerClasses}>\n <TextField\n ref={inputRef}\n type=\"date\"\n className=\"mobius-date-picker\"\n // @ts-expect-error event type\n onBlur={handleBlur}\n onChange={handleTextFieldChange}\n value={textFieldVal}\n isDisabled={isDisabled}\n isInvalid={isInvalidProp}\n {...otherProps}\n errorMessage={errorMessageText}\n />\n </div>\n );\n }\n\n return (\n <div className={containerClasses} ref={containerRef}>\n <TextField\n ref={inputRef}\n type=\"date\"\n className=\"mobius-date-picker\"\n // @ts-expect-error event type\n onBlur={handleBlur}\n onChange={handleTextFieldChange}\n value={textFieldVal}\n isDisabled={isDisabled}\n isInvalid={isInvalidProp}\n {...otherProps}\n errorMessage={errorMessageText}\n suffixOutside={\n <Button\n className={popoverToggleClasses}\n onClick={togglePopoverVisibility}\n isDisabled={isDisabled}\n size=\"sm\"\n >\n <Icon size=\"sm\" icon={calendarDay} />\n <VisuallyHidden>Pick date</VisuallyHidden>\n </Button>\n }\n />\n {isOpen && (\n <Suspense>\n <DatePickerModal\n date={textFieldVal}\n isOpen={isOpen}\n top={top}\n onSelected={onDateSelected}\n // eslint-disable-next-line react/destructuring-assignment\n min={props.min}\n // eslint-disable-next-line react/destructuring-assignment\n max={props.max}\n />\n </Suspense>\n )}\n </div>\n );\n};\n"],"names":["DatePicker","DatePickerModal","lazy","getValidationState","props","validationState","isInvalid","undefined","onChange","defaultValue","isDisabled","errorMessage","otherProps","containerRef","useRef","top","setTop","useState","inputRef","isOpen","setIsOpen","textFieldVal","setTextFieldVal","validateDateFormat","isValid","setIsValid","isInvalidProp","errorMessageText","formatErrorMessageText","min","max","touchDevice","isTouchDevice","validationClasses","useValidationClasses","containerClasses","classNames","popoverToggleClasses","togglePopoverVisibility","handleTextFieldChange","event","target","value","validate","isValidInput","current","checkValidity","onDateSelected","selectedDate","handleBlur","useEffect","getBoundingClientRect","height","div","className","TextField","ref","type","onBlur","suffixOutside","Button","onClick","size","Icon","icon","calendarDay","VisuallyHidden","Suspense","date","onSelected"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/components/DatePicker/DatePicker.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n Button,\n TextField,\n TextFieldElementType,\n TextFieldProps,\n VisuallyHidden,\n Validation,\n useValidationClasses,\n Icon,\n} from \"@simplybusiness/mobius\";\nimport { calendarDay } from \"@simplybusiness/icons\";\nimport classNames from \"classnames/dedupe\";\nimport {\n ChangeEvent,\n FocusEvent,\n Suspense,\n lazy,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport { isTouchDevice } from \"../../utils/isTouchDevice\";\nimport { formatErrorMessageText, validateDateFormat } from \"./utils\";\n\nconst DatePickerModal = lazy(() => import(\"./DatePickerModal\"));\n\nexport interface GetValidationStateProps {\n validationState?: Validation[\"validationState\"];\n isInvalid?: Validation[\"isInvalid\"];\n}\n\nconst getValidationState = (props: GetValidationStateProps) => {\n const { validationState, isInvalid } = props;\n\n if (isInvalid || validationState === \"invalid\") {\n return true;\n }\n\n if (isInvalid === false || validationState === \"valid\") {\n return false;\n }\n\n return undefined;\n};\n\nexport interface DatePickerProps\n extends Validation,\n Omit<TextFieldProps, \"defaultValue\" | \"onChange\" | \"onBlur\" | \"onFocus\"> {\n onChange?: (date: string | undefined) => void;\n defaultValue?: string;\n min?: string;\n max?: string;\n id?: string;\n}\n\nexport const DatePicker = (props: DatePickerProps) => {\n const {\n onChange,\n defaultValue = \"\",\n isDisabled,\n validationState,\n isInvalid,\n errorMessage = \"\",\n ...otherProps\n } = props;\n const containerRef = useRef<HTMLDivElement | null>(null);\n const [top, setTop] = useState<number>(0);\n const inputRef = useRef<TextFieldElementType | null>(null);\n const [isOpen, setIsOpen] = useState<boolean>(false);\n const [textFieldVal, setTextFieldVal] = useState<string>(\n validateDateFormat(defaultValue),\n );\n const [isValid, setIsValid] = useState<boolean | undefined>(undefined);\n const isInvalidProp = getValidationState({\n validationState,\n isInvalid: isValid === false || isInvalid,\n });\n const errorMessageText = isInvalidProp\n ? // eslint-disable-next-line react/destructuring-assignment\n formatErrorMessageText(textFieldVal, props.min, props.max)\n : errorMessage;\n const touchDevice = isTouchDevice();\n\n const validationClasses = useValidationClasses({\n validationState,\n isInvalid: isInvalidProp,\n });\n\n const containerClasses = classNames(\n \"mobius-date-picker__container\",\n {\n \"--is-disabled\": isDisabled,\n \"--is-touch-device\": touchDevice,\n },\n validationClasses,\n );\n\n const popoverToggleClasses = classNames(\n \"mobius-date-picker__field-button\",\n validationClasses,\n );\n\n useEffect(() => {\n const validatedValue = validateDateFormat(defaultValue);\n setTextFieldVal(validatedValue);\n setIsValid(true);\n }, [defaultValue]);\n\n const togglePopoverVisibility = () => {\n setIsValid(true);\n setIsOpen(!isOpen);\n };\n\n const handleTextFieldChange = (event: ChangeEvent<TextFieldElementType>) => {\n setTextFieldVal(event.target.value);\n // onChange only triggers on a valid date\n // so this clears the error\n setIsValid(true);\n };\n\n const validate = () => {\n // If 'min' or 'max' values are provided, checkValidity() will\n // validate the date and return a boolean\n const isValidInput = inputRef.current?.checkValidity();\n\n if (!isValidInput) {\n setIsValid(false);\n }\n };\n\n const onDateSelected = (selectedDate: string | undefined) => {\n // Handle null callback from useOnClickOutside\n if (selectedDate) {\n setTextFieldVal(selectedDate);\n setIsValid(true);\n // Add other callback events here\n onChange?.(selectedDate);\n }\n\n setIsOpen(false);\n };\n\n // User has interacted with the component and navigated away\n const handleBlur = (event: FocusEvent<TextFieldElementType>) => {\n validate();\n\n // User hasn't entered a date OR\n // entered an invalid date\n if (!textFieldVal) {\n setIsValid(false);\n }\n\n onChange?.(event.target.value);\n };\n\n useEffect(() => {\n if (isOpen) {\n setTop(containerRef.current?.getBoundingClientRect().height || 0);\n // Disable validation when day picker is open\n setIsValid(true);\n return;\n }\n\n validate();\n }, [isOpen]);\n\n if (touchDevice) {\n return (\n <div className={containerClasses}>\n <TextField\n ref={inputRef}\n type=\"date\"\n className=\"mobius-date-picker\"\n // @ts-expect-error event type\n onBlur={handleBlur}\n onChange={handleTextFieldChange}\n value={textFieldVal}\n isDisabled={isDisabled}\n isInvalid={isInvalidProp}\n {...otherProps}\n errorMessage={errorMessageText}\n />\n </div>\n );\n }\n\n return (\n <div className={containerClasses} ref={containerRef}>\n <TextField\n ref={inputRef}\n type=\"date\"\n className=\"mobius-date-picker\"\n // @ts-expect-error event type\n onBlur={handleBlur}\n onChange={handleTextFieldChange}\n value={textFieldVal}\n isDisabled={isDisabled}\n isInvalid={isInvalidProp}\n {...otherProps}\n errorMessage={errorMessageText}\n suffixOutside={\n <Button\n className={popoverToggleClasses}\n onClick={togglePopoverVisibility}\n isDisabled={isDisabled}\n size=\"sm\"\n >\n <Icon size=\"sm\" icon={calendarDay} />\n <VisuallyHidden>Pick date</VisuallyHidden>\n </Button>\n }\n />\n {isOpen && (\n <Suspense>\n <DatePickerModal\n date={textFieldVal}\n isOpen={isOpen}\n top={top}\n onSelected={onDateSelected}\n // eslint-disable-next-line react/destructuring-assignment\n min={props.min}\n // eslint-disable-next-line react/destructuring-assignment\n max={props.max}\n />\n </Suspense>\n )}\n </div>\n );\n};\n"],"names":["DatePicker","DatePickerModal","lazy","getValidationState","props","validationState","isInvalid","undefined","onChange","defaultValue","isDisabled","errorMessage","otherProps","containerRef","useRef","top","setTop","useState","inputRef","isOpen","setIsOpen","textFieldVal","setTextFieldVal","validateDateFormat","isValid","setIsValid","isInvalidProp","errorMessageText","formatErrorMessageText","min","max","touchDevice","isTouchDevice","validationClasses","useValidationClasses","containerClasses","classNames","popoverToggleClasses","useEffect","validatedValue","togglePopoverVisibility","handleTextFieldChange","event","target","value","validate","isValidInput","current","checkValidity","onDateSelected","selectedDate","handleBlur","getBoundingClientRect","height","div","className","TextField","ref","type","onBlur","suffixOutside","Button","onClick","size","Icon","icon","calendarDay","VisuallyHidden","Suspense","date","onSelected"],"mappings":"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"}