@servicetitan/design-system 14.5.1 → 14.5.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.
@@ -22,6 +22,7 @@ interface DropdownProps {
22
22
  autoFlipVertically?: PopoverProps['autoFlipVertically'];
23
23
  autoFlipHorizontally?: PopoverProps['autoFlipHorizontally'];
24
24
  options?: DateRangeOptionListProps['options'];
25
+ enableTimezoneContext?: DateRangeOptionListProps['enableTimezoneContext'];
25
26
  startDateInput?: CalendarInputProps;
26
27
  endDateInput?: CalendarInputProps;
27
28
  views?: 1 | 2;
@@ -29,7 +29,7 @@ export const DateRangePicker = (_a) => {
29
29
  var { disabled, error, required, open, disableCloseOnClickOutside, onClickOutside, onOpenChange, focusTrapOptions, dateFormat, value, defaultValue, onChange, maxDate, minDate, isoFormat, input, dropdown, portalDataAttributes,
30
30
  // deprecated props
31
31
  trigger, size: dsize = 'medium', placeholder: dplaceholder = 'Select Date Range', direction: ddirection = 'br', autoFlipHorizontally: dautoFlipHorizontally, autoFlipVertically: dautoFlipVertically, portal: dPortal = true, displayValue: ddisplayValue, views: dviews = 1, focusedDate: dfocusedDate, options: doptions, startPlaceholder = 'Start Date', endPlaceholder = 'End Date' } = _a, rest = __rest(_a, ["disabled", "error", "required", "open", "disableCloseOnClickOutside", "onClickOutside", "onOpenChange", "focusTrapOptions", "dateFormat", "value", "defaultValue", "onChange", "maxDate", "minDate", "isoFormat", "input", "dropdown", "portalDataAttributes", "trigger", "size", "placeholder", "direction", "autoFlipHorizontally", "autoFlipVertically", "portal", "displayValue", "views", "focusedDate", "options", "startPlaceholder", "endPlaceholder"]);
32
- const { portal = dPortal, direction = ddirection, autoFlipVertically = dautoFlipVertically, autoFlipHorizontally = dautoFlipHorizontally, options = doptions, startDateInput, endDateInput, views = dviews, calendar, clearButton, } = Object.assign({}, dropdown);
32
+ const { portal = dPortal, direction = ddirection, autoFlipVertically = dautoFlipVertically, autoFlipHorizontally = dautoFlipHorizontally, options = doptions, startDateInput, endDateInput, views = dviews, calendar, clearButton, enableTimezoneContext, } = Object.assign({}, dropdown);
33
33
  const { onChange: CalendarOnChange, focusedDate = dfocusedDate } = Object.assign({}, calendar);
34
34
  const { onClick: ClearButtonOnClick } = Object.assign({}, clearButton);
35
35
  const { size: inputSize = dsize, placeholder: inputPlaceholder = dplaceholder, displayValue: inputDisplayValue = ddisplayValue, element: inputEl = trigger, } = Object.assign({}, input);
@@ -322,7 +322,7 @@ export const DateRangePicker = (_a) => {
322
322
  }, displayValue: inputDisplayValue, disabled: disabled, error: internalError, size: inputSize, ref: triggerRef, required: required, "data-anvil-component": "DateRangePicker" }, rest))), direction: direction, padding: null, width: "auto", className: "DateRangePicker__popover", portal: portal, focusTrapOptions: focusTrapOptions, autoFlipHorizontally: autoFlipHorizontally, autoFlipVertically: autoFlipVertically, portalDataAttributes: portalDataAttributes },
323
323
  React.createElement(KeyPressListener, { code: Keys.Esc, handler: close, disabled: disableCloseOnClickOutside || !openCal }),
324
324
  React.createElement("div", { className: "d-f flex-row" },
325
- options && options.length > 0 && (React.createElement(DateRangeOptionList, { options: options, min: (_g = minMaxRange === null || minMaxRange === void 0 ? void 0 : minMaxRange.min) === null || _g === void 0 ? void 0 : _g.toJSDate(), max: (_h = minMaxRange === null || minMaxRange === void 0 ? void 0 : minMaxRange.max) === null || _h === void 0 ? void 0 : _h.toJSDate(), onChange: handleOptionListOnChange })),
325
+ options && options.length > 0 && (React.createElement(DateRangeOptionList, { options: options, min: (_g = minMaxRange === null || minMaxRange === void 0 ? void 0 : minMaxRange.min) === null || _g === void 0 ? void 0 : _g.toJSDate(), max: (_h = minMaxRange === null || minMaxRange === void 0 ? void 0 : minMaxRange.max) === null || _h === void 0 ? void 0 : _h.toJSDate(), onChange: handleOptionListOnChange, enableTimezoneContext: enableTimezoneContext })),
326
326
  React.createElement("div", { className: "DateRangePicker" },
327
327
  React.createElement("div", { className: "DateRangePicker__header" },
328
328
  React.createElement("div", { className: "DateRangePicker__inputGroup" },
@@ -1 +1 @@
1
- {"version":3,"file":"DateRangePicker.js","sourceRoot":"","sources":["../../../src/components/DateRangePicker/DateRangePicker.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, {\n\tChangeEvent,\n\tFC,\n\tFocusEvent,\n\tuseContext,\n\tuseRef,\n\tMouseEvent,\n} from 'react';\nimport { KeyPressListener } from '../KeyPressListener';\nimport { Popover, PopoverProps } from '../Popover';\nimport { Stack } from '../Stack';\nimport { Button } from '../Button';\nimport { Icon } from '../Icon';\nimport { Link } from '../Link';\nimport {\n\tDateRangeInput,\n\tDateRangeTrigger,\n\tDateRangeOptionList,\n\tDateRangeOptionListProps,\n\tDateRangeInputProps,\n} from './components';\nimport {\n\tMultiViewCalendar,\n\tMultiViewCalendarProps,\n\tSelectionRange,\n\tCalendarCell,\n\tCalendarCellProps,\n} from '@progress/kendo-react-dateinputs';\nimport { Keys } from '../../utilities/keyCodes';\nimport { isValid } from '../../utilities/dateFormat';\nimport { UseFocusTrapProps } from '../../hooks';\nimport { TimezoneContext } from '../../utilities/TimezoneProvider';\nimport { DateTime } from 'luxon';\nimport { checkScope } from './utils';\nimport { FormFieldContext } from '../../components/FormField';\nimport { PopperProps } from '../../internal';\n\ninterface CalendarInputProps {\n\tplaceholder?: DateRangeInputProps['placeholder'];\n\tonChange?: DateRangeInputProps['onChange'];\n\tonBlur?: DateRangeInputProps['onBlur'];\n}\n\ninterface CalendarProps {\n\tonChange?: MultiViewCalendarProps['onChange'];\n\tfocusedDate?: Date;\n}\n\ninterface ClearButtonProps {\n\tonClick?: (e: MouseEvent<HTMLButtonElement>, value: innerDateRange) => void;\n}\n\ninterface DropdownProps {\n\tportal?: boolean;\n\tdirection?: PopoverProps['direction'];\n\tautoFlipVertically?: PopoverProps['autoFlipVertically'];\n\tautoFlipHorizontally?: PopoverProps['autoFlipHorizontally'];\n\toptions?: DateRangeOptionListProps['options'];\n\tstartDateInput?: CalendarInputProps;\n\tendDateInput?: CalendarInputProps;\n\tviews?: 1 | 2;\n\tcalendar?: CalendarProps;\n\tclearButton?: ClearButtonProps;\n}\n\ninterface InputProps {\n\tsize?: 'small' | 'medium' | 'large';\n\tplaceholder?: string;\n\tdisplayValue?: string;\n\telement?: (\n\t\tvalue: DateRangePickerProps['value'] | any,\n\t\ttriggerProp: triggerProps,\n\t\topen: DateRangePickerProps['open'],\n\t\terror: DateRangePickerProps['error']\n\t) => React.ReactElement;\n}\n\nexport interface DateRangePickerProps {\n\t/** Disabled state */\n\tdisabled?: boolean;\n\n\t/** Indicates that the field is required */\n\trequired?: boolean;\n\n\t/** Error state */\n\terror?: boolean;\n\n\t/** onChange function */\n\tonChange?: (value: MultiViewCalendarProps['value'] | any) => void;\n\n\t/** A handler that is called on every open and close action */\n\tonOpenChange?: (open: boolean) => void;\n\n\t/** A handler that is called on every click on any element outside of the anchor element when it is open */\n\tonClickOutside?: PopoverProps['onClickOutside'];\n\n\t/** Default calendar value */\n\tdefaultValue?: MultiViewCalendarProps['value'];\n\n\t/** Maximum date allowed */\n\tmaxDate?: MultiViewCalendarProps['max'];\n\n\t/** Minimum date allowed */\n\tminDate?: MultiViewCalendarProps['min'];\n\n\t/** Set value */\n\tvalue?: SelectionRange;\n\n\t/** Whether the DateRangePicker is open or not */\n\topen?: boolean;\n\n\t/** Disables close on click outside */\n\tdisableCloseOnClickOutside?: boolean;\n\n\t/**\n\t * Date format string\n\t */\n\tdateFormat?: string;\n\n\t/** Changes the onChange return to ISO string format */\n\tisoFormat?: boolean;\n\n\t/** Options passed into useFocusTrap */\n\tfocusTrapOptions?: UseFocusTrapProps;\n\n\t/** popover component prop */\n\tdropdown?: DropdownProps;\n\n\t/** trigger component prop */\n\tinput?: InputProps; // new trigger props\n\n\t/** Props to be passed to the portaled div */\n\tportalDataAttributes?: PopperProps['portalDataAttributes'];\n\n\t// Keeping below for backward compatibility\n\n\t/**\n\t * @deprecated - use input.size\n\t */\n\tsize?: 'small' | 'medium' | 'large';\n\t/**\n\t * @deprecated - use input.placeholder\n\t */\n\tplaceholder?: string;\n\t/**\n\t * @deprecated - use input.displayValue\n\t */\n\tdisplayValue?: string;\n\t/**\n\t * @deprecated - use input.element\n\t */\n\ttrigger?: (\n\t\tvalue: DateRangePickerProps['value'] | any,\n\t\ttriggerProp: triggerProps,\n\t\topen: DateRangePickerProps['open'],\n\t\terror: DateRangePickerProps['error']\n\t) => React.ReactElement;\n\t/**\n\t * @deprecated - use dropdown.portal\n\t */\n\tportal?: boolean;\n\t/**\n\t * @deprecated - use dropdown.direction\n\t */\n\tdirection?: PopoverProps['direction'];\n\t/**\n\t * @deprecated - use dropdown.autoFlipVertically\n\t */\n\tautoFlipVertically?: PopoverProps['autoFlipVertically'];\n\t/**\n\t * @deprecated - use dropdown.autoFlipHorizontally\n\t */\n\tautoFlipHorizontally?: PopoverProps['autoFlipHorizontally'];\n\t/**\n\t * @deprecated - use dropdown.options\n\t */\n\toptions?: DateRangeOptionListProps['options'];\n\t/**\n\t * @deprecated - use dropdown.startDateInput.placeholder\n\t */\n\tstartPlaceholder?: InputProps['placeholder'];\n\t/**\n\t * @deprecated - use dropdown.endDateInput.placeholder\n\t */\n\tendPlaceholder?: InputProps['placeholder'];\n\t/**\n\t * @deprecated - use dropdown.focusedDate\n\t */\n\tfocusedDate?: Date;\n\t/**\n\t * @deprecated - use dropdown.views\n\t */\n\tviews?: 1 | 2;\n}\n\ninterface triggerProps {\n\t/** onClick function for the trigger */\n\tonClick?: () => void;\n}\n\ninterface innerDateRange {\n\tstart: string | null;\n\tend: string | null;\n}\n\nexport const DateRangePicker: FC<DateRangePickerProps> = ({\n\tdisabled,\n\terror,\n\trequired,\n\topen,\n\tdisableCloseOnClickOutside,\n\tonClickOutside,\n\tonOpenChange,\n\tfocusTrapOptions,\n\tdateFormat,\n\tvalue,\n\tdefaultValue,\n\tonChange,\n\tmaxDate,\n\tminDate,\n\tisoFormat,\n\tinput,\n\tdropdown,\n\tportalDataAttributes,\n\n\t// deprecated props\n\ttrigger,\n\tsize: dsize = 'medium',\n\tplaceholder: dplaceholder = 'Select Date Range',\n\tdirection: ddirection = 'br',\n\tautoFlipHorizontally: dautoFlipHorizontally,\n\tautoFlipVertically: dautoFlipVertically,\n\tportal: dPortal = true,\n\tdisplayValue: ddisplayValue,\n\tviews: dviews = 1,\n\tfocusedDate: dfocusedDate,\n\toptions: doptions,\n\tstartPlaceholder = 'Start Date',\n\tendPlaceholder = 'End Date',\n\t...rest\n}) => {\n\tconst {\n\t\tportal = dPortal,\n\t\tdirection = ddirection,\n\t\tautoFlipVertically = dautoFlipVertically,\n\t\tautoFlipHorizontally = dautoFlipHorizontally,\n\t\toptions = doptions,\n\t\tstartDateInput,\n\t\tendDateInput,\n\t\tviews = dviews,\n\t\tcalendar,\n\t\tclearButton,\n\t} = { ...dropdown };\n\n\tconst { onChange: CalendarOnChange, focusedDate = dfocusedDate } = {\n\t\t...calendar,\n\t};\n\tconst { onClick: ClearButtonOnClick } = { ...clearButton };\n\tconst {\n\t\tsize: inputSize = dsize,\n\t\tplaceholder: inputPlaceholder = dplaceholder,\n\t\tdisplayValue: inputDisplayValue = ddisplayValue,\n\t\telement: inputEl = trigger,\n\t} = { ...input };\n\n\tconst {\n\t\tplaceholder: startDateInputplaceholder = startPlaceholder,\n\t\tonBlur: startDateInputOnBlur,\n\t\tonChange: startDateInputOnChange,\n\t} = { ...startDateInput };\n\n\tconst {\n\t\tplaceholder: endDateInputplaceholder = endPlaceholder,\n\t\tonBlur: endDateInputOnBlur,\n\t\tonChange: endDateInputOnChange,\n\t} = { ...endDateInput };\n\n\tconst triggerRef = React.useRef(null);\n\tconst timezone = useContext(TimezoneContext);\n\tconst getNewToday = DateTime.fromJSDate(new Date(), {\n\t\tzone: timezone,\n\t});\n\n\tconst [openCal, setOpenCal] = React.useState(open);\n\tconst [internalError, setInternalError] = React.useState(error);\n\tconst [initialValue, setInitialValue] = React.useState({\n\t\tstart: value?.start\n\t\t\t? DateTime.fromJSDate(value.start).setZone(timezone)\n\t\t\t: null,\n\t\tend: value?.end\n\t\t\t? DateTime.fromJSDate(value.end).setZone(timezone)\n\t\t\t: null,\n\t});\n\tconst [iValue, setIValue] = React.useState<any>(initialValue);\n\tconst minMaxRange = React.useMemo(() => {\n\t\treturn {\n\t\t\tmin:\n\t\t\t\tminDate &&\n\t\t\t\tDateTime.fromJSDate(minDate).startOf('day').setZone(timezone),\n\t\t\tmax:\n\t\t\t\tmaxDate &&\n\t\t\t\tDateTime.fromJSDate(maxDate).endOf('day').setZone(timezone),\n\t\t};\n\t}, [minDate, timezone, maxDate]);\n\tconst [outOfRange, setOutOfRange] = React.useState(\n\t\tcheckScope(\n\t\t\tvalue,\n\t\t\tminMaxRange?.min?.toJSDate(),\n\t\t\tminMaxRange?.max?.toJSDate()\n\t\t)\n\t);\n\n\tReact.useEffect(() => {\n\t\tconst newValue = {\n\t\t\tstart: value?.start\n\t\t\t\t? DateTime.fromJSDate(value.start).setZone(timezone)\n\t\t\t\t: null,\n\t\t\tend: value?.end\n\t\t\t\t? DateTime.fromJSDate(value.end).setZone(timezone)\n\t\t\t\t: null,\n\t\t};\n\n\t\tsetInitialValue(newValue);\n\t\tsetIValue(newValue);\n\t\tsetOutOfRange(\n\t\t\tcheckScope(\n\t\t\t\tvalue,\n\t\t\t\tminMaxRange?.min?.toJSDate(),\n\t\t\t\tminMaxRange?.max?.toJSDate()\n\t\t\t)\n\t\t);\n\t}, [minMaxRange?.max, minMaxRange?.min, timezone, value]);\n\n\tconst stopRender = useRef(false);\n\tReact.useEffect(() => {\n\t\tlet start;\n\t\tlet end;\n\t\tif (isoFormat) {\n\t\t\tstart = iValue.start.toISO();\n\t\t\tend = iValue.end.toISO();\n\t\t} else {\n\t\t\tstart = iValue.start ? iValue.start.toJSDate() : null;\n\t\t\tend = iValue.end ? iValue.end.toJSDate() : null;\n\t\t}\n\n\t\tstopRender.current && onChange({ start, end });\n\t\tstopRender.current = true;\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [timezone]);\n\n\t/*\n\t * handler for MultiViewCalendar onChange\n\t */\n\tconst blurBlocker = useRef(false);\n\tconst handleCalendarOnChange = (event: any) => {\n\t\tlet eventValue: any = event.target.value as SelectionRange;\n\t\tblurBlocker.current = true;\n\t\t// Force today to select today of the timezone\n\t\tif (event.nativeEvent.target.className === 'k-nav-today') {\n\t\t\tevent.syntheticEvent.stopPropagation();\n\n\t\t\tconst today = DateTime.now().setZone(timezone);\n\n\t\t\tif (iValue.start && iValue.end) {\n\t\t\t\t// reset selection if both values are already filled\n\t\t\t\teventValue = {\n\t\t\t\t\tstart: today.startOf('day'),\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tif (event.target.activeRangeEnd === 'start') {\n\t\t\t\t\teventValue = {\n\t\t\t\t\t\tstart: iValue.start ? iValue.start : undefined,\n\t\t\t\t\t\tend: today.endOf('day'),\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tif (event.target.activeRangeEnd === 'end') {\n\t\t\t\t\teventValue = {\n\t\t\t\t\t\tstart: today.startOf('day'),\n\t\t\t\t\t\tend: iValue.end ? iValue.end : undefined,\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tif (eventValue.start > eventValue.end) {\n\t\t\t\t\tconst reverseEventValue = {\n\t\t\t\t\t\tstart: eventValue.end,\n\t\t\t\t\t\tend: eventValue.start,\n\t\t\t\t\t};\n\n\t\t\t\t\teventValue = reverseEventValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tsetIValue(eventValue);\n\t\t\treturn;\n\t\t}\n\n\t\tconst startValue = eventValue?.start\n\t\t\t? DateTime.fromJSDate(eventValue.start).setZone(timezone, {\n\t\t\t\t\tkeepLocalTime: true,\n\t\t\t })\n\t\t\t: null;\n\n\t\tconst endValue = eventValue?.end\n\t\t\t? DateTime.fromJSDate(eventValue.end).setZone(timezone, {\n\t\t\t\t\tkeepLocalTime: true,\n\t\t\t })\n\t\t\t: null;\n\n\t\tsetIValue({\n\t\t\tstart: startValue,\n\t\t\tend: endValue,\n\t\t});\n\n\t\tCalendarOnChange?.(event);\n\t};\n\n\t// handler for DateInput onBlur\n\tconst handleDateOnBlur = (\n\t\te: FocusEvent<HTMLInputElement>,\n\t\tdata: Date,\n\t\ttype: 'start' | 'end'\n\t) => {\n\t\ttype === 'start'\n\t\t\t? startDateInputOnBlur?.(e, data)\n\t\t\t: endDateInputOnBlur?.(e, data);\n\t\tif (!blurBlocker.current) {\n\t\t\tif (!isValid(data)) {\n\t\t\t\tsetOutOfRange({ ...outOfRange, [type]: 'Enter valid date' });\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst value = {\n\t\t\t\t...iValue,\n\t\t\t\t[type]: DateTime.fromJSDate(data).setZone(timezone, {\n\t\t\t\t\tkeepLocalTime: true,\n\t\t\t\t}),\n\t\t\t};\n\n\t\t\tsetIValue(value);\n\t\t}\n\t};\n\n\tconst handleDateOnChange = (\n\t\te: ChangeEvent<HTMLInputElement>,\n\t\tdata: string,\n\t\ttype: 'start' | 'end'\n\t) => {\n\t\ttype === 'start'\n\t\t\t? startDateInputOnChange?.(e, data)\n\t\t\t: endDateInputOnChange?.(e, data);\n\t\tsetOutOfRange({ ...outOfRange, [type]: false });\n\t};\n\n\tconst handleOptionListOnChange = (data: any) => {\n\t\tconst newValue = {\n\t\t\tstart: data.start ? DateTime.fromJSDate(data.start) : null,\n\t\t\tend: data.end ? DateTime.fromJSDate(data.end) : null,\n\t\t};\n\t\tsetInitialValue(newValue);\n\t\tsetIValue(newValue);\n\t\tonChange(data);\n\t\tsetOpenCal(false);\n\t\tonOpenChange?.(false);\n\t};\n\n\tReact.useEffect(() => {\n\t\tsetOutOfRange(\n\t\t\tcheckScope(\n\t\t\t\t{\n\t\t\t\t\tstart: iValue?.start?.toJSDate(),\n\t\t\t\t\tend: iValue?.end?.toJSDate(),\n\t\t\t\t},\n\t\t\t\tminMaxRange?.min?.toJSDate(),\n\t\t\t\tminMaxRange?.max?.toJSDate()\n\t\t\t)\n\t\t);\n\n\t\tblurBlocker.current = false;\n\t}, [iValue, minMaxRange?.max, minMaxRange?.min]);\n\n\tReact.useEffect(() => {\n\t\tconst scope = checkScope(\n\t\t\t{\n\t\t\t\tstart: initialValue?.start?.toJSDate(),\n\t\t\t\tend: initialValue?.end?.toJSDate(),\n\t\t\t},\n\t\t\tminMaxRange?.min?.toJSDate(),\n\t\t\tminMaxRange?.max?.toJSDate()\n\t\t);\n\n\t\tif (!scope.start && !scope.end) setInternalError(error ?? false);\n\t\tif (!!scope.start || !!scope.end) setInternalError(true);\n\t}, [error, initialValue, minMaxRange?.max, minMaxRange?.min]);\n\n\t// confirm handler, this returns dateRange value through onChange\n\tconst handleOnConfirm = () => {\n\t\tconst scope = checkScope(\n\t\t\t{\n\t\t\t\tstart: iValue?.start?.toJSDate(),\n\t\t\t\tend: iValue?.end?.toJSDate(),\n\t\t\t},\n\t\t\tminMaxRange?.min?.toJSDate(),\n\t\t\tminMaxRange?.max?.toJSDate()\n\t\t);\n\t\t!scope.start && !scope.end\n\t\t\t? setInternalError(error ?? false)\n\t\t\t: setInternalError(error ?? true);\n\t\tsetInitialValue(iValue);\n\t\tsetOpenCal(false);\n\t\tonOpenChange?.(false);\n\n\t\tif (isoFormat) {\n\t\t\tonChange?.({\n\t\t\t\tstart: iValue?.start?.toISO(),\n\t\t\t\tend: iValue?.end?.endOf('day').setZone(timezone).toISO(),\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tonChange?.({\n\t\t\tstart: iValue?.start?.startOf('day').setZone(timezone).toJSDate(),\n\t\t\tend: iValue?.end?.endOf('day').setZone(timezone).toJSDate(),\n\t\t});\n\t};\n\n\t// close popover function - this will revert dateRange to initial value\n\tconst close = () => {\n\t\tif (openCal) {\n\t\t\tsetIValue(initialValue);\n\t\t\tsetOpenCal(false);\n\t\t\tonOpenChange?.(false);\n\t\t\t!inputEl && triggerRef.current.focus();\n\t\t}\n\t};\n\n\tconst { labelFor: inputId } = React.useContext(FormFieldContext);\n\n\tconst handleOnClickOutside = (e: any) => {\n\t\tif (openCal) {\n\t\t\tif (e?.target?.closest?.(`[for=\"${inputId}\"]`)) return;\n\n\t\t\tonClickOutside?.(e);\n\n\t\t\tif (!disableCloseOnClickOutside) {\n\t\t\t\tsetIValue(initialValue);\n\t\t\t\tsetOpenCal(false);\n\t\t\t\tonOpenChange?.(false);\n\t\t\t}\n\t\t}\n\t};\n\n\t// toggle open state\n\tconst toggleOpen = () => {\n\t\tif (openCal) {\n\t\t\tclose();\n\t\t} else {\n\t\t\tsetOpenCal(!openCal);\n\t\t\tonOpenChange?.(true);\n\t\t}\n\t};\n\n\t// keyboard event for end date input to confirm and close\n\tconst calendarKeyPress = (event: React.KeyboardEvent<HTMLDivElement>) => {\n\t\tif (event.code === Keys.Space && !isApplyDisabled) {\n\t\t\thandleOnConfirm();\n\t\t\tevent.preventDefault();\n\t\t}\n\t};\n\n\tconst clearDateRange = (d: any) => {\n\t\tclose();\n\t\tonChange?.(d);\n\t\tsetIValue(d);\n\t\tsetInternalError(error ?? required ?? false);\n\t\tsetInitialValue(d);\n\t};\n\n\tconst clearInner = (e: MouseEvent<HTMLButtonElement>) => {\n\t\tconst nullDateRange: innerDateRange = { start: null, end: null };\n\t\tsetIValue(nullDateRange);\n\t\tClearButtonOnClick?.(e, nullDateRange);\n\t};\n\n\t// keyboard event for trigger to open popover\n\tconst triggerKeyPress = (event: React.KeyboardEvent<HTMLDivElement>) => {\n\t\tif (event.code === Keys.Enter || event.code === Keys.Space) {\n\t\t\tsetOpenCal(true);\n\t\t\tonOpenChange?.(true);\n\t\t}\n\t};\n\n\t// Handles when open prop changes\n\tconst initialRender = useRef(true);\n\tReact.useEffect(() => {\n\t\tsetOpenCal(open);\n\t\tif (!initialRender.current) {\n\t\t\tonOpenChange?.(open);\n\t\t}\n\t\tinitialRender.current = false;\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [open]);\n\n\tconst hasError = outOfRange.start || outOfRange.end;\n\tconst hasAcceptableValues =\n\t\t(iValue.start && iValue.end) ||\n\t\t(iValue.start === null && iValue.end === null);\n\tconst requiredCheck =\n\t\trequired && (iValue.start === null || iValue.end === null);\n\tconst isApplyDisabled = (requiredCheck ||\n\t\t!hasAcceptableValues ||\n\t\thasError ||\n\t\t!outOfRange) as boolean;\n\n\tconst triggerProps = {\n\t\tonClick: toggleOpen,\n\t};\n\n\t// custom cell to override the today highlight to match timezone today\n\tconst customCell = (props: CalendarCellProps) => {\n\t\tif (format(props.value) === format(getNewToday)) {\n\t\t\treturn <CalendarCell {...props} isToday />;\n\t\t}\n\t\treturn <CalendarCell {...props} isToday={false} />;\n\t};\n\treturn (\n\t\t<Popover\n\t\t\topen={!disabled && openCal}\n\t\t\tonClickOutside={handleOnClickOutside}\n\t\t\ttrigger={\n\t\t\t\tinputEl?.(\n\t\t\t\t\tinitialValue,\n\t\t\t\t\ttriggerProps,\n\t\t\t\t\topenCal,\n\t\t\t\t\tinternalError\n\t\t\t\t) ?? (\n\t\t\t\t\t<DateRangeTrigger\n\t\t\t\t\t\topen={openCal}\n\t\t\t\t\t\tplaceholder={inputPlaceholder}\n\t\t\t\t\t\tonClick={toggleOpen}\n\t\t\t\t\t\tonKeyDown={triggerKeyPress}\n\t\t\t\t\t\tonChange={clearDateRange}\n\t\t\t\t\t\tvalue={{\n\t\t\t\t\t\t\tstart: initialValue.start?.isValid\n\t\t\t\t\t\t\t\t? new Date(format(initialValue.start))\n\t\t\t\t\t\t\t\t: null,\n\t\t\t\t\t\t\tend: initialValue.end?.isValid\n\t\t\t\t\t\t\t\t? new Date(format(initialValue.end))\n\t\t\t\t\t\t\t\t: null,\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tdisplayValue={inputDisplayValue}\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\terror={internalError}\n\t\t\t\t\t\tsize={inputSize}\n\t\t\t\t\t\tref={triggerRef}\n\t\t\t\t\t\trequired={required}\n\t\t\t\t\t\tdata-anvil-component=\"DateRangePicker\"\n\t\t\t\t\t\t{...rest}\n\t\t\t\t\t/>\n\t\t\t\t)\n\t\t\t}\n\t\t\tdirection={direction}\n\t\t\tpadding={null}\n\t\t\twidth=\"auto\"\n\t\t\tclassName=\"DateRangePicker__popover\"\n\t\t\tportal={portal}\n\t\t\tfocusTrapOptions={focusTrapOptions}\n\t\t\tautoFlipHorizontally={autoFlipHorizontally}\n\t\t\tautoFlipVertically={autoFlipVertically}\n\t\t\tportalDataAttributes={portalDataAttributes}\n\t\t>\n\t\t\t<KeyPressListener\n\t\t\t\tcode={Keys.Esc}\n\t\t\t\thandler={close}\n\t\t\t\tdisabled={disableCloseOnClickOutside || !openCal}\n\t\t\t/>\n\t\t\t<div className=\"d-f flex-row\">\n\t\t\t\t{options && options.length > 0 && (\n\t\t\t\t\t<DateRangeOptionList\n\t\t\t\t\t\toptions={options}\n\t\t\t\t\t\tmin={minMaxRange?.min?.toJSDate()}\n\t\t\t\t\t\tmax={minMaxRange?.max?.toJSDate()}\n\t\t\t\t\t\tonChange={handleOptionListOnChange}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t\t<div className=\"DateRangePicker\">\n\t\t\t\t\t<div className=\"DateRangePicker__header\">\n\t\t\t\t\t\t<div className=\"DateRangePicker__inputGroup\">\n\t\t\t\t\t\t\t<DateRangeInput\n\t\t\t\t\t\t\t\tplaceholder={startDateInputplaceholder}\n\t\t\t\t\t\t\t\tvalue={iValue?.start}\n\t\t\t\t\t\t\t\terror={outOfRange?.start}\n\t\t\t\t\t\t\t\tdateFormat={dateFormat}\n\t\t\t\t\t\t\t\tonBlur={(e, data) => {\n\t\t\t\t\t\t\t\t\thandleDateOnBlur(e, data, 'start');\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tonChange={(e, data) => {\n\t\t\t\t\t\t\t\t\thandleDateOnChange(e, data, 'start');\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\tname=\"arrow_forward\"\n\t\t\t\t\t\t\t\tclassName=\"DateRangePicker__fromTo\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<DateRangeInput\n\t\t\t\t\t\t\t\tplaceholder={endDateInputplaceholder}\n\t\t\t\t\t\t\t\tvalue={iValue?.end}\n\t\t\t\t\t\t\t\terror={outOfRange?.end}\n\t\t\t\t\t\t\t\tdateFormat={dateFormat}\n\t\t\t\t\t\t\t\tonBlur={(e, data) => {\n\t\t\t\t\t\t\t\t\thandleDateOnBlur(e, data, 'end');\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tonChange={(e, data) => {\n\t\t\t\t\t\t\t\t\thandleDateOnChange(e, data, 'end');\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div\n\t\t\t\t\t\tonKeyPress={calendarKeyPress}\n\t\t\t\t\t\tclassName=\"DatePicker__calendar\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<MultiViewCalendar\n\t\t\t\t\t\t\tmode=\"range\"\n\t\t\t\t\t\t\tviews={views}\n\t\t\t\t\t\t\tvalue={{\n\t\t\t\t\t\t\t\tstart: iValue.start\n\t\t\t\t\t\t\t\t\t? new Date(format(iValue.start))\n\t\t\t\t\t\t\t\t\t: null,\n\t\t\t\t\t\t\t\tend: iValue.end\n\t\t\t\t\t\t\t\t\t? new Date(format(iValue.end))\n\t\t\t\t\t\t\t\t\t: null,\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tonChange={handleCalendarOnChange}\n\t\t\t\t\t\t\tfocusedDate={\n\t\t\t\t\t\t\t\tfocusedDate\n\t\t\t\t\t\t\t\t\t? focusedDate\n\t\t\t\t\t\t\t\t\t: !(value?.start && value?.end)\n\t\t\t\t\t\t\t\t\t? new Date()\n\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdefaultValue={defaultValue}\n\t\t\t\t\t\t\tmin={minMaxRange?.min?.toJSDate()}\n\t\t\t\t\t\t\tmax={minMaxRange?.max?.toJSDate()}\n\t\t\t\t\t\t\tcell={customCell}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<Stack\n\t\t\t\tclassName=\"DateRangePicker__actions\"\n\t\t\t\tdirection=\"row-reverse\"\n\t\t\t\tjustifyContent=\"space-between\"\n\t\t\t>\n\t\t\t\t<Stack direction=\"row-reverse\" spacing={2}>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tdisabled={isApplyDisabled}\n\t\t\t\t\t\tonClick={handleOnConfirm}\n\t\t\t\t\t\tsmall\n\t\t\t\t\t\tcolor=\"primary\"\n\t\t\t\t\t>\n\t\t\t\t\t\tApply\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Button small fill=\"subtle\" onClick={close}>\n\t\t\t\t\t\tCancel\n\t\t\t\t\t</Button>\n\t\t\t\t</Stack>\n\t\t\t\t<Link\n\t\t\t\t\tprimary\n\t\t\t\t\tonClick={clearInner}\n\t\t\t\t\tdisabled={!(iValue?.start || iValue?.end)}\n\t\t\t\t\tclassName=\"fs-2\"\n\t\t\t\t>\n\t\t\t\t\tClear\n\t\t\t\t</Link>\n\t\t\t</Stack>\n\t\t</Popover>\n\t);\n};\n\nconst format = (date: any, format = 'LL/dd/yyyy') => {\n\tif (date instanceof Date) return DateTime.fromJSDate(date).toFormat(format);\n\tif (date instanceof DateTime) return date.toFormat(format);\n\treturn date;\n};\n"]}
1
+ {"version":3,"file":"DateRangePicker.js","sourceRoot":"","sources":["../../../src/components/DateRangePicker/DateRangePicker.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, {\n\tChangeEvent,\n\tFC,\n\tFocusEvent,\n\tuseContext,\n\tuseRef,\n\tMouseEvent,\n} from 'react';\nimport { KeyPressListener } from '../KeyPressListener';\nimport { Popover, PopoverProps } from '../Popover';\nimport { Stack } from '../Stack';\nimport { Button } from '../Button';\nimport { Icon } from '../Icon';\nimport { Link } from '../Link';\nimport {\n\tDateRangeInput,\n\tDateRangeTrigger,\n\tDateRangeOptionList,\n\tDateRangeOptionListProps,\n\tDateRangeInputProps,\n} from './components';\nimport {\n\tMultiViewCalendar,\n\tMultiViewCalendarProps,\n\tSelectionRange,\n\tCalendarCell,\n\tCalendarCellProps,\n} from '@progress/kendo-react-dateinputs';\nimport { Keys } from '../../utilities/keyCodes';\nimport { isValid } from '../../utilities/dateFormat';\nimport { UseFocusTrapProps } from '../../hooks';\nimport { TimezoneContext } from '../../utilities/TimezoneProvider';\nimport { DateTime } from 'luxon';\nimport { checkScope } from './utils';\nimport { FormFieldContext } from '../../components/FormField';\nimport { PopperProps } from '../../internal';\n\ninterface CalendarInputProps {\n\tplaceholder?: DateRangeInputProps['placeholder'];\n\tonChange?: DateRangeInputProps['onChange'];\n\tonBlur?: DateRangeInputProps['onBlur'];\n}\n\ninterface CalendarProps {\n\tonChange?: MultiViewCalendarProps['onChange'];\n\tfocusedDate?: Date;\n}\n\ninterface ClearButtonProps {\n\tonClick?: (e: MouseEvent<HTMLButtonElement>, value: innerDateRange) => void;\n}\n\ninterface DropdownProps {\n\tportal?: boolean;\n\tdirection?: PopoverProps['direction'];\n\tautoFlipVertically?: PopoverProps['autoFlipVertically'];\n\tautoFlipHorizontally?: PopoverProps['autoFlipHorizontally'];\n\toptions?: DateRangeOptionListProps['options'];\n\tenableTimezoneContext?: DateRangeOptionListProps['enableTimezoneContext'];\n\tstartDateInput?: CalendarInputProps;\n\tendDateInput?: CalendarInputProps;\n\tviews?: 1 | 2;\n\tcalendar?: CalendarProps;\n\tclearButton?: ClearButtonProps;\n}\n\ninterface InputProps {\n\tsize?: 'small' | 'medium' | 'large';\n\tplaceholder?: string;\n\tdisplayValue?: string;\n\telement?: (\n\t\tvalue: DateRangePickerProps['value'] | any,\n\t\ttriggerProp: triggerProps,\n\t\topen: DateRangePickerProps['open'],\n\t\terror: DateRangePickerProps['error']\n\t) => React.ReactElement;\n}\n\nexport interface DateRangePickerProps {\n\t/** Disabled state */\n\tdisabled?: boolean;\n\n\t/** Indicates that the field is required */\n\trequired?: boolean;\n\n\t/** Error state */\n\terror?: boolean;\n\n\t/** onChange function */\n\tonChange?: (value: MultiViewCalendarProps['value'] | any) => void;\n\n\t/** A handler that is called on every open and close action */\n\tonOpenChange?: (open: boolean) => void;\n\n\t/** A handler that is called on every click on any element outside of the anchor element when it is open */\n\tonClickOutside?: PopoverProps['onClickOutside'];\n\n\t/** Default calendar value */\n\tdefaultValue?: MultiViewCalendarProps['value'];\n\n\t/** Maximum date allowed */\n\tmaxDate?: MultiViewCalendarProps['max'];\n\n\t/** Minimum date allowed */\n\tminDate?: MultiViewCalendarProps['min'];\n\n\t/** Set value */\n\tvalue?: SelectionRange;\n\n\t/** Whether the DateRangePicker is open or not */\n\topen?: boolean;\n\n\t/** Disables close on click outside */\n\tdisableCloseOnClickOutside?: boolean;\n\n\t/**\n\t * Date format string\n\t */\n\tdateFormat?: string;\n\n\t/** Changes the onChange return to ISO string format */\n\tisoFormat?: boolean;\n\n\t/** Options passed into useFocusTrap */\n\tfocusTrapOptions?: UseFocusTrapProps;\n\n\t/** popover component prop */\n\tdropdown?: DropdownProps;\n\n\t/** trigger component prop */\n\tinput?: InputProps; // new trigger props\n\n\t/** Props to be passed to the portaled div */\n\tportalDataAttributes?: PopperProps['portalDataAttributes'];\n\n\t// Keeping below for backward compatibility\n\n\t/**\n\t * @deprecated - use input.size\n\t */\n\tsize?: 'small' | 'medium' | 'large';\n\t/**\n\t * @deprecated - use input.placeholder\n\t */\n\tplaceholder?: string;\n\t/**\n\t * @deprecated - use input.displayValue\n\t */\n\tdisplayValue?: string;\n\t/**\n\t * @deprecated - use input.element\n\t */\n\ttrigger?: (\n\t\tvalue: DateRangePickerProps['value'] | any,\n\t\ttriggerProp: triggerProps,\n\t\topen: DateRangePickerProps['open'],\n\t\terror: DateRangePickerProps['error']\n\t) => React.ReactElement;\n\t/**\n\t * @deprecated - use dropdown.portal\n\t */\n\tportal?: boolean;\n\t/**\n\t * @deprecated - use dropdown.direction\n\t */\n\tdirection?: PopoverProps['direction'];\n\t/**\n\t * @deprecated - use dropdown.autoFlipVertically\n\t */\n\tautoFlipVertically?: PopoverProps['autoFlipVertically'];\n\t/**\n\t * @deprecated - use dropdown.autoFlipHorizontally\n\t */\n\tautoFlipHorizontally?: PopoverProps['autoFlipHorizontally'];\n\t/**\n\t * @deprecated - use dropdown.options\n\t */\n\toptions?: DateRangeOptionListProps['options'];\n\t/**\n\t * @deprecated - use dropdown.startDateInput.placeholder\n\t */\n\tstartPlaceholder?: InputProps['placeholder'];\n\t/**\n\t * @deprecated - use dropdown.endDateInput.placeholder\n\t */\n\tendPlaceholder?: InputProps['placeholder'];\n\t/**\n\t * @deprecated - use dropdown.focusedDate\n\t */\n\tfocusedDate?: Date;\n\t/**\n\t * @deprecated - use dropdown.views\n\t */\n\tviews?: 1 | 2;\n}\n\ninterface triggerProps {\n\t/** onClick function for the trigger */\n\tonClick?: () => void;\n}\n\ninterface innerDateRange {\n\tstart: string | null;\n\tend: string | null;\n}\n\nexport const DateRangePicker: FC<DateRangePickerProps> = ({\n\tdisabled,\n\terror,\n\trequired,\n\topen,\n\tdisableCloseOnClickOutside,\n\tonClickOutside,\n\tonOpenChange,\n\tfocusTrapOptions,\n\tdateFormat,\n\tvalue,\n\tdefaultValue,\n\tonChange,\n\tmaxDate,\n\tminDate,\n\tisoFormat,\n\tinput,\n\tdropdown,\n\tportalDataAttributes,\n\n\t// deprecated props\n\ttrigger,\n\tsize: dsize = 'medium',\n\tplaceholder: dplaceholder = 'Select Date Range',\n\tdirection: ddirection = 'br',\n\tautoFlipHorizontally: dautoFlipHorizontally,\n\tautoFlipVertically: dautoFlipVertically,\n\tportal: dPortal = true,\n\tdisplayValue: ddisplayValue,\n\tviews: dviews = 1,\n\tfocusedDate: dfocusedDate,\n\toptions: doptions,\n\tstartPlaceholder = 'Start Date',\n\tendPlaceholder = 'End Date',\n\t...rest\n}) => {\n\tconst {\n\t\tportal = dPortal,\n\t\tdirection = ddirection,\n\t\tautoFlipVertically = dautoFlipVertically,\n\t\tautoFlipHorizontally = dautoFlipHorizontally,\n\t\toptions = doptions,\n\t\tstartDateInput,\n\t\tendDateInput,\n\t\tviews = dviews,\n\t\tcalendar,\n\t\tclearButton,\n\t\tenableTimezoneContext,\n\t} = { ...dropdown };\n\n\tconst { onChange: CalendarOnChange, focusedDate = dfocusedDate } = {\n\t\t...calendar,\n\t};\n\tconst { onClick: ClearButtonOnClick } = { ...clearButton };\n\tconst {\n\t\tsize: inputSize = dsize,\n\t\tplaceholder: inputPlaceholder = dplaceholder,\n\t\tdisplayValue: inputDisplayValue = ddisplayValue,\n\t\telement: inputEl = trigger,\n\t} = { ...input };\n\n\tconst {\n\t\tplaceholder: startDateInputplaceholder = startPlaceholder,\n\t\tonBlur: startDateInputOnBlur,\n\t\tonChange: startDateInputOnChange,\n\t} = { ...startDateInput };\n\n\tconst {\n\t\tplaceholder: endDateInputplaceholder = endPlaceholder,\n\t\tonBlur: endDateInputOnBlur,\n\t\tonChange: endDateInputOnChange,\n\t} = { ...endDateInput };\n\n\tconst triggerRef = React.useRef(null);\n\tconst timezone = useContext(TimezoneContext);\n\tconst getNewToday = DateTime.fromJSDate(new Date(), {\n\t\tzone: timezone,\n\t});\n\n\tconst [openCal, setOpenCal] = React.useState(open);\n\tconst [internalError, setInternalError] = React.useState(error);\n\tconst [initialValue, setInitialValue] = React.useState({\n\t\tstart: value?.start\n\t\t\t? DateTime.fromJSDate(value.start).setZone(timezone)\n\t\t\t: null,\n\t\tend: value?.end\n\t\t\t? DateTime.fromJSDate(value.end).setZone(timezone)\n\t\t\t: null,\n\t});\n\tconst [iValue, setIValue] = React.useState<any>(initialValue);\n\tconst minMaxRange = React.useMemo(() => {\n\t\treturn {\n\t\t\tmin:\n\t\t\t\tminDate &&\n\t\t\t\tDateTime.fromJSDate(minDate).startOf('day').setZone(timezone),\n\t\t\tmax:\n\t\t\t\tmaxDate &&\n\t\t\t\tDateTime.fromJSDate(maxDate).endOf('day').setZone(timezone),\n\t\t};\n\t}, [minDate, timezone, maxDate]);\n\tconst [outOfRange, setOutOfRange] = React.useState(\n\t\tcheckScope(\n\t\t\tvalue,\n\t\t\tminMaxRange?.min?.toJSDate(),\n\t\t\tminMaxRange?.max?.toJSDate()\n\t\t)\n\t);\n\n\tReact.useEffect(() => {\n\t\tconst newValue = {\n\t\t\tstart: value?.start\n\t\t\t\t? DateTime.fromJSDate(value.start).setZone(timezone)\n\t\t\t\t: null,\n\t\t\tend: value?.end\n\t\t\t\t? DateTime.fromJSDate(value.end).setZone(timezone)\n\t\t\t\t: null,\n\t\t};\n\n\t\tsetInitialValue(newValue);\n\t\tsetIValue(newValue);\n\t\tsetOutOfRange(\n\t\t\tcheckScope(\n\t\t\t\tvalue,\n\t\t\t\tminMaxRange?.min?.toJSDate(),\n\t\t\t\tminMaxRange?.max?.toJSDate()\n\t\t\t)\n\t\t);\n\t}, [minMaxRange?.max, minMaxRange?.min, timezone, value]);\n\n\tconst stopRender = useRef(false);\n\tReact.useEffect(() => {\n\t\tlet start;\n\t\tlet end;\n\t\tif (isoFormat) {\n\t\t\tstart = iValue.start.toISO();\n\t\t\tend = iValue.end.toISO();\n\t\t} else {\n\t\t\tstart = iValue.start ? iValue.start.toJSDate() : null;\n\t\t\tend = iValue.end ? iValue.end.toJSDate() : null;\n\t\t}\n\n\t\tstopRender.current && onChange({ start, end });\n\t\tstopRender.current = true;\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [timezone]);\n\n\t/*\n\t * handler for MultiViewCalendar onChange\n\t */\n\tconst blurBlocker = useRef(false);\n\tconst handleCalendarOnChange = (event: any) => {\n\t\tlet eventValue: any = event.target.value as SelectionRange;\n\t\tblurBlocker.current = true;\n\t\t// Force today to select today of the timezone\n\t\tif (event.nativeEvent.target.className === 'k-nav-today') {\n\t\t\tevent.syntheticEvent.stopPropagation();\n\n\t\t\tconst today = DateTime.now().setZone(timezone);\n\n\t\t\tif (iValue.start && iValue.end) {\n\t\t\t\t// reset selection if both values are already filled\n\t\t\t\teventValue = {\n\t\t\t\t\tstart: today.startOf('day'),\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tif (event.target.activeRangeEnd === 'start') {\n\t\t\t\t\teventValue = {\n\t\t\t\t\t\tstart: iValue.start ? iValue.start : undefined,\n\t\t\t\t\t\tend: today.endOf('day'),\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tif (event.target.activeRangeEnd === 'end') {\n\t\t\t\t\teventValue = {\n\t\t\t\t\t\tstart: today.startOf('day'),\n\t\t\t\t\t\tend: iValue.end ? iValue.end : undefined,\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tif (eventValue.start > eventValue.end) {\n\t\t\t\t\tconst reverseEventValue = {\n\t\t\t\t\t\tstart: eventValue.end,\n\t\t\t\t\t\tend: eventValue.start,\n\t\t\t\t\t};\n\n\t\t\t\t\teventValue = reverseEventValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tsetIValue(eventValue);\n\t\t\treturn;\n\t\t}\n\n\t\tconst startValue = eventValue?.start\n\t\t\t? DateTime.fromJSDate(eventValue.start).setZone(timezone, {\n\t\t\t\t\tkeepLocalTime: true,\n\t\t\t })\n\t\t\t: null;\n\n\t\tconst endValue = eventValue?.end\n\t\t\t? DateTime.fromJSDate(eventValue.end).setZone(timezone, {\n\t\t\t\t\tkeepLocalTime: true,\n\t\t\t })\n\t\t\t: null;\n\n\t\tsetIValue({\n\t\t\tstart: startValue,\n\t\t\tend: endValue,\n\t\t});\n\n\t\tCalendarOnChange?.(event);\n\t};\n\n\t// handler for DateInput onBlur\n\tconst handleDateOnBlur = (\n\t\te: FocusEvent<HTMLInputElement>,\n\t\tdata: Date,\n\t\ttype: 'start' | 'end'\n\t) => {\n\t\ttype === 'start'\n\t\t\t? startDateInputOnBlur?.(e, data)\n\t\t\t: endDateInputOnBlur?.(e, data);\n\t\tif (!blurBlocker.current) {\n\t\t\tif (!isValid(data)) {\n\t\t\t\tsetOutOfRange({ ...outOfRange, [type]: 'Enter valid date' });\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst value = {\n\t\t\t\t...iValue,\n\t\t\t\t[type]: DateTime.fromJSDate(data).setZone(timezone, {\n\t\t\t\t\tkeepLocalTime: true,\n\t\t\t\t}),\n\t\t\t};\n\n\t\t\tsetIValue(value);\n\t\t}\n\t};\n\n\tconst handleDateOnChange = (\n\t\te: ChangeEvent<HTMLInputElement>,\n\t\tdata: string,\n\t\ttype: 'start' | 'end'\n\t) => {\n\t\ttype === 'start'\n\t\t\t? startDateInputOnChange?.(e, data)\n\t\t\t: endDateInputOnChange?.(e, data);\n\t\tsetOutOfRange({ ...outOfRange, [type]: false });\n\t};\n\n\tconst handleOptionListOnChange = (data: any) => {\n\t\tconst newValue = {\n\t\t\tstart: data.start ? DateTime.fromJSDate(data.start) : null,\n\t\t\tend: data.end ? DateTime.fromJSDate(data.end) : null,\n\t\t};\n\t\tsetInitialValue(newValue);\n\t\tsetIValue(newValue);\n\t\tonChange(data);\n\t\tsetOpenCal(false);\n\t\tonOpenChange?.(false);\n\t};\n\n\tReact.useEffect(() => {\n\t\tsetOutOfRange(\n\t\t\tcheckScope(\n\t\t\t\t{\n\t\t\t\t\tstart: iValue?.start?.toJSDate(),\n\t\t\t\t\tend: iValue?.end?.toJSDate(),\n\t\t\t\t},\n\t\t\t\tminMaxRange?.min?.toJSDate(),\n\t\t\t\tminMaxRange?.max?.toJSDate()\n\t\t\t)\n\t\t);\n\n\t\tblurBlocker.current = false;\n\t}, [iValue, minMaxRange?.max, minMaxRange?.min]);\n\n\tReact.useEffect(() => {\n\t\tconst scope = checkScope(\n\t\t\t{\n\t\t\t\tstart: initialValue?.start?.toJSDate(),\n\t\t\t\tend: initialValue?.end?.toJSDate(),\n\t\t\t},\n\t\t\tminMaxRange?.min?.toJSDate(),\n\t\t\tminMaxRange?.max?.toJSDate()\n\t\t);\n\n\t\tif (!scope.start && !scope.end) setInternalError(error ?? false);\n\t\tif (!!scope.start || !!scope.end) setInternalError(true);\n\t}, [error, initialValue, minMaxRange?.max, minMaxRange?.min]);\n\n\t// confirm handler, this returns dateRange value through onChange\n\tconst handleOnConfirm = () => {\n\t\tconst scope = checkScope(\n\t\t\t{\n\t\t\t\tstart: iValue?.start?.toJSDate(),\n\t\t\t\tend: iValue?.end?.toJSDate(),\n\t\t\t},\n\t\t\tminMaxRange?.min?.toJSDate(),\n\t\t\tminMaxRange?.max?.toJSDate()\n\t\t);\n\t\t!scope.start && !scope.end\n\t\t\t? setInternalError(error ?? false)\n\t\t\t: setInternalError(error ?? true);\n\t\tsetInitialValue(iValue);\n\t\tsetOpenCal(false);\n\t\tonOpenChange?.(false);\n\n\t\tif (isoFormat) {\n\t\t\tonChange?.({\n\t\t\t\tstart: iValue?.start?.toISO(),\n\t\t\t\tend: iValue?.end?.endOf('day').setZone(timezone).toISO(),\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tonChange?.({\n\t\t\tstart: iValue?.start?.startOf('day').setZone(timezone).toJSDate(),\n\t\t\tend: iValue?.end?.endOf('day').setZone(timezone).toJSDate(),\n\t\t});\n\t};\n\n\t// close popover function - this will revert dateRange to initial value\n\tconst close = () => {\n\t\tif (openCal) {\n\t\t\tsetIValue(initialValue);\n\t\t\tsetOpenCal(false);\n\t\t\tonOpenChange?.(false);\n\t\t\t!inputEl && triggerRef.current.focus();\n\t\t}\n\t};\n\n\tconst { labelFor: inputId } = React.useContext(FormFieldContext);\n\n\tconst handleOnClickOutside = (e: any) => {\n\t\tif (openCal) {\n\t\t\tif (e?.target?.closest?.(`[for=\"${inputId}\"]`)) return;\n\n\t\t\tonClickOutside?.(e);\n\n\t\t\tif (!disableCloseOnClickOutside) {\n\t\t\t\tsetIValue(initialValue);\n\t\t\t\tsetOpenCal(false);\n\t\t\t\tonOpenChange?.(false);\n\t\t\t}\n\t\t}\n\t};\n\n\t// toggle open state\n\tconst toggleOpen = () => {\n\t\tif (openCal) {\n\t\t\tclose();\n\t\t} else {\n\t\t\tsetOpenCal(!openCal);\n\t\t\tonOpenChange?.(true);\n\t\t}\n\t};\n\n\t// keyboard event for end date input to confirm and close\n\tconst calendarKeyPress = (event: React.KeyboardEvent<HTMLDivElement>) => {\n\t\tif (event.code === Keys.Space && !isApplyDisabled) {\n\t\t\thandleOnConfirm();\n\t\t\tevent.preventDefault();\n\t\t}\n\t};\n\n\tconst clearDateRange = (d: any) => {\n\t\tclose();\n\t\tonChange?.(d);\n\t\tsetIValue(d);\n\t\tsetInternalError(error ?? required ?? false);\n\t\tsetInitialValue(d);\n\t};\n\n\tconst clearInner = (e: MouseEvent<HTMLButtonElement>) => {\n\t\tconst nullDateRange: innerDateRange = { start: null, end: null };\n\t\tsetIValue(nullDateRange);\n\t\tClearButtonOnClick?.(e, nullDateRange);\n\t};\n\n\t// keyboard event for trigger to open popover\n\tconst triggerKeyPress = (event: React.KeyboardEvent<HTMLDivElement>) => {\n\t\tif (event.code === Keys.Enter || event.code === Keys.Space) {\n\t\t\tsetOpenCal(true);\n\t\t\tonOpenChange?.(true);\n\t\t}\n\t};\n\n\t// Handles when open prop changes\n\tconst initialRender = useRef(true);\n\tReact.useEffect(() => {\n\t\tsetOpenCal(open);\n\t\tif (!initialRender.current) {\n\t\t\tonOpenChange?.(open);\n\t\t}\n\t\tinitialRender.current = false;\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [open]);\n\n\tconst hasError = outOfRange.start || outOfRange.end;\n\tconst hasAcceptableValues =\n\t\t(iValue.start && iValue.end) ||\n\t\t(iValue.start === null && iValue.end === null);\n\tconst requiredCheck =\n\t\trequired && (iValue.start === null || iValue.end === null);\n\tconst isApplyDisabled = (requiredCheck ||\n\t\t!hasAcceptableValues ||\n\t\thasError ||\n\t\t!outOfRange) as boolean;\n\n\tconst triggerProps = {\n\t\tonClick: toggleOpen,\n\t};\n\n\t// custom cell to override the today highlight to match timezone today\n\tconst customCell = (props: CalendarCellProps) => {\n\t\tif (format(props.value) === format(getNewToday)) {\n\t\t\treturn <CalendarCell {...props} isToday />;\n\t\t}\n\t\treturn <CalendarCell {...props} isToday={false} />;\n\t};\n\treturn (\n\t\t<Popover\n\t\t\topen={!disabled && openCal}\n\t\t\tonClickOutside={handleOnClickOutside}\n\t\t\ttrigger={\n\t\t\t\tinputEl?.(\n\t\t\t\t\tinitialValue,\n\t\t\t\t\ttriggerProps,\n\t\t\t\t\topenCal,\n\t\t\t\t\tinternalError\n\t\t\t\t) ?? (\n\t\t\t\t\t<DateRangeTrigger\n\t\t\t\t\t\topen={openCal}\n\t\t\t\t\t\tplaceholder={inputPlaceholder}\n\t\t\t\t\t\tonClick={toggleOpen}\n\t\t\t\t\t\tonKeyDown={triggerKeyPress}\n\t\t\t\t\t\tonChange={clearDateRange}\n\t\t\t\t\t\tvalue={{\n\t\t\t\t\t\t\tstart: initialValue.start?.isValid\n\t\t\t\t\t\t\t\t? new Date(format(initialValue.start))\n\t\t\t\t\t\t\t\t: null,\n\t\t\t\t\t\t\tend: initialValue.end?.isValid\n\t\t\t\t\t\t\t\t? new Date(format(initialValue.end))\n\t\t\t\t\t\t\t\t: null,\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tdisplayValue={inputDisplayValue}\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\terror={internalError}\n\t\t\t\t\t\tsize={inputSize}\n\t\t\t\t\t\tref={triggerRef}\n\t\t\t\t\t\trequired={required}\n\t\t\t\t\t\tdata-anvil-component=\"DateRangePicker\"\n\t\t\t\t\t\t{...rest}\n\t\t\t\t\t/>\n\t\t\t\t)\n\t\t\t}\n\t\t\tdirection={direction}\n\t\t\tpadding={null}\n\t\t\twidth=\"auto\"\n\t\t\tclassName=\"DateRangePicker__popover\"\n\t\t\tportal={portal}\n\t\t\tfocusTrapOptions={focusTrapOptions}\n\t\t\tautoFlipHorizontally={autoFlipHorizontally}\n\t\t\tautoFlipVertically={autoFlipVertically}\n\t\t\tportalDataAttributes={portalDataAttributes}\n\t\t>\n\t\t\t<KeyPressListener\n\t\t\t\tcode={Keys.Esc}\n\t\t\t\thandler={close}\n\t\t\t\tdisabled={disableCloseOnClickOutside || !openCal}\n\t\t\t/>\n\t\t\t<div className=\"d-f flex-row\">\n\t\t\t\t{options && options.length > 0 && (\n\t\t\t\t\t<DateRangeOptionList\n\t\t\t\t\t\toptions={options}\n\t\t\t\t\t\tmin={minMaxRange?.min?.toJSDate()}\n\t\t\t\t\t\tmax={minMaxRange?.max?.toJSDate()}\n\t\t\t\t\t\tonChange={handleOptionListOnChange}\n\t\t\t\t\t\tenableTimezoneContext={enableTimezoneContext}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t\t<div className=\"DateRangePicker\">\n\t\t\t\t\t<div className=\"DateRangePicker__header\">\n\t\t\t\t\t\t<div className=\"DateRangePicker__inputGroup\">\n\t\t\t\t\t\t\t<DateRangeInput\n\t\t\t\t\t\t\t\tplaceholder={startDateInputplaceholder}\n\t\t\t\t\t\t\t\tvalue={iValue?.start}\n\t\t\t\t\t\t\t\terror={outOfRange?.start}\n\t\t\t\t\t\t\t\tdateFormat={dateFormat}\n\t\t\t\t\t\t\t\tonBlur={(e, data) => {\n\t\t\t\t\t\t\t\t\thandleDateOnBlur(e, data, 'start');\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tonChange={(e, data) => {\n\t\t\t\t\t\t\t\t\thandleDateOnChange(e, data, 'start');\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\tname=\"arrow_forward\"\n\t\t\t\t\t\t\t\tclassName=\"DateRangePicker__fromTo\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<DateRangeInput\n\t\t\t\t\t\t\t\tplaceholder={endDateInputplaceholder}\n\t\t\t\t\t\t\t\tvalue={iValue?.end}\n\t\t\t\t\t\t\t\terror={outOfRange?.end}\n\t\t\t\t\t\t\t\tdateFormat={dateFormat}\n\t\t\t\t\t\t\t\tonBlur={(e, data) => {\n\t\t\t\t\t\t\t\t\thandleDateOnBlur(e, data, 'end');\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tonChange={(e, data) => {\n\t\t\t\t\t\t\t\t\thandleDateOnChange(e, data, 'end');\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div\n\t\t\t\t\t\tonKeyPress={calendarKeyPress}\n\t\t\t\t\t\tclassName=\"DatePicker__calendar\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<MultiViewCalendar\n\t\t\t\t\t\t\tmode=\"range\"\n\t\t\t\t\t\t\tviews={views}\n\t\t\t\t\t\t\tvalue={{\n\t\t\t\t\t\t\t\tstart: iValue.start\n\t\t\t\t\t\t\t\t\t? new Date(format(iValue.start))\n\t\t\t\t\t\t\t\t\t: null,\n\t\t\t\t\t\t\t\tend: iValue.end\n\t\t\t\t\t\t\t\t\t? new Date(format(iValue.end))\n\t\t\t\t\t\t\t\t\t: null,\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tonChange={handleCalendarOnChange}\n\t\t\t\t\t\t\tfocusedDate={\n\t\t\t\t\t\t\t\tfocusedDate\n\t\t\t\t\t\t\t\t\t? focusedDate\n\t\t\t\t\t\t\t\t\t: !(value?.start && value?.end)\n\t\t\t\t\t\t\t\t\t? new Date()\n\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdefaultValue={defaultValue}\n\t\t\t\t\t\t\tmin={minMaxRange?.min?.toJSDate()}\n\t\t\t\t\t\t\tmax={minMaxRange?.max?.toJSDate()}\n\t\t\t\t\t\t\tcell={customCell}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<Stack\n\t\t\t\tclassName=\"DateRangePicker__actions\"\n\t\t\t\tdirection=\"row-reverse\"\n\t\t\t\tjustifyContent=\"space-between\"\n\t\t\t>\n\t\t\t\t<Stack direction=\"row-reverse\" spacing={2}>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tdisabled={isApplyDisabled}\n\t\t\t\t\t\tonClick={handleOnConfirm}\n\t\t\t\t\t\tsmall\n\t\t\t\t\t\tcolor=\"primary\"\n\t\t\t\t\t>\n\t\t\t\t\t\tApply\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Button small fill=\"subtle\" onClick={close}>\n\t\t\t\t\t\tCancel\n\t\t\t\t\t</Button>\n\t\t\t\t</Stack>\n\t\t\t\t<Link\n\t\t\t\t\tprimary\n\t\t\t\t\tonClick={clearInner}\n\t\t\t\t\tdisabled={!(iValue?.start || iValue?.end)}\n\t\t\t\t\tclassName=\"fs-2\"\n\t\t\t\t>\n\t\t\t\t\tClear\n\t\t\t\t</Link>\n\t\t\t</Stack>\n\t\t</Popover>\n\t);\n};\n\nconst format = (date: any, format = 'LL/dd/yyyy') => {\n\tif (date instanceof Date) return DateTime.fromJSDate(date).toFormat(format);\n\tif (date instanceof DateTime) return date.toFormat(format);\n\treturn date;\n};\n"]}
@@ -12,6 +12,7 @@ export interface DateRangeOptionProps {
12
12
  }
13
13
  export interface DateRangeOptionListProps {
14
14
  options: OptionListProps['options'];
15
+ enableTimezoneContext?: boolean;
15
16
  min: Date;
16
17
  max: Date;
17
18
  onChange: (value: DateRangePickerProps['value']) => void;
@@ -1,14 +1,36 @@
1
- import React from 'react';
1
+ import React, { useContext } from 'react';
2
+ import { DateTime } from 'luxon';
2
3
  import { OptionList } from '../../OptionList';
3
4
  import { checkScope } from '../utils';
4
- import { toDateFormat } from '../../../utilities/dateFormat';
5
5
  import { Tooltip } from '../../Tooltip';
6
6
  import { BodyText } from '../../BodyText';
7
- export const DateRangeOptionList = ({ options, min, max, onChange, }) => {
7
+ import { TimezoneContext, toDateFormat } from '../../../utilities';
8
+ export const DateRangeOptionList = ({ options, min, max, onChange, enableTimezoneContext, }) => {
9
+ const timezone = useContext(TimezoneContext);
8
10
  const normalizeValueInOptions = options.map((option) => {
11
+ let start;
12
+ let end;
13
+ if (enableTimezoneContext) {
14
+ start = option.value.start
15
+ ? DateTime.fromJSDate(option.value.start)
16
+ .setZone(timezone)
17
+ .startOf('day')
18
+ .toJSDate()
19
+ : null;
20
+ end = option.value.end
21
+ ? DateTime.fromJSDate(option.value.end)
22
+ .setZone(timezone)
23
+ .endOf('day')
24
+ .toJSDate()
25
+ : null;
26
+ }
27
+ else {
28
+ start = toDateFormat.startOfDay(option.value.start);
29
+ end = toDateFormat.endOfDay(option.value.end);
30
+ }
9
31
  return Object.assign(Object.assign({}, option), { value: {
10
- start: toDateFormat.startOfDay(option.value.start),
11
- end: toDateFormat.endOfDay(option.value.end),
32
+ start,
33
+ end,
12
34
  } });
13
35
  });
14
36
  const checkOptions = normalizeValueInOptions.map((option) => {
@@ -1 +1 @@
1
- {"version":3,"file":"DateRangeOptionList.js","sourceRoot":"","sources":["../../../../src/components/DateRangePicker/components/DateRangeOptionList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAa,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,UAAU,EAAmB,MAAM,kBAAkB,CAAC;AAE/D,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAmB1C,MAAM,CAAC,MAAM,mBAAmB,GAAiC,CAAC,EACjE,OAAO,EACP,GAAG,EACH,GAAG,EACH,QAAQ,GACR,EAAE,EAAE;IACJ,MAAM,uBAAuB,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QACtD,uCACI,MAAM,KACT,KAAK,EAAE;gBACN,KAAK,EAAE,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;gBAClD,GAAG,EAAE,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;aAC5C,IACA;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,uBAAuB,CAAC,GAAG,CAC/C,CAAC,MAA4B,EAAE,EAAE;QAChC,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAExD,IAAI,YAAY,CAAC,KAAK,IAAI,YAAY,CAAC,GAAG,EAAE;YAC3C,uCACI,MAAM,KACT,QAAQ,EAAE,IAAI,EACd,OAAO,EAAE,CACR,oBAAC,OAAO,IAAC,SAAS,EAAC,GAAG,EAAC,MAAM,QAAC,IAAI,EAAC,mBAAmB;oBACrD,oBAAC,QAAQ,IAAC,IAAI,EAAC,OAAO,IAAE,MAAM,CAAC,IAAI,CAAY,CACtC,CACV,IACA;SACF;QAED,OAAO,MAAM,CAAC;IACf,CAAC,CACD,CAAC;IAEF,MAAM,cAAc,GAAG,CAAC,IAAmC,EAAE,EAAE;QAC9D,QAAQ,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC,CAAC;IAEF,OAAO,CACN,oBAAC,KAAK,CAAC,QAAQ,QACb,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,CAC3B,6BAAK,SAAS,EAAC,0BAA0B;QACxC,oBAAC,UAAU,IACV,OAAO,EAAE,YAAY,EACrB,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,GACvC,CACG,CACN,CACe,CACjB,CAAC;AACH,CAAC,CAAC","sourcesContent":["import React, { FC } from 'react';\nimport { OptionList, OptionListProps } from '../../OptionList';\nimport { DateRangePickerProps } from '../DateRangePicker';\nimport { checkScope } from '../utils';\nimport { toDateFormat } from '../../../utilities/dateFormat';\nimport { Tooltip } from '../../Tooltip';\nimport { BodyText } from '../../BodyText';\n\nexport interface DateRangeOptionProps {\n\tvalue: {\n\t\tstart: Date;\n\t\tend: Date;\n\t};\n\tcontent: React.ReactElement;\n\ttext: string;\n\tdisabled?: boolean;\n}\n\nexport interface DateRangeOptionListProps {\n\toptions: OptionListProps['options'];\n\tmin: Date;\n\tmax: Date;\n\tonChange: (value: DateRangePickerProps['value']) => void;\n}\n\nexport const DateRangeOptionList: FC<DateRangeOptionListProps> = ({\n\toptions,\n\tmin,\n\tmax,\n\tonChange,\n}) => {\n\tconst normalizeValueInOptions = options.map((option) => {\n\t\treturn {\n\t\t\t...option,\n\t\t\tvalue: {\n\t\t\t\tstart: toDateFormat.startOfDay(option.value.start),\n\t\t\t\tend: toDateFormat.endOfDay(option.value.end),\n\t\t\t},\n\t\t};\n\t});\n\n\tconst checkOptions = normalizeValueInOptions.map(\n\t\t(option: DateRangeOptionProps) => {\n\t\t\tconst isOutOfScope = checkScope(option.value, min, max);\n\n\t\t\tif (isOutOfScope.start || isOutOfScope.end) {\n\t\t\t\treturn {\n\t\t\t\t\t...option,\n\t\t\t\t\tdisabled: true,\n\t\t\t\t\tcontent: (\n\t\t\t\t\t\t<Tooltip direction=\"r\" portal text=\"Out of Date Range\">\n\t\t\t\t\t\t\t<BodyText size=\"small\">{option.text}</BodyText>\n\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t),\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn option;\n\t\t}\n\t);\n\n\tconst handleOnChange = (data: DateRangePickerProps['value']) => {\n\t\tonChange(data);\n\t};\n\n\treturn (\n\t\t<React.Fragment>\n\t\t\t{checkOptions.length > 0 && (\n\t\t\t\t<div className=\"DateRangePicker__options\">\n\t\t\t\t\t<OptionList\n\t\t\t\t\t\toptions={checkOptions}\n\t\t\t\t\t\tonChange={(data) => handleOnChange(data)}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</React.Fragment>\n\t);\n};\n"]}
1
+ {"version":3,"file":"DateRangeOptionList.js","sourceRoot":"","sources":["../../../../src/components/DateRangePicker/components/DateRangeOptionList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAM,UAAU,EAAE,MAAM,OAAO,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,UAAU,EAAmB,MAAM,kBAAkB,CAAC;AAE/D,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAoBnE,MAAM,CAAC,MAAM,mBAAmB,GAAiC,CAAC,EACjE,OAAO,EACP,GAAG,EACH,GAAG,EACH,QAAQ,EACR,qBAAqB,GACrB,EAAE,EAAE;IACJ,MAAM,QAAQ,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC;IAE7C,MAAM,uBAAuB,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QACtD,IAAI,KAAkB,CAAC;QACvB,IAAI,GAAgB,CAAC;QAErB,IAAI,qBAAqB,EAAE;YAC1B,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK;gBACzB,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;qBACtC,OAAO,CAAC,QAAQ,CAAC;qBACjB,OAAO,CAAC,KAAK,CAAC;qBACd,QAAQ,EAAE;gBACb,CAAC,CAAC,IAAI,CAAC;YAER,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG;gBACrB,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;qBACpC,OAAO,CAAC,QAAQ,CAAC;qBACjB,KAAK,CAAC,KAAK,CAAC;qBACZ,QAAQ,EAAE;gBACb,CAAC,CAAC,IAAI,CAAC;SACR;aAAM;YACN,KAAK,GAAG,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACpD,GAAG,GAAG,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;SAC9C;QAED,uCACI,MAAM,KACT,KAAK,EAAE;gBACN,KAAK;gBACL,GAAG;aACH,IACA;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,uBAAuB,CAAC,GAAG,CAC/C,CAAC,MAA4B,EAAE,EAAE;QAChC,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAExD,IAAI,YAAY,CAAC,KAAK,IAAI,YAAY,CAAC,GAAG,EAAE;YAC3C,uCACI,MAAM,KACT,QAAQ,EAAE,IAAI,EACd,OAAO,EAAE,CACR,oBAAC,OAAO,IAAC,SAAS,EAAC,GAAG,EAAC,MAAM,QAAC,IAAI,EAAC,mBAAmB;oBACrD,oBAAC,QAAQ,IAAC,IAAI,EAAC,OAAO,IAAE,MAAM,CAAC,IAAI,CAAY,CACtC,CACV,IACA;SACF;QAED,OAAO,MAAM,CAAC;IACf,CAAC,CACD,CAAC;IAEF,MAAM,cAAc,GAAG,CAAC,IAAmC,EAAE,EAAE;QAC9D,QAAQ,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC,CAAC;IAEF,OAAO,CACN,oBAAC,KAAK,CAAC,QAAQ,QACb,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,CAC3B,6BAAK,SAAS,EAAC,0BAA0B;QACxC,oBAAC,UAAU,IACV,OAAO,EAAE,YAAY,EACrB,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,GACvC,CACG,CACN,CACe,CACjB,CAAC;AACH,CAAC,CAAC","sourcesContent":["import React, { FC, useContext } from 'react';\nimport { DateTime } from 'luxon';\nimport { OptionList, OptionListProps } from '../../OptionList';\nimport { DateRangePickerProps } from '../DateRangePicker';\nimport { checkScope } from '../utils';\nimport { Tooltip } from '../../Tooltip';\nimport { BodyText } from '../../BodyText';\nimport { TimezoneContext, toDateFormat } from '../../../utilities';\n\nexport interface DateRangeOptionProps {\n\tvalue: {\n\t\tstart: Date;\n\t\tend: Date;\n\t};\n\tcontent: React.ReactElement;\n\ttext: string;\n\tdisabled?: boolean;\n}\n\nexport interface DateRangeOptionListProps {\n\toptions: OptionListProps['options'];\n\tenableTimezoneContext?: boolean;\n\tmin: Date;\n\tmax: Date;\n\tonChange: (value: DateRangePickerProps['value']) => void;\n}\n\nexport const DateRangeOptionList: FC<DateRangeOptionListProps> = ({\n\toptions,\n\tmin,\n\tmax,\n\tonChange,\n\tenableTimezoneContext,\n}) => {\n\tconst timezone = useContext(TimezoneContext);\n\n\tconst normalizeValueInOptions = options.map((option) => {\n\t\tlet start: Date | null;\n\t\tlet end: Date | null;\n\n\t\tif (enableTimezoneContext) {\n\t\t\tstart = option.value.start\n\t\t\t\t? DateTime.fromJSDate(option.value.start)\n\t\t\t\t\t\t.setZone(timezone)\n\t\t\t\t\t\t.startOf('day')\n\t\t\t\t\t\t.toJSDate()\n\t\t\t\t: null;\n\n\t\t\tend = option.value.end\n\t\t\t\t? DateTime.fromJSDate(option.value.end)\n\t\t\t\t\t\t.setZone(timezone)\n\t\t\t\t\t\t.endOf('day')\n\t\t\t\t\t\t.toJSDate()\n\t\t\t\t: null;\n\t\t} else {\n\t\t\tstart = toDateFormat.startOfDay(option.value.start);\n\t\t\tend = toDateFormat.endOfDay(option.value.end);\n\t\t}\n\n\t\treturn {\n\t\t\t...option,\n\t\t\tvalue: {\n\t\t\t\tstart,\n\t\t\t\tend,\n\t\t\t},\n\t\t};\n\t});\n\n\tconst checkOptions = normalizeValueInOptions.map(\n\t\t(option: DateRangeOptionProps) => {\n\t\t\tconst isOutOfScope = checkScope(option.value, min, max);\n\n\t\t\tif (isOutOfScope.start || isOutOfScope.end) {\n\t\t\t\treturn {\n\t\t\t\t\t...option,\n\t\t\t\t\tdisabled: true,\n\t\t\t\t\tcontent: (\n\t\t\t\t\t\t<Tooltip direction=\"r\" portal text=\"Out of Date Range\">\n\t\t\t\t\t\t\t<BodyText size=\"small\">{option.text}</BodyText>\n\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t),\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn option;\n\t\t}\n\t);\n\n\tconst handleOnChange = (data: DateRangePickerProps['value']) => {\n\t\tonChange(data);\n\t};\n\n\treturn (\n\t\t<React.Fragment>\n\t\t\t{checkOptions.length > 0 && (\n\t\t\t\t<div className=\"DateRangePicker__options\">\n\t\t\t\t\t<OptionList\n\t\t\t\t\t\toptions={checkOptions}\n\t\t\t\t\t\tonChange={(data) => handleOnChange(data)}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</React.Fragment>\n\t);\n};\n"]}
@@ -1,4 +1,4 @@
1
- import { FC } from 'react';
1
+ import { FC, MouseEvent } from 'react';
2
2
  import { IconPropsStrict } from '../Icon';
3
3
  export interface FilterButtonPropsStrict {
4
4
  /** Additional classes */
@@ -12,7 +12,7 @@ export interface FilterButtonPropsStrict {
12
12
  /** Displays the value of the Filter Button */
13
13
  value?: boolean | number | string;
14
14
  /** Calls when the Filter Button is clicked */
15
- onClick?: () => void;
15
+ onClick?: (e?: MouseEvent<HTMLButtonElement>) => void;
16
16
  }
17
17
  export interface FilterButtonProps extends FilterButtonPropsStrict {
18
18
  [propName: string]: any;
@@ -26,13 +26,10 @@ export const FilterButton = React.forwardRef((_a, ref) => {
26
26
  'FilterButton--active': IValue,
27
27
  'FilterButton--focus-visible': isFocusVisible,
28
28
  });
29
- const onClickHandler = () => {
30
- onClick === null || onClick === void 0 ? void 0 : onClick();
31
- };
32
29
  React.useEffect(() => {
33
30
  setIValue(value);
34
31
  }, [value]);
35
- return (React.createElement("button", Object.assign({ className: filterButtonClassName, onClick: () => onClickHandler(), ref: itemRef, "aria-expanded": expandIcon, "aria-label": `Filter ${label}`, "aria-pressed": !!IValue, "data-anvil-component": "FilterButton" }, rest),
32
+ return (React.createElement("button", Object.assign({ className: filterButtonClassName, onClick: onClick, ref: itemRef, "aria-expanded": expandIcon, "aria-label": `Filter ${label}`, "aria-pressed": !!IValue, "data-anvil-component": "FilterButton" }, rest),
36
33
  React.createElement(Stack, { alignItems: "center" },
37
34
  icon && (React.createElement(Icon, { name: icon, size: "16px", className: "FilterButton__Icon" })),
38
35
  !icon && label && (React.createElement(BodyText, { el: "span", size: "small", className: "FilterButton__Label" }, label)),
@@ -1 +1 @@
1
- {"version":3,"file":"FilterButton.js","sourceRoot":"","sources":["../../../src/components/FilterButton/FilterButton.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { FC } from 'react';\nimport classnames from 'classnames';\nimport { useFocusVisible } from '../../hooks/useFocusVisible';\nimport { Stack } from '../Stack';\nimport { Icon, IconPropsStrict } from '../Icon';\nimport { BodyText } from '../BodyText';\nimport { Tag } from '../Tag';\n\nexport interface FilterButtonPropsStrict {\n\t/** Additional classes */\n\tclassName?: string;\n\n\t/** React element to be rendered as an icon */\n\ticon?: IconPropsStrict['name'];\n\n\t/** To show expand icon */\n\texpandIcon?: boolean | null;\n\n\t/** Displays the label of the Filter Button */\n\tlabel: string;\n\n\t/** Displays the value of the Filter Button */\n\tvalue?: boolean | number | string;\n\n\t/** Calls when the Filter Button is clicked */\n\tonClick?: () => void;\n}\n\nexport interface FilterButtonProps extends FilterButtonPropsStrict {\n\t[propName: string]: any;\n}\n\nexport const FilterButton: FC<FilterButtonProps> = React.forwardRef(\n\t(\n\t\t{ className, icon, onClick, expandIcon = null, value, label, ...rest },\n\t\tref: React.RefObject<HTMLButtonElement>\n\t) => {\n\t\tconst [IValue, setIValue] = React.useState(value);\n\n\t\tconst newRef = React.useRef(null);\n\t\tconst itemRef = ref ? ref : newRef;\n\n\t\tconst { isFocusVisible } = useFocusVisible(itemRef);\n\n\t\tconst filterButtonClassName = classnames('FilterButton', className, {\n\t\t\t'FilterButton--active': IValue,\n\t\t\t'FilterButton--focus-visible': isFocusVisible,\n\t\t});\n\n\t\tconst onClickHandler = () => {\n\t\t\tonClick?.();\n\t\t};\n\n\t\tReact.useEffect(() => {\n\t\t\tsetIValue(value);\n\t\t}, [value]);\n\n\t\treturn (\n\t\t\t<button\n\t\t\t\tclassName={filterButtonClassName}\n\t\t\t\tonClick={() => onClickHandler()}\n\t\t\t\tref={itemRef}\n\t\t\t\taria-expanded={expandIcon}\n\t\t\t\taria-label={`Filter ${label}`}\n\t\t\t\taria-pressed={!!IValue}\n\t\t\t\tdata-anvil-component=\"FilterButton\"\n\t\t\t\t{...rest}\n\t\t\t>\n\t\t\t\t<Stack alignItems=\"center\">\n\t\t\t\t\t{icon && (\n\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\tname={icon}\n\t\t\t\t\t\t\tsize=\"16px\"\n\t\t\t\t\t\t\tclassName=\"FilterButton__Icon\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t\t{!icon && label && (\n\t\t\t\t\t\t<BodyText\n\t\t\t\t\t\t\tel=\"span\"\n\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\tclassName=\"FilterButton__Label\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{label}\n\t\t\t\t\t\t</BodyText>\n\t\t\t\t\t)}\n\t\t\t\t\t{typeof IValue === 'string' ? (\n\t\t\t\t\t\t<BodyText el=\"span\" size=\"small\">\n\t\t\t\t\t\t\t{`: `}\n\t\t\t\t\t\t\t<BodyText el=\"span\" size=\"small\" bold>\n\t\t\t\t\t\t\t\t{IValue}\n\t\t\t\t\t\t\t</BodyText>\n\t\t\t\t\t\t</BodyText>\n\t\t\t\t\t) : typeof IValue === 'number' ? (\n\t\t\t\t\t\t<Tag\n\t\t\t\t\t\t\tcolor=\"info\"\n\t\t\t\t\t\t\tbadge\n\t\t\t\t\t\t\tcompact\n\t\t\t\t\t\t\tclassName=\"FilterButton__Tag\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{IValue}\n\t\t\t\t\t\t</Tag>\n\t\t\t\t\t) : null}\n\t\t\t\t\t{expandIcon !== null && (\n\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\tname={\n\t\t\t\t\t\t\t\texpandIcon\n\t\t\t\t\t\t\t\t\t? 'keyboard_arrow_up'\n\t\t\t\t\t\t\t\t\t: 'keyboard_arrow_down'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tclassName=\"FilterButton__ExpandIcon\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t</Stack>\n\t\t\t</button>\n\t\t);\n\t}\n);\n"]}
1
+ {"version":3,"file":"FilterButton.js","sourceRoot":"","sources":["../../../src/components/FilterButton/FilterButton.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,KAAyB,MAAM,OAAO,CAAC;AAC9C,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,IAAI,EAAmB,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AA0B7B,MAAM,CAAC,MAAM,YAAY,GAA0B,KAAK,CAAC,UAAU,CAClE,CACC,EAAsE,EACtE,GAAuC,EACtC,EAAE;QAFH,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,OAAW,EAAN,IAAI,cAApE,gEAAsE,CAAF;IAGpE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAElD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;IAEnC,MAAM,EAAE,cAAc,EAAE,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAEpD,MAAM,qBAAqB,GAAG,UAAU,CAAC,cAAc,EAAE,SAAS,EAAE;QACnE,sBAAsB,EAAE,MAAM;QAC9B,6BAA6B,EAAE,cAAc;KAC7C,CAAC,CAAC;IAEH,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACpB,SAAS,CAAC,KAAK,CAAC,CAAC;IAClB,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,OAAO,CACN,8CACC,SAAS,EAAE,qBAAqB,EAChC,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,OAAO,mBACG,UAAU,gBACb,UAAU,KAAK,EAAE,kBACf,CAAC,CAAC,MAAM,0BACD,cAAc,IAC/B,IAAI;QAER,oBAAC,KAAK,IAAC,UAAU,EAAC,QAAQ;YACxB,IAAI,IAAI,CACR,oBAAC,IAAI,IACJ,IAAI,EAAE,IAAI,EACV,IAAI,EAAC,MAAM,EACX,SAAS,EAAC,oBAAoB,GAC7B,CACF;YACA,CAAC,IAAI,IAAI,KAAK,IAAI,CAClB,oBAAC,QAAQ,IACR,EAAE,EAAC,MAAM,EACT,IAAI,EAAC,OAAO,EACZ,SAAS,EAAC,qBAAqB,IAE9B,KAAK,CACI,CACX;YACA,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAC7B,oBAAC,QAAQ,IAAC,EAAE,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO;gBAC9B,IAAI;gBACL,oBAAC,QAAQ,IAAC,EAAE,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,IAAI,UACnC,MAAM,CACG,CACD,CACX,CAAC,CAAC,CAAC,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAChC,oBAAC,GAAG,IACH,KAAK,EAAC,MAAM,EACZ,KAAK,QACL,OAAO,QACP,SAAS,EAAC,mBAAmB,IAE5B,MAAM,CACF,CACN,CAAC,CAAC,CAAC,IAAI;YACP,UAAU,KAAK,IAAI,IAAI,CACvB,oBAAC,IAAI,IACJ,IAAI,EACH,UAAU;oBACT,CAAC,CAAC,mBAAmB;oBACrB,CAAC,CAAC,qBAAqB,EAEzB,SAAS,EAAC,0BAA0B,GACnC,CACF,CACM,CACA,CACT,CAAC;AACH,CAAC,CACD,CAAC","sourcesContent":["import React, { FC, MouseEvent } from 'react';\nimport classnames from 'classnames';\nimport { useFocusVisible } from '../../hooks/useFocusVisible';\nimport { Stack } from '../Stack';\nimport { Icon, IconPropsStrict } from '../Icon';\nimport { BodyText } from '../BodyText';\nimport { Tag } from '../Tag';\n\nexport interface FilterButtonPropsStrict {\n\t/** Additional classes */\n\tclassName?: string;\n\n\t/** React element to be rendered as an icon */\n\ticon?: IconPropsStrict['name'];\n\n\t/** To show expand icon */\n\texpandIcon?: boolean | null;\n\n\t/** Displays the label of the Filter Button */\n\tlabel: string;\n\n\t/** Displays the value of the Filter Button */\n\tvalue?: boolean | number | string;\n\n\t/** Calls when the Filter Button is clicked */\n\tonClick?: (e?: MouseEvent<HTMLButtonElement>) => void;\n}\n\nexport interface FilterButtonProps extends FilterButtonPropsStrict {\n\t[propName: string]: any;\n}\n\nexport const FilterButton: FC<FilterButtonProps> = React.forwardRef(\n\t(\n\t\t{ className, icon, onClick, expandIcon = null, value, label, ...rest },\n\t\tref: React.RefObject<HTMLButtonElement>\n\t) => {\n\t\tconst [IValue, setIValue] = React.useState(value);\n\n\t\tconst newRef = React.useRef(null);\n\t\tconst itemRef = ref ? ref : newRef;\n\n\t\tconst { isFocusVisible } = useFocusVisible(itemRef);\n\n\t\tconst filterButtonClassName = classnames('FilterButton', className, {\n\t\t\t'FilterButton--active': IValue,\n\t\t\t'FilterButton--focus-visible': isFocusVisible,\n\t\t});\n\n\t\tReact.useEffect(() => {\n\t\t\tsetIValue(value);\n\t\t}, [value]);\n\n\t\treturn (\n\t\t\t<button\n\t\t\t\tclassName={filterButtonClassName}\n\t\t\t\tonClick={onClick}\n\t\t\t\tref={itemRef}\n\t\t\t\taria-expanded={expandIcon}\n\t\t\t\taria-label={`Filter ${label}`}\n\t\t\t\taria-pressed={!!IValue}\n\t\t\t\tdata-anvil-component=\"FilterButton\"\n\t\t\t\t{...rest}\n\t\t\t>\n\t\t\t\t<Stack alignItems=\"center\">\n\t\t\t\t\t{icon && (\n\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\tname={icon}\n\t\t\t\t\t\t\tsize=\"16px\"\n\t\t\t\t\t\t\tclassName=\"FilterButton__Icon\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t\t{!icon && label && (\n\t\t\t\t\t\t<BodyText\n\t\t\t\t\t\t\tel=\"span\"\n\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\tclassName=\"FilterButton__Label\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{label}\n\t\t\t\t\t\t</BodyText>\n\t\t\t\t\t)}\n\t\t\t\t\t{typeof IValue === 'string' ? (\n\t\t\t\t\t\t<BodyText el=\"span\" size=\"small\">\n\t\t\t\t\t\t\t{`: `}\n\t\t\t\t\t\t\t<BodyText el=\"span\" size=\"small\" bold>\n\t\t\t\t\t\t\t\t{IValue}\n\t\t\t\t\t\t\t</BodyText>\n\t\t\t\t\t\t</BodyText>\n\t\t\t\t\t) : typeof IValue === 'number' ? (\n\t\t\t\t\t\t<Tag\n\t\t\t\t\t\t\tcolor=\"info\"\n\t\t\t\t\t\t\tbadge\n\t\t\t\t\t\t\tcompact\n\t\t\t\t\t\t\tclassName=\"FilterButton__Tag\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{IValue}\n\t\t\t\t\t\t</Tag>\n\t\t\t\t\t) : null}\n\t\t\t\t\t{expandIcon !== null && (\n\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\tname={\n\t\t\t\t\t\t\t\texpandIcon\n\t\t\t\t\t\t\t\t\t? 'keyboard_arrow_up'\n\t\t\t\t\t\t\t\t\t: 'keyboard_arrow_down'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tclassName=\"FilterButton__ExpandIcon\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t</Stack>\n\t\t\t</button>\n\t\t);\n\t}\n);\n"]}
@@ -1,5 +1,5 @@
1
1
  import { TimePickerOptionProps } from '../components/TimePickerOptionList';
2
2
  import { TimePickerPropsStrict } from '../';
3
3
  export declare const getClosestOption: (options: TimePickerOptionProps[], userInput: string, defaultTimeSignifier: TimePickerPropsStrict['defaultTimeSignifier'], autoRounding: TimePickerPropsStrict['autoRounding'], min: TimePickerPropsStrict['min'], max: TimePickerPropsStrict['max'], format: TimePickerPropsStrict['format']) => TimePickerOptionProps;
4
- export declare const parseUserInput: (userInput: string) => null | string[];
4
+ export declare const parseUserInput: (userInput: string, twentyFourHour?: boolean) => null | string[];
5
5
  export declare const getClosestIndexes: (options: TimePickerOptionProps[], value: TimePickerOptionProps['value']) => null | number[];
@@ -7,7 +7,7 @@ export const getClosestOption = (options, userInput, defaultTimeSignifier, autoR
7
7
  if (spaceless(userInput) === '')
8
8
  return null;
9
9
  // Expected value based on user input
10
- const value = parseUserInput(userInput);
10
+ const value = parseUserInput(userInput, format === 'hh:mm');
11
11
  if (!value)
12
12
  return null;
13
13
  const [hours, minutes, ampm] = value;
@@ -46,7 +46,7 @@ export const getClosestOption = (options, userInput, defaultTimeSignifier, autoR
46
46
  }
47
47
  return null;
48
48
  };
49
- export const parseUserInput = (userInput) => {
49
+ export const parseUserInput = (userInput, twentyFourHour = false) => {
50
50
  const input = spaceless(userInput).toUpperCase();
51
51
  let parsed;
52
52
  switch (inputCaseName(input)) {
@@ -60,7 +60,7 @@ export const parseUserInput = (userInput) => {
60
60
  parsed = parseDigits(input);
61
61
  break;
62
62
  case 'colon':
63
- parsed = parseColon(input);
63
+ parsed = parseColon(input, twentyFourHour);
64
64
  break;
65
65
  case 'phrase': // No colon, has letters
66
66
  default:
@@ -1 +1 @@
1
- {"version":3,"file":"getClosestOption.js","sourceRoot":"","sources":["../../../../src/components/TimePicker/utils/getClosestOption.ts"],"names":[],"mappings":"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","sourcesContent":["import { TimePickerOptionProps } from '../components/TimePickerOptionList';\nimport { TimePickerPropsStrict } from '../';\n\nimport {\n\tinputCaseName,\n\tspaceless,\n\tparseDigits,\n\tparseColon,\n\tparsePhrase,\n} from './utils';\n\nimport { checkMinMax } from './checkMinMax';\nimport { stringToDate } from './stringToDate';\nimport { toTimeFormat } from './toTimeFormat';\n\n// Getting most expected option based on user's input\nexport const getClosestOption = (\n\toptions: TimePickerOptionProps[],\n\tuserInput: string,\n\tdefaultTimeSignifier: TimePickerPropsStrict['defaultTimeSignifier'],\n\tautoRounding: TimePickerPropsStrict['autoRounding'],\n\tmin: TimePickerPropsStrict['min'],\n\tmax: TimePickerPropsStrict['max'],\n\tformat: TimePickerPropsStrict['format']\n): TimePickerOptionProps => {\n\tif (spaceless(userInput) === '') return null;\n\n\t// Expected value based on user input\n\tconst value = parseUserInput(userInput);\n\n\tif (!value) return null;\n\n\tconst [hours, minutes, ampm] = value;\n\tconst getDate = (signifier: string) =>\n\t\tstringToDate(`${hours}:${minutes} ${signifier}`);\n\tconst getText = (date: Date) => toTimeFormat(date, format);\n\tconst signifier = ampm || defaultTimeSignifier;\n\n\t// Inverte defaultTimeSignifier\n\tconst invertedSignifier = defaultTimeSignifier === 'AM' ? 'PM' : 'AM';\n\n\tif (!autoRounding) {\n\t\t// Ignore dropdown options, which are based on `step` prop\n\t\tlet v = getDate(signifier);\n\t\tif (checkMinMax(min, max, v)) {\n\t\t\treturn { text: getText(v), value: v };\n\t\t}\n\n\t\tif (!ampm) {\n\t\t\t// Case if ampm is unknown and defaultTimeSignifier do not fit into checkMinMax range\n\t\t\tv = getDate(invertedSignifier);\n\t\t\tif (checkMinMax(min, max, v)) {\n\t\t\t\treturn { text: getText(v), value: v };\n\t\t\t}\n\t\t}\n\n\t\t// Reject input, out of min-max range\n\t\treturn null;\n\t}\n\n\tif (autoRounding) {\n\t\t// Look up for closest value in options\n\t\tlet closestPair = getClosestIndexes(options, getDate(signifier));\n\t\tif (closestPair) return options[closestPair[0]];\n\n\t\tif (!ampm) {\n\t\t\t// Case if ampm is unknown\n\t\t\tclosestPair = getClosestIndexes(\n\t\t\t\toptions,\n\t\t\t\tgetDate(invertedSignifier)\n\t\t\t);\n\t\t\tif (closestPair) return options[closestPair[0]];\n\t\t}\n\t}\n\n\treturn null;\n};\n\nexport const parseUserInput = (userInput: string): null | string[] => {\n\tconst input = spaceless(userInput).toUpperCase();\n\n\tlet parsed;\n\n\tswitch (inputCaseName(input)) {\n\t\tcase 'empty': // Empty string\n\t\t\treturn null;\n\t\tcase '1-digit': // \"2\"=02:00\n\t\tcase '2-digit': // \"23\"=23:00, \"02\"=02:00, \"24\"=12:00 AM\n\t\tcase '3-digit': // \"023\"=02:30, \"234\"=02:34, \"028\"=00:28\n\t\tcase '4-digit': // \"0234\"=02:34\n\t\tcase 'many-digits': // Cutting extra digits off\n\t\t\tparsed = parseDigits(input);\n\t\t\tbreak;\n\t\tcase 'colon':\n\t\t\tparsed = parseColon(input);\n\t\t\tbreak;\n\t\tcase 'phrase': // No colon, has letters\n\t\tdefault:\n\t\t\tparsed = parsePhrase(input);\n\t}\n\n\t// No expected value found\n\tif (!parsed || parsed.length < 2) return null;\n\n\t// Handling with defaultTimeSignifier\n\tif (parsed.length === 2) {\n\t\t// No signifier found in input\n\t\tparsed.push(null);\n\t}\n\n\t// Case of unknown signifier\n\tif (parsed[2] === null || !(parsed[2] === 'AM' || parsed[2] === 'PM')) {\n\t\tparsed[2] = null;\n\t}\n\n\tconst hours = parseInt(parsed[0], 10);\n\tconst minutes = parseInt(parsed[1], 10);\n\n\tconst [maxHours, maxMinutes] = [23, 59];\n\n\t// Reject impossible hours value, e.g. \"88:88\"\n\tif (maxHours < hours) {\n\t\treturn null;\n\t}\n\n\t// Reject impossible minutes value, e.g. \"88:88\"\n\tif (maxMinutes < minutes) {\n\t\treturn null;\n\t}\n\n\t// Detect 24-hour format to ignore defaultTimeSignifier\n\tif (hours > 12) {\n\t\t// Extra case? (hours === 12 && minutes !== 0)\n\t\tparsed[0] = hours < 22 ? `0${hours - 12}` : `${hours - 12}`;\n\t\tparsed[2] = 'PM';\n\t}\n\n\treturn parsed;\n};\n\nexport const getClosestIndexes = (\n\toptions: TimePickerOptionProps[],\n\tvalue: TimePickerOptionProps['value']\n): null | number[] => {\n\tconst dates = options.map((d) => d.value.getTime());\n\tconst date = value.getTime();\n\n\t// No options provided\n\tif (options.length < 1) {\n\t\treturn null;\n\t}\n\n\t// Out of range\n\tif (date < dates[0] || date > dates[dates.length - 1]) {\n\t\treturn null;\n\t}\n\n\t// Value is equal to an option\n\tconst exactMatch = dates.indexOf(date);\n\tif (exactMatch !== -1) {\n\t\treturn [exactMatch];\n\t}\n\n\t// Value is between two options\n\tlet greaterThanIdx = -1;\n\n\tdates.some((d) => {\n\t\tif (d > date) {\n\t\t\tgreaterThanIdx = dates.indexOf(d);\n\t\t}\n\t\treturn d > date;\n\t});\n\n\tif (greaterThanIdx === -1) {\n\t\tconsole.warn(\n\t\t\t'@servicetitan/design-system: Something wrong with TimePicker.getClosestIndexes()'\n\t\t);\n\t\treturn null;\n\t}\n\n\tconst distanceToNext = dates[greaterThanIdx] - date;\n\tconst distanceToPrev = date - dates[greaterThanIdx - 1];\n\n\t// Date is closer to next\n\tif (distanceToNext < distanceToPrev) {\n\t\treturn [greaterThanIdx, greaterThanIdx - 1];\n\t}\n\n\t// Date is closer to prev\n\treturn [greaterThanIdx - 1, greaterThanIdx];\n};\n"]}
1
+ {"version":3,"file":"getClosestOption.js","sourceRoot":"","sources":["../../../../src/components/TimePicker/utils/getClosestOption.ts"],"names":[],"mappings":"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","sourcesContent":["import { TimePickerOptionProps } from '../components/TimePickerOptionList';\nimport { TimePickerPropsStrict } from '../';\n\nimport {\n\tinputCaseName,\n\tspaceless,\n\tparseDigits,\n\tparseColon,\n\tparsePhrase,\n} from './utils';\n\nimport { checkMinMax } from './checkMinMax';\nimport { stringToDate } from './stringToDate';\nimport { toTimeFormat } from './toTimeFormat';\n\n// Getting most expected option based on user's input\nexport const getClosestOption = (\n\toptions: TimePickerOptionProps[],\n\tuserInput: string,\n\tdefaultTimeSignifier: TimePickerPropsStrict['defaultTimeSignifier'],\n\tautoRounding: TimePickerPropsStrict['autoRounding'],\n\tmin: TimePickerPropsStrict['min'],\n\tmax: TimePickerPropsStrict['max'],\n\tformat: TimePickerPropsStrict['format']\n): TimePickerOptionProps => {\n\tif (spaceless(userInput) === '') return null;\n\n\t// Expected value based on user input\n\tconst value = parseUserInput(userInput, format === 'hh:mm');\n\n\tif (!value) return null;\n\n\tconst [hours, minutes, ampm] = value;\n\tconst getDate = (signifier: string) =>\n\t\tstringToDate(`${hours}:${minutes} ${signifier}`);\n\tconst getText = (date: Date) => toTimeFormat(date, format);\n\tconst signifier = ampm || defaultTimeSignifier;\n\n\t// Inverte defaultTimeSignifier\n\tconst invertedSignifier = defaultTimeSignifier === 'AM' ? 'PM' : 'AM';\n\n\tif (!autoRounding) {\n\t\t// Ignore dropdown options, which are based on `step` prop\n\t\tlet v = getDate(signifier);\n\t\tif (checkMinMax(min, max, v)) {\n\t\t\treturn { text: getText(v), value: v };\n\t\t}\n\n\t\tif (!ampm) {\n\t\t\t// Case if ampm is unknown and defaultTimeSignifier do not fit into checkMinMax range\n\t\t\tv = getDate(invertedSignifier);\n\t\t\tif (checkMinMax(min, max, v)) {\n\t\t\t\treturn { text: getText(v), value: v };\n\t\t\t}\n\t\t}\n\n\t\t// Reject input, out of min-max range\n\t\treturn null;\n\t}\n\n\tif (autoRounding) {\n\t\t// Look up for closest value in options\n\t\tlet closestPair = getClosestIndexes(options, getDate(signifier));\n\t\tif (closestPair) return options[closestPair[0]];\n\n\t\tif (!ampm) {\n\t\t\t// Case if ampm is unknown\n\t\t\tclosestPair = getClosestIndexes(\n\t\t\t\toptions,\n\t\t\t\tgetDate(invertedSignifier)\n\t\t\t);\n\t\t\tif (closestPair) return options[closestPair[0]];\n\t\t}\n\t}\n\n\treturn null;\n};\n\nexport const parseUserInput = (\n\tuserInput: string,\n\ttwentyFourHour = false\n): null | string[] => {\n\tconst input = spaceless(userInput).toUpperCase();\n\n\tlet parsed;\n\n\tswitch (inputCaseName(input)) {\n\t\tcase 'empty': // Empty string\n\t\t\treturn null;\n\t\tcase '1-digit': // \"2\"=02:00\n\t\tcase '2-digit': // \"23\"=23:00, \"02\"=02:00, \"24\"=12:00 AM\n\t\tcase '3-digit': // \"023\"=02:30, \"234\"=02:34, \"028\"=00:28\n\t\tcase '4-digit': // \"0234\"=02:34\n\t\tcase 'many-digits': // Cutting extra digits off\n\t\t\tparsed = parseDigits(input);\n\t\t\tbreak;\n\t\tcase 'colon':\n\t\t\tparsed = parseColon(input, twentyFourHour);\n\t\t\tbreak;\n\t\tcase 'phrase': // No colon, has letters\n\t\tdefault:\n\t\t\tparsed = parsePhrase(input);\n\t}\n\n\t// No expected value found\n\tif (!parsed || parsed.length < 2) return null;\n\n\t// Handling with defaultTimeSignifier\n\tif (parsed.length === 2) {\n\t\t// No signifier found in input\n\t\tparsed.push(null);\n\t}\n\n\t// Case of unknown signifier\n\tif (parsed[2] === null || !(parsed[2] === 'AM' || parsed[2] === 'PM')) {\n\t\tparsed[2] = null;\n\t}\n\n\tconst hours = parseInt(parsed[0], 10);\n\tconst minutes = parseInt(parsed[1], 10);\n\n\tconst [maxHours, maxMinutes] = [23, 59];\n\n\t// Reject impossible hours value, e.g. \"88:88\"\n\tif (maxHours < hours) {\n\t\treturn null;\n\t}\n\n\t// Reject impossible minutes value, e.g. \"88:88\"\n\tif (maxMinutes < minutes) {\n\t\treturn null;\n\t}\n\n\t// Detect 24-hour format to ignore defaultTimeSignifier\n\tif (hours > 12) {\n\t\t// Extra case? (hours === 12 && minutes !== 0)\n\t\tparsed[0] = hours < 22 ? `0${hours - 12}` : `${hours - 12}`;\n\t\tparsed[2] = 'PM';\n\t}\n\n\treturn parsed;\n};\n\nexport const getClosestIndexes = (\n\toptions: TimePickerOptionProps[],\n\tvalue: TimePickerOptionProps['value']\n): null | number[] => {\n\tconst dates = options.map((d) => d.value.getTime());\n\tconst date = value.getTime();\n\n\t// No options provided\n\tif (options.length < 1) {\n\t\treturn null;\n\t}\n\n\t// Out of range\n\tif (date < dates[0] || date > dates[dates.length - 1]) {\n\t\treturn null;\n\t}\n\n\t// Value is equal to an option\n\tconst exactMatch = dates.indexOf(date);\n\tif (exactMatch !== -1) {\n\t\treturn [exactMatch];\n\t}\n\n\t// Value is between two options\n\tlet greaterThanIdx = -1;\n\n\tdates.some((d) => {\n\t\tif (d > date) {\n\t\t\tgreaterThanIdx = dates.indexOf(d);\n\t\t}\n\t\treturn d > date;\n\t});\n\n\tif (greaterThanIdx === -1) {\n\t\tconsole.warn(\n\t\t\t'@servicetitan/design-system: Something wrong with TimePicker.getClosestIndexes()'\n\t\t);\n\t\treturn null;\n\t}\n\n\tconst distanceToNext = dates[greaterThanIdx] - date;\n\tconst distanceToPrev = date - dates[greaterThanIdx - 1];\n\n\t// Date is closer to next\n\tif (distanceToNext < distanceToPrev) {\n\t\treturn [greaterThanIdx, greaterThanIdx - 1];\n\t}\n\n\t// Date is closer to prev\n\treturn [greaterThanIdx - 1, greaterThanIdx];\n};\n"]}
@@ -4,6 +4,6 @@ export declare const isInvalidDate: (d: Date | undefined) => boolean;
4
4
  export declare const isValidDate: (date: Date) => boolean;
5
5
  export declare const inputCaseName: (input: string) => string;
6
6
  export declare const parseDigits: (input: string) => null | string[];
7
- export declare const parseColon: (input: string) => null | string[];
7
+ export declare const parseColon: (input: string, twentyFourHour?: boolean) => null | string[];
8
8
  export declare const parsePhrase: (input: string) => null | string[];
9
9
  export declare const isValidInput: (input: string) => boolean;
@@ -96,7 +96,7 @@ const parseThreeDigits = (dgts) => {
96
96
  return null;
97
97
  };
98
98
  // Parses "12:45ab", return null or ['12', '45', 'AM']
99
- export const parseColon = (input) => {
99
+ export const parseColon = (input, twentyFourHour = false) => {
100
100
  var _a, _b, _c;
101
101
  if (!isValidInput(input)) {
102
102
  return null;
@@ -118,10 +118,15 @@ export const parseColon = (input) => {
118
118
  minutes[0] = '00'; // '1:' → '1:00'
119
119
  if (minutes[0].length === 1)
120
120
  minutes[0] = minutes[0] + '0'; // '2:3' → '02:30'
121
- // Counts only first letter
122
- const firstLetter = (_c = (_b = (_a = parts[1]) === null || _a === void 0 ? void 0 : _a.replace(/[^a-zA-Z]+/g, '') // Keep letters only
123
- ) === null || _b === void 0 ? void 0 : _b.toUpperCase()) === null || _c === void 0 ? void 0 : _c.substring(0, 1);
124
- const ampm = firstLetter === 'A' ? 'AM' : firstLetter === 'P' ? 'PM' : '';
121
+ let ampm = '';
122
+ if (twentyFourHour) {
123
+ ampm = Number(hours[0]) < 12 ? 'AM' : 'PM';
124
+ }
125
+ else {
126
+ const firstLetter = (_c = (_b = (_a = parts[1]) === null || _a === void 0 ? void 0 : _a.replace(/[^a-zA-Z]+/g, '') // Keep letters only
127
+ ) === null || _b === void 0 ? void 0 : _b.toUpperCase()) === null || _c === void 0 ? void 0 : _c.substring(0, 1);
128
+ ampm = firstLetter === 'A' ? 'AM' : firstLetter === 'P' ? 'PM' : '';
129
+ }
125
130
  return [hours[0], minutes[0], ampm];
126
131
  };
127
132
  // Parses "1245ab" in ['12', '45', 'AM'], "1234cd" in ['12', '45', '']
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/components/TimePicker/utils/utils.ts"],"names":[],"mappings":"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","sourcesContent":["export const colonless = (str: string) => str?.replace(/:/g, '');\nexport const spaceless = (str: string) => str?.replace(/ /g, '');\n\nexport const isInvalidDate = (d: Date | undefined): boolean => {\n\tif (typeof d === 'undefined') return false;\n\treturn d instanceof Date && isNaN(d as any);\n};\n\nexport const isValidDate = (date: Date) => {\n\tif (date instanceof Date) return !isInvalidDate(date);\n\treturn false;\n};\n\n// 'empty' | '1-digit' | '2-digit' | '3-digit' | '4-digit' | 'many-digits' | 'colon' | 'phrase'\nexport const inputCaseName = (input: string) => {\n\tif (input.length === 0) {\n\t\treturn 'empty';\n\t}\n\n\tlet caseName;\n\tconst digitsOnly = /^\\d+$/;\n\n\tif (digitsOnly.test(input)) {\n\t\t// Digits only\n\t\tif (input.length < 5) {\n\t\t\tcaseName = `${input.length}-digit`; // e.g. '1-digit', '2-digit', etc.\n\t\t} else {\n\t\t\t// Too many digits\n\t\t\tcaseName = 'many-digits';\n\t\t}\n\t} else if (input.includes(':')) {\n\t\t// Has colon\n\t\tcaseName = 'colon';\n\t} else {\n\t\t// No colon, has letters\n\t\tcaseName = 'phrase';\n\t}\n\treturn caseName;\n};\n\nexport const parseDigits = (input: string): null | string[] => {\n\tif (!isValidInput(input)) {\n\t\treturn null;\n\t}\n\n\tconst digitsOnly = input.replace(/[^\\d]+/g, ''); // Keep digits only\n\n\t// Only digits allowed\n\tif (input !== digitsOnly) {\n\t\treturn null;\n\t}\n\n\tconst dgts = input.split('');\n\n\tswitch (inputCaseName(input)) {\n\t\tcase '1-digit': // \"2\"=02:00\n\t\t\treturn input === '0' ? ['12', '00'] : [`0${input}`, '00'];\n\t\tcase '2-digit': // \"23\"=23:00, \"02\"=02:00, \"31\"=03:10\n\t\t\treturn parseTwoDigits(dgts);\n\t\tcase '3-digit': // \"023\"=02:30, \"234\"=02:34, \"028\"=00:28 (yes)\n\t\t\treturn parseThreeDigits(dgts);\n\t\tcase '4-digit': // \"0234\"=02:34\n\t\tcase 'many-digits': // Cutting extra digits off, \"02345\"=02:34\n\t\t\treturn [`${dgts[0]}${dgts[1]}`, `${dgts[2]}${dgts[3]}`];\n\t}\n};\n\n// One cases of hours value, e.g. \"xy:00\"\nconst parseTwoDigits = (dgts: string[]): null | string[] => {\n\tconst num = parseInt(dgts.join(''), 10);\n\tconst x = parseInt(dgts[0], 10);\n\tconst y = parseInt(dgts[1], 10);\n\n\t// Edge case of \"24:00\" to \"12:00 AM\"\n\tif (num === 24 || num === 0) return ['12', '00', 'AM'];\n\n\t// Case \"xy:00\"\n\tif (num > 0 && num < 24) return [`${x}${y}`, `00`];\n\n\t// Reject 25-99\n\treturn null;\n};\n\n// Two cases: \"0x:yz\" or \"xy:z0\"\nconst parseThreeDigits = (dgts: string[]): null | string[] => {\n\tconst [x, y, z] = dgts.map((i) => parseInt(i, 10));\n\n\t// Edge case, last two digits are truly minutes, e.g. \"126\"=01:26 or \"017\"=00:17\n\tif (z > 5) {\n\t\tif (y > 5) {\n\t\t\treturn null; // Reject, \"066\"=null\n\t\t}\n\t\treturn [`0${x}`, `${y}${z}`];\n\t}\n\t// Edge case, leading zero x=0, \"023\"=02:30\n\tif (x === 0 && z < 6) return [`0${y}`, `${z}0`];\n\n\t// Case 1 = \"0x:yz\", major\n\tif (y < 6) return [`0${x}`, `${y}${z}`];\n\n\t// Case 2 = \"xy:z0\", minor\n\tif (x < 3 && z < 6) return [`${x}${y}`, `${z}0`];\n\n\t// Rejection\n\treturn null;\n};\n\n// Parses \"12:45ab\", return null or ['12', '45', 'AM']\nexport const parseColon = (input: string): null | string[] => {\n\tif (!isValidInput(input)) {\n\t\treturn null;\n\t}\n\n\tconst parts = spaceless(input).split(':');\n\tconst numbersPattern = /\\d+/g;\n\tconst hours = parts[0].match(numbersPattern) || [''];\n\tconst minutes = parts[1].match(numbersPattern) || [''];\n\n\t// Excluding \"12a:34\" or \"12:55a2\"\n\tif (hours?.length !== 1 || minutes?.length !== 1) {\n\t\treturn null;\n\t}\n\n\tif (hours[0].length === 0 || hours[0].length > 2 || minutes[0].length > 2) {\n\t\treturn null;\n\t}\n\n\tif (hours[0].length === 1) hours[0] = '0' + hours[0]; // '2' → '02:00'\n\tif (minutes[0].length === 0) minutes[0] = '00'; // '1:' → '1:00'\n\tif (minutes[0].length === 1) minutes[0] = minutes[0] + '0'; // '2:3' → '02:30'\n\n\t// Counts only first letter\n\tconst firstLetter = parts[1]\n\t\t?.replace(/[^a-zA-Z]+/g, '') // Keep letters only\n\t\t?.toUpperCase()\n\t\t?.substring(0, 1);\n\n\tconst ampm = firstLetter === 'A' ? 'AM' : firstLetter === 'P' ? 'PM' : '';\n\n\treturn [hours[0], minutes[0], ampm];\n};\n\n// Parses \"1245ab\" in ['12', '45', 'AM'], \"1234cd\" in ['12', '45', '']\nexport const parsePhrase = (input: string): null | string[] => {\n\tif (!isValidInput(input)) {\n\t\treturn null;\n\t}\n\n\tconst numbersPattern = /\\d+/g;\n\tconst digits = spaceless(input)?.match(numbersPattern);\n\n\t// Digits must go in one piece and in first occurence\n\tif (digits?.length !== 1 || input.indexOf(digits[0]) !== 0) {\n\t\treturn null;\n\t}\n\n\tconst parsedDigits = parseDigits(digits[0]);\n\tif (!parsedDigits) return null; // Reject impossible digits\n\tconst [hours, minutes] = parsedDigits;\n\n\tconst firstLetter = input\n\t\t?.replace(/[^a-zA-Z]+/g, '') // Keeping letters only\n\t\t?.toUpperCase()\n\t\t?.substring(0, 1);\n\n\tconst ampm = firstLetter === 'A' ? 'AM' : firstLetter === 'P' ? 'PM' : null;\n\n\treturn [hours, minutes, ampm];\n};\n\n// Only digits, letters, colon and spaces are allowed\nexport const isValidInput = (input: string) => {\n\tconst numbersPattern = /\\d+/g;\n\n\t// Must have at least one digit\n\tif (!numbersPattern.test(input)) {\n\t\treturn false;\n\t}\n\n\t// No more than 5 digits allowed (reject \"123456\")\n\tif (input.match(numbersPattern).join('').length > 5) {\n\t\treturn false;\n\t}\n\n\tconst lettersOnly = input.replace(/[^a-zA-Z]+/g, '');\n\t// No more than two letters allowed\n\tif (lettersOnly.length > 2) {\n\t\treturn false;\n\t}\n\n\tif (input.includes(':')) {\n\t\tconst colonedParts = input.split(':');\n\t\tconst lettersPattern = /[a-zA-Z]+/g;\n\t\t// No letters allowed in hours part, e.g. \"12a:00\"\n\t\tif (lettersPattern.test(colonedParts[0])) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t// Looking for illegal characters\n\tconst remainder = input\n\t\t.replace(/[a-zA-Z]+/g, '') // Removing all letters\n\t\t.replace(/\\d+/g, '') // Removing digits\n\t\t.replace(/ /g, '') // Removing spaces\n\t\t.replace(/:/, ''); // Only one colon allowed\n\n\treturn remainder.length === 0;\n};\n"]}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/components/TimePicker/utils/utils.ts"],"names":[],"mappings":"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","sourcesContent":["export const colonless = (str: string) => str?.replace(/:/g, '');\nexport const spaceless = (str: string) => str?.replace(/ /g, '');\n\nexport const isInvalidDate = (d: Date | undefined): boolean => {\n\tif (typeof d === 'undefined') return false;\n\treturn d instanceof Date && isNaN(d as any);\n};\n\nexport const isValidDate = (date: Date) => {\n\tif (date instanceof Date) return !isInvalidDate(date);\n\treturn false;\n};\n\n// 'empty' | '1-digit' | '2-digit' | '3-digit' | '4-digit' | 'many-digits' | 'colon' | 'phrase'\nexport const inputCaseName = (input: string) => {\n\tif (input.length === 0) {\n\t\treturn 'empty';\n\t}\n\n\tlet caseName;\n\tconst digitsOnly = /^\\d+$/;\n\n\tif (digitsOnly.test(input)) {\n\t\t// Digits only\n\t\tif (input.length < 5) {\n\t\t\tcaseName = `${input.length}-digit`; // e.g. '1-digit', '2-digit', etc.\n\t\t} else {\n\t\t\t// Too many digits\n\t\t\tcaseName = 'many-digits';\n\t\t}\n\t} else if (input.includes(':')) {\n\t\t// Has colon\n\t\tcaseName = 'colon';\n\t} else {\n\t\t// No colon, has letters\n\t\tcaseName = 'phrase';\n\t}\n\treturn caseName;\n};\n\nexport const parseDigits = (input: string): null | string[] => {\n\tif (!isValidInput(input)) {\n\t\treturn null;\n\t}\n\n\tconst digitsOnly = input.replace(/[^\\d]+/g, ''); // Keep digits only\n\n\t// Only digits allowed\n\tif (input !== digitsOnly) {\n\t\treturn null;\n\t}\n\n\tconst dgts = input.split('');\n\n\tswitch (inputCaseName(input)) {\n\t\tcase '1-digit': // \"2\"=02:00\n\t\t\treturn input === '0' ? ['12', '00'] : [`0${input}`, '00'];\n\t\tcase '2-digit': // \"23\"=23:00, \"02\"=02:00, \"31\"=03:10\n\t\t\treturn parseTwoDigits(dgts);\n\t\tcase '3-digit': // \"023\"=02:30, \"234\"=02:34, \"028\"=00:28 (yes)\n\t\t\treturn parseThreeDigits(dgts);\n\t\tcase '4-digit': // \"0234\"=02:34\n\t\tcase 'many-digits': // Cutting extra digits off, \"02345\"=02:34\n\t\t\treturn [`${dgts[0]}${dgts[1]}`, `${dgts[2]}${dgts[3]}`];\n\t}\n};\n\n// One cases of hours value, e.g. \"xy:00\"\nconst parseTwoDigits = (dgts: string[]): null | string[] => {\n\tconst num = parseInt(dgts.join(''), 10);\n\tconst x = parseInt(dgts[0], 10);\n\tconst y = parseInt(dgts[1], 10);\n\n\t// Edge case of \"24:00\" to \"12:00 AM\"\n\tif (num === 24 || num === 0) return ['12', '00', 'AM'];\n\n\t// Case \"xy:00\"\n\tif (num > 0 && num < 24) return [`${x}${y}`, `00`];\n\n\t// Reject 25-99\n\treturn null;\n};\n\n// Two cases: \"0x:yz\" or \"xy:z0\"\nconst parseThreeDigits = (dgts: string[]): null | string[] => {\n\tconst [x, y, z] = dgts.map((i) => parseInt(i, 10));\n\n\t// Edge case, last two digits are truly minutes, e.g. \"126\"=01:26 or \"017\"=00:17\n\tif (z > 5) {\n\t\tif (y > 5) {\n\t\t\treturn null; // Reject, \"066\"=null\n\t\t}\n\t\treturn [`0${x}`, `${y}${z}`];\n\t}\n\t// Edge case, leading zero x=0, \"023\"=02:30\n\tif (x === 0 && z < 6) return [`0${y}`, `${z}0`];\n\n\t// Case 1 = \"0x:yz\", major\n\tif (y < 6) return [`0${x}`, `${y}${z}`];\n\n\t// Case 2 = \"xy:z0\", minor\n\tif (x < 3 && z < 6) return [`${x}${y}`, `${z}0`];\n\n\t// Rejection\n\treturn null;\n};\n\n// Parses \"12:45ab\", return null or ['12', '45', 'AM']\nexport const parseColon = (\n\tinput: string,\n\ttwentyFourHour = false\n): null | string[] => {\n\tif (!isValidInput(input)) {\n\t\treturn null;\n\t}\n\n\tconst parts = spaceless(input).split(':');\n\tconst numbersPattern = /\\d+/g;\n\tconst hours = parts[0].match(numbersPattern) || [''];\n\tconst minutes = parts[1].match(numbersPattern) || [''];\n\n\t// Excluding \"12a:34\" or \"12:55a2\"\n\tif (hours?.length !== 1 || minutes?.length !== 1) {\n\t\treturn null;\n\t}\n\n\tif (hours[0].length === 0 || hours[0].length > 2 || minutes[0].length > 2) {\n\t\treturn null;\n\t}\n\n\tif (hours[0].length === 1) hours[0] = '0' + hours[0]; // '2' → '02:00'\n\tif (minutes[0].length === 0) minutes[0] = '00'; // '1:' → '1:00'\n\tif (minutes[0].length === 1) minutes[0] = minutes[0] + '0'; // '2:3' → '02:30'\n\n\tlet ampm = '';\n\n\tif (twentyFourHour) {\n\t\tampm = Number(hours[0]) < 12 ? 'AM' : 'PM';\n\t} else {\n\t\tconst firstLetter = parts[1]\n\t\t\t?.replace(/[^a-zA-Z]+/g, '') // Keep letters only\n\t\t\t?.toUpperCase()\n\t\t\t?.substring(0, 1);\n\n\t\tampm = firstLetter === 'A' ? 'AM' : firstLetter === 'P' ? 'PM' : '';\n\t}\n\n\treturn [hours[0], minutes[0], ampm];\n};\n\n// Parses \"1245ab\" in ['12', '45', 'AM'], \"1234cd\" in ['12', '45', '']\nexport const parsePhrase = (input: string): null | string[] => {\n\tif (!isValidInput(input)) {\n\t\treturn null;\n\t}\n\n\tconst numbersPattern = /\\d+/g;\n\tconst digits = spaceless(input)?.match(numbersPattern);\n\n\t// Digits must go in one piece and in first occurence\n\tif (digits?.length !== 1 || input.indexOf(digits[0]) !== 0) {\n\t\treturn null;\n\t}\n\n\tconst parsedDigits = parseDigits(digits[0]);\n\tif (!parsedDigits) return null; // Reject impossible digits\n\tconst [hours, minutes] = parsedDigits;\n\n\tconst firstLetter = input\n\t\t?.replace(/[^a-zA-Z]+/g, '') // Keeping letters only\n\t\t?.toUpperCase()\n\t\t?.substring(0, 1);\n\n\tconst ampm = firstLetter === 'A' ? 'AM' : firstLetter === 'P' ? 'PM' : null;\n\n\treturn [hours, minutes, ampm];\n};\n\n// Only digits, letters, colon and spaces are allowed\nexport const isValidInput = (input: string) => {\n\tconst numbersPattern = /\\d+/g;\n\n\t// Must have at least one digit\n\tif (!numbersPattern.test(input)) {\n\t\treturn false;\n\t}\n\n\t// No more than 5 digits allowed (reject \"123456\")\n\tif (input.match(numbersPattern).join('').length > 5) {\n\t\treturn false;\n\t}\n\n\tconst lettersOnly = input.replace(/[^a-zA-Z]+/g, '');\n\t// No more than two letters allowed\n\tif (lettersOnly.length > 2) {\n\t\treturn false;\n\t}\n\n\tif (input.includes(':')) {\n\t\tconst colonedParts = input.split(':');\n\t\tconst lettersPattern = /[a-zA-Z]+/g;\n\t\t// No letters allowed in hours part, e.g. \"12a:00\"\n\t\tif (lettersPattern.test(colonedParts[0])) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t// Looking for illegal characters\n\tconst remainder = input\n\t\t.replace(/[a-zA-Z]+/g, '') // Removing all letters\n\t\t.replace(/\\d+/g, '') // Removing digits\n\t\t.replace(/ /g, '') // Removing spaces\n\t\t.replace(/:/, ''); // Only one colon allowed\n\n\treturn remainder.length === 0;\n};\n"]}
@@ -1,6 +1,6 @@
1
1
  /* Hide element visually, keeping it focusable (with keyboard) and available for screen-readers */
2
2
  html {
3
- --anvil1-version: "14.5.1";
3
+ --anvil1-version: "14.5.3";
4
4
  }
5
5
 
6
6
  /*
@@ -1,5 +1,5 @@
1
1
  html {
2
- --anvil1-version: "14.5.1";
2
+ --anvil1-version: "14.5.3";
3
3
  }
4
4
 
5
5
  /*# sourceMappingURL=version.css.map */
@@ -1,6 +1,6 @@
1
1
  /* Hide element visually, keeping it focusable (with keyboard) and available for screen-readers */
2
2
  html {
3
- --anvil1-version: "14.5.1";
3
+ --anvil1-version: "14.5.3";
4
4
  }
5
5
 
6
6
  /*