datepicker-pashuk 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +161 -0
- package/dist/index.cjs.js +1163 -0
- package/dist/index.cjs.js.map +1 -0
- package/dist/index.esm.js +1158 -0
- package/dist/index.esm.js.map +1 -0
- package/dist/types/.storybook/main.d.ts +3 -0
- package/dist/types/.storybook/preview.d.ts +4 -0
- package/dist/types/jest.setup.d.ts +1 -0
- package/dist/types/src/entities/buggyComponent/ui/BuggyComponent.d.ts +1 -0
- package/dist/types/src/entities/calendar/assets/NextIcon.d.ts +1 -0
- package/dist/types/src/entities/calendar/assets/PreviousIcon.d.ts +1 -0
- package/dist/types/src/entities/calendar/assets/index.d.ts +2 -0
- package/dist/types/src/entities/calendar/lib/decorators/BaseCalendarEngine.d.ts +9 -0
- package/dist/types/src/entities/calendar/lib/decorators/CalenderDecorator.d.ts +7 -0
- package/dist/types/src/entities/calendar/lib/decorators/FromMondayDecorator.d.ts +7 -0
- package/dist/types/src/entities/calendar/lib/decorators/HolidayDecorator.d.ts +7 -0
- package/dist/types/src/entities/calendar/lib/decorators/MinMaxDecorator.d.ts +12 -0
- package/dist/types/src/entities/calendar/lib/decorators/RangeCalenderDecorator.d.ts +23 -0
- package/dist/types/src/entities/calendar/lib/decorators/TodoDecorator.d.ts +13 -0
- package/dist/types/src/entities/calendar/lib/decorators/ViewByWeekDecorator.d.ts +8 -0
- package/dist/types/src/entities/calendar/lib/decorators/WeekdayDecorator.d.ts +6 -0
- package/dist/types/src/entities/calendar/lib/helpers/generateMonthArray.d.ts +4 -0
- package/dist/types/src/entities/calendar/lib/helpers/generateYearArray.d.ts +1 -0
- package/dist/types/src/entities/calendar/lib/helpers/isMinMaxValue.d.ts +1 -0
- package/dist/types/src/entities/calendar/lib/helpers/isSameDates.d.ts +1 -0
- package/dist/types/src/entities/calendar/lib/helpers/validationInput.d.ts +4 -0
- package/dist/types/src/entities/calendar/lib/tests/constants.d.ts +67 -0
- package/dist/types/src/entities/calendar/model/constants.d.ts +7 -0
- package/dist/types/src/entities/calendar/model/service.d.ts +35 -0
- package/dist/types/src/entities/calendar/model/storageService.d.ts +7 -0
- package/dist/types/src/entities/calendar/model/types.d.ts +75 -0
- package/dist/types/src/entities/calendar/ui/BaseCalendar/BaseCalendar.d.ts +2 -0
- package/dist/types/src/entities/calendar/ui/CalendarCell/CalendarCell.d.ts +2 -0
- package/dist/types/src/entities/calendar/ui/CalendarGrid/CalendarGrid.d.ts +2 -0
- package/dist/types/src/entities/calendar/ui/CalendarHeader/CalendarHeader.d.ts +2 -0
- package/dist/types/src/features/calendar/Calendar.d.ts +2 -0
- package/dist/types/src/features/calendar/model/constants.d.ts +5 -0
- package/dist/types/src/features/calendarWithInput/CalendarWithInput.d.ts +2 -0
- package/dist/types/src/features/calendarWithInput/model/types.d.ts +5 -0
- package/dist/types/src/features/calenderWithTodo/lib/helperTests.d.ts +91 -0
- package/dist/types/src/features/calenderWithTodo/lib/useCalendarPortal.d.ts +8 -0
- package/dist/types/src/features/calenderWithTodo/ui/CalenderWithTodo.d.ts +2 -0
- package/dist/types/src/features/rangeCalender/lib/useDateRangePicker.d.ts +23 -0
- package/dist/types/src/features/rangeCalender/model/types.d.ts +5 -0
- package/dist/types/src/features/rangeCalender/ui/RangeCalender.d.ts +2 -0
- package/dist/types/src/index.d.ts +5 -0
- package/dist/types/src/shared/lib/getThemed.d.ts +2 -0
- package/dist/types/src/shared/lib/useCalendarService.d.ts +6 -0
- package/dist/types/src/shared/model/constants.d.ts +3 -0
- package/dist/types/src/shared/model/helperTest.d.ts +33 -0
- package/dist/types/src/shared/ui/ErrorBoundary/types/types.d.ts +7 -0
- package/dist/types/src/shared/ui/ErrorBoundary/ui/ErrorBoundary.d.ts +9 -0
- package/dist/types/src/shared/ui/Input/lib/maskDate.d.ts +1 -0
- package/dist/types/src/shared/ui/Input/model/constants.d.ts +4 -0
- package/dist/types/src/shared/ui/Input/model/types.d.ts +9 -0
- package/dist/types/src/shared/ui/Input/ui/Input.d.ts +2 -0
- package/dist/types/src/shared/ui/Input/ui/InputWithState.d.ts +2 -0
- package/dist/types/src/shared/ui/Input/ui/assets/CalendarIcon.d.ts +1 -0
- package/dist/types/src/shared/ui/Input/ui/assets/CloseIcon.d.ts +1 -0
- package/dist/types/src/shared/ui/Input/ui/assets/index.d.ts +2 -0
- package/dist/types/src/shared/ui/Portal/model/types.d.ts +18 -0
- package/dist/types/src/shared/ui/Portal/ui/Portal.d.ts +2 -0
- package/package.json +93 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs.js","sources":["../node_modules/style-inject/dist/style-inject.es.js","../src/entities/calendar/assets/NextIcon.tsx","../src/entities/calendar/assets/PreviousIcon.tsx","../src/entities/calendar/ui/CalendarCell/CalendarCell.tsx","../src/entities/calendar/ui/CalendarGrid/CalendarGrid.tsx","../src/entities/calendar/model/constants.ts","../src/entities/calendar/ui/CalendarHeader/CalendarHeader.tsx","../src/entities/calendar/ui/BaseCalendar/BaseCalendar.tsx","../src/features/calendar/model/constants.ts","../src/shared/lib/getThemed.ts","../src/shared/model/constants.ts","../src/shared/ui/Input/model/constants.ts","../src/entities/calendar/lib/helpers/generateMonthArray.ts","../src/entities/calendar/lib/decorators/CalenderDecorator.ts","../src/entities/calendar/lib/decorators/BaseCalendarEngine.ts","../src/entities/calendar/lib/decorators/FromMondayDecorator.ts","../src/entities/calendar/lib/decorators/HolidayDecorator.ts","../src/entities/calendar/lib/helpers/isMinMaxValue.ts","../src/entities/calendar/lib/decorators/MinMaxDecorator.ts","../src/features/rangeCalender/model/types.ts","../src/entities/calendar/lib/helpers/isSameDates.ts","../src/entities/calendar/lib/decorators/RangeCalenderDecorator.ts","../src/entities/calendar/model/storageService.ts","../src/entities/calendar/lib/decorators/TodoDecorator.ts","../src/entities/calendar/lib/decorators/ViewByWeekDecorator.ts","../src/entities/calendar/lib/decorators/WeekdayDecorator.ts","../src/entities/calendar/lib/helpers/validationInput.ts","../src/entities/calendar/lib/helpers/generateYearArray.ts","../src/entities/calendar/model/service.ts","../src/shared/lib/useCalendarService.ts","../src/shared/ui/ErrorBoundary/ui/ErrorBoundary.tsx","../src/features/calendar/Calendar.tsx","../src/shared/ui/Input/lib/maskDate.ts","../src/shared/ui/Input/ui/assets/CalendarIcon.tsx","../src/shared/ui/Input/ui/assets/CloseIcon.tsx","../src/shared/ui/Input/ui/Input.tsx","../src/features/calendarWithInput/CalendarWithInput.tsx","../src/shared/ui/Portal/ui/Portal.tsx","../src/features/calenderWithTodo/lib/useCalendarPortal.tsx","../src/features/calenderWithTodo/ui/CalenderWithTodo.tsx","../src/features/rangeCalender/lib/useDateRangePicker.ts","../src/features/rangeCalender/ui/RangeCalender.tsx"],"sourcesContent":["function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","export const NextIcon = () => {\n return (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M4.27337 4L3.33337 4.94L6.38671 8L3.33337 11.06L4.27337 12L8.27337 8L4.27337 4Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M8.66668 4L7.72668 4.94L10.78 8L7.72668 11.06L8.66668 12L12.6667 8L8.66668 4Z\"\n fill=\"currentColor\"\n />\n </svg>\n );\n};\n","export const PreviousIcon = () => {\n return (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M11.7266 12L12.6666 11.06L9.61329 8L12.6666 4.94L11.7266 4L7.72663 8L11.7266 12Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M7.33332 12L8.27332 11.06L5.21998 8L8.27331 4.94L7.33331 4L3.33332 8L7.33332 12Z\"\n fill=\"currentColor\"\n />\n </svg>\n );\n};\n","import type { CSSProperties, MouseEvent } from 'react';\n\nimport { CalendarCellProps } from '@entities/calendar/model/types';\n\nimport styles from './CalendarCell.module.scss';\n\nexport const CalendarCell = (props: CalendarCellProps) => {\n const {\n date,\n dayNumber,\n isCurrentMonth,\n onClick,\n isHoliday,\n isSelected,\n isInRange,\n textColor,\n backgroundColor,\n isWeekend,\n id,\n isDisabled,\n haveToDo,\n onDayClickDouble,\n } = props;\n\n const cellClasses = [\n styles.cell,\n !isCurrentMonth && styles['cell--other-month'],\n isHoliday && isCurrentMonth && styles['cell--holiday'],\n isSelected && styles['cell--selected'],\n isInRange && styles['cell--in-range'],\n isWeekend && isCurrentMonth && styles['cell--weekend'],\n ]\n .filter(Boolean)\n .join(' ');\n\n const extrasStyles: CSSProperties = {};\n\n if (isHoliday || isWeekend) {\n if (textColor) extrasStyles.color = textColor;\n if (backgroundColor) extrasStyles.backgroundColor = backgroundColor;\n }\n\n const handleOnClick = (event: MouseEvent<HTMLDivElement>) => {\n if (!isDisabled) onClick?.(date, event);\n };\n\n const handleOnClickDoble = (event: MouseEvent<HTMLDivElement>) => {\n if (!isDisabled) onDayClickDouble?.(date, event);\n };\n\n return (\n <div\n key={id}\n className={cellClasses}\n style={extrasStyles}\n onClick={handleOnClick}\n onDoubleClick={handleOnClickDoble}\n aria-label={`Day ${dayNumber}`}\n role=\"cell\"\n >\n <span className={styles['cell__day-number']}>{dayNumber}</span>\n {haveToDo && <span className={styles['cell__todo-indicator']}>˙</span>}\n </div>\n );\n};\n","import { CalendarGridProps } from '@entities/calendar/model/types';\n\nimport { CalendarCell } from '../CalendarCell/CalendarCell';\n\nimport styles from './CalendarGrid.module.scss';\n\nexport const CalendarGrid = (props: CalendarGridProps) => {\n const { dateArray, onDayClick, onDayClickDouble } = props;\n\n return (\n <div className={styles.grid} role=\"grid\">\n {dateArray.map((el) => (\n <CalendarCell\n onClick={onDayClick}\n onDayClickDouble={onDayClickDouble}\n key={el.id}\n {...el}\n />\n ))}\n </div>\n );\n};\n","import { CalendarCellProps, Weekday } from './types';\n\nexport const FAKE_DATE: CalendarCellProps[] = [\n { id: 'prev-31', date: new Date(2022, 0, 31), dayNumber: 31, isCurrentMonth: false },\n { id: '1', date: new Date(2022, 1, 1), dayNumber: 1, isCurrentMonth: true },\n { id: '2', date: new Date(2022, 1, 2), dayNumber: 2, isCurrentMonth: true },\n { id: '3', date: new Date(2022, 1, 3), dayNumber: 3, isCurrentMonth: true },\n { id: '4', date: new Date(2022, 1, 4), dayNumber: 4, isCurrentMonth: true },\n { id: '5', date: new Date(2022, 1, 5), dayNumber: 5, isCurrentMonth: true },\n { id: '6', date: new Date(2022, 1, 6), dayNumber: 6, isCurrentMonth: true },\n { id: '7', date: new Date(2022, 1, 7), dayNumber: 7, isCurrentMonth: true },\n { id: '8', date: new Date(2022, 1, 8), dayNumber: 8, isCurrentMonth: true },\n { id: '9', date: new Date(2022, 1, 9), dayNumber: 9, isCurrentMonth: true },\n { id: '10', date: new Date(2022, 1, 10), dayNumber: 10, isCurrentMonth: true },\n { id: '11', date: new Date(2022, 1, 11), dayNumber: 11, isCurrentMonth: true },\n { id: '12', date: new Date(2022, 1, 12), dayNumber: 12, isCurrentMonth: true },\n { id: '13', date: new Date(2022, 1, 13), dayNumber: 13, isCurrentMonth: true },\n { id: '14', date: new Date(2022, 1, 14), dayNumber: 14, isCurrentMonth: true },\n { id: '15', date: new Date(2022, 1, 15), dayNumber: 15, isCurrentMonth: true },\n { id: '16', date: new Date(2022, 1, 16), dayNumber: 16, isCurrentMonth: true },\n { id: '17', date: new Date(2022, 1, 17), dayNumber: 17, isCurrentMonth: true },\n { id: '18', date: new Date(2022, 1, 18), dayNumber: 18, isCurrentMonth: true },\n { id: '19', date: new Date(2022, 1, 19), dayNumber: 19, isCurrentMonth: true },\n { id: '20', date: new Date(2022, 1, 20), dayNumber: 20, isCurrentMonth: true },\n { id: '21', date: new Date(2022, 1, 21), dayNumber: 21, isCurrentMonth: true },\n { id: '22', date: new Date(2022, 1, 22), dayNumber: 22, isCurrentMonth: true },\n { id: '23', date: new Date(2022, 1, 23), dayNumber: 23, isCurrentMonth: true },\n { id: '24', date: new Date(2022, 1, 24), dayNumber: 24, isCurrentMonth: true },\n { id: '25', date: new Date(2022, 1, 25), dayNumber: 25, isCurrentMonth: true },\n { id: '26', date: new Date(2022, 1, 26), dayNumber: 26, isCurrentMonth: true },\n { id: '27', date: new Date(2022, 1, 27), dayNumber: 27, isCurrentMonth: true },\n { id: '28', date: new Date(2022, 1, 28), dayNumber: 28, isCurrentMonth: true },\n { id: 'next-1', date: new Date(2022, 2, 1), dayNumber: 1, isCurrentMonth: false },\n { id: 'next-2', date: new Date(2022, 2, 2), dayNumber: 2, isCurrentMonth: false },\n { id: 'next-3', date: new Date(2022, 2, 3), dayNumber: 3, isCurrentMonth: false },\n { id: 'next-4', date: new Date(2022, 2, 4), dayNumber: 4, isCurrentMonth: false },\n { id: 'next-5', date: new Date(2022, 2, 5), dayNumber: 5, isCurrentMonth: false },\n { id: 'next-6', date: new Date(2022, 2, 6), dayNumber: 6, isCurrentMonth: false },\n];\n\nexport const WEEKDAY: Weekday[] = [\n {\n id: '1',\n weekday: 'Su',\n },\n {\n id: '2',\n weekday: 'Mo',\n },\n {\n id: '3',\n weekday: 'Tu',\n },\n {\n id: '4',\n weekday: 'We',\n },\n {\n id: '5',\n weekday: 'Th',\n },\n {\n id: '6',\n weekday: 'Fr',\n },\n {\n id: '7',\n weekday: 'Sa',\n },\n];\n\nexport const MONDAY_INDEX = 1;\nexport const SUNDAY_INDEX = 0;\nexport const SATURDAY_INDEX = 6;\nexport const WEEK_LENGHT = 7;\n","import { MONDAY_INDEX, SUNDAY_INDEX, WEEKDAY } from '@entities/calendar/model/constants';\nimport { CalenderHeaderProps } from '@entities/calendar/model/types';\n\nimport styles from './CalendarHeader.module.scss';\n\nexport const CalendarHeader = (props: CalenderHeaderProps) => {\n const { fromMonday } = props;\n const WEEKDAY_SORT = fromMonday\n ? [...WEEKDAY.slice(MONDAY_INDEX), WEEKDAY[SUNDAY_INDEX]]\n : WEEKDAY;\n\n return (\n <>\n <div className={styles.week}>\n {WEEKDAY_SORT.map(({ weekday, id }) => (\n <div className={styles.week__cell} key={id}>\n <span className={styles.week__weekday}>{weekday}</span>\n </div>\n ))}\n </div>\n </>\n );\n};\n","import { ChangeEvent } from 'react';\n\nimport { NextIcon, PreviousIcon } from '@entities/calendar/assets';\nimport { BaseCalendarProps } from '@entities/calendar/model/types';\n\nimport { CalendarGrid } from '../CalendarGrid/CalendarGrid';\nimport { CalendarHeader } from '../CalendarHeader/CalendarHeader';\n\nimport styles from './BaseCalendar.module.scss';\n\nexport const BaseCalendar = (props: BaseCalendarProps) => {\n const {\n fromMonday,\n dateArray,\n month,\n year,\n onClickNext,\n onClickPrevious,\n onDayClick,\n canNext,\n canPrev,\n onDayClickDouble,\n yearsArray,\n onClickNextYear,\n } = props;\n\n const handleYearChange = (e: ChangeEvent<HTMLSelectElement>) => {\n const newYear = parseInt(e.target.value);\n\n onClickNextYear(newYear);\n };\n\n return (\n <article className={styles.calendar}>\n <header className={styles.calendar__header}>\n <button\n className={styles.calendar__button}\n type=\"button\"\n onClick={onClickPrevious}\n disabled={!canPrev}\n >\n <PreviousIcon />\n </button>\n <div className={styles.calendar__month}>\n {month}{' '}\n <select className={styles.calendar__year} value={year} onChange={handleYearChange}>\n {yearsArray.map((el) => (\n <option key={`option-yaer-${el}`} value={el}>\n {el}\n </option>\n ))}\n </select>\n </div>\n <button\n className={styles.calendar__button}\n type=\"button\"\n onClick={onClickNext}\n disabled={!canNext}\n >\n <NextIcon />\n </button>\n </header>\n\n <CalendarHeader fromMonday={fromMonday} />\n <CalendarGrid\n dateArray={dateArray}\n onDayClick={onDayClick}\n onDayClickDouble={onDayClickDouble}\n />\n {onDayClickDouble && (\n <span className={styles.calendar__notes}>Click twice on the day to add a task.</span>\n )}\n </article>\n );\n};\n","export const MOCK_DATES = [\n new Date(2026, 1, 14),\n new Date(2026, 2, 8),\n new Date(2025, 11, 31),\n new Date(2026, 1, 23),\n];\n\nexport enum THEMED {\n LIGHT = 'light',\n DARK = 'dark',\n}\n","import { THEMED } from '@features/calendar/model/constants';\n\nexport const getTheme = (darkThemed?: boolean) => {\n return darkThemed ? THEMED.DARK : THEMED.LIGHT;\n};\n","export const DATE_PARTS_LENGTH = 3;\nexport const MAX_INPUT_LENGTH = 10;\nexport const FIRST_INDEX = 1;\n","export const START_DATE_INDEX_ = 0;\nexport const START_MONTH_INDEX = 2;\nexport const START_YEAR_INDEX = 4;\nexport const MAX_DATE_LENGTH = 10;\n","import { CalendarCellProps, SectionParams } from '@entities/calendar/model/types';\nimport { FIRST_INDEX } from '@shared/model/constants';\nimport { START_DATE_INDEX_ } from '@shared/ui/Input/model/constants';\n\nexport const CELLS_LENGTH = 42;\nexport const MIN_CELLS_LENGTH = 28;\n\nexport const generateMonthArray = (\n currentDate: Date,\n params: SectionParams\n): CalendarCellProps[] => {\n const days: CalendarCellProps[] = [];\n const { selectedDate, rangeStart, rangeEnd, fromMonday } = params;\n\n const startWeekDay = fromMonday ? FIRST_INDEX : START_DATE_INDEX_;\n const firstDayOfMonth = new Date(\n currentDate.getFullYear(),\n currentDate.getMonth(),\n FIRST_INDEX - startWeekDay\n );\n\n const startWeekday = firstDayOfMonth.getDay();\n const startDate = new Date(firstDayOfMonth);\n\n startDate.setDate(firstDayOfMonth.getDate() - startWeekday + startWeekDay);\n\n const selectedTime = selectedDate?.getTime();\n const startTime = rangeStart?.getTime();\n const endTime = rangeEnd?.getTime();\n\n for (let i = 0; i < CELLS_LENGTH; i++) {\n const date = new Date(startDate);\n\n date.setDate(startDate.getDate() + i);\n\n const isCurrentMonth = date.getMonth() === currentDate.getMonth();\n\n if (\n !isCurrentMonth &&\n date.getDay() == START_DATE_INDEX_ + startWeekDay &&\n i >= MIN_CELLS_LENGTH\n ) {\n return days;\n }\n const newId = date.toISOString();\n\n const isSelected = selectedTime === date.getTime() && isCurrentMonth;\n const isInRange = !!(\n startTime &&\n endTime &&\n date.getTime() >= startTime &&\n date.getTime() <= endTime\n );\n\n const resultDay = {\n id: newId,\n date,\n dayNumber: date.getDate(),\n isCurrentMonth,\n isSelected,\n isInRange,\n };\n\n days.push(resultDay);\n }\n\n return days;\n};\n","import { CalendarCellProps, CalendarEngine, SectionParams } from '@entities/calendar/model/types';\nimport { FIRST_INDEX } from '@shared/model/constants';\n\nimport { generateMonthArray } from '../helpers/generateMonthArray';\n\nexport class CalenderDecorator implements CalendarEngine {\n getNextDate(date: Date): Date {\n const newDate = new Date(date.getFullYear(), date.getMonth() + FIRST_INDEX, FIRST_INDEX);\n\n return newDate;\n }\n getPreviousDate(date: Date): Date {\n const newDate = new Date(date.getFullYear(), date.getMonth() - FIRST_INDEX, FIRST_INDEX);\n\n return newDate;\n }\n getNextYear(date: Date, newYear: number): Date {\n const newDate = new Date(newYear, date.getMonth(), FIRST_INDEX);\n\n return newDate;\n }\n\n getDays(currentDate: Date, params: SectionParams): CalendarCellProps[] {\n return generateMonthArray(currentDate, params);\n }\n}\n","import { CalendarCellProps, CalendarEngine, SectionParams } from '@entities/calendar/model/types';\n\nexport abstract class BaseCalendarEngine implements CalendarEngine {\n constructor(protected engine: CalendarEngine) {}\n\n getNextDate(date: Date): Date {\n return this.engine.getNextDate(date);\n }\n getPreviousDate(date: Date): Date {\n return this.engine.getPreviousDate(date);\n }\n getNextYear(date: Date, newYear: number): Date {\n return this.engine.getNextYear(date, newYear);\n }\n abstract getDays(currentDate: Date, params: SectionParams): CalendarCellProps[];\n}\n","import { CalendarCellProps, CalendarEngine, SectionParams } from '@entities/calendar/model/types';\n\nimport { BaseCalendarEngine } from './BaseCalendarEngine';\n\nexport class FromMondayDecorator extends BaseCalendarEngine {\n private fromMonday: boolean;\n constructor(engine: CalendarEngine, fromMonday: boolean) {\n super(engine);\n this.fromMonday = fromMonday || false;\n }\n\n getDays(currentDate: Date, params: SectionParams): CalendarCellProps[] {\n const days = this.engine.getDays(currentDate, { ...params, fromMonday: this.fromMonday });\n\n return days;\n }\n}\n","import { CalendarCellProps, CalendarEngine, SectionParams } from '@entities/calendar/model/types';\n\nimport { BaseCalendarEngine } from './BaseCalendarEngine';\n\nexport class HolidayDecorator extends BaseCalendarEngine {\n private holidays: Set<number>;\n\n constructor(engine: CalendarEngine, holidays: Date[]) {\n (super(engine), (this.holidays = new Set(holidays.map((el) => el.getTime()))));\n }\n getDays(currentDate: Date, params: SectionParams): CalendarCellProps[] {\n const days = this.engine.getDays(currentDate, params);\n\n return days.map((day) => {\n const dayTime = day.date.getTime();\n\n if (this.holidays.has(dayTime)) {\n return { ...day, isHoliday: true };\n }\n\n return day;\n });\n }\n}\n","import { FIRST_INDEX } from '@shared/model/constants';\nimport { START_DATE_INDEX_ } from '@shared/ui/Input/model/constants';\n\nexport const isMinMaxValue = (date: Date, minDate: Date | null, maxDate: Date | null) => {\n if (minDate) {\n const currentDate = new Date(\n date.getFullYear(),\n date.getMonth() + FIRST_INDEX,\n START_DATE_INDEX_\n );\n\n if (currentDate <= minDate) return false;\n }\n\n if (maxDate) {\n const currentDate = new Date(date.getFullYear(), date.getMonth(), START_DATE_INDEX_);\n\n if (currentDate >= maxDate) return false;\n }\n\n return true;\n};\n","import { CalendarCellProps, CalendarEngine, SectionParams } from '@entities/calendar/model/types';\n\nimport { isMinMaxValue } from '../helpers/isMinMaxValue';\n\nimport { BaseCalendarEngine } from './BaseCalendarEngine';\n\nexport class MinMaxDecorator extends BaseCalendarEngine {\n private minDate: Date | null;\n private maxDate: Date | null;\n\n constructor(engine: CalendarEngine, minDate?: Date, maxDate?: Date) {\n super(engine);\n this.minDate = minDate || null;\n this.maxDate = maxDate || null;\n }\n\n private isDateInRange(date: Date): boolean {\n return isMinMaxValue(date, this.minDate, this.maxDate);\n }\n\n getDays(currentDate: Date, params: SectionParams): CalendarCellProps[] {\n const days = this.engine.getDays(currentDate, params) || [];\n\n return days.map((day) => {\n if (\n day.date.getTime() < (this.minDate?.getTime() || 0) ||\n day.date.getTime() > (this.maxDate?.getTime() || 0)\n ) {\n return { ...day, isDisabled: true, isCurrentMonth: false };\n }\n\n return day;\n });\n }\n\n getNextDate(date: Date): Date {\n const nextDate = this.engine.getNextDate(date);\n\n return this.isDateInRange(nextDate) ? nextDate : date;\n }\n\n getPreviousDate(date: Date): Date {\n const prevDate = this.engine.getPreviousDate(date);\n\n return this.isDateInRange(prevDate) ? prevDate : date;\n }\n\n getNextYear(date: Date, newYear: number): Date {\n const nextYear = this.engine.getNextYear(date, newYear);\n\n return this.isDateInRange(nextYear) ? nextYear : date;\n }\n}\n","export const INPUT_TYPE = {\n START: 'START',\n END: 'END',\n} as const;\n\nexport type ActiveInputType = keyof typeof INPUT_TYPE;\n","export const isSameDates = (firstDate: Date, secondDate: Date): boolean => {\n if (\n firstDate.getFullYear() === secondDate.getFullYear() &&\n firstDate.getMonth() === secondDate.getMonth() &&\n firstDate.getDate() === secondDate.getDate()\n )\n return true;\n\n return false;\n};\n","import { CalendarCellProps, CalendarEngine, SectionParams } from '@entities/calendar/model/types';\nimport { ActiveInputType, INPUT_TYPE } from '@features/rangeCalender/model/types';\n\nimport { isSameDates } from '../helpers/isSameDates';\n\nimport { BaseCalendarEngine } from './BaseCalendarEngine';\n\ninterface RangeInput {\n rangeStart: Date | null;\n rangeEnd: Date | null;\n}\n\nexport class RangeDecorator extends BaseCalendarEngine {\n private listeners = new Set<() => void>();\n private rangeStart: Date | null;\n private rangeEnd: Date | null;\n\n constructor(_config: CalendarEngine) {\n super(_config);\n this.rangeStart = null;\n this.rangeEnd = null;\n }\n\n getDays(currentDate: Date, params: SectionParams): CalendarCellProps[] {\n const days = this.engine.getDays(currentDate, params);\n const { rangeStart, rangeEnd } = params;\n\n if (!rangeStart && !rangeEnd) return days;\n\n return days.map((day) => {\n const isStart = rangeStart ? isSameDates(day.date, rangeStart) : false;\n const isEnd = rangeEnd ? isSameDates(day.date, rangeEnd) : false;\n const inBetween =\n rangeStart && rangeEnd && day.date > rangeStart && day.date < rangeEnd ? true : false;\n\n return { ...day, isSelected: isStart || isEnd, isInRange: isStart || isEnd || inBetween };\n });\n }\n\n public getRangeStart(): Date | null {\n return this.rangeStart;\n }\n\n public getRangeEnd(): Date | null {\n return this.rangeEnd;\n }\n\n public setRangeStart(date: Date | null) {\n this.rangeStart = date;\n\n if (date && this.rangeEnd && date > this.rangeEnd) {\n this.rangeEnd = null;\n }\n this.notify();\n }\n\n public setRangeEnd(date: Date | null) {\n if (date && this.rangeStart && date < this.rangeStart) {\n return;\n }\n this.rangeEnd = date;\n this.notify();\n }\n\n public clearRange(inputType?: ActiveInputType) {\n if (inputType === INPUT_TYPE.END) {\n this.rangeEnd = null;\n } else {\n this.rangeEnd = null;\n this.rangeStart = null;\n }\n\n this.notify();\n }\n\n public handleRangeClick(date: Date): RangeInput {\n if (!this.rangeStart) {\n this.rangeStart = date;\n } else if (!this.rangeEnd) {\n if (date < this.rangeStart) {\n this.rangeStart = date;\n this.rangeEnd = null;\n } else {\n this.rangeEnd = date;\n }\n } else {\n this.rangeStart = date;\n this.rangeEnd = null;\n }\n\n this.notify();\n\n return {\n rangeStart: this.rangeStart,\n rangeEnd: this.rangeEnd,\n };\n }\n\n private notify() {\n this.listeners.forEach((listener) => listener());\n }\n\n public subscribe(listener: () => void) {\n this.listeners.add(listener);\n\n return () => this.listeners.delete(listener);\n }\n}\n","export class StorageService<T> {\n private key: string;\n private defaultValue: T;\n\n constructor(key: string, defaultValue: T) {\n this.key = key;\n this.defaultValue = defaultValue;\n }\n\n get(): T {\n const data = localStorage.getItem(this.key);\n\n return data ? JSON.parse(data) : this.defaultValue;\n }\n\n set(value: T): void {\n localStorage.setItem(this.key, JSON.stringify(value));\n }\n}\n","import { StorageService } from '@entities/calendar/model/storageService';\nimport { CalendarCellProps, CalendarEngine, SectionParams } from '@entities/calendar/model/types';\nimport { START_DATE_INDEX_ } from '@shared/ui/Input/model/constants';\n\nimport { BaseCalendarEngine } from './BaseCalendarEngine';\n\nexport class TodoDecorator extends BaseCalendarEngine {\n private STORAGE_KEY = 'calendar_todos';\n private storage = new StorageService<Record<string, string[]>>(this.STORAGE_KEY, {});\n\n constructor(engine: CalendarEngine) {\n super(engine);\n }\n\n private getDateKey(date: Date): string {\n return date.toISOString().split('T')[START_DATE_INDEX_];\n }\n\n private getAllTodos(): Record<string, string[]> {\n return this.storage.get();\n }\n\n public getTodosByDate(date: Date): string[] {\n const key = this.getDateKey(date);\n\n return this.getAllTodos()[key] || [];\n }\n\n public addTodo(date: Date, todo: string): void {\n const key = this.getDateKey(date);\n const allTodos = this.getAllTodos();\n\n allTodos[key] = allTodos[key] || [];\n allTodos[key].push(todo);\n\n this.storage.set(allTodos);\n }\n\n public deleteTodo(date: Date, todo: string): void {\n const key = this.getDateKey(date);\n const allTodos = this.getAllTodos();\n\n allTodos[key] = allTodos[key] || [];\n allTodos[key] = allTodos[key].filter((item) => item !== todo);\n\n this.storage.set(allTodos);\n }\n\n getDays(currentDate: Date, params: SectionParams): CalendarCellProps[] {\n const todos = this.getAllTodos();\n const days = this.engine.getDays(currentDate, params);\n\n return days.map((day) => {\n const key = this.getDateKey(day.date);\n const haveToDo = todos[key] && todos[key].length > 0;\n\n return {\n ...day,\n todo: todos[key] || [],\n haveToDo,\n };\n });\n }\n}\n","import { WEEK_LENGHT } from '@entities/calendar/model/constants';\nimport { CalendarCellProps, CalendarEngine, SectionParams } from '@entities/calendar/model/types';\nimport { FIRST_INDEX } from '@shared/model/constants';\nimport { START_DATE_INDEX_ } from '@shared/ui/Input/model/constants';\n\nimport { isSameDates } from '../helpers/isSameDates';\n\nimport { BaseCalendarEngine } from './BaseCalendarEngine';\n\nexport class ViewByWeekDecorator extends BaseCalendarEngine {\n constructor(engine: CalendarEngine) {\n super(engine);\n }\n getDays(currentDate: Date, params: SectionParams): CalendarCellProps[] {\n const daysArray = this.engine.getDays(currentDate, params);\n const currentDateIndex = daysArray.findIndex((day) => isSameDates(day.date, currentDate));\n\n if (currentDateIndex === -FIRST_INDEX) return daysArray.slice(START_DATE_INDEX_, WEEK_LENGHT);\n const weekCount = Math.floor(currentDateIndex / WEEK_LENGHT);\n\n return daysArray.slice(weekCount * WEEK_LENGHT, weekCount * WEEK_LENGHT + WEEK_LENGHT);\n }\n\n getNextDate(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate() + WEEK_LENGHT);\n }\n\n getPreviousDate(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate() - WEEK_LENGHT);\n }\n}\n","import { SATURDAY_INDEX, SUNDAY_INDEX } from '@entities/calendar/model/constants';\nimport { CalendarCellProps, CalendarEngine, SectionParams } from '@entities/calendar/model/types';\n\nimport { BaseCalendarEngine } from './BaseCalendarEngine';\n\nexport class WeekdayDecorator extends BaseCalendarEngine {\n constructor(engine: CalendarEngine) {\n super(engine);\n }\n getDays(currentDate: Date, params: SectionParams): CalendarCellProps[] {\n const days = this.engine.getDays(currentDate, params);\n\n return days.map((day) => {\n const dayDay = day.date.getDay();\n\n if (dayDay == SUNDAY_INDEX || dayDay == SATURDAY_INDEX) return { ...day, isWeekend: true };\n\n return day;\n });\n }\n}\n","import { ValidationResult } from '@entities/calendar/model/types';\nimport { DATE_PARTS_LENGTH, FIRST_INDEX, MAX_INPUT_LENGTH } from '@shared/model/constants';\n\nconst MAX_DAY = 31;\nconst MAX_MONTH = 12;\n\nexport const MAX_YEAR = 2050;\nexport const MIN_YEAR = 1970;\n\nexport const validateDateInput = (value: string): ValidationResult => {\n const validationResult: ValidationResult = {\n isValid: false,\n error: '',\n date: null,\n };\n\n const trimmed = value.trim();\n const parts = trimmed.split('.');\n\n if (parts.length !== DATE_PARTS_LENGTH) {\n return { ...validationResult, error: 'Invalid format. Expected DD.MM.YYYY' };\n }\n\n if (trimmed.length > MAX_INPUT_LENGTH) {\n return { ...validationResult, error: 'Input too long' };\n }\n\n const [dayRaw, monthRaw, yearRaw] = parts;\n const day = Number(dayRaw);\n const month = Number(monthRaw);\n const year = Number(yearRaw);\n\n if (Number.isNaN(day) || Number.isNaN(month) || Number.isNaN(year)) {\n return { ...validationResult, error: 'Invalid numeric values' };\n }\n\n if (day > MAX_DAY || day < FIRST_INDEX) {\n return { ...validationResult, error: 'The day should be from 1 to 31' };\n }\n\n if (month > MAX_MONTH || month < FIRST_INDEX) {\n return { ...validationResult, error: 'The month should be from 1 to 12' };\n }\n\n if (year > MAX_YEAR) {\n return { ...validationResult, error: `The year should be less than ${MAX_YEAR}` };\n }\n\n if (year < MIN_YEAR) {\n return { ...validationResult, error: `The year should be greater than ${MIN_YEAR}` };\n }\n\n const newDate = new Date(year, month - FIRST_INDEX, day);\n\n if (\n newDate.getFullYear() !== year ||\n newDate.getMonth() !== month - FIRST_INDEX ||\n newDate.getDate() !== day\n ) {\n return { ...validationResult, error: 'Invalid date for the given month/year' };\n }\n\n return { ...validationResult, isValid: true, date: newDate };\n};\n","import { FIRST_INDEX } from '@shared/model/constants';\n\nimport { MAX_YEAR, MIN_YEAR } from './validationInput';\n\nexport const generateYearArray = (minYear?: number, maxYear?: number) => {\n minYear ??= MIN_YEAR;\n maxYear ??= MAX_YEAR;\n\n const yearArray = [];\n\n while (minYear <= maxYear) {\n yearArray.push(minYear);\n minYear += FIRST_INDEX;\n }\n\n return yearArray;\n};\n","import { MouseEvent } from 'react';\n\nimport { ActiveInputType } from '@features/rangeCalender/model/types';\n\nimport { CalenderDecorator } from '../lib/decorators/CalenderDecorator';\nimport { FromMondayDecorator } from '../lib/decorators/FromMondayDecorator';\nimport { HolidayDecorator } from '../lib/decorators/HolidayDecorator';\nimport { MinMaxDecorator } from '../lib/decorators/MinMaxDecorator';\nimport { RangeDecorator } from '../lib/decorators/RangeCalenderDecorator';\nimport { TodoDecorator } from '../lib/decorators/TodoDecorator';\nimport { ViewByWeekDecorator } from '../lib/decorators/ViewByWeekDecorator';\nimport { WeekdayDecorator } from '../lib/decorators/WeekdayDecorator';\nimport { generateYearArray } from '../lib/helpers/generateYearArray';\nimport { validateDateInput } from '../lib/helpers/validationInput';\n\nimport { BaseCalendarProps, CalendarEngine, EngineConfig } from './types';\n\nexport class DatepickerService {\n private engine: CalendarEngine;\n private viewDate: Date;\n private selectedDate: Date | null;\n private listeners = new Set<() => void>();\n private yearsArray: number[] = [];\n\n constructor(_config?: EngineConfig) {\n this.engine = this.composeEngine(_config);\n this.viewDate = this.selectFirstDay(_config);\n this.selectedDate = _config?.defaultDate || null;\n this.yearsArray = generateYearArray(\n _config?.minDate?.getFullYear(),\n _config?.maxDate?.getFullYear()\n );\n }\n\n private composeEngine(_config?: EngineConfig): CalendarEngine {\n let engine: CalendarEngine = new CalenderDecorator();\n\n if (_config?.maxDate || _config?.minDate || _config?.defaultDate)\n engine = new MinMaxDecorator(engine, _config.minDate, _config.maxDate);\n\n if (_config?.withHoliday && _config.holidays)\n engine = new HolidayDecorator(engine, _config.holidays);\n\n if (_config?.withWeekend) engine = new WeekdayDecorator(engine);\n\n if (_config?.fromMonday) engine = new FromMondayDecorator(engine, _config.fromMonday);\n\n if (_config?.viewByWeek) engine = new ViewByWeekDecorator(engine);\n\n if (_config?.withTodo) engine = new TodoDecorator(engine);\n\n if (_config?.withRange) engine = new RangeDecorator(engine);\n\n return engine;\n }\n\n public subscribe(listener: () => void) {\n this.listeners.add(listener);\n\n return () => this.listeners.delete(listener);\n }\n\n public notify() {\n this.listeners.forEach((listener) => listener());\n }\n\n public next() {\n this.viewDate = this.engine.getNextDate(this.viewDate);\n this.notify();\n }\n public prev() {\n this.viewDate = this.engine.getPreviousDate(this.viewDate);\n this.notify();\n }\n\n public handleInputChange(value: string) {\n const result = validateDateInput(value);\n\n if (result.isValid && result.date) {\n this.selectedDate = result.date;\n this.viewDate = result.date;\n this.notify();\n }\n\n return result;\n }\n\n public getInputValue(): string {\n if (!this.selectedDate) {\n return '';\n }\n\n return this.selectedDate.toLocaleDateString();\n }\n\n public setSelectedDate(date: Date | null) {\n this.selectedDate = date;\n if (date) this.viewDate = date;\n this.notify();\n }\n\n public getSelectedDate(): Date | null {\n return this.selectedDate;\n }\n private getNextYear(newYear: number): Date {\n const newDate = this.engine.getNextYear(this.viewDate, newYear);\n\n this.viewDate = newDate;\n\n this.notify();\n\n return newDate;\n }\n public getViewModel(): BaseCalendarProps {\n const nextDate = this.engine.getNextDate(this.viewDate);\n const prevDate = this.engine.getPreviousDate(this.viewDate);\n let rangeStart = null;\n let rangeEnd = null;\n\n if (this.engine instanceof RangeDecorator) {\n rangeStart = this.engine.getRangeStart();\n rangeEnd = this.engine.getRangeEnd();\n }\n\n return {\n dateArray: this.engine.getDays(this.viewDate, {\n selectedDate: this.selectedDate,\n rangeStart: rangeStart,\n rangeEnd: rangeEnd,\n }),\n fromMonday: false,\n month: this.viewDate.toLocaleString('en-US', { month: 'long' }),\n year: this.viewDate.getFullYear(),\n onClickNext: () => this.next(),\n onClickPrevious: () => this.prev(),\n onDayClick: (date: Date, _event?: MouseEvent<HTMLDivElement>) => this.setSelectedDate(date),\n onDayRangeClick: (date: Date) => this.handleRangeClick(date.toLocaleDateString()),\n onClickNextYear: (newYear: number) => this.getNextYear(newYear),\n canNext: nextDate.getTime() !== this.viewDate.getTime(),\n canPrev: prevDate.getTime() !== this.viewDate.getTime(),\n yearsArray: this.yearsArray,\n };\n }\n\n private selectFirstDay(_config?: EngineConfig): Date {\n const min = _config?.minDate;\n const max = _config?.maxDate;\n const defaultDate = _config?.defaultDate || new Date();\n\n const isTooEarly = min && defaultDate.getTime() < min.getTime();\n const isTooLate = max && defaultDate.getTime() > max.getTime();\n\n if (isTooEarly || isTooLate) {\n return min || max || defaultDate;\n }\n\n return defaultDate;\n }\n\n public handleRangeClick(value: string) {\n const date = validateDateInput(value);\n\n if (date.isValid && date.date && this.engine instanceof RangeDecorator) {\n const { rangeStart, rangeEnd } = this.engine.handleRangeClick(date.date);\n\n this.selectedDate = rangeEnd || rangeStart;\n this.viewDate = date.date;\n this.notify();\n }\n\n return date;\n }\n\n public clearRange(inputType?: ActiveInputType) {\n if (this.engine instanceof RangeDecorator) {\n this.engine.clearRange(inputType);\n const start = this.engine.getRangeStart();\n const end = this.engine.getRangeEnd();\n\n this.selectedDate = end || start;\n this.notify();\n }\n }\n public getRange(): { start: Date | null; end: Date | null } {\n if (this.engine instanceof RangeDecorator) {\n return {\n start: this.engine.getRangeStart(),\n end: this.engine.getRangeEnd(),\n };\n }\n\n return { start: null, end: null };\n }\n\n public setRangeStart(date: Date | null) {\n if (this.engine instanceof RangeDecorator) {\n this.engine.setRangeStart(date);\n this.selectedDate = date;\n if (date) this.viewDate = date;\n this.notify();\n }\n }\n\n public setRangeEnd(date: Date | null) {\n if (this.engine instanceof RangeDecorator) {\n this.engine.setRangeEnd(date);\n this.selectedDate = date;\n if (date) this.viewDate = date;\n this.notify();\n }\n }\n\n public getRangeStart(): Date | null {\n if (this.engine instanceof RangeDecorator) {\n return this.engine.getRangeStart();\n }\n\n return null;\n }\n\n public getRangeEnd(): Date | null {\n if (this.engine instanceof RangeDecorator) {\n return this.engine.getRangeEnd();\n }\n\n return null;\n }\n\n public addTodo(date: Date, text: string) {\n if (this.engine instanceof TodoDecorator) {\n this.engine.addTodo(date, text);\n this.notify();\n }\n }\n\n public getTodosByDate(date: Date): string[] {\n if (this.engine instanceof TodoDecorator) {\n return this.engine.getTodosByDate(date);\n }\n\n return [];\n }\n\n public deleteTodo(date: Date, todo: string): void {\n if (this.engine instanceof TodoDecorator) {\n this.engine.deleteTodo(date, todo);\n this.notify();\n }\n }\n}\n","import { useEffect, useMemo, useState } from 'react';\n\nimport { DatepickerService } from '@entities/calendar/model/service';\nimport { BaseCalendarProps, EngineConfig } from '@entities/calendar/model/types';\n\nexport const useCalendarService = (config?: EngineConfig, withTodo?: boolean) => {\n const service = useMemo(\n () => new DatepickerService({ ...config, withTodo: withTodo }),\n [config, withTodo]\n );\n\n const [viewModel, setViewModel] = useState<BaseCalendarProps>(service.getViewModel());\n\n useEffect(() => {\n const unsubscribe = service.subscribe(() => {\n setViewModel(service.getViewModel());\n });\n\n return () => {\n unsubscribe();\n };\n }, [service]);\n\n return {\n service,\n viewModel,\n };\n};\n","import { Component, ErrorInfo } from 'react';\n\nimport { Props, State } from '../types/types';\n\nimport styles from './ErrorBoundary.module.scss';\n\nexport class ErrorBoundary extends Component<Props, State> {\n public state: State = {\n hasError: false,\n };\n\n public static getDerivedStateFromError(_: Error): State {\n return { hasError: true };\n }\n\n public componentDidCatch(error: Error, errorInfo: ErrorInfo) {\n console.error('Uncaught error:', error, errorInfo);\n }\n\n private handleReload = () => {\n const updateState: State = { hasError: false };\n\n this.setState(updateState);\n\n window.location.reload();\n };\n\n public render() {\n if (this.state.hasError) {\n return (\n <article className={styles.errorContainer}>\n <p>Something went wrong.</p>\n <button onClick={this.handleReload} className={styles.reload}>\n ↻\n </button>\n </article>\n );\n }\n\n return this.props.children;\n }\n}\n","import { EngineConfig } from '@entities/calendar/model/types';\nimport { BaseCalendar } from '@entities/calendar/ui/BaseCalendar/BaseCalendar';\nimport { getTheme } from '@shared/lib/getThemed';\nimport { useCalendarService } from '@shared/lib/useCalendarService';\nimport { ErrorBoundary } from '@shared/ui/ErrorBoundary/ui/ErrorBoundary';\n\nexport const Calendar = (config?: EngineConfig) => {\n const { viewModel } = useCalendarService(config);\n\n const fromMonday = config?.fromMonday || false;\n const themed = getTheme(config?.darkThemed);\n\n return (\n <ErrorBoundary>\n <div data-theme={themed}>\n <BaseCalendar {...viewModel} fromMonday={fromMonday} />\n </div>\n </ErrorBoundary>\n );\n};\n","import { START_DATE_INDEX_, START_MONTH_INDEX, START_YEAR_INDEX } from '../model/constants';\n\nexport const maskDate = (value: string): string => {\n const digits = value.replace(/\\D/g, '');\n\n if (digits.length <= START_MONTH_INDEX) {\n return `${digits}`;\n }\n\n if (digits.length <= START_YEAR_INDEX) {\n return `${digits.substring(START_DATE_INDEX_, START_MONTH_INDEX)}.${digits.substring(START_MONTH_INDEX)}`;\n }\n\n return `${digits.substring(START_DATE_INDEX_, START_MONTH_INDEX)}.${digits.substring(START_MONTH_INDEX, START_YEAR_INDEX)}.${digits.substring(START_YEAR_INDEX)}`;\n};\n","export const CalendarIcon = () => {\n return (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clipPath=\"url(#clip0_1_539)\">\n <path\n d=\"M8.2 9.59999C7.97333 9.59999 7.78347 9.52319 7.6304 9.36959C7.4768 9.21653 7.4 9.02666 7.4 8.79999C7.4 8.57333 7.4768 8.38319 7.6304 8.22959C7.78347 8.07653 7.97333 7.99999 8.2 7.99999C8.42667 7.99999 8.6168 8.07653 8.7704 8.22959C8.92347 8.38319 9 8.57333 9 8.79999C9 9.02666 8.92347 9.21653 8.7704 9.36959C8.6168 9.52319 8.42667 9.59999 8.2 9.59999ZM5 9.59999C4.77333 9.59999 4.5832 9.52319 4.4296 9.36959C4.27653 9.21653 4.2 9.02666 4.2 8.79999C4.2 8.57333 4.27653 8.38319 4.4296 8.22959C4.5832 8.07653 4.77333 7.99999 5 7.99999C5.22667 7.99999 5.4168 8.07653 5.5704 8.22959C5.72347 8.38319 5.8 8.57333 5.8 8.79999C5.8 9.02666 5.72347 9.21653 5.5704 9.36959C5.4168 9.52319 5.22667 9.59999 5 9.59999ZM11.4 9.59999C11.1733 9.59999 10.9835 9.52319 10.8304 9.36959C10.6768 9.21653 10.6 9.02666 10.6 8.79999C10.6 8.57333 10.6768 8.38319 10.8304 8.22959C10.9835 8.07653 11.1733 7.99999 11.4 7.99999C11.6267 7.99999 11.8165 8.07653 11.9696 8.22959C12.1232 8.38319 12.2 8.57333 12.2 8.79999C12.2 9.02666 12.1232 9.21653 11.9696 9.36959C11.8165 9.52319 11.6267 9.59999 11.4 9.59999ZM8.2 12.8C7.97333 12.8 7.78347 12.7232 7.6304 12.5696C7.4768 12.4165 7.4 12.2267 7.4 12C7.4 11.7733 7.4768 11.5835 7.6304 11.4304C7.78347 11.2768 7.97333 11.2 8.2 11.2C8.42667 11.2 8.6168 11.2768 8.7704 11.4304C8.92347 11.5835 9 11.7733 9 12C9 12.2267 8.92347 12.4165 8.7704 12.5696C8.6168 12.7232 8.42667 12.8 8.2 12.8ZM5 12.8C4.77333 12.8 4.5832 12.7232 4.4296 12.5696C4.27653 12.4165 4.2 12.2267 4.2 12C4.2 11.7733 4.27653 11.5835 4.4296 11.4304C4.5832 11.2768 4.77333 11.2 5 11.2C5.22667 11.2 5.4168 11.2768 5.5704 11.4304C5.72347 11.5835 5.8 11.7733 5.8 12C5.8 12.2267 5.72347 12.4165 5.5704 12.5696C5.4168 12.7232 5.22667 12.8 5 12.8ZM11.4 12.8C11.1733 12.8 10.9835 12.7232 10.8304 12.5696C10.6768 12.4165 10.6 12.2267 10.6 12C10.6 11.7733 10.6768 11.5835 10.8304 11.4304C10.9835 11.2768 11.1733 11.2 11.4 11.2C11.6267 11.2 11.8165 11.2768 11.9696 11.4304C12.1232 11.5835 12.2 11.7733 12.2 12C12.2 12.2267 12.1232 12.4165 11.9696 12.5696C11.8165 12.7232 11.6267 12.8 11.4 12.8ZM2.6 16C2.16 16 1.7832 15.8435 1.4696 15.5304C1.15653 15.2168 1 14.84 1 14.4V3.19999C1 2.75999 1.15653 2.38346 1.4696 2.07039C1.7832 1.75679 2.16 1.59999 2.6 1.59999H3.4V-7.62939e-06H5V1.59999H11.4V-7.62939e-06H13V1.59999H13.8C14.24 1.59999 14.6168 1.75679 14.9304 2.07039C15.2435 2.38346 15.4 2.75999 15.4 3.19999V14.4C15.4 14.84 15.2435 15.2168 14.9304 15.5304C14.6168 15.8435 14.24 16 13.8 16H2.6ZM2.6 14.4H13.8V6.39999H2.6V14.4Z\"\n fill=\"currentColor\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_1_539\">\n <rect width=\"16\" height=\"16\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n );\n};\n","export const CloseIcon = () => {\n return (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M12.9872 3.04239C10.2573 0.319202 5.77739 0.319202 3.04745 3.04239C0.317516 5.76559 0.317516 10.2344 3.04745 12.9576C5.77739 15.6808 10.1873 15.6808 12.9172 12.9576C15.6471 10.2344 15.7171 5.76559 12.9872 3.04239ZM9.97728 10.9327L8.01733 8.97756L6.05738 10.9327L5.0774 9.95511L7.03735 8L5.0774 6.04489L6.05738 5.06733L8.01733 7.02244L9.97728 5.06733L10.9573 6.04489L8.99731 8L10.9573 9.95511L9.97728 10.9327Z\"\n fill=\"currentColor\"\n />\n </svg>\n );\n};\n","import { ChangeEvent, useId } from 'react';\n\nimport { maskDate } from '../lib/maskDate';\nimport { MAX_DATE_LENGTH } from '../model/constants';\nimport { InputProps } from '../model/types';\n\nimport { CalendarIcon, CloseIcon } from './assets';\nimport styles from './Input.module.scss';\n\nexport const Input = (props: InputProps) => {\n const { value, placeholder, error, label, handleIsOpen, onClear, onChange } = props;\n\n const inputId = useId();\n\n const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n const maskedValue = maskDate(e.target.value);\n\n onChange?.(maskedValue);\n };\n\n const clearButtonStyles = [styles['wrapper__icon'], !value && styles['wrapper__icon--hidden']]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={styles.wrapper}>\n {label && (\n <label htmlFor={inputId} className={styles.wrapper__label}>\n {label}\n </label>\n )}\n\n <div className={styles['wrapper__input-wrapper']}>\n <button\n type=\"button\"\n onClick={handleIsOpen}\n className={styles.wrapper__icon}\n aria-label=\"Open calendar\"\n >\n <CalendarIcon />\n </button>\n\n <input\n id={inputId}\n type=\"text\"\n placeholder={placeholder ?? 'Choose Date'}\n value={value}\n className={styles.wrapper__field}\n onChange={handleChange}\n maxLength={MAX_DATE_LENGTH}\n />\n\n <button\n type=\"button\"\n onClick={onClear}\n className={clearButtonStyles}\n aria-label=\"Clear input\"\n >\n <CloseIcon />\n </button>\n </div>\n {error && <p className={styles.wrapper__error}>{error}</p>}\n </div>\n );\n};\n","import { useEffect, useState } from 'react';\n\nimport { DatepickerService } from '@entities/calendar/model/service';\nimport { BaseCalendarProps } from '@entities/calendar/model/types';\nimport { BaseCalendar } from '@entities/calendar/ui/BaseCalendar/BaseCalendar';\nimport { getTheme } from '@shared/lib/getThemed';\nimport { ErrorBoundary } from '@shared/ui/ErrorBoundary/ui/ErrorBoundary';\nimport { Input } from '@shared/ui/Input/ui/Input';\n\nimport styles from './CalendarWithInput.module.scss';\nimport { CalanderWithInputprops } from './model/types';\n\nconst service = new DatepickerService();\n\nexport const CalendarWithInput = (props: CalanderWithInputprops) => {\n const [error, setError] = useState<string>('');\n const [inputValue, setInputValue] = useState<string>(service.getInputValue());\n const [viewModel, setViewModel] = useState<BaseCalendarProps>(service.getViewModel());\n\n const [isOpenCalendar, setIsOpenCalendar] = useState<boolean>(false);\n\n const handleInputChange = (value: string) => {\n setInputValue(value);\n\n const { error } = service.handleInputChange(value);\n\n setError(error);\n };\n\n const handleClear = () => {\n service.setSelectedDate(null);\n setIsOpenCalendar(false);\n };\n\n const handleIsOpen = () => {\n setIsOpenCalendar((pr) => !pr);\n };\n\n useEffect(() => {\n const unsubscribe = service.subscribe(() => {\n setViewModel(service.getViewModel());\n setInputValue(service.getInputValue());\n });\n\n return () => {\n unsubscribe();\n };\n }, []);\n\n const themed = getTheme(props?.darkThemed);\n\n return (\n <ErrorBoundary>\n <div data-theme={themed} className={styles.wrapper}>\n <Input\n value={inputValue}\n onChange={handleInputChange}\n onClear={handleClear}\n handleIsOpen={handleIsOpen}\n error={error}\n {...props}\n />\n {isOpenCalendar && (\n <div className={styles.wrapper__calendar}>\n <BaseCalendar {...viewModel} />\n </div>\n )}\n </div>\n </ErrorBoundary>\n );\n};\n","import { ChangeEvent, MouseEventHandler, useEffect, useMemo, useState } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport { THEMED } from '@features/calendar/model/constants';\n\nimport { PortalPosition, PortalProps } from '../model/types';\n\nimport styles from './Portal.module.scss';\n\nconst containerCreate = (themed: THEMED) => {\n if (typeof document === 'undefined') return null;\n const div = document.createElement('div');\n\n div.id = `portal-root-${Math.random()}`;\n div.setAttribute('data-theme', themed);\n div.ariaLabel = 'todo-portal';\n\n return div;\n};\n\nexport const Portal = (props: PortalProps) => {\n const [inputValue, setInputValue] = useState('');\n const [todoToDelete, setTodoToDelete] = useState<string | null>(null);\n\n const {\n anchorEl,\n portalRef,\n isOpenPortal,\n onAddTodo,\n onClose,\n selectedDate,\n getTodos,\n onDeleteTodo,\n themed,\n } = props;\n\n const container = useMemo(() => containerCreate(themed), [themed]);\n\n const todos = selectedDate ? getTodos(selectedDate) : [];\n\n useEffect(() => {\n if (!container) return;\n document.body.appendChild(container);\n\n return () => {\n document.body.removeChild(container);\n };\n }, [container]);\n\n const handleClickInside: MouseEventHandler<HTMLElement> = (event) => {\n event.stopPropagation();\n };\n\n const getPosition = (): PortalPosition => {\n if (!anchorEl) return { top: '', left: '' };\n\n const { bottom, left } = anchorEl.getBoundingClientRect();\n\n const buttonWidth = anchorEl.offsetWidth || 0;\n\n const topPosition = `${bottom + window.scrollY}px`;\n\n let leftPosition = left + window.scrollX + buttonWidth;\n\n return {\n top: topPosition,\n left: `${leftPosition}px`,\n };\n };\n\n const handleAdd = () => {\n if (!inputValue.trim() || !selectedDate) return;\n\n onAddTodo(selectedDate, inputValue);\n setInputValue('');\n };\n\n const askDeleteConfirmation = (todo: string) => () => {\n setTodoToDelete(todo);\n };\n\n const cancelDelete = () => {\n setTodoToDelete(null);\n };\n\n const confirmDelete = () => {\n if (selectedDate && todoToDelete) {\n onDeleteTodo(selectedDate, todoToDelete);\n setTodoToDelete(null);\n }\n };\n const handleInputChange = (e: ChangeEvent<HTMLInputElement>) => {\n setInputValue(e.target.value);\n };\n\n const portalPosition = getPosition();\n\n if (!isOpenPortal || !container) return null;\n\n return createPortal(\n <article\n ref={portalRef}\n onClick={handleClickInside}\n className={styles.portal}\n style={{\n position: 'absolute',\n top: portalPosition.top,\n left: portalPosition.left,\n }}\n >\n <div className={styles['header']}>\n <p className={styles['header__title']}>TO DO</p>\n <button className={styles['header__close']} onClick={onClose} aria-label=\"Close portal\">\n ×\n </button>\n </div>\n <div className={styles['input-wrapper']}>\n <input\n className={styles['input-wrapper__input']}\n type=\"text\"\n value={inputValue}\n onChange={handleInputChange}\n />\n <button className={styles['input-wrapper__button']} type=\"button\" onClick={handleAdd}>\n Add\n </button>\n </div>\n <div className={styles['todo-list']}>\n {todos?.length === 0 ? (\n <div className={styles['todo-list__empty']}>No tasks yet. Add one!</div>\n ) : (\n todos?.map((todo) => (\n <div key={`todo-item-${todo}`} className={styles['todo-list__item']}>\n {todoToDelete === todo ? (\n <>\n <span className={styles['todo-list__text']}>Are you sure?</span>\n <button onClick={confirmDelete} className={styles['todo-list__confirm-yes']}>\n Yes\n </button>\n <button onClick={cancelDelete} className={styles['todo-list__confirm-no']}>\n No\n </button>\n </>\n ) : (\n <>\n {' '}\n <span className={styles['todo-list__text']}>{todo}</span>\n <button\n className={styles['todo-list__delete']}\n onClick={askDeleteConfirmation(todo)}\n aria-label=\"Delete task\"\n >\n ×\n </button>\n </>\n )}\n </div>\n ))\n )}\n </div>\n </article>,\n container\n );\n};\n","import { useCallback, useEffect, useRef, useState } from 'react';\n\nexport const useCalendarPortal = () => {\n const [isOpenPortal, setIsOpenPortal] = useState<boolean>(false);\n const [selectedDate, setSelectedDate] = useState<Date | null>(null);\n\n const portalRef = useRef<HTMLDivElement | null>(null);\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);\n\n const openPortal = useCallback((date: Date, element: HTMLElement) => {\n setSelectedDate(date);\n setAnchorEl(element);\n setIsOpenPortal(true);\n }, []);\n\n const closePortal = useCallback(() => {\n setIsOpenPortal(false);\n }, []);\n\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (!isOpenPortal) return;\n\n const target = event.target as Node;\n\n if (!portalRef.current?.contains(target) && !anchorEl?.contains(target)) {\n closePortal();\n }\n };\n\n document.addEventListener('mousedown', handleClickOutside);\n\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n };\n }, [isOpenPortal, anchorEl, closePortal]);\n\n return { isOpenPortal, selectedDate, anchorEl, portalRef, openPortal, closePortal };\n};\n","import { MouseEvent } from 'react';\n\nimport { EngineConfig } from '@entities/calendar/model/types';\nimport { BaseCalendar } from '@entities/calendar/ui/BaseCalendar/BaseCalendar';\nimport { getTheme } from '@shared/lib/getThemed';\nimport { ErrorBoundary } from '@shared/ui/ErrorBoundary/ui/ErrorBoundary';\nimport { Portal } from '@shared/ui/Portal/ui/Portal';\n\nimport { useCalendarService } from '../../../shared/lib/useCalendarService';\nimport { useCalendarPortal } from '../lib/useCalendarPortal';\n\nexport const CalendarWithTodo = (config?: EngineConfig) => {\n const { service, viewModel } = useCalendarService(config, true);\n const portal = useCalendarPortal();\n\n const onDayClickDouble = (date: Date, event?: MouseEvent<HTMLDivElement>) => {\n if (!event) return;\n service.setSelectedDate(date);\n portal.openPortal(date, event.currentTarget);\n };\n\n const onDayClick = (date: Date, event?: MouseEvent<HTMLDivElement>) => {\n if (!event) return;\n service.setSelectedDate(date);\n };\n\n const handleAddTodo = (date: Date, text: string) => service.addTodo(date, text);\n\n const handleDeleteTodo = (date: Date, todo: string) => service.deleteTodo(date, todo);\n\n const handleGetTodo = (date: Date) => service.getTodosByDate(date);\n\n const themed = getTheme(config?.darkThemed);\n\n return (\n <ErrorBoundary>\n <article data-theme={themed}>\n <BaseCalendar {...viewModel} onDayClick={onDayClick} onDayClickDouble={onDayClickDouble} />\n\n <Portal\n id={`portal-${portal.selectedDate?.getTime()}`}\n isOpenPortal={portal.isOpenPortal}\n selectedDate={portal.selectedDate}\n anchorEl={portal.anchorEl}\n portalRef={portal.portalRef}\n onClose={portal.closePortal}\n onAddTodo={handleAddTodo}\n onDeleteTodo={handleDeleteTodo}\n getTodos={handleGetTodo}\n themed={themed}\n />\n </article>\n </ErrorBoundary>\n );\n};\n","import { useEffect, useMemo, useState } from 'react';\n\nimport { validateDateInput } from '@entities/calendar/lib/helpers/validationInput';\nimport { DatepickerService } from '@entities/calendar/model/service';\nimport { BaseCalendarProps, EngineConfig } from '@entities/calendar/model/types';\nimport { MAX_INPUT_LENGTH } from '@shared/model/constants';\nimport { maskDate } from '@shared/ui/Input/lib/maskDate';\nimport { START_DATE_INDEX_ } from '@shared/ui/Input/model/constants';\n\nimport { ActiveInputType, INPUT_TYPE } from '../model/types';\n\nexport const useDateRangePicker = (config?: EngineConfig) => {\n const [_activeInput, setActiveInput] = useState<ActiveInputType>(INPUT_TYPE.START);\n const [localStartDate, setLocalStartDate] = useState<string>('');\n const [localEndDate, setLocalEndDate] = useState<string>('');\n const [error, setError] = useState<string>('');\n const [isOpenCalendar, setIsOpenCalendar] = useState<boolean>(false);\n\n const service = useMemo(() => new DatepickerService(config), [config]);\n const [viewModel, setViewModel] = useState<BaseCalendarProps>(service.getViewModel());\n\n useEffect(() => {\n const unsubscribe = service.subscribe(() => {\n setViewModel(service.getViewModel());\n const range = service.getRange();\n\n if (range.start) {\n setLocalStartDate(maskDate(range.start.toLocaleDateString()));\n } else {\n setLocalStartDate('');\n }\n if (range.end) {\n setLocalEndDate(maskDate(range.end.toLocaleDateString()));\n } else {\n setLocalEndDate('');\n }\n });\n\n return () => {\n unsubscribe();\n };\n }, [service]);\n\n const range = service.getRange();\n\n const setStartDateDirect = (date: Date) => {\n service.setRangeStart?.(date);\n const currentEnd = service.getRangeEnd?.();\n\n if (currentEnd && date > currentEnd) {\n service.setRangeEnd?.(null);\n setLocalEndDate('');\n }\n service.notify?.();\n };\n\n const setEndDateDirect = (date: Date) => {\n const currentStart = service.getRangeStart?.();\n\n if (currentStart && date < currentStart) {\n setError('End date cannot be earlier than start date');\n\n return false;\n }\n service.setRangeEnd?.(date);\n service.notify?.();\n\n return true;\n };\n\n const handleManualInput = (value: string, inputType: ActiveInputType) => {\n const maskedValue = maskDate(value);\n\n if (inputType === INPUT_TYPE.START) {\n setLocalStartDate(maskedValue);\n } else {\n setLocalEndDate(maskedValue);\n }\n\n if (maskedValue.length === START_DATE_INDEX_) {\n setError('');\n if (inputType === INPUT_TYPE.START) {\n service.setRangeStart?.(null);\n } else {\n service.setRangeEnd?.(null);\n }\n service.notify?.();\n\n return;\n }\n\n const validationResult = validateDateInput(maskedValue);\n\n if (maskedValue.length < MAX_INPUT_LENGTH) {\n setError(validationResult.error);\n } else {\n if (validationResult.isValid && validationResult.date) {\n if (inputType === INPUT_TYPE.START) {\n setStartDateDirect(validationResult.date);\n setError('');\n if (!range.end) {\n setActiveInput(INPUT_TYPE.END);\n }\n } else {\n const success = setEndDateDirect(validationResult.date);\n\n if (success) {\n setError('');\n }\n }\n } else {\n setError(validationResult.error || 'Invalid date');\n }\n }\n };\n\n const handleInputFocus = (input: ActiveInputType) => {\n setActiveInput(input);\n setIsOpenCalendar(true);\n };\n\n const handleClear = (inputType?: ActiveInputType) => {\n if (inputType === INPUT_TYPE.START) {\n service.setRangeStart?.(null);\n setLocalStartDate('');\n } else if (inputType === INPUT_TYPE.END) {\n service.setRangeEnd?.(null);\n setLocalEndDate('');\n } else if (!inputType) {\n service.clearRange?.();\n setLocalStartDate('');\n setLocalEndDate('');\n setIsOpenCalendar(false);\n }\n setError('');\n service.notify?.();\n };\n\n const toggleCalendar = () => {\n setIsOpenCalendar((prev) => !prev);\n };\n\n const createInputConfig = (type: ActiveInputType, localValue: string, placeholder: string) => ({\n value: localValue,\n onChange: (val: string) => handleManualInput(val, type),\n onFocus: () => handleInputFocus(type),\n placeholder,\n onClear: () => handleClear(type),\n });\n\n return {\n viewModel,\n isOpenCalendar,\n start: createInputConfig(INPUT_TYPE.START, localStartDate, 'Start Date'),\n end: createInputConfig(INPUT_TYPE.END, localEndDate, 'End Date'),\n error,\n onClear: handleClear,\n toggleCalendar,\n };\n};\n","import { MouseEvent } from 'react';\n\nimport { EngineConfig } from '@entities/calendar/model/types';\nimport { BaseCalendar } from '@entities/calendar/ui/BaseCalendar/BaseCalendar';\nimport { getTheme } from '@shared/lib/getThemed';\nimport { ErrorBoundary } from '@shared/ui/ErrorBoundary/ui/ErrorBoundary';\nimport { Input } from '@shared/ui/Input/ui/Input';\n\nimport { useDateRangePicker } from '../lib/useDateRangePicker';\n\nimport styles from './RangeCalender.module.scss';\n\nexport const RangeCalender = (_config?: EngineConfig) => {\n const { start, end, viewModel, error, onClear, isOpenCalendar, toggleCalendar } =\n useDateRangePicker(_config);\n\n const handleClearAll = () => {\n onClear();\n };\n\n const handleDayClick = (date: Date, _event?: MouseEvent<HTMLDivElement>) => {\n viewModel.onDayRangeClick(date);\n };\n const themed = getTheme(_config?.darkThemed);\n\n return (\n <ErrorBoundary>\n <article data-theme={themed}>\n <div className={styles.container}>\n <div className={styles['container__inputs']}>\n <Input handleIsOpen={toggleCalendar} {...start} error={error} />\n <Input handleIsOpen={toggleCalendar} {...end} error={error} />\n </div>\n {isOpenCalendar && (\n <>\n <BaseCalendar {...viewModel} onDayClick={handleDayClick} />\n <button className={styles['container__clear']} type=\"button\" onClick={handleClearAll}>\n Clear All\n </button>\n </>\n )}\n </div>\n </article>\n </ErrorBoundary>\n );\n};\n"],"names":["_jsxs","_jsx","styles","useMemo","useState","useEffect","Component","useId","createPortal","_Fragment","useRef","useCallback"],"mappings":"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","x_google_ignoreList":[0]}
|