@activecollab/components 1.0.276 → 1.0.278

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.
Files changed (56) hide show
  1. package/dist/cjs/components/AvatarGroup/Styles.js +1 -1
  2. package/dist/cjs/components/AvatarGroup/Styles.js.map +1 -1
  3. package/dist/cjs/components/Formatters/FormatDate.js +21 -0
  4. package/dist/cjs/components/Formatters/FormatDate.js.map +1 -0
  5. package/dist/cjs/components/Formatters/index.js +17 -0
  6. package/dist/cjs/components/Formatters/index.js.map +1 -0
  7. package/dist/cjs/components/Formatters/useFormatDate.js +18 -0
  8. package/dist/cjs/components/Formatters/useFormatDate.js.map +1 -0
  9. package/dist/cjs/components/Localization/LocalizationProvider.js +44 -0
  10. package/dist/cjs/components/Localization/LocalizationProvider.js.map +1 -0
  11. package/dist/cjs/components/Localization/index.js +17 -0
  12. package/dist/cjs/components/Localization/index.js.map +1 -0
  13. package/dist/cjs/components/SelectDate/SelectDate.js +7 -5
  14. package/dist/cjs/components/SelectDate/SelectDate.js.map +1 -1
  15. package/dist/cjs/utils/dateUtils.js +35 -0
  16. package/dist/cjs/utils/dateUtils.js.map +1 -0
  17. package/dist/cjs/utils/dateUtils.test.js +20 -0
  18. package/dist/cjs/utils/dateUtils.test.js.map +1 -0
  19. package/dist/esm/components/AvatarGroup/Styles.js +1 -1
  20. package/dist/esm/components/AvatarGroup/Styles.js.map +1 -1
  21. package/dist/esm/components/Formatters/FormatDate.d.ts +14 -0
  22. package/dist/esm/components/Formatters/FormatDate.d.ts.map +1 -0
  23. package/dist/esm/components/Formatters/FormatDate.js +13 -0
  24. package/dist/esm/components/Formatters/FormatDate.js.map +1 -0
  25. package/dist/esm/components/Formatters/index.d.ts +2 -0
  26. package/dist/esm/components/Formatters/index.d.ts.map +1 -0
  27. package/dist/esm/components/Formatters/index.js +2 -0
  28. package/dist/esm/components/Formatters/index.js.map +1 -0
  29. package/dist/esm/components/Formatters/useFormatDate.d.ts +2 -0
  30. package/dist/esm/components/Formatters/useFormatDate.d.ts.map +1 -0
  31. package/dist/esm/components/Formatters/useFormatDate.js +11 -0
  32. package/dist/esm/components/Formatters/useFormatDate.js.map +1 -0
  33. package/dist/esm/components/Localization/LocalizationProvider.d.ts +21 -0
  34. package/dist/esm/components/Localization/LocalizationProvider.d.ts.map +1 -0
  35. package/dist/esm/components/Localization/LocalizationProvider.js +30 -0
  36. package/dist/esm/components/Localization/LocalizationProvider.js.map +1 -0
  37. package/dist/esm/components/Localization/index.d.ts +2 -0
  38. package/dist/esm/components/Localization/index.d.ts.map +1 -0
  39. package/dist/esm/components/Localization/index.js +2 -0
  40. package/dist/esm/components/Localization/index.js.map +1 -0
  41. package/dist/esm/components/SelectDate/SelectDate.d.ts.map +1 -1
  42. package/dist/esm/components/SelectDate/SelectDate.js +7 -5
  43. package/dist/esm/components/SelectDate/SelectDate.js.map +1 -1
  44. package/dist/esm/utils/dateUtils.d.ts +4 -0
  45. package/dist/esm/utils/dateUtils.d.ts.map +1 -0
  46. package/dist/esm/utils/dateUtils.js +31 -0
  47. package/dist/esm/utils/dateUtils.js.map +1 -0
  48. package/dist/esm/utils/dateUtils.test.d.ts +2 -0
  49. package/dist/esm/utils/dateUtils.test.d.ts.map +1 -0
  50. package/dist/esm/utils/dateUtils.test.js +18 -0
  51. package/dist/esm/utils/dateUtils.test.js.map +1 -0
  52. package/dist/index.js +50 -6
  53. package/dist/index.js.map +1 -1
  54. package/dist/index.min.js +1 -1
  55. package/dist/index.min.js.map +1 -1
  56. package/package.json +1 -1
@@ -0,0 +1,30 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import React, { useMemo } from "react";
3
+ var defaultParams = {
4
+ locale: "en-US",
5
+ dateFormat: "MMM D. YYYY",
6
+ timeFormat: "HH:mm a",
7
+ decimalSeparator: ".",
8
+ thousandSeparator: ",",
9
+ decimalRounding: 0,
10
+ decimalSpaces: 2,
11
+ currencyCode: "USD",
12
+ t: function t(value) {
13
+ return value;
14
+ }
15
+ };
16
+ export var LocalizationContext = /*#__PURE__*/React.createContext(defaultParams);
17
+ export var LocalizationProvider = function LocalizationProvider(_ref) {
18
+ var children = _ref.children,
19
+ params = _ref.params;
20
+ var value = useMemo(function () {
21
+ return _extends({}, defaultParams, params);
22
+ }, [params]);
23
+ return /*#__PURE__*/React.createElement(LocalizationContext.Provider, {
24
+ value: value
25
+ }, children);
26
+ };
27
+ export var useLocalization = function useLocalization() {
28
+ return React.useContext(LocalizationContext);
29
+ };
30
+ //# sourceMappingURL=LocalizationProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LocalizationProvider.js","names":["React","useMemo","defaultParams","locale","dateFormat","timeFormat","decimalSeparator","thousandSeparator","decimalRounding","decimalSpaces","currencyCode","t","value","LocalizationContext","createContext","LocalizationProvider","children","params","useLocalization","useContext"],"sources":["../../../../src/components/Localization/LocalizationProvider.tsx"],"sourcesContent":["import React, { useMemo } from \"react\";\nexport interface ILocalizationContext {\n locale: string;\n dateFormat: string;\n timeFormat: string;\n decimalSeparator: string;\n thousandSeparator: string;\n decimalRounding: number;\n decimalSpaces: number;\n currencyCode: string;\n t: (...args) => string;\n}\n\nconst defaultParams = {\n locale: \"en-US\",\n dateFormat: \"MMM D. YYYY\",\n timeFormat: \"HH:mm a\",\n decimalSeparator: \".\",\n thousandSeparator: \",\",\n decimalRounding: 0,\n decimalSpaces: 2,\n currencyCode: \"USD\",\n t: (value: string) => value,\n};\nexport const LocalizationContext =\n React.createContext<ILocalizationContext>(defaultParams);\n\ninterface Props {\n params: Partial<ILocalizationContext>;\n translator?: (string, props: Record<string, string | number>) => string;\n}\nexport const LocalizationProvider: React.FC<Props> = ({ children, params }) => {\n const value = useMemo(() => {\n return {\n ...defaultParams,\n ...params,\n };\n }, [params]);\n return (\n <LocalizationContext.Provider value={value}>\n {children}\n </LocalizationContext.Provider>\n );\n};\n\nexport const useLocalization = () => React.useContext(LocalizationContext);\n"],"mappings":";AAAA,OAAOA,KAAK,IAAIC,OAAO,QAAQ,OAAO;AAatC,IAAMC,aAAa,GAAG;EACpBC,MAAM,EAAE,OAAO;EACfC,UAAU,EAAE,aAAa;EACzBC,UAAU,EAAE,SAAS;EACrBC,gBAAgB,EAAE,GAAG;EACrBC,iBAAiB,EAAE,GAAG;EACtBC,eAAe,EAAE,CAAC;EAClBC,aAAa,EAAE,CAAC;EAChBC,YAAY,EAAE,KAAK;EACnBC,CAAC,EAAE,WAACC,KAAa;IAAA,OAAKA,KAAK;EAAA;AAC7B,CAAC;AACD,OAAO,IAAMC,mBAAmB,gBAC9Bb,KAAK,CAACc,aAAa,CAAuBZ,aAAa,CAAC;AAM1D,OAAO,IAAMa,oBAAqC,GAAG,SAAxCA,oBAAqC,OAA6B;EAAA,IAAvBC,QAAQ,QAARA,QAAQ;IAAEC,MAAM,QAANA,MAAM;EACtE,IAAML,KAAK,GAAGX,OAAO,CAAC,YAAM;IAC1B,oBACKC,aAAa,EACbe,MAAM;EAEb,CAAC,EAAE,CAACA,MAAM,CAAC,CAAC;EACZ,oBACE,oBAAC,mBAAmB,CAAC,QAAQ;IAAC,KAAK,EAAEL;EAAM,GACxCI,QAAQ,CACoB;AAEnC,CAAC;AAED,OAAO,IAAME,eAAe,GAAG,SAAlBA,eAAe;EAAA,OAASlB,KAAK,CAACmB,UAAU,CAACN,mBAAmB,CAAC;AAAA"}
@@ -0,0 +1,2 @@
1
+ export * from "./LocalizationProvider";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/Localization/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./LocalizationProvider";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../../src/components/Localization/index.ts"],"sourcesContent":["export * from \"./LocalizationProvider\";\n"],"mappings":"AAAA,cAAc,wBAAwB"}
@@ -1 +1 @@
1
- {"version":3,"file":"SelectDate.d.ts","sourceRoot":"","sources":["../../../../src/components/SelectDate/SelectDate.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SelectDate.d.ts","sourceRoot":"","sources":["../../../../src/components/SelectDate/SelectDate.tsx"],"names":[],"mappings":"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"}
@@ -7,6 +7,8 @@ import { customClassNames } from "../DatePicker/ClassNames";
7
7
  import { Tooltip } from "../Tooltip/Tooltip";
8
8
  import { SelectDateTarget } from "./SelectDateTarget";
9
9
  import { StyledConfirmDialog, StyledSelectDate, StyledSelectDateButton } from "./Styles";
10
+ import { useLocalization } from "../Localization";
11
+ import { formatDate } from "../../utils/dateUtils";
10
12
  var getUtcTimestampFromDate = function getUtcTimestampFromDate(date) {
11
13
  return moment.utc([date.getFullYear(), date.getMonth(), date.getDate()]).unix();
12
14
  };
@@ -62,8 +64,7 @@ export var SelectDate = function SelectDate(_ref) {
62
64
  targetTextClassName = _ref.targetTextClassName,
63
65
  targetIconClassName = _ref.targetIconClassName,
64
66
  backgroundElementClass = _ref.backgroundElementClass,
65
- _ref$dateFormat = _ref.dateFormat,
66
- dateFormat = _ref$dateFormat === void 0 ? "DD MM. YYYY" : _ref$dateFormat,
67
+ passedDateFormat = _ref.dateFormat,
67
68
  defaultMonth = _ref.defaultMonth,
68
69
  _ref$daysToModify = _ref.daysToModify,
69
70
  daysToModify = _ref$daysToModify === void 0 ? [] : _ref$daysToModify,
@@ -82,15 +83,16 @@ export var SelectDate = function SelectDate(_ref) {
82
83
  var _useState = useState(defaultTimezoneAware),
83
84
  timezoneAware = _useState[0],
84
85
  setTimezoneAware = _useState[1];
86
+ var localization = useLocalization();
87
+ var dateFormat = passedDateFormat ? passedDateFormat : localization.dateFormat;
85
88
  var labelText = useMemo(function () {
86
89
  if (!selectedDays) {
87
90
  return defaultLabelText;
88
91
  } else {
89
92
  var endDate = timezoneAware ? moment.unix(selectedDays.to).local() : moment.unix(selectedDays.to).utc();
90
93
  var startDate = timezoneAware ? moment.unix(selectedDays.from).local() : moment.unix(selectedDays.from).utc();
91
- var currentYear = moment.utc().year();
92
- var formattedEndDate = !longDateFormat && endDate.year() === currentYear ? endDate.format(dateFormat.replace(/Y|,$/gi, "").trim()) : endDate.format(dateFormat);
93
- var formattedStartDate = !longDateFormat && startDate.year() === currentYear ? startDate.format(dateFormat.replace(/Y|,$/gi, "").trim()) : startDate.format(dateFormat);
94
+ var formattedEndDate = formatDate(endDate, dateFormat, longDateFormat);
95
+ var formattedStartDate = formatDate(startDate, dateFormat, longDateFormat);
94
96
  if (selectedDays.from === selectedDays.to) {
95
97
  return formattedEndDate;
96
98
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SelectDate.js","names":["React","useCallback","useEffect","useMemo","useState","moment","classnames","Menu","DatePickerForm","customClassNames","Tooltip","SelectDateTarget","StyledConfirmDialog","StyledSelectDate","StyledSelectDateButton","getUtcTimestampFromDate","date","utc","getFullYear","getMonth","getDate","unix","isDayInRange","day","data","repeating","from","Date","to","SelectDate","changeMode","mode","trigger","labelType","saveButtonText","cancelButtonText","clearButtonText","modalHeaderText","modalDiscardMessage","modalDiscardBtnText","modalCancelBtnText","onDayClick","onSave","onCancel","onToggleDatePicker","required","dateRequired","defaultTimezoneAware","longDateFormat","defaultShowDatePicker","firstDayOfWeek","selectedDays","selectionMode","menuClassName","targetClassName","icon","defaultLabelText","targetTextClassName","targetIconClassName","backgroundElementClass","dateFormat","defaultMonth","daysToModify","weekends","weekendLabel","weekendIsSelectable","tooltipText","popperTooltipClassName","popperClassName","popperTooltipStyle","position","disableDaysBefore","timezoneAware","setTimezoneAware","labelText","endDate","local","startDate","currentYear","year","formattedEndDate","format","replace","trim","formattedStartDate","modifiedDates","toDate","offsetFrom","utcOffset","offsetTo","handleModifiedSave","selectedDates","Object","prototype","hasOwnProperty","call","undefined","getDefaultMonth","month","setMonth","handleMonthChange","newDates","setNewDates","showDiscardModal","setShowDiscardModal","showDatePicker","setShowDatePicker","disabledSaveButton","handleSave","handleChange","dates","handleBeforeCloseMenu","result","selectedDaysFrom","selectedDaysTo","newDatesFrom","newDatesTo","handleClose","handleCancel","event","preventDefault","handleShowDatePicker","handleCloseDiscardModal","handleClear","handleSaveDiscardModal","modifiers","userAvailabilities","filter","type","globalDaysOff","selectableGlobalDaysOff","userAvailability","currentDay","some","weekend","value","getDay","nonWorkingDay","nonWorkingDays","disabled","toJSON","slice","renderDay","titles","push","forEach","title","child","length","map","index","renderDatePickerForm","renderTargetEl","displayName"],"sources":["../../../../src/components/SelectDate/SelectDate.tsx"],"sourcesContent":["import React, {\n ElementType,\n FC,\n useCallback,\n useEffect,\n useMemo,\n useState,\n ReactNode,\n CSSProperties,\n} from \"react\";\nimport moment from \"moment\";\nimport classnames from \"classnames\";\nimport { DayModifiers } from \"react-day-picker\";\nimport { Placement } from \"@popperjs/core\";\nimport { Menu } from \"../Menu/Menu\";\nimport { DatePickerForm } from \"./DatePickerForm\";\nimport { customClassNames } from \"../DatePicker/ClassNames\";\nimport { DaysToModify } from \"./types\";\nimport { Tooltip } from \"../Tooltip/Tooltip\";\nimport { SelectDateTarget } from \"./SelectDateTarget\";\nimport {\n StyledConfirmDialog,\n StyledSelectDate,\n StyledSelectDateButton,\n} from \"./Styles\";\n\nconst getUtcTimestampFromDate = (date: Date): number => {\n return moment\n .utc([date.getFullYear(), date.getMonth(), date.getDate()])\n .unix();\n};\n\nconst isDayInRange = (day: Date, data: DaysToModify): boolean => {\n if (data.repeating) {\n const from = new Date(\n day.getFullYear(),\n data.from.getMonth(),\n data.from.getDate()\n );\n const to = new Date(\n day.getFullYear(),\n data.to.getMonth(),\n data.to.getDate()\n );\n return day >= from && day <= to;\n }\n\n return day >= data.from && day <= data.to;\n};\n\ntype TriggerStringType = \"text\" | \"icon\" | \"inline\";\ntype TriggerFunctionType = (text: string) => JSX.Element;\n\ninterface ISelectDate {\n /** Change mode - can be atomic and instant */\n changeMode?: \"atomic\" | \"instant\";\n /** Trigger - can be text, icon, inline, or custom render function */\n trigger?: TriggerStringType | TriggerFunctionType;\n /** Save button text */\n saveButtonText?: string;\n /** Cancel button text */\n cancelButtonText?: string;\n /** Clear button text */\n clearButtonText?: string;\n /** Modal header text */\n modalHeaderText?: string;\n /** Modal cancel button text */\n modalCancelBtnText?: string;\n /** Modal discard button text */\n modalDiscardBtnText?: string;\n /** Modal discard message text */\n modalDiscardMessage?: string;\n /** Tooltip text */\n tooltipText?: string;\n /** Called when day is clicked */\n onDayClick?: (day: Date, modifiers: DayModifiers) => void;\n /** Save changes in atomic mode */\n onSave?: (dates?: { from: number; to: number }) => void;\n /** On cancel closes datepicker or opens disard modal in atomic mode */\n onCancel?: () => void;\n /** Clear dates when they are not required */\n onClear?: () => void;\n /** Use this callback to get is picker visible */\n onToggleDatePicker?: (value: boolean) => void;\n /** Set selected day or days */\n selectedDays?: { from: number; to: number };\n /** Set month */\n defaultMonth?: Date;\n /** Set selection range */\n selectionMode?: string;\n /** Set is date required */\n required?: boolean;\n /** Set default show on date picker (only for text and icon mode) */\n defaultShowDatePicker?: boolean;\n /** Long date format (Always show year) */\n longDateFormat?: boolean;\n /** Set is date required */\n defaultTimezoneAware?: boolean;\n /** Set first day of week */\n firstDayOfWeek?: number;\n /** One of icon types */\n icon?: ElementType;\n /** Default Label text */\n defaultLabelText?: string;\n /** Date format */\n dateFormat?: string;\n /** Menu classes */\n menuClassName?: string;\n /** Target element classes */\n targetClassName?: string;\n /** Target element text classes */\n targetTextClassName?: string;\n /** Target element icon classes */\n targetIconClassName?: string;\n /** Background style for clickable element after the menu is open (opacity, color, etc...) */\n backgroundElementClass?: string;\n /** Days to modify */\n daysToModify?: DaysToModify[];\n /** Array of weekend days */\n weekends?: number[];\n /** Weekend label */\n weekendLabel?: string;\n /** Allows weekends to be selected */\n weekendIsSelectable?: boolean;\n /** Popper Tooltip style */\n popperTooltipStyle?: CSSProperties;\n /** Popper Tooltip class name*/\n popperTooltipClassName?: string;\n /** Popper class name*/\n popperClassName?: string;\n /** Position of selectDate menu */\n position?: Placement;\n /** Disable days before specified date */\n disableDaysBefore?: Date;\n}\n\nexport const SelectDate: FC<ISelectDate> = ({\n changeMode: mode = \"instant\",\n trigger: labelType = \"text\",\n saveButtonText = \"Save\",\n cancelButtonText = \"Cancel\",\n clearButtonText = \"Clear\",\n modalHeaderText = \"Discard changes?\",\n modalDiscardMessage = \"All unsaved changes will be lost.\",\n modalDiscardBtnText = \"OK\",\n modalCancelBtnText = \"Cancel\",\n onDayClick,\n onSave,\n onCancel,\n onToggleDatePicker,\n required: dateRequired = false,\n defaultTimezoneAware = false,\n longDateFormat = false,\n defaultShowDatePicker = false,\n firstDayOfWeek = 0,\n selectedDays,\n selectionMode = \"custom\",\n menuClassName,\n targetClassName,\n icon,\n defaultLabelText = \"Set...\",\n targetTextClassName,\n targetIconClassName,\n backgroundElementClass,\n dateFormat = \"DD MM. YYYY\",\n defaultMonth,\n daysToModify = [],\n weekends = [],\n weekendLabel = \"Weekend\",\n weekendIsSelectable = false,\n tooltipText,\n popperTooltipClassName,\n popperClassName,\n popperTooltipStyle,\n position,\n disableDaysBefore,\n}) => {\n const [timezoneAware, setTimezoneAware] = useState(defaultTimezoneAware);\n\n const labelText = useMemo(() => {\n if (!selectedDays) {\n return defaultLabelText;\n } else {\n const endDate = timezoneAware\n ? moment.unix(selectedDays.to).local()\n : moment.unix(selectedDays.to).utc();\n\n const startDate = timezoneAware\n ? moment.unix(selectedDays.from).local()\n : moment.unix(selectedDays.from).utc();\n\n const currentYear = moment.utc().year();\n\n const formattedEndDate =\n !longDateFormat && endDate.year() === currentYear\n ? endDate.format(dateFormat.replace(/Y|,$/gi, ``).trim())\n : endDate.format(dateFormat);\n const formattedStartDate =\n !longDateFormat && startDate.year() === currentYear\n ? startDate.format(dateFormat.replace(/Y|,$/gi, ``).trim())\n : startDate.format(dateFormat);\n\n if (selectedDays.from === selectedDays.to) {\n return formattedEndDate;\n }\n\n return `${formattedStartDate} - ${formattedEndDate}`;\n }\n }, [\n selectedDays,\n dateFormat,\n timezoneAware,\n defaultLabelText,\n longDateFormat,\n ]);\n\n const modifiedDates = useMemo(() => {\n if (\n typeof selectedDays === \"object\" &&\n !!selectedDays.from &&\n !!selectedDays.to\n ) {\n if (timezoneAware) {\n return {\n from: moment.unix(selectedDays.from).toDate(),\n to: moment.unix(selectedDays.to).toDate(),\n };\n }\n const offsetFrom = moment.unix(selectedDays.from).utcOffset() * 60;\n const offsetTo = moment.unix(selectedDays.to).utcOffset() * 60;\n return {\n from: new Date((selectedDays.from - offsetFrom) * 1000),\n to: new Date((selectedDays.to - offsetTo) * 1000),\n };\n }\n }, [selectedDays, timezoneAware]);\n\n const handleModifiedSave = useCallback(\n (selectedDates) => {\n setTimezoneAware(false);\n if (typeof onSave === \"function\") {\n if (\n typeof selectedDates === \"object\" &&\n Object.prototype.hasOwnProperty.call(selectedDates, \"from\") &&\n Object.prototype.hasOwnProperty.call(selectedDates, \"to\")\n ) {\n onSave({\n from: getUtcTimestampFromDate(selectedDates.from),\n to: getUtcTimestampFromDate(selectedDates.to),\n });\n } else {\n onSave(undefined);\n }\n }\n },\n [onSave]\n );\n\n const getDefaultMonth = useCallback(() => {\n let date = new Date();\n\n if (typeof selectedDays === \"object\" && !!selectedDays.from) {\n date = timezoneAware\n ? new Date(selectedDays.from * 1000)\n : new Date(\n (selectedDays.from -\n moment.unix(selectedDays.from).utcOffset() * 60) *\n 1000\n );\n } else if (defaultMonth) {\n date = defaultMonth;\n }\n\n // forcing second day in month\n return new Date(date.getFullYear(), date.getMonth(), 2);\n }, [defaultMonth, selectedDays, timezoneAware]);\n\n const [month, setMonth] = useState(getDefaultMonth);\n\n const handleMonthChange = useCallback(\n (month) => {\n setMonth(month);\n },\n [setMonth]\n );\n\n const [newDates, setNewDates] = useState(modifiedDates);\n const [showDiscardModal, setShowDiscardModal] = useState(false);\n const [showDatePicker, setShowDatePicker] = useState(defaultShowDatePicker);\n\n const disabledSaveButton = useMemo(() => {\n return (\n modifiedDates?.from === newDates?.from &&\n modifiedDates?.to === newDates?.to\n );\n }, [modifiedDates, newDates]);\n\n useEffect(() => {\n setShowDatePicker(defaultShowDatePicker);\n }, [defaultShowDatePicker]);\n\n useEffect(() => {\n modifiedDates && setNewDates(modifiedDates);\n }, [modifiedDates]);\n\n useEffect(() => {\n typeof onToggleDatePicker === \"function\" &&\n onToggleDatePicker(showDatePicker);\n }, [showDatePicker, onToggleDatePicker]);\n\n useEffect(() => {\n if (!showDatePicker) {\n setMonth(getDefaultMonth());\n }\n }, [showDatePicker, getDefaultMonth]);\n\n const handleSave = useCallback(() => {\n handleModifiedSave(newDates);\n setShowDatePicker(false);\n }, [newDates, handleModifiedSave]);\n\n const handleChange = useCallback(\n (dates) => {\n if (mode !== \"atomic\") {\n handleModifiedSave(dates);\n }\n setNewDates(dates);\n },\n [mode, handleModifiedSave]\n );\n\n const handleBeforeCloseMenu = useCallback(() => {\n let result = true;\n\n if ((modifiedDates && !newDates) || (!modifiedDates && newDates)) {\n result = false;\n }\n\n const selectedDaysFrom = modifiedDates?.from;\n const selectedDaysTo = modifiedDates?.to;\n const newDatesFrom = newDates?.from;\n const newDatesTo = newDates?.to;\n\n if (\n selectedDaysFrom &&\n newDatesFrom &&\n selectedDaysTo &&\n newDatesTo &&\n (moment(selectedDaysFrom).format(\"DD-MM-YYYY\") !==\n moment(newDatesFrom).format(\"DD-MM-YYYY\") ||\n moment(selectedDaysTo).format(\"DD-MM-YYYY\") !==\n moment(newDatesTo).format(\"DD-MM-YYYY\"))\n ) {\n result = false;\n }\n\n if (!result) {\n setShowDiscardModal(true);\n }\n\n return result;\n }, [modifiedDates, newDates]);\n\n const handleClose = useCallback(() => {\n if (mode !== \"atomic\" || handleBeforeCloseMenu()) {\n typeof onCancel === \"function\" && onCancel();\n setShowDatePicker(false);\n }\n }, [mode, onCancel, handleBeforeCloseMenu]);\n\n const handleCancel = useCallback(\n (event) => {\n event && event.preventDefault();\n return handleClose();\n },\n [handleClose]\n );\n\n const handleShowDatePicker = useCallback(() => {\n setShowDatePicker(!showDatePicker);\n }, [showDatePicker]);\n\n const handleCloseDiscardModal = useCallback(() => {\n setShowDiscardModal(false);\n }, []);\n\n const handleClear = useCallback(() => {\n if (!dateRequired) {\n setNewDates(undefined);\n if (mode === \"instant\") {\n handleModifiedSave(undefined);\n }\n }\n }, [mode, dateRequired, handleModifiedSave]);\n\n const handleSaveDiscardModal = useCallback(() => {\n setNewDates(modifiedDates);\n setShowDiscardModal(false);\n setShowDatePicker(false);\n }, [modifiedDates]);\n\n const modifiers = useMemo(() => {\n const userAvailabilities = daysToModify.filter(\n (data) => data.type === \"user_day_off\"\n );\n const globalDaysOff = daysToModify.filter(\n (data) => data.type === \"global_day_off\"\n );\n const selectableGlobalDaysOff = daysToModify.filter(\n (data) => data.type === \"selectable_global_day_off\"\n );\n\n return {\n [customClassNames.userAvailability]: (day: Date): boolean => {\n // construct new date because react-day-picker returns date with hours set\n const currentDay = new Date(\n day.getFullYear(),\n day.getMonth(),\n day.getDate()\n );\n return userAvailabilities.some((data) =>\n isDayInRange(currentDay, data)\n );\n },\n [customClassNames.weekend]: (day: Date): boolean => {\n return weekends.some((value) => day.getDay() === value);\n },\n [customClassNames.nonWorkingDay]: (day: Date): boolean => {\n // return true if day is weekend day\n if (weekends.some((value) => value === day.getDay())) {\n return true;\n }\n const nonWorkingDays = [...selectableGlobalDaysOff, ...globalDaysOff];\n const currentDay = new Date(\n day.getFullYear(),\n day.getMonth(),\n day.getDate()\n );\n return nonWorkingDays.some((data) => isDayInRange(currentDay, data));\n },\n [customClassNames.disabled]: (day: Date): boolean => {\n if (disableDaysBefore) {\n if (\n day.toJSON().slice(0, 10) < disableDaysBefore.toJSON().slice(0, 10)\n ) {\n return true;\n }\n }\n // return true if day is weekend day\n if (\n !weekendIsSelectable &&\n weekends.some((value) => value === day.getDay())\n ) {\n return true;\n }\n // construct new date because react-day-picker returns date with hours set\n const currentDay = new Date(\n day.getFullYear(),\n day.getMonth(),\n day.getDate()\n );\n return globalDaysOff.some((data) => isDayInRange(currentDay, data));\n },\n };\n }, [daysToModify, weekends, disableDaysBefore, weekendIsSelectable]);\n\n const renderDay = useCallback(\n (day: Date): ReactNode => {\n const titles: string[] = [];\n\n if (weekends.some((value) => day.getDay() === value)) {\n titles.push(weekendLabel);\n }\n\n // construct new date because react-day-picker returns date with hours set\n const currentDay = new Date(\n day.getFullYear(),\n day.getMonth(),\n day.getDate()\n );\n\n daysToModify.forEach((data) => {\n if (isDayInRange(currentDay, data)) {\n titles.push(data.title);\n }\n });\n\n const child = (\n <div className=\"c-DayPicker-Day-Number\">{day.getDate()}</div>\n );\n\n if (titles.length) {\n const title = (\n <div key={`title-wrapper-${day.getDate()}`}>\n {titles.map((title: string, index: number) => (\n <div key={`title-text-${index}`}>{title}</div>\n ))}\n </div>\n );\n\n return (\n <Tooltip\n title={title}\n popperTooltipClassName={popperTooltipClassName}\n popperTooltipStyle={popperTooltipStyle}\n >\n {child}\n </Tooltip>\n );\n }\n\n return child;\n },\n [\n weekendLabel,\n weekends,\n daysToModify,\n popperTooltipClassName,\n popperTooltipStyle,\n ]\n );\n\n const renderDatePickerForm = useCallback((): JSX.Element => {\n return (\n <DatePickerForm\n onMonthChange={handleMonthChange}\n month={month}\n mode={mode}\n selectionMode={selectionMode}\n dateRequired={dateRequired}\n selectedDays={newDates}\n firstDayOfWeek={firstDayOfWeek}\n saveButtonText={saveButtonText}\n cancelButtonText={cancelButtonText}\n clearButtonText={clearButtonText}\n onDayClick={onDayClick}\n onSave={handleSave}\n onChange={handleChange}\n onCancel={handleCancel}\n onClear={handleClear}\n disabledSaveButton={disabledSaveButton}\n modifiers={modifiers}\n renderDay={renderDay}\n />\n );\n }, [\n handleMonthChange,\n month,\n mode,\n selectionMode,\n dateRequired,\n newDates,\n firstDayOfWeek,\n saveButtonText,\n cancelButtonText,\n clearButtonText,\n onDayClick,\n handleSave,\n handleChange,\n handleCancel,\n handleClear,\n disabledSaveButton,\n modifiers,\n renderDay,\n ]);\n\n const renderTargetEl = useMemo(() => {\n if (labelType === \"icon\" && icon) {\n return (\n <SelectDateTarget\n icon={icon}\n title={tooltipText}\n targetIconClassName={targetIconClassName}\n forceHideTooltip={showDatePicker}\n popperTooltipClassName={popperTooltipClassName}\n popperTooltipStyle={popperTooltipStyle}\n active={showDatePicker}\n />\n );\n }\n if (typeof labelType === \"function\") {\n return labelType(labelText);\n }\n return (\n <StyledSelectDateButton\n type=\"button\"\n className={classnames(\"date-picker-target\", targetClassName)}\n >\n <span className={targetTextClassName}>{labelText}</span>\n </StyledSelectDateButton>\n );\n }, [\n icon,\n labelText,\n labelType,\n popperTooltipClassName,\n popperTooltipStyle,\n showDatePicker,\n targetClassName,\n targetIconClassName,\n targetTextClassName,\n tooltipText,\n ]);\n\n return (\n <StyledSelectDate className=\"select-date\">\n {labelType !== \"inline\" ? (\n <Menu\n target={renderTargetEl}\n open={showDatePicker}\n onOpen={handleShowDatePicker}\n onBeforeClose={handleBeforeCloseMenu}\n onClose={handleClose}\n position={position}\n menuClassName={menuClassName}\n popperClassName={popperClassName}\n backgroundElementClass={backgroundElementClass}\n >\n {renderDatePickerForm()}\n </Menu>\n ) : (\n renderDatePickerForm()\n )}\n {mode === \"atomic\" ? (\n <StyledConfirmDialog\n className=\"modal-select-date\"\n open={showDiscardModal}\n onCancel={handleCloseDiscardModal}\n onConfirm={handleSaveDiscardModal}\n dialogTitle={modalHeaderText}\n dialogContent={modalDiscardMessage}\n cancelBtnText={modalCancelBtnText}\n confirmBtnText={modalDiscardBtnText}\n />\n ) : null}\n </StyledSelectDate>\n );\n};\n\nSelectDate.displayName = \"SelectDate\";\n"],"mappings":"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"}
1
+ {"version":3,"file":"SelectDate.js","names":["React","useCallback","useEffect","useMemo","useState","moment","classnames","Menu","DatePickerForm","customClassNames","Tooltip","SelectDateTarget","StyledConfirmDialog","StyledSelectDate","StyledSelectDateButton","useLocalization","formatDate","getUtcTimestampFromDate","date","utc","getFullYear","getMonth","getDate","unix","isDayInRange","day","data","repeating","from","Date","to","SelectDate","changeMode","mode","trigger","labelType","saveButtonText","cancelButtonText","clearButtonText","modalHeaderText","modalDiscardMessage","modalDiscardBtnText","modalCancelBtnText","onDayClick","onSave","onCancel","onToggleDatePicker","required","dateRequired","defaultTimezoneAware","longDateFormat","defaultShowDatePicker","firstDayOfWeek","selectedDays","selectionMode","menuClassName","targetClassName","icon","defaultLabelText","targetTextClassName","targetIconClassName","backgroundElementClass","passedDateFormat","dateFormat","defaultMonth","daysToModify","weekends","weekendLabel","weekendIsSelectable","tooltipText","popperTooltipClassName","popperClassName","popperTooltipStyle","position","disableDaysBefore","timezoneAware","setTimezoneAware","localization","labelText","endDate","local","startDate","formattedEndDate","formattedStartDate","modifiedDates","toDate","offsetFrom","utcOffset","offsetTo","handleModifiedSave","selectedDates","Object","prototype","hasOwnProperty","call","undefined","getDefaultMonth","month","setMonth","handleMonthChange","newDates","setNewDates","showDiscardModal","setShowDiscardModal","showDatePicker","setShowDatePicker","disabledSaveButton","handleSave","handleChange","dates","handleBeforeCloseMenu","result","selectedDaysFrom","selectedDaysTo","newDatesFrom","newDatesTo","format","handleClose","handleCancel","event","preventDefault","handleShowDatePicker","handleCloseDiscardModal","handleClear","handleSaveDiscardModal","modifiers","userAvailabilities","filter","type","globalDaysOff","selectableGlobalDaysOff","userAvailability","currentDay","some","weekend","value","getDay","nonWorkingDay","nonWorkingDays","disabled","toJSON","slice","renderDay","titles","push","forEach","title","child","length","map","index","renderDatePickerForm","renderTargetEl","displayName"],"sources":["../../../../src/components/SelectDate/SelectDate.tsx"],"sourcesContent":["import React, {\n ElementType,\n FC,\n useCallback,\n useEffect,\n useMemo,\n useState,\n ReactNode,\n CSSProperties,\n} from \"react\";\nimport moment from \"moment\";\nimport classnames from \"classnames\";\nimport { DayModifiers } from \"react-day-picker\";\nimport { Placement } from \"@popperjs/core\";\nimport { Menu } from \"../Menu/Menu\";\nimport { DatePickerForm } from \"./DatePickerForm\";\nimport { customClassNames } from \"../DatePicker/ClassNames\";\nimport { DaysToModify } from \"./types\";\nimport { Tooltip } from \"../Tooltip/Tooltip\";\nimport { SelectDateTarget } from \"./SelectDateTarget\";\nimport {\n StyledConfirmDialog,\n StyledSelectDate,\n StyledSelectDateButton,\n} from \"./Styles\";\nimport { useLocalization } from \"../Localization\";\nimport { formatDate } from \"../../utils/dateUtils\";\n\nconst getUtcTimestampFromDate = (date: Date): number => {\n return moment\n .utc([date.getFullYear(), date.getMonth(), date.getDate()])\n .unix();\n};\n\nconst isDayInRange = (day: Date, data: DaysToModify): boolean => {\n if (data.repeating) {\n const from = new Date(\n day.getFullYear(),\n data.from.getMonth(),\n data.from.getDate()\n );\n const to = new Date(\n day.getFullYear(),\n data.to.getMonth(),\n data.to.getDate()\n );\n return day >= from && day <= to;\n }\n\n return day >= data.from && day <= data.to;\n};\n\ntype TriggerStringType = \"text\" | \"icon\" | \"inline\";\ntype TriggerFunctionType = (text: string) => JSX.Element;\n\ninterface ISelectDate {\n /** Change mode - can be atomic and instant */\n changeMode?: \"atomic\" | \"instant\";\n /** Trigger - can be text, icon, inline, or custom render function */\n trigger?: TriggerStringType | TriggerFunctionType;\n /** Save button text */\n saveButtonText?: string;\n /** Cancel button text */\n cancelButtonText?: string;\n /** Clear button text */\n clearButtonText?: string;\n /** Modal header text */\n modalHeaderText?: string;\n /** Modal cancel button text */\n modalCancelBtnText?: string;\n /** Modal discard button text */\n modalDiscardBtnText?: string;\n /** Modal discard message text */\n modalDiscardMessage?: string;\n /** Tooltip text */\n tooltipText?: string;\n /** Called when day is clicked */\n onDayClick?: (day: Date, modifiers: DayModifiers) => void;\n /** Save changes in atomic mode */\n onSave?: (dates?: { from: number; to: number }) => void;\n /** On cancel closes datepicker or opens disard modal in atomic mode */\n onCancel?: () => void;\n /** Clear dates when they are not required */\n onClear?: () => void;\n /** Use this callback to get is picker visible */\n onToggleDatePicker?: (value: boolean) => void;\n /** Set selected day or days */\n selectedDays?: { from: number; to: number };\n /** Set month */\n defaultMonth?: Date;\n /** Set selection range */\n selectionMode?: string;\n /** Set is date required */\n required?: boolean;\n /** Set default show on date picker (only for text and icon mode) */\n defaultShowDatePicker?: boolean;\n /** Long date format (Always show year) */\n longDateFormat?: boolean;\n /** Set is date required */\n defaultTimezoneAware?: boolean;\n /** Set first day of week */\n firstDayOfWeek?: number;\n /** One of icon types */\n icon?: ElementType;\n /** Default Label text */\n defaultLabelText?: string;\n /** Date format */\n dateFormat?: string;\n /** Menu classes */\n menuClassName?: string;\n /** Target element classes */\n targetClassName?: string;\n /** Target element text classes */\n targetTextClassName?: string;\n /** Target element icon classes */\n targetIconClassName?: string;\n /** Background style for clickable element after the menu is open (opacity, color, etc...) */\n backgroundElementClass?: string;\n /** Days to modify */\n daysToModify?: DaysToModify[];\n /** Array of weekend days */\n weekends?: number[];\n /** Weekend label */\n weekendLabel?: string;\n /** Allows weekends to be selected */\n weekendIsSelectable?: boolean;\n /** Popper Tooltip style */\n popperTooltipStyle?: CSSProperties;\n /** Popper Tooltip class name*/\n popperTooltipClassName?: string;\n /** Popper class name*/\n popperClassName?: string;\n /** Position of selectDate menu */\n position?: Placement;\n /** Disable days before specified date */\n disableDaysBefore?: Date;\n}\n\nexport const SelectDate: FC<ISelectDate> = ({\n changeMode: mode = \"instant\",\n trigger: labelType = \"text\",\n saveButtonText = \"Save\",\n cancelButtonText = \"Cancel\",\n clearButtonText = \"Clear\",\n modalHeaderText = \"Discard changes?\",\n modalDiscardMessage = \"All unsaved changes will be lost.\",\n modalDiscardBtnText = \"OK\",\n modalCancelBtnText = \"Cancel\",\n onDayClick,\n onSave,\n onCancel,\n onToggleDatePicker,\n required: dateRequired = false,\n defaultTimezoneAware = false,\n longDateFormat = false,\n defaultShowDatePicker = false,\n firstDayOfWeek = 0,\n selectedDays,\n selectionMode = \"custom\",\n menuClassName,\n targetClassName,\n icon,\n defaultLabelText = \"Set...\",\n targetTextClassName,\n targetIconClassName,\n backgroundElementClass,\n dateFormat: passedDateFormat,\n defaultMonth,\n daysToModify = [],\n weekends = [],\n weekendLabel = \"Weekend\",\n weekendIsSelectable = false,\n tooltipText,\n popperTooltipClassName,\n popperClassName,\n popperTooltipStyle,\n position,\n disableDaysBefore,\n}) => {\n const [timezoneAware, setTimezoneAware] = useState(defaultTimezoneAware);\n const localization = useLocalization();\n const dateFormat = passedDateFormat\n ? passedDateFormat\n : localization.dateFormat;\n\n const labelText = useMemo(() => {\n if (!selectedDays) {\n return defaultLabelText;\n } else {\n const endDate = timezoneAware\n ? moment.unix(selectedDays.to).local()\n : moment.unix(selectedDays.to).utc();\n\n const startDate = timezoneAware\n ? moment.unix(selectedDays.from).local()\n : moment.unix(selectedDays.from).utc();\n\n const formattedEndDate = formatDate(endDate, dateFormat, longDateFormat);\n const formattedStartDate = formatDate(\n startDate,\n dateFormat,\n longDateFormat\n );\n\n if (selectedDays.from === selectedDays.to) {\n return formattedEndDate;\n }\n\n return `${formattedStartDate} - ${formattedEndDate}`;\n }\n }, [\n selectedDays,\n dateFormat,\n timezoneAware,\n defaultLabelText,\n longDateFormat,\n ]);\n\n const modifiedDates = useMemo(() => {\n if (\n typeof selectedDays === \"object\" &&\n !!selectedDays.from &&\n !!selectedDays.to\n ) {\n if (timezoneAware) {\n return {\n from: moment.unix(selectedDays.from).toDate(),\n to: moment.unix(selectedDays.to).toDate(),\n };\n }\n const offsetFrom = moment.unix(selectedDays.from).utcOffset() * 60;\n const offsetTo = moment.unix(selectedDays.to).utcOffset() * 60;\n return {\n from: new Date((selectedDays.from - offsetFrom) * 1000),\n to: new Date((selectedDays.to - offsetTo) * 1000),\n };\n }\n }, [selectedDays, timezoneAware]);\n\n const handleModifiedSave = useCallback(\n (selectedDates) => {\n setTimezoneAware(false);\n if (typeof onSave === \"function\") {\n if (\n typeof selectedDates === \"object\" &&\n Object.prototype.hasOwnProperty.call(selectedDates, \"from\") &&\n Object.prototype.hasOwnProperty.call(selectedDates, \"to\")\n ) {\n onSave({\n from: getUtcTimestampFromDate(selectedDates.from),\n to: getUtcTimestampFromDate(selectedDates.to),\n });\n } else {\n onSave(undefined);\n }\n }\n },\n [onSave]\n );\n\n const getDefaultMonth = useCallback(() => {\n let date = new Date();\n\n if (typeof selectedDays === \"object\" && !!selectedDays.from) {\n date = timezoneAware\n ? new Date(selectedDays.from * 1000)\n : new Date(\n (selectedDays.from -\n moment.unix(selectedDays.from).utcOffset() * 60) *\n 1000\n );\n } else if (defaultMonth) {\n date = defaultMonth;\n }\n\n // forcing second day in month\n return new Date(date.getFullYear(), date.getMonth(), 2);\n }, [defaultMonth, selectedDays, timezoneAware]);\n\n const [month, setMonth] = useState(getDefaultMonth);\n\n const handleMonthChange = useCallback(\n (month) => {\n setMonth(month);\n },\n [setMonth]\n );\n\n const [newDates, setNewDates] = useState(modifiedDates);\n const [showDiscardModal, setShowDiscardModal] = useState(false);\n const [showDatePicker, setShowDatePicker] = useState(defaultShowDatePicker);\n\n const disabledSaveButton = useMemo(() => {\n return (\n modifiedDates?.from === newDates?.from &&\n modifiedDates?.to === newDates?.to\n );\n }, [modifiedDates, newDates]);\n\n useEffect(() => {\n setShowDatePicker(defaultShowDatePicker);\n }, [defaultShowDatePicker]);\n\n useEffect(() => {\n modifiedDates && setNewDates(modifiedDates);\n }, [modifiedDates]);\n\n useEffect(() => {\n typeof onToggleDatePicker === \"function\" &&\n onToggleDatePicker(showDatePicker);\n }, [showDatePicker, onToggleDatePicker]);\n\n useEffect(() => {\n if (!showDatePicker) {\n setMonth(getDefaultMonth());\n }\n }, [showDatePicker, getDefaultMonth]);\n\n const handleSave = useCallback(() => {\n handleModifiedSave(newDates);\n setShowDatePicker(false);\n }, [newDates, handleModifiedSave]);\n\n const handleChange = useCallback(\n (dates) => {\n if (mode !== \"atomic\") {\n handleModifiedSave(dates);\n }\n setNewDates(dates);\n },\n [mode, handleModifiedSave]\n );\n\n const handleBeforeCloseMenu = useCallback(() => {\n let result = true;\n\n if ((modifiedDates && !newDates) || (!modifiedDates && newDates)) {\n result = false;\n }\n\n const selectedDaysFrom = modifiedDates?.from;\n const selectedDaysTo = modifiedDates?.to;\n const newDatesFrom = newDates?.from;\n const newDatesTo = newDates?.to;\n\n if (\n selectedDaysFrom &&\n newDatesFrom &&\n selectedDaysTo &&\n newDatesTo &&\n (moment(selectedDaysFrom).format(\"DD-MM-YYYY\") !==\n moment(newDatesFrom).format(\"DD-MM-YYYY\") ||\n moment(selectedDaysTo).format(\"DD-MM-YYYY\") !==\n moment(newDatesTo).format(\"DD-MM-YYYY\"))\n ) {\n result = false;\n }\n\n if (!result) {\n setShowDiscardModal(true);\n }\n\n return result;\n }, [modifiedDates, newDates]);\n\n const handleClose = useCallback(() => {\n if (mode !== \"atomic\" || handleBeforeCloseMenu()) {\n typeof onCancel === \"function\" && onCancel();\n setShowDatePicker(false);\n }\n }, [mode, onCancel, handleBeforeCloseMenu]);\n\n const handleCancel = useCallback(\n (event) => {\n event && event.preventDefault();\n return handleClose();\n },\n [handleClose]\n );\n\n const handleShowDatePicker = useCallback(() => {\n setShowDatePicker(!showDatePicker);\n }, [showDatePicker]);\n\n const handleCloseDiscardModal = useCallback(() => {\n setShowDiscardModal(false);\n }, []);\n\n const handleClear = useCallback(() => {\n if (!dateRequired) {\n setNewDates(undefined);\n if (mode === \"instant\") {\n handleModifiedSave(undefined);\n }\n }\n }, [mode, dateRequired, handleModifiedSave]);\n\n const handleSaveDiscardModal = useCallback(() => {\n setNewDates(modifiedDates);\n setShowDiscardModal(false);\n setShowDatePicker(false);\n }, [modifiedDates]);\n\n const modifiers = useMemo(() => {\n const userAvailabilities = daysToModify.filter(\n (data) => data.type === \"user_day_off\"\n );\n const globalDaysOff = daysToModify.filter(\n (data) => data.type === \"global_day_off\"\n );\n const selectableGlobalDaysOff = daysToModify.filter(\n (data) => data.type === \"selectable_global_day_off\"\n );\n\n return {\n [customClassNames.userAvailability]: (day: Date): boolean => {\n // construct new date because react-day-picker returns date with hours set\n const currentDay = new Date(\n day.getFullYear(),\n day.getMonth(),\n day.getDate()\n );\n return userAvailabilities.some((data) =>\n isDayInRange(currentDay, data)\n );\n },\n [customClassNames.weekend]: (day: Date): boolean => {\n return weekends.some((value) => day.getDay() === value);\n },\n [customClassNames.nonWorkingDay]: (day: Date): boolean => {\n // return true if day is weekend day\n if (weekends.some((value) => value === day.getDay())) {\n return true;\n }\n const nonWorkingDays = [...selectableGlobalDaysOff, ...globalDaysOff];\n const currentDay = new Date(\n day.getFullYear(),\n day.getMonth(),\n day.getDate()\n );\n return nonWorkingDays.some((data) => isDayInRange(currentDay, data));\n },\n [customClassNames.disabled]: (day: Date): boolean => {\n if (disableDaysBefore) {\n if (\n day.toJSON().slice(0, 10) < disableDaysBefore.toJSON().slice(0, 10)\n ) {\n return true;\n }\n }\n // return true if day is weekend day\n if (\n !weekendIsSelectable &&\n weekends.some((value) => value === day.getDay())\n ) {\n return true;\n }\n // construct new date because react-day-picker returns date with hours set\n const currentDay = new Date(\n day.getFullYear(),\n day.getMonth(),\n day.getDate()\n );\n return globalDaysOff.some((data) => isDayInRange(currentDay, data));\n },\n };\n }, [daysToModify, weekends, disableDaysBefore, weekendIsSelectable]);\n\n const renderDay = useCallback(\n (day: Date): ReactNode => {\n const titles: string[] = [];\n\n if (weekends.some((value) => day.getDay() === value)) {\n titles.push(weekendLabel);\n }\n\n // construct new date because react-day-picker returns date with hours set\n const currentDay = new Date(\n day.getFullYear(),\n day.getMonth(),\n day.getDate()\n );\n\n daysToModify.forEach((data) => {\n if (isDayInRange(currentDay, data)) {\n titles.push(data.title);\n }\n });\n\n const child = (\n <div className=\"c-DayPicker-Day-Number\">{day.getDate()}</div>\n );\n\n if (titles.length) {\n const title = (\n <div key={`title-wrapper-${day.getDate()}`}>\n {titles.map((title: string, index: number) => (\n <div key={`title-text-${index}`}>{title}</div>\n ))}\n </div>\n );\n\n return (\n <Tooltip\n title={title}\n popperTooltipClassName={popperTooltipClassName}\n popperTooltipStyle={popperTooltipStyle}\n >\n {child}\n </Tooltip>\n );\n }\n\n return child;\n },\n [\n weekendLabel,\n weekends,\n daysToModify,\n popperTooltipClassName,\n popperTooltipStyle,\n ]\n );\n\n const renderDatePickerForm = useCallback((): JSX.Element => {\n return (\n <DatePickerForm\n onMonthChange={handleMonthChange}\n month={month}\n mode={mode}\n selectionMode={selectionMode}\n dateRequired={dateRequired}\n selectedDays={newDates}\n firstDayOfWeek={firstDayOfWeek}\n saveButtonText={saveButtonText}\n cancelButtonText={cancelButtonText}\n clearButtonText={clearButtonText}\n onDayClick={onDayClick}\n onSave={handleSave}\n onChange={handleChange}\n onCancel={handleCancel}\n onClear={handleClear}\n disabledSaveButton={disabledSaveButton}\n modifiers={modifiers}\n renderDay={renderDay}\n />\n );\n }, [\n handleMonthChange,\n month,\n mode,\n selectionMode,\n dateRequired,\n newDates,\n firstDayOfWeek,\n saveButtonText,\n cancelButtonText,\n clearButtonText,\n onDayClick,\n handleSave,\n handleChange,\n handleCancel,\n handleClear,\n disabledSaveButton,\n modifiers,\n renderDay,\n ]);\n\n const renderTargetEl = useMemo(() => {\n if (labelType === \"icon\" && icon) {\n return (\n <SelectDateTarget\n icon={icon}\n title={tooltipText}\n targetIconClassName={targetIconClassName}\n forceHideTooltip={showDatePicker}\n popperTooltipClassName={popperTooltipClassName}\n popperTooltipStyle={popperTooltipStyle}\n active={showDatePicker}\n />\n );\n }\n if (typeof labelType === \"function\") {\n return labelType(labelText);\n }\n return (\n <StyledSelectDateButton\n type=\"button\"\n className={classnames(\"date-picker-target\", targetClassName)}\n >\n <span className={targetTextClassName}>{labelText}</span>\n </StyledSelectDateButton>\n );\n }, [\n icon,\n labelText,\n labelType,\n popperTooltipClassName,\n popperTooltipStyle,\n showDatePicker,\n targetClassName,\n targetIconClassName,\n targetTextClassName,\n tooltipText,\n ]);\n\n return (\n <StyledSelectDate className=\"select-date\">\n {labelType !== \"inline\" ? (\n <Menu\n target={renderTargetEl}\n open={showDatePicker}\n onOpen={handleShowDatePicker}\n onBeforeClose={handleBeforeCloseMenu}\n onClose={handleClose}\n position={position}\n menuClassName={menuClassName}\n popperClassName={popperClassName}\n backgroundElementClass={backgroundElementClass}\n >\n {renderDatePickerForm()}\n </Menu>\n ) : (\n renderDatePickerForm()\n )}\n {mode === \"atomic\" ? (\n <StyledConfirmDialog\n className=\"modal-select-date\"\n open={showDiscardModal}\n onCancel={handleCloseDiscardModal}\n onConfirm={handleSaveDiscardModal}\n dialogTitle={modalHeaderText}\n dialogContent={modalDiscardMessage}\n cancelBtnText={modalCancelBtnText}\n confirmBtnText={modalDiscardBtnText}\n />\n ) : null}\n </StyledSelectDate>\n );\n};\n\nSelectDate.displayName = \"SelectDate\";\n"],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import moment from "moment";
2
+ export declare type DateValue = Date | moment.Moment | number | string | undefined;
3
+ export declare const formatDate: (value: DateValue, format?: string, long?: boolean) => string;
4
+ //# sourceMappingURL=dateUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dateUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/dateUtils.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,oBAAY,SAAS,GAAG,IAAI,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;AAM3E,eAAO,MAAM,UAAU,UACd,SAAS,sCAGf,MAoBF,CAAC"}
@@ -0,0 +1,31 @@
1
+ import moment from "moment";
2
+ var getShortDateFormat = function getShortDateFormat(value) {
3
+ return value.replace(/Y|,$/gi, "").trim();
4
+ };
5
+ export var formatDate = function formatDate(value, format, long) {
6
+ if (format === void 0) {
7
+ format = "YYYY-MM-DD";
8
+ }
9
+ if (long === void 0) {
10
+ long = true;
11
+ }
12
+ if (typeof value === "undefined") {
13
+ return "";
14
+ }
15
+ var date;
16
+ var year;
17
+ if (typeof value === "number") {
18
+ date = moment.unix(value);
19
+ year = moment().utc().year();
20
+ } else {
21
+ date = moment(value);
22
+ year = moment().year();
23
+ }
24
+ if (!long) {
25
+ if (date.year() === year) {
26
+ return date.format(getShortDateFormat(format));
27
+ }
28
+ }
29
+ return date.format(format);
30
+ };
31
+ //# sourceMappingURL=dateUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dateUtils.js","names":["moment","getShortDateFormat","value","replace","trim","formatDate","format","long","date","year","unix","utc"],"sources":["../../../src/utils/dateUtils.ts"],"sourcesContent":["import moment from \"moment\";\n\nexport type DateValue = Date | moment.Moment | number | string | undefined;\n\nconst getShortDateFormat = (value) => {\n return value.replace(/Y|,$/gi, ``).trim();\n};\n\nexport const formatDate = (\n value: DateValue,\n format = \"YYYY-MM-DD\",\n long = true\n): string => {\n if (typeof value === \"undefined\") {\n return \"\";\n }\n\n let date;\n let year;\n if (typeof value === \"number\") {\n date = moment.unix(value);\n year = moment().utc().year();\n } else {\n date = moment(value);\n year = moment().year();\n }\n if (!long) {\n if (date.year() === year) {\n return date.format(getShortDateFormat(format));\n }\n }\n return date.format(format);\n};\n"],"mappings":"AAAA,OAAOA,MAAM,MAAM,QAAQ;AAI3B,IAAMC,kBAAkB,GAAG,SAArBA,kBAAkB,CAAIC,KAAK,EAAK;EACpC,OAAOA,KAAK,CAACC,OAAO,CAAC,QAAQ,KAAK,CAACC,IAAI,EAAE;AAC3C,CAAC;AAED,OAAO,IAAMC,UAAU,GAAG,SAAbA,UAAU,CACrBH,KAAgB,EAChBI,MAAM,EACNC,IAAI,EACO;EAAA,IAFXD,MAAM;IAANA,MAAM,GAAG,YAAY;EAAA;EAAA,IACrBC,IAAI;IAAJA,IAAI,GAAG,IAAI;EAAA;EAEX,IAAI,OAAOL,KAAK,KAAK,WAAW,EAAE;IAChC,OAAO,EAAE;EACX;EAEA,IAAIM,IAAI;EACR,IAAIC,IAAI;EACR,IAAI,OAAOP,KAAK,KAAK,QAAQ,EAAE;IAC7BM,IAAI,GAAGR,MAAM,CAACU,IAAI,CAACR,KAAK,CAAC;IACzBO,IAAI,GAAGT,MAAM,EAAE,CAACW,GAAG,EAAE,CAACF,IAAI,EAAE;EAC9B,CAAC,MAAM;IACLD,IAAI,GAAGR,MAAM,CAACE,KAAK,CAAC;IACpBO,IAAI,GAAGT,MAAM,EAAE,CAACS,IAAI,EAAE;EACxB;EACA,IAAI,CAACF,IAAI,EAAE;IACT,IAAIC,IAAI,CAACC,IAAI,EAAE,KAAKA,IAAI,EAAE;MACxB,OAAOD,IAAI,CAACF,MAAM,CAACL,kBAAkB,CAACK,MAAM,CAAC,CAAC;IAChD;EACF;EACA,OAAOE,IAAI,CAACF,MAAM,CAACA,MAAM,CAAC;AAC5B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=dateUtils.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dateUtils.test.d.ts","sourceRoot":"","sources":["../../../src/utils/dateUtils.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,18 @@
1
+ import { formatDate } from "./dateUtils";
2
+ describe("formatDate", function () {
3
+ var dateNowSpy;
4
+ beforeAll(function () {
5
+ // Lock Time Fri, 07 Oct 2022 12:43:40 GMT
6
+ dateNowSpy = jest.spyOn(Date, "now").mockImplementation(function () {
7
+ return 1665146620336;
8
+ });
9
+ });
10
+ afterAll(function () {
11
+ // Unlock Time
12
+ dateNowSpy.mockRestore();
13
+ });
14
+ it.each([[1660046717, "LL", true, "August 9, 2022"], [1660046717, "YYYY-MM-DD", true, "2022-08-09"], [new Date("2021-01-02"), "YYYY-MM-DD", true, "2021-01-02"], ["2021-01-02", "YYYY-MM-DD", true, "2021-01-02"], ["2021-01-02", "YYYY-MM-DD", false, "2021-01-02"], ["2022-01-02", "YYYY MM-DD", false, "01-02"], [1660046717, "MMMM. DD YYYY", false, "August. 09"], [1660046717, "MMMM. DD YYYY", true, "August. 09 2022"]])("should handle format Date", function (value, format, long, expected) {
15
+ expect(formatDate(value, format, long)).toEqual(expected);
16
+ });
17
+ });
18
+ //# sourceMappingURL=dateUtils.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dateUtils.test.js","names":["formatDate","describe","dateNowSpy","beforeAll","jest","spyOn","Date","mockImplementation","afterAll","mockRestore","it","each","value","format","long","expected","expect","toEqual"],"sources":["../../../src/utils/dateUtils.test.ts"],"sourcesContent":["import { formatDate } from \"./dateUtils\";\n\ndescribe(\"formatDate\", function () {\n let dateNowSpy;\n beforeAll(() => {\n // Lock Time Fri, 07 Oct 2022 12:43:40 GMT\n dateNowSpy = jest\n .spyOn(Date, \"now\")\n .mockImplementation(() => 1665146620336);\n });\n\n afterAll(() => {\n // Unlock Time\n dateNowSpy.mockRestore();\n });\n\n it.each([\n [1660046717, \"LL\", true, \"August 9, 2022\"],\n [1660046717, \"YYYY-MM-DD\", true, \"2022-08-09\"],\n [new Date(\"2021-01-02\"), \"YYYY-MM-DD\", true, \"2021-01-02\"],\n [\"2021-01-02\", \"YYYY-MM-DD\", true, \"2021-01-02\"],\n [\"2021-01-02\", \"YYYY-MM-DD\", false, \"2021-01-02\"],\n [\"2022-01-02\", \"YYYY MM-DD\", false, \"01-02\"],\n [1660046717, \"MMMM. DD YYYY\", false, \"August. 09\"],\n [1660046717, \"MMMM. DD YYYY\", true, \"August. 09 2022\"],\n ])(\"should handle format Date\", (value, format, long, expected) => {\n expect(formatDate(value, format, long)).toEqual(expected);\n });\n});\n"],"mappings":"AAAA,SAASA,UAAU,QAAQ,aAAa;AAExCC,QAAQ,CAAC,YAAY,EAAE,YAAY;EACjC,IAAIC,UAAU;EACdC,SAAS,CAAC,YAAM;IACd;IACAD,UAAU,GAAGE,IAAI,CACdC,KAAK,CAACC,IAAI,EAAE,KAAK,CAAC,CAClBC,kBAAkB,CAAC;MAAA,OAAM,aAAa;IAAA,EAAC;EAC5C,CAAC,CAAC;EAEFC,QAAQ,CAAC,YAAM;IACb;IACAN,UAAU,CAACO,WAAW,EAAE;EAC1B,CAAC,CAAC;EAEFC,EAAE,CAACC,IAAI,CAAC,CACN,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,gBAAgB,CAAC,EAC1C,CAAC,UAAU,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,CAAC,EAC9C,CAAC,IAAIL,IAAI,CAAC,YAAY,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,CAAC,EAC1D,CAAC,YAAY,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,CAAC,EAChD,CAAC,YAAY,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,CAAC,EACjD,CAAC,YAAY,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,CAAC,EAC5C,CAAC,UAAU,EAAE,eAAe,EAAE,KAAK,EAAE,YAAY,CAAC,EAClD,CAAC,UAAU,EAAE,eAAe,EAAE,IAAI,EAAE,iBAAiB,CAAC,CACvD,CAAC,CAAC,2BAA2B,EAAE,UAACM,KAAK,EAAEC,MAAM,EAAEC,IAAI,EAAEC,QAAQ,EAAK;IACjEC,MAAM,CAAChB,UAAU,CAACY,KAAK,EAAEC,MAAM,EAAEC,IAAI,CAAC,CAAC,CAACG,OAAO,CAACF,QAAQ,CAAC;EAC3D,CAAC,CAAC;AACJ,CAAC,CAAC"}
package/dist/index.js CHANGED
@@ -12787,6 +12787,50 @@
12787
12787
  });
12788
12788
  SelectDateTarget.displayName = "SelectDateTarget";
12789
12789
 
12790
+ var defaultParams = {
12791
+ locale: "en-US",
12792
+ dateFormat: "MMM D. YYYY",
12793
+ timeFormat: "HH:mm a",
12794
+ decimalSeparator: ".",
12795
+ thousandSeparator: ",",
12796
+ decimalRounding: 0,
12797
+ decimalSpaces: 2,
12798
+ currencyCode: "USD",
12799
+ t: function t(value) {
12800
+ return value;
12801
+ }
12802
+ };
12803
+ var LocalizationContext = /*#__PURE__*/React__default["default"].createContext(defaultParams);
12804
+ var useLocalization = function useLocalization() {
12805
+ return React__default["default"].useContext(LocalizationContext);
12806
+ };
12807
+
12808
+ var getShortDateFormat = function getShortDateFormat(value) {
12809
+ return value.replace(/Y|,$/gi, "").trim();
12810
+ };
12811
+ var formatDate = function formatDate(value) {
12812
+ var format = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "YYYY-MM-DD";
12813
+ var long = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
12814
+ if (typeof value === "undefined") {
12815
+ return "";
12816
+ }
12817
+ var date;
12818
+ var year;
12819
+ if (typeof value === "number") {
12820
+ date = moment__default["default"].unix(value);
12821
+ year = moment__default["default"]().utc().year();
12822
+ } else {
12823
+ date = moment__default["default"](value);
12824
+ year = moment__default["default"]().year();
12825
+ }
12826
+ if (!long) {
12827
+ if (date.year() === year) {
12828
+ return date.format(getShortDateFormat(format));
12829
+ }
12830
+ }
12831
+ return date.format(format);
12832
+ };
12833
+
12790
12834
  var getUtcTimestampFromDate = function getUtcTimestampFromDate(date) {
12791
12835
  return moment__default["default"].utc([date.getFullYear(), date.getMonth(), date.getDate()]).unix();
12792
12836
  };
@@ -12842,8 +12886,7 @@
12842
12886
  targetTextClassName = _ref.targetTextClassName,
12843
12887
  targetIconClassName = _ref.targetIconClassName,
12844
12888
  backgroundElementClass = _ref.backgroundElementClass,
12845
- _ref$dateFormat = _ref.dateFormat,
12846
- dateFormat = _ref$dateFormat === void 0 ? "DD MM. YYYY" : _ref$dateFormat,
12889
+ passedDateFormat = _ref.dateFormat,
12847
12890
  defaultMonth = _ref.defaultMonth,
12848
12891
  _ref$daysToModify = _ref.daysToModify,
12849
12892
  daysToModify = _ref$daysToModify === void 0 ? [] : _ref$daysToModify,
@@ -12863,15 +12906,16 @@
12863
12906
  _useState2 = _slicedToArray(_useState, 2),
12864
12907
  timezoneAware = _useState2[0],
12865
12908
  setTimezoneAware = _useState2[1];
12909
+ var localization = useLocalization();
12910
+ var dateFormat = passedDateFormat ? passedDateFormat : localization.dateFormat;
12866
12911
  var labelText = React.useMemo(function () {
12867
12912
  if (!selectedDays) {
12868
12913
  return defaultLabelText;
12869
12914
  } else {
12870
12915
  var endDate = timezoneAware ? moment__default["default"].unix(selectedDays.to).local() : moment__default["default"].unix(selectedDays.to).utc();
12871
12916
  var startDate = timezoneAware ? moment__default["default"].unix(selectedDays.from).local() : moment__default["default"].unix(selectedDays.from).utc();
12872
- var currentYear = moment__default["default"].utc().year();
12873
- var formattedEndDate = !longDateFormat && endDate.year() === currentYear ? endDate.format(dateFormat.replace(/Y|,$/gi, "").trim()) : endDate.format(dateFormat);
12874
- var formattedStartDate = !longDateFormat && startDate.year() === currentYear ? startDate.format(dateFormat.replace(/Y|,$/gi, "").trim()) : startDate.format(dateFormat);
12917
+ var formattedEndDate = formatDate(endDate, dateFormat, longDateFormat);
12918
+ var formattedStartDate = formatDate(startDate, dateFormat, longDateFormat);
12875
12919
  if (selectedDays.from === selectedDays.to) {
12876
12920
  return formattedEndDate;
12877
12921
  }
@@ -15761,7 +15805,7 @@
15761
15805
  var LengthCountStyles = styled__default["default"].div.withConfig({
15762
15806
  displayName: "Styles__LengthCountStyles",
15763
15807
  componentId: "sc-1padv46-1"
15764
- })(["align-items:center;background-color:var(--color-theme-400);block-size:", ";border-radius:100%;display:flex;inline-size:", ";justify-content:center;outline:1px solid var(--page-paper-main);z-index:99;"], function (props) {
15808
+ })(["align-items:center;background-color:var(--color-theme-400);block-size:", ";border-radius:var(--ac-br-rounded);display:flex;inline-size:", ";justify-content:center;outline:1px solid var(--page-paper-main);z-index:99;"], function (props) {
15765
15809
  return props.size + "px";
15766
15810
  }, function (props) {
15767
15811
  return props.size + "px";