@mtes-mct/monitor-ui 1.7.2 → 1.7.3
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 +2 -0
- package/index.js +3424 -0
- package/index.js.map +1 -0
- package/package.json +3 -3
- package/.yarn/cache/date-fns-npm-2.29.3-fef7e3c72c-e01cf5b62a.zip/node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js +0 -12
- package/.yarn/cache/date-fns-npm-2.29.3-fef7e3c72c-e01cf5b62a.zip/node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js.map +0 -1
- package/.yarn/cache/date-fns-npm-2.29.3-fef7e3c72c-e01cf5b62a.zip/node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js +0 -25
- package/.yarn/cache/date-fns-npm-2.29.3-fef7e3c72c-e01cf5b62a.zip/node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js.map +0 -1
- package/.yarn/cache/date-fns-npm-2.29.3-fef7e3c72c-e01cf5b62a.zip/node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js +0 -51
- package/.yarn/cache/date-fns-npm-2.29.3-fef7e3c72c-e01cf5b62a.zip/node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js.map +0 -1
- package/.yarn/cache/date-fns-npm-2.29.3-fef7e3c72c-e01cf5b62a.zip/node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js +0 -20
- package/.yarn/cache/date-fns-npm-2.29.3-fef7e3c72c-e01cf5b62a.zip/node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js.map +0 -1
- package/.yarn/cache/date-fns-npm-2.29.3-fef7e3c72c-e01cf5b62a.zip/node_modules/date-fns/esm/locale/fr/_lib/formatDistance/index.js +0 -89
- package/.yarn/cache/date-fns-npm-2.29.3-fef7e3c72c-e01cf5b62a.zip/node_modules/date-fns/esm/locale/fr/_lib/formatDistance/index.js.map +0 -1
- package/.yarn/cache/date-fns-npm-2.29.3-fef7e3c72c-e01cf5b62a.zip/node_modules/date-fns/esm/locale/fr/_lib/formatLong/index.js +0 -37
- package/.yarn/cache/date-fns-npm-2.29.3-fef7e3c72c-e01cf5b62a.zip/node_modules/date-fns/esm/locale/fr/_lib/formatLong/index.js.map +0 -1
- package/.yarn/cache/date-fns-npm-2.29.3-fef7e3c72c-e01cf5b62a.zip/node_modules/date-fns/esm/locale/fr/_lib/formatRelative/index.js +0 -15
- package/.yarn/cache/date-fns-npm-2.29.3-fef7e3c72c-e01cf5b62a.zip/node_modules/date-fns/esm/locale/fr/_lib/formatRelative/index.js.map +0 -1
- package/.yarn/cache/date-fns-npm-2.29.3-fef7e3c72c-e01cf5b62a.zip/node_modules/date-fns/esm/locale/fr/_lib/localize/index.js +0 -101
- package/.yarn/cache/date-fns-npm-2.29.3-fef7e3c72c-e01cf5b62a.zip/node_modules/date-fns/esm/locale/fr/_lib/localize/index.js.map +0 -1
- package/.yarn/cache/date-fns-npm-2.29.3-fef7e3c72c-e01cf5b62a.zip/node_modules/date-fns/esm/locale/fr/_lib/match/index.js +0 -101
- package/.yarn/cache/date-fns-npm-2.29.3-fef7e3c72c-e01cf5b62a.zip/node_modules/date-fns/esm/locale/fr/_lib/match/index.js.map +0 -1
- package/.yarn/cache/date-fns-npm-2.29.3-fef7e3c72c-e01cf5b62a.zip/node_modules/date-fns/esm/locale/fr/index.js +0 -34
- package/.yarn/cache/date-fns-npm-2.29.3-fef7e3c72c-e01cf5b62a.zip/node_modules/date-fns/esm/locale/fr/index.js.map +0 -1
- package/.yarn/cache/dayjs-npm-1.11.5-a825142dc5-e3bbaa7b48.zip/node_modules/dayjs/dayjs.min.js +0 -16
- package/.yarn/cache/dayjs-npm-1.11.5-a825142dc5-e3bbaa7b48.zip/node_modules/dayjs/dayjs.min.js.map +0 -1
- package/.yarn/cache/dayjs-npm-1.11.5-a825142dc5-e3bbaa7b48.zip/node_modules/dayjs/locale/fr.js +0 -8
- package/.yarn/cache/dayjs-npm-1.11.5-a825142dc5-e3bbaa7b48.zip/node_modules/dayjs/locale/fr.js.map +0 -1
- package/.yarn/cache/dayjs-npm-1.11.5-a825142dc5-e3bbaa7b48.zip/node_modules/dayjs/plugin/timezone.js +0 -11
- package/.yarn/cache/dayjs-npm-1.11.5-a825142dc5-e3bbaa7b48.zip/node_modules/dayjs/plugin/timezone.js.map +0 -1
- package/.yarn/cache/dayjs-npm-1.11.5-a825142dc5-e3bbaa7b48.zip/node_modules/dayjs/plugin/utc.js +0 -11
- package/.yarn/cache/dayjs-npm-1.11.5-a825142dc5-e3bbaa7b48.zip/node_modules/dayjs/plugin/utc.js.map +0 -1
- package/.yarn/cache/lodash.throttle-npm-4.1.1-856641af92-129c0a28ce.zip/node_modules/lodash.throttle/index.js +0 -444
- package/.yarn/cache/lodash.throttle-npm-4.1.1-856641af92-129c0a28ce.zip/node_modules/lodash.throttle/index.js.map +0 -1
- package/.yarn/cache/ramda-npm-0.28.0-6a5fe8f6cc-44ea6e5010.zip/node_modules/ramda/es/bind.js +0 -36
- package/.yarn/cache/ramda-npm-0.28.0-6a5fe8f6cc-44ea6e5010.zip/node_modules/ramda/es/bind.js.map +0 -1
- package/.yarn/cache/ramda-npm-0.28.0-6a5fe8f6cc-44ea6e5010.zip/node_modules/ramda/es/equals.js +0 -37
- package/.yarn/cache/ramda-npm-0.28.0-6a5fe8f6cc-44ea6e5010.zip/node_modules/ramda/es/equals.js.map +0 -1
- package/.yarn/cache/ramda-npm-0.28.0-6a5fe8f6cc-44ea6e5010.zip/node_modules/ramda/es/filter.js +0 -53
- package/.yarn/cache/ramda-npm-0.28.0-6a5fe8f6cc-44ea6e5010.zip/node_modules/ramda/es/filter.js.map +0 -1
- package/.yarn/cache/ramda-npm-0.28.0-6a5fe8f6cc-44ea6e5010.zip/node_modules/ramda/es/internal/_arity.js +0 -65
- package/.yarn/cache/ramda-npm-0.28.0-6a5fe8f6cc-44ea6e5010.zip/node_modules/ramda/es/internal/_arity.js.map +0 -1
- package/.yarn/cache/ramda-npm-0.28.0-6a5fe8f6cc-44ea6e5010.zip/node_modules/ramda/es/internal/_arrayFromIterator.js +0 -13
- package/.yarn/cache/ramda-npm-0.28.0-6a5fe8f6cc-44ea6e5010.zip/node_modules/ramda/es/internal/_arrayFromIterator.js.map +0 -1
- package/.yarn/cache/ramda-npm-0.28.0-6a5fe8f6cc-44ea6e5010.zip/node_modules/ramda/es/internal/_complement.js +0 -8
- package/.yarn/cache/ramda-npm-0.28.0-6a5fe8f6cc-44ea6e5010.zip/node_modules/ramda/es/internal/_complement.js.map +0 -1
- package/.yarn/cache/ramda-npm-0.28.0-6a5fe8f6cc-44ea6e5010.zip/node_modules/ramda/es/internal/_curry1.js +0 -23
- package/.yarn/cache/ramda-npm-0.28.0-6a5fe8f6cc-44ea6e5010.zip/node_modules/ramda/es/internal/_curry1.js.map +0 -1
- package/.yarn/cache/ramda-npm-0.28.0-6a5fe8f6cc-44ea6e5010.zip/node_modules/ramda/es/internal/_curry2.js +0 -35
- package/.yarn/cache/ramda-npm-0.28.0-6a5fe8f6cc-44ea6e5010.zip/node_modules/ramda/es/internal/_curry2.js.map +0 -1
- package/.yarn/cache/ramda-npm-0.28.0-6a5fe8f6cc-44ea6e5010.zip/node_modules/ramda/es/internal/_curry3.js +0 -53
- package/.yarn/cache/ramda-npm-0.28.0-6a5fe8f6cc-44ea6e5010.zip/node_modules/ramda/es/internal/_curry3.js.map +0 -1
- package/.yarn/cache/ramda-npm-0.28.0-6a5fe8f6cc-44ea6e5010.zip/node_modules/ramda/es/internal/_dispatchable.js +0 -50
- package/.yarn/cache/ramda-npm-0.28.0-6a5fe8f6cc-44ea6e5010.zip/node_modules/ramda/es/internal/_dispatchable.js.map +0 -1
- package/.yarn/cache/ramda-npm-0.28.0-6a5fe8f6cc-44ea6e5010.zip/node_modules/ramda/es/internal/_equals.js +0 -166
- package/.yarn/cache/ramda-npm-0.28.0-6a5fe8f6cc-44ea6e5010.zip/node_modules/ramda/es/internal/_equals.js.map +0 -1
- package/.yarn/cache/ramda-npm-0.28.0-6a5fe8f6cc-44ea6e5010.zip/node_modules/ramda/es/internal/_filter.js +0 -18
- package/.yarn/cache/ramda-npm-0.28.0-6a5fe8f6cc-44ea6e5010.zip/node_modules/ramda/es/internal/_filter.js.map +0 -1
- package/.yarn/cache/ramda-npm-0.28.0-6a5fe8f6cc-44ea6e5010.zip/node_modules/ramda/es/internal/_functionName.js +0 -8
- package/.yarn/cache/ramda-npm-0.28.0-6a5fe8f6cc-44ea6e5010.zip/node_modules/ramda/es/internal/_functionName.js.map +0 -1
- package/.yarn/cache/ramda-npm-0.28.0-6a5fe8f6cc-44ea6e5010.zip/node_modules/ramda/es/internal/_has.js +0 -6
- package/.yarn/cache/ramda-npm-0.28.0-6a5fe8f6cc-44ea6e5010.zip/node_modules/ramda/es/internal/_has.js.map +0 -1
- package/.yarn/cache/ramda-npm-0.28.0-6a5fe8f6cc-44ea6e5010.zip/node_modules/ramda/es/internal/_includesWith.js +0 -17
- package/.yarn/cache/ramda-npm-0.28.0-6a5fe8f6cc-44ea6e5010.zip/node_modules/ramda/es/internal/_includesWith.js.map +0 -1
- package/.yarn/cache/ramda-npm-0.28.0-6a5fe8f6cc-44ea6e5010.zip/node_modules/ramda/es/internal/_isArguments.js +0 -16
- package/.yarn/cache/ramda-npm-0.28.0-6a5fe8f6cc-44ea6e5010.zip/node_modules/ramda/es/internal/_isArguments.js.map +0 -1
- package/.yarn/cache/ramda-npm-0.28.0-6a5fe8f6cc-44ea6e5010.zip/node_modules/ramda/es/internal/_isArray.js +0 -18
- package/.yarn/cache/ramda-npm-0.28.0-6a5fe8f6cc-44ea6e5010.zip/node_modules/ramda/es/internal/_isArray.js.map +0 -1
- package/.yarn/cache/ramda-npm-0.28.0-6a5fe8f6cc-44ea6e5010.zip/node_modules/ramda/es/internal/_isArrayLike.js +0 -55
- package/.yarn/cache/ramda-npm-0.28.0-6a5fe8f6cc-44ea6e5010.zip/node_modules/ramda/es/internal/_isArrayLike.js.map +0 -1
- package/.yarn/cache/ramda-npm-0.28.0-6a5fe8f6cc-44ea6e5010.zip/node_modules/ramda/es/internal/_isObject.js +0 -6
- package/.yarn/cache/ramda-npm-0.28.0-6a5fe8f6cc-44ea6e5010.zip/node_modules/ramda/es/internal/_isObject.js.map +0 -1
- package/.yarn/cache/ramda-npm-0.28.0-6a5fe8f6cc-44ea6e5010.zip/node_modules/ramda/es/internal/_isPlaceholder.js +0 -6
- package/.yarn/cache/ramda-npm-0.28.0-6a5fe8f6cc-44ea6e5010.zip/node_modules/ramda/es/internal/_isPlaceholder.js.map +0 -1
- package/.yarn/cache/ramda-npm-0.28.0-6a5fe8f6cc-44ea6e5010.zip/node_modules/ramda/es/internal/_isString.js +0 -6
- package/.yarn/cache/ramda-npm-0.28.0-6a5fe8f6cc-44ea6e5010.zip/node_modules/ramda/es/internal/_isString.js.map +0 -1
- package/.yarn/cache/ramda-npm-0.28.0-6a5fe8f6cc-44ea6e5010.zip/node_modules/ramda/es/internal/_isTransformer.js +0 -6
- package/.yarn/cache/ramda-npm-0.28.0-6a5fe8f6cc-44ea6e5010.zip/node_modules/ramda/es/internal/_isTransformer.js.map +0 -1
- package/.yarn/cache/ramda-npm-0.28.0-6a5fe8f6cc-44ea6e5010.zip/node_modules/ramda/es/internal/_objectIs.js +0 -17
- package/.yarn/cache/ramda-npm-0.28.0-6a5fe8f6cc-44ea6e5010.zip/node_modules/ramda/es/internal/_objectIs.js.map +0 -1
- package/.yarn/cache/ramda-npm-0.28.0-6a5fe8f6cc-44ea6e5010.zip/node_modules/ramda/es/internal/_reduce.js +0 -74
- package/.yarn/cache/ramda-npm-0.28.0-6a5fe8f6cc-44ea6e5010.zip/node_modules/ramda/es/internal/_reduce.js.map +0 -1
- package/.yarn/cache/ramda-npm-0.28.0-6a5fe8f6cc-44ea6e5010.zip/node_modules/ramda/es/internal/_xfBase.js +0 -11
- package/.yarn/cache/ramda-npm-0.28.0-6a5fe8f6cc-44ea6e5010.zip/node_modules/ramda/es/internal/_xfBase.js.map +0 -1
- package/.yarn/cache/ramda-npm-0.28.0-6a5fe8f6cc-44ea6e5010.zip/node_modules/ramda/es/internal/_xfilter.js +0 -29
- package/.yarn/cache/ramda-npm-0.28.0-6a5fe8f6cc-44ea6e5010.zip/node_modules/ramda/es/internal/_xfilter.js.map +0 -1
- package/.yarn/cache/ramda-npm-0.28.0-6a5fe8f6cc-44ea6e5010.zip/node_modules/ramda/es/internal/_xwrap.js +0 -28
- package/.yarn/cache/ramda-npm-0.28.0-6a5fe8f6cc-44ea6e5010.zip/node_modules/ramda/es/internal/_xwrap.js.map +0 -1
- package/.yarn/cache/ramda-npm-0.28.0-6a5fe8f6cc-44ea6e5010.zip/node_modules/ramda/es/keys.js +0 -92
- package/.yarn/cache/ramda-npm-0.28.0-6a5fe8f6cc-44ea6e5010.zip/node_modules/ramda/es/keys.js.map +0 -1
- package/.yarn/cache/ramda-npm-0.28.0-6a5fe8f6cc-44ea6e5010.zip/node_modules/ramda/es/mergeDeepRight.js +0 -35
- package/.yarn/cache/ramda-npm-0.28.0-6a5fe8f6cc-44ea6e5010.zip/node_modules/ramda/es/mergeDeepRight.js.map +0 -1
- package/.yarn/cache/ramda-npm-0.28.0-6a5fe8f6cc-44ea6e5010.zip/node_modules/ramda/es/mergeDeepWithKey.js +0 -47
- package/.yarn/cache/ramda-npm-0.28.0-6a5fe8f6cc-44ea6e5010.zip/node_modules/ramda/es/mergeDeepWithKey.js.map +0 -1
- package/.yarn/cache/ramda-npm-0.28.0-6a5fe8f6cc-44ea6e5010.zip/node_modules/ramda/es/mergeWithKey.js +0 -52
- package/.yarn/cache/ramda-npm-0.28.0-6a5fe8f6cc-44ea6e5010.zip/node_modules/ramda/es/mergeWithKey.js.map +0 -1
- package/.yarn/cache/ramda-npm-0.28.0-6a5fe8f6cc-44ea6e5010.zip/node_modules/ramda/es/reject.js +0 -37
- package/.yarn/cache/ramda-npm-0.28.0-6a5fe8f6cc-44ea6e5010.zip/node_modules/ramda/es/reject.js.map +0 -1
- package/.yarn/cache/ramda-npm-0.28.0-6a5fe8f6cc-44ea6e5010.zip/node_modules/ramda/es/type.js +0 -36
- package/.yarn/cache/ramda-npm-0.28.0-6a5fe8f6cc-44ea6e5010.zip/node_modules/ramda/es/type.js.map +0 -1
- package/_virtual/_commonjsHelpers.js +0 -4
- package/_virtual/_commonjsHelpers.js.map +0 -1
- package/_virtual/dayjs.min.js +0 -4
- package/_virtual/dayjs.min.js.map +0 -1
- package/_virtual/dayjs.min2.js +0 -6
- package/_virtual/dayjs.min2.js.map +0 -1
- package/_virtual/fr.js +0 -4
- package/_virtual/fr.js.map +0 -1
- package/_virtual/timezone.js +0 -4
- package/_virtual/timezone.js.map +0 -1
- package/_virtual/utc.js +0 -4
- package/_virtual/utc.js.map +0 -1
- package/src/ThemeProvider.js +0 -13
- package/src/ThemeProvider.js.map +0 -1
- package/src/constants.js +0 -2
- package/src/constants.js.map +0 -1
- package/src/elements/Field.js +0 -9
- package/src/elements/Field.js.map +0 -1
- package/src/elements/Fieldset.js +0 -15
- package/src/elements/Fieldset.js.map +0 -1
- package/src/elements/Label.js +0 -12
- package/src/elements/Label.js.map +0 -1
- package/src/elements/Legend.js +0 -9
- package/src/elements/Legend.js.map +0 -1
- package/src/fields/Checkbox.js +0 -17
- package/src/fields/Checkbox.js.map +0 -1
- package/src/fields/DatePicker/CalendarPicker.js +0 -137
- package/src/fields/DatePicker/CalendarPicker.js.map +0 -1
- package/src/fields/DatePicker/index.js +0 -126
- package/src/fields/DatePicker/index.js.map +0 -1
- package/src/fields/DateRangePicker/DateInput.js +0 -84
- package/src/fields/DateRangePicker/DateInput.js.map +0 -1
- package/src/fields/DateRangePicker/NumberInput.js +0 -82
- package/src/fields/DateRangePicker/NumberInput.js.map +0 -1
- package/src/fields/DateRangePicker/RangeCalendarPicker.js +0 -147
- package/src/fields/DateRangePicker/RangeCalendarPicker.js.map +0 -1
- package/src/fields/DateRangePicker/RangedTimePicker.js +0 -90
- package/src/fields/DateRangePicker/RangedTimePicker.js.map +0 -1
- package/src/fields/DateRangePicker/TimeInput.js +0 -116
- package/src/fields/DateRangePicker/TimeInput.js.map +0 -1
- package/src/fields/DateRangePicker/constants.js +0 -34
- package/src/fields/DateRangePicker/constants.js.map +0 -1
- package/src/fields/DateRangePicker/index.js +0 -187
- package/src/fields/DateRangePicker/index.js.map +0 -1
- package/src/fields/DateRangePicker/types.js +0 -8
- package/src/fields/DateRangePicker/types.js.map +0 -1
- package/src/fields/DateRangePicker/utils.js +0 -73
- package/src/fields/DateRangePicker/utils.js.map +0 -1
- package/src/fields/MultiCheckbox.js +0 -52
- package/src/fields/MultiCheckbox.js.map +0 -1
- package/src/fields/MultiRadio.js +0 -54
- package/src/fields/MultiRadio.js.map +0 -1
- package/src/fields/MultiSelect.js +0 -33
- package/src/fields/MultiSelect.js.map +0 -1
- package/src/fields/Select.js +0 -27
- package/src/fields/Select.js.map +0 -1
- package/src/fields/TextInput.js +0 -25
- package/src/fields/TextInput.js.map +0 -1
- package/src/fields/Textarea.js +0 -28
- package/src/fields/Textarea.js.map +0 -1
- package/src/formiks/FormikCheckbox.js +0 -22
- package/src/formiks/FormikCheckbox.js.map +0 -1
- package/src/formiks/FormikDatePicker.js +0 -17
- package/src/formiks/FormikDatePicker.js.map +0 -1
- package/src/formiks/FormikDateRangePicker.js +0 -17
- package/src/formiks/FormikDateRangePicker.js.map +0 -1
- package/src/formiks/FormikEffect.js +0 -14
- package/src/formiks/FormikEffect.js.map +0 -1
- package/src/formiks/FormikMultiCheckbox.js +0 -21
- package/src/formiks/FormikMultiCheckbox.js.map +0 -1
- package/src/formiks/FormikMultiRadio.js +0 -21
- package/src/formiks/FormikMultiRadio.js.map +0 -1
- package/src/formiks/FormikMultiSelect.js +0 -21
- package/src/formiks/FormikMultiSelect.js.map +0 -1
- package/src/formiks/FormikSelect.js +0 -21
- package/src/formiks/FormikSelect.js.map +0 -1
- package/src/formiks/FormikTextInput.js +0 -21
- package/src/formiks/FormikTextInput.js.map +0 -1
- package/src/formiks/FormikTextarea.js +0 -21
- package/src/formiks/FormikTextarea.js.map +0 -1
- package/src/hooks/useForceUpdate.js +0 -17
- package/src/hooks/useForceUpdate.js.map +0 -1
- package/src/index.js +0 -28
- package/src/index.js.map +0 -1
- package/src/theme.js +0 -68
- package/src/theme.js.map +0 -1
- package/src/utils/capitalizeFirstLetter.js +0 -9
- package/src/utils/capitalizeFirstLetter.js.map +0 -1
- package/src/utils/dayjs.js +0 -11
- package/src/utils/dayjs.js.map +0 -1
- package/src/utils/getLocalizedDayjs.js +0 -19
- package/src/utils/getLocalizedDayjs.js.map +0 -1
- package/src/utils/getUtcDayjs.js +0 -9
- package/src/utils/getUtcDayjs.js.map +0 -1
- package/src/utils/getUtcizedDayjs.js +0 -20
- package/src/utils/getUtcizedDayjs.js.map +0 -1
- package/src/utils/sortDates.js +0 -12
- package/src/utils/sortDates.js.map +0 -1
- package/src/utils/stopMouseEventPropagation.js +0 -6
- package/src/utils/stopMouseEventPropagation.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/fields/DateRangePicker/index.tsx"],"sourcesContent":["// TODO We should make this component both form- & a11y-compliant with a `name` and proper (aria-)labels.\n\nimport { useCallback, useEffect, useMemo, useRef } from 'react'\nimport styled from 'styled-components'\n\nimport { Fieldset } from '../../elements/Fieldset'\nimport { Legend } from '../../elements/Legend'\nimport { useForceUpdate } from '../../hooks/useForceUpdate'\nimport { getLocalizedDayjs } from '../../utils/getLocalizedDayjs'\nimport { getUtcizedDayjs } from '../../utils/getUtcizedDayjs'\nimport { DateInput } from './DateInput'\nimport { RangeCalendarPicker } from './RangeCalendarPicker'\nimport { TimeInput } from './TimeInput'\nimport { DateOrTimeInputRef, DateRangePosition, DateTuple, DateTupleRange, TimeTuple } from './types'\nimport { getDateFromDateAndTimeTuple, getDateTupleFromDate, getTimeTupleFromDate } from './utils'\n\nimport type { DateRange } from '../../types'\nimport type { MutableRefObject } from 'react'\nimport type { Promisable } from 'type-fest'\n\nexport type DateRangePickerProps = {\n defaultValue?: DateRange\n /** Only allow past dates until today. */\n isHistorical?: boolean\n isLabelHidden?: boolean\n label: string\n /**\n * Range of minutes used to generate the time picker list.\n *\n * @example\n * `15` would produce a list with `..., 10:45, 11:00, 11:15, ...`.\n */\n minutesRange?: number\n /**\n * Called each time the date range picker is changed to a new valid value.\n *\n * @param nextUtcDateRange - A utcized date to be used as is to interact with the API.\n */\n onChange?: (nextUtcDateRange: DateRange) => Promisable<void>\n withTime?: boolean\n}\nexport function DateRangePicker({\n defaultValue,\n isHistorical = false,\n isLabelHidden = false,\n label,\n minutesRange = 15,\n onChange,\n withTime = false\n}: DateRangePickerProps) {\n const startDateInputRef = useRef() as MutableRefObject<DateOrTimeInputRef>\n const startTimeInputRef = useRef() as MutableRefObject<DateOrTimeInputRef>\n const endDateInputRef = useRef() as MutableRefObject<DateOrTimeInputRef>\n const endTimeInputRef = useRef() as MutableRefObject<DateOrTimeInputRef>\n\n const isRangeCalendarPickerOpenRef = useRef(false)\n\n const selectedStartDateRef = useRef<Date | undefined>(\n defaultValue ? getLocalizedDayjs(defaultValue[0]).toDate() : undefined\n )\n const selectedEndDateRef = useRef<Date | undefined>(\n defaultValue ? getLocalizedDayjs(defaultValue[1]).toDate() : undefined\n )\n const selectedStartDateTupleRef = useRef<DateTuple | undefined>(getDateTupleFromDate(selectedStartDateRef.current))\n const selectedEndDateTupleRef = useRef<DateTuple | undefined>(getDateTupleFromDate(selectedEndDateRef.current))\n const selectedStartTimeTupleRef = useRef<TimeTuple | undefined>(getTimeTupleFromDate(selectedStartDateRef.current))\n const selectedEndTimeTupleRef = useRef<TimeTuple | undefined>(getTimeTupleFromDate(selectedEndDateRef.current))\n\n const { forceUpdate } = useForceUpdate()\n\n const rangeCalendarPickerDefaultValue = useMemo(\n () =>\n selectedStartDateTupleRef.current && selectedEndDateTupleRef.current\n ? ([\n getDateFromDateAndTimeTuple(selectedStartDateTupleRef.current, ['00', '00']),\n getDateFromDateAndTimeTuple(selectedEndDateTupleRef.current, ['00', '00'], true)\n ] as DateRange)\n : undefined,\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [selectedEndDateTupleRef.current, selectedStartDateTupleRef.current]\n )\n\n const submit = useCallback(() => {\n if (!onChange || !selectedStartDateRef.current || !selectedEndDateRef.current) {\n return\n }\n\n const utcizedStartDate = getUtcizedDayjs(selectedStartDateRef.current).toDate()\n const utcizedEndDate = getUtcizedDayjs(selectedEndDateRef.current).toDate()\n\n const nextDateRange: DateRange = [utcizedStartDate, utcizedEndDate]\n onChange(nextDateRange)\n }, [onChange])\n\n const closeRangeCalendarPicker = useCallback(() => {\n isRangeCalendarPickerOpenRef.current = false\n\n forceUpdate()\n }, [forceUpdate])\n\n const handleClickOutside = useCallback(\n (event: globalThis.MouseEvent) => {\n const target = event.target as Node | null\n\n if (startDateInputRef.current.boxSpan.contains(target) || endDateInputRef.current.boxSpan.contains(target)) {\n return\n }\n\n closeRangeCalendarPicker()\n },\n [closeRangeCalendarPicker]\n )\n\n const handleEndDateInputNext = useCallback(() => {\n if (!withTime) {\n return\n }\n\n endTimeInputRef.current.focus()\n }, [withTime])\n\n const handleEndDateInputPrevious = useCallback(() => {\n if (withTime) {\n startTimeInputRef.current.focus(true)\n\n return\n }\n\n startDateInputRef.current.focus(true)\n }, [withTime])\n\n const handleStartDateInputNext = useCallback(() => {\n if (withTime) {\n startTimeInputRef.current.focus()\n\n return\n }\n\n endDateInputRef.current.focus()\n }, [withTime])\n\n const handleDateInputFilled = useCallback(\n (position: DateRangePosition, nextDateTuple: DateTuple) => {\n if (position === DateRangePosition.START) {\n selectedStartDateTupleRef.current = nextDateTuple\n\n // If there is no time input or a start time has already been selected,\n if (!withTime || selectedStartTimeTupleRef.current) {\n // we must update the selected start date and call onChange()\n const startTimeTuple = (withTime ? selectedStartTimeTupleRef.current : ['00', '00']) as TimeTuple\n const nextStartDate = getDateFromDateAndTimeTuple(nextDateTuple, startTimeTuple)\n\n selectedStartDateRef.current = nextStartDate\n\n submit()\n }\n\n handleStartDateInputNext()\n } else {\n selectedEndDateTupleRef.current = nextDateTuple\n\n // If there is no time input or an end time has already been selected,\n if (!withTime || selectedEndTimeTupleRef.current) {\n // we must update the selected end date and call onChange()\n const endTimeTuple = (withTime ? selectedEndTimeTupleRef.current : ['23', '59']) as TimeTuple\n const nextEndDate = getDateFromDateAndTimeTuple(nextDateTuple, endTimeTuple, true)\n\n selectedEndDateRef.current = nextEndDate\n\n submit()\n }\n\n handleEndDateInputNext()\n }\n },\n [handleEndDateInputNext, handleStartDateInputNext, submit, withTime]\n )\n\n const handleRangeCalendarPickerChange = useCallback(\n (nextDateTupleRange: DateTupleRange) => {\n const [nextStartDateTuple, nextEndDateTuple] = nextDateTupleRange\n\n // If this is a date picker without a time input,\n if (!withTime) {\n // we have to fix the start date at the beginning of the day\n const nextStartDate = getDateFromDateAndTimeTuple(nextStartDateTuple, ['00', '00'])\n // and the end date at the end of the day\n const nextEndDate = getDateFromDateAndTimeTuple(nextEndDateTuple, ['23', '59'], true)\n\n selectedStartDateRef.current = nextStartDate\n selectedEndDateRef.current = nextEndDate\n }\n\n // If this is a date picker with a time input,\n else {\n // we include the selected start time if it exists, set it at the beginning of the day if not\n const nextStartDate = getDateFromDateAndTimeTuple(\n nextStartDateTuple,\n selectedStartTimeTupleRef.current || ['00', '00']\n )\n selectedStartDateRef.current = nextStartDate\n\n // we include the selected end time if it exists, set it at the end of the day if not\n const nextEndDate = getDateFromDateAndTimeTuple(\n nextEndDateTuple,\n selectedEndTimeTupleRef.current || ['23', '59'],\n true\n )\n\n selectedEndDateRef.current = nextEndDate\n }\n\n selectedStartDateTupleRef.current = nextStartDateTuple\n selectedStartTimeTupleRef.current = getTimeTupleFromDate(selectedStartDateRef.current)\n selectedEndDateTupleRef.current = nextEndDateTuple\n selectedEndTimeTupleRef.current = getTimeTupleFromDate(selectedEndDateRef.current)\n\n closeRangeCalendarPicker()\n forceUpdate()\n\n submit()\n },\n [closeRangeCalendarPicker, forceUpdate, submit, withTime]\n )\n\n const handleTimeInputFilled = useCallback(\n (position: DateRangePosition, nextTimeTuple: TimeTuple) => {\n if (position === DateRangePosition.START) {\n // If a start date has already been selected\n if (selectedStartDateTupleRef.current) {\n // we must update the selected start date accordingly and submit it\n const nextStartDate = getDateFromDateAndTimeTuple(selectedStartDateTupleRef.current, nextTimeTuple)\n\n selectedStartDateRef.current = nextStartDate\n\n submit()\n }\n\n selectedStartTimeTupleRef.current = nextTimeTuple\n\n endDateInputRef.current.focus()\n } else {\n // If an end date has already been selected\n if (selectedEndDateTupleRef.current) {\n // we must update the selected end date accordingly and submit it\n const nextEndDate = getDateFromDateAndTimeTuple(selectedEndDateTupleRef.current, nextTimeTuple, true)\n\n selectedEndDateRef.current = nextEndDate\n\n submit()\n }\n\n selectedEndTimeTupleRef.current = nextTimeTuple\n }\n\n submit()\n },\n [submit]\n )\n\n const openRangeCalendarPicker = useCallback(() => {\n isRangeCalendarPickerOpenRef.current = true\n\n forceUpdate()\n }, [forceUpdate])\n\n useEffect(() => {\n window.document.addEventListener('click', handleClickOutside)\n\n return () => {\n window.document.removeEventListener('click', handleClickOutside)\n }\n }, [handleClickOutside])\n\n return (\n <Fieldset className=\"DateRangePicker\">\n <Legend isHidden={isLabelHidden}>{label}</Legend>\n\n <Box>\n <Field>\n <DateInput\n ref={startDateInputRef}\n defaultValue={selectedStartDateTupleRef.current}\n isForcedFocused={isRangeCalendarPickerOpenRef.current}\n isStartDate\n onChange={nextDateTuple => handleDateInputFilled(DateRangePosition.START, nextDateTuple)}\n onClick={openRangeCalendarPicker}\n onNext={handleStartDateInputNext}\n />\n </Field>\n\n {withTime && (\n <Field isTimeField>\n <TimeInput\n ref={startTimeInputRef}\n defaultValue={selectedStartTimeTupleRef.current}\n isStartDate\n minutesRange={minutesRange}\n onBack={() => startDateInputRef.current.focus(true)}\n onChange={nextTimeTuple => handleTimeInputFilled(DateRangePosition.START, nextTimeTuple)}\n onFocus={closeRangeCalendarPicker}\n onNext={() => endDateInputRef.current.focus()}\n onPrevious={() => startDateInputRef.current.focus(true)}\n />\n </Field>\n )}\n\n <Field isEndDateField>\n <DateInput\n ref={endDateInputRef}\n defaultValue={selectedEndDateTupleRef.current}\n isEndDate\n isForcedFocused={isRangeCalendarPickerOpenRef.current}\n onBack={handleEndDateInputPrevious}\n onChange={nextDateTuple => handleDateInputFilled(DateRangePosition.END, nextDateTuple)}\n onClick={openRangeCalendarPicker}\n onNext={handleEndDateInputNext}\n onPrevious={handleEndDateInputPrevious}\n />\n </Field>\n\n {withTime && (\n <Field isTimeField>\n <TimeInput\n ref={endTimeInputRef}\n defaultValue={selectedEndTimeTupleRef.current}\n minutesRange={minutesRange}\n onBack={() => endDateInputRef.current.focus(true)}\n onChange={nextTimeTuple => handleTimeInputFilled(DateRangePosition.END, nextTimeTuple)}\n onFocus={closeRangeCalendarPicker}\n onPrevious={() => endDateInputRef.current.focus(true)}\n />\n </Field>\n )}\n </Box>\n\n {isRangeCalendarPickerOpenRef.current && (\n <RangeCalendarPicker\n defaultValue={rangeCalendarPickerDefaultValue}\n isHistorical={isHistorical}\n onChange={handleRangeCalendarPickerChange}\n />\n )}\n </Fieldset>\n )\n}\n\nconst Box = styled.div`\n * {\n font-weight: 500;\n line-height: 1;\n }\n\n color: ${p => p.theme.color.gunMetal};\n font-size: 13px;\n position: relative;\n`\n\nconst Field = styled.span<{\n isEndDateField?: boolean\n isTimeField?: boolean\n}>`\n font-size: inherit;\n margin-left: ${p => {\n if (p.isEndDateField) {\n return '0.625rem'\n }\n\n return p.isTimeField ? '0.125rem' : 0\n }};\n`\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sources":["../../../../src/fields/DateRangePicker/types.ts"],"sourcesContent":["export type DateOrTimeInputRef = {\n boxSpan: HTMLSpanElement\n /**\n * Focus the first input in the group.\n *\n * @param inLastInputOfTheGroup - If `true`, focus the last input in the group instead of the first one\n */\n focus: (inLastInputOfTheGroup?: boolean) => void\n}\n\nexport enum DateRangePosition {\n END = 'END',\n START = 'START'\n}\n\n/** In the shape of [\"YYYY\", \"MM\", \"DD\"]. */\nexport type DateTuple = [string, string, string]\n\nexport type DateTupleRange = [DateTuple, DateTuple]\n\n/** In the shape of [\"hh\", \"mm\"]. */\nexport type TimeTuple = [string, string]\n"],"names":[],"mappings":"IAUY,kBAGX;AAHD,CAAA,UAAY,iBAAiB,EAAA;AAC3B,IAAA,iBAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,iBAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACjB,CAAC,EAHW,iBAAiB,KAAjB,iBAAiB,GAG5B,EAAA,CAAA,CAAA;;;;"}
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
import '../../utils/dayjs.js';
|
|
2
|
-
import dayjs_minExports from '../../../_virtual/dayjs.min2.js';
|
|
3
|
-
|
|
4
|
-
// TODO Use `date-fns` instead of `dayjs`.
|
|
5
|
-
function formatNumberAsDoubleDigit(numberLike) {
|
|
6
|
-
return String(numberLike).padStart(2, '0');
|
|
7
|
-
}
|
|
8
|
-
function getDateFromDateAndTimeTuple(dateTuple, timeTuple, isEnd = false) {
|
|
9
|
-
const [year, month, day] = dateTuple;
|
|
10
|
-
const [hour, minute] = timeTuple;
|
|
11
|
-
const rawDateAsDayjs = dayjs_minExports()
|
|
12
|
-
.year(Number(year))
|
|
13
|
-
.month(Number(month) - 1)
|
|
14
|
-
.date(Number(day))
|
|
15
|
-
.hour(Number(hour))
|
|
16
|
-
.minute(Number(minute));
|
|
17
|
-
return isEnd
|
|
18
|
-
? rawDateAsDayjs
|
|
19
|
-
.endOf('minute')
|
|
20
|
-
// TODO For some reason the API can't handle miliseconds in dates.
|
|
21
|
-
// That's why we set it to 0 (instead of 999)
|
|
22
|
-
.millisecond(0)
|
|
23
|
-
.toDate()
|
|
24
|
-
: rawDateAsDayjs.startOf('minute').toDate();
|
|
25
|
-
}
|
|
26
|
-
function getDateTupleFromDate(date) {
|
|
27
|
-
if (!date) {
|
|
28
|
-
return undefined;
|
|
29
|
-
}
|
|
30
|
-
return [
|
|
31
|
-
String(date.getFullYear()),
|
|
32
|
-
formatNumberAsDoubleDigit(date.getMonth() + 1),
|
|
33
|
-
formatNumberAsDoubleDigit(date.getDate())
|
|
34
|
-
];
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Generate a list of ranged time options.
|
|
38
|
-
*
|
|
39
|
-
* @example
|
|
40
|
-
* ```
|
|
41
|
-
* (minutesRange = 30) => ([
|
|
42
|
-
* { label: '00:00', value: ['00', '00'] },
|
|
43
|
-
* { label: '00:30', value: ['00', '30'] },
|
|
44
|
-
* { label: '01:00', value: ['01', '00'] },
|
|
45
|
-
* { label: '01:30', value: ['01', '30'] },
|
|
46
|
-
* { label: '02:00', value: ['02', '00'] },
|
|
47
|
-
* ...
|
|
48
|
-
* ])
|
|
49
|
-
* ```
|
|
50
|
-
*/
|
|
51
|
-
const getRangedTimeOptions = (minutesRange) => {
|
|
52
|
-
const perHourOptionsLength = 60 / minutesRange;
|
|
53
|
-
const totalOptionsLength = 24 * perHourOptionsLength;
|
|
54
|
-
return new Array(totalOptionsLength).fill(undefined).map((_, index) => {
|
|
55
|
-
const hour = Math.floor(index / perHourOptionsLength);
|
|
56
|
-
const minute = minutesRange * (index % perHourOptionsLength);
|
|
57
|
-
const label = `${String(hour).padStart(2, '0')}:${String(minute).padStart(2, '0')}`;
|
|
58
|
-
const value = [formatNumberAsDoubleDigit(hour), formatNumberAsDoubleDigit(minute)];
|
|
59
|
-
return {
|
|
60
|
-
label,
|
|
61
|
-
value
|
|
62
|
-
};
|
|
63
|
-
});
|
|
64
|
-
};
|
|
65
|
-
function getTimeTupleFromDate(date) {
|
|
66
|
-
if (!date) {
|
|
67
|
-
return undefined;
|
|
68
|
-
}
|
|
69
|
-
return [formatNumberAsDoubleDigit(date.getHours()), formatNumberAsDoubleDigit(date.getMinutes())];
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
export { formatNumberAsDoubleDigit, getDateFromDateAndTimeTuple, getDateTupleFromDate, getRangedTimeOptions, getTimeTupleFromDate };
|
|
73
|
-
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sources":["../../../../src/fields/DateRangePicker/utils.ts"],"sourcesContent":["// TODO Use `date-fns` instead of `dayjs`.\n\nimport { dayjs } from '../../utils/dayjs'\n\nimport type { Option } from '../../types'\nimport type { DateTuple, TimeTuple } from './types'\n\nexport function formatNumberAsDoubleDigit(numberLike: number | string): string {\n return String(numberLike).padStart(2, '0')\n}\n\nexport function getDateFromDateAndTimeTuple(dateTuple: DateTuple, timeTuple: TimeTuple, isEnd: boolean = false): Date {\n const [year, month, day] = dateTuple\n const [hour, minute] = timeTuple\n\n const rawDateAsDayjs = dayjs()\n .year(Number(year))\n .month(Number(month) - 1)\n .date(Number(day))\n .hour(Number(hour))\n .minute(Number(minute))\n\n return isEnd\n ? rawDateAsDayjs\n .endOf('minute')\n // TODO For some reason the API can't handle miliseconds in dates.\n // That's why we set it to 0 (instead of 999)\n .millisecond(0)\n .toDate()\n : rawDateAsDayjs.startOf('minute').toDate()\n}\n\nexport function getDateTupleFromDate(date: undefined): undefined\nexport function getDateTupleFromDate(date: Date): DateTuple\nexport function getDateTupleFromDate(date?: Date): DateTuple | undefined\nexport function getDateTupleFromDate(date?: Date): DateTuple | undefined {\n if (!date) {\n return undefined\n }\n\n return [\n String(date.getFullYear()),\n formatNumberAsDoubleDigit(date.getMonth() + 1),\n formatNumberAsDoubleDigit(date.getDate())\n ]\n}\n\n/**\n * Generate a list of ranged time options.\n *\n * @example\n * ```\n * (minutesRange = 30) => ([\n * { label: '00:00', value: ['00', '00'] },\n * { label: '00:30', value: ['00', '30'] },\n * { label: '01:00', value: ['01', '00'] },\n * { label: '01:30', value: ['01', '30'] },\n * { label: '02:00', value: ['02', '00'] },\n * ...\n * ])\n * ```\n */\nexport const getRangedTimeOptions = (minutesRange: number): Option<TimeTuple>[] => {\n const perHourOptionsLength = 60 / minutesRange\n const totalOptionsLength = 24 * perHourOptionsLength\n\n return new Array(totalOptionsLength).fill(undefined).map((_, index) => {\n const hour = Math.floor(index / perHourOptionsLength)\n const minute = minutesRange * (index % perHourOptionsLength)\n const label = `${String(hour).padStart(2, '0')}:${String(minute).padStart(2, '0')}`\n const value: TimeTuple = [formatNumberAsDoubleDigit(hour), formatNumberAsDoubleDigit(minute)]\n\n return {\n label,\n value\n }\n })\n}\n\nexport function getTimeTupleFromDate(date?: Date): TimeTuple | undefined {\n if (!date) {\n return undefined\n }\n\n return [formatNumberAsDoubleDigit(date.getHours()), formatNumberAsDoubleDigit(date.getMinutes())]\n}\n"],"names":["dayjs"],"mappings":";;;AAAA;AAOM,SAAU,yBAAyB,CAAC,UAA2B,EAAA;IACnE,OAAO,MAAM,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;AAC5C,CAAC;AAEK,SAAU,2BAA2B,CAAC,SAAoB,EAAE,SAAoB,EAAE,QAAiB,KAAK,EAAA;IAC5G,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,GAAG,SAAS,CAAA;AACpC,IAAA,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,SAAS,CAAA;IAEhC,MAAM,cAAc,GAAGA,gBAAK,EAAE;AAC3B,SAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAClB,SAAA,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACxB,SAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACjB,SAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAClB,SAAA,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA;AAEzB,IAAA,OAAO,KAAK;AACV,UAAE,cAAc;aACX,KAAK,CAAC,QAAQ,CAAC;;;aAGf,WAAW,CAAC,CAAC,CAAC;AACd,aAAA,MAAM,EAAE;UACX,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAA;AAC/C,CAAC;AAKK,SAAU,oBAAoB,CAAC,IAAW,EAAA;IAC9C,IAAI,CAAC,IAAI,EAAE;AACT,QAAA,OAAO,SAAS,CAAA;AACjB,KAAA;IAED,OAAO;AACL,QAAA,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;AAC1B,QAAA,yBAAyB,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AAC9C,QAAA,yBAAyB,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;KAC1C,CAAA;AACH,CAAC;AAED;;;;;;;;;;;;;;AAcG;AACU,MAAA,oBAAoB,GAAG,CAAC,YAAoB,KAAyB;AAChF,IAAA,MAAM,oBAAoB,GAAG,EAAE,GAAG,YAAY,CAAA;AAC9C,IAAA,MAAM,kBAAkB,GAAG,EAAE,GAAG,oBAAoB,CAAA;AAEpD,IAAA,OAAO,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;QACpE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,oBAAoB,CAAC,CAAA;QACrD,MAAM,MAAM,GAAG,YAAY,IAAI,KAAK,GAAG,oBAAoB,CAAC,CAAA;QAC5D,MAAM,KAAK,GAAG,CAAA,EAAG,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA,CAAA,EAAI,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA,CAAE,CAAA;AACnF,QAAA,MAAM,KAAK,GAAc,CAAC,yBAAyB,CAAC,IAAI,CAAC,EAAE,yBAAyB,CAAC,MAAM,CAAC,CAAC,CAAA;QAE7F,OAAO;YACL,KAAK;YACL,KAAK;SACN,CAAA;AACH,KAAC,CAAC,CAAA;AACJ,EAAC;AAEK,SAAU,oBAAoB,CAAC,IAAW,EAAA;IAC9C,IAAI,CAAC,IAAI,EAAE;AACT,QAAA,OAAO,SAAS,CAAA;AACjB,KAAA;AAED,IAAA,OAAO,CAAC,yBAAyB,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,yBAAyB,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAA;AACnG;;;;"}
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
-
import equals from '../../.yarn/cache/ramda-npm-0.28.0-6a5fe8f6cc-44ea6e5010.zip/node_modules/ramda/es/equals.js';
|
|
3
|
-
import reject from '../../.yarn/cache/ramda-npm-0.28.0-6a5fe8f6cc-44ea6e5010.zip/node_modules/ramda/es/reject.js';
|
|
4
|
-
import { useRef, useMemo, useCallback } from 'react';
|
|
5
|
-
import styled, { css } from 'styled-components';
|
|
6
|
-
import { Fieldset } from '../elements/Fieldset.js';
|
|
7
|
-
import { Legend } from '../elements/Legend.js';
|
|
8
|
-
import { Checkbox } from './Checkbox.js';
|
|
9
|
-
|
|
10
|
-
function MultiCheckbox({ defaultValue = [], isInline = false, isLabelHidden = false, label, name, onChange, options }) {
|
|
11
|
-
const checkedOptionValues = useRef(defaultValue);
|
|
12
|
-
const key = useMemo(() => `${name}-${JSON.stringify(defaultValue)}`, [defaultValue, name]);
|
|
13
|
-
const handleChange = useCallback((nextOptionValue, isChecked) => {
|
|
14
|
-
const nextCheckedOptionValues = isChecked
|
|
15
|
-
? [...checkedOptionValues.current, nextOptionValue]
|
|
16
|
-
: reject(equals(nextOptionValue))(checkedOptionValues.current);
|
|
17
|
-
checkedOptionValues.current = nextCheckedOptionValues;
|
|
18
|
-
if (onChange) {
|
|
19
|
-
const normalizedNextValue = nextCheckedOptionValues.length ? nextCheckedOptionValues : undefined;
|
|
20
|
-
onChange(normalizedNextValue);
|
|
21
|
-
}
|
|
22
|
-
}, [onChange]);
|
|
23
|
-
return (jsxs(Fieldset, { children: [jsx(Legend, { isHidden: isLabelHidden, children: label }), jsx(ChecboxesBox, { isInline: isInline, children: options.map((option, index) => (jsx(Checkbox, { defaultChecked: defaultValue.includes(option.value), label: option.label, name: `${name}${index}`, onChange: (isChecked) => handleChange(option.value, isChecked) }))) })] }, key));
|
|
24
|
-
}
|
|
25
|
-
const ChecboxesBox = styled.div `
|
|
26
|
-
color: ${p => p.theme.color.gunMetal};
|
|
27
|
-
display: flex;
|
|
28
|
-
flex-direction: ${p => (p.isInline ? 'row' : 'column')};
|
|
29
|
-
font-weight: 500;
|
|
30
|
-
|
|
31
|
-
> .rs-checkbox {
|
|
32
|
-
> .rs-checkbox-checker {
|
|
33
|
-
padding-left: 28px;
|
|
34
|
-
padding-top: 2px;
|
|
35
|
-
|
|
36
|
-
.rs-checkbox-wrapper {
|
|
37
|
-
left: 2px;
|
|
38
|
-
top: 0 !important;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
${p => p.isInline &&
|
|
44
|
-
css `
|
|
45
|
-
> .rs-checkbox:not(:first-child) {
|
|
46
|
-
margin-left: 0.75rem;
|
|
47
|
-
}
|
|
48
|
-
`}
|
|
49
|
-
`;
|
|
50
|
-
|
|
51
|
-
export { MultiCheckbox };
|
|
52
|
-
//# sourceMappingURL=MultiCheckbox.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MultiCheckbox.js","sources":["../../../src/fields/MultiCheckbox.tsx"],"sourcesContent":["import { equals, reject } from 'ramda'\nimport { useCallback, useMemo, useRef } from 'react'\nimport styled, { css } from 'styled-components'\n\nimport { Fieldset } from '../elements/Fieldset'\nimport { Legend } from '../elements/Legend'\nimport { Checkbox } from './Checkbox'\n\nimport type { Option } from '../types'\nimport type { Promisable } from 'type-fest'\n\nexport type MultiCheckboxProps = {\n defaultValue?: string[]\n isInline?: boolean\n isLabelHidden?: boolean\n label: string\n name: string\n onChange?: (nextValue: string[] | undefined) => Promisable<void>\n options: Option[]\n}\nexport function MultiCheckbox({\n defaultValue = [],\n isInline = false,\n isLabelHidden = false,\n label,\n name,\n onChange,\n options\n}: MultiCheckboxProps) {\n const checkedOptionValues = useRef<string[]>(defaultValue)\n\n const key = useMemo(() => `${name}-${JSON.stringify(defaultValue)}`, [defaultValue, name])\n\n const handleChange = useCallback(\n (nextOptionValue: string, isChecked: boolean) => {\n const nextCheckedOptionValues = isChecked\n ? [...checkedOptionValues.current, nextOptionValue]\n : reject(equals(nextOptionValue))(checkedOptionValues.current)\n\n checkedOptionValues.current = nextCheckedOptionValues\n\n if (onChange) {\n const normalizedNextValue = nextCheckedOptionValues.length ? nextCheckedOptionValues : undefined\n\n onChange(normalizedNextValue)\n }\n },\n [onChange]\n )\n\n return (\n <Fieldset key={key}>\n <Legend isHidden={isLabelHidden}>{label}</Legend>\n\n <ChecboxesBox isInline={isInline}>\n {options.map((option, index) => (\n <Checkbox\n defaultChecked={defaultValue.includes(option.value)}\n label={option.label}\n name={`${name}${index}`}\n onChange={(isChecked: boolean) => handleChange(option.value, isChecked)}\n />\n ))}\n </ChecboxesBox>\n </Fieldset>\n )\n}\n\nconst ChecboxesBox = styled.div<{\n isInline: boolean\n}>`\n color: ${p => p.theme.color.gunMetal};\n display: flex;\n flex-direction: ${p => (p.isInline ? 'row' : 'column')};\n font-weight: 500;\n\n > .rs-checkbox {\n > .rs-checkbox-checker {\n padding-left: 28px;\n padding-top: 2px;\n\n .rs-checkbox-wrapper {\n left: 2px;\n top: 0 !important;\n }\n }\n }\n\n ${p =>\n p.isInline &&\n css`\n > .rs-checkbox:not(:first-child) {\n margin-left: 0.75rem;\n }\n `}\n`\n"],"names":["_jsxs","_jsx"],"mappings":";;;;;;;;;AAoBM,SAAU,aAAa,CAAC,EAC5B,YAAY,GAAG,EAAE,EACjB,QAAQ,GAAG,KAAK,EAChB,aAAa,GAAG,KAAK,EACrB,KAAK,EACL,IAAI,EACJ,QAAQ,EACR,OAAO,EACY,EAAA;AACnB,IAAA,MAAM,mBAAmB,GAAG,MAAM,CAAW,YAAY,CAAC,CAAA;IAE1D,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAA,CAAE,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,CAAA;IAE1F,MAAM,YAAY,GAAG,WAAW,CAC9B,CAAC,eAAuB,EAAE,SAAkB,KAAI;QAC9C,MAAM,uBAAuB,GAAG,SAAS;cACrC,CAAC,GAAG,mBAAmB,CAAC,OAAO,EAAE,eAAe,CAAC;AACnD,cAAE,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAA;AAEhE,QAAA,mBAAmB,CAAC,OAAO,GAAG,uBAAuB,CAAA;AAErD,QAAA,IAAI,QAAQ,EAAE;AACZ,YAAA,MAAM,mBAAmB,GAAG,uBAAuB,CAAC,MAAM,GAAG,uBAAuB,GAAG,SAAS,CAAA;YAEhG,QAAQ,CAAC,mBAAmB,CAAC,CAAA;AAC9B,SAAA;AACH,KAAC,EACD,CAAC,QAAQ,CAAC,CACX,CAAA;AAED,IAAA,QACEA,IAAC,CAAA,QAAQ,eACPC,GAAC,CAAA,MAAM,IAAC,QAAQ,EAAE,aAAa,EAAA,QAAA,EAAG,KAAK,EAAU,CAAA,EAEjDA,IAAC,YAAY,EAAA,EAAC,QAAQ,EAAE,QAAQ,EAC7B,QAAA,EAAA,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,MACzBA,IAAC,QAAQ,EAAA,EACP,cAAc,EAAE,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EACnD,KAAK,EAAE,MAAM,CAAC,KAAK,EACnB,IAAI,EAAE,GAAG,IAAI,CAAA,EAAG,KAAK,CAAE,CAAA,EACvB,QAAQ,EAAE,CAAC,SAAkB,KAAK,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,EAAA,CACvE,CACH,CAAC,EAAA,CACW,KAZF,GAAG,CAaP,EACZ;AACH,CAAC;AAED,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAE7B,CAAA;WACS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAA;;AAElB,kBAAA,EAAA,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,KAAK,GAAG,QAAQ,CAAC,CAAA;;;;;;;;;;;;;;;AAepD,EAAA,EAAA,CAAC,IACD,CAAC,CAAC,QAAQ;AACV,IAAA,GAAG,CAAA,CAAA;;;;AAIF,IAAA,CAAA,CAAA;CACJ;;;;"}
|
package/src/fields/MultiRadio.js
DELETED
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
-
import { useState, useMemo, useCallback, useEffect } from 'react';
|
|
3
|
-
import { Radio } from 'rsuite';
|
|
4
|
-
import styled, { css } from 'styled-components';
|
|
5
|
-
import { Fieldset } from '../elements/Fieldset.js';
|
|
6
|
-
import { Legend } from '../elements/Legend.js';
|
|
7
|
-
|
|
8
|
-
function MultiRadio({ defaultValue, isInline = false, isLabelHidden = false, label, name, onChange, options }) {
|
|
9
|
-
const [checkedOptionValue, setCheckedOptionValue] = useState(undefined);
|
|
10
|
-
const key = useMemo(() => `${name}-${String(checkedOptionValue)}}`, [checkedOptionValue, name]);
|
|
11
|
-
const handleChange = useCallback((nextOptionValue, isChecked) => {
|
|
12
|
-
const nextCheckedOptionValue = isChecked ? nextOptionValue : undefined;
|
|
13
|
-
setCheckedOptionValue(nextCheckedOptionValue);
|
|
14
|
-
if (onChange) {
|
|
15
|
-
onChange(nextCheckedOptionValue);
|
|
16
|
-
}
|
|
17
|
-
}, [onChange]);
|
|
18
|
-
// TODO There may be a better solution.
|
|
19
|
-
// A key change is not enough to force radio checked check changes
|
|
20
|
-
// on `defaultValue` property update (even when appending `defaultValue` to `key`),
|
|
21
|
-
// we need to force a second re-render in order for the changes to be applied.
|
|
22
|
-
useEffect(() => {
|
|
23
|
-
setCheckedOptionValue(defaultValue);
|
|
24
|
-
}, [defaultValue]);
|
|
25
|
-
return (jsxs(Fieldset, { children: [jsx(Legend, { isHidden: isLabelHidden, children: label }), jsx(ChecboxesBox, { isInline: isInline, children: options.map(option => (jsx(Radio, { defaultChecked: option.value === checkedOptionValue, name: name, onChange: (_, isChecked) => handleChange(option.value, isChecked), children: option.label }))) })] }, key));
|
|
26
|
-
}
|
|
27
|
-
const ChecboxesBox = styled.div `
|
|
28
|
-
color: ${p => p.theme.color.gunMetal};
|
|
29
|
-
display: flex;
|
|
30
|
-
flex-direction: ${p => (p.isInline ? 'row' : 'column')};
|
|
31
|
-
font-weight: 500;
|
|
32
|
-
|
|
33
|
-
> .rs-radio {
|
|
34
|
-
> .rs-radio-checker {
|
|
35
|
-
padding-left: 28px;
|
|
36
|
-
padding-top: 2px;
|
|
37
|
-
|
|
38
|
-
.rs-radio-wrapper {
|
|
39
|
-
left: 2px;
|
|
40
|
-
top: 3px !important;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
${p => p.isInline &&
|
|
46
|
-
css `
|
|
47
|
-
> .rs-radio:not(:first-child) {
|
|
48
|
-
margin-left: 0.75rem;
|
|
49
|
-
}
|
|
50
|
-
`}
|
|
51
|
-
`;
|
|
52
|
-
|
|
53
|
-
export { MultiRadio };
|
|
54
|
-
//# sourceMappingURL=MultiRadio.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MultiRadio.js","sources":["../../../src/fields/MultiRadio.tsx"],"sourcesContent":["import { useCallback, useEffect, useMemo, useState } from 'react'\nimport { Radio } from 'rsuite'\nimport styled, { css } from 'styled-components'\n\nimport { Fieldset } from '../elements/Fieldset'\nimport { Legend } from '../elements/Legend'\n\nimport type { Option } from '../types'\nimport type { Promisable } from 'type-fest'\n\nexport type MultiRadioProps = {\n defaultValue?: string\n isInline?: boolean\n isLabelHidden?: boolean\n label: string\n name: string\n onChange?: (nextValue: string | undefined) => Promisable<void>\n options: Option[]\n}\nexport function MultiRadio({\n defaultValue,\n isInline = false,\n isLabelHidden = false,\n label,\n name,\n onChange,\n options\n}: MultiRadioProps) {\n const [checkedOptionValue, setCheckedOptionValue] = useState<string | undefined>(undefined)\n\n const key = useMemo(() => `${name}-${String(checkedOptionValue)}}`, [checkedOptionValue, name])\n\n const handleChange = useCallback(\n (nextOptionValue: string, isChecked: boolean) => {\n const nextCheckedOptionValue = isChecked ? nextOptionValue : undefined\n\n setCheckedOptionValue(nextCheckedOptionValue)\n\n if (onChange) {\n onChange(nextCheckedOptionValue)\n }\n },\n [onChange]\n )\n\n // TODO There may be a better solution.\n // A key change is not enough to force radio checked check changes\n // on `defaultValue` property update (even when appending `defaultValue` to `key`),\n // we need to force a second re-render in order for the changes to be applied.\n useEffect(() => {\n setCheckedOptionValue(defaultValue)\n }, [defaultValue])\n\n return (\n <Fieldset key={key}>\n <Legend isHidden={isLabelHidden}>{label}</Legend>\n\n <ChecboxesBox isInline={isInline}>\n {options.map(option => (\n <Radio\n defaultChecked={option.value === checkedOptionValue}\n name={name}\n onChange={(_: any, isChecked: boolean) => handleChange(option.value, isChecked)}\n >\n {option.label}\n </Radio>\n ))}\n </ChecboxesBox>\n </Fieldset>\n )\n}\n\nconst ChecboxesBox = styled.div<{\n isInline: boolean\n}>`\n color: ${p => p.theme.color.gunMetal};\n display: flex;\n flex-direction: ${p => (p.isInline ? 'row' : 'column')};\n font-weight: 500;\n\n > .rs-radio {\n > .rs-radio-checker {\n padding-left: 28px;\n padding-top: 2px;\n\n .rs-radio-wrapper {\n left: 2px;\n top: 3px !important;\n }\n }\n }\n\n ${p =>\n p.isInline &&\n css`\n > .rs-radio:not(:first-child) {\n margin-left: 0.75rem;\n }\n `}\n`\n"],"names":["_jsxs","_jsx"],"mappings":";;;;;;;AAmBM,SAAU,UAAU,CAAC,EACzB,YAAY,EACZ,QAAQ,GAAG,KAAK,EAChB,aAAa,GAAG,KAAK,EACrB,KAAK,EACL,IAAI,EACJ,QAAQ,EACR,OAAO,EACS,EAAA;IAChB,MAAM,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,GAAG,QAAQ,CAAqB,SAAS,CAAC,CAAA;IAE3F,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAG,EAAA,IAAI,CAAI,CAAA,EAAA,MAAM,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC,CAAA;IAE/F,MAAM,YAAY,GAAG,WAAW,CAC9B,CAAC,eAAuB,EAAE,SAAkB,KAAI;QAC9C,MAAM,sBAAsB,GAAG,SAAS,GAAG,eAAe,GAAG,SAAS,CAAA;QAEtE,qBAAqB,CAAC,sBAAsB,CAAC,CAAA;AAE7C,QAAA,IAAI,QAAQ,EAAE;YACZ,QAAQ,CAAC,sBAAsB,CAAC,CAAA;AACjC,SAAA;AACH,KAAC,EACD,CAAC,QAAQ,CAAC,CACX,CAAA;;;;;IAMD,SAAS,CAAC,MAAK;QACb,qBAAqB,CAAC,YAAY,CAAC,CAAA;AACrC,KAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAA;AAElB,IAAA,QACEA,IAAA,CAAC,QAAQ,EAAA,EAAA,QAAA,EAAA,CACPC,IAAC,MAAM,EAAA,EAAC,QAAQ,EAAE,aAAa,EAAG,QAAA,EAAA,KAAK,EAAU,CAAA,EAEjDA,IAAC,YAAY,EAAA,EAAC,QAAQ,EAAE,QAAQ,EAC7B,QAAA,EAAA,OAAO,CAAC,GAAG,CAAC,MAAM,KACjBA,GAAC,CAAA,KAAK,EACJ,EAAA,cAAc,EAAE,MAAM,CAAC,KAAK,KAAK,kBAAkB,EACnD,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,CAAC,CAAM,EAAE,SAAkB,KAAK,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,EAAA,QAAA,EAE9E,MAAM,CAAC,KAAK,EACP,CAAA,CACT,CAAC,EACW,CAAA,CAAA,EAAA,EAbF,GAAG,CAcP,EACZ;AACH,CAAC;AAED,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAE7B,CAAA;WACS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAA;;AAElB,kBAAA,EAAA,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,KAAK,GAAG,QAAQ,CAAC,CAAA;;;;;;;;;;;;;;;AAepD,EAAA,EAAA,CAAC,IACD,CAAC,CAAC,QAAQ;AACV,IAAA,GAAG,CAAA,CAAA;;;;AAIF,IAAA,CAAA,CAAA;CACJ;;;;"}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
-
import { useMemo, useCallback } from 'react';
|
|
3
|
-
import { TagPicker } from 'rsuite';
|
|
4
|
-
import styled from 'styled-components';
|
|
5
|
-
import { Field } from '../elements/Field.js';
|
|
6
|
-
import { Label } from '../elements/Label.js';
|
|
7
|
-
|
|
8
|
-
function MultiSelect({ fixedWidth = 5, isLabelHidden = false, label, onChange, options,
|
|
9
|
-
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
10
|
-
searchable = false, ...originalProps }) {
|
|
11
|
-
const key = useMemo(() => `${originalProps.name}-${JSON.stringify(originalProps.defaultValue)}`, [originalProps.defaultValue, originalProps.name]);
|
|
12
|
-
const handleChange = useCallback((nextValue) => {
|
|
13
|
-
if (!onChange) {
|
|
14
|
-
return;
|
|
15
|
-
}
|
|
16
|
-
const normalizedNextValue = !nextValue || !nextValue.length ? undefined : nextValue;
|
|
17
|
-
onChange(normalizedNextValue);
|
|
18
|
-
}, [onChange]);
|
|
19
|
-
return (jsxs(Field, { children: [jsx(Label, { htmlFor: originalProps.name, isHidden: isLabelHidden, children: label }), jsx(StyledTagPicker, { data: options, fixedWidth: fixedWidth, id: originalProps.name, onChange: handleChange, searchable: searchable, ...originalProps }, key)] }));
|
|
20
|
-
}
|
|
21
|
-
// TODO A width seems to be mandatory in rsuite which is a very dirty behavior.
|
|
22
|
-
// We should hack that.
|
|
23
|
-
const StyledTagPicker = styled(TagPicker) `
|
|
24
|
-
cursor: pointer;
|
|
25
|
-
width: ${p => p.fixedWidth}rem;
|
|
26
|
-
|
|
27
|
-
> .rs-picker-toggle {
|
|
28
|
-
cursor: inherit;
|
|
29
|
-
}
|
|
30
|
-
`;
|
|
31
|
-
|
|
32
|
-
export { MultiSelect };
|
|
33
|
-
//# sourceMappingURL=MultiSelect.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MultiSelect.js","sources":["../../../src/fields/MultiSelect.tsx"],"sourcesContent":["import { useCallback, useMemo } from 'react'\nimport { TagPicker } from 'rsuite'\nimport styled from 'styled-components'\n\nimport { Field } from '../elements/Field'\nimport { Label } from '../elements/Label'\n\nimport type { Option } from '../types'\nimport type { TagPickerProps } from 'rsuite'\nimport type { Promisable } from 'type-fest'\n\nexport type MultiSelectProps = Omit<TagPickerProps, 'as' | 'data' | 'defaultValue' | 'id' | 'onChange' | 'value'> & {\n defaultValue?: string[]\n /** Width in REM */\n fixedWidth?: number\n isLabelHidden?: boolean\n label: string\n name: string\n onChange?: (nextValue: string[] | undefined) => Promisable<void>\n options: Option[]\n}\nexport function MultiSelect({\n fixedWidth = 5,\n isLabelHidden = false,\n label,\n onChange,\n options,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n searchable = false,\n ...originalProps\n}: MultiSelectProps) {\n const key = useMemo(\n () => `${originalProps.name}-${JSON.stringify(originalProps.defaultValue)}`,\n [originalProps.defaultValue, originalProps.name]\n )\n\n const handleChange = useCallback(\n (nextValue: string[] | null) => {\n if (!onChange) {\n return\n }\n\n const normalizedNextValue = !nextValue || !nextValue.length ? undefined : nextValue\n\n onChange(normalizedNextValue)\n },\n [onChange]\n )\n\n return (\n <Field>\n <Label htmlFor={originalProps.name} isHidden={isLabelHidden}>\n {label}\n </Label>\n\n <StyledTagPicker\n key={key}\n data={options}\n fixedWidth={fixedWidth}\n id={originalProps.name}\n onChange={handleChange}\n searchable={searchable}\n {...originalProps}\n />\n </Field>\n )\n}\n\n// TODO A width seems to be mandatory in rsuite which is a very dirty behavior.\n// We should hack that.\nconst StyledTagPicker = styled(TagPicker)<{\n fixedWidth: number\n}>`\n cursor: pointer;\n width: ${p => p.fixedWidth}rem;\n\n > .rs-picker-toggle {\n cursor: inherit;\n }\n`\n"],"names":["_jsxs","_jsx"],"mappings":";;;;;;;SAqBgB,WAAW,CAAC,EAC1B,UAAU,GAAG,CAAC,EACd,aAAa,GAAG,KAAK,EACrB,KAAK,EACL,QAAQ,EACR,OAAO;AACP;AACA,UAAU,GAAG,KAAK,EAClB,GAAG,aAAa,EACC,EAAA;AACjB,IAAA,MAAM,GAAG,GAAG,OAAO,CACjB,MAAM,CAAG,EAAA,aAAa,CAAC,IAAI,CAAI,CAAA,EAAA,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,YAAY,CAAC,CAAE,CAAA,EAC3E,CAAC,aAAa,CAAC,YAAY,EAAE,aAAa,CAAC,IAAI,CAAC,CACjD,CAAA;AAED,IAAA,MAAM,YAAY,GAAG,WAAW,CAC9B,CAAC,SAA0B,KAAI;QAC7B,IAAI,CAAC,QAAQ,EAAE;YACb,OAAM;AACP,SAAA;AAED,QAAA,MAAM,mBAAmB,GAAG,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,GAAG,SAAS,CAAA;QAEnF,QAAQ,CAAC,mBAAmB,CAAC,CAAA;AAC/B,KAAC,EACD,CAAC,QAAQ,CAAC,CACX,CAAA;IAED,QACEA,KAAC,KAAK,EAAA,EAAA,QAAA,EAAA,CACJC,IAAC,KAAK,EAAA,EAAC,OAAO,EAAE,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,aAAa,EACxD,QAAA,EAAA,KAAK,GACA,EAERA,GAAA,CAAC,eAAe,EAAA,EAEd,IAAI,EAAE,OAAO,EACb,UAAU,EAAE,UAAU,EACtB,EAAE,EAAE,aAAa,CAAC,IAAI,EACtB,QAAQ,EAAE,YAAY,EACtB,UAAU,EAAE,UAAU,EAClB,GAAA,aAAa,IANZ,GAAG,CAOR,CACI,EAAA,CAAA,EACT;AACH,CAAC;AAED;AACA;AACA,MAAM,eAAe,GAAG,MAAM,CAAC,SAAS,CAAC,CAEvC,CAAA;;AAES,SAAA,EAAA,CAAC,IAAI,CAAC,CAAC,UAAU,CAAA;;;;;CAK3B;;;;"}
|
package/src/fields/Select.js
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
-
import { useMemo, useCallback } from 'react';
|
|
3
|
-
import { SelectPicker } from 'rsuite';
|
|
4
|
-
import styled from 'styled-components';
|
|
5
|
-
import { Field } from '../elements/Field.js';
|
|
6
|
-
import { Label } from '../elements/Label.js';
|
|
7
|
-
|
|
8
|
-
function Select({ isLabelHidden = false, label, onChange, options,
|
|
9
|
-
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
10
|
-
searchable = false, ...originalProps }) {
|
|
11
|
-
const key = useMemo(() => `${originalProps.name}-${JSON.stringify(originalProps.defaultValue)}`, [originalProps.defaultValue, originalProps.name]);
|
|
12
|
-
const handleChange = useCallback((nextValue) => {
|
|
13
|
-
if (!onChange) {
|
|
14
|
-
return;
|
|
15
|
-
}
|
|
16
|
-
const normalizedNextValue = nextValue ?? undefined;
|
|
17
|
-
onChange(normalizedNextValue);
|
|
18
|
-
}, [onChange]);
|
|
19
|
-
return (jsxs(Field, { children: [jsx(Label, { htmlFor: originalProps.name, isHidden: isLabelHidden, children: label }), jsx(StyledSelectPicker, { data: options, id: originalProps.name,
|
|
20
|
-
// The `unknown` type from Rsuite library is wrong. It should be inferred from `data` prop type.
|
|
21
|
-
// `onChange: ((value: unknown, event: React.SyntheticEvent<Element, Event>) => void) | undefined`
|
|
22
|
-
onChange: handleChange, searchable: searchable, ...originalProps }, key)] }));
|
|
23
|
-
}
|
|
24
|
-
const StyledSelectPicker = styled(SelectPicker) ``;
|
|
25
|
-
|
|
26
|
-
export { Select };
|
|
27
|
-
//# sourceMappingURL=Select.js.map
|
package/src/fields/Select.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Select.js","sources":["../../../src/fields/Select.tsx"],"sourcesContent":["import { useCallback, useMemo } from 'react'\nimport { SelectPicker } from 'rsuite'\nimport styled from 'styled-components'\n\nimport { Field } from '../elements/Field'\nimport { Label } from '../elements/Label'\n\nimport type { Option } from '../types'\nimport type { SelectPickerProps } from 'rsuite'\nimport type { Promisable } from 'type-fest'\n\nexport type SelectProps = Omit<SelectPickerProps<any>, 'as' | 'data' | 'defaultValue' | 'id' | 'onChange' | 'value'> & {\n defaultValue?: string\n isLabelHidden?: boolean\n label: string\n name: string\n onChange?: (nextValue: string | undefined) => Promisable<void>\n options: Option[]\n}\nexport function Select({\n isLabelHidden = false,\n label,\n onChange,\n options,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n searchable = false,\n ...originalProps\n}: SelectProps) {\n const key = useMemo(\n () => `${originalProps.name}-${JSON.stringify(originalProps.defaultValue)}`,\n [originalProps.defaultValue, originalProps.name]\n )\n\n const handleChange = useCallback(\n (nextValue: string | null) => {\n if (!onChange) {\n return\n }\n\n const normalizedNextValue = nextValue ?? undefined\n\n onChange(normalizedNextValue)\n },\n [onChange]\n )\n\n return (\n <Field>\n <Label htmlFor={originalProps.name} isHidden={isLabelHidden}>\n {label}\n </Label>\n\n <StyledSelectPicker\n key={key}\n data={options}\n id={originalProps.name}\n // The `unknown` type from Rsuite library is wrong. It should be inferred from `data` prop type.\n // `onChange: ((value: unknown, event: React.SyntheticEvent<Element, Event>) => void) | undefined`\n onChange={handleChange as any}\n searchable={searchable}\n {...originalProps}\n />\n </Field>\n )\n}\n\nconst StyledSelectPicker = styled(SelectPicker)``\n"],"names":["_jsxs","_jsx"],"mappings":";;;;;;;AAmBgB,SAAA,MAAM,CAAC,EACrB,aAAa,GAAG,KAAK,EACrB,KAAK,EACL,QAAQ,EACR,OAAO;AACP;AACA,UAAU,GAAG,KAAK,EAClB,GAAG,aAAa,EACJ,EAAA;AACZ,IAAA,MAAM,GAAG,GAAG,OAAO,CACjB,MAAM,CAAG,EAAA,aAAa,CAAC,IAAI,CAAI,CAAA,EAAA,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,YAAY,CAAC,CAAE,CAAA,EAC3E,CAAC,aAAa,CAAC,YAAY,EAAE,aAAa,CAAC,IAAI,CAAC,CACjD,CAAA;AAED,IAAA,MAAM,YAAY,GAAG,WAAW,CAC9B,CAAC,SAAwB,KAAI;QAC3B,IAAI,CAAC,QAAQ,EAAE;YACb,OAAM;AACP,SAAA;AAED,QAAA,MAAM,mBAAmB,GAAG,SAAS,IAAI,SAAS,CAAA;QAElD,QAAQ,CAAC,mBAAmB,CAAC,CAAA;AAC/B,KAAC,EACD,CAAC,QAAQ,CAAC,CACX,CAAA;AAED,IAAA,QACEA,IAAA,CAAC,KAAK,EAAA,EAAA,QAAA,EAAA,CACJC,GAAC,CAAA,KAAK,EAAC,EAAA,OAAO,EAAE,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAA,QAAA,EACxD,KAAK,EAAA,CACA,EAERA,GAAA,CAAC,kBAAkB,EAEjB,EAAA,IAAI,EAAE,OAAO,EACb,EAAE,EAAE,aAAa,CAAC,IAAI;;;AAGtB,gBAAA,QAAQ,EAAE,YAAmB,EAC7B,UAAU,EAAE,UAAU,EAClB,GAAA,aAAa,EAPZ,EAAA,GAAG,CAQR,CAAA,EAAA,CACI,EACT;AACH,CAAC;AAED,MAAM,kBAAkB,GAAG,MAAM,CAAC,YAAY,CAAC,CAAA,EAAE;;;;"}
|
package/src/fields/TextInput.js
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
-
import { useMemo, useCallback } from 'react';
|
|
3
|
-
import { Input } from 'rsuite';
|
|
4
|
-
import styled from 'styled-components';
|
|
5
|
-
import { Field } from '../elements/Field.js';
|
|
6
|
-
import { Label } from '../elements/Label.js';
|
|
7
|
-
|
|
8
|
-
function TextInput({ isLabelHidden = false, label, onChange, ...originalProps }) {
|
|
9
|
-
const key = useMemo(() => `${originalProps.name}-${JSON.stringify(originalProps.defaultValue)}`, [originalProps.defaultValue, originalProps.name]);
|
|
10
|
-
const handleChange = useCallback((nextValue) => {
|
|
11
|
-
if (!onChange) {
|
|
12
|
-
return;
|
|
13
|
-
}
|
|
14
|
-
const normalizedNextValue = nextValue && nextValue.trim().length ? nextValue : undefined;
|
|
15
|
-
onChange(normalizedNextValue);
|
|
16
|
-
}, [onChange]);
|
|
17
|
-
return (jsxs(Field, { children: [jsx(Label, { htmlFor: originalProps.name, isHidden: isLabelHidden, children: label }), jsx(StyledInput, { id: originalProps.name, onChange: handleChange, ...originalProps }, key)] }));
|
|
18
|
-
}
|
|
19
|
-
const StyledInput = styled(Input) `
|
|
20
|
-
background-color: ${p => p.theme.color.gainsboro};
|
|
21
|
-
width: 100%;
|
|
22
|
-
`;
|
|
23
|
-
|
|
24
|
-
export { StyledInput, TextInput };
|
|
25
|
-
//# sourceMappingURL=TextInput.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TextInput.js","sources":["../../../src/fields/TextInput.tsx"],"sourcesContent":["import { useCallback, useMemo } from 'react'\nimport { Input } from 'rsuite'\nimport styled from 'styled-components'\n\nimport { Field } from '../elements/Field'\nimport { Label } from '../elements/Label'\n\nimport type { InputProps } from 'rsuite'\nimport type { Promisable } from 'type-fest'\n\nexport type TextInputProps = Omit<InputProps, 'as' | 'defaultValue' | 'id' | 'onChange' | 'value'> & {\n defaultValue?: string\n isLabelHidden?: boolean\n label: string\n name: string\n onChange?: (nextValue: string | undefined) => Promisable<void>\n}\nexport function TextInput({ isLabelHidden = false, label, onChange, ...originalProps }: TextInputProps) {\n const key = useMemo(\n () => `${originalProps.name}-${JSON.stringify(originalProps.defaultValue)}`,\n [originalProps.defaultValue, originalProps.name]\n )\n\n const handleChange = useCallback(\n (nextValue: string | null) => {\n if (!onChange) {\n return\n }\n\n const normalizedNextValue = nextValue && nextValue.trim().length ? nextValue : undefined\n\n onChange(normalizedNextValue)\n },\n [onChange]\n )\n\n return (\n <Field>\n <Label htmlFor={originalProps.name} isHidden={isLabelHidden}>\n {label}\n </Label>\n\n <StyledInput key={key} id={originalProps.name} onChange={handleChange} {...originalProps} />\n </Field>\n )\n}\n\nexport const StyledInput = styled(Input)`\n background-color: ${p => p.theme.color.gainsboro};\n width: 100%;\n`\n"],"names":["_jsxs","_jsx"],"mappings":";;;;;;;AAiBgB,SAAA,SAAS,CAAC,EAAE,aAAa,GAAG,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,aAAa,EAAkB,EAAA;AACpG,IAAA,MAAM,GAAG,GAAG,OAAO,CACjB,MAAM,CAAG,EAAA,aAAa,CAAC,IAAI,CAAI,CAAA,EAAA,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,YAAY,CAAC,CAAE,CAAA,EAC3E,CAAC,aAAa,CAAC,YAAY,EAAE,aAAa,CAAC,IAAI,CAAC,CACjD,CAAA;AAED,IAAA,MAAM,YAAY,GAAG,WAAW,CAC9B,CAAC,SAAwB,KAAI;QAC3B,IAAI,CAAC,QAAQ,EAAE;YACb,OAAM;AACP,SAAA;AAED,QAAA,MAAM,mBAAmB,GAAG,SAAS,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,SAAS,GAAG,SAAS,CAAA;QAExF,QAAQ,CAAC,mBAAmB,CAAC,CAAA;AAC/B,KAAC,EACD,CAAC,QAAQ,CAAC,CACX,CAAA;AAED,IAAA,QACEA,IAAC,CAAA,KAAK,EACJ,EAAA,QAAA,EAAA,CAAAC,GAAA,CAAC,KAAK,EAAC,EAAA,OAAO,EAAE,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,aAAa,YACxD,KAAK,EAAA,CACA,EAERA,GAAA,CAAC,WAAW,EAAW,EAAA,EAAE,EAAE,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,YAAY,KAAM,aAAa,EAAA,EAAtE,GAAG,CAAuE,CAAA,EAAA,CACtF,EACT;AACH,CAAC;MAEY,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA,CAAA;sBAClB,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAA;;;;;;"}
|
package/src/fields/Textarea.js
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
-
import { useRef, useMemo, useCallback } from 'react';
|
|
3
|
-
import { Input } from 'rsuite';
|
|
4
|
-
import styled from 'styled-components';
|
|
5
|
-
import { Field } from '../elements/Field.js';
|
|
6
|
-
import { Label } from '../elements/Label.js';
|
|
7
|
-
|
|
8
|
-
function Textarea({ isLabelHidden = false, label, onChange, rows = 3, ...originalProps }) {
|
|
9
|
-
const inputRef = useRef();
|
|
10
|
-
const key = useMemo(() => `${originalProps.name}-${JSON.stringify(originalProps.defaultValue)}`, [originalProps.defaultValue, originalProps.name]);
|
|
11
|
-
const handleChange = useCallback(() => {
|
|
12
|
-
if (!onChange) {
|
|
13
|
-
return;
|
|
14
|
-
}
|
|
15
|
-
const nextValue = inputRef.current.value.trim();
|
|
16
|
-
const normalizedNextValue = nextValue.length ? nextValue : undefined;
|
|
17
|
-
onChange(normalizedNextValue);
|
|
18
|
-
}, [onChange]);
|
|
19
|
-
return (jsxs(Field, { children: [jsx(Label, { htmlFor: originalProps.name, isHidden: isLabelHidden, children: label }), jsx(StyledInput, { ref: inputRef, as: "textarea", id: originalProps.name, onChange: handleChange, rows: rows, ...originalProps }, key)] }));
|
|
20
|
-
}
|
|
21
|
-
const StyledInput = styled(Input) `
|
|
22
|
-
background-color: ${p => p.theme.color.gainsboro};
|
|
23
|
-
border: 0;
|
|
24
|
-
width: 100%;
|
|
25
|
-
`;
|
|
26
|
-
|
|
27
|
-
export { StyledInput, Textarea };
|
|
28
|
-
//# sourceMappingURL=Textarea.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Textarea.js","sources":["../../../src/fields/Textarea.tsx"],"sourcesContent":["import { useCallback, useMemo, useRef } from 'react'\nimport { Input } from 'rsuite'\nimport styled from 'styled-components'\n\nimport { Field } from '../elements/Field'\nimport { Label } from '../elements/Label'\n\nimport type { MutableRefObject, TextareaHTMLAttributes } from 'react'\nimport type { Promisable } from 'type-fest'\n\nexport type TextareaProps = Omit<\n TextareaHTMLAttributes<HTMLTextAreaElement>,\n 'defaultValue' | 'id' | 'onChange' | 'value'\n> & {\n defaultValue?: string\n isLabelHidden?: boolean\n label: string\n name: string\n onChange?: (nextValue: string | undefined) => Promisable<void>\n}\nexport function Textarea({ isLabelHidden = false, label, onChange, rows = 3, ...originalProps }: TextareaProps) {\n const inputRef = useRef() as MutableRefObject<HTMLTextAreaElement>\n\n const key = useMemo(\n () => `${originalProps.name}-${JSON.stringify(originalProps.defaultValue)}`,\n [originalProps.defaultValue, originalProps.name]\n )\n\n const handleChange = useCallback(() => {\n if (!onChange) {\n return\n }\n\n const nextValue = inputRef.current.value.trim()\n const normalizedNextValue = nextValue.length ? nextValue : undefined\n\n onChange(normalizedNextValue)\n }, [onChange])\n\n return (\n <Field>\n <Label htmlFor={originalProps.name} isHidden={isLabelHidden}>\n {label}\n </Label>\n\n <StyledInput\n key={key}\n ref={inputRef}\n as=\"textarea\"\n id={originalProps.name}\n onChange={handleChange}\n rows={rows}\n {...originalProps}\n />\n </Field>\n )\n}\n\nexport const StyledInput = styled(Input)`\n background-color: ${p => p.theme.color.gainsboro};\n border: 0;\n width: 100%;\n`\n"],"names":["_jsxs","_jsx"],"mappings":";;;;;;;SAoBgB,QAAQ,CAAC,EAAE,aAAa,GAAG,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,GAAG,CAAC,EAAE,GAAG,aAAa,EAAiB,EAAA;AAC5G,IAAA,MAAM,QAAQ,GAAG,MAAM,EAA2C,CAAA;AAElE,IAAA,MAAM,GAAG,GAAG,OAAO,CACjB,MAAM,CAAG,EAAA,aAAa,CAAC,IAAI,CAAI,CAAA,EAAA,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,YAAY,CAAC,CAAE,CAAA,EAC3E,CAAC,aAAa,CAAC,YAAY,EAAE,aAAa,CAAC,IAAI,CAAC,CACjD,CAAA;AAED,IAAA,MAAM,YAAY,GAAG,WAAW,CAAC,MAAK;QACpC,IAAI,CAAC,QAAQ,EAAE;YACb,OAAM;AACP,SAAA;QAED,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,CAAA;AAC/C,QAAA,MAAM,mBAAmB,GAAG,SAAS,CAAC,MAAM,GAAG,SAAS,GAAG,SAAS,CAAA;QAEpE,QAAQ,CAAC,mBAAmB,CAAC,CAAA;AAC/B,KAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEd,QACEA,KAAC,KAAK,EAAA,EAAA,QAAA,EAAA,CACJC,IAAC,KAAK,EAAA,EAAC,OAAO,EAAE,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,aAAa,EACxD,QAAA,EAAA,KAAK,GACA,EAERA,GAAA,CAAC,WAAW,EAAA,EAEV,GAAG,EAAE,QAAQ,EACb,EAAE,EAAC,UAAU,EACb,EAAE,EAAE,aAAa,CAAC,IAAI,EACtB,QAAQ,EAAE,YAAY,EACtB,IAAI,EAAE,IAAI,EACN,GAAA,aAAa,IANZ,GAAG,CAOR,CACI,EAAA,CAAA,EACT;AACH,CAAC;MAEY,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA,CAAA;sBAClB,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAA;;;;;;;"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { jsx } from 'react/jsx-runtime';
|
|
2
|
-
import { useField } from 'formik';
|
|
3
|
-
import { useMemo, useCallback, useEffect } from 'react';
|
|
4
|
-
import { Checkbox } from '../fields/Checkbox.js';
|
|
5
|
-
|
|
6
|
-
function FormikCheckbox({ name, ...originalProps }) {
|
|
7
|
-
const [field, , helpers] = useField(name);
|
|
8
|
-
const value = useMemo(() => field.value, [field.value]);
|
|
9
|
-
// We don't include `setValues` in `useCallback()` and `useEffect()` dependencies
|
|
10
|
-
// both because it is useless and it will trigger infinite hook calls
|
|
11
|
-
const setValue = useMemo(() => helpers.setValue, [helpers.setValue]);
|
|
12
|
-
const handleChange = useCallback((isChecked) => {
|
|
13
|
-
setValue(isChecked);
|
|
14
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
15
|
-
}, []);
|
|
16
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
17
|
-
useEffect(() => () => setValue(undefined), []);
|
|
18
|
-
return jsx(Checkbox, { defaultChecked: value, name: name, onChange: handleChange, ...originalProps });
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
export { FormikCheckbox };
|
|
22
|
-
//# sourceMappingURL=FormikCheckbox.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FormikCheckbox.js","sources":["../../../src/formiks/FormikCheckbox.tsx"],"sourcesContent":["import { useField } from 'formik'\nimport { useCallback, useEffect, useMemo } from 'react'\n\nimport { Checkbox } from '../fields/Checkbox'\n\nimport type { CheckboxProps } from '../fields/Checkbox'\n\nexport type FormikCheckboxProps = Omit<CheckboxProps, 'checked' | 'defaultChecked' | 'onChange'>\nexport function FormikCheckbox({ name, ...originalProps }: FormikCheckboxProps) {\n const [field, , helpers] = useField(name)\n\n const value = useMemo(() => field.value, [field.value])\n // We don't include `setValues` in `useCallback()` and `useEffect()` dependencies\n // both because it is useless and it will trigger infinite hook calls\n const setValue = useMemo(() => helpers.setValue, [helpers.setValue])\n\n const handleChange = useCallback((isChecked: boolean) => {\n setValue(isChecked)\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useEffect(() => () => setValue(undefined), [])\n\n return <Checkbox defaultChecked={value} name={name} onChange={handleChange} {...originalProps} />\n}\n"],"names":["_jsx"],"mappings":";;;;;AAQM,SAAU,cAAc,CAAC,EAAE,IAAI,EAAE,GAAG,aAAa,EAAuB,EAAA;AAC5E,IAAA,MAAM,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA;AAEzC,IAAA,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;;;AAGvD,IAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAA;AAEpE,IAAA,MAAM,YAAY,GAAG,WAAW,CAAC,CAAC,SAAkB,KAAI;QACtD,QAAQ,CAAC,SAAS,CAAC,CAAA;;KAGpB,EAAE,EAAE,CAAC,CAAA;;AAGN,IAAA,SAAS,CAAC,MAAM,MAAM,QAAQ,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,CAAA;AAE9C,IAAA,OAAOA,IAAC,QAAQ,EAAA,EAAC,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAM,GAAA,aAAa,GAAI,CAAA;AACnG;;;;"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { jsx } from 'react/jsx-runtime';
|
|
2
|
-
import { useField } from 'formik';
|
|
3
|
-
import { useEffect } from 'react';
|
|
4
|
-
import { DatePicker } from '../fields/DatePicker/index.js';
|
|
5
|
-
|
|
6
|
-
function FormikDatePicker({ name, ...originalProps }) {
|
|
7
|
-
const [, , helpers] = useField(name);
|
|
8
|
-
const { setValue } = helpers;
|
|
9
|
-
// We don't include `setValues` in `useEffect()` dependencies
|
|
10
|
-
// both because it is useless and it will trigger infinite hook calls
|
|
11
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
12
|
-
useEffect(() => () => setValue(undefined), []);
|
|
13
|
-
return jsx(DatePicker, { onChange: setValue, ...originalProps });
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
export { FormikDatePicker };
|
|
17
|
-
//# sourceMappingURL=FormikDatePicker.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FormikDatePicker.js","sources":["../../../src/formiks/FormikDatePicker.tsx"],"sourcesContent":["import { useField } from 'formik'\nimport { useEffect } from 'react'\n\nimport { DatePicker } from '../fields/DatePicker'\n\nimport type { DatePickerProps } from '../fields/DatePicker'\n\nexport type FormikDatePickerProps = Omit<DatePickerProps, 'onChange'> & {\n name: string\n}\nexport function FormikDatePicker({ name, ...originalProps }: FormikDatePickerProps) {\n const [, , helpers] = useField(name)\n const { setValue } = helpers\n\n // We don't include `setValues` in `useEffect()` dependencies\n // both because it is useless and it will trigger infinite hook calls\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useEffect(() => () => setValue(undefined), [])\n\n return <DatePicker onChange={setValue} {...originalProps} />\n}\n"],"names":["_jsx"],"mappings":";;;;;AAUM,SAAU,gBAAgB,CAAC,EAAE,IAAI,EAAE,GAAG,aAAa,EAAyB,EAAA;IAChF,MAAM,KAAK,OAAO,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA;AACpC,IAAA,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAA;;;;AAK5B,IAAA,SAAS,CAAC,MAAM,MAAM,QAAQ,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,CAAA;IAE9C,OAAOA,GAAA,CAAC,UAAU,EAAC,EAAA,QAAQ,EAAE,QAAQ,EAAA,GAAM,aAAa,EAAA,CAAI,CAAA;AAC9D;;;;"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { jsx } from 'react/jsx-runtime';
|
|
2
|
-
import { useField } from 'formik';
|
|
3
|
-
import { useEffect } from 'react';
|
|
4
|
-
import { DateRangePicker } from '../fields/DateRangePicker/index.js';
|
|
5
|
-
|
|
6
|
-
function FormikDateRangePicker({ name, ...originalProps }) {
|
|
7
|
-
const [, , helpers] = useField(name);
|
|
8
|
-
const { setValue } = helpers;
|
|
9
|
-
// We don't include `setValues` in `useEffect()` dependencies
|
|
10
|
-
// both because it is useless and it will trigger infinite hook calls
|
|
11
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
12
|
-
useEffect(() => () => setValue(undefined), []);
|
|
13
|
-
return jsx(DateRangePicker, { onChange: setValue, ...originalProps });
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
export { FormikDateRangePicker };
|
|
17
|
-
//# sourceMappingURL=FormikDateRangePicker.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FormikDateRangePicker.js","sources":["../../../src/formiks/FormikDateRangePicker.tsx"],"sourcesContent":["import { useField } from 'formik'\nimport { useEffect } from 'react'\n\nimport { DateRangePicker } from '../fields/DateRangePicker'\n\nimport type { DateRangePickerProps } from '../fields/DateRangePicker'\n\nexport type FormikDateRangePickerProps = Omit<DateRangePickerProps, 'onChange'> & {\n name: string\n}\nexport function FormikDateRangePicker({ name, ...originalProps }: FormikDateRangePickerProps) {\n const [, , helpers] = useField(name)\n const { setValue } = helpers\n\n // We don't include `setValues` in `useEffect()` dependencies\n // both because it is useless and it will trigger infinite hook calls\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useEffect(() => () => setValue(undefined), [])\n\n return <DateRangePicker onChange={setValue} {...originalProps} />\n}\n"],"names":["_jsx"],"mappings":";;;;;AAUM,SAAU,qBAAqB,CAAC,EAAE,IAAI,EAAE,GAAG,aAAa,EAA8B,EAAA;IAC1F,MAAM,KAAK,OAAO,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA;AACpC,IAAA,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAA;;;;AAK5B,IAAA,SAAS,CAAC,MAAM,MAAM,QAAQ,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,CAAA;IAE9C,OAAOA,GAAA,CAAC,eAAe,EAAC,EAAA,QAAQ,EAAE,QAAQ,EAAA,GAAM,aAAa,EAAA,CAAI,CAAA;AACnE;;;;"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { jsx, Fragment } from 'react/jsx-runtime';
|
|
2
|
-
import { useFormikContext } from 'formik';
|
|
3
|
-
import { useEffect } from 'react';
|
|
4
|
-
|
|
5
|
-
function FormikEffect({ onChange }) {
|
|
6
|
-
const { values } = useFormikContext();
|
|
7
|
-
useEffect(() => {
|
|
8
|
-
onChange(values);
|
|
9
|
-
}, [onChange, values]);
|
|
10
|
-
return jsx(Fragment, {});
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
export { FormikEffect };
|
|
14
|
-
//# sourceMappingURL=FormikEffect.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FormikEffect.js","sources":["../../../src/formiks/FormikEffect.tsx"],"sourcesContent":["import { useFormikContext } from 'formik'\nimport { useEffect } from 'react'\n\nimport type { Promisable } from 'type-fest'\n\nexport type FormikEffectProps = {\n onChange: (nextValues: Record<string, any>) => Promisable<void>\n}\nexport function FormikEffect({ onChange }: FormikEffectProps) {\n const { values } = useFormikContext<Record<string, any>>()\n\n useEffect(() => {\n onChange(values)\n }, [onChange, values])\n\n return <></>\n}\n"],"names":["_jsx"],"mappings":";;;;AAQgB,SAAA,YAAY,CAAC,EAAE,QAAQ,EAAqB,EAAA;AAC1D,IAAA,MAAM,EAAE,MAAM,EAAE,GAAG,gBAAgB,EAAuB,CAAA;IAE1D,SAAS,CAAC,MAAK;QACb,QAAQ,CAAC,MAAM,CAAC,CAAA;AAClB,KAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAA;AAEtB,IAAA,OAAOA,iBAAK,CAAA;AACd;;;;"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { jsx } from 'react/jsx-runtime';
|
|
2
|
-
import { useField } from 'formik';
|
|
3
|
-
import { useCallback, useEffect } from 'react';
|
|
4
|
-
import { MultiCheckbox } from '../fields/MultiCheckbox.js';
|
|
5
|
-
|
|
6
|
-
function FormikMultiCheckbox({ name, ...originalProps }) {
|
|
7
|
-
const [, , helpers] = useField(name);
|
|
8
|
-
// We don't include `setValues` in `useCallback()` and `useEffect()` dependencies
|
|
9
|
-
// both because it is useless and it will trigger infinite hook calls
|
|
10
|
-
const { setValue } = helpers;
|
|
11
|
-
const handleChange = useCallback((nextValue) => {
|
|
12
|
-
setValue(nextValue);
|
|
13
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
14
|
-
}, []);
|
|
15
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
16
|
-
useEffect(() => () => setValue(undefined), []);
|
|
17
|
-
return jsx(MultiCheckbox, { name: name, onChange: handleChange, ...originalProps });
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
export { FormikMultiCheckbox };
|
|
21
|
-
//# sourceMappingURL=FormikMultiCheckbox.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FormikMultiCheckbox.js","sources":["../../../src/formiks/FormikMultiCheckbox.tsx"],"sourcesContent":["import { useField } from 'formik'\nimport { useCallback, useEffect } from 'react'\n\nimport { MultiCheckbox } from '../fields/MultiCheckbox'\n\nimport type { MultiCheckboxProps } from '../fields/MultiCheckbox'\n\nexport type FormikMultiCheckboxProps = Omit<MultiCheckboxProps, 'defaultValue' | 'onChange'>\nexport function FormikMultiCheckbox({ name, ...originalProps }: FormikMultiCheckboxProps) {\n const [, , helpers] = useField(name)\n // We don't include `setValues` in `useCallback()` and `useEffect()` dependencies\n // both because it is useless and it will trigger infinite hook calls\n const { setValue } = helpers\n\n const handleChange = useCallback((nextValue: string[] | undefined) => {\n setValue(nextValue)\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useEffect(() => () => setValue(undefined), [])\n\n return <MultiCheckbox name={name} onChange={handleChange} {...originalProps} />\n}\n"],"names":["_jsx"],"mappings":";;;;;AAQM,SAAU,mBAAmB,CAAC,EAAE,IAAI,EAAE,GAAG,aAAa,EAA4B,EAAA;IACtF,MAAM,KAAK,OAAO,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA;;;AAGpC,IAAA,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAA;AAE5B,IAAA,MAAM,YAAY,GAAG,WAAW,CAAC,CAAC,SAA+B,KAAI;QACnE,QAAQ,CAAC,SAAS,CAAC,CAAA;;KAGpB,EAAE,EAAE,CAAC,CAAA;;AAGN,IAAA,SAAS,CAAC,MAAM,MAAM,QAAQ,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,CAAA;AAE9C,IAAA,OAAOA,GAAC,CAAA,aAAa,EAAC,EAAA,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAM,GAAA,aAAa,GAAI,CAAA;AACjF;;;;"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { jsx } from 'react/jsx-runtime';
|
|
2
|
-
import { useField } from 'formik';
|
|
3
|
-
import { useCallback, useEffect } from 'react';
|
|
4
|
-
import { MultiRadio } from '../fields/MultiRadio.js';
|
|
5
|
-
|
|
6
|
-
function FormikMultiRadio({ name, ...originalProps }) {
|
|
7
|
-
const [, , helpers] = useField(name);
|
|
8
|
-
// We don't include `setValues` in `useCallback()` and `useEffect()` dependencies
|
|
9
|
-
// both because it is useless and it will trigger infinite hook calls
|
|
10
|
-
const { setValue } = helpers;
|
|
11
|
-
const handleChange = useCallback((nextValue) => {
|
|
12
|
-
setValue(nextValue);
|
|
13
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
14
|
-
}, []);
|
|
15
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
16
|
-
useEffect(() => () => setValue(undefined), []);
|
|
17
|
-
return jsx(MultiRadio, { name: name, onChange: handleChange, ...originalProps });
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
export { FormikMultiRadio };
|
|
21
|
-
//# sourceMappingURL=FormikMultiRadio.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FormikMultiRadio.js","sources":["../../../src/formiks/FormikMultiRadio.tsx"],"sourcesContent":["import { useField } from 'formik'\nimport { useCallback, useEffect } from 'react'\n\nimport { MultiRadio } from '../fields/MultiRadio'\n\nimport type { MultiRadioProps } from '../fields/MultiRadio'\n\nexport type FormikMultiRadioProps = Omit<MultiRadioProps, 'defaultValue' | 'onChange'>\nexport function FormikMultiRadio({ name, ...originalProps }: FormikMultiRadioProps) {\n const [, , helpers] = useField(name)\n // We don't include `setValues` in `useCallback()` and `useEffect()` dependencies\n // both because it is useless and it will trigger infinite hook calls\n const { setValue } = helpers\n\n const handleChange = useCallback((nextValue: string | undefined) => {\n setValue(nextValue)\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useEffect(() => () => setValue(undefined), [])\n\n return <MultiRadio name={name} onChange={handleChange} {...originalProps} />\n}\n"],"names":["_jsx"],"mappings":";;;;;AAQM,SAAU,gBAAgB,CAAC,EAAE,IAAI,EAAE,GAAG,aAAa,EAAyB,EAAA;IAChF,MAAM,KAAK,OAAO,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA;;;AAGpC,IAAA,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAA;AAE5B,IAAA,MAAM,YAAY,GAAG,WAAW,CAAC,CAAC,SAA6B,KAAI;QACjE,QAAQ,CAAC,SAAS,CAAC,CAAA;;KAGpB,EAAE,EAAE,CAAC,CAAA;;AAGN,IAAA,SAAS,CAAC,MAAM,MAAM,QAAQ,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,CAAA;AAE9C,IAAA,OAAOA,GAAC,CAAA,UAAU,EAAC,EAAA,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAM,GAAA,aAAa,GAAI,CAAA;AAC9E;;;;"}
|