@bigbinary/neeto-molecules 5.2.29 → 5.2.31

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.
@@ -1 +1 @@
1
- {"version":3,"file":"Schedule.js","sources":["../../../src/v2/components/Schedule/constants.js","../../../src/v2/components/Schedule/ScheduleContext.js","../../../src/v2/components/Schedule/dayjsExtended/constants.js","../../../src/v2/components/Schedule/Form/constants.js","../../../src/v2/components/Schedule/dayjsExtended/range.js","../../../src/v2/components/Schedule/dayjsExtended/index.js","../../../src/v2/components/Schedule/utils.js","../../../src/v2/components/Schedule/DisplayAvailability.jsx","../../../src/v2/components/Schedule/Form/utils.js","../../../src/v2/components/Schedule/Form/ScheduleRow.jsx","../../../src/v2/components/Schedule/Form/index.jsx","../../../src/v2/components/Schedule/Fields.jsx","../../../src/v2/components/Schedule/Header.jsx","../../../src/v2/components/Schedule/index.jsx"],"sourcesContent":["export const DEFAULT_BOOKED_SLOTS = [{ startTime: \"09:00\", endTime: \"17:00\" }];\n\nexport const MARK_DAY_AS_AVAILABLE_BY_DEFAULT = true;\n\nexport const DAYS = [\n \"sunday\",\n \"monday\",\n \"tuesday\",\n \"wednesday\",\n \"thursday\",\n \"friday\",\n \"saturday\",\n];\n\nexport const DEFAULT_SLOT_INTERVAL = 30;\n\nexport const HOUR_FORMATS = { H24: \"24h\", H12: \"12h\" };\nexport const DEFAULT_HOUR_FORMAT = HOUR_FORMATS.H24;\n","import { createContext } from \"react\";\n\nimport { DEFAULT_SLOT_INTERVAL, DEFAULT_HOUR_FORMAT } from \"./constants\";\n\n// To avoid prop drilling `allowAddPeriod` to `ScheduleRow` component\n// eslint-disable-next-line @bigbinary/neeto/use-zustand-for-global-state-management\nconst ScheduleContext = createContext({\n allowAddPeriod: true,\n firstDay: 0,\n slotInterval: DEFAULT_SLOT_INTERVAL,\n hourFormat: DEFAULT_HOUR_FORMAT,\n});\n\nexport default ScheduleContext;\n","export const INTERVALS = [\n \"year\",\n \"quarter\",\n \"month\",\n \"week\",\n \"day\",\n \"hour\",\n \"minute\",\n \"second\",\n];\n","import { dayjs } from \"neetocommons/utils\";\n\nexport const REMOVE_SELECT_DOWN_ARROW = {\n DropdownIndicator: () => null,\n IndicatorSeparator: () => null,\n};\n\nexport const BLUR_TEXT_WHEN_SELECT_MENU_IS_OPEN = {\n singleValue: (base, state) => ({\n ...base,\n color: state.selectProps.menuIsOpen ? \"#c2c8cc\" : base.color,\n }),\n};\n\nexport const SLOT_TIME_FORMAT = \"hh:mm A\";\nexport const SLOT_TIME_FORMAT_24H = \"HH:mm\";\n\n// eslint-disable-next-line @bigbinary/neeto/use-standard-date-time-formats\nexport const END_OF_DAY = dayjs().endOf(\"day\").format(SLOT_TIME_FORMAT_24H);\n","import { INTERVALS } from \"./constants\";\n\nimport { SLOT_TIME_FORMAT_24H } from \"../Form/constants\";\n\nexport class DayjsRange {\n constructor(startDate, endDate) {\n const { s, e } =\n startDate > endDate\n ? { s: endDate, e: startDate }\n : { s: startDate, e: endDate };\n\n this.startDate = s;\n this.endDate = e;\n }\n\n isValidRange() {\n return this.startDate.isValid() && this.endDate.isValid();\n }\n\n isOverlap(other) {\n if (!(other instanceof DayjsRange) || !other.isValidRange()) {\n return false;\n }\n\n return this.startDate < other.endDate && this.endDate > other.startDate;\n }\n\n toArrayOfTimeIntervals(interval = 15) {\n let startTime = this.startDate;\n const endTime = this.endDate.add(1, \"days\");\n const allTimes = [];\n\n while (startTime < endTime) {\n allTimes.push(startTime.format(SLOT_TIME_FORMAT_24H));\n startTime = startTime.add(interval, \"minutes\");\n }\n\n return allTimes;\n }\n}\n\nexport default (_, __, d) => {\n d.range = (start, end) => new DayjsRange(d(start), d(end));\n};\n\nexport function extendDayjs(dayjs) {\n dayjs.range = function range(start, end) {\n const dayjsObject = this;\n\n if (typeof start === \"string\" && INTERVALS.includes(start)) {\n return new DayjsRange(\n dayjs(dayjsObject).startOf(start),\n dayjs(dayjsObject).endOf(start)\n );\n }\n\n return new DayjsRange(start, end);\n };\n\n dayjs.range.constructor = DayjsRange;\n\n // Returns timeIntervals in 12 hour clock format for the whole day with both AM or PM suffixed\n dayjs.timeIntervalsForDay = interval => {\n const [startOfDay, endOfDay] = [\n dayjs().startOf(\"day\"),\n dayjs().startOf(\"day\"),\n ];\n\n return dayjs.range(startOfDay, endOfDay).toArrayOfTimeIntervals(interval);\n };\n\n return dayjs;\n}\n","import { dayjs } from \"neetocommons/utils\";\n\nimport { extendDayjs } from \"./range\";\n\n// Add range and overlap functions to dayjs\nconst dayjsExtended = extendDayjs(dayjs);\n\nexport default dayjsExtended;\n","import { ianaTimezoneToHumanReadable } from \"@bigbinary/neeto-time-zones\";\nimport i18next from \"i18next\";\nimport { findIndexBy, isNotPresent } from \"neetocist\";\nimport { dayjs } from \"neetocommons/utils\";\nimport { timeFormat } from \"neetocommons/utils/datetime\";\nimport { prop, assoc, fromPairs, map, pick } from \"ramda\";\nimport * as yup from \"yup\";\n\nimport { DAYS } from \"./constants\";\nimport dayjsExtended from \"./dayjsExtended\";\nimport { SLOT_TIME_FORMAT, SLOT_TIME_FORMAT_24H } from \"./Form/constants\";\n\nyup.addMethod(yup.array, \"ensureSlotsCantOverlap\", function () {\n return this.test(\"ensureSlotsCantOverlap\", function (periods) {\n const {\n exists: isOverlapping,\n range1,\n range2,\n } = checkForOverlapBetweenPeriods(periods);\n\n if (!isOverlapping) return true;\n\n const { firstIndex, secondIndex } = findIndicesOfOverlappingRangesInPeriods(\n { range1, range2, periods }\n );\n\n const firstError = this.createError({\n path: `${this.path}[${firstIndex}]`,\n message: i18next.t(\"neetoMolecules.schedule.errors.period.overlap\", {\n start: timeFormat.time(range2.startDate),\n end: timeFormat.time(range2.endDate),\n }),\n });\n\n const secondError = this.createError({\n path: `${this.path}[${secondIndex}]`,\n message: i18next.t(\"neetoMolecules.schedule.errors.period.overlap\", {\n start: timeFormat.time(range1.startDate),\n end: timeFormat.time(range1.endDate),\n }),\n });\n\n return new yup.ValidationError([firstError, secondError]);\n });\n});\n\nconst isFromAndToSame = (startTime, endTime) => {\n if (!startTime || !endTime) return true;\n\n return dayjs(startTime, SLOT_TIME_FORMAT_24H).isSame(\n dayjs(endTime, SLOT_TIME_FORMAT_24H)\n );\n};\n\nexport const sortDays = chosenIndex => {\n if (chosenIndex < 0 || chosenIndex >= 7) return DAYS;\n\n return [...DAYS.slice(chosenIndex), ...DAYS.slice(0, chosenIndex)];\n};\n\nexport const wdayValidation = yup.object().shape({\n periods: yup\n .array()\n .of(\n yup\n .object()\n .shape({\n startTime: yup\n .string()\n .required(\n i18next.t(\"neetoMolecules.schedule.errors.period.startTime\")\n ),\n endTime: yup\n .string()\n .required(\n i18next.t(\"neetoMolecules.schedule.errors.period.endTime\")\n )\n .test(\n \"ensureToTimeNotBehindFromTime\",\n i18next.t(\"neetoMolecules.schedule.errors.period.isBehind\"),\n function (value) {\n const { startTime } = this.parent;\n if (isFromAndToSame(value, startTime)) return true;\n\n return isTimeBehind(startTime, value);\n }\n ),\n })\n .test(\n \"ensureTimeNotSame\",\n i18next.t(\"neetoMolecules.schedule.errors.period.sameTime\"),\n value => {\n const { startTime, endTime } = value;\n\n return !isFromAndToSame(startTime, endTime);\n }\n )\n )\n .ensureSlotsCantOverlap(),\n});\n\nexport const getScheduleValidationSchema = () =>\n yup.object().shape({\n wdays: yup\n .object()\n .shape(fromPairs(map(day => [day, wdayValidation], DAYS))),\n });\n\nexport const getUserTimeZone = () => window.globalProps?.user.timeZone;\n\nexport const getTimeZoneAndTime = () => {\n const timeZone = getUserTimeZone();\n const humanReadableTimezone = ianaTimezoneToHumanReadable(timeZone);\n\n // Requires timezone initialization\n // eslint-disable-next-line @bigbinary/neeto/use-standard-date-time-formats\n return `${humanReadableTimezone}: ${dayjs()\n .tz(timeZone)\n .format(SLOT_TIME_FORMAT)}`;\n};\n\nexport const isTimeBehind = (timeA, timeB) =>\n dayjs(timeA, SLOT_TIME_FORMAT_24H).isBefore(\n dayjs(timeB, SLOT_TIME_FORMAT_24H)\n );\n\nexport const sortPeriodsByKey = ({ periods, key, order = \"desc\" }) =>\n periods.slice().sort((periodA, periodB) => {\n const isPeriodBehind = isTimeBehind(periodA[key], periodB[key]);\n if (order === \"desc\") return isPeriodBehind ? 1 : -1;\n\n return isPeriodBehind ? -1 : 1;\n });\n\n/**\n * Check for overlapping between entered periods\n * @typedef {Object} Slots\n * @property {Array<{startTime:string, endTime: string}>} periods - startTime and endTime\n * @param {Slots} periods - changed time periods\n * @return {{exists: boolean, range1: DayjsRange | null, range2:DayjsRange | null }} - overlapped ranges if exists\n */\nexport const checkForOverlapBetweenPeriods = periods => {\n let response = { exists: false, range1: null, range2: null };\n\n if (!periods?.length) return response;\n\n const slotsSortedByStartTime = sortPeriodsByKey({\n periods,\n key: \"startTime\",\n });\n for (const [index, value] of slotsSortedByStartTime.slice(0, -1).entries()) {\n const seg1 = value;\n const seg2 = slotsSortedByStartTime[index + 1];\n const range1 = dayjsExtended.range(\n dayjsExtended(seg1.startTime, SLOT_TIME_FORMAT_24H),\n dayjsExtended(seg1.endTime, SLOT_TIME_FORMAT_24H)\n );\n\n const range2 = dayjsExtended.range(\n dayjsExtended(seg2.startTime, SLOT_TIME_FORMAT_24H),\n dayjsExtended(seg2.endTime, SLOT_TIME_FORMAT_24H)\n );\n if (range1.isOverlap(range2)) {\n response = { exists: true, range1, range2 };\n break;\n }\n }\n\n return response;\n};\n\nexport const findIndicesOfOverlappingRangesInPeriods = ({\n range1,\n range2,\n periods,\n}) => {\n const firstIndex = findIndexBy(\n { startTime: range1.startDate.format(SLOT_TIME_FORMAT_24H) },\n periods\n );\n\n const secondIndex = periods.findIndex(\n (slot, index) =>\n index > firstIndex &&\n slot.startTime === range2.startDate.format(SLOT_TIME_FORMAT_24H)\n );\n\n return { firstIndex, secondIndex };\n};\n\nexport const checkIfTwoTimeZonesAreSame = (timeZone1, timeZone2) =>\n // Requires timezone initialization\n // eslint-disable-next-line @bigbinary/neeto/use-standard-date-time-formats\n dayjs().tz(timeZone1).format(\"Z\") === dayjs().tz(timeZone2).format(\"Z\");\n\nexport const handleCopy = ({ values, day, setFieldValue, wdaysToCopy }) => {\n const newPeriods = values.wdays[day].periods?.map(\n pick([\"startTime\", \"endTime\"])\n );\n\n if (isNotPresent(newPeriods)) return;\n\n wdaysToCopy.forEach(wday =>\n setFieldValue(`wdays.${wday}`, {\n available: true,\n periods: newPeriods.map(assoc(\"wday\", wday)),\n })\n );\n};\n\nexport const buildFormValuesArray = ({ firstDay, periods }) =>\n sortDays(firstDay).map(wday => ({\n periods: sortPeriodsByKey({\n periods: periods[wday],\n key: \"startTime\",\n order: \"asc\",\n }),\n available: !!periods[wday]?.length,\n wday,\n }));\n\nexport const buildFormValuesObject = ({ periods }) => {\n const formValues = {};\n\n DAYS.forEach(wday => {\n formValues[wday] = {\n periods: sortPeriodsByKey({\n periods: periods[wday],\n key: \"startTime\",\n order: \"asc\",\n }),\n available: !!periods[wday]?.length,\n wday,\n };\n });\n\n return formValues;\n};\n\nexport const processFormValues = (values, firstDay) => ({\n wdays: buildFormValuesArray({\n firstDay,\n periods: map(prop(\"periods\"), values.wdays),\n }),\n});\n\nexport const convert24hTo12h = time =>\n // eslint-disable-next-line @bigbinary/neeto/use-standard-date-time-formats\n dayjs(time, SLOT_TIME_FORMAT_24H).format(SLOT_TIME_FORMAT);\n","import { useContext } from \"react\";\n\nimport { Typography } from \"@bigbinary/neeto-atoms\";\nimport { isPresent } from \"neetocist\";\nimport { joinHyphenCase } from \"neetocommons/utils/general\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { HOUR_FORMATS } from \"./constants\";\nimport ScheduleContext from \"./ScheduleContext\";\nimport { convert24hTo12h, sortDays, sortPeriodsByKey } from \"./utils\";\n\nconst DisplayAvailability = ({ periods }) => {\n const { t } = useTranslation();\n const { firstDay, hourFormat } = useContext(ScheduleContext);\n\n const formatHour = hour => {\n if (hourFormat === HOUR_FORMATS.H24) {\n return hour;\n }\n\n return convert24hTo12h(hour);\n };\n\n return (\n <div className=\"flex w-full flex-col gap-y-3\">\n {sortDays(firstDay).map(day => (\n <div\n className=\"flex w-full flex-wrap items-center justify-center gap-2 rounded-md border border-gray-300 bg-white px-6 py-4 sm:items-start sm:justify-start\"\n data-testid={`day-cards-${day}`}\n key={day}\n >\n <Typography\n className=\"mt-0.5 w-24 text-center sm:w-1/4 sm:text-start\"\n data-testid={joinHyphenCase(day, \"day-text\")}\n variant=\"h5\"\n weight=\"semibold\"\n >\n {t(`neetoMolecules.schedule.days.${day}`)}\n </Typography>\n <div className=\"flex flex-grow flex-col items-center gap-y-4 sm:w-1/2\">\n {isPresent(periods[day]) ? (\n sortPeriodsByKey({\n periods: periods[day],\n key: \"startTime\",\n order: \"asc\",\n })?.map(period => (\n <div className=\"flex items-center gap-x-4\" key={period.id}>\n <Typography\n className=\"w-20 text-end\"\n\n variant=\"h5\"\n weight=\"semibold\"\n data-testid={joinHyphenCase(\n day,\n period.startTime,\n \"start-time-text\"\n )}\n >\n {formatHour(period.startTime)}\n </Typography>\n <Typography as=\"span\" className=\"text-gray-600\">\n -\n </Typography>\n <Typography\n className=\"w-20 text-start\"\n\n variant=\"h5\"\n weight=\"semibold\"\n data-testid={joinHyphenCase(\n day,\n period.endTime,\n \"start-time-text\"\n )}\n >\n {formatHour(period.endTime)}\n </Typography>\n </div>\n ))\n ) : (\n <Typography\n className=\"mx-8 flex-grow text-center\"\n data-testid={joinHyphenCase(day, \"unavailable-time-text\")}\n\n variant=\"h5\"\n >\n {t(\"neetoMolecules.schedule.unavailable\")}\n </Typography>\n )}\n </div>\n </div>\n ))}\n </div>\n );\n};\n\nexport default DisplayAvailability;\n","/* eslint-disable @bigbinary/neeto/use-standard-date-time-formats */\nimport { toLabelAndValue, isNotPresent, isNotEmpty } from \"neetocist\";\nimport { uniq, pluck, difference, identity } from \"ramda\";\n\nimport {\n END_OF_DAY,\n SLOT_TIME_FORMAT_24H,\n SLOT_TIME_FORMAT,\n} from \"./constants\";\n\nimport { DEFAULT_HOUR_FORMAT } from \"../constants\";\nimport dayjs from \"../dayjsExtended\";\nimport { convert24hTo12h, isTimeBehind } from \"../utils\";\n\nconst buildSlotIntervals = ({\n interval,\n bookedSlots,\n hourFormat = DEFAULT_HOUR_FORMAT,\n}) => {\n const allIntervalsForADay = dayjs.timeIntervalsForDay(interval);\n allIntervalsForADay.push(END_OF_DAY);\n\n return (slotType, selectedValue = null) => {\n const uniqBookedSlots = uniq(pluck(slotType, bookedSlots));\n const slotsAvailableForBooking = difference(\n allIntervalsForADay,\n uniqBookedSlots\n );\n let slots;\n if (hourFormat === \"12h\") {\n slots = slotsAvailableForBooking.map(value => ({\n value,\n label: convert24hTo12h(value),\n }));\n } else {\n slots = slotsAvailableForBooking.map(toLabelAndValue);\n }\n\n if (!selectedValue) return slots;\n\n const selectedSlot = {\n value: selectedValue,\n label:\n hourFormat === \"12h\" ? convert24hTo12h(selectedValue) : selectedValue,\n };\n\n return sortSlots([selectedSlot, ...slots]);\n };\n};\n\nconst sortSlots = slots =>\n slots.sort((a, b) => (isTimeBehind(a[\"value\"], b[\"value\"]) ? -1 : 1));\n\nconst slotsSelectComponentDefaultValue = slot =>\n slot ? toLabelAndValue(slot) : \"\";\n\nconst padZeroes = str => (str.length % 2 === 0 ? str : `0${str}`);\n\nconst filterSlots = (option, searchTerm) => {\n if (isNotPresent(searchTerm) || option.data.__isNew__) return true;\n\n const searchDigits = searchTerm.replaceAll(/\\D+/gi, \"\");\n const searchLetters = searchTerm.toLowerCase().replaceAll(/[^a-z]/gi, \"\");\n const paddedDigits = padZeroes(searchDigits);\n\n const label = (option.label || option.value).toLowerCase();\n const labelDigits = label.replaceAll(/\\D+/gi, \"\");\n\n const doesNumberMatch =\n option.value.replace(\":\", \"\").startsWith(paddedDigits) ||\n labelDigits.startsWith(paddedDigits);\n\n const doesAmPmMatch = !searchLetters || label.includes(searchLetters);\n\n return doesNumberMatch && doesAmPmMatch;\n};\n\nconst formatCreateLabel = identity;\n\nconst parseLooseTime = value => {\n if (!value || typeof value !== \"string\") return null;\n\n const trimmed = value.trim();\n\n // Try strict 24h format (e.g. \"14:30\")\n const parsed24h = dayjs(trimmed, SLOT_TIME_FORMAT_24H, true);\n if (parsed24h.isValid()) return parsed24h;\n\n // Try strict 12h format (e.g. \"03:00 PM\")\n const parsed12h = dayjs(trimmed, SLOT_TIME_FORMAT, true);\n if (parsed12h.isValid()) return parsed12h;\n\n // Try loose format: \"3 pm\", \"3pm\", \"3:30pm\", \"3:30 PM\", etc.\n const match = trimmed.match(/^(\\d{1,2})(?::(\\d{2}))?\\s*(am|pm|a|p)$/i);\n if (!match) return null;\n\n let hours = parseInt(match[1], 10);\n const minutes = match[2] ? parseInt(match[2], 10) : 0;\n const meridiem = match[3].toLowerCase();\n\n if (hours < 1 || hours > 12 || minutes < 0 || minutes > 59) return null;\n\n if (meridiem.startsWith(\"p\") && hours !== 12) hours += 12;\n\n if (meridiem.startsWith(\"a\") && hours === 12) hours = 0;\n\n return dayjs().hour(hours).minute(minutes).second(0);\n};\n\nconst isValidTimeSlotOption = value => parseLooseTime(value) !== null;\n\nconst formatTimeSlotOption = v => {\n let value = v || \"\";\n if (isNotEmpty(value)) {\n const parsed = parseLooseTime(value);\n if (parsed) {\n value = parsed.format(SLOT_TIME_FORMAT_24H);\n } else if (value[1] === \":\") {\n // Pad hour with 0 if single digit (legacy logic)\n value = `0${value}`;\n }\n }\n\n return value;\n};\n\nconst roundToNearestHour = time => {\n const minutes = time.minute();\n\n if (minutes === 59) return time.startOf(\"hour\").add(1, \"hour\");\n\n return time.add(1, \"hour\");\n};\n\nconst generateNewPeriod = (periods, wday) => {\n const lastEndTime = periods[periods.length - 1].endTime;\n const newStartTime = roundToNearestHour(\n dayjs(lastEndTime, SLOT_TIME_FORMAT_24H)\n );\n const newEndTime = dayjs(newStartTime, SLOT_TIME_FORMAT_24H).add(1, \"hour\");\n\n return {\n startTime: dayjs(newStartTime).format(SLOT_TIME_FORMAT_24H),\n endTime: dayjs(newEndTime).format(SLOT_TIME_FORMAT_24H),\n wday,\n };\n};\n\nconst addDefaultPeriod = wday => ({\n wday,\n startTime: dayjs().hour(9).minute(0).format(SLOT_TIME_FORMAT_24H),\n endTime: dayjs().hour(17).minute(0).format(SLOT_TIME_FORMAT_24H),\n});\n\nexport {\n buildSlotIntervals,\n slotsSelectComponentDefaultValue,\n filterSlots,\n generateNewPeriod,\n addDefaultPeriod,\n isValidTimeSlotOption,\n formatTimeSlotOption,\n formatCreateLabel,\n};\n","import { memo, useContext, useMemo } from \"react\";\n\nimport { Button } from \"@bigbinary/neeto-atoms\";\nimport { Select } from \"@bigbinary/neeto-atoms/formik\";\nimport { FieldArray, ErrorMessage, useFormikContext } from \"formik\";\nimport { isNotPresent, isPresent } from \"neetocist\";\nimport { Plus, Delete } from \"neetoicons\";\nimport { useTranslation } from \"react-i18next\";\n\nimport {\n filterSlots,\n generateNewPeriod,\n addDefaultPeriod,\n isValidTimeSlotOption,\n formatCreateLabel,\n buildSlotIntervals,\n formatTimeSlotOption,\n} from \"./utils\";\n\nimport ScheduleContext from \"../ScheduleContext\";\n\nconst ScheduleRow = ({ day }) => {\n const { values, setFieldValue } = useFormikContext();\n const bookedSlots = values.wdays[day].periods;\n\n const { allowAddPeriod, slotInterval, hourFormat } =\n useContext(ScheduleContext);\n\n const { t } = useTranslation();\n\n const sortSlotsInterval = useMemo(\n () =>\n buildSlotIntervals({ interval: slotInterval, bookedSlots, hourFormat }),\n [slotInterval, bookedSlots, hourFormat]\n );\n\n const startTimeOptions = period =>\n sortSlotsInterval(\"startTime\", period?.startTime);\n\n const endTimeOptions = period =>\n sortSlotsInterval(\"endTime\", period?.endTime);\n\n const handleChange = (index, field, selected) => {\n const value = formatTimeSlotOption(selected);\n setFieldValue(`wdays.${day}.periods[${index}].${field}`, value);\n };\n\n const handleAddRow = arrayHelpers => {\n if (isNotPresent(values.wdays[day].periods)) {\n arrayHelpers.push(addDefaultPeriod(day));\n } else {\n arrayHelpers.push(generateNewPeriod(values.wdays[day].periods, day));\n }\n setFieldValue(`wdays.${day}.available`, true);\n };\n\n const handleDeleteRow = (arrayHelpers, index) => {\n const isLastRowDeleted = values.wdays[day].periods.length === 1;\n arrayHelpers.remove(index);\n setFieldValue(`wdays.${day}.available`, !isLastRowDeleted);\n };\n\n return (\n <FieldArray\n name={`wdays.${day}.periods`}\n render={arrayHelpers => (\n <>\n {isPresent(values.wdays[day]?.periods) && (\n <div className=\"flex w-full flex-col gap-y-2\">\n {values.wdays[day].periods?.map((period, index) => (\n <div\n className=\"flex w-full flex-col @xl:mx-auto @xl:w-80\"\n key={`wdays.${day}.periods[${index}]`}\n >\n <div\n className=\"flex items-start gap-2 @xl:gap-3\"\n data-testid=\"schedule-row\"\n >\n <Select\n {...{ formatCreateLabel }}\n isClearable\n isCreatable\n isSearchable\n className=\"w-full\"\n filterOption={filterSlots}\n isValidNewOption={isValidTimeSlotOption}\n name={`wdays.${day}.periods[${index}].startTime`}\n options={startTimeOptions(period)}\n placeholder={t(\"neetoMolecules.schedule.startTime\")}\n value={period?.startTime}\n onChange={value =>\n handleChange(index, \"startTime\", value)\n }\n />\n <Select\n {...{ formatCreateLabel }}\n isClearable\n isCreatable\n isSearchable\n className=\"w-full\"\n filterOption={filterSlots}\n isValidNewOption={isValidTimeSlotOption}\n name={`wdays.${day}.periods[${index}].endTime`}\n options={endTimeOptions(period)}\n placeholder={t(\"neetoMolecules.schedule.endTime\")}\n value={period?.endTime}\n onChange={value => handleChange(index, \"endTime\", value)}\n />\n <Button\n className=\"flex-shrink-0 self-start\"\n data-testid=\"delete-period-button\"\n icon={Delete}\n variant=\"ghost\"\n onClick={() => handleDeleteRow(arrayHelpers, index)}\n />\n </div>\n <ErrorMessage name={`wdays.${day}.periods[${index}]`}>\n {message =>\n typeof message !== \"object\" && (\n <span className=\"text-error-500 mt-1 w-11/12 px-2 text-xs\">\n {message}\n </span>\n )\n }\n </ErrorMessage>\n </div>\n ))}\n </div>\n )}\n {values.wdays[day].available && allowAddPeriod && (\n <Button\n className=\"absolute end-14 top-3 ms-auto flex-shrink-0 @xl:static\"\n data-testid=\"add-new-period-button\"\n icon={Plus}\n variant=\"secondary\"\n tooltipProps={{\n content: t(\"neetoMolecules.schedule.addNewPeriod\"),\n position: \"top\",\n hideAfter: 5000,\n touch: [\"hold\", 500],\n }}\n onClick={() => handleAddRow(arrayHelpers)}\n />\n )}\n </>\n )}\n />\n );\n};\n\nexport default memo(ScheduleRow);\n","import { memo, useContext, useState } from \"react\";\n\nimport {\n Typography,\n DropdownMenu,\n Button,\n Label,\n Checkbox,\n} from \"@bigbinary/neeto-atoms\";\nimport { Switch } from \"@bigbinary/neeto-atoms/formik\";\nimport classnames from \"classnames\";\nimport { useFormikContext } from \"formik\";\nimport { isNotPresent, isPresent } from \"neetocist\";\nimport { joinHyphenCase } from \"neetocommons/utils/general\";\nimport { Copy } from \"neetoicons\";\nimport { append, identity, without } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport ScheduleRow from \"./ScheduleRow\";\nimport { addDefaultPeriod } from \"./utils\";\n\nimport ScheduleContext from \"../ScheduleContext\";\nimport { handleCopy, sortDays } from \"../utils\";\n\nconst Form = ({ day }) => {\n const [deletedPeriods, setDeletedPeriods] = useState([]);\n const [wdaysToCopy, setWdaysToCopy] = useState([]);\n\n const { values, setFieldValue } = useFormikContext();\n\n const { t } = useTranslation();\n const { firstDay } = useContext(ScheduleContext);\n\n const restoreDeletedPeriods = () => {\n setFieldValue(`wdays.${day}.periods`, deletedPeriods);\n };\n\n const uncheckCheckbox = () => {\n setFieldValue(`wdays.${day}.available`, false);\n setFieldValue(`wdays.${day}.periods`, []);\n if (values.wdays[day].periods[0]?.id) {\n setDeletedPeriods(\n values.wdays[day].periods\n .filter(item => item.startTime && item.endTime)\n .map(identity)\n );\n }\n };\n\n const checkCheckbox = () => {\n setFieldValue(`wdays.${day}.available`, true);\n if (deletedPeriods[0]?.startTime) {\n restoreDeletedPeriods(setFieldValue);\n } else if (isNotPresent(values.wdays[day].periods)) {\n setFieldValue(`wdays.${day}.periods`, [addDefaultPeriod(day)]);\n } else {\n setFieldValue(`wdays.${day}.periods`, [\"\"]);\n }\n };\n\n const handleCheckbox = () => {\n if (values.wdays[day].available) {\n uncheckCheckbox();\n } else {\n checkCheckbox();\n }\n };\n\n const handleCopyChange = (checked, day) =>\n setWdaysToCopy(checked ? append(day) : without([day]));\n\n return (\n <div className=\"@container relative mb-3 w-full rounded-md border border-gray-300 bg-white px-4 last:mb-0 md:px-6\">\n <div\n className=\"@xl:flex-no-wrap my-4 flex w-full flex-wrap items-start gap-2 @xl:flex-nowrap @xl:gap-4\" // Added `@xl:flex-no-wrap` since neetoCal is using old version of tailwind\n data-testid=\"working-day-container\"\n >\n <div\n className={classnames(\n \"flex w-36 flex-shrink-0 items-center justify-start @xl:mt-1\",\n { \"mb-3 @xl:mb-0\": isPresent(values.wdays[day]?.periods) }\n )}\n >\n <Switch\n aria-label={`wdays.${day}.available`}\n checked={values.wdays[day].available}\n className=\"flex-grow-0\"\n data-testid={joinHyphenCase(day, \"weekly-hours-checkbox\")}\n id=\"day\"\n name={`wdays.${day}.available`}\n onCheckedChange={handleCheckbox}\n />\n <Typography\n as=\"span\"\n data-testid={joinHyphenCase(day, \"day-text\")}\n variant=\"body2\"\n weight={values.wdays[day].available ? \"semibold\" : \"normal\"}\n className={classnames(\"ms-2 capitalize\", {\n \"text-gray-600\": !values.wdays[day].available,\n })}\n >\n {t(`neetoMolecules.schedule.days.${day}`)}\n </Typography>\n </div>\n <ScheduleRow {...{ day }} />\n {values.wdays[day].available && (\n <DropdownMenu\n closeOnSelect\n icon={Copy}\n position=\"right-start\"\n buttonProps={{\n variant: \"secondary\",\n tooltipProps: {\n content: t(\"neetoMolecules.schedule.copyScheduleTooltip\"),\n position: \"top\",\n hideAfter: 5000,\n touch: [\"hold\", 500],\n },\n className: \"absolute end-4 top-3 @xl:static flex-shrink-0\",\n \"data-testid\": joinHyphenCase(day, \"copy-schedule-icon\"),\n }}\n dropdownProps={{\n className: \"dropdown__popup neeto-molecules-schedule__dropdown\",\n }}\n onClose={() => setWdaysToCopy([])}\n >\n <li>\n <Typography variant=\"h5\">\n {t(\"neetoMolecules.schedule.copySchedule\")}\n </Typography>\n </li>\n {sortDays(firstDay)\n .filter(copyDay => copyDay !== day)\n .map(day => (\n <li key={day} onClick={e => e.stopPropagation()}>\n <Label className=\"w-full cursor-pointer capitalize\">\n <Checkbox\n checked={wdaysToCopy.includes(day)}\n id={day}\n label={t(`neetoMolecules.schedule.days.${day}`)}\n onCheckedChange={checked =>\n handleCopyChange(checked, day)\n }\n />\n </Label>\n </li>\n ))}\n <li>\n <Button\n data-testid=\"copy-schedule-submit-button\"\n disabled={isNotPresent(wdaysToCopy)}\n label={t(\"neetoMolecules.common.actions.submit\")}\n size=\"sm\"\n onClick={() => {\n handleCopy({ values, day, setFieldValue, wdaysToCopy });\n setWdaysToCopy([]);\n }}\n />\n </li>\n </DropdownMenu>\n )}\n </div>\n </div>\n );\n};\n\nexport default memo(Form);\n","import { useContext, useEffect, useImperativeHandle } from \"react\";\n\nimport { useFormikContext } from \"formik\";\n\nimport Form from \"./Form\";\nimport ScheduleContext from \"./ScheduleContext\";\nimport { processFormValues, sortDays } from \"./utils\";\n\nconst Fields = ({ handleValuesChanged, scheduleRef }) => {\n const { firstDay } = useContext(ScheduleContext);\n const formikBag = useFormikContext();\n\n const { values, resetForm, errors } = formikBag;\n\n useEffect(() => {\n handleValuesChanged(processFormValues(values, firstDay), formikBag);\n }, [values]);\n\n useImperativeHandle(scheduleRef, () => ({ resetForm, errors }));\n\n return sortDays(firstDay).map(wday => <Form day={wday} key={wday} />);\n};\n\nexport default Fields;\n","import { useState, useEffect } from \"react\";\n\nimport { Button, Typography, Tooltip } from \"@bigbinary/neeto-atoms\";\nimport { useFormikContext } from \"formik\";\nimport { Profile } from \"neetoteam/v2\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { getTimeZoneAndTime } from \"./utils\";\n\nimport MoreDropdown from \"../MoreDropdown\";\n\nconst Header = ({\n isCreating,\n isEditable,\n isEditing,\n setIsEditing,\n showTimeZone = true,\n}) => {\n const { dirty, resetForm, submitForm, isSubmitting } = useFormikContext();\n const { t } = useTranslation();\n const [timeZoneAndTime, setTimeZoneAndTime] = useState(getTimeZoneAndTime());\n const [_, setIsProfilePaneOpen] = Profile.usePaneState();\n\n const handleReset = () => {\n if (dirty) resetForm();\n else setIsEditing(false);\n };\n\n useEffect(() => {\n const time = setInterval(() => {\n setTimeZoneAndTime(getTimeZoneAndTime());\n }, 30000);\n\n return () => clearInterval(time);\n }, []);\n\n return (\n <div className=\"mb-6 flex flex-wrap justify-between gap-2\">\n {showTimeZone && (\n <div\n className=\"flex items-center gap-3\"\n data-testid=\"schedule-timezone-header\"\n >\n <Tooltip\n content={t(\"neetoMolecules.schedule.timezoneTooltip\")}\n position=\"bottom\"\n touch={[\"hold\", 500]}\n >\n <Typography\n as=\"h4\"\n data-testid=\"timezone-text\"\n variant=\"h5\"\n weight=\"medium\"\n >\n {timeZoneAndTime}\n </Typography>\n </Tooltip>\n {isEditable && (\n <MoreDropdown\n dropdownButtonProps={{ \"data-testid\": \"nui-more-dropdown\" }}\n menuItems={[\n {\n onClick: () => setIsProfilePaneOpen(true),\n label: t(\"neetoMolecules.common.actions.changeTimezone\"),\n target: \"_blank\",\n key: \"change-timezone-option\",\n \"data-testid\": \"change-timezone-option\",\n },\n ]}\n />\n )}\n </div>\n )}\n {isEditing ? (\n <div className=\"flex items-center gap-2\">\n <Button\n data-testid=\"reset-button\"\n variant=\"secondary\"\n label={\n !dirty\n ? t(\"neetoMolecules.common.actions.cancel\")\n : t(\"neetoMolecules.common.actions.reset\")\n }\n onClick={handleReset}\n />\n <Button\n data-testid=\"weekly-hours-save-changes-button\"\n disabled={(!dirty && !isCreating) || isSubmitting}\n label={t(\"neetoMolecules.common.actions.saveChanges\")}\n loading={isSubmitting}\n onClick={submitForm}\n />\n </div>\n ) : (\n isEditable && (\n <div>\n <Button\n data-testid=\"weekly-schedule-header\"\n label={t(\"neetoMolecules.schedule.changeAvailability\")}\n variant=\"default\"\n weight=\"semibold\"\n onClick={() => setIsEditing(true)}\n />\n </div>\n )\n )}\n </div>\n );\n};\n\nexport default Header;\n","import { forwardRef, useMemo } from \"react\";\n\nimport { Formik, Form as FormikForm } from \"formik\";\nimport { noop } from \"neetocist\";\nimport PropTypes from \"prop-types\";\n\nimport {\n DEFAULT_HOUR_FORMAT,\n DEFAULT_SLOT_INTERVAL,\n HOUR_FORMATS,\n} from \"./constants\";\nimport DisplayAvailability from \"./DisplayAvailability\";\nimport Fields from \"./Fields\";\nimport {\n buildSlotIntervals,\n slotsSelectComponentDefaultValue,\n filterSlots,\n generateNewPeriod,\n addDefaultPeriod,\n isValidTimeSlotOption,\n formatTimeSlotOption,\n formatCreateLabel,\n} from \"./Form/utils\";\nimport Header from \"./Header\";\nimport \"./schedule.scss\";\nimport ScheduleContext from \"./ScheduleContext\";\nimport {\n buildFormValuesArray,\n buildFormValuesObject,\n getScheduleValidationSchema,\n processFormValues,\n} from \"./utils\";\n\nconst Schedule = forwardRef(\n (\n {\n periods,\n handleSubmit = noop,\n isEditing = false,\n setIsEditing,\n showHeader = true,\n handleValuesChanged = noop,\n allowAddPeriod = true,\n isEditable = true,\n isCreating = false,\n firstDay = 1,\n showTimeZone = true,\n slotInterval = DEFAULT_SLOT_INTERVAL,\n hourFormat = DEFAULT_HOUR_FORMAT,\n },\n scheduleRef\n ) => {\n const validationSchema = useMemo(getScheduleValidationSchema, []);\n\n const getInitialFormValues = (isSubmitHandler = false) => {\n if (isSubmitHandler) {\n return buildFormValuesArray({ firstDay, periods });\n }\n\n return buildFormValuesObject({ periods });\n };\n\n return (\n <ScheduleContext.Provider\n value={{ allowAddPeriod, firstDay, slotInterval, hourFormat }}\n >\n <div className=\"neeto-molecules-schedule flex-shrink-0 border-gray-200\">\n <Formik\n {...{ validationSchema }}\n enableReinitialize\n initialValues={{ wdays: getInitialFormValues() }}\n onSubmit={values => {\n handleSubmit(\n processFormValues(values, firstDay),\n getInitialFormValues(true)\n );\n }}\n >\n <>\n {showHeader && (\n <Header\n {...{\n isCreating,\n isEditable,\n isEditing,\n setIsEditing,\n showTimeZone,\n }}\n />\n )}\n {isEditing || !showHeader ? (\n <FormikForm>\n <Fields {...{ handleValuesChanged, scheduleRef }} />\n </FormikForm>\n ) : (\n <DisplayAvailability {...{ periods }} />\n )}\n </>\n </Formik>\n </div>\n </ScheduleContext.Provider>\n );\n }\n);\n\nSchedule.displayName = \"Schedule\";\n\nSchedule.propTypes = {\n /**\n * Periods data for days of the week.\n */\n periods: PropTypes.shape({\n sunday: PropTypes.array,\n monday: PropTypes.array,\n tuesday: PropTypes.array,\n wednesday: PropTypes.array,\n thursday: PropTypes.array,\n friday: PropTypes.array,\n saturday: PropTypes.array,\n }),\n /**\n * The function to be called on save changes action.\n */\n handleSubmit: PropTypes.func,\n /**\n * State value to show form for editing.\n */\n isEditing: PropTypes.bool,\n /**\n * Setter function to toggle `isEditing` state.\n */\n setIsEditing: PropTypes.func,\n /**\n * Flag to display or hide header. If set to false, component will open in editing state.\n */\n showHeader: PropTypes.bool,\n /**\n * Callback function called when values are changed within form.\n */\n handleValuesChanged: PropTypes.func,\n /**\n * Flag to allow adding new periods. If set to false, Add new period button will be hidden.\n */\n allowAddPeriod: PropTypes.bool,\n /**\n * Flag to control the ability to edit the schedule and timezone. When set to false, periods and timezone cannot be edited.\n */\n isEditable: PropTypes.bool,\n /**\n * Flag to control the ability to submit the schedule without changing initial values. When set to false, Schedule can only be submitted once the initial values are changed.\n */\n isCreating: PropTypes.bool,\n /**\n * Integer prop to choose which day of the week to display first in the component. Defaults to 1(Monday).\n */\n firstDay: PropTypes.number,\n /**\n * Flag to display or hide the current timezone in the header. Defaults to true.\n */\n showTimeZone: PropTypes.bool,\n /**\n * Integer prop to specify the time (in minutes) taken by each slot. Defaults to 30 minutes.\n */\n slotInterval: PropTypes.number,\n /**\n * String prop to specify the hour format (24h/12h). Defaults to 24h.\n */\n hourFormat: PropTypes.oneOf(Object.values(HOUR_FORMATS)),\n};\n\nexport default Schedule;\n\nexport {\n buildSlotIntervals,\n slotsSelectComponentDefaultValue,\n filterSlots,\n generateNewPeriod,\n addDefaultPeriod,\n isValidTimeSlotOption,\n formatTimeSlotOption,\n formatCreateLabel,\n};\n"],"names":["DAYS","DEFAULT_SLOT_INTERVAL","HOUR_FORMATS","H24","DEFAULT_HOUR_FORMAT","ScheduleContext","createContext","allowAddPeriod","firstDay","slotInterval","hourFormat","INTERVALS","SLOT_TIME_FORMAT","SLOT_TIME_FORMAT_24H","END_OF_DAY","dayjs","endOf","format","DayjsRange","startDate","endDate","_classCallCheck","_ref","s","e","_createClass","key","value","isValidRange","isValid","isOverlap","other","toArrayOfTimeIntervals","interval","arguments","length","undefined","startTime","endTime","add","allTimes","push","extendDayjs","range","start","end","dayjsObject","includes","startOf","constructor","timeIntervalsForDay","_ref2","startOfDay","endOfDay","dayjsExtended","yup","addMethod","array","test","periods","_checkForOverlapBetwe","checkForOverlapBetweenPeriods","isOverlapping","exists","range1","range2","_findIndicesOfOverlap","findIndicesOfOverlappingRangesInPeriods","firstIndex","secondIndex","firstError","createError","path","concat","message","i18next","t","timeFormat","time","secondError","ValidationError","isFromAndToSame","isSame","sortDays","chosenIndex","_toConsumableArray","slice","wdayValidation","object","shape","of","string","required","parent","isTimeBehind","ensureSlotsCantOverlap","getScheduleValidationSchema","wdays","fromPairs","map","day","getUserTimeZone","_window$globalProps","window","globalProps","user","timeZone","getTimeZoneAndTime","humanReadableTimezone","ianaTimezoneToHumanReadable","tz","timeA","timeB","isBefore","sortPeriodsByKey","_ref$order","order","sort","periodA","periodB","isPeriodBehind","response","slotsSortedByStartTime","_iterator","_createForOfIteratorHelper","entries","_step","n","done","_step$value","_slicedToArray","index","seg1","seg2","err","f","findIndexBy","findIndex","slot","handleCopy","_ref3","_values$wdays$day$per","values","setFieldValue","wdaysToCopy","newPeriods","pick","isNotPresent","forEach","wday","available","assoc","buildFormValuesArray","_ref4","_periods$wday","buildFormValuesObject","_ref5","formValues","_periods$wday2","processFormValues","prop","convert24hTo12h","DisplayAvailability","_useTranslation","useTranslation","_useContext","useContext","formatHour","hour","_jsx","className","children","_sortPeriodsByKey","_jsxs","Typography","joinHyphenCase","variant","weight","isPresent","period","as","id","buildSlotIntervals","bookedSlots","_ref$hourFormat","allIntervalsForADay","slotType","selectedValue","uniqBookedSlots","uniq","pluck","slotsAvailableForBooking","difference","slots","label","toLabelAndValue","selectedSlot","sortSlots","a","b","slotsSelectComponentDefaultValue","padZeroes","str","filterSlots","option","searchTerm","data","__isNew__","searchDigits","replaceAll","searchLetters","toLowerCase","paddedDigits","labelDigits","doesNumberMatch","replace","startsWith","doesAmPmMatch","formatCreateLabel","identity","parseLooseTime","trimmed","trim","parsed24h","parsed12h","match","hours","parseInt","minutes","meridiem","minute","second","isValidTimeSlotOption","formatTimeSlotOption","v","isNotEmpty","parsed","roundToNearestHour","generateNewPeriod","lastEndTime","newStartTime","newEndTime","addDefaultPeriod","ScheduleRow","_useFormikContext","useFormikContext","sortSlotsInterval","useMemo","startTimeOptions","endTimeOptions","handleChange","field","selected","handleAddRow","arrayHelpers","handleDeleteRow","isLastRowDeleted","remove","FieldArray","name","render","_values$wdays$day","_Fragment","Select","isClearable","isCreatable","isSearchable","filterOption","isValidNewOption","options","placeholder","onChange","Button","icon","Delete","onClick","ErrorMessage","_typeof","Plus","tooltipProps","content","position","hideAfter","touch","memo","Form","_useState","useState","_useState2","deletedPeriods","setDeletedPeriods","_useState3","_useState4","setWdaysToCopy","restoreDeletedPeriods","uncheckCheckbox","filter","item","checkCheckbox","_deletedPeriods$","handleCheckbox","handleCopyChange","checked","append","without","classnames","Switch","onCheckedChange","DropdownMenu","closeOnSelect","Copy","buttonProps","dropdownProps","onClose","copyDay","stopPropagation","Label","Checkbox","disabled","size","Fields","handleValuesChanged","scheduleRef","formikBag","resetForm","errors","useEffect","useImperativeHandle","Header","isCreating","isEditable","isEditing","setIsEditing","_ref$showTimeZone","showTimeZone","dirty","submitForm","isSubmitting","timeZoneAndTime","setTimeZoneAndTime","_Profile$usePaneState","Profile","usePaneState","_Profile$usePaneState2","_","setIsProfilePaneOpen","handleReset","setInterval","clearInterval","Tooltip","MoreDropdown","dropdownButtonProps","menuItems","target","loading","Schedule","forwardRef","_ref$handleSubmit","handleSubmit","noop","_ref$isEditing","_ref$showHeader","showHeader","_ref$handleValuesChan","_ref$allowAddPeriod","_ref$isEditable","_ref$isCreating","_ref$firstDay","_ref$slotInterval","validationSchema","getInitialFormValues","isSubmitHandler","Provider","Formik","enableReinitialize","initialValues","onSubmit","FormikForm","displayName"],"mappings":"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"}
1
+ {"version":3,"file":"Schedule.js","sources":["../../../src/v2/components/Schedule/constants.js","../../../src/v2/components/Schedule/ScheduleContext.js","../../../src/v2/components/Schedule/dayjsExtended/constants.js","../../../src/v2/components/Schedule/Form/constants.js","../../../src/v2/components/Schedule/dayjsExtended/range.js","../../../src/v2/components/Schedule/dayjsExtended/index.js","../../../src/v2/components/Schedule/utils.js","../../../src/v2/components/Schedule/DisplayAvailability.jsx","../../../src/v2/components/Schedule/Form/utils.js","../../../src/v2/components/Schedule/Form/ScheduleRow.jsx","../../../src/v2/components/Schedule/Form/index.jsx","../../../src/v2/components/Schedule/Fields.jsx","../../../src/v2/components/Schedule/Header.jsx","../../../src/v2/components/Schedule/index.jsx"],"sourcesContent":["export const DEFAULT_BOOKED_SLOTS = [{ startTime: \"09:00\", endTime: \"17:00\" }];\n\nexport const MARK_DAY_AS_AVAILABLE_BY_DEFAULT = true;\n\nexport const DAYS = [\n \"sunday\",\n \"monday\",\n \"tuesday\",\n \"wednesday\",\n \"thursday\",\n \"friday\",\n \"saturday\",\n];\n\nexport const DEFAULT_SLOT_INTERVAL = 30;\n\nexport const HOUR_FORMATS = { H24: \"24h\", H12: \"12h\" };\nexport const DEFAULT_HOUR_FORMAT = HOUR_FORMATS.H24;\n","import { createContext } from \"react\";\n\nimport { DEFAULT_SLOT_INTERVAL, DEFAULT_HOUR_FORMAT } from \"./constants\";\n\n// To avoid prop drilling `allowAddPeriod` to `ScheduleRow` component\n// eslint-disable-next-line @bigbinary/neeto/use-zustand-for-global-state-management\nconst ScheduleContext = createContext({\n allowAddPeriod: true,\n firstDay: 0,\n slotInterval: DEFAULT_SLOT_INTERVAL,\n hourFormat: DEFAULT_HOUR_FORMAT,\n});\n\nexport default ScheduleContext;\n","export const INTERVALS = [\n \"year\",\n \"quarter\",\n \"month\",\n \"week\",\n \"day\",\n \"hour\",\n \"minute\",\n \"second\",\n];\n","import { dayjs } from \"neetocommons/utils\";\n\nexport const REMOVE_SELECT_DOWN_ARROW = {\n DropdownIndicator: () => null,\n IndicatorSeparator: () => null,\n};\n\nexport const BLUR_TEXT_WHEN_SELECT_MENU_IS_OPEN = {\n singleValue: (base, state) => ({\n ...base,\n color: state.selectProps.menuIsOpen ? \"#c2c8cc\" : base.color,\n }),\n};\n\nexport const SLOT_TIME_FORMAT = \"hh:mm A\";\nexport const SLOT_TIME_FORMAT_24H = \"HH:mm\";\n\n// eslint-disable-next-line @bigbinary/neeto/use-standard-date-time-formats\nexport const END_OF_DAY = dayjs().endOf(\"day\").format(SLOT_TIME_FORMAT_24H);\n","import { INTERVALS } from \"./constants\";\n\nimport { SLOT_TIME_FORMAT_24H } from \"../Form/constants\";\n\nexport class DayjsRange {\n constructor(startDate, endDate) {\n const { s, e } =\n startDate > endDate\n ? { s: endDate, e: startDate }\n : { s: startDate, e: endDate };\n\n this.startDate = s;\n this.endDate = e;\n }\n\n isValidRange() {\n return this.startDate.isValid() && this.endDate.isValid();\n }\n\n isOverlap(other) {\n if (!(other instanceof DayjsRange) || !other.isValidRange()) {\n return false;\n }\n\n return this.startDate < other.endDate && this.endDate > other.startDate;\n }\n\n toArrayOfTimeIntervals(interval = 15) {\n let startTime = this.startDate;\n const endTime = this.endDate.add(1, \"days\");\n const allTimes = [];\n\n while (startTime < endTime) {\n allTimes.push(startTime.format(SLOT_TIME_FORMAT_24H));\n startTime = startTime.add(interval, \"minutes\");\n }\n\n return allTimes;\n }\n}\n\nexport default (_, __, d) => {\n d.range = (start, end) => new DayjsRange(d(start), d(end));\n};\n\nexport function extendDayjs(dayjs) {\n dayjs.range = function range(start, end) {\n const dayjsObject = this;\n\n if (typeof start === \"string\" && INTERVALS.includes(start)) {\n return new DayjsRange(\n dayjs(dayjsObject).startOf(start),\n dayjs(dayjsObject).endOf(start)\n );\n }\n\n return new DayjsRange(start, end);\n };\n\n dayjs.range.constructor = DayjsRange;\n\n // Returns timeIntervals in 12 hour clock format for the whole day with both AM or PM suffixed\n dayjs.timeIntervalsForDay = interval => {\n const [startOfDay, endOfDay] = [\n dayjs().startOf(\"day\"),\n dayjs().startOf(\"day\"),\n ];\n\n return dayjs.range(startOfDay, endOfDay).toArrayOfTimeIntervals(interval);\n };\n\n return dayjs;\n}\n","import { dayjs } from \"neetocommons/utils\";\n\nimport { extendDayjs } from \"./range\";\n\n// Add range and overlap functions to dayjs\nconst dayjsExtended = extendDayjs(dayjs);\n\nexport default dayjsExtended;\n","import { ianaTimezoneToHumanReadable } from \"@bigbinary/neeto-time-zones\";\nimport i18next from \"i18next\";\nimport { findIndexBy, isNotPresent } from \"neetocist\";\nimport { dayjs } from \"neetocommons/utils\";\nimport { timeFormat } from \"neetocommons/utils/datetime\";\nimport { prop, assoc, fromPairs, map, pick } from \"ramda\";\nimport * as yup from \"yup\";\n\nimport { DAYS } from \"./constants\";\nimport dayjsExtended from \"./dayjsExtended\";\nimport { SLOT_TIME_FORMAT, SLOT_TIME_FORMAT_24H } from \"./Form/constants\";\n\nyup.addMethod(yup.array, \"ensureSlotsCantOverlap\", function () {\n return this.test(\"ensureSlotsCantOverlap\", function (periods) {\n const {\n exists: isOverlapping,\n range1,\n range2,\n } = checkForOverlapBetweenPeriods(periods);\n\n if (!isOverlapping) return true;\n\n const { firstIndex, secondIndex } = findIndicesOfOverlappingRangesInPeriods(\n { range1, range2, periods }\n );\n\n const firstError = this.createError({\n path: `${this.path}[${firstIndex}]`,\n message: i18next.t(\"neetoMolecules.schedule.errors.period.overlap\", {\n start: timeFormat.time(range2.startDate),\n end: timeFormat.time(range2.endDate),\n }),\n });\n\n const secondError = this.createError({\n path: `${this.path}[${secondIndex}]`,\n message: i18next.t(\"neetoMolecules.schedule.errors.period.overlap\", {\n start: timeFormat.time(range1.startDate),\n end: timeFormat.time(range1.endDate),\n }),\n });\n\n return new yup.ValidationError([firstError, secondError]);\n });\n});\n\nconst isFromAndToSame = (startTime, endTime) => {\n if (!startTime || !endTime) return true;\n\n return dayjs(startTime, SLOT_TIME_FORMAT_24H).isSame(\n dayjs(endTime, SLOT_TIME_FORMAT_24H)\n );\n};\n\nexport const sortDays = chosenIndex => {\n if (chosenIndex < 0 || chosenIndex >= 7) return DAYS;\n\n return [...DAYS.slice(chosenIndex), ...DAYS.slice(0, chosenIndex)];\n};\n\nexport const wdayValidation = yup.object().shape({\n periods: yup\n .array()\n .of(\n yup\n .object()\n .shape({\n startTime: yup\n .string()\n .required(\n i18next.t(\"neetoMolecules.schedule.errors.period.startTime\")\n ),\n endTime: yup\n .string()\n .required(\n i18next.t(\"neetoMolecules.schedule.errors.period.endTime\")\n )\n .test(\n \"ensureToTimeNotBehindFromTime\",\n i18next.t(\"neetoMolecules.schedule.errors.period.isBehind\"),\n function (value) {\n const { startTime } = this.parent;\n if (isFromAndToSame(value, startTime)) return true;\n\n return isTimeBehind(startTime, value);\n }\n ),\n })\n .test(\n \"ensureTimeNotSame\",\n i18next.t(\"neetoMolecules.schedule.errors.period.sameTime\"),\n value => {\n const { startTime, endTime } = value;\n\n return !isFromAndToSame(startTime, endTime);\n }\n )\n )\n .ensureSlotsCantOverlap(),\n});\n\nexport const getScheduleValidationSchema = () =>\n yup.object().shape({\n wdays: yup\n .object()\n .shape(fromPairs(map(day => [day, wdayValidation], DAYS))),\n });\n\nexport const getUserTimeZone = () => window.globalProps?.user.timeZone;\n\nexport const getTimeZoneAndTime = () => {\n const timeZone = getUserTimeZone();\n const humanReadableTimezone = ianaTimezoneToHumanReadable(timeZone);\n\n // Requires timezone initialization\n // eslint-disable-next-line @bigbinary/neeto/use-standard-date-time-formats\n return `${humanReadableTimezone}: ${dayjs()\n .tz(timeZone)\n .format(SLOT_TIME_FORMAT)}`;\n};\n\nexport const isTimeBehind = (timeA, timeB) =>\n dayjs(timeA, SLOT_TIME_FORMAT_24H).isBefore(\n dayjs(timeB, SLOT_TIME_FORMAT_24H)\n );\n\nexport const sortPeriodsByKey = ({ periods, key, order = \"desc\" }) =>\n periods.slice().sort((periodA, periodB) => {\n const isPeriodBehind = isTimeBehind(periodA[key], periodB[key]);\n if (order === \"desc\") return isPeriodBehind ? 1 : -1;\n\n return isPeriodBehind ? -1 : 1;\n });\n\n/**\n * Check for overlapping between entered periods\n * @typedef {Object} Slots\n * @property {Array<{startTime:string, endTime: string}>} periods - startTime and endTime\n * @param {Slots} periods - changed time periods\n * @return {{exists: boolean, range1: DayjsRange | null, range2:DayjsRange | null }} - overlapped ranges if exists\n */\nexport const checkForOverlapBetweenPeriods = periods => {\n let response = { exists: false, range1: null, range2: null };\n\n if (!periods?.length) return response;\n\n const slotsSortedByStartTime = sortPeriodsByKey({\n periods,\n key: \"startTime\",\n });\n for (const [index, value] of slotsSortedByStartTime.slice(0, -1).entries()) {\n const seg1 = value;\n const seg2 = slotsSortedByStartTime[index + 1];\n const range1 = dayjsExtended.range(\n dayjsExtended(seg1.startTime, SLOT_TIME_FORMAT_24H),\n dayjsExtended(seg1.endTime, SLOT_TIME_FORMAT_24H)\n );\n\n const range2 = dayjsExtended.range(\n dayjsExtended(seg2.startTime, SLOT_TIME_FORMAT_24H),\n dayjsExtended(seg2.endTime, SLOT_TIME_FORMAT_24H)\n );\n if (range1.isOverlap(range2)) {\n response = { exists: true, range1, range2 };\n break;\n }\n }\n\n return response;\n};\n\nexport const findIndicesOfOverlappingRangesInPeriods = ({\n range1,\n range2,\n periods,\n}) => {\n const firstIndex = findIndexBy(\n { startTime: range1.startDate.format(SLOT_TIME_FORMAT_24H) },\n periods\n );\n\n const secondIndex = periods.findIndex(\n (slot, index) =>\n index > firstIndex &&\n slot.startTime === range2.startDate.format(SLOT_TIME_FORMAT_24H)\n );\n\n return { firstIndex, secondIndex };\n};\n\nexport const checkIfTwoTimeZonesAreSame = (timeZone1, timeZone2) =>\n // Requires timezone initialization\n // eslint-disable-next-line @bigbinary/neeto/use-standard-date-time-formats\n dayjs().tz(timeZone1).format(\"Z\") === dayjs().tz(timeZone2).format(\"Z\");\n\nexport const handleCopy = ({ values, day, setFieldValue, wdaysToCopy }) => {\n const newPeriods = values.wdays[day].periods?.map(\n pick([\"startTime\", \"endTime\"])\n );\n\n if (isNotPresent(newPeriods)) return;\n\n wdaysToCopy.forEach(wday =>\n setFieldValue(`wdays.${wday}`, {\n available: true,\n periods: newPeriods.map(assoc(\"wday\", wday)),\n })\n );\n};\n\nexport const buildFormValuesArray = ({ firstDay, periods }) =>\n sortDays(firstDay).map(wday => ({\n periods: sortPeriodsByKey({\n periods: periods[wday],\n key: \"startTime\",\n order: \"asc\",\n }),\n available: !!periods[wday]?.length,\n wday,\n }));\n\nexport const buildFormValuesObject = ({ periods }) => {\n const formValues = {};\n\n DAYS.forEach(wday => {\n formValues[wday] = {\n periods: sortPeriodsByKey({\n periods: periods[wday],\n key: \"startTime\",\n order: \"asc\",\n }),\n available: !!periods[wday]?.length,\n wday,\n };\n });\n\n return formValues;\n};\n\nexport const processFormValues = (values, firstDay) => ({\n wdays: buildFormValuesArray({\n firstDay,\n periods: map(prop(\"periods\"), values.wdays),\n }),\n});\n\nexport const convert24hTo12h = time =>\n // eslint-disable-next-line @bigbinary/neeto/use-standard-date-time-formats\n dayjs(time, SLOT_TIME_FORMAT_24H).format(SLOT_TIME_FORMAT);\n","import { useContext } from \"react\";\n\nimport { Typography } from \"@bigbinary/neeto-atoms\";\nimport { isPresent } from \"neetocist\";\nimport { joinHyphenCase } from \"neetocommons/utils/general\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { HOUR_FORMATS } from \"./constants\";\nimport ScheduleContext from \"./ScheduleContext\";\nimport { convert24hTo12h, sortDays, sortPeriodsByKey } from \"./utils\";\n\nconst DisplayAvailability = ({ periods }) => {\n const { t } = useTranslation();\n const { firstDay, hourFormat } = useContext(ScheduleContext);\n\n const formatHour = hour => {\n if (hourFormat === HOUR_FORMATS.H24) {\n return hour;\n }\n\n return convert24hTo12h(hour);\n };\n\n return (\n <div className=\"flex w-full flex-col gap-y-3\">\n {sortDays(firstDay).map(day => (\n <div\n className=\"border-border bg-card flex w-full flex-wrap items-center justify-center gap-2 rounded-md border px-6 py-4 sm:items-start sm:justify-start\"\n data-testid={`day-cards-${day}`}\n key={day}\n >\n <Typography\n className=\"mt-0.5 w-24 text-center sm:w-1/4 sm:text-start\"\n data-testid={joinHyphenCase(day, \"day-text\")}\n variant=\"h6\"\n >\n {t(`neetoMolecules.schedule.days.${day}`)}\n </Typography>\n <div className=\"flex flex-grow flex-col items-center gap-y-4 sm:w-1/2\">\n {isPresent(periods[day]) ? (\n sortPeriodsByKey({\n periods: periods[day],\n key: \"startTime\",\n order: \"asc\",\n })?.map(period => (\n <div className=\"flex items-center gap-x-4\" key={period.id}>\n <Typography\n className=\"w-20 text-end\"\n variant=\"h6\"\n data-testid={joinHyphenCase(\n day,\n period.startTime,\n \"start-time-text\"\n )}\n >\n {formatHour(period.startTime)}\n </Typography>\n <Typography as=\"span\" color=\"muted\">\n -\n </Typography>\n <Typography\n className=\"w-20 text-start\"\n variant=\"h6\"\n data-testid={joinHyphenCase(\n day,\n period.endTime,\n \"start-time-text\"\n )}\n >\n {formatHour(period.endTime)}\n </Typography>\n </div>\n ))\n ) : (\n <Typography\n className=\"mx-8 flex-grow text-center\"\n data-testid={joinHyphenCase(day, \"unavailable-time-text\")}\n variant=\"h6\"\n >\n {t(\"neetoMolecules.schedule.unavailable\")}\n </Typography>\n )}\n </div>\n </div>\n ))}\n </div>\n );\n};\n\nexport default DisplayAvailability;\n","/* eslint-disable @bigbinary/neeto/use-standard-date-time-formats */\nimport { toLabelAndValue, isNotPresent, isNotEmpty } from \"neetocist\";\nimport { uniq, pluck, difference, identity } from \"ramda\";\n\nimport {\n END_OF_DAY,\n SLOT_TIME_FORMAT_24H,\n SLOT_TIME_FORMAT,\n} from \"./constants\";\n\nimport { DEFAULT_HOUR_FORMAT } from \"../constants\";\nimport dayjs from \"../dayjsExtended\";\nimport { convert24hTo12h, isTimeBehind } from \"../utils\";\n\nconst buildSlotIntervals = ({\n interval,\n bookedSlots,\n hourFormat = DEFAULT_HOUR_FORMAT,\n}) => {\n const allIntervalsForADay = dayjs.timeIntervalsForDay(interval);\n allIntervalsForADay.push(END_OF_DAY);\n\n return (slotType, selectedValue = null) => {\n const uniqBookedSlots = uniq(pluck(slotType, bookedSlots));\n const slotsAvailableForBooking = difference(\n allIntervalsForADay,\n uniqBookedSlots\n );\n let slots;\n if (hourFormat === \"12h\") {\n slots = slotsAvailableForBooking.map(value => ({\n value,\n label: convert24hTo12h(value),\n }));\n } else {\n slots = slotsAvailableForBooking.map(toLabelAndValue);\n }\n\n if (!selectedValue) return slots;\n\n const selectedSlot = {\n value: selectedValue,\n label:\n hourFormat === \"12h\" ? convert24hTo12h(selectedValue) : selectedValue,\n };\n\n return sortSlots([selectedSlot, ...slots]);\n };\n};\n\nconst sortSlots = slots =>\n slots.sort((a, b) => (isTimeBehind(a[\"value\"], b[\"value\"]) ? -1 : 1));\n\nconst slotsSelectComponentDefaultValue = slot =>\n slot ? toLabelAndValue(slot) : \"\";\n\nconst padZeroes = str => (str.length % 2 === 0 ? str : `0${str}`);\n\nconst filterSlots = (option, searchTerm) => {\n if (isNotPresent(searchTerm) || option.data.__isNew__) return true;\n\n const searchDigits = searchTerm.replaceAll(/\\D+/gi, \"\");\n const searchLetters = searchTerm.toLowerCase().replaceAll(/[^a-z]/gi, \"\");\n const paddedDigits = padZeroes(searchDigits);\n\n const label = (option.label || option.value).toLowerCase();\n const labelDigits = label.replaceAll(/\\D+/gi, \"\");\n\n const doesNumberMatch =\n option.value.replace(\":\", \"\").startsWith(paddedDigits) ||\n labelDigits.startsWith(paddedDigits);\n\n const doesAmPmMatch = !searchLetters || label.includes(searchLetters);\n\n return doesNumberMatch && doesAmPmMatch;\n};\n\nconst formatCreateLabel = identity;\n\nconst parseLooseTime = value => {\n if (!value || typeof value !== \"string\") return null;\n\n const trimmed = value.trim();\n\n // Try strict 24h format (e.g. \"14:30\")\n const parsed24h = dayjs(trimmed, SLOT_TIME_FORMAT_24H, true);\n if (parsed24h.isValid()) return parsed24h;\n\n // Try strict 12h format (e.g. \"03:00 PM\")\n const parsed12h = dayjs(trimmed, SLOT_TIME_FORMAT, true);\n if (parsed12h.isValid()) return parsed12h;\n\n // Try loose format: \"3 pm\", \"3pm\", \"3:30pm\", \"3:30 PM\", etc.\n const match = trimmed.match(/^(\\d{1,2})(?::(\\d{2}))?\\s*(am|pm|a|p)$/i);\n if (!match) return null;\n\n let hours = parseInt(match[1], 10);\n const minutes = match[2] ? parseInt(match[2], 10) : 0;\n const meridiem = match[3].toLowerCase();\n\n if (hours < 1 || hours > 12 || minutes < 0 || minutes > 59) return null;\n\n if (meridiem.startsWith(\"p\") && hours !== 12) hours += 12;\n\n if (meridiem.startsWith(\"a\") && hours === 12) hours = 0;\n\n return dayjs().hour(hours).minute(minutes).second(0);\n};\n\nconst isValidTimeSlotOption = value => parseLooseTime(value) !== null;\n\nconst formatTimeSlotOption = v => {\n let value = v || \"\";\n if (isNotEmpty(value)) {\n const parsed = parseLooseTime(value);\n if (parsed) {\n value = parsed.format(SLOT_TIME_FORMAT_24H);\n } else if (value[1] === \":\") {\n // Pad hour with 0 if single digit (legacy logic)\n value = `0${value}`;\n }\n }\n\n return value;\n};\n\nconst roundToNearestHour = time => {\n const minutes = time.minute();\n\n if (minutes === 59) return time.startOf(\"hour\").add(1, \"hour\");\n\n return time.add(1, \"hour\");\n};\n\nconst generateNewPeriod = (periods, wday) => {\n const lastEndTime = periods[periods.length - 1].endTime;\n const newStartTime = roundToNearestHour(\n dayjs(lastEndTime, SLOT_TIME_FORMAT_24H)\n );\n const newEndTime = dayjs(newStartTime, SLOT_TIME_FORMAT_24H).add(1, \"hour\");\n\n return {\n startTime: dayjs(newStartTime).format(SLOT_TIME_FORMAT_24H),\n endTime: dayjs(newEndTime).format(SLOT_TIME_FORMAT_24H),\n wday,\n };\n};\n\nconst addDefaultPeriod = wday => ({\n wday,\n startTime: dayjs().hour(9).minute(0).format(SLOT_TIME_FORMAT_24H),\n endTime: dayjs().hour(17).minute(0).format(SLOT_TIME_FORMAT_24H),\n});\n\nexport {\n buildSlotIntervals,\n slotsSelectComponentDefaultValue,\n filterSlots,\n generateNewPeriod,\n addDefaultPeriod,\n isValidTimeSlotOption,\n formatTimeSlotOption,\n formatCreateLabel,\n};\n","import { memo, useContext, useMemo } from \"react\";\n\nimport { Button } from \"@bigbinary/neeto-atoms\";\nimport { Select } from \"@bigbinary/neeto-atoms/formik\";\nimport { FieldArray, ErrorMessage, useFormikContext } from \"formik\";\nimport { Plus, Trash2 } from \"lucide-react\";\nimport { isNotPresent, isPresent } from \"neetocist\";\nimport { useTranslation } from \"react-i18next\";\n\nimport {\n filterSlots,\n generateNewPeriod,\n addDefaultPeriod,\n isValidTimeSlotOption,\n formatCreateLabel,\n buildSlotIntervals,\n formatTimeSlotOption,\n} from \"./utils\";\n\nimport ScheduleContext from \"../ScheduleContext\";\n\nconst ScheduleRow = ({ day }) => {\n const { values, setFieldValue } = useFormikContext();\n const bookedSlots = values.wdays[day].periods;\n\n const { allowAddPeriod, slotInterval, hourFormat } =\n useContext(ScheduleContext);\n\n const { t } = useTranslation();\n\n const sortSlotsInterval = useMemo(\n () =>\n buildSlotIntervals({ interval: slotInterval, bookedSlots, hourFormat }),\n [slotInterval, bookedSlots, hourFormat]\n );\n\n const startTimeOptions = period =>\n sortSlotsInterval(\"startTime\", period?.startTime);\n\n const endTimeOptions = period =>\n sortSlotsInterval(\"endTime\", period?.endTime);\n\n const handleChange = (index, field, selected) => {\n const value = formatTimeSlotOption(selected);\n setFieldValue(`wdays.${day}.periods[${index}].${field}`, value);\n };\n\n const handleAddRow = arrayHelpers => {\n if (isNotPresent(values.wdays[day].periods)) {\n arrayHelpers.push(addDefaultPeriod(day));\n } else {\n arrayHelpers.push(generateNewPeriod(values.wdays[day].periods, day));\n }\n setFieldValue(`wdays.${day}.available`, true);\n };\n\n const handleDeleteRow = (arrayHelpers, index) => {\n const isLastRowDeleted = values.wdays[day].periods.length === 1;\n arrayHelpers.remove(index);\n setFieldValue(`wdays.${day}.available`, !isLastRowDeleted);\n };\n\n return (\n <FieldArray\n name={`wdays.${day}.periods`}\n render={arrayHelpers => (\n <>\n {isPresent(values.wdays[day]?.periods) && (\n <div className=\"flex w-full flex-col gap-y-2\">\n {values.wdays[day].periods?.map((period, index) => (\n <div\n className=\"flex w-full flex-col @xl:mx-auto @xl:w-80\"\n key={`wdays.${day}.periods[${index}]`}\n >\n <div\n className=\"flex items-start gap-2 @xl:gap-3\"\n data-testid=\"schedule-row\"\n >\n {/* min-w-0 lets the selects shrink past their content:\n a searchable Select holds its value in an input with a\n 64px floor, so at the flex default of min-width auto the\n pair cannot fit this row and overflows onto the buttons\n that follow. */}\n <Select\n {...{ formatCreateLabel }}\n isClearable\n isCreatable\n isSearchable\n className=\"w-full min-w-0\"\n filterOption={filterSlots}\n isValidNewOption={isValidTimeSlotOption}\n name={`wdays.${day}.periods[${index}].startTime`}\n options={startTimeOptions(period)}\n placeholder={t(\"neetoMolecules.schedule.startTime\")}\n value={period?.startTime}\n onChange={value =>\n handleChange(index, \"startTime\", value)\n }\n />\n <Select\n {...{ formatCreateLabel }}\n isClearable\n isCreatable\n isSearchable\n className=\"w-full min-w-0\"\n filterOption={filterSlots}\n isValidNewOption={isValidTimeSlotOption}\n name={`wdays.${day}.periods[${index}].endTime`}\n options={endTimeOptions(period)}\n placeholder={t(\"neetoMolecules.schedule.endTime\")}\n value={period?.endTime}\n onChange={value => handleChange(index, \"endTime\", value)}\n />\n <Button\n className=\"flex-shrink-0 self-start\"\n data-testid=\"delete-period-button\"\n icon={Trash2}\n variant=\"ghost\"\n onClick={() => handleDeleteRow(arrayHelpers, index)}\n />\n </div>\n <ErrorMessage name={`wdays.${day}.periods[${index}]`}>\n {message =>\n typeof message !== \"object\" && (\n <span className=\"text-error-foreground mt-1 w-11/12 px-2 text-xs\">\n {message}\n </span>\n )\n }\n </ErrorMessage>\n </div>\n ))}\n </div>\n )}\n {values.wdays[day].available && allowAddPeriod && (\n <Button\n className=\"absolute end-14 top-3 ms-auto flex-shrink-0 @xl:static\"\n data-testid=\"add-new-period-button\"\n icon={Plus}\n variant=\"secondary\"\n tooltipProps={{\n content: t(\"neetoMolecules.schedule.addNewPeriod\"),\n position: \"top\",\n hideAfter: 5000,\n touch: [\"hold\", 500],\n }}\n onClick={() => handleAddRow(arrayHelpers)}\n />\n )}\n </>\n )}\n />\n );\n};\n\nexport default memo(ScheduleRow);\n","import { memo, useContext, useState } from \"react\";\n\nimport {\n Typography,\n DropdownMenu,\n Button,\n Label,\n Checkbox,\n} from \"@bigbinary/neeto-atoms\";\nimport { Switch } from \"@bigbinary/neeto-atoms/formik\";\nimport classnames from \"classnames\";\nimport { useFormikContext } from \"formik\";\nimport { Copy } from \"lucide-react\";\nimport { isNotPresent, isPresent } from \"neetocist\";\nimport { joinHyphenCase } from \"neetocommons/utils/general\";\nimport { append, identity, without } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport ScheduleRow from \"./ScheduleRow\";\nimport { addDefaultPeriod } from \"./utils\";\n\nimport ScheduleContext from \"../ScheduleContext\";\nimport { handleCopy, sortDays } from \"../utils\";\n\nconst Form = ({ day }) => {\n const [deletedPeriods, setDeletedPeriods] = useState([]);\n const [wdaysToCopy, setWdaysToCopy] = useState([]);\n\n const { values, setFieldValue } = useFormikContext();\n\n const { t } = useTranslation();\n const { firstDay } = useContext(ScheduleContext);\n\n const restoreDeletedPeriods = () => {\n setFieldValue(`wdays.${day}.periods`, deletedPeriods);\n };\n\n const uncheckCheckbox = () => {\n setFieldValue(`wdays.${day}.available`, false);\n setFieldValue(`wdays.${day}.periods`, []);\n if (values.wdays[day].periods[0]?.id) {\n setDeletedPeriods(\n values.wdays[day].periods\n .filter(item => item.startTime && item.endTime)\n .map(identity)\n );\n }\n };\n\n const checkCheckbox = () => {\n setFieldValue(`wdays.${day}.available`, true);\n if (deletedPeriods[0]?.startTime) {\n restoreDeletedPeriods(setFieldValue);\n } else if (isNotPresent(values.wdays[day].periods)) {\n setFieldValue(`wdays.${day}.periods`, [addDefaultPeriod(day)]);\n } else {\n setFieldValue(`wdays.${day}.periods`, [\"\"]);\n }\n };\n\n const handleCheckbox = () => {\n if (values.wdays[day].available) {\n uncheckCheckbox();\n } else {\n checkCheckbox();\n }\n };\n\n const handleCopyChange = (checked, day) =>\n setWdaysToCopy(checked ? append(day) : without([day]));\n\n return (\n <div className=\"border-border bg-card @container relative mb-3 w-full rounded-md border px-4 last:mb-0 md:px-6\">\n <div\n className=\"@xl:flex-no-wrap my-4 flex w-full flex-wrap items-start gap-2 @xl:flex-nowrap @xl:gap-4\" // Added `@xl:flex-no-wrap` since neetoCal is using old version of tailwind\n data-testid=\"working-day-container\"\n >\n <div\n className={classnames(\n \"flex w-36 flex-shrink-0 items-center justify-start @xl:mt-1\",\n { \"mb-3 @xl:mb-0\": isPresent(values.wdays[day]?.periods) }\n )}\n >\n <Switch\n aria-label={`wdays.${day}.available`}\n checked={values.wdays[day].available}\n className=\"flex-grow-0\"\n data-testid={joinHyphenCase(day, \"weekly-hours-checkbox\")}\n id=\"day\"\n name={`wdays.${day}.available`}\n size=\"lg\"\n onCheckedChange={handleCheckbox}\n />\n <Typography\n as=\"span\"\n className=\"ms-2 capitalize\"\n color={values.wdays[day].available ? \"default\" : \"muted\"}\n data-testid={joinHyphenCase(day, \"day-text\")}\n variant=\"body2\"\n weight={values.wdays[day].available ? \"semibold\" : \"normal\"}\n >\n {t(`neetoMolecules.schedule.days.${day}`)}\n </Typography>\n </div>\n <ScheduleRow {...{ day }} />\n {values.wdays[day].available && (\n <DropdownMenu\n closeOnSelect\n dropdownProps={{ className: \"w-max\" }}\n position=\"right-start\"\n customTarget={\n <Button\n className=\"absolute end-4 top-3 flex-shrink-0 @xl:static\"\n data-testid={joinHyphenCase(day, \"copy-schedule-icon\")}\n icon={Copy}\n variant=\"secondary\"\n tooltipProps={{\n content: t(\"neetoMolecules.schedule.copyScheduleTooltip\"),\n position: \"top\",\n }}\n />\n }\n onClose={() => setWdaysToCopy([])}\n >\n <DropdownMenu.Label>\n {t(\"neetoMolecules.schedule.copySchedule\")}\n </DropdownMenu.Label>\n {sortDays(firstDay)\n .filter(copyDay => copyDay !== day)\n .map(day => (\n <div\n className=\"px-1.5 py-1\"\n key={day}\n onClick={e => e.stopPropagation()}\n >\n <Label className=\"w-full cursor-pointer capitalize\">\n <Checkbox\n checked={wdaysToCopy.includes(day)}\n id={day}\n label={t(`neetoMolecules.schedule.days.${day}`)}\n onCheckedChange={checked =>\n handleCopyChange(checked, day)\n }\n />\n </Label>\n </div>\n ))}\n <div className=\"px-1.5 py-1\">\n <Button\n data-testid=\"copy-schedule-submit-button\"\n disabled={isNotPresent(wdaysToCopy)}\n label={t(\"neetoMolecules.common.actions.submit\")}\n size=\"sm\"\n onClick={() => {\n handleCopy({ values, day, setFieldValue, wdaysToCopy });\n setWdaysToCopy([]);\n }}\n />\n </div>\n </DropdownMenu>\n )}\n </div>\n </div>\n );\n};\n\nexport default memo(Form);\n","import { useContext, useEffect, useImperativeHandle } from \"react\";\n\nimport { useFormikContext } from \"formik\";\n\nimport Form from \"./Form\";\nimport ScheduleContext from \"./ScheduleContext\";\nimport { processFormValues, sortDays } from \"./utils\";\n\nconst Fields = ({ handleValuesChanged, scheduleRef }) => {\n const { firstDay } = useContext(ScheduleContext);\n const formikBag = useFormikContext();\n\n const { values, resetForm, errors } = formikBag;\n\n useEffect(() => {\n handleValuesChanged(processFormValues(values, firstDay), formikBag);\n }, [values]);\n\n useImperativeHandle(scheduleRef, () => ({ resetForm, errors }));\n\n return sortDays(firstDay).map(wday => <Form day={wday} key={wday} />);\n};\n\nexport default Fields;\n","import { useState, useEffect } from \"react\";\n\nimport { Button, Typography, Tooltip } from \"@bigbinary/neeto-atoms\";\nimport { useFormikContext } from \"formik\";\nimport { Profile } from \"neetoteam/v2\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { getTimeZoneAndTime } from \"./utils\";\n\nimport MoreDropdown from \"../MoreDropdown\";\n\nconst Header = ({\n isCreating,\n isEditable,\n isEditing,\n setIsEditing,\n showTimeZone = true,\n}) => {\n const { dirty, resetForm, submitForm, isSubmitting } = useFormikContext();\n const { t } = useTranslation();\n const [timeZoneAndTime, setTimeZoneAndTime] = useState(getTimeZoneAndTime());\n const [_, setIsProfilePaneOpen] = Profile.usePaneState();\n\n const handleReset = () => {\n if (dirty) resetForm();\n else setIsEditing(false);\n };\n\n useEffect(() => {\n const time = setInterval(() => {\n setTimeZoneAndTime(getTimeZoneAndTime());\n }, 30000);\n\n return () => clearInterval(time);\n }, []);\n\n return (\n <div className=\"mb-6 flex flex-wrap justify-between gap-2\">\n {showTimeZone && (\n <div\n className=\"flex items-center gap-3\"\n data-testid=\"schedule-timezone-header\"\n >\n <Tooltip\n content={t(\"neetoMolecules.schedule.timezoneTooltip\")}\n position=\"bottom\"\n touch={[\"hold\", 500]}\n >\n <Typography\n as=\"h4\"\n data-testid=\"timezone-text\"\n variant=\"h6\"\n weight=\"medium\"\n >\n {timeZoneAndTime}\n </Typography>\n </Tooltip>\n {isEditable && (\n <MoreDropdown\n dropdownButtonProps={{ \"data-testid\": \"nui-more-dropdown\" }}\n menuItems={[\n {\n onClick: () => setIsProfilePaneOpen(true),\n label: t(\"neetoMolecules.common.actions.changeTimezone\"),\n target: \"_blank\",\n key: \"change-timezone-option\",\n \"data-testid\": \"change-timezone-option\",\n },\n ]}\n />\n )}\n </div>\n )}\n {isEditing ? (\n <div className=\"flex items-center gap-2\">\n <Button\n data-testid=\"reset-button\"\n variant=\"secondary\"\n label={\n !dirty\n ? t(\"neetoMolecules.common.actions.cancel\")\n : t(\"neetoMolecules.common.actions.reset\")\n }\n onClick={handleReset}\n />\n <Button\n data-testid=\"weekly-hours-save-changes-button\"\n disabled={(!dirty && !isCreating) || isSubmitting}\n label={t(\"neetoMolecules.common.actions.saveChanges\")}\n loading={isSubmitting}\n onClick={submitForm}\n />\n </div>\n ) : (\n isEditable && (\n <div>\n <Button\n data-testid=\"weekly-schedule-header\"\n label={t(\"neetoMolecules.schedule.changeAvailability\")}\n variant=\"default\"\n onClick={() => setIsEditing(true)}\n />\n </div>\n )\n )}\n </div>\n );\n};\n\nexport default Header;\n","import { forwardRef, useMemo } from \"react\";\n\nimport { Formik, Form as FormikForm } from \"formik\";\nimport { noop } from \"neetocist\";\nimport PropTypes from \"prop-types\";\n\nimport {\n DEFAULT_HOUR_FORMAT,\n DEFAULT_SLOT_INTERVAL,\n HOUR_FORMATS,\n} from \"./constants\";\nimport DisplayAvailability from \"./DisplayAvailability\";\nimport Fields from \"./Fields\";\nimport {\n buildSlotIntervals,\n slotsSelectComponentDefaultValue,\n filterSlots,\n generateNewPeriod,\n addDefaultPeriod,\n isValidTimeSlotOption,\n formatTimeSlotOption,\n formatCreateLabel,\n} from \"./Form/utils\";\nimport Header from \"./Header\";\nimport \"./schedule.scss\";\nimport ScheduleContext from \"./ScheduleContext\";\nimport {\n buildFormValuesArray,\n buildFormValuesObject,\n getScheduleValidationSchema,\n processFormValues,\n} from \"./utils\";\n\nconst Schedule = forwardRef(\n (\n {\n periods,\n handleSubmit = noop,\n isEditing = false,\n setIsEditing,\n showHeader = true,\n handleValuesChanged = noop,\n allowAddPeriod = true,\n isEditable = true,\n isCreating = false,\n firstDay = 1,\n showTimeZone = true,\n slotInterval = DEFAULT_SLOT_INTERVAL,\n hourFormat = DEFAULT_HOUR_FORMAT,\n },\n scheduleRef\n ) => {\n const validationSchema = useMemo(getScheduleValidationSchema, []);\n\n const getInitialFormValues = (isSubmitHandler = false) => {\n if (isSubmitHandler) {\n return buildFormValuesArray({ firstDay, periods });\n }\n\n return buildFormValuesObject({ periods });\n };\n\n return (\n <ScheduleContext.Provider\n value={{ allowAddPeriod, firstDay, slotInterval, hourFormat }}\n >\n <div className=\"neeto-molecules-schedule border-border flex-shrink-0\">\n <Formik\n {...{ validationSchema }}\n enableReinitialize\n initialValues={{ wdays: getInitialFormValues() }}\n onSubmit={values => {\n handleSubmit(\n processFormValues(values, firstDay),\n getInitialFormValues(true)\n );\n }}\n >\n <>\n {showHeader && (\n <Header\n {...{\n isCreating,\n isEditable,\n isEditing,\n setIsEditing,\n showTimeZone,\n }}\n />\n )}\n {isEditing || !showHeader ? (\n <FormikForm>\n <Fields {...{ handleValuesChanged, scheduleRef }} />\n </FormikForm>\n ) : (\n <DisplayAvailability {...{ periods }} />\n )}\n </>\n </Formik>\n </div>\n </ScheduleContext.Provider>\n );\n }\n);\n\nSchedule.displayName = \"Schedule\";\n\nSchedule.propTypes = {\n /**\n * Periods data for days of the week.\n */\n periods: PropTypes.shape({\n sunday: PropTypes.array,\n monday: PropTypes.array,\n tuesday: PropTypes.array,\n wednesday: PropTypes.array,\n thursday: PropTypes.array,\n friday: PropTypes.array,\n saturday: PropTypes.array,\n }),\n /**\n * The function to be called on save changes action.\n */\n handleSubmit: PropTypes.func,\n /**\n * State value to show form for editing.\n */\n isEditing: PropTypes.bool,\n /**\n * Setter function to toggle `isEditing` state.\n */\n setIsEditing: PropTypes.func,\n /**\n * Flag to display or hide header. If set to false, component will open in editing state.\n */\n showHeader: PropTypes.bool,\n /**\n * Callback function called when values are changed within form.\n */\n handleValuesChanged: PropTypes.func,\n /**\n * Flag to allow adding new periods. If set to false, Add new period button will be hidden.\n */\n allowAddPeriod: PropTypes.bool,\n /**\n * Flag to control the ability to edit the schedule and timezone. When set to false, periods and timezone cannot be edited.\n */\n isEditable: PropTypes.bool,\n /**\n * Flag to control the ability to submit the schedule without changing initial values. When set to false, Schedule can only be submitted once the initial values are changed.\n */\n isCreating: PropTypes.bool,\n /**\n * Integer prop to choose which day of the week to display first in the component. Defaults to 1(Monday).\n */\n firstDay: PropTypes.number,\n /**\n * Flag to display or hide the current timezone in the header. Defaults to true.\n */\n showTimeZone: PropTypes.bool,\n /**\n * Integer prop to specify the time (in minutes) taken by each slot. Defaults to 30 minutes.\n */\n slotInterval: PropTypes.number,\n /**\n * String prop to specify the hour format (24h/12h). Defaults to 24h.\n */\n hourFormat: PropTypes.oneOf(Object.values(HOUR_FORMATS)),\n};\n\nexport default Schedule;\n\nexport {\n buildSlotIntervals,\n slotsSelectComponentDefaultValue,\n filterSlots,\n generateNewPeriod,\n addDefaultPeriod,\n isValidTimeSlotOption,\n formatTimeSlotOption,\n formatCreateLabel,\n};\n"],"names":["DAYS","DEFAULT_SLOT_INTERVAL","HOUR_FORMATS","H24","DEFAULT_HOUR_FORMAT","ScheduleContext","createContext","allowAddPeriod","firstDay","slotInterval","hourFormat","INTERVALS","SLOT_TIME_FORMAT","SLOT_TIME_FORMAT_24H","END_OF_DAY","dayjs","endOf","format","DayjsRange","startDate","endDate","_classCallCheck","_ref","s","e","_createClass","key","value","isValidRange","isValid","isOverlap","other","toArrayOfTimeIntervals","interval","arguments","length","undefined","startTime","endTime","add","allTimes","push","extendDayjs","range","start","end","dayjsObject","includes","startOf","constructor","timeIntervalsForDay","_ref2","startOfDay","endOfDay","dayjsExtended","yup","addMethod","array","test","periods","_checkForOverlapBetwe","checkForOverlapBetweenPeriods","isOverlapping","exists","range1","range2","_findIndicesOfOverlap","findIndicesOfOverlappingRangesInPeriods","firstIndex","secondIndex","firstError","createError","path","concat","message","i18next","t","timeFormat","time","secondError","ValidationError","isFromAndToSame","isSame","sortDays","chosenIndex","_toConsumableArray","slice","wdayValidation","object","shape","of","string","required","parent","isTimeBehind","ensureSlotsCantOverlap","getScheduleValidationSchema","wdays","fromPairs","map","day","getUserTimeZone","_window$globalProps","window","globalProps","user","timeZone","getTimeZoneAndTime","humanReadableTimezone","ianaTimezoneToHumanReadable","tz","timeA","timeB","isBefore","sortPeriodsByKey","_ref$order","order","sort","periodA","periodB","isPeriodBehind","response","slotsSortedByStartTime","_iterator","_createForOfIteratorHelper","entries","_step","n","done","_step$value","_slicedToArray","index","seg1","seg2","err","f","findIndexBy","findIndex","slot","handleCopy","_ref3","_values$wdays$day$per","values","setFieldValue","wdaysToCopy","newPeriods","pick","isNotPresent","forEach","wday","available","assoc","buildFormValuesArray","_ref4","_periods$wday","buildFormValuesObject","_ref5","formValues","_periods$wday2","processFormValues","prop","convert24hTo12h","DisplayAvailability","_useTranslation","useTranslation","_useContext","useContext","formatHour","hour","_jsx","className","children","_sortPeriodsByKey","_jsxs","Typography","joinHyphenCase","variant","isPresent","period","as","color","id","buildSlotIntervals","bookedSlots","_ref$hourFormat","allIntervalsForADay","slotType","selectedValue","uniqBookedSlots","uniq","pluck","slotsAvailableForBooking","difference","slots","label","toLabelAndValue","selectedSlot","sortSlots","a","b","slotsSelectComponentDefaultValue","padZeroes","str","filterSlots","option","searchTerm","data","__isNew__","searchDigits","replaceAll","searchLetters","toLowerCase","paddedDigits","labelDigits","doesNumberMatch","replace","startsWith","doesAmPmMatch","formatCreateLabel","identity","parseLooseTime","trimmed","trim","parsed24h","parsed12h","match","hours","parseInt","minutes","meridiem","minute","second","isValidTimeSlotOption","formatTimeSlotOption","v","isNotEmpty","parsed","roundToNearestHour","generateNewPeriod","lastEndTime","newStartTime","newEndTime","addDefaultPeriod","ScheduleRow","_useFormikContext","useFormikContext","sortSlotsInterval","useMemo","startTimeOptions","endTimeOptions","handleChange","field","selected","handleAddRow","arrayHelpers","handleDeleteRow","isLastRowDeleted","remove","FieldArray","name","render","_values$wdays$day","_Fragment","Select","isClearable","isCreatable","isSearchable","filterOption","isValidNewOption","options","placeholder","onChange","Button","icon","Trash2","onClick","ErrorMessage","_typeof","Plus","tooltipProps","content","position","hideAfter","touch","memo","Form","_useState","useState","_useState2","deletedPeriods","setDeletedPeriods","_useState3","_useState4","setWdaysToCopy","restoreDeletedPeriods","uncheckCheckbox","filter","item","checkCheckbox","_deletedPeriods$","handleCheckbox","handleCopyChange","checked","append","without","classnames","Switch","size","onCheckedChange","weight","DropdownMenu","closeOnSelect","dropdownProps","customTarget","Copy","onClose","Label","copyDay","stopPropagation","Checkbox","disabled","Fields","handleValuesChanged","scheduleRef","formikBag","resetForm","errors","useEffect","useImperativeHandle","Header","isCreating","isEditable","isEditing","setIsEditing","_ref$showTimeZone","showTimeZone","dirty","submitForm","isSubmitting","timeZoneAndTime","setTimeZoneAndTime","_Profile$usePaneState","Profile","usePaneState","_Profile$usePaneState2","_","setIsProfilePaneOpen","handleReset","setInterval","clearInterval","Tooltip","MoreDropdown","dropdownButtonProps","menuItems","target","loading","Schedule","forwardRef","_ref$handleSubmit","handleSubmit","noop","_ref$isEditing","_ref$showHeader","showHeader","_ref$handleValuesChan","_ref$allowAddPeriod","_ref$isEditable","_ref$isCreating","_ref$firstDay","_ref$slotInterval","validationSchema","getInitialFormValues","isSubmitHandler","Provider","Formik","enableReinitialize","initialValues","onSubmit","FormikForm","displayName"],"mappings":"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"}
@@ -134,10 +134,14 @@ var DateRangeFilter = function DateRangeFilter(_ref) {
134
134
  var label = _ref2.label;
135
135
  return toLabelAndValue(label);
136
136
  });
137
+
138
+ // Emptying the search input reports "", which matches no option. The filter
139
+ // is required, so keep the current period rather than clearing it.
137
140
  var handleChange = function handleChange(selectedLabel) {
138
- return setTimePeriod(findBy({
141
+ var selectedPeriod = findBy({
139
142
  label: selectedLabel
140
- }, options));
143
+ }, options);
144
+ if (selectedPeriod) setTimePeriod(selectedPeriod);
141
145
  };
142
146
  var handleDateRangeChange = function handleDateRangeChange(dateRange) {
143
147
  var _ref3 = dateRange !== null && dateRange !== void 0 ? dateRange : [],
@@ -1 +1 @@
1
- {"version":3,"file":"DateRangeFilter.js","sources":["../../src/v2/components/DateRangeFilter/utils.js","../../src/v2/components/DateRangeFilter/index.jsx"],"sourcesContent":["import { t } from \"i18next\";\nimport { dayjs } from \"neetocommons/v2/utils\";\n\nexport const defaultTimePeriodOptions = () => {\n const today = dayjs().startOf(\"day\");\n const startOfLastWeek = today.subtract(7, \"day\").startOf(\"week\");\n\n const endOfLastWeek = today.subtract(7, \"day\").endOf(\"week\");\n const lastMonthStart = today.subtract(1, \"month\").startOf(\"month\");\n const lastMonthEnd = today.subtract(1, \"month\").endOf(\"month\");\n const thisQuarterStart = dayjs().startOf(\"quarter\");\n const thisQuarterEnd = dayjs().endOf(\"quarter\");\n const lastQuarterStart = dayjs().subtract(1, \"quarter\").startOf(\"quarter\");\n const lastQuarterEnd = dayjs().subtract(1, \"quarter\").endOf(\"quarter\");\n const startOfLastYear = dayjs().subtract(1, \"year\").startOf(\"year\");\n const endOfLastYear = dayjs().subtract(1, \"year\").endOf(\"year\");\n const startOfYear = dayjs().startOf(\"year\");\n const endOfYear = dayjs().endOf(\"year\");\n\n const startOf24Hours = dayjs().subtract(24, \"hour\");\n const now = dayjs();\n const startOfLast7Days = dayjs().subtract(7, \"day\");\n const startOfWeek = dayjs().startOf(\"week\");\n const startOfLast30Days = dayjs().subtract(30, \"day\");\n const startOfMonth = today.startOf(\"month\");\n\n return [\n {\n label: t(\"neetoMolecules.dateRangeFilter.timePeriodOptions.allTime\"),\n value: { startDate: null, endDate: null, rangeType: \"all\" },\n },\n {\n label: t(\"neetoMolecules.dateRangeFilter.timePeriodOptions.last24Hours\"),\n value: { startDate: startOf24Hours, endDate: now, rangeType: \"hours\" },\n },\n {\n label: t(\"neetoMolecules.dateRangeFilter.timePeriodOptions.last7Days\"),\n value: {\n startDate: startOfLast7Days,\n endDate: now,\n rangeType: \"days\",\n },\n },\n {\n label: t(\"neetoMolecules.dateRangeFilter.timePeriodOptions.thisWeek\"),\n value: { startDate: startOfWeek, endDate: now, rangeType: \"week\" },\n },\n {\n label: t(\"neetoMolecules.dateRangeFilter.timePeriodOptions.lastWeek\"),\n value: {\n startDate: startOfLastWeek,\n endDate: endOfLastWeek,\n rangeType: \"week\",\n },\n },\n {\n label: t(\"neetoMolecules.dateRangeFilter.timePeriodOptions.last30Days\"),\n value: {\n startDate: startOfLast30Days,\n endDate: now,\n rangeType: \"days\",\n },\n },\n {\n label: t(\"neetoMolecules.dateRangeFilter.timePeriodOptions.thisMonth\"),\n value: { startDate: startOfMonth, endDate: now, rangeType: \"month\" },\n },\n {\n label: t(\"neetoMolecules.dateRangeFilter.timePeriodOptions.lastMonth\"),\n value: {\n startDate: lastMonthStart,\n endDate: lastMonthEnd,\n rangeType: \"month\",\n },\n },\n {\n label: t(\"neetoMolecules.dateRangeFilter.timePeriodOptions.thisQuarter\"),\n value: {\n startDate: thisQuarterStart,\n endDate: thisQuarterEnd,\n rangeType: \"quarter\",\n },\n },\n {\n label: t(\"neetoMolecules.dateRangeFilter.timePeriodOptions.lastQuarter\"),\n value: {\n startDate: lastQuarterStart,\n endDate: lastQuarterEnd,\n rangeType: \"quarter\",\n },\n },\n {\n label: t(\"neetoMolecules.dateRangeFilter.timePeriodOptions.thisYear\"),\n value: { startDate: startOfYear, endDate: endOfYear, rangeType: \"year\" },\n },\n {\n label: t(\"neetoMolecules.dateRangeFilter.timePeriodOptions.lastYear\"),\n value: {\n startDate: startOfLastYear,\n endDate: endOfLastYear,\n rangeType: \"year\",\n },\n },\n {\n label: t(\n \"neetoMolecules.dateRangeFilter.timePeriodOptions.customDuration\"\n ),\n value: \"custom\",\n },\n ];\n};\n","import { DatePicker, Select } from \"@bigbinary/neeto-atoms\";\nimport { findBy, toLabelAndValue } from \"neetocist\";\nimport { globalProps } from \"neetocommons/v2/initializers\";\nimport { dayjs } from \"neetocommons/v2/utils\";\nimport PropTypes from \"prop-types\";\n\nimport { defaultTimePeriodOptions } from \"./utils\";\n\nconst DateRangeFilter = ({\n timePeriodOptions,\n timePeriod,\n setTimePeriod,\n datePickerProps,\n}) => {\n const isCustom =\n timePeriod?.value === \"custom\" || timePeriod?.value?.rangeType === \"custom\";\n\n const startDate = timePeriod?.value?.startDate;\n const endDate = timePeriod?.value?.endDate;\n const requiredDateFormat = globalProps?.user?.dateFormat;\n\n const options = timePeriodOptions || defaultTimePeriodOptions();\n\n const selectOptions = options.map(({ label }) => toLabelAndValue(label));\n\n const handleChange = selectedLabel =>\n setTimePeriod(findBy({ label: selectedLabel }, options));\n\n const handleDateRangeChange = dateRange => {\n const [newStartDate, newEndDate] = dateRange ?? [];\n setTimePeriod({\n label: timePeriod?.label,\n value: {\n startDate: newStartDate,\n endDate: newEndDate,\n rangeType: \"custom\",\n },\n });\n };\n\n return (\n <div\n className=\"neeto-molecules-date-range-filter flex flex-wrap gap-3\"\n data-testid=\"date-range-filter\"\n >\n <div className=\"neeto-molecules-date-range-filter__select w-40\">\n <Select\n required\n options={selectOptions}\n value={(timePeriod || options[0])?.label}\n onChange={handleChange}\n />\n </div>\n {isCustom && (\n <div\n className=\"neeto-molecules-date-range-filter__custom-duration-picker w-72\"\n data-testid=\"date-range-filter-custom-duration-picker\"\n >\n <DatePicker\n className=\"w-full\"\n dateFormat={requiredDateFormat}\n type=\"range\"\n value={[\n startDate ? dayjs(startDate) : null,\n endDate ? dayjs(endDate) : null,\n ]}\n onChange={handleDateRangeChange}\n {...datePickerProps}\n />\n </div>\n )}\n </div>\n );\n};\n\nDateRangeFilter.propTypes = {\n /**\n * An array of objects that can be passed to the component which can be used to override default filter options.\n */\n timePeriodOptions: PropTypes.arrayOf(\n PropTypes.shape({ label: PropTypes.string, value: PropTypes.object })\n ),\n /**\n * The state corresponding to the currently selected date range filter.\n */\n timePeriod: PropTypes.shape({\n label: PropTypes.string,\n value: PropTypes.object,\n }),\n /**\n * The setter method for `timePeriod` state.\n */\n setTimePeriod: PropTypes.func,\n /**\n * These props will be passed to the date range picker for custom date range selection.\n */\n datePickerProps: PropTypes.object,\n};\n\nexport default DateRangeFilter;\n"],"names":["defaultTimePeriodOptions","today","dayjs","startOf","startOfLastWeek","subtract","endOfLastWeek","endOf","lastMonthStart","lastMonthEnd","thisQuarterStart","thisQuarterEnd","lastQuarterStart","lastQuarterEnd","startOfLastYear","endOfLastYear","startOfYear","endOfYear","startOf24Hours","now","startOfLast7Days","startOfWeek","startOfLast30Days","startOfMonth","label","t","value","startDate","endDate","rangeType","DateRangeFilter","_ref","_timePeriod$value","_timePeriod$value2","_timePeriod$value3","_globalProps$user","_ref5","timePeriodOptions","timePeriod","setTimePeriod","datePickerProps","isCustom","requiredDateFormat","globalProps","user","dateFormat","options","selectOptions","map","_ref2","toLabelAndValue","handleChange","selectedLabel","findBy","handleDateRangeChange","dateRange","_ref3","_ref4","_slicedToArray","newStartDate","newEndDate","_jsxs","className","children","_jsx","Select","required","onChange","DatePicker","_objectSpread","type"],"mappings":"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"}
1
+ {"version":3,"file":"DateRangeFilter.js","sources":["../../src/v2/components/DateRangeFilter/utils.js","../../src/v2/components/DateRangeFilter/index.jsx"],"sourcesContent":["import { t } from \"i18next\";\nimport { dayjs } from \"neetocommons/v2/utils\";\n\nexport const defaultTimePeriodOptions = () => {\n const today = dayjs().startOf(\"day\");\n const startOfLastWeek = today.subtract(7, \"day\").startOf(\"week\");\n\n const endOfLastWeek = today.subtract(7, \"day\").endOf(\"week\");\n const lastMonthStart = today.subtract(1, \"month\").startOf(\"month\");\n const lastMonthEnd = today.subtract(1, \"month\").endOf(\"month\");\n const thisQuarterStart = dayjs().startOf(\"quarter\");\n const thisQuarterEnd = dayjs().endOf(\"quarter\");\n const lastQuarterStart = dayjs().subtract(1, \"quarter\").startOf(\"quarter\");\n const lastQuarterEnd = dayjs().subtract(1, \"quarter\").endOf(\"quarter\");\n const startOfLastYear = dayjs().subtract(1, \"year\").startOf(\"year\");\n const endOfLastYear = dayjs().subtract(1, \"year\").endOf(\"year\");\n const startOfYear = dayjs().startOf(\"year\");\n const endOfYear = dayjs().endOf(\"year\");\n\n const startOf24Hours = dayjs().subtract(24, \"hour\");\n const now = dayjs();\n const startOfLast7Days = dayjs().subtract(7, \"day\");\n const startOfWeek = dayjs().startOf(\"week\");\n const startOfLast30Days = dayjs().subtract(30, \"day\");\n const startOfMonth = today.startOf(\"month\");\n\n return [\n {\n label: t(\"neetoMolecules.dateRangeFilter.timePeriodOptions.allTime\"),\n value: { startDate: null, endDate: null, rangeType: \"all\" },\n },\n {\n label: t(\"neetoMolecules.dateRangeFilter.timePeriodOptions.last24Hours\"),\n value: { startDate: startOf24Hours, endDate: now, rangeType: \"hours\" },\n },\n {\n label: t(\"neetoMolecules.dateRangeFilter.timePeriodOptions.last7Days\"),\n value: {\n startDate: startOfLast7Days,\n endDate: now,\n rangeType: \"days\",\n },\n },\n {\n label: t(\"neetoMolecules.dateRangeFilter.timePeriodOptions.thisWeek\"),\n value: { startDate: startOfWeek, endDate: now, rangeType: \"week\" },\n },\n {\n label: t(\"neetoMolecules.dateRangeFilter.timePeriodOptions.lastWeek\"),\n value: {\n startDate: startOfLastWeek,\n endDate: endOfLastWeek,\n rangeType: \"week\",\n },\n },\n {\n label: t(\"neetoMolecules.dateRangeFilter.timePeriodOptions.last30Days\"),\n value: {\n startDate: startOfLast30Days,\n endDate: now,\n rangeType: \"days\",\n },\n },\n {\n label: t(\"neetoMolecules.dateRangeFilter.timePeriodOptions.thisMonth\"),\n value: { startDate: startOfMonth, endDate: now, rangeType: \"month\" },\n },\n {\n label: t(\"neetoMolecules.dateRangeFilter.timePeriodOptions.lastMonth\"),\n value: {\n startDate: lastMonthStart,\n endDate: lastMonthEnd,\n rangeType: \"month\",\n },\n },\n {\n label: t(\"neetoMolecules.dateRangeFilter.timePeriodOptions.thisQuarter\"),\n value: {\n startDate: thisQuarterStart,\n endDate: thisQuarterEnd,\n rangeType: \"quarter\",\n },\n },\n {\n label: t(\"neetoMolecules.dateRangeFilter.timePeriodOptions.lastQuarter\"),\n value: {\n startDate: lastQuarterStart,\n endDate: lastQuarterEnd,\n rangeType: \"quarter\",\n },\n },\n {\n label: t(\"neetoMolecules.dateRangeFilter.timePeriodOptions.thisYear\"),\n value: { startDate: startOfYear, endDate: endOfYear, rangeType: \"year\" },\n },\n {\n label: t(\"neetoMolecules.dateRangeFilter.timePeriodOptions.lastYear\"),\n value: {\n startDate: startOfLastYear,\n endDate: endOfLastYear,\n rangeType: \"year\",\n },\n },\n {\n label: t(\n \"neetoMolecules.dateRangeFilter.timePeriodOptions.customDuration\"\n ),\n value: \"custom\",\n },\n ];\n};\n","import { DatePicker, Select } from \"@bigbinary/neeto-atoms\";\nimport { findBy, toLabelAndValue } from \"neetocist\";\nimport { globalProps } from \"neetocommons/v2/initializers\";\nimport { dayjs } from \"neetocommons/v2/utils\";\nimport PropTypes from \"prop-types\";\n\nimport { defaultTimePeriodOptions } from \"./utils\";\n\nconst DateRangeFilter = ({\n timePeriodOptions,\n timePeriod,\n setTimePeriod,\n datePickerProps,\n}) => {\n const isCustom =\n timePeriod?.value === \"custom\" || timePeriod?.value?.rangeType === \"custom\";\n\n const startDate = timePeriod?.value?.startDate;\n const endDate = timePeriod?.value?.endDate;\n const requiredDateFormat = globalProps?.user?.dateFormat;\n\n const options = timePeriodOptions || defaultTimePeriodOptions();\n\n const selectOptions = options.map(({ label }) => toLabelAndValue(label));\n\n // Emptying the search input reports \"\", which matches no option. The filter\n // is required, so keep the current period rather than clearing it.\n const handleChange = selectedLabel => {\n const selectedPeriod = findBy({ label: selectedLabel }, options);\n\n if (selectedPeriod) setTimePeriod(selectedPeriod);\n };\n\n const handleDateRangeChange = dateRange => {\n const [newStartDate, newEndDate] = dateRange ?? [];\n setTimePeriod({\n label: timePeriod?.label,\n value: {\n startDate: newStartDate,\n endDate: newEndDate,\n rangeType: \"custom\",\n },\n });\n };\n\n return (\n <div\n className=\"neeto-molecules-date-range-filter flex flex-wrap gap-3\"\n data-testid=\"date-range-filter\"\n >\n <div className=\"neeto-molecules-date-range-filter__select w-40\">\n <Select\n required\n options={selectOptions}\n value={(timePeriod || options[0])?.label}\n onChange={handleChange}\n />\n </div>\n {isCustom && (\n <div\n className=\"neeto-molecules-date-range-filter__custom-duration-picker w-72\"\n data-testid=\"date-range-filter-custom-duration-picker\"\n >\n <DatePicker\n className=\"w-full\"\n dateFormat={requiredDateFormat}\n type=\"range\"\n value={[\n startDate ? dayjs(startDate) : null,\n endDate ? dayjs(endDate) : null,\n ]}\n onChange={handleDateRangeChange}\n {...datePickerProps}\n />\n </div>\n )}\n </div>\n );\n};\n\nDateRangeFilter.propTypes = {\n /**\n * An array of objects that can be passed to the component which can be used to override default filter options.\n */\n timePeriodOptions: PropTypes.arrayOf(\n PropTypes.shape({ label: PropTypes.string, value: PropTypes.object })\n ),\n /**\n * The state corresponding to the currently selected date range filter.\n */\n timePeriod: PropTypes.shape({\n label: PropTypes.string,\n value: PropTypes.object,\n }),\n /**\n * The setter method for `timePeriod` state.\n */\n setTimePeriod: PropTypes.func,\n /**\n * These props will be passed to the date range picker for custom date range selection.\n */\n datePickerProps: PropTypes.object,\n};\n\nexport default DateRangeFilter;\n"],"names":["defaultTimePeriodOptions","today","dayjs","startOf","startOfLastWeek","subtract","endOfLastWeek","endOf","lastMonthStart","lastMonthEnd","thisQuarterStart","thisQuarterEnd","lastQuarterStart","lastQuarterEnd","startOfLastYear","endOfLastYear","startOfYear","endOfYear","startOf24Hours","now","startOfLast7Days","startOfWeek","startOfLast30Days","startOfMonth","label","t","value","startDate","endDate","rangeType","DateRangeFilter","_ref","_timePeriod$value","_timePeriod$value2","_timePeriod$value3","_globalProps$user","_ref5","timePeriodOptions","timePeriod","setTimePeriod","datePickerProps","isCustom","requiredDateFormat","globalProps","user","dateFormat","options","selectOptions","map","_ref2","toLabelAndValue","handleChange","selectedLabel","selectedPeriod","findBy","handleDateRangeChange","dateRange","_ref3","_ref4","_slicedToArray","newStartDate","newEndDate","_jsxs","className","children","_jsx","Select","required","onChange","DatePicker","_objectSpread","type"],"mappings":"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"}