@salutejs/plasma-new-hope 0.327.0-canary.1741.15743877104.0 → 0.327.0-canary.1741.15775036215.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/cjs/components/Calendar/CalendarBase/CalendarBase.js +12 -0
- package/cjs/components/Calendar/CalendarBase/CalendarBase.js.map +1 -1
- package/cjs/components/Calendar/CalendarDouble/CalendarDouble.js +12 -0
- package/cjs/components/Calendar/CalendarDouble/CalendarDouble.js.map +1 -1
- package/cjs/components/Calendar/ui/CalendarDays/CalendarDays.js +3 -0
- package/cjs/components/Calendar/ui/CalendarDays/CalendarDays.js.map +1 -1
- package/cjs/components/Calendar/ui/CalendarMonths/CalendarMonths.js +3 -0
- package/cjs/components/Calendar/ui/CalendarMonths/CalendarMonths.js.map +1 -1
- package/cjs/components/Calendar/ui/CalendarQuarters/CalendarQuarters.js +3 -0
- package/cjs/components/Calendar/ui/CalendarQuarters/CalendarQuarters.js.map +1 -1
- package/cjs/components/Calendar/ui/CalendarYears/CalendarYears.js +3 -0
- package/cjs/components/Calendar/ui/CalendarYears/CalendarYears.js.map +1 -1
- package/cjs/components/Drawer/Drawer.js +4 -3
- package/cjs/components/Drawer/Drawer.js.map +1 -1
- package/cjs/components/Drawer/hooks/useDrawer.js +2 -2
- package/cjs/components/Drawer/hooks/useDrawer.js.map +1 -1
- package/cjs/components/Mask/Mask.js +3 -3
- package/cjs/components/Mask/Mask.js.map +1 -1
- package/cjs/components/Modal/Modal.js +3 -2
- package/cjs/components/Modal/Modal.js.map +1 -1
- package/cjs/components/Modal/hooks/useModal.js +1 -1
- package/cjs/components/Modal/hooks/useModal.js.map +1 -1
- package/cjs/components/Popup/Popup.js +2 -1
- package/cjs/components/Popup/Popup.js.map +1 -1
- package/cjs/components/Popup/PopupContext.js +13 -13
- package/cjs/components/Popup/PopupContext.js.map +1 -1
- package/emotion/cjs/components/Calendar/CalendarBase/CalendarBase.js +14 -0
- package/emotion/cjs/components/Calendar/CalendarDouble/CalendarDouble.js +14 -0
- package/emotion/cjs/components/Calendar/ui/CalendarDays/CalendarDays.js +3 -0
- package/emotion/cjs/components/Calendar/ui/CalendarMonths/CalendarMonths.js +3 -0
- package/emotion/cjs/components/Calendar/ui/CalendarQuarters/CalendarQuarters.js +3 -0
- package/emotion/cjs/components/Calendar/ui/CalendarYears/CalendarYears.js +3 -0
- package/emotion/cjs/components/Drawer/Drawer.js +8 -8
- package/emotion/cjs/components/Drawer/hooks/useDrawer.js +2 -2
- package/emotion/cjs/components/Mask/Mask.js +4 -4
- package/emotion/cjs/components/Modal/Modal.js +6 -5
- package/emotion/cjs/components/Modal/hooks/useModal.js +1 -1
- package/emotion/cjs/components/Popup/Popup.js +1 -1
- package/emotion/cjs/components/Popup/PopupContext.js +14 -29
- package/emotion/es/components/Calendar/CalendarBase/CalendarBase.js +14 -0
- package/emotion/es/components/Calendar/CalendarDouble/CalendarDouble.js +14 -0
- package/emotion/es/components/Calendar/ui/CalendarDays/CalendarDays.js +3 -0
- package/emotion/es/components/Calendar/ui/CalendarMonths/CalendarMonths.js +3 -0
- package/emotion/es/components/Calendar/ui/CalendarQuarters/CalendarQuarters.js +3 -0
- package/emotion/es/components/Calendar/ui/CalendarYears/CalendarYears.js +3 -0
- package/emotion/es/components/Drawer/Drawer.js +3 -3
- package/emotion/es/components/Drawer/hooks/useDrawer.js +2 -2
- package/emotion/es/components/Mask/Mask.js +4 -4
- package/emotion/es/components/Modal/Modal.js +4 -3
- package/emotion/es/components/Modal/hooks/useModal.js +1 -1
- package/emotion/es/components/Popup/Popup.js +2 -2
- package/emotion/es/components/Popup/PopupContext.js +14 -29
- package/es/components/Calendar/CalendarBase/CalendarBase.js +12 -0
- package/es/components/Calendar/CalendarBase/CalendarBase.js.map +1 -1
- package/es/components/Calendar/CalendarDouble/CalendarDouble.js +12 -0
- package/es/components/Calendar/CalendarDouble/CalendarDouble.js.map +1 -1
- package/es/components/Calendar/ui/CalendarDays/CalendarDays.js +3 -0
- package/es/components/Calendar/ui/CalendarDays/CalendarDays.js.map +1 -1
- package/es/components/Calendar/ui/CalendarMonths/CalendarMonths.js +3 -0
- package/es/components/Calendar/ui/CalendarMonths/CalendarMonths.js.map +1 -1
- package/es/components/Calendar/ui/CalendarQuarters/CalendarQuarters.js +3 -0
- package/es/components/Calendar/ui/CalendarQuarters/CalendarQuarters.js.map +1 -1
- package/es/components/Calendar/ui/CalendarYears/CalendarYears.js +3 -0
- package/es/components/Calendar/ui/CalendarYears/CalendarYears.js.map +1 -1
- package/es/components/Drawer/Drawer.js +4 -3
- package/es/components/Drawer/Drawer.js.map +1 -1
- package/es/components/Drawer/hooks/useDrawer.js +2 -2
- package/es/components/Drawer/hooks/useDrawer.js.map +1 -1
- package/es/components/Mask/Mask.js +3 -3
- package/es/components/Mask/Mask.js.map +1 -1
- package/es/components/Modal/Modal.js +3 -2
- package/es/components/Modal/Modal.js.map +1 -1
- package/es/components/Modal/hooks/useModal.js +1 -1
- package/es/components/Modal/hooks/useModal.js.map +1 -1
- package/es/components/Popup/Popup.js +2 -1
- package/es/components/Popup/Popup.js.map +1 -1
- package/es/components/Popup/PopupContext.js +13 -13
- package/es/components/Popup/PopupContext.js.map +1 -1
- package/package.json +4 -4
- package/styled-components/cjs/components/Calendar/CalendarBase/CalendarBase.js +14 -0
- package/styled-components/cjs/components/Calendar/CalendarDouble/CalendarDouble.js +14 -0
- package/styled-components/cjs/components/Calendar/ui/CalendarDays/CalendarDays.js +3 -0
- package/styled-components/cjs/components/Calendar/ui/CalendarMonths/CalendarMonths.js +3 -0
- package/styled-components/cjs/components/Calendar/ui/CalendarQuarters/CalendarQuarters.js +3 -0
- package/styled-components/cjs/components/Calendar/ui/CalendarYears/CalendarYears.js +3 -0
- package/styled-components/cjs/components/Drawer/Drawer.js +8 -8
- package/styled-components/cjs/components/Drawer/hooks/useDrawer.js +2 -2
- package/styled-components/cjs/components/Mask/Mask.js +4 -4
- package/styled-components/cjs/components/Modal/Modal.js +6 -5
- package/styled-components/cjs/components/Modal/hooks/useModal.js +1 -1
- package/styled-components/cjs/components/Popup/Popup.js +1 -1
- package/styled-components/cjs/components/Popup/PopupContext.js +14 -29
- package/styled-components/es/components/Calendar/CalendarBase/CalendarBase.js +14 -0
- package/styled-components/es/components/Calendar/CalendarDouble/CalendarDouble.js +14 -0
- package/styled-components/es/components/Calendar/ui/CalendarDays/CalendarDays.js +3 -0
- package/styled-components/es/components/Calendar/ui/CalendarMonths/CalendarMonths.js +3 -0
- package/styled-components/es/components/Calendar/ui/CalendarQuarters/CalendarQuarters.js +3 -0
- package/styled-components/es/components/Calendar/ui/CalendarYears/CalendarYears.js +3 -0
- package/styled-components/es/components/Drawer/Drawer.js +3 -3
- package/styled-components/es/components/Drawer/hooks/useDrawer.js +2 -2
- package/styled-components/es/components/Mask/Mask.js +4 -4
- package/styled-components/es/components/Modal/Modal.js +4 -3
- package/styled-components/es/components/Modal/hooks/useModal.js +1 -1
- package/styled-components/es/components/Popup/Popup.js +2 -2
- package/styled-components/es/components/Popup/PopupContext.js +14 -29
- package/types/components/Calendar/CalendarBase/CalendarBase.d.ts.map +1 -1
- package/types/components/Calendar/CalendarDouble/CalendarDouble.d.ts.map +1 -1
- package/types/components/Calendar/ui/CalendarDays/CalendarDays.d.ts.map +1 -1
- package/types/components/Calendar/ui/CalendarMonths/CalendarMonths.d.ts.map +1 -1
- package/types/components/Calendar/ui/CalendarQuarters/CalendarQuarters.d.ts.map +1 -1
- package/types/components/Calendar/ui/CalendarYears/CalendarYears.d.ts.map +1 -1
- package/types/components/Drawer/Drawer.d.ts +1 -1
- package/types/components/Drawer/Drawer.d.ts.map +1 -1
- package/types/components/Drawer/hooks/useDrawer.d.ts.map +1 -1
- package/types/components/Modal/Modal.d.ts +1 -1
- package/types/components/Modal/Modal.d.ts.map +1 -1
- package/types/components/Popup/Popup.d.ts +1 -1
- package/types/components/Popup/Popup.d.ts.map +1 -1
- package/types/components/Popup/Popup.types.d.ts +1 -1
- package/types/components/Popup/Popup.types.d.ts.map +1 -1
- package/types/components/Popup/PopupContext.d.ts.map +1 -1
@@ -113,6 +113,18 @@ const calendarBaseRoot = Root => /*#__PURE__*/React.forwardRef(({
|
|
113
113
|
setPrevType(calendarState);
|
114
114
|
}
|
115
115
|
}, [calendarState]);
|
116
|
+
React.useEffect(() => {
|
117
|
+
if (prevType !== type) {
|
118
|
+
dispatch({
|
119
|
+
type: types.ActionType.UPDATE_CALENDAR_STATE,
|
120
|
+
payload: {
|
121
|
+
calendarState: type,
|
122
|
+
size: reducer.sizeMap[type].single
|
123
|
+
}
|
124
|
+
});
|
125
|
+
setPrevType(type);
|
126
|
+
}
|
127
|
+
}, [type]);
|
116
128
|
React.useEffect(() => {
|
117
129
|
if (value && prevValue && calendarRangeHelper.isValueUpdate(value, prevValue) || value && !prevValue) {
|
118
130
|
dispatch({
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"CalendarBase.js","sources":["../../../../src/components/Calendar/CalendarBase/CalendarBase.tsx"],"sourcesContent":["import React, {\n useCallback,\n useMemo,\n useReducer,\n useState,\n KeyboardEvent,\n HTMLAttributes,\n forwardRef,\n useEffect,\n} from 'react';\nimport cls from 'classnames';\n\nimport type { Calendar, CalendarConfigProps, DateObject } from '../Calendar.types';\nimport { getInitialState, reducer, sizeMap } from '../store/reducer';\nimport { ActionType, CalendarState } from '../store/types';\nimport { I18N, isValueUpdate } from '../utils';\nimport { useKeyNavigation, useCalendarNavigation, useCalendarDateChange } from '../hooks';\nimport { CalendarDays, CalendarHeader, CalendarMonths, CalendarQuarters, CalendarYears } from '../ui';\nimport { RootProps } from '../../../engines';\nimport { classes } from '../Calendar.tokens';\n\nimport { base as viewCSS } from './variations/_view/base';\nimport { base as sizeCSS } from './variations/_size/base';\nimport { IsOutOfRange, StyledCalendar } from './CalendarBase.styles';\n\nexport type CalendarBaseProps = Calendar & CalendarConfigProps;\n\n/**\n * Компонент календаря.\n */\nexport const calendarBaseRoot = (Root: RootProps<HTMLDivElement, HTMLAttributes<HTMLDivElement>>) =>\n forwardRef<HTMLDivElement, CalendarBaseProps>(\n (\n {\n className,\n value: externalValue,\n min: minDate,\n max: maxDate,\n renderFromDate,\n includeEdgeDates,\n type = 'Days',\n eventList,\n disabledList,\n eventMonthList,\n disabledMonthList,\n eventQuarterList,\n disabledQuarterList,\n eventYearList,\n disabledYearList,\n locale = 'ru',\n stretched,\n onChangeValue,\n ...rest\n },\n outerRootRef,\n ) => {\n const [firstValue, secondValue] = useMemo(\n () => (Array.isArray(externalValue) ? externalValue : [externalValue]),\n [externalValue],\n );\n const value = secondValue || firstValue;\n\n const [hoveredItem, setHoveredItem] = useState<DateObject | undefined>();\n const [prevType, setPrevType] = useState(type);\n const [prevValue, setPrevValue] = useState(value);\n const [outOfRangeKey, setOutOfRangeKey] = useState<number>(0);\n\n const min = minDate && new Date(minDate);\n const max = maxDate && new Date(maxDate);\n const renderFrom = renderFromDate && new Date(renderFromDate);\n\n const [state, dispatch] = useReducer(reducer, getInitialState(value, min, renderFrom, type));\n\n const { date, calendarState, startYear, size } = state;\n\n const { handleNext, handlePrev } = useCalendarNavigation({\n calendarState,\n date,\n dispatch,\n });\n\n const [selectIndexes, onKeyDown, onSelectIndexes, outerRefs, isOutOfRange] = useKeyNavigation({\n size,\n calendarState,\n onNext: handleNext,\n onPrev: handlePrev,\n });\n\n const {\n handleOnChangeDay,\n handleOnChangeMonth,\n handleOnChangeQuarter,\n handleOnChangeYear,\n handleUpdateCalendarState,\n } = useCalendarDateChange({ type, onChangeValue, onSelectIndexes, dispatch });\n\n // Изменяем ключ каждый раз как пытаемся перейти на даты которые находятся за пределами min/max ограничений.\n // Это необходимо для того чтобы screen-reader корректно озвучивал уведомление aria-live=\"assertive\"\n // о том что нет доступных дат\n const handleKeyDown = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n setOutOfRangeKey((previousState) => Number(!previousState));\n\n onKeyDown(event);\n },\n [onKeyDown],\n );\n\n useEffect(() => {\n if (prevType !== calendarState) {\n dispatch({\n type: ActionType.UPDATE_CALENDAR_STATE,\n payload: { calendarState, size: sizeMap[calendarState].single },\n });\n\n setPrevType(calendarState);\n }\n }, [calendarState]);\n\n useEffect(() => {\n if ((value && prevValue && isValueUpdate(value, prevValue)) || (value && !prevValue)) {\n dispatch({\n type: ActionType.UPDATE_DATE,\n payload: { value },\n });\n }\n\n if (!value && !prevValue) {\n dispatch({\n type: ActionType.UPDATE_DATE,\n payload: { value: renderFrom || min || new Date() },\n });\n }\n\n setPrevValue(value);\n }, [value]);\n\n return (\n <Root\n ref={outerRootRef}\n className={cls(className, { [classes.stretched]: stretched })}\n aria-label={I18N.selectDate[locale]}\n {...rest}\n >\n {isOutOfRange && (\n <IsOutOfRange\n key={outOfRangeKey}\n aria-atomic=\"true\"\n role=\"alert\"\n aria-live=\"assertive\"\n aria-relevant=\"additions\"\n >\n Далее нет доступных дат.\n </IsOutOfRange>\n )}\n <CalendarHeader\n size={rest.size}\n firstDate={date}\n startYear={startYear}\n type={calendarState}\n onPrev={handlePrev}\n onNext={handleNext}\n onUpdateCalendarState={handleUpdateCalendarState}\n locale={locale}\n />\n {calendarState === CalendarState.Days && (\n <CalendarDays\n value={externalValue}\n date={date}\n min={min}\n max={max}\n eventList={eventList}\n disabledList={disabledList}\n includeEdgeDates={includeEdgeDates}\n hoveredDay={hoveredItem}\n selectIndexes={selectIndexes}\n onChangeDay={handleOnChangeDay}\n onSetSelected={onSelectIndexes}\n onHoverDay={setHoveredItem}\n onKeyDown={handleKeyDown}\n outerRefs={outerRefs}\n locale={locale}\n />\n )}\n {calendarState === CalendarState.Months && (\n <CalendarMonths\n value={externalValue}\n date={date}\n min={min}\n max={max}\n eventList={eventMonthList}\n disabledList={disabledMonthList}\n hoveredMonth={hoveredItem}\n selectIndexes={selectIndexes}\n onChangeMonth={handleOnChangeMonth}\n onSetSelected={onSelectIndexes}\n onHoverMonth={setHoveredItem}\n onKeyDown={onKeyDown}\n outerRefs={outerRefs}\n locale={locale}\n />\n )}\n {calendarState === CalendarState.Quarters && (\n <CalendarQuarters\n value={externalValue}\n date={date}\n min={min}\n max={max}\n eventList={eventQuarterList}\n disabledList={disabledQuarterList}\n hoveredQuarter={hoveredItem}\n selectIndexes={selectIndexes}\n onChangeQuarter={handleOnChangeQuarter}\n onSetSelected={onSelectIndexes}\n onHoverQuarter={setHoveredItem}\n onKeyDown={onKeyDown}\n outerRefs={outerRefs}\n />\n )}\n {calendarState === CalendarState.Years && (\n <CalendarYears\n value={externalValue}\n date={date}\n startYear={startYear}\n selectIndexes={selectIndexes}\n min={min}\n max={max}\n eventList={eventYearList}\n disabledList={disabledYearList}\n hoveredYear={hoveredItem}\n onChangeYear={handleOnChangeYear}\n onSetSelected={onSelectIndexes}\n onHoverYear={setHoveredItem}\n onKeyDown={onKeyDown}\n outerRefs={outerRefs}\n />\n )}\n </Root>\n );\n },\n );\n\nexport const calendarBaseConfig = {\n name: 'CalendarBase',\n tag: 'div',\n layout: calendarBaseRoot,\n base: StyledCalendar,\n variations: {\n view: {\n css: viewCSS,\n },\n size: {\n css: sizeCSS,\n },\n },\n defaults: {\n view: 'primary',\n size: 'm',\n },\n};\n"],"names":["calendarBaseRoot","Root","forwardRef","className","value","externalValue","min","minDate","max","maxDate","renderFromDate","includeEdgeDates","type","eventList","disabledList","eventMonthList","disabledMonthList","eventQuarterList","disabledQuarterList","eventYearList","disabledYearList","locale","stretched","onChangeValue","rest","outerRootRef","firstValue","secondValue","useMemo","Array","isArray","hoveredItem","setHoveredItem","useState","prevType","setPrevType","prevValue","setPrevValue","outOfRangeKey","setOutOfRangeKey","Date","renderFrom","state","dispatch","useReducer","reducer","getInitialState","date","calendarState","startYear","size","handleNext","handlePrev","useCalendarNavigation","selectIndexes","onKeyDown","onSelectIndexes","outerRefs","isOutOfRange","useKeyNavigation","onNext","onPrev","handleOnChangeDay","handleOnChangeMonth","handleOnChangeQuarter","handleOnChangeYear","handleUpdateCalendarState","useCalendarDateChange","handleKeyDown","useCallback","event","previousState","Number","useEffect","ActionType","UPDATE_CALENDAR_STATE","payload","sizeMap","single","isValueUpdate","UPDATE_DATE","React","createElement","_extends","ref","cls","classes","I18N","selectDate","IsOutOfRange","key","role","CalendarHeader","firstDate","onUpdateCalendarState","CalendarState","Days","CalendarDays","hoveredDay","onChangeDay","onSetSelected","onHoverDay","Months","CalendarMonths","hoveredMonth","onChangeMonth","onHoverMonth","Quarters","CalendarQuarters","hoveredQuarter","onChangeQuarter","onHoverQuarter","Years","CalendarYears","hoveredYear","onChangeYear","onHoverYear","calendarBaseConfig","name","tag","layout","base","StyledCalendar","variations","view","css","viewCSS","sizeCSS","defaults"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BA;AACA;AACA;MACaA,gBAAgB,GAAIC,IAA+D,iBAC5FC,gBAAU,CACN,CACI;EACIC,SAAS;AACTC,EAAAA,KAAK,EAAEC,aAAa;AACpBC,EAAAA,GAAG,EAAEC,OAAO;AACZC,EAAAA,GAAG,EAAEC,OAAO;EACZC,cAAc;EACdC,gBAAgB;AAChBC,EAAAA,IAAI,GAAG,MAAM;EACbC,SAAS;EACTC,YAAY;EACZC,cAAc;EACdC,iBAAiB;EACjBC,gBAAgB;EAChBC,mBAAmB;EACnBC,aAAa;EACbC,gBAAgB;AAChBC,EAAAA,MAAM,GAAG,IAAI;EACbC,SAAS;EACTC,aAAa;EACb,GAAGC,IAAAA;AACP,CAAC,EACDC,YAAY,KACX;EACD,MAAM,CAACC,UAAU,EAAEC,WAAW,CAAC,GAAGC,aAAO,CACrC,MAAOC,KAAK,CAACC,OAAO,CAACzB,aAAa,CAAC,GAAGA,aAAa,GAAG,CAACA,aAAa,CAAE,EACtE,CAACA,aAAa,CAClB,CAAC,CAAA;AACD,EAAA,MAAMD,KAAK,GAAGuB,WAAW,IAAID,UAAU,CAAA;EAEvC,MAAM,CAACK,WAAW,EAAEC,cAAc,CAAC,GAAGC,cAAQ,EAA0B,CAAA;EACxE,MAAM,CAACC,QAAQ,EAAEC,WAAW,CAAC,GAAGF,cAAQ,CAACrB,IAAI,CAAC,CAAA;EAC9C,MAAM,CAACwB,SAAS,EAAEC,YAAY,CAAC,GAAGJ,cAAQ,CAAC7B,KAAK,CAAC,CAAA;EACjD,MAAM,CAACkC,aAAa,EAAEC,gBAAgB,CAAC,GAAGN,cAAQ,CAAS,CAAC,CAAC,CAAA;EAE7D,MAAM3B,GAAG,GAAGC,OAAO,IAAI,IAAIiC,IAAI,CAACjC,OAAO,CAAC,CAAA;EACxC,MAAMC,GAAG,GAAGC,OAAO,IAAI,IAAI+B,IAAI,CAAC/B,OAAO,CAAC,CAAA;EACxC,MAAMgC,UAAU,GAAG/B,cAAc,IAAI,IAAI8B,IAAI,CAAC9B,cAAc,CAAC,CAAA;EAE7D,MAAM,CAACgC,KAAK,EAAEC,QAAQ,CAAC,GAAGC,gBAAU,CAACC,eAAO,EAAEC,uBAAe,CAAC1C,KAAK,EAAEE,GAAG,EAAEmC,UAAU,EAAE7B,IAAI,CAAC,CAAC,CAAA;EAE5F,MAAM;IAAEmC,IAAI;IAAEC,aAAa;IAAEC,SAAS;AAAEC,IAAAA,IAAAA;AAAK,GAAC,GAAGR,KAAK,CAAA;EAEtD,MAAM;IAAES,UAAU;AAAEC,IAAAA,UAAAA;GAAY,GAAGC,2CAAqB,CAAC;IACrDL,aAAa;IACbD,IAAI;AACJJ,IAAAA,QAAAA;AACJ,GAAC,CAAC,CAAA;AAEF,EAAA,MAAM,CAACW,aAAa,EAAEC,SAAS,EAAEC,eAAe,EAAEC,SAAS,EAAEC,YAAY,CAAC,GAAGC,iCAAgB,CAAC;IAC1FT,IAAI;IACJF,aAAa;AACbY,IAAAA,MAAM,EAAET,UAAU;AAClBU,IAAAA,MAAM,EAAET,UAAAA;AACZ,GAAC,CAAC,CAAA;EAEF,MAAM;IACFU,iBAAiB;IACjBC,mBAAmB;IACnBC,qBAAqB;IACrBC,kBAAkB;AAClBC,IAAAA,yBAAAA;GACH,GAAGC,2CAAqB,CAAC;IAAEvD,IAAI;IAAEW,aAAa;IAAEiC,eAAe;AAAEb,IAAAA,QAAAA;AAAS,GAAC,CAAC,CAAA;;AAE7E;AACA;AACA;AACA,EAAA,MAAMyB,aAAa,GAAGC,iBAAW,CAC5BC,KAAoC,IAAK;IACtC/B,gBAAgB,CAAEgC,aAAa,IAAKC,MAAM,CAAC,CAACD,aAAa,CAAC,CAAC,CAAA;IAE3DhB,SAAS,CAACe,KAAK,CAAC,CAAA;AACpB,GAAC,EACD,CAACf,SAAS,CACd,CAAC,CAAA;AAEDkB,EAAAA,eAAS,CAAC,MAAM;IACZ,IAAIvC,QAAQ,KAAKc,aAAa,EAAE;AAC5BL,MAAAA,QAAQ,CAAC;QACL/B,IAAI,EAAE8D,gBAAU,CAACC,qBAAqB;AACtCC,QAAAA,OAAO,EAAE;UAAE5B,aAAa;AAAEE,UAAAA,IAAI,EAAE2B,eAAO,CAAC7B,aAAa,CAAC,CAAC8B,MAAAA;AAAO,SAAA;AAClE,OAAC,CAAC,CAAA;MAEF3C,WAAW,CAACa,aAAa,CAAC,CAAA;AAC9B,KAAA;AACJ,GAAC,EAAE,CAACA,aAAa,CAAC,CAAC,CAAA;AAEnByB,EAAAA,eAAS,CAAC,MAAM;AACZ,IAAA,IAAKrE,KAAK,IAAIgC,SAAS,IAAI2C,iCAAa,CAAC3E,KAAK,EAAEgC,SAAS,CAAC,IAAMhC,KAAK,IAAI,CAACgC,SAAU,EAAE;AAClFO,MAAAA,QAAQ,CAAC;QACL/B,IAAI,EAAE8D,gBAAU,CAACM,WAAW;AAC5BJ,QAAAA,OAAO,EAAE;AAAExE,UAAAA,KAAAA;AAAM,SAAA;AACrB,OAAC,CAAC,CAAA;AACN,KAAA;AAEA,IAAA,IAAI,CAACA,KAAK,IAAI,CAACgC,SAAS,EAAE;AACtBO,MAAAA,QAAQ,CAAC;QACL/B,IAAI,EAAE8D,gBAAU,CAACM,WAAW;AAC5BJ,QAAAA,OAAO,EAAE;AAAExE,UAAAA,KAAK,EAAEqC,UAAU,IAAInC,GAAG,IAAI,IAAIkC,IAAI,EAAC;AAAE,SAAA;AACtD,OAAC,CAAC,CAAA;AACN,KAAA;IAEAH,YAAY,CAACjC,KAAK,CAAC,CAAA;AACvB,GAAC,EAAE,CAACA,KAAK,CAAC,CAAC,CAAA;AAEX,EAAA,oBACI6E,sBAAA,CAAAC,aAAA,CAACjF,IAAI,EAAAkF,iCAAA,CAAA;AACDC,IAAAA,GAAG,EAAE3D,YAAa;AAClBtB,IAAAA,SAAS,EAAEkF,oBAAG,CAAClF,SAAS,EAAE;MAAE,CAACmF,uBAAO,CAAChE,SAAS,GAAGA,SAAAA;AAAU,KAAC,CAAE;AAC9D,IAAA,YAAA,EAAYiE,cAAI,CAACC,UAAU,CAACnE,MAAM,CAAA;GAC9BG,EAAAA,IAAI,GAEPkC,YAAY,iBACTuB,sBAAA,CAAAC,aAAA,CAACO,gCAAY,EAAA;AACTC,IAAAA,GAAG,EAAEpD,aAAc;AACnB,IAAA,aAAA,EAAY,MAAM;AAClBqD,IAAAA,IAAI,EAAC,OAAO;AACZ,IAAA,WAAA,EAAU,WAAW;IACrB,eAAc,EAAA,WAAA;AAAW,GAAA,EAC5B,8HAEa,CACjB,eACDV,sBAAA,CAAAC,aAAA,CAACU,6BAAc,EAAA;IACX1C,IAAI,EAAE1B,IAAI,CAAC0B,IAAK;AAChB2C,IAAAA,SAAS,EAAE9C,IAAK;AAChBE,IAAAA,SAAS,EAAEA,SAAU;AACrBrC,IAAAA,IAAI,EAAEoC,aAAc;AACpBa,IAAAA,MAAM,EAAET,UAAW;AACnBQ,IAAAA,MAAM,EAAET,UAAW;AACnB2C,IAAAA,qBAAqB,EAAE5B,yBAA0B;AACjD7C,IAAAA,MAAM,EAAEA,MAAAA;AAAO,GAClB,CAAC,EACD2B,aAAa,KAAK+C,mBAAa,CAACC,IAAI,iBACjCf,sBAAA,CAAAC,aAAA,CAACe,yBAAY,EAAA;AACT7F,IAAAA,KAAK,EAAEC,aAAc;AACrB0C,IAAAA,IAAI,EAAEA,IAAK;AACXzC,IAAAA,GAAG,EAAEA,GAAI;AACTE,IAAAA,GAAG,EAAEA,GAAI;AACTK,IAAAA,SAAS,EAAEA,SAAU;AACrBC,IAAAA,YAAY,EAAEA,YAAa;AAC3BH,IAAAA,gBAAgB,EAAEA,gBAAiB;AACnCuF,IAAAA,UAAU,EAAEnE,WAAY;AACxBuB,IAAAA,aAAa,EAAEA,aAAc;AAC7B6C,IAAAA,WAAW,EAAErC,iBAAkB;AAC/BsC,IAAAA,aAAa,EAAE5C,eAAgB;AAC/B6C,IAAAA,UAAU,EAAErE,cAAe;AAC3BuB,IAAAA,SAAS,EAAEa,aAAc;AACzBX,IAAAA,SAAS,EAAEA,SAAU;AACrBpC,IAAAA,MAAM,EAAEA,MAAAA;AAAO,GAClB,CACJ,EACA2B,aAAa,KAAK+C,mBAAa,CAACO,MAAM,iBACnCrB,sBAAA,CAAAC,aAAA,CAACqB,6BAAc,EAAA;AACXnG,IAAAA,KAAK,EAAEC,aAAc;AACrB0C,IAAAA,IAAI,EAAEA,IAAK;AACXzC,IAAAA,GAAG,EAAEA,GAAI;AACTE,IAAAA,GAAG,EAAEA,GAAI;AACTK,IAAAA,SAAS,EAAEE,cAAe;AAC1BD,IAAAA,YAAY,EAAEE,iBAAkB;AAChCwF,IAAAA,YAAY,EAAEzE,WAAY;AAC1BuB,IAAAA,aAAa,EAAEA,aAAc;AAC7BmD,IAAAA,aAAa,EAAE1C,mBAAoB;AACnCqC,IAAAA,aAAa,EAAE5C,eAAgB;AAC/BkD,IAAAA,YAAY,EAAE1E,cAAe;AAC7BuB,IAAAA,SAAS,EAAEA,SAAU;AACrBE,IAAAA,SAAS,EAAEA,SAAU;AACrBpC,IAAAA,MAAM,EAAEA,MAAAA;AAAO,GAClB,CACJ,EACA2B,aAAa,KAAK+C,mBAAa,CAACY,QAAQ,iBACrC1B,sBAAA,CAAAC,aAAA,CAAC0B,iCAAgB,EAAA;AACbxG,IAAAA,KAAK,EAAEC,aAAc;AACrB0C,IAAAA,IAAI,EAAEA,IAAK;AACXzC,IAAAA,GAAG,EAAEA,GAAI;AACTE,IAAAA,GAAG,EAAEA,GAAI;AACTK,IAAAA,SAAS,EAAEI,gBAAiB;AAC5BH,IAAAA,YAAY,EAAEI,mBAAoB;AAClC2F,IAAAA,cAAc,EAAE9E,WAAY;AAC5BuB,IAAAA,aAAa,EAAEA,aAAc;AAC7BwD,IAAAA,eAAe,EAAE9C,qBAAsB;AACvCoC,IAAAA,aAAa,EAAE5C,eAAgB;AAC/BuD,IAAAA,cAAc,EAAE/E,cAAe;AAC/BuB,IAAAA,SAAS,EAAEA,SAAU;AACrBE,IAAAA,SAAS,EAAEA,SAAAA;AAAU,GACxB,CACJ,EACAT,aAAa,KAAK+C,mBAAa,CAACiB,KAAK,iBAClC/B,sBAAA,CAAAC,aAAA,CAAC+B,2BAAa,EAAA;AACV7G,IAAAA,KAAK,EAAEC,aAAc;AACrB0C,IAAAA,IAAI,EAAEA,IAAK;AACXE,IAAAA,SAAS,EAAEA,SAAU;AACrBK,IAAAA,aAAa,EAAEA,aAAc;AAC7BhD,IAAAA,GAAG,EAAEA,GAAI;AACTE,IAAAA,GAAG,EAAEA,GAAI;AACTK,IAAAA,SAAS,EAAEM,aAAc;AACzBL,IAAAA,YAAY,EAAEM,gBAAiB;AAC/B8F,IAAAA,WAAW,EAAEnF,WAAY;AACzBoF,IAAAA,YAAY,EAAElD,kBAAmB;AACjCmC,IAAAA,aAAa,EAAE5C,eAAgB;AAC/B4D,IAAAA,WAAW,EAAEpF,cAAe;AAC5BuB,IAAAA,SAAS,EAAEA,SAAU;AACrBE,IAAAA,SAAS,EAAEA,SAAAA;AAAU,GACxB,CAEH,CAAC,CAAA;AAEf,CACJ,EAAC;AAEE,MAAM4D,kBAAkB,GAAG;AAC9BC,EAAAA,IAAI,EAAE,cAAc;AACpBC,EAAAA,GAAG,EAAE,KAAK;AACVC,EAAAA,MAAM,EAAExH,gBAAgB;AACxByH,EAAAA,IAAI,EAAEC,kCAAc;AACpBC,EAAAA,UAAU,EAAE;AACRC,IAAAA,IAAI,EAAE;AACFC,MAAAA,GAAG,EAAEC,SAAAA;KACR;AACD5E,IAAAA,IAAI,EAAE;AACF2E,MAAAA,GAAG,EAAEE,WAAAA;AACT,KAAA;GACH;AACDC,EAAAA,QAAQ,EAAE;AACNJ,IAAAA,IAAI,EAAE,SAAS;AACf1E,IAAAA,IAAI,EAAE,GAAA;AACV,GAAA;AACJ;;;;;"}
|
1
|
+
{"version":3,"file":"CalendarBase.js","sources":["../../../../src/components/Calendar/CalendarBase/CalendarBase.tsx"],"sourcesContent":["import React, {\n useCallback,\n useMemo,\n useReducer,\n useState,\n KeyboardEvent,\n HTMLAttributes,\n forwardRef,\n useEffect,\n} from 'react';\nimport cls from 'classnames';\n\nimport type { Calendar, CalendarConfigProps, DateObject } from '../Calendar.types';\nimport { getInitialState, reducer, sizeMap } from '../store/reducer';\nimport { ActionType, CalendarState } from '../store/types';\nimport { I18N, isValueUpdate } from '../utils';\nimport { useKeyNavigation, useCalendarNavigation, useCalendarDateChange } from '../hooks';\nimport { CalendarDays, CalendarHeader, CalendarMonths, CalendarQuarters, CalendarYears } from '../ui';\nimport { RootProps } from '../../../engines';\nimport { classes } from '../Calendar.tokens';\n\nimport { base as viewCSS } from './variations/_view/base';\nimport { base as sizeCSS } from './variations/_size/base';\nimport { IsOutOfRange, StyledCalendar } from './CalendarBase.styles';\n\nexport type CalendarBaseProps = Calendar & CalendarConfigProps;\n\n/**\n * Компонент календаря.\n */\nexport const calendarBaseRoot = (Root: RootProps<HTMLDivElement, HTMLAttributes<HTMLDivElement>>) =>\n forwardRef<HTMLDivElement, CalendarBaseProps>(\n (\n {\n className,\n value: externalValue,\n min: minDate,\n max: maxDate,\n renderFromDate,\n includeEdgeDates,\n type = 'Days',\n eventList,\n disabledList,\n eventMonthList,\n disabledMonthList,\n eventQuarterList,\n disabledQuarterList,\n eventYearList,\n disabledYearList,\n locale = 'ru',\n stretched,\n onChangeValue,\n ...rest\n },\n outerRootRef,\n ) => {\n const [firstValue, secondValue] = useMemo(\n () => (Array.isArray(externalValue) ? externalValue : [externalValue]),\n [externalValue],\n );\n const value = secondValue || firstValue;\n\n const [hoveredItem, setHoveredItem] = useState<DateObject | undefined>();\n const [prevType, setPrevType] = useState(type);\n const [prevValue, setPrevValue] = useState(value);\n const [outOfRangeKey, setOutOfRangeKey] = useState<number>(0);\n\n const min = minDate && new Date(minDate);\n const max = maxDate && new Date(maxDate);\n const renderFrom = renderFromDate && new Date(renderFromDate);\n\n const [state, dispatch] = useReducer(reducer, getInitialState(value, min, renderFrom, type));\n\n const { date, calendarState, startYear, size } = state;\n\n const { handleNext, handlePrev } = useCalendarNavigation({\n calendarState,\n date,\n dispatch,\n });\n\n const [selectIndexes, onKeyDown, onSelectIndexes, outerRefs, isOutOfRange] = useKeyNavigation({\n size,\n calendarState,\n onNext: handleNext,\n onPrev: handlePrev,\n });\n\n const {\n handleOnChangeDay,\n handleOnChangeMonth,\n handleOnChangeQuarter,\n handleOnChangeYear,\n handleUpdateCalendarState,\n } = useCalendarDateChange({ type, onChangeValue, onSelectIndexes, dispatch });\n\n // Изменяем ключ каждый раз как пытаемся перейти на даты которые находятся за пределами min/max ограничений.\n // Это необходимо для того чтобы screen-reader корректно озвучивал уведомление aria-live=\"assertive\"\n // о том что нет доступных дат\n const handleKeyDown = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n setOutOfRangeKey((previousState) => Number(!previousState));\n\n onKeyDown(event);\n },\n [onKeyDown],\n );\n\n useEffect(() => {\n if (prevType !== calendarState) {\n dispatch({\n type: ActionType.UPDATE_CALENDAR_STATE,\n payload: { calendarState, size: sizeMap[calendarState].single },\n });\n\n setPrevType(calendarState);\n }\n }, [calendarState]);\n\n useEffect(() => {\n if (prevType !== type) {\n dispatch({\n type: ActionType.UPDATE_CALENDAR_STATE,\n payload: { calendarState: type, size: sizeMap[type].single },\n });\n\n setPrevType(type);\n }\n }, [type]);\n\n useEffect(() => {\n if ((value && prevValue && isValueUpdate(value, prevValue)) || (value && !prevValue)) {\n dispatch({\n type: ActionType.UPDATE_DATE,\n payload: { value },\n });\n }\n\n if (!value && !prevValue) {\n dispatch({\n type: ActionType.UPDATE_DATE,\n payload: { value: renderFrom || min || new Date() },\n });\n }\n\n setPrevValue(value);\n }, [value]);\n\n return (\n <Root\n ref={outerRootRef}\n className={cls(className, { [classes.stretched]: stretched })}\n aria-label={I18N.selectDate[locale]}\n {...rest}\n >\n {isOutOfRange && (\n <IsOutOfRange\n key={outOfRangeKey}\n aria-atomic=\"true\"\n role=\"alert\"\n aria-live=\"assertive\"\n aria-relevant=\"additions\"\n >\n Далее нет доступных дат.\n </IsOutOfRange>\n )}\n <CalendarHeader\n size={rest.size}\n firstDate={date}\n startYear={startYear}\n type={calendarState}\n onPrev={handlePrev}\n onNext={handleNext}\n onUpdateCalendarState={handleUpdateCalendarState}\n locale={locale}\n />\n {calendarState === CalendarState.Days && (\n <CalendarDays\n value={externalValue}\n date={date}\n min={min}\n max={max}\n eventList={eventList}\n disabledList={disabledList}\n includeEdgeDates={includeEdgeDates}\n hoveredDay={hoveredItem}\n selectIndexes={selectIndexes}\n onChangeDay={handleOnChangeDay}\n onSetSelected={onSelectIndexes}\n onHoverDay={setHoveredItem}\n onKeyDown={handleKeyDown}\n outerRefs={outerRefs}\n locale={locale}\n />\n )}\n {calendarState === CalendarState.Months && (\n <CalendarMonths\n value={externalValue}\n date={date}\n min={min}\n max={max}\n eventList={eventMonthList}\n disabledList={disabledMonthList}\n hoveredMonth={hoveredItem}\n selectIndexes={selectIndexes}\n onChangeMonth={handleOnChangeMonth}\n onSetSelected={onSelectIndexes}\n onHoverMonth={setHoveredItem}\n onKeyDown={onKeyDown}\n outerRefs={outerRefs}\n locale={locale}\n />\n )}\n {calendarState === CalendarState.Quarters && (\n <CalendarQuarters\n value={externalValue}\n date={date}\n min={min}\n max={max}\n eventList={eventQuarterList}\n disabledList={disabledQuarterList}\n hoveredQuarter={hoveredItem}\n selectIndexes={selectIndexes}\n onChangeQuarter={handleOnChangeQuarter}\n onSetSelected={onSelectIndexes}\n onHoverQuarter={setHoveredItem}\n onKeyDown={onKeyDown}\n outerRefs={outerRefs}\n />\n )}\n {calendarState === CalendarState.Years && (\n <CalendarYears\n value={externalValue}\n date={date}\n startYear={startYear}\n selectIndexes={selectIndexes}\n min={min}\n max={max}\n eventList={eventYearList}\n disabledList={disabledYearList}\n hoveredYear={hoveredItem}\n onChangeYear={handleOnChangeYear}\n onSetSelected={onSelectIndexes}\n onHoverYear={setHoveredItem}\n onKeyDown={onKeyDown}\n outerRefs={outerRefs}\n />\n )}\n </Root>\n );\n },\n );\n\nexport const calendarBaseConfig = {\n name: 'CalendarBase',\n tag: 'div',\n layout: calendarBaseRoot,\n base: StyledCalendar,\n variations: {\n view: {\n css: viewCSS,\n },\n size: {\n css: sizeCSS,\n },\n },\n defaults: {\n view: 'primary',\n size: 'm',\n },\n};\n"],"names":["calendarBaseRoot","Root","forwardRef","className","value","externalValue","min","minDate","max","maxDate","renderFromDate","includeEdgeDates","type","eventList","disabledList","eventMonthList","disabledMonthList","eventQuarterList","disabledQuarterList","eventYearList","disabledYearList","locale","stretched","onChangeValue","rest","outerRootRef","firstValue","secondValue","useMemo","Array","isArray","hoveredItem","setHoveredItem","useState","prevType","setPrevType","prevValue","setPrevValue","outOfRangeKey","setOutOfRangeKey","Date","renderFrom","state","dispatch","useReducer","reducer","getInitialState","date","calendarState","startYear","size","handleNext","handlePrev","useCalendarNavigation","selectIndexes","onKeyDown","onSelectIndexes","outerRefs","isOutOfRange","useKeyNavigation","onNext","onPrev","handleOnChangeDay","handleOnChangeMonth","handleOnChangeQuarter","handleOnChangeYear","handleUpdateCalendarState","useCalendarDateChange","handleKeyDown","useCallback","event","previousState","Number","useEffect","ActionType","UPDATE_CALENDAR_STATE","payload","sizeMap","single","isValueUpdate","UPDATE_DATE","React","createElement","_extends","ref","cls","classes","I18N","selectDate","IsOutOfRange","key","role","CalendarHeader","firstDate","onUpdateCalendarState","CalendarState","Days","CalendarDays","hoveredDay","onChangeDay","onSetSelected","onHoverDay","Months","CalendarMonths","hoveredMonth","onChangeMonth","onHoverMonth","Quarters","CalendarQuarters","hoveredQuarter","onChangeQuarter","onHoverQuarter","Years","CalendarYears","hoveredYear","onChangeYear","onHoverYear","calendarBaseConfig","name","tag","layout","base","StyledCalendar","variations","view","css","viewCSS","sizeCSS","defaults"],"mappings":"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"}
|
@@ -151,6 +151,18 @@ const calendarDoubleRoot = Root => /*#__PURE__*/React.forwardRef(({
|
|
151
151
|
setPrevType(calendarState);
|
152
152
|
}
|
153
153
|
}, [calendarState]);
|
154
|
+
React.useEffect(() => {
|
155
|
+
if (prevType !== type) {
|
156
|
+
dispatch({
|
157
|
+
type: types.ActionType.UPDATE_CALENDAR_STATE,
|
158
|
+
payload: {
|
159
|
+
calendarState: type,
|
160
|
+
size: reducer.sizeMap[type].double
|
161
|
+
}
|
162
|
+
});
|
163
|
+
setPrevType(type);
|
164
|
+
}
|
165
|
+
}, [type]);
|
154
166
|
React.useEffect(() => {
|
155
167
|
if (value && prevValue && calendarRangeHelper.isValueUpdate(value, prevValue) || value && !prevValue) {
|
156
168
|
const [minVisibleDate, maxVisibleDate] = getBoundaryDates();
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"CalendarDouble.js","sources":["../../../../src/components/Calendar/CalendarDouble/CalendarDouble.tsx"],"sourcesContent":["import React, {\n useState,\n useCallback,\n useMemo,\n forwardRef,\n HTMLAttributes,\n KeyboardEvent,\n useEffect,\n useReducer,\n} from 'react';\nimport cls from 'classnames';\n\nimport type { Calendar, CalendarConfigProps, DateObject } from '../Calendar.types';\nimport { YEAR_RENDER_COUNT, getNextDate, isValueUpdate, I18N } from '../utils';\nimport { useKeyNavigation, useCalendarNavigation, useCalendarDateChange } from '../hooks';\nimport { CalendarDays, CalendarHeader, CalendarMonths, CalendarQuarters, CalendarYears } from '../ui';\nimport { RootProps } from '../../../engines/types';\nimport { getInitialState, reducer, sizeMap } from '../store/reducer';\nimport { ActionType, CalendarState } from '../store/types';\nimport { IsOutOfRange } from '../CalendarBase/CalendarBase.styles';\nimport { classes } from '../Calendar.tokens';\n\nimport { base as viewCSS } from './variations/_view/base';\nimport { StyledCalendar, StyledSeparator, StyledWrapper } from './CalendarDouble.styles';\n\nexport type CalendarDoubleProps = Calendar & CalendarConfigProps;\n\n/**\n * Компонент двойного календаря.\n */\nexport const calendarDoubleRoot = (Root: RootProps<HTMLDivElement, HTMLAttributes<HTMLDivElement>>) =>\n forwardRef<HTMLDivElement, CalendarDoubleProps>(\n (\n {\n className,\n value: externalValue,\n min: minDate,\n max: maxDate,\n renderFromDate,\n includeEdgeDates,\n type = 'Days',\n eventList,\n disabledList,\n eventMonthList,\n disabledMonthList,\n eventQuarterList,\n disabledQuarterList,\n eventYearList,\n disabledYearList,\n locale = 'ru',\n stretched,\n onChangeValue,\n ...rest\n },\n outerRootRef,\n ) => {\n const [firstValue, secondValue] = useMemo(\n () => (Array.isArray(externalValue) ? externalValue : [externalValue]),\n [externalValue],\n );\n const value = secondValue || firstValue;\n\n const [hoveredItem, setHoveredItem] = useState<DateObject | undefined>();\n const [prevType, setPrevType] = useState(type);\n const [prevValue, setPrevValue] = useState(value);\n const [outOfRangeKey, setOutOfRangeKey] = useState<number>(0);\n\n const min = minDate && new Date(minDate);\n const max = maxDate && new Date(maxDate);\n\n const [state, dispatch] = useReducer(reducer, getInitialState(value, min, renderFromDate, type, true));\n\n const { date, calendarState, startYear, size } = state;\n\n const [firstDate, setFirstDate] = useState<DateObject>(date);\n const [secondDate, setSecondDate] = useState<DateObject>(date);\n\n const { handleNext, handlePrev } = useCalendarNavigation({\n calendarState,\n date,\n dispatch,\n });\n\n const [selectIndexes, onKeyDown, onSelectIndexes, outerRefs, isOutOfRange] = useKeyNavigation({\n isDouble: true,\n size,\n calendarState,\n onNext: handleNext,\n onPrev: handlePrev,\n });\n\n const {\n handleOnChangeDay,\n handleOnChangeMonth,\n handleOnChangeQuarter,\n handleOnChangeYear,\n handleUpdateCalendarState,\n } = useCalendarDateChange({ type, onChangeValue, onSelectIndexes, dispatch });\n\n const updateSecondDate = () => {\n if (calendarState === CalendarState.Days) {\n const [nextYear, nextMonthIndex] = getNextDate(date.year, date.monthIndex);\n setSecondDate({ year: nextYear, monthIndex: nextMonthIndex, day: date.day });\n }\n\n if (calendarState === CalendarState.Months || calendarState === CalendarState.Quarters) {\n setSecondDate({ year: date.year + 1, monthIndex: date.monthIndex, day: date.day });\n }\n\n if (calendarState === CalendarState.Years) {\n setSecondDate({ year: startYear + YEAR_RENDER_COUNT, monthIndex: date.monthIndex, day: date.day });\n }\n };\n\n const getBoundaryDates = () => {\n // NOTE: Если установить индекс дня равным \"0\", то берется последнее число предыдущего месяца\n if (calendarState === CalendarState.Days) {\n return [\n new Date(firstDate.year, firstDate.monthIndex, 1),\n new Date(secondDate.year, secondDate.monthIndex + 1, 0),\n ];\n }\n\n if (calendarState === CalendarState.Months || calendarState === CalendarState.Quarters) {\n return [new Date(firstDate.year, 0), new Date(secondDate.year, 12, 0)];\n }\n\n const endVisibleYear = startYear + YEAR_RENDER_COUNT * 2 - 1;\n return [new Date(startYear, 0), new Date(endVisibleYear, 11)];\n };\n\n // Изменяем ключ каждый раз как пытаемся перейти на даты которые находятся за пределами min/max ограничений.\n // Это необходимо для того чтобы screen-reader корректно озвучивал уведомление aria-live=\"assertive\"\n // о том что нет доступных дат\n const handleKeyDown = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n setOutOfRangeKey((previousState) => Number(!previousState));\n\n onKeyDown(event);\n },\n [onKeyDown],\n );\n\n useEffect(() => {\n if (prevType !== calendarState) {\n dispatch({\n type: ActionType.UPDATE_CALENDAR_STATE,\n payload: { calendarState, size: sizeMap[calendarState].double },\n });\n\n setPrevType(calendarState);\n }\n }, [calendarState]);\n\n useEffect(() => {\n if ((value && prevValue && isValueUpdate(value, prevValue)) || (value && !prevValue)) {\n const [minVisibleDate, maxVisibleDate] = getBoundaryDates();\n\n if (value > maxVisibleDate || value < minVisibleDate) {\n dispatch({\n type: ActionType.UPDATE_DATE,\n payload: { value },\n });\n }\n }\n\n if (!value && !prevValue) {\n dispatch({\n type: ActionType.UPDATE_DATE,\n payload: { value: renderFromDate || min || new Date() },\n });\n }\n\n setPrevValue(value);\n }, [value]);\n\n useEffect(() => {\n setFirstDate(date);\n\n updateSecondDate();\n }, [date, calendarState]);\n\n return (\n <Root\n ref={outerRootRef}\n className={cls(className, { [classes.stretched]: stretched })}\n aria-label={I18N.selectDate[locale]}\n {...rest}\n >\n {isOutOfRange && (\n <IsOutOfRange\n key={outOfRangeKey}\n aria-atomic=\"true\"\n role=\"alert\"\n aria-live=\"assertive\"\n aria-relevant=\"additions\"\n >\n Далее нет доступных дат.\n </IsOutOfRange>\n )}\n <CalendarHeader\n isDouble\n size={rest.size}\n firstDate={firstDate}\n secondDate={secondDate}\n startYear={startYear}\n type={calendarState}\n onPrev={handlePrev}\n onNext={handleNext}\n onUpdateCalendarState={handleUpdateCalendarState}\n locale={locale}\n />\n\n <StyledWrapper>\n {calendarState === CalendarState.Days && (\n <>\n <CalendarDays\n value={externalValue}\n date={firstDate}\n min={min}\n max={max}\n eventList={eventList}\n disabledList={disabledList}\n includeEdgeDates={includeEdgeDates}\n hoveredDay={hoveredItem}\n selectIndexes={selectIndexes}\n onChangeDay={handleOnChangeDay}\n onHoverDay={setHoveredItem}\n onSetSelected={onSelectIndexes}\n onKeyDown={handleKeyDown}\n outerRefs={outerRefs}\n locale={locale}\n isDouble\n />\n <StyledSeparator />\n <CalendarDays\n value={externalValue}\n date={secondDate}\n min={min}\n max={max}\n eventList={eventList}\n disabledList={disabledList}\n includeEdgeDates={includeEdgeDates}\n hoveredDay={hoveredItem}\n selectIndexes={selectIndexes}\n onChangeDay={handleOnChangeDay}\n onHoverDay={setHoveredItem}\n onSetSelected={onSelectIndexes}\n onKeyDown={handleKeyDown}\n outerRefs={outerRefs}\n locale={locale}\n isDouble\n isSecond\n />\n </>\n )}\n {calendarState === CalendarState.Months && (\n <>\n <CalendarMonths\n value={externalValue}\n date={firstDate}\n min={min}\n max={max}\n eventList={eventMonthList}\n disabledList={disabledMonthList}\n hoveredMonth={hoveredItem}\n selectIndexes={selectIndexes}\n onChangeMonth={handleOnChangeMonth}\n onSetSelected={onSelectIndexes}\n onHoverMonth={setHoveredItem}\n onKeyDown={handleKeyDown}\n outerRefs={outerRefs}\n locale={locale}\n isDouble\n />\n <StyledSeparator />\n <CalendarMonths\n value={externalValue}\n date={secondDate}\n min={min}\n max={max}\n eventList={eventMonthList}\n disabledList={disabledMonthList}\n hoveredMonth={hoveredItem}\n selectIndexes={selectIndexes}\n onChangeMonth={handleOnChangeMonth}\n onSetSelected={onSelectIndexes}\n onHoverMonth={setHoveredItem}\n onKeyDown={handleKeyDown}\n outerRefs={outerRefs}\n locale={locale}\n isDouble\n isSecond\n />\n </>\n )}\n {calendarState === CalendarState.Quarters && (\n <>\n <CalendarQuarters\n value={externalValue}\n date={firstDate}\n min={min}\n max={max}\n eventList={eventQuarterList}\n disabledList={disabledQuarterList}\n hoveredQuarter={hoveredItem}\n selectIndexes={selectIndexes}\n onChangeQuarter={handleOnChangeQuarter}\n onSetSelected={onSelectIndexes}\n onHoverQuarter={setHoveredItem}\n onKeyDown={handleKeyDown}\n outerRefs={outerRefs}\n isDouble\n />\n <StyledSeparator />\n <CalendarQuarters\n value={externalValue}\n date={secondDate}\n min={min}\n max={max}\n eventList={eventQuarterList}\n disabledList={disabledQuarterList}\n hoveredQuarter={hoveredItem}\n selectIndexes={selectIndexes}\n onChangeQuarter={handleOnChangeQuarter}\n onSetSelected={onSelectIndexes}\n onHoverQuarter={setHoveredItem}\n onKeyDown={handleKeyDown}\n outerRefs={outerRefs}\n isDouble\n isSecond\n />\n </>\n )}\n {calendarState === CalendarState.Years && (\n <>\n <CalendarYears\n value={externalValue}\n date={firstDate}\n startYear={startYear}\n selectIndexes={selectIndexes}\n min={min}\n max={max}\n eventList={eventYearList}\n disabledList={disabledYearList}\n hoveredYear={hoveredItem}\n onChangeYear={handleOnChangeYear}\n onSetSelected={onSelectIndexes}\n onHoverYear={setHoveredItem}\n onKeyDown={handleKeyDown}\n outerRefs={outerRefs}\n isDouble\n />\n <StyledSeparator />\n <CalendarYears\n value={externalValue}\n date={secondDate}\n startYear={startYear + YEAR_RENDER_COUNT}\n selectIndexes={selectIndexes}\n min={min}\n max={max}\n eventList={eventYearList}\n disabledList={disabledYearList}\n hoveredYear={hoveredItem}\n onChangeYear={handleOnChangeYear}\n onSetSelected={onSelectIndexes}\n onHoverYear={setHoveredItem}\n onKeyDown={handleKeyDown}\n outerRefs={outerRefs}\n isDouble\n isSecond\n />\n </>\n )}\n </StyledWrapper>\n </Root>\n );\n },\n );\n\nexport const calendarDoubleConfig = {\n name: 'CalendarDouble',\n tag: 'div',\n layout: calendarDoubleRoot,\n base: StyledCalendar,\n variations: {\n view: {\n css: viewCSS,\n },\n },\n defaults: {\n view: 'primary',\n size: 'm',\n },\n};\n"],"names":["calendarDoubleRoot","Root","forwardRef","className","value","externalValue","min","minDate","max","maxDate","renderFromDate","includeEdgeDates","type","eventList","disabledList","eventMonthList","disabledMonthList","eventQuarterList","disabledQuarterList","eventYearList","disabledYearList","locale","stretched","onChangeValue","rest","outerRootRef","firstValue","secondValue","useMemo","Array","isArray","hoveredItem","setHoveredItem","useState","prevType","setPrevType","prevValue","setPrevValue","outOfRangeKey","setOutOfRangeKey","Date","state","dispatch","useReducer","reducer","getInitialState","date","calendarState","startYear","size","firstDate","setFirstDate","secondDate","setSecondDate","handleNext","handlePrev","useCalendarNavigation","selectIndexes","onKeyDown","onSelectIndexes","outerRefs","isOutOfRange","useKeyNavigation","isDouble","onNext","onPrev","handleOnChangeDay","handleOnChangeMonth","handleOnChangeQuarter","handleOnChangeYear","handleUpdateCalendarState","useCalendarDateChange","updateSecondDate","CalendarState","Days","nextYear","nextMonthIndex","getNextDate","year","monthIndex","day","Months","Quarters","Years","YEAR_RENDER_COUNT","getBoundaryDates","endVisibleYear","handleKeyDown","useCallback","event","previousState","Number","useEffect","ActionType","UPDATE_CALENDAR_STATE","payload","sizeMap","double","isValueUpdate","minVisibleDate","maxVisibleDate","UPDATE_DATE","React","createElement","_extends","ref","cls","classes","I18N","selectDate","IsOutOfRange","key","role","CalendarHeader","onUpdateCalendarState","StyledWrapper","Fragment","CalendarDays","hoveredDay","onChangeDay","onHoverDay","onSetSelected","StyledSeparator","isSecond","CalendarMonths","hoveredMonth","onChangeMonth","onHoverMonth","CalendarQuarters","hoveredQuarter","onChangeQuarter","onHoverQuarter","CalendarYears","hoveredYear","onChangeYear","onHoverYear","calendarDoubleConfig","name","tag","layout","base","StyledCalendar","variations","view","css","viewCSS","defaults"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"CalendarDouble.js","sources":["../../../../src/components/Calendar/CalendarDouble/CalendarDouble.tsx"],"sourcesContent":["import React, {\n useState,\n useCallback,\n useMemo,\n forwardRef,\n HTMLAttributes,\n KeyboardEvent,\n useEffect,\n useReducer,\n} from 'react';\nimport cls from 'classnames';\n\nimport type { Calendar, CalendarConfigProps, DateObject } from '../Calendar.types';\nimport { YEAR_RENDER_COUNT, getNextDate, isValueUpdate, I18N } from '../utils';\nimport { useKeyNavigation, useCalendarNavigation, useCalendarDateChange } from '../hooks';\nimport { CalendarDays, CalendarHeader, CalendarMonths, CalendarQuarters, CalendarYears } from '../ui';\nimport { RootProps } from '../../../engines/types';\nimport { getInitialState, reducer, sizeMap } from '../store/reducer';\nimport { ActionType, CalendarState } from '../store/types';\nimport { IsOutOfRange } from '../CalendarBase/CalendarBase.styles';\nimport { classes } from '../Calendar.tokens';\n\nimport { base as viewCSS } from './variations/_view/base';\nimport { StyledCalendar, StyledSeparator, StyledWrapper } from './CalendarDouble.styles';\n\nexport type CalendarDoubleProps = Calendar & CalendarConfigProps;\n\n/**\n * Компонент двойного календаря.\n */\nexport const calendarDoubleRoot = (Root: RootProps<HTMLDivElement, HTMLAttributes<HTMLDivElement>>) =>\n forwardRef<HTMLDivElement, CalendarDoubleProps>(\n (\n {\n className,\n value: externalValue,\n min: minDate,\n max: maxDate,\n renderFromDate,\n includeEdgeDates,\n type = 'Days',\n eventList,\n disabledList,\n eventMonthList,\n disabledMonthList,\n eventQuarterList,\n disabledQuarterList,\n eventYearList,\n disabledYearList,\n locale = 'ru',\n stretched,\n onChangeValue,\n ...rest\n },\n outerRootRef,\n ) => {\n const [firstValue, secondValue] = useMemo(\n () => (Array.isArray(externalValue) ? externalValue : [externalValue]),\n [externalValue],\n );\n const value = secondValue || firstValue;\n\n const [hoveredItem, setHoveredItem] = useState<DateObject | undefined>();\n const [prevType, setPrevType] = useState(type);\n const [prevValue, setPrevValue] = useState(value);\n const [outOfRangeKey, setOutOfRangeKey] = useState<number>(0);\n\n const min = minDate && new Date(minDate);\n const max = maxDate && new Date(maxDate);\n\n const [state, dispatch] = useReducer(reducer, getInitialState(value, min, renderFromDate, type, true));\n\n const { date, calendarState, startYear, size } = state;\n\n const [firstDate, setFirstDate] = useState<DateObject>(date);\n const [secondDate, setSecondDate] = useState<DateObject>(date);\n\n const { handleNext, handlePrev } = useCalendarNavigation({\n calendarState,\n date,\n dispatch,\n });\n\n const [selectIndexes, onKeyDown, onSelectIndexes, outerRefs, isOutOfRange] = useKeyNavigation({\n isDouble: true,\n size,\n calendarState,\n onNext: handleNext,\n onPrev: handlePrev,\n });\n\n const {\n handleOnChangeDay,\n handleOnChangeMonth,\n handleOnChangeQuarter,\n handleOnChangeYear,\n handleUpdateCalendarState,\n } = useCalendarDateChange({ type, onChangeValue, onSelectIndexes, dispatch });\n\n const updateSecondDate = () => {\n if (calendarState === CalendarState.Days) {\n const [nextYear, nextMonthIndex] = getNextDate(date.year, date.monthIndex);\n setSecondDate({ year: nextYear, monthIndex: nextMonthIndex, day: date.day });\n }\n\n if (calendarState === CalendarState.Months || calendarState === CalendarState.Quarters) {\n setSecondDate({ year: date.year + 1, monthIndex: date.monthIndex, day: date.day });\n }\n\n if (calendarState === CalendarState.Years) {\n setSecondDate({ year: startYear + YEAR_RENDER_COUNT, monthIndex: date.monthIndex, day: date.day });\n }\n };\n\n const getBoundaryDates = () => {\n // NOTE: Если установить индекс дня равным \"0\", то берется последнее число предыдущего месяца\n if (calendarState === CalendarState.Days) {\n return [\n new Date(firstDate.year, firstDate.monthIndex, 1),\n new Date(secondDate.year, secondDate.monthIndex + 1, 0),\n ];\n }\n\n if (calendarState === CalendarState.Months || calendarState === CalendarState.Quarters) {\n return [new Date(firstDate.year, 0), new Date(secondDate.year, 12, 0)];\n }\n\n const endVisibleYear = startYear + YEAR_RENDER_COUNT * 2 - 1;\n return [new Date(startYear, 0), new Date(endVisibleYear, 11)];\n };\n\n // Изменяем ключ каждый раз как пытаемся перейти на даты которые находятся за пределами min/max ограничений.\n // Это необходимо для того чтобы screen-reader корректно озвучивал уведомление aria-live=\"assertive\"\n // о том что нет доступных дат\n const handleKeyDown = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n setOutOfRangeKey((previousState) => Number(!previousState));\n\n onKeyDown(event);\n },\n [onKeyDown],\n );\n\n useEffect(() => {\n if (prevType !== calendarState) {\n dispatch({\n type: ActionType.UPDATE_CALENDAR_STATE,\n payload: { calendarState, size: sizeMap[calendarState].double },\n });\n\n setPrevType(calendarState);\n }\n }, [calendarState]);\n\n useEffect(() => {\n if (prevType !== type) {\n dispatch({\n type: ActionType.UPDATE_CALENDAR_STATE,\n payload: { calendarState: type, size: sizeMap[type].double },\n });\n\n setPrevType(type);\n }\n }, [type]);\n\n useEffect(() => {\n if ((value && prevValue && isValueUpdate(value, prevValue)) || (value && !prevValue)) {\n const [minVisibleDate, maxVisibleDate] = getBoundaryDates();\n\n if (value > maxVisibleDate || value < minVisibleDate) {\n dispatch({\n type: ActionType.UPDATE_DATE,\n payload: { value },\n });\n }\n }\n\n if (!value && !prevValue) {\n dispatch({\n type: ActionType.UPDATE_DATE,\n payload: { value: renderFromDate || min || new Date() },\n });\n }\n\n setPrevValue(value);\n }, [value]);\n\n useEffect(() => {\n setFirstDate(date);\n\n updateSecondDate();\n }, [date, calendarState]);\n\n return (\n <Root\n ref={outerRootRef}\n className={cls(className, { [classes.stretched]: stretched })}\n aria-label={I18N.selectDate[locale]}\n {...rest}\n >\n {isOutOfRange && (\n <IsOutOfRange\n key={outOfRangeKey}\n aria-atomic=\"true\"\n role=\"alert\"\n aria-live=\"assertive\"\n aria-relevant=\"additions\"\n >\n Далее нет доступных дат.\n </IsOutOfRange>\n )}\n <CalendarHeader\n isDouble\n size={rest.size}\n firstDate={firstDate}\n secondDate={secondDate}\n startYear={startYear}\n type={calendarState}\n onPrev={handlePrev}\n onNext={handleNext}\n onUpdateCalendarState={handleUpdateCalendarState}\n locale={locale}\n />\n\n <StyledWrapper>\n {calendarState === CalendarState.Days && (\n <>\n <CalendarDays\n value={externalValue}\n date={firstDate}\n min={min}\n max={max}\n eventList={eventList}\n disabledList={disabledList}\n includeEdgeDates={includeEdgeDates}\n hoveredDay={hoveredItem}\n selectIndexes={selectIndexes}\n onChangeDay={handleOnChangeDay}\n onHoverDay={setHoveredItem}\n onSetSelected={onSelectIndexes}\n onKeyDown={handleKeyDown}\n outerRefs={outerRefs}\n locale={locale}\n isDouble\n />\n <StyledSeparator />\n <CalendarDays\n value={externalValue}\n date={secondDate}\n min={min}\n max={max}\n eventList={eventList}\n disabledList={disabledList}\n includeEdgeDates={includeEdgeDates}\n hoveredDay={hoveredItem}\n selectIndexes={selectIndexes}\n onChangeDay={handleOnChangeDay}\n onHoverDay={setHoveredItem}\n onSetSelected={onSelectIndexes}\n onKeyDown={handleKeyDown}\n outerRefs={outerRefs}\n locale={locale}\n isDouble\n isSecond\n />\n </>\n )}\n {calendarState === CalendarState.Months && (\n <>\n <CalendarMonths\n value={externalValue}\n date={firstDate}\n min={min}\n max={max}\n eventList={eventMonthList}\n disabledList={disabledMonthList}\n hoveredMonth={hoveredItem}\n selectIndexes={selectIndexes}\n onChangeMonth={handleOnChangeMonth}\n onSetSelected={onSelectIndexes}\n onHoverMonth={setHoveredItem}\n onKeyDown={handleKeyDown}\n outerRefs={outerRefs}\n locale={locale}\n isDouble\n />\n <StyledSeparator />\n <CalendarMonths\n value={externalValue}\n date={secondDate}\n min={min}\n max={max}\n eventList={eventMonthList}\n disabledList={disabledMonthList}\n hoveredMonth={hoveredItem}\n selectIndexes={selectIndexes}\n onChangeMonth={handleOnChangeMonth}\n onSetSelected={onSelectIndexes}\n onHoverMonth={setHoveredItem}\n onKeyDown={handleKeyDown}\n outerRefs={outerRefs}\n locale={locale}\n isDouble\n isSecond\n />\n </>\n )}\n {calendarState === CalendarState.Quarters && (\n <>\n <CalendarQuarters\n value={externalValue}\n date={firstDate}\n min={min}\n max={max}\n eventList={eventQuarterList}\n disabledList={disabledQuarterList}\n hoveredQuarter={hoveredItem}\n selectIndexes={selectIndexes}\n onChangeQuarter={handleOnChangeQuarter}\n onSetSelected={onSelectIndexes}\n onHoverQuarter={setHoveredItem}\n onKeyDown={handleKeyDown}\n outerRefs={outerRefs}\n isDouble\n />\n <StyledSeparator />\n <CalendarQuarters\n value={externalValue}\n date={secondDate}\n min={min}\n max={max}\n eventList={eventQuarterList}\n disabledList={disabledQuarterList}\n hoveredQuarter={hoveredItem}\n selectIndexes={selectIndexes}\n onChangeQuarter={handleOnChangeQuarter}\n onSetSelected={onSelectIndexes}\n onHoverQuarter={setHoveredItem}\n onKeyDown={handleKeyDown}\n outerRefs={outerRefs}\n isDouble\n isSecond\n />\n </>\n )}\n {calendarState === CalendarState.Years && (\n <>\n <CalendarYears\n value={externalValue}\n date={firstDate}\n startYear={startYear}\n selectIndexes={selectIndexes}\n min={min}\n max={max}\n eventList={eventYearList}\n disabledList={disabledYearList}\n hoveredYear={hoveredItem}\n onChangeYear={handleOnChangeYear}\n onSetSelected={onSelectIndexes}\n onHoverYear={setHoveredItem}\n onKeyDown={handleKeyDown}\n outerRefs={outerRefs}\n isDouble\n />\n <StyledSeparator />\n <CalendarYears\n value={externalValue}\n date={secondDate}\n startYear={startYear + YEAR_RENDER_COUNT}\n selectIndexes={selectIndexes}\n min={min}\n max={max}\n eventList={eventYearList}\n disabledList={disabledYearList}\n hoveredYear={hoveredItem}\n onChangeYear={handleOnChangeYear}\n onSetSelected={onSelectIndexes}\n onHoverYear={setHoveredItem}\n onKeyDown={handleKeyDown}\n outerRefs={outerRefs}\n isDouble\n isSecond\n />\n </>\n )}\n </StyledWrapper>\n </Root>\n );\n },\n );\n\nexport const calendarDoubleConfig = {\n name: 'CalendarDouble',\n tag: 'div',\n layout: calendarDoubleRoot,\n base: StyledCalendar,\n variations: {\n view: {\n css: viewCSS,\n },\n },\n defaults: {\n view: 'primary',\n size: 'm',\n },\n};\n"],"names":["calendarDoubleRoot","Root","forwardRef","className","value","externalValue","min","minDate","max","maxDate","renderFromDate","includeEdgeDates","type","eventList","disabledList","eventMonthList","disabledMonthList","eventQuarterList","disabledQuarterList","eventYearList","disabledYearList","locale","stretched","onChangeValue","rest","outerRootRef","firstValue","secondValue","useMemo","Array","isArray","hoveredItem","setHoveredItem","useState","prevType","setPrevType","prevValue","setPrevValue","outOfRangeKey","setOutOfRangeKey","Date","state","dispatch","useReducer","reducer","getInitialState","date","calendarState","startYear","size","firstDate","setFirstDate","secondDate","setSecondDate","handleNext","handlePrev","useCalendarNavigation","selectIndexes","onKeyDown","onSelectIndexes","outerRefs","isOutOfRange","useKeyNavigation","isDouble","onNext","onPrev","handleOnChangeDay","handleOnChangeMonth","handleOnChangeQuarter","handleOnChangeYear","handleUpdateCalendarState","useCalendarDateChange","updateSecondDate","CalendarState","Days","nextYear","nextMonthIndex","getNextDate","year","monthIndex","day","Months","Quarters","Years","YEAR_RENDER_COUNT","getBoundaryDates","endVisibleYear","handleKeyDown","useCallback","event","previousState","Number","useEffect","ActionType","UPDATE_CALENDAR_STATE","payload","sizeMap","double","isValueUpdate","minVisibleDate","maxVisibleDate","UPDATE_DATE","React","createElement","_extends","ref","cls","classes","I18N","selectDate","IsOutOfRange","key","role","CalendarHeader","onUpdateCalendarState","StyledWrapper","Fragment","CalendarDays","hoveredDay","onChangeDay","onHoverDay","onSetSelected","StyledSeparator","isSecond","CalendarMonths","hoveredMonth","onChangeMonth","onHoverMonth","CalendarQuarters","hoveredQuarter","onChangeQuarter","onHoverQuarter","CalendarYears","hoveredYear","onChangeYear","onHoverYear","calendarDoubleConfig","name","tag","layout","base","StyledCalendar","variations","view","css","viewCSS","defaults"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BA;AACA;AACA;MACaA,kBAAkB,GAAIC,IAA+D,iBAC9FC,gBAAU,CACN,CACI;EACIC,SAAS;AACTC,EAAAA,KAAK,EAAEC,aAAa;AACpBC,EAAAA,GAAG,EAAEC,OAAO;AACZC,EAAAA,GAAG,EAAEC,OAAO;EACZC,cAAc;EACdC,gBAAgB;AAChBC,EAAAA,IAAI,GAAG,MAAM;EACbC,SAAS;EACTC,YAAY;EACZC,cAAc;EACdC,iBAAiB;EACjBC,gBAAgB;EAChBC,mBAAmB;EACnBC,aAAa;EACbC,gBAAgB;AAChBC,EAAAA,MAAM,GAAG,IAAI;EACbC,SAAS;EACTC,aAAa;EACb,GAAGC,IAAAA;AACP,CAAC,EACDC,YAAY,KACX;EACD,MAAM,CAACC,UAAU,EAAEC,WAAW,CAAC,GAAGC,aAAO,CACrC,MAAOC,KAAK,CAACC,OAAO,CAACzB,aAAa,CAAC,GAAGA,aAAa,GAAG,CAACA,aAAa,CAAE,EACtE,CAACA,aAAa,CAClB,CAAC,CAAA;AACD,EAAA,MAAMD,KAAK,GAAGuB,WAAW,IAAID,UAAU,CAAA;EAEvC,MAAM,CAACK,WAAW,EAAEC,cAAc,CAAC,GAAGC,cAAQ,EAA0B,CAAA;EACxE,MAAM,CAACC,QAAQ,EAAEC,WAAW,CAAC,GAAGF,cAAQ,CAACrB,IAAI,CAAC,CAAA;EAC9C,MAAM,CAACwB,SAAS,EAAEC,YAAY,CAAC,GAAGJ,cAAQ,CAAC7B,KAAK,CAAC,CAAA;EACjD,MAAM,CAACkC,aAAa,EAAEC,gBAAgB,CAAC,GAAGN,cAAQ,CAAS,CAAC,CAAC,CAAA;EAE7D,MAAM3B,GAAG,GAAGC,OAAO,IAAI,IAAIiC,IAAI,CAACjC,OAAO,CAAC,CAAA;EACxC,MAAMC,GAAG,GAAGC,OAAO,IAAI,IAAI+B,IAAI,CAAC/B,OAAO,CAAC,CAAA;EAExC,MAAM,CAACgC,KAAK,EAAEC,QAAQ,CAAC,GAAGC,gBAAU,CAACC,eAAO,EAAEC,uBAAe,CAACzC,KAAK,EAAEE,GAAG,EAAEI,cAAc,EAAEE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;EAEtG,MAAM;IAAEkC,IAAI;IAAEC,aAAa;IAAEC,SAAS;AAAEC,IAAAA,IAAAA;AAAK,GAAC,GAAGR,KAAK,CAAA;EAEtD,MAAM,CAACS,SAAS,EAAEC,YAAY,CAAC,GAAGlB,cAAQ,CAAaa,IAAI,CAAC,CAAA;EAC5D,MAAM,CAACM,UAAU,EAAEC,aAAa,CAAC,GAAGpB,cAAQ,CAAaa,IAAI,CAAC,CAAA;EAE9D,MAAM;IAAEQ,UAAU;AAAEC,IAAAA,UAAAA;GAAY,GAAGC,2CAAqB,CAAC;IACrDT,aAAa;IACbD,IAAI;AACJJ,IAAAA,QAAAA;AACJ,GAAC,CAAC,CAAA;AAEF,EAAA,MAAM,CAACe,aAAa,EAAEC,SAAS,EAAEC,eAAe,EAAEC,SAAS,EAAEC,YAAY,CAAC,GAAGC,iCAAgB,CAAC;AAC1FC,IAAAA,QAAQ,EAAE,IAAI;IACdd,IAAI;IACJF,aAAa;AACbiB,IAAAA,MAAM,EAAEV,UAAU;AAClBW,IAAAA,MAAM,EAAEV,UAAAA;AACZ,GAAC,CAAC,CAAA;EAEF,MAAM;IACFW,iBAAiB;IACjBC,mBAAmB;IACnBC,qBAAqB;IACrBC,kBAAkB;AAClBC,IAAAA,yBAAAA;GACH,GAAGC,2CAAqB,CAAC;IAAE3D,IAAI;IAAEW,aAAa;IAAEoC,eAAe;AAAEjB,IAAAA,QAAAA;AAAS,GAAC,CAAC,CAAA;EAE7E,MAAM8B,gBAAgB,GAAGA,MAAM;AAC3B,IAAA,IAAIzB,aAAa,KAAK0B,mBAAa,CAACC,IAAI,EAAE;AACtC,MAAA,MAAM,CAACC,QAAQ,EAAEC,cAAc,CAAC,GAAGC,8BAAW,CAAC/B,IAAI,CAACgC,IAAI,EAAEhC,IAAI,CAACiC,UAAU,CAAC,CAAA;AAC1E1B,MAAAA,aAAa,CAAC;AAAEyB,QAAAA,IAAI,EAAEH,QAAQ;AAAEI,QAAAA,UAAU,EAAEH,cAAc;QAAEI,GAAG,EAAElC,IAAI,CAACkC,GAAAA;AAAI,OAAC,CAAC,CAAA;AAChF,KAAA;IAEA,IAAIjC,aAAa,KAAK0B,mBAAa,CAACQ,MAAM,IAAIlC,aAAa,KAAK0B,mBAAa,CAACS,QAAQ,EAAE;AACpF7B,MAAAA,aAAa,CAAC;AAAEyB,QAAAA,IAAI,EAAEhC,IAAI,CAACgC,IAAI,GAAG,CAAC;QAAEC,UAAU,EAAEjC,IAAI,CAACiC,UAAU;QAAEC,GAAG,EAAElC,IAAI,CAACkC,GAAAA;AAAI,OAAC,CAAC,CAAA;AACtF,KAAA;AAEA,IAAA,IAAIjC,aAAa,KAAK0B,mBAAa,CAACU,KAAK,EAAE;AACvC9B,MAAAA,aAAa,CAAC;QAAEyB,IAAI,EAAE9B,SAAS,GAAGoC,2BAAiB;QAAEL,UAAU,EAAEjC,IAAI,CAACiC,UAAU;QAAEC,GAAG,EAAElC,IAAI,CAACkC,GAAAA;AAAI,OAAC,CAAC,CAAA;AACtG,KAAA;GACH,CAAA;EAED,MAAMK,gBAAgB,GAAGA,MAAM;AAC3B;AACA,IAAA,IAAItC,aAAa,KAAK0B,mBAAa,CAACC,IAAI,EAAE;AACtC,MAAA,OAAO,CACH,IAAIlC,IAAI,CAACU,SAAS,CAAC4B,IAAI,EAAE5B,SAAS,CAAC6B,UAAU,EAAE,CAAC,CAAC,EACjD,IAAIvC,IAAI,CAACY,UAAU,CAAC0B,IAAI,EAAE1B,UAAU,CAAC2B,UAAU,GAAG,CAAC,EAAE,CAAC,CAAC,CAC1D,CAAA;AACL,KAAA;IAEA,IAAIhC,aAAa,KAAK0B,mBAAa,CAACQ,MAAM,IAAIlC,aAAa,KAAK0B,mBAAa,CAACS,QAAQ,EAAE;MACpF,OAAO,CAAC,IAAI1C,IAAI,CAACU,SAAS,CAAC4B,IAAI,EAAE,CAAC,CAAC,EAAE,IAAItC,IAAI,CAACY,UAAU,CAAC0B,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;AAC1E,KAAA;IAEA,MAAMQ,cAAc,GAAGtC,SAAS,GAAGoC,2BAAiB,GAAG,CAAC,GAAG,CAAC,CAAA;AAC5D,IAAA,OAAO,CAAC,IAAI5C,IAAI,CAACQ,SAAS,EAAE,CAAC,CAAC,EAAE,IAAIR,IAAI,CAAC8C,cAAc,EAAE,EAAE,CAAC,CAAC,CAAA;GAChE,CAAA;;AAED;AACA;AACA;AACA,EAAA,MAAMC,aAAa,GAAGC,iBAAW,CAC5BC,KAAoC,IAAK;IACtClD,gBAAgB,CAAEmD,aAAa,IAAKC,MAAM,CAAC,CAACD,aAAa,CAAC,CAAC,CAAA;IAE3DhC,SAAS,CAAC+B,KAAK,CAAC,CAAA;AACpB,GAAC,EACD,CAAC/B,SAAS,CACd,CAAC,CAAA;AAEDkC,EAAAA,eAAS,CAAC,MAAM;IACZ,IAAI1D,QAAQ,KAAKa,aAAa,EAAE;AAC5BL,MAAAA,QAAQ,CAAC;QACL9B,IAAI,EAAEiF,gBAAU,CAACC,qBAAqB;AACtCC,QAAAA,OAAO,EAAE;UAAEhD,aAAa;AAAEE,UAAAA,IAAI,EAAE+C,eAAO,CAACjD,aAAa,CAAC,CAACkD,MAAAA;AAAO,SAAA;AAClE,OAAC,CAAC,CAAA;MAEF9D,WAAW,CAACY,aAAa,CAAC,CAAA;AAC9B,KAAA;AACJ,GAAC,EAAE,CAACA,aAAa,CAAC,CAAC,CAAA;AAEnB6C,EAAAA,eAAS,CAAC,MAAM;IACZ,IAAI1D,QAAQ,KAAKtB,IAAI,EAAE;AACnB8B,MAAAA,QAAQ,CAAC;QACL9B,IAAI,EAAEiF,gBAAU,CAACC,qBAAqB;AACtCC,QAAAA,OAAO,EAAE;AAAEhD,UAAAA,aAAa,EAAEnC,IAAI;AAAEqC,UAAAA,IAAI,EAAE+C,eAAO,CAACpF,IAAI,CAAC,CAACqF,MAAAA;AAAO,SAAA;AAC/D,OAAC,CAAC,CAAA;MAEF9D,WAAW,CAACvB,IAAI,CAAC,CAAA;AACrB,KAAA;AACJ,GAAC,EAAE,CAACA,IAAI,CAAC,CAAC,CAAA;AAEVgF,EAAAA,eAAS,CAAC,MAAM;AACZ,IAAA,IAAKxF,KAAK,IAAIgC,SAAS,IAAI8D,iCAAa,CAAC9F,KAAK,EAAEgC,SAAS,CAAC,IAAMhC,KAAK,IAAI,CAACgC,SAAU,EAAE;MAClF,MAAM,CAAC+D,cAAc,EAAEC,cAAc,CAAC,GAAGf,gBAAgB,EAAE,CAAA;AAE3D,MAAA,IAAIjF,KAAK,GAAGgG,cAAc,IAAIhG,KAAK,GAAG+F,cAAc,EAAE;AAClDzD,QAAAA,QAAQ,CAAC;UACL9B,IAAI,EAAEiF,gBAAU,CAACQ,WAAW;AAC5BN,UAAAA,OAAO,EAAE;AAAE3F,YAAAA,KAAAA;AAAM,WAAA;AACrB,SAAC,CAAC,CAAA;AACN,OAAA;AACJ,KAAA;AAEA,IAAA,IAAI,CAACA,KAAK,IAAI,CAACgC,SAAS,EAAE;AACtBM,MAAAA,QAAQ,CAAC;QACL9B,IAAI,EAAEiF,gBAAU,CAACQ,WAAW;AAC5BN,QAAAA,OAAO,EAAE;AAAE3F,UAAAA,KAAK,EAAEM,cAAc,IAAIJ,GAAG,IAAI,IAAIkC,IAAI,EAAC;AAAE,SAAA;AAC1D,OAAC,CAAC,CAAA;AACN,KAAA;IAEAH,YAAY,CAACjC,KAAK,CAAC,CAAA;AACvB,GAAC,EAAE,CAACA,KAAK,CAAC,CAAC,CAAA;AAEXwF,EAAAA,eAAS,CAAC,MAAM;IACZzC,YAAY,CAACL,IAAI,CAAC,CAAA;AAElB0B,IAAAA,gBAAgB,EAAE,CAAA;AACtB,GAAC,EAAE,CAAC1B,IAAI,EAAEC,aAAa,CAAC,CAAC,CAAA;AAEzB,EAAA,oBACIuD,sBAAA,CAAAC,aAAA,CAACtG,IAAI,EAAAuG,iCAAA,CAAA;AACDC,IAAAA,GAAG,EAAEhF,YAAa;AAClBtB,IAAAA,SAAS,EAAEuG,oBAAG,CAACvG,SAAS,EAAE;MAAE,CAACwG,uBAAO,CAACrF,SAAS,GAAGA,SAAAA;AAAU,KAAC,CAAE;AAC9D,IAAA,YAAA,EAAYsF,cAAI,CAACC,UAAU,CAACxF,MAAM,CAAA;GAC9BG,EAAAA,IAAI,GAEPqC,YAAY,iBACTyC,sBAAA,CAAAC,aAAA,CAACO,gCAAY,EAAA;AACTC,IAAAA,GAAG,EAAEzE,aAAc;AACnB,IAAA,aAAA,EAAY,MAAM;AAClB0E,IAAAA,IAAI,EAAC,OAAO;AACZ,IAAA,WAAA,EAAU,WAAW;IACrB,eAAc,EAAA,WAAA;AAAW,GAAA,EAC5B,8HAEa,CACjB,eACDV,sBAAA,CAAAC,aAAA,CAACU,6BAAc,EAAA;IACXlD,QAAQ,EAAA,IAAA;IACRd,IAAI,EAAEzB,IAAI,CAACyB,IAAK;AAChBC,IAAAA,SAAS,EAAEA,SAAU;AACrBE,IAAAA,UAAU,EAAEA,UAAW;AACvBJ,IAAAA,SAAS,EAAEA,SAAU;AACrBpC,IAAAA,IAAI,EAAEmC,aAAc;AACpBkB,IAAAA,MAAM,EAAEV,UAAW;AACnBS,IAAAA,MAAM,EAAEV,UAAW;AACnB4D,IAAAA,qBAAqB,EAAE5C,yBAA0B;AACjDjD,IAAAA,MAAM,EAAEA,MAAAA;GACX,CAAC,eAEFiF,sBAAA,CAAAC,aAAA,CAACY,mCAAa,EACTpE,IAAAA,EAAAA,aAAa,KAAK0B,mBAAa,CAACC,IAAI,iBACjC4B,sBAAA,CAAAC,aAAA,CAAAD,sBAAA,CAAAc,QAAA,EAAA,IAAA,eACId,sBAAA,CAAAC,aAAA,CAACc,yBAAY,EAAA;AACTjH,IAAAA,KAAK,EAAEC,aAAc;AACrByC,IAAAA,IAAI,EAAEI,SAAU;AAChB5C,IAAAA,GAAG,EAAEA,GAAI;AACTE,IAAAA,GAAG,EAAEA,GAAI;AACTK,IAAAA,SAAS,EAAEA,SAAU;AACrBC,IAAAA,YAAY,EAAEA,YAAa;AAC3BH,IAAAA,gBAAgB,EAAEA,gBAAiB;AACnC2G,IAAAA,UAAU,EAAEvF,WAAY;AACxB0B,IAAAA,aAAa,EAAEA,aAAc;AAC7B8D,IAAAA,WAAW,EAAErD,iBAAkB;AAC/BsD,IAAAA,UAAU,EAAExF,cAAe;AAC3ByF,IAAAA,aAAa,EAAE9D,eAAgB;AAC/BD,IAAAA,SAAS,EAAE6B,aAAc;AACzB3B,IAAAA,SAAS,EAAEA,SAAU;AACrBvC,IAAAA,MAAM,EAAEA,MAAO;IACf0C,QAAQ,EAAA,IAAA;AAAA,GACX,CAAC,eACFuC,sBAAA,CAAAC,aAAA,CAACmB,qCAAe,EAAE,IAAA,CAAC,eACnBpB,sBAAA,CAAAC,aAAA,CAACc,yBAAY,EAAA;AACTjH,IAAAA,KAAK,EAAEC,aAAc;AACrByC,IAAAA,IAAI,EAAEM,UAAW;AACjB9C,IAAAA,GAAG,EAAEA,GAAI;AACTE,IAAAA,GAAG,EAAEA,GAAI;AACTK,IAAAA,SAAS,EAAEA,SAAU;AACrBC,IAAAA,YAAY,EAAEA,YAAa;AAC3BH,IAAAA,gBAAgB,EAAEA,gBAAiB;AACnC2G,IAAAA,UAAU,EAAEvF,WAAY;AACxB0B,IAAAA,aAAa,EAAEA,aAAc;AAC7B8D,IAAAA,WAAW,EAAErD,iBAAkB;AAC/BsD,IAAAA,UAAU,EAAExF,cAAe;AAC3ByF,IAAAA,aAAa,EAAE9D,eAAgB;AAC/BD,IAAAA,SAAS,EAAE6B,aAAc;AACzB3B,IAAAA,SAAS,EAAEA,SAAU;AACrBvC,IAAAA,MAAM,EAAEA,MAAO;IACf0C,QAAQ,EAAA,IAAA;IACR4D,QAAQ,EAAA,IAAA;GACX,CACH,CACL,EACA5E,aAAa,KAAK0B,mBAAa,CAACQ,MAAM,iBACnCqB,sBAAA,CAAAC,aAAA,CAAAD,sBAAA,CAAAc,QAAA,qBACId,sBAAA,CAAAC,aAAA,CAACqB,6BAAc,EAAA;AACXxH,IAAAA,KAAK,EAAEC,aAAc;AACrByC,IAAAA,IAAI,EAAEI,SAAU;AAChB5C,IAAAA,GAAG,EAAEA,GAAI;AACTE,IAAAA,GAAG,EAAEA,GAAI;AACTK,IAAAA,SAAS,EAAEE,cAAe;AAC1BD,IAAAA,YAAY,EAAEE,iBAAkB;AAChC6G,IAAAA,YAAY,EAAE9F,WAAY;AAC1B0B,IAAAA,aAAa,EAAEA,aAAc;AAC7BqE,IAAAA,aAAa,EAAE3D,mBAAoB;AACnCsD,IAAAA,aAAa,EAAE9D,eAAgB;AAC/BoE,IAAAA,YAAY,EAAE/F,cAAe;AAC7B0B,IAAAA,SAAS,EAAE6B,aAAc;AACzB3B,IAAAA,SAAS,EAAEA,SAAU;AACrBvC,IAAAA,MAAM,EAAEA,MAAO;IACf0C,QAAQ,EAAA,IAAA;AAAA,GACX,CAAC,eACFuC,sBAAA,CAAAC,aAAA,CAACmB,qCAAe,EAAE,IAAA,CAAC,eACnBpB,sBAAA,CAAAC,aAAA,CAACqB,6BAAc,EAAA;AACXxH,IAAAA,KAAK,EAAEC,aAAc;AACrByC,IAAAA,IAAI,EAAEM,UAAW;AACjB9C,IAAAA,GAAG,EAAEA,GAAI;AACTE,IAAAA,GAAG,EAAEA,GAAI;AACTK,IAAAA,SAAS,EAAEE,cAAe;AAC1BD,IAAAA,YAAY,EAAEE,iBAAkB;AAChC6G,IAAAA,YAAY,EAAE9F,WAAY;AAC1B0B,IAAAA,aAAa,EAAEA,aAAc;AAC7BqE,IAAAA,aAAa,EAAE3D,mBAAoB;AACnCsD,IAAAA,aAAa,EAAE9D,eAAgB;AAC/BoE,IAAAA,YAAY,EAAE/F,cAAe;AAC7B0B,IAAAA,SAAS,EAAE6B,aAAc;AACzB3B,IAAAA,SAAS,EAAEA,SAAU;AACrBvC,IAAAA,MAAM,EAAEA,MAAO;IACf0C,QAAQ,EAAA,IAAA;IACR4D,QAAQ,EAAA,IAAA;GACX,CACH,CACL,EACA5E,aAAa,KAAK0B,mBAAa,CAACS,QAAQ,iBACrCoB,sBAAA,CAAAC,aAAA,CAAAD,sBAAA,CAAAc,QAAA,qBACId,sBAAA,CAAAC,aAAA,CAACyB,iCAAgB,EAAA;AACb5H,IAAAA,KAAK,EAAEC,aAAc;AACrByC,IAAAA,IAAI,EAAEI,SAAU;AAChB5C,IAAAA,GAAG,EAAEA,GAAI;AACTE,IAAAA,GAAG,EAAEA,GAAI;AACTK,IAAAA,SAAS,EAAEI,gBAAiB;AAC5BH,IAAAA,YAAY,EAAEI,mBAAoB;AAClC+G,IAAAA,cAAc,EAAElG,WAAY;AAC5B0B,IAAAA,aAAa,EAAEA,aAAc;AAC7ByE,IAAAA,eAAe,EAAE9D,qBAAsB;AACvCqD,IAAAA,aAAa,EAAE9D,eAAgB;AAC/BwE,IAAAA,cAAc,EAAEnG,cAAe;AAC/B0B,IAAAA,SAAS,EAAE6B,aAAc;AACzB3B,IAAAA,SAAS,EAAEA,SAAU;IACrBG,QAAQ,EAAA,IAAA;AAAA,GACX,CAAC,eACFuC,sBAAA,CAAAC,aAAA,CAACmB,qCAAe,EAAE,IAAA,CAAC,eACnBpB,sBAAA,CAAAC,aAAA,CAACyB,iCAAgB,EAAA;AACb5H,IAAAA,KAAK,EAAEC,aAAc;AACrByC,IAAAA,IAAI,EAAEM,UAAW;AACjB9C,IAAAA,GAAG,EAAEA,GAAI;AACTE,IAAAA,GAAG,EAAEA,GAAI;AACTK,IAAAA,SAAS,EAAEI,gBAAiB;AAC5BH,IAAAA,YAAY,EAAEI,mBAAoB;AAClC+G,IAAAA,cAAc,EAAElG,WAAY;AAC5B0B,IAAAA,aAAa,EAAEA,aAAc;AAC7ByE,IAAAA,eAAe,EAAE9D,qBAAsB;AACvCqD,IAAAA,aAAa,EAAE9D,eAAgB;AAC/BwE,IAAAA,cAAc,EAAEnG,cAAe;AAC/B0B,IAAAA,SAAS,EAAE6B,aAAc;AACzB3B,IAAAA,SAAS,EAAEA,SAAU;IACrBG,QAAQ,EAAA,IAAA;IACR4D,QAAQ,EAAA,IAAA;GACX,CACH,CACL,EACA5E,aAAa,KAAK0B,mBAAa,CAACU,KAAK,iBAClCmB,sBAAA,CAAAC,aAAA,CAAAD,sBAAA,CAAAc,QAAA,qBACId,sBAAA,CAAAC,aAAA,CAAC6B,2BAAa,EAAA;AACVhI,IAAAA,KAAK,EAAEC,aAAc;AACrByC,IAAAA,IAAI,EAAEI,SAAU;AAChBF,IAAAA,SAAS,EAAEA,SAAU;AACrBS,IAAAA,aAAa,EAAEA,aAAc;AAC7BnD,IAAAA,GAAG,EAAEA,GAAI;AACTE,IAAAA,GAAG,EAAEA,GAAI;AACTK,IAAAA,SAAS,EAAEM,aAAc;AACzBL,IAAAA,YAAY,EAAEM,gBAAiB;AAC/BiH,IAAAA,WAAW,EAAEtG,WAAY;AACzBuG,IAAAA,YAAY,EAAEjE,kBAAmB;AACjCoD,IAAAA,aAAa,EAAE9D,eAAgB;AAC/B4E,IAAAA,WAAW,EAAEvG,cAAe;AAC5B0B,IAAAA,SAAS,EAAE6B,aAAc;AACzB3B,IAAAA,SAAS,EAAEA,SAAU;IACrBG,QAAQ,EAAA,IAAA;AAAA,GACX,CAAC,eACFuC,sBAAA,CAAAC,aAAA,CAACmB,qCAAe,EAAE,IAAA,CAAC,eACnBpB,sBAAA,CAAAC,aAAA,CAAC6B,2BAAa,EAAA;AACVhI,IAAAA,KAAK,EAAEC,aAAc;AACrByC,IAAAA,IAAI,EAAEM,UAAW;IACjBJ,SAAS,EAAEA,SAAS,GAAGoC,2BAAkB;AACzC3B,IAAAA,aAAa,EAAEA,aAAc;AAC7BnD,IAAAA,GAAG,EAAEA,GAAI;AACTE,IAAAA,GAAG,EAAEA,GAAI;AACTK,IAAAA,SAAS,EAAEM,aAAc;AACzBL,IAAAA,YAAY,EAAEM,gBAAiB;AAC/BiH,IAAAA,WAAW,EAAEtG,WAAY;AACzBuG,IAAAA,YAAY,EAAEjE,kBAAmB;AACjCoD,IAAAA,aAAa,EAAE9D,eAAgB;AAC/B4E,IAAAA,WAAW,EAAEvG,cAAe;AAC5B0B,IAAAA,SAAS,EAAE6B,aAAc;AACzB3B,IAAAA,SAAS,EAAEA,SAAU;IACrBG,QAAQ,EAAA,IAAA;IACR4D,QAAQ,EAAA,IAAA;GACX,CACH,CAEK,CACb,CAAC,CAAA;AAEf,CACJ,EAAC;AAEE,MAAMa,oBAAoB,GAAG;AAChCC,EAAAA,IAAI,EAAE,gBAAgB;AACtBC,EAAAA,GAAG,EAAE,KAAK;AACVC,EAAAA,MAAM,EAAE3I,kBAAkB;AAC1B4I,EAAAA,IAAI,EAAEC,oCAAc;AACpBC,EAAAA,UAAU,EAAE;AACRC,IAAAA,IAAI,EAAE;AACFC,MAAAA,GAAG,EAAEC,SAAAA;AACT,KAAA;GACH;AACDC,EAAAA,QAAQ,EAAE;AACNH,IAAAA,IAAI,EAAE,SAAS;AACf9F,IAAAA,IAAI,EAAE,GAAA;AACV,GAAA;AACJ;;;;;"}
|
@@ -96,6 +96,9 @@ const CalendarDays = ({
|
|
96
96
|
const handleMouseOutGrid = () => onHoverDay?.(undefined);
|
97
97
|
const getRefs = (element, isDayInCurrentMonth, i, j) => {
|
98
98
|
if (isDayInCurrentMonth) {
|
99
|
+
if (!outerRefs.current[i + offset]) {
|
100
|
+
outerRefs.current[i + offset] = [];
|
101
|
+
}
|
99
102
|
outerRefs.current[i + offset][j] = element;
|
100
103
|
}
|
101
104
|
};
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"CalendarDays.js","sources":["../../../../../src/components/Calendar/ui/CalendarDays/CalendarDays.tsx"],"sourcesContent":["import React, { Fragment, useCallback, useEffect, useRef } from 'react';\n\nimport { useDays } from '../../hooks';\nimport {\n canSelectDate,\n FULL_DAY_NAMES,\n getInRange,\n getSideInRange,\n isSameDay,\n isSelectProcess,\n ROW_STEP,\n SHORT_DAY_NAMES,\n I18N,\n} from '../../utils';\nimport { DateStructureItem } from '../DateStructureItem/DateStructureItem';\nimport { DateItem } from '../../Calendar.types';\nimport { innerTokens, tokens } from '../../Calendar.tokens';\n\nimport { StyledCalendarDays, StyledCalendarDaysHint } from './CalendarDays.styles';\nimport type { CalendarDaysProps } from './CalendarDays.types';\n\n/**\n * Компонент дней в календаре.\n */\nexport const CalendarDays: React.FC<CalendarDaysProps> = ({\n date: currentDate,\n value,\n eventList,\n disabledList,\n min,\n max,\n includeEdgeDates,\n hoveredDay,\n selectIndexes,\n isDouble,\n isSecond,\n outerRefs,\n onChangeDay,\n onHoverDay,\n onSetSelected,\n onKeyDown,\n locale = 'ru',\n}) => {\n const [days, selected] = useDays({ date: currentDate, value, eventList, disabledList, min, max, includeEdgeDates });\n const selectedRef = useRef(selected);\n const onSetSelectedRef = useRef(onSetSelected);\n\n const offset = isSecond ? ROW_STEP : 0;\n\n const dayItemTokens = {\n [`${innerTokens.dateStructureFontFamily}`]: `var(${tokens.calendarDayFontFamily})`,\n [`${innerTokens.dateStructureFontSize}`]: `var(${tokens.calendarDayFontSize})`,\n [`${innerTokens.dateStructureFontWeight}`]: `var(${tokens.calendarDayFontWeight})`,\n [`${innerTokens.dateStructureFontLineHeight}`]: `var(${tokens.calendarDayFontLineHeight})`,\n [`${innerTokens.dateStructureFontLetterSpacing}`]: `var(${tokens.calendarDayFontLetterSpacing})`,\n [`${innerTokens.dateStructureFontStyle}`]: `var(${tokens.calendarDayFontStyle})`,\n [`${innerTokens.dateStructureSelectedFontWeight}`]: `var(${tokens.calendarDaySelectedFontWeight})`,\n [`${innerTokens.dateStructureBorderRadius}`]: `var(${tokens.calendarDayItemBorderRadius})`,\n };\n\n const getSelectedDate = useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n const { day, monthIndex, year } = event.currentTarget.dataset;\n\n const selectedDate = {\n day: Number(day),\n monthIndex: Number(monthIndex),\n year: Number(year),\n };\n\n if (!canSelectDate(selectedDate, value, disabledList)) {\n return;\n }\n\n return selectedDate;\n },\n [disabledList, value],\n );\n\n const handleOnChangeDay = useCallback(\n (i: number, j: number) => (event: React.MouseEvent<HTMLDivElement>) => {\n const selectedDate = getSelectedDate(event);\n\n if (!selectedDate) {\n return;\n }\n\n onChangeDay(selectedDate, [i + offset, j]);\n\n if (isSelectProcess(value)) {\n onHoverDay?.(undefined);\n }\n },\n [getSelectedDate, onChangeDay, offset, value, onHoverDay],\n );\n\n const handleOnHoverDay = useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n const selectedDate = getSelectedDate(event);\n const isSelectedDone = Array.isArray(value) && value[0] && value[1];\n\n if (!selectedDate || !Array.isArray(value) || isSelectedDone) {\n return;\n }\n\n onHoverDay?.(selectedDate);\n },\n [getSelectedDate, onHoverDay, value],\n );\n\n const handleMouseOutGrid = () => onHoverDay?.(undefined);\n\n const getRefs = (element: HTMLDivElement, isDayInCurrentMonth: boolean, i: number, j: number) => {\n if (isDayInCurrentMonth) {\n outerRefs.current[i + offset][j] = element;\n }\n };\n\n useEffect(() => {\n if (selectedRef.current) {\n onSetSelectedRef.current?.(selectedRef.current);\n }\n }, []);\n\n return (\n <StyledCalendarDays\n role=\"grid\"\n aria-labelledby=\"id-grid-label\"\n onKeyDown={onKeyDown}\n onMouseLeave={handleMouseOutGrid}\n >\n <StyledCalendarDaysHint id=\"withShift\">{I18N.navigationByShift[locale]}</StyledCalendarDaysHint>\n <>\n {SHORT_DAY_NAMES[locale].map((name) => (\n <DateStructureItem\n role=\"columnheader\"\n aria-label={FULL_DAY_NAMES[locale][name]}\n key={name}\n dayOfWeek\n day={name}\n style={dayItemTokens}\n >\n {name}\n </DateStructureItem>\n ))}\n </>\n {days.map((day: DateItem[], i) => (\n <Fragment key={i}>\n {day.map(\n (\n {\n date,\n events,\n disabled,\n isSelected,\n isCurrent,\n isDayInCurrentMonth,\n inRange,\n isOutOfMinMaxRange = false,\n disabledArrowKey,\n disabledDates,\n },\n j,\n ) => (\n <DateStructureItem\n ref={(element: HTMLDivElement) => getRefs(element, Boolean(isDayInCurrentMonth), i, j)}\n style={dayItemTokens}\n eventList={events}\n disabled={disabled}\n day={date.day}\n year={date.year}\n monthIndex={date.monthIndex}\n isFocused={\n i + offset === selectIndexes?.[0] && j === selectIndexes?.[1] && !isOutOfMinMaxRange\n }\n isSelected={isSelected}\n isCurrent={isCurrent}\n isDayInCurrentMonth={isDayInCurrentMonth}\n isDouble={isDouble}\n isHovered={isSameDay(date, hoveredDay)}\n inRange={getInRange(value, date, hoveredDay, inRange)}\n sideInRange={getSideInRange(value, date, hoveredDay, isSelected)}\n onClick={disabled ? undefined : handleOnChangeDay(i, j)}\n onMouseOver={disabled ? undefined : handleOnHoverDay}\n key={`StyledDay-${i}-${j}`}\n role=\"gridcell\"\n disabledArrowKey={disabledArrowKey}\n disabledMonths={disabledDates}\n >\n {date.day}\n </DateStructureItem>\n ),\n )}\n </Fragment>\n ))}\n </StyledCalendarDays>\n );\n};\n"],"names":["CalendarDays","date","currentDate","value","eventList","disabledList","min","max","includeEdgeDates","hoveredDay","selectIndexes","isDouble","isSecond","outerRefs","onChangeDay","onHoverDay","onSetSelected","onKeyDown","locale","days","selected","useDays","selectedRef","useRef","onSetSelectedRef","offset","ROW_STEP","dayItemTokens","innerTokens","dateStructureFontFamily","tokens","calendarDayFontFamily","dateStructureFontSize","calendarDayFontSize","dateStructureFontWeight","calendarDayFontWeight","dateStructureFontLineHeight","calendarDayFontLineHeight","dateStructureFontLetterSpacing","calendarDayFontLetterSpacing","dateStructureFontStyle","calendarDayFontStyle","dateStructureSelectedFontWeight","calendarDaySelectedFontWeight","dateStructureBorderRadius","calendarDayItemBorderRadius","getSelectedDate","useCallback","event","day","monthIndex","year","currentTarget","dataset","selectedDate","Number","canSelectDate","handleOnChangeDay","i","j","isSelectProcess","undefined","handleOnHoverDay","isSelectedDone","Array","isArray","handleMouseOutGrid","getRefs","element","isDayInCurrentMonth","current","useEffect","React","createElement","StyledCalendarDays","role","onMouseLeave","StyledCalendarDaysHint","id","I18N","navigationByShift","Fragment","SHORT_DAY_NAMES","map","name","DateStructureItem","FULL_DAY_NAMES","key","dayOfWeek","style","events","disabled","isSelected","isCurrent","inRange","isOutOfMinMaxRange","disabledArrowKey","disabledDates","ref","Boolean","isFocused","isHovered","isSameDay","getInRange","sideInRange","getSideInRange","onClick","onMouseOver","disabledMonths"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"CalendarDays.js","sources":["../../../../../src/components/Calendar/ui/CalendarDays/CalendarDays.tsx"],"sourcesContent":["import React, { Fragment, useCallback, useEffect, useRef } from 'react';\n\nimport { useDays } from '../../hooks';\nimport {\n canSelectDate,\n FULL_DAY_NAMES,\n getInRange,\n getSideInRange,\n isSameDay,\n isSelectProcess,\n ROW_STEP,\n SHORT_DAY_NAMES,\n I18N,\n} from '../../utils';\nimport { DateStructureItem } from '../DateStructureItem/DateStructureItem';\nimport { DateItem } from '../../Calendar.types';\nimport { innerTokens, tokens } from '../../Calendar.tokens';\n\nimport { StyledCalendarDays, StyledCalendarDaysHint } from './CalendarDays.styles';\nimport type { CalendarDaysProps } from './CalendarDays.types';\n\n/**\n * Компонент дней в календаре.\n */\nexport const CalendarDays: React.FC<CalendarDaysProps> = ({\n date: currentDate,\n value,\n eventList,\n disabledList,\n min,\n max,\n includeEdgeDates,\n hoveredDay,\n selectIndexes,\n isDouble,\n isSecond,\n outerRefs,\n onChangeDay,\n onHoverDay,\n onSetSelected,\n onKeyDown,\n locale = 'ru',\n}) => {\n const [days, selected] = useDays({ date: currentDate, value, eventList, disabledList, min, max, includeEdgeDates });\n const selectedRef = useRef(selected);\n const onSetSelectedRef = useRef(onSetSelected);\n\n const offset = isSecond ? ROW_STEP : 0;\n\n const dayItemTokens = {\n [`${innerTokens.dateStructureFontFamily}`]: `var(${tokens.calendarDayFontFamily})`,\n [`${innerTokens.dateStructureFontSize}`]: `var(${tokens.calendarDayFontSize})`,\n [`${innerTokens.dateStructureFontWeight}`]: `var(${tokens.calendarDayFontWeight})`,\n [`${innerTokens.dateStructureFontLineHeight}`]: `var(${tokens.calendarDayFontLineHeight})`,\n [`${innerTokens.dateStructureFontLetterSpacing}`]: `var(${tokens.calendarDayFontLetterSpacing})`,\n [`${innerTokens.dateStructureFontStyle}`]: `var(${tokens.calendarDayFontStyle})`,\n [`${innerTokens.dateStructureSelectedFontWeight}`]: `var(${tokens.calendarDaySelectedFontWeight})`,\n [`${innerTokens.dateStructureBorderRadius}`]: `var(${tokens.calendarDayItemBorderRadius})`,\n };\n\n const getSelectedDate = useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n const { day, monthIndex, year } = event.currentTarget.dataset;\n\n const selectedDate = {\n day: Number(day),\n monthIndex: Number(monthIndex),\n year: Number(year),\n };\n\n if (!canSelectDate(selectedDate, value, disabledList)) {\n return;\n }\n\n return selectedDate;\n },\n [disabledList, value],\n );\n\n const handleOnChangeDay = useCallback(\n (i: number, j: number) => (event: React.MouseEvent<HTMLDivElement>) => {\n const selectedDate = getSelectedDate(event);\n\n if (!selectedDate) {\n return;\n }\n\n onChangeDay(selectedDate, [i + offset, j]);\n\n if (isSelectProcess(value)) {\n onHoverDay?.(undefined);\n }\n },\n [getSelectedDate, onChangeDay, offset, value, onHoverDay],\n );\n\n const handleOnHoverDay = useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n const selectedDate = getSelectedDate(event);\n const isSelectedDone = Array.isArray(value) && value[0] && value[1];\n\n if (!selectedDate || !Array.isArray(value) || isSelectedDone) {\n return;\n }\n\n onHoverDay?.(selectedDate);\n },\n [getSelectedDate, onHoverDay, value],\n );\n\n const handleMouseOutGrid = () => onHoverDay?.(undefined);\n\n const getRefs = (element: HTMLDivElement, isDayInCurrentMonth: boolean, i: number, j: number) => {\n if (isDayInCurrentMonth) {\n if (!outerRefs.current[i + offset]) {\n outerRefs.current[i + offset] = [];\n }\n\n outerRefs.current[i + offset][j] = element;\n }\n };\n\n useEffect(() => {\n if (selectedRef.current) {\n onSetSelectedRef.current?.(selectedRef.current);\n }\n }, []);\n\n return (\n <StyledCalendarDays\n role=\"grid\"\n aria-labelledby=\"id-grid-label\"\n onKeyDown={onKeyDown}\n onMouseLeave={handleMouseOutGrid}\n >\n <StyledCalendarDaysHint id=\"withShift\">{I18N.navigationByShift[locale]}</StyledCalendarDaysHint>\n <>\n {SHORT_DAY_NAMES[locale].map((name) => (\n <DateStructureItem\n role=\"columnheader\"\n aria-label={FULL_DAY_NAMES[locale][name]}\n key={name}\n dayOfWeek\n day={name}\n style={dayItemTokens}\n >\n {name}\n </DateStructureItem>\n ))}\n </>\n {days.map((day: DateItem[], i) => (\n <Fragment key={i}>\n {day.map(\n (\n {\n date,\n events,\n disabled,\n isSelected,\n isCurrent,\n isDayInCurrentMonth,\n inRange,\n isOutOfMinMaxRange = false,\n disabledArrowKey,\n disabledDates,\n },\n j,\n ) => (\n <DateStructureItem\n ref={(element: HTMLDivElement) => getRefs(element, Boolean(isDayInCurrentMonth), i, j)}\n style={dayItemTokens}\n eventList={events}\n disabled={disabled}\n day={date.day}\n year={date.year}\n monthIndex={date.monthIndex}\n isFocused={\n i + offset === selectIndexes?.[0] && j === selectIndexes?.[1] && !isOutOfMinMaxRange\n }\n isSelected={isSelected}\n isCurrent={isCurrent}\n isDayInCurrentMonth={isDayInCurrentMonth}\n isDouble={isDouble}\n isHovered={isSameDay(date, hoveredDay)}\n inRange={getInRange(value, date, hoveredDay, inRange)}\n sideInRange={getSideInRange(value, date, hoveredDay, isSelected)}\n onClick={disabled ? undefined : handleOnChangeDay(i, j)}\n onMouseOver={disabled ? undefined : handleOnHoverDay}\n key={`StyledDay-${i}-${j}`}\n role=\"gridcell\"\n disabledArrowKey={disabledArrowKey}\n disabledMonths={disabledDates}\n >\n {date.day}\n </DateStructureItem>\n ),\n )}\n </Fragment>\n ))}\n </StyledCalendarDays>\n );\n};\n"],"names":["CalendarDays","date","currentDate","value","eventList","disabledList","min","max","includeEdgeDates","hoveredDay","selectIndexes","isDouble","isSecond","outerRefs","onChangeDay","onHoverDay","onSetSelected","onKeyDown","locale","days","selected","useDays","selectedRef","useRef","onSetSelectedRef","offset","ROW_STEP","dayItemTokens","innerTokens","dateStructureFontFamily","tokens","calendarDayFontFamily","dateStructureFontSize","calendarDayFontSize","dateStructureFontWeight","calendarDayFontWeight","dateStructureFontLineHeight","calendarDayFontLineHeight","dateStructureFontLetterSpacing","calendarDayFontLetterSpacing","dateStructureFontStyle","calendarDayFontStyle","dateStructureSelectedFontWeight","calendarDaySelectedFontWeight","dateStructureBorderRadius","calendarDayItemBorderRadius","getSelectedDate","useCallback","event","day","monthIndex","year","currentTarget","dataset","selectedDate","Number","canSelectDate","handleOnChangeDay","i","j","isSelectProcess","undefined","handleOnHoverDay","isSelectedDone","Array","isArray","handleMouseOutGrid","getRefs","element","isDayInCurrentMonth","current","useEffect","React","createElement","StyledCalendarDays","role","onMouseLeave","StyledCalendarDaysHint","id","I18N","navigationByShift","Fragment","SHORT_DAY_NAMES","map","name","DateStructureItem","FULL_DAY_NAMES","key","dayOfWeek","style","events","disabled","isSelected","isCurrent","inRange","isOutOfMinMaxRange","disabledArrowKey","disabledDates","ref","Boolean","isFocused","isHovered","isSameDay","getInRange","sideInRange","getSideInRange","onClick","onMouseOver","disabledMonths"],"mappings":"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"}
|
@@ -102,6 +102,9 @@ const CalendarMonths = ({
|
|
102
102
|
}, [getSelectedDate, onHoverMonth, value]);
|
103
103
|
const handleMouseOutGrid = () => onHoverMonth?.(undefined);
|
104
104
|
const getRefs = React.useCallback((element, i, j) => {
|
105
|
+
if (!outerRefs.current[i + offset]) {
|
106
|
+
outerRefs.current[i + offset] = [];
|
107
|
+
}
|
105
108
|
outerRefs.current[i + offset][j] = element;
|
106
109
|
}, [offset, outerRefs]);
|
107
110
|
React.useEffect(() => {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"CalendarMonths.js","sources":["../../../../../src/components/Calendar/ui/CalendarMonths/CalendarMonths.tsx"],"sourcesContent":["import React, { Fragment, useCallback, useEffect, useRef } from 'react';\n\nimport { useMonths } from '../../hooks';\nimport { innerTokens, tokens } from '../../Calendar.tokens';\nimport { ROW_MONTH_STEP, canSelectDate, getInRange, getSideInRange, isSameDay, isSelectProcess } from '../../utils';\nimport { DateStructureItem } from '../DateStructureItem/DateStructureItem';\n\nimport type { CalendarMonthsProps } from './CalendarMonths.types';\nimport { StyledCalendarMonths } from './CalendarMonths.styles';\n\n/**\n * Компонент месяцев в календаре.\n */\nexport const CalendarMonths: React.FC<CalendarMonthsProps> = ({\n date: currentDate,\n value,\n selectIndexes,\n eventList,\n disabledList,\n min,\n max,\n outerRefs,\n isDouble,\n isSecond,\n hoveredMonth,\n onChangeMonth,\n onHoverMonth,\n onSetSelected,\n onKeyDown,\n locale,\n}) => {\n const minDate = min ? new Date(min.getFullYear(), min.getMonth(), 1) : undefined;\n const maxDate = max ? new Date(max.getFullYear(), max.getMonth() + 1, 0) : undefined;\n\n const [months, selected] = useMonths({\n date: currentDate,\n value,\n eventList,\n disabledList,\n min: minDate,\n max: maxDate,\n locale,\n });\n const selectedRef = useRef(selected);\n const onSetSelectedRef = useRef(onSetSelected);\n\n const offset = isSecond ? ROW_MONTH_STEP : 0;\n\n const monthItemTokens = {\n [`${innerTokens.dateStructureFontFamily}`]: `var(${tokens.calendarMonthFontFamily})`,\n [`${innerTokens.dateStructureFontSize}`]: `var(${tokens.calendarMonthFontSize})`,\n [`${innerTokens.dateStructureFontWeight}`]: `var(${tokens.calendarMonthFontWeight})`,\n [`${innerTokens.dateStructureFontLineHeight}`]: `var(${tokens.calendarMonthFontLineHeight})`,\n [`${innerTokens.dateStructureFontLetterSpacing}`]: `var(${tokens.calendarMonthFontLetterSpacing})`,\n [`${innerTokens.dateStructureFontStyle}`]: `var(${tokens.calendarMonthFontStyle})`,\n [`${innerTokens.dateStructureSelectedFontWeight}`]: `var(${tokens.calendarMonthSelectedFontWeight})`,\n [`${innerTokens.dateStructureBorderRadius}`]: `var(${tokens.calendarMonthItemBorderRadius})`,\n };\n\n const getSelectedDate = useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n const { day, monthIndex, year } = event.currentTarget.dataset;\n\n const selectedDate = {\n day: Number(day),\n monthIndex: Number(monthIndex),\n year: Number(year),\n };\n\n if (!canSelectDate(selectedDate, value, disabledList)) {\n return;\n }\n\n return selectedDate;\n },\n [disabledList, value],\n );\n\n const handleOnChangeMonth = useCallback(\n (i: number, j: number) => (event: React.MouseEvent<HTMLDivElement>) => {\n /**\n * нужно вызвать stopImmediatePropagation для случаев, когда\n * обработчик события onClick навешивается снаружи.\n * Как, например, в компоненте Popup\n */\n event.nativeEvent.stopImmediatePropagation();\n\n const selectedDate = getSelectedDate(event);\n\n if (!selectedDate) {\n return;\n }\n\n onChangeMonth(selectedDate, [i + offset, j]);\n\n if (isSelectProcess(value)) {\n onHoverMonth?.(undefined);\n }\n },\n [getSelectedDate, onChangeMonth, offset, value, onHoverMonth],\n );\n\n const handleOnHoverMonth = useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n const selectedDate = getSelectedDate(event);\n const isSelectedDone = Array.isArray(value) && value[0] && value[1];\n\n if (!selectedDate || !Array.isArray(value) || isSelectedDone) {\n return;\n }\n\n onHoverMonth?.(selectedDate);\n },\n [getSelectedDate, onHoverMonth, value],\n );\n\n const handleMouseOutGrid = () => onHoverMonth?.(undefined);\n\n const getRefs = useCallback(\n (element: HTMLDivElement, i: number, j: number) => {\n outerRefs.current[i + offset][j] = element;\n },\n [offset, outerRefs],\n );\n\n useEffect(() => {\n if (selectedRef.current) {\n onSetSelectedRef.current?.(selectedRef.current);\n }\n }, []);\n\n return (\n <StyledCalendarMonths\n role=\"grid\"\n aria-labelledby=\"id-grid-label\"\n onKeyDown={onKeyDown}\n onMouseLeave={handleMouseOutGrid}\n >\n {months.map((month, i) => (\n <Fragment key={i}>\n {month.map(\n (\n {\n monthName,\n monthIndex,\n isSelected,\n isCurrent,\n monthFullName,\n date,\n events,\n isOutOfMinMaxRange,\n inRange,\n disabled,\n disabledArrowKey,\n disabledDates,\n },\n j,\n ) => {\n return (\n <DateStructureItem\n ref={(element: HTMLDivElement) => getRefs(element, i, j)}\n style={monthItemTokens}\n eventList={events}\n disabled={disabled}\n day={date.day}\n year={date.year}\n monthIndex={monthIndex}\n isFocused={\n i + offset === selectIndexes?.[0] &&\n j === selectIndexes?.[1] &&\n !isOutOfMinMaxRange\n }\n isSelected={isSelected}\n isCurrent={isCurrent}\n isDouble={isDouble}\n isHovered={isSameDay(date, hoveredMonth)}\n inRange={getInRange(value, date, hoveredMonth, inRange)}\n sideInRange={getSideInRange(value, date, hoveredMonth, isSelected)}\n onClick={disabled ? undefined : handleOnChangeMonth(i, j)}\n onMouseOver={disabled ? undefined : handleOnHoverMonth}\n key={`StyledMonth-${i}-${j}`}\n role=\"gridcell\"\n aria-label={monthFullName}\n disabledArrowKey={disabledArrowKey}\n disabledMonths={disabledDates}\n isDayInCurrentMonth\n >\n {monthName}\n </DateStructureItem>\n );\n },\n )}\n </Fragment>\n ))}\n </StyledCalendarMonths>\n );\n};\n"],"names":["CalendarMonths","date","currentDate","value","selectIndexes","eventList","disabledList","min","max","outerRefs","isDouble","isSecond","hoveredMonth","onChangeMonth","onHoverMonth","onSetSelected","onKeyDown","locale","minDate","Date","getFullYear","getMonth","undefined","maxDate","months","selected","useMonths","selectedRef","useRef","onSetSelectedRef","offset","ROW_MONTH_STEP","monthItemTokens","innerTokens","dateStructureFontFamily","tokens","calendarMonthFontFamily","dateStructureFontSize","calendarMonthFontSize","dateStructureFontWeight","calendarMonthFontWeight","dateStructureFontLineHeight","calendarMonthFontLineHeight","dateStructureFontLetterSpacing","calendarMonthFontLetterSpacing","dateStructureFontStyle","calendarMonthFontStyle","dateStructureSelectedFontWeight","calendarMonthSelectedFontWeight","dateStructureBorderRadius","calendarMonthItemBorderRadius","getSelectedDate","useCallback","event","day","monthIndex","year","currentTarget","dataset","selectedDate","Number","canSelectDate","handleOnChangeMonth","i","j","nativeEvent","stopImmediatePropagation","isSelectProcess","handleOnHoverMonth","isSelectedDone","Array","isArray","handleMouseOutGrid","getRefs","element","current","useEffect","React","createElement","StyledCalendarMonths","role","onMouseLeave","map","month","Fragment","key","monthName","isSelected","isCurrent","monthFullName","events","isOutOfMinMaxRange","inRange","disabled","disabledArrowKey","disabledDates","DateStructureItem","ref","style","isFocused","isHovered","isSameDay","getInRange","sideInRange","getSideInRange","onClick","onMouseOver","disabledMonths","isDayInCurrentMonth"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"CalendarMonths.js","sources":["../../../../../src/components/Calendar/ui/CalendarMonths/CalendarMonths.tsx"],"sourcesContent":["import React, { Fragment, useCallback, useEffect, useRef } from 'react';\n\nimport { useMonths } from '../../hooks';\nimport { innerTokens, tokens } from '../../Calendar.tokens';\nimport { ROW_MONTH_STEP, canSelectDate, getInRange, getSideInRange, isSameDay, isSelectProcess } from '../../utils';\nimport { DateStructureItem } from '../DateStructureItem/DateStructureItem';\n\nimport type { CalendarMonthsProps } from './CalendarMonths.types';\nimport { StyledCalendarMonths } from './CalendarMonths.styles';\n\n/**\n * Компонент месяцев в календаре.\n */\nexport const CalendarMonths: React.FC<CalendarMonthsProps> = ({\n date: currentDate,\n value,\n selectIndexes,\n eventList,\n disabledList,\n min,\n max,\n outerRefs,\n isDouble,\n isSecond,\n hoveredMonth,\n onChangeMonth,\n onHoverMonth,\n onSetSelected,\n onKeyDown,\n locale,\n}) => {\n const minDate = min ? new Date(min.getFullYear(), min.getMonth(), 1) : undefined;\n const maxDate = max ? new Date(max.getFullYear(), max.getMonth() + 1, 0) : undefined;\n\n const [months, selected] = useMonths({\n date: currentDate,\n value,\n eventList,\n disabledList,\n min: minDate,\n max: maxDate,\n locale,\n });\n const selectedRef = useRef(selected);\n const onSetSelectedRef = useRef(onSetSelected);\n\n const offset = isSecond ? ROW_MONTH_STEP : 0;\n\n const monthItemTokens = {\n [`${innerTokens.dateStructureFontFamily}`]: `var(${tokens.calendarMonthFontFamily})`,\n [`${innerTokens.dateStructureFontSize}`]: `var(${tokens.calendarMonthFontSize})`,\n [`${innerTokens.dateStructureFontWeight}`]: `var(${tokens.calendarMonthFontWeight})`,\n [`${innerTokens.dateStructureFontLineHeight}`]: `var(${tokens.calendarMonthFontLineHeight})`,\n [`${innerTokens.dateStructureFontLetterSpacing}`]: `var(${tokens.calendarMonthFontLetterSpacing})`,\n [`${innerTokens.dateStructureFontStyle}`]: `var(${tokens.calendarMonthFontStyle})`,\n [`${innerTokens.dateStructureSelectedFontWeight}`]: `var(${tokens.calendarMonthSelectedFontWeight})`,\n [`${innerTokens.dateStructureBorderRadius}`]: `var(${tokens.calendarMonthItemBorderRadius})`,\n };\n\n const getSelectedDate = useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n const { day, monthIndex, year } = event.currentTarget.dataset;\n\n const selectedDate = {\n day: Number(day),\n monthIndex: Number(monthIndex),\n year: Number(year),\n };\n\n if (!canSelectDate(selectedDate, value, disabledList)) {\n return;\n }\n\n return selectedDate;\n },\n [disabledList, value],\n );\n\n const handleOnChangeMonth = useCallback(\n (i: number, j: number) => (event: React.MouseEvent<HTMLDivElement>) => {\n /**\n * нужно вызвать stopImmediatePropagation для случаев, когда\n * обработчик события onClick навешивается снаружи.\n * Как, например, в компоненте Popup\n */\n event.nativeEvent.stopImmediatePropagation();\n\n const selectedDate = getSelectedDate(event);\n\n if (!selectedDate) {\n return;\n }\n\n onChangeMonth(selectedDate, [i + offset, j]);\n\n if (isSelectProcess(value)) {\n onHoverMonth?.(undefined);\n }\n },\n [getSelectedDate, onChangeMonth, offset, value, onHoverMonth],\n );\n\n const handleOnHoverMonth = useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n const selectedDate = getSelectedDate(event);\n const isSelectedDone = Array.isArray(value) && value[0] && value[1];\n\n if (!selectedDate || !Array.isArray(value) || isSelectedDone) {\n return;\n }\n\n onHoverMonth?.(selectedDate);\n },\n [getSelectedDate, onHoverMonth, value],\n );\n\n const handleMouseOutGrid = () => onHoverMonth?.(undefined);\n\n const getRefs = useCallback(\n (element: HTMLDivElement, i: number, j: number) => {\n if (!outerRefs.current[i + offset]) {\n outerRefs.current[i + offset] = [];\n }\n\n outerRefs.current[i + offset][j] = element;\n },\n [offset, outerRefs],\n );\n\n useEffect(() => {\n if (selectedRef.current) {\n onSetSelectedRef.current?.(selectedRef.current);\n }\n }, []);\n\n return (\n <StyledCalendarMonths\n role=\"grid\"\n aria-labelledby=\"id-grid-label\"\n onKeyDown={onKeyDown}\n onMouseLeave={handleMouseOutGrid}\n >\n {months.map((month, i) => (\n <Fragment key={i}>\n {month.map(\n (\n {\n monthName,\n monthIndex,\n isSelected,\n isCurrent,\n monthFullName,\n date,\n events,\n isOutOfMinMaxRange,\n inRange,\n disabled,\n disabledArrowKey,\n disabledDates,\n },\n j,\n ) => {\n return (\n <DateStructureItem\n ref={(element: HTMLDivElement) => getRefs(element, i, j)}\n style={monthItemTokens}\n eventList={events}\n disabled={disabled}\n day={date.day}\n year={date.year}\n monthIndex={monthIndex}\n isFocused={\n i + offset === selectIndexes?.[0] &&\n j === selectIndexes?.[1] &&\n !isOutOfMinMaxRange\n }\n isSelected={isSelected}\n isCurrent={isCurrent}\n isDouble={isDouble}\n isHovered={isSameDay(date, hoveredMonth)}\n inRange={getInRange(value, date, hoveredMonth, inRange)}\n sideInRange={getSideInRange(value, date, hoveredMonth, isSelected)}\n onClick={disabled ? undefined : handleOnChangeMonth(i, j)}\n onMouseOver={disabled ? undefined : handleOnHoverMonth}\n key={`StyledMonth-${i}-${j}`}\n role=\"gridcell\"\n aria-label={monthFullName}\n disabledArrowKey={disabledArrowKey}\n disabledMonths={disabledDates}\n isDayInCurrentMonth\n >\n {monthName}\n </DateStructureItem>\n );\n },\n )}\n </Fragment>\n ))}\n </StyledCalendarMonths>\n );\n};\n"],"names":["CalendarMonths","date","currentDate","value","selectIndexes","eventList","disabledList","min","max","outerRefs","isDouble","isSecond","hoveredMonth","onChangeMonth","onHoverMonth","onSetSelected","onKeyDown","locale","minDate","Date","getFullYear","getMonth","undefined","maxDate","months","selected","useMonths","selectedRef","useRef","onSetSelectedRef","offset","ROW_MONTH_STEP","monthItemTokens","innerTokens","dateStructureFontFamily","tokens","calendarMonthFontFamily","dateStructureFontSize","calendarMonthFontSize","dateStructureFontWeight","calendarMonthFontWeight","dateStructureFontLineHeight","calendarMonthFontLineHeight","dateStructureFontLetterSpacing","calendarMonthFontLetterSpacing","dateStructureFontStyle","calendarMonthFontStyle","dateStructureSelectedFontWeight","calendarMonthSelectedFontWeight","dateStructureBorderRadius","calendarMonthItemBorderRadius","getSelectedDate","useCallback","event","day","monthIndex","year","currentTarget","dataset","selectedDate","Number","canSelectDate","handleOnChangeMonth","i","j","nativeEvent","stopImmediatePropagation","isSelectProcess","handleOnHoverMonth","isSelectedDone","Array","isArray","handleMouseOutGrid","getRefs","element","current","useEffect","React","createElement","StyledCalendarMonths","role","onMouseLeave","map","month","Fragment","key","monthName","isSelected","isCurrent","monthFullName","events","isOutOfMinMaxRange","inRange","disabled","disabledArrowKey","disabledDates","DateStructureItem","ref","style","isFocused","isHovered","isSameDay","getInRange","sideInRange","getSideInRange","onClick","onMouseOver","disabledMonths","isDayInCurrentMonth"],"mappings":"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"}
|
@@ -100,6 +100,9 @@ const CalendarQuarters = ({
|
|
100
100
|
}, [getSelectedDate, onHoverQuarter, value]);
|
101
101
|
const handleMouseOutGrid = () => onHoverQuarter?.(undefined);
|
102
102
|
const getRefs = React.useCallback((element, i, j) => {
|
103
|
+
if (!outerRefs.current[i + offset]) {
|
104
|
+
outerRefs.current[i + offset] = [];
|
105
|
+
}
|
103
106
|
outerRefs.current[i + offset][j] = element;
|
104
107
|
}, [offset, outerRefs]);
|
105
108
|
React.useEffect(() => {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"CalendarQuarters.js","sources":["../../../../../src/components/Calendar/ui/CalendarQuarters/CalendarQuarters.tsx"],"sourcesContent":["import React, { Fragment, useCallback, useEffect, useRef } from 'react';\n\nimport { useQuarters } from '../../hooks';\nimport { innerTokens, tokens } from '../../Calendar.tokens';\nimport { ROW_QUARTER_STEP, canSelectDate, getInRange, getSideInRange, isSameDay, isSelectProcess } from '../../utils';\nimport { DateStructureItem } from '../DateStructureItem/DateStructureItem';\n\nimport type { CalendarQuartersProps } from './CalendarQuarters.types';\nimport { StyledCalendarQuarters } from './CalendarQuarters.styles';\n\n/**\n * Компонент кварталов в календаре.\n */\nexport const CalendarQuarters: React.FC<CalendarQuartersProps> = ({\n date: currentDate,\n value,\n selectIndexes,\n eventList,\n disabledList,\n min,\n max,\n outerRefs,\n isDouble,\n isSecond,\n hoveredQuarter,\n onChangeQuarter,\n onHoverQuarter,\n onSetSelected,\n onKeyDown,\n}) => {\n const minDate = min ? new Date(min.getFullYear(), min.getMonth(), 1) : undefined;\n const maxDate = max ? new Date(max.getFullYear(), max.getMonth() + 1, 0) : undefined;\n\n const [quarters, selected] = useQuarters({\n date: currentDate,\n value,\n eventList,\n disabledList,\n min: minDate,\n max: maxDate,\n });\n const selectedRef = useRef(selected);\n const onSetSelectedRef = useRef(onSetSelected);\n\n const offset = isSecond ? ROW_QUARTER_STEP : 0;\n\n const quarterItemTokens = {\n [`${innerTokens.dateStructureFontFamily}`]: `var(${tokens.calendarQuarterFontFamily})`,\n [`${innerTokens.dateStructureFontSize}`]: `var(${tokens.calendarQuarterFontSize})`,\n [`${innerTokens.dateStructureFontWeight}`]: `var(${tokens.calendarQuarterFontWeight})`,\n [`${innerTokens.dateStructureFontLineHeight}`]: `var(${tokens.calendarQuarterFontLineHeight})`,\n [`${innerTokens.dateStructureFontLetterSpacing}`]: `var(${tokens.calendarQuarterFontLetterSpacing})`,\n [`${innerTokens.dateStructureFontStyle}`]: `var(${tokens.calendarQuarterFontStyle})`,\n [`${innerTokens.dateStructureSelectedFontWeight}`]: `var(${tokens.calendarQuarterSelectedFontWeight})`,\n [`${innerTokens.dateStructureBorderRadius}`]: `var(${tokens.calendarQuarterItemBorderRadius})`,\n };\n\n const getSelectedDate = useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n const { day, monthIndex, year } = event.currentTarget.dataset;\n\n const selectedDate = {\n day: Number(day),\n monthIndex: Number(monthIndex),\n year: Number(year),\n };\n\n if (!canSelectDate(selectedDate, value, disabledList)) {\n return;\n }\n\n return selectedDate;\n },\n [disabledList, value],\n );\n\n const handleOnChangeQuarter = useCallback(\n (i: number, j: number, quarterName: string) => (event: React.MouseEvent<HTMLDivElement>) => {\n /**\n * нужно вызвать stopImmediatePropagation для случаев, когда\n * обработчик события onClick навешивается снаружи.\n * Как, например, в компоненте Popup\n */\n event.nativeEvent.stopImmediatePropagation();\n\n const selectedDate = getSelectedDate(event);\n\n if (!selectedDate) {\n return;\n }\n\n onChangeQuarter(selectedDate, [i + offset, j], quarterName);\n\n if (isSelectProcess(value)) {\n onHoverQuarter?.(undefined);\n }\n },\n [getSelectedDate, onChangeQuarter, offset, value, onHoverQuarter],\n );\n\n const handleOnHoverQuarter = useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n const selectedDate = getSelectedDate(event);\n const isSelectedDone = Array.isArray(value) && value[0] && value[1];\n\n if (!selectedDate || !Array.isArray(value) || isSelectedDone) {\n return;\n }\n\n onHoverQuarter?.(selectedDate);\n },\n [getSelectedDate, onHoverQuarter, value],\n );\n\n const handleMouseOutGrid = () => onHoverQuarter?.(undefined);\n\n const getRefs = useCallback(\n (element: HTMLDivElement, i: number, j: number) => {\n outerRefs.current[i + offset][j] = element;\n },\n [offset, outerRefs],\n );\n\n useEffect(() => {\n if (selectedRef.current) {\n onSetSelectedRef.current?.(selectedRef.current);\n }\n }, []);\n\n return (\n <StyledCalendarQuarters\n role=\"grid\"\n aria-labelledby=\"id-grid-label\"\n onKeyDown={onKeyDown}\n onMouseLeave={handleMouseOutGrid}\n >\n {quarters.map((quarter, i) => (\n <Fragment key={i}>\n {quarter.map(\n (\n {\n quarterName,\n isSelected,\n isCurrent,\n date,\n events,\n isOutOfMinMaxRange,\n inRange,\n disabled,\n disabledArrowKey,\n disabledDates,\n },\n j,\n ) => {\n return (\n <DateStructureItem\n ref={(element: HTMLDivElement) => getRefs(element, i, j)}\n style={quarterItemTokens}\n eventList={events}\n disabled={disabled}\n day={date.day}\n year={date.year}\n monthIndex={date.monthIndex}\n isFocused={\n i + offset === selectIndexes?.[0] &&\n j === selectIndexes?.[1] &&\n !isOutOfMinMaxRange\n }\n isSelected={isSelected}\n isCurrent={isCurrent}\n isDouble={isDouble}\n isHovered={isSameDay(date, hoveredQuarter)}\n inRange={getInRange(value, date, hoveredQuarter, inRange)}\n sideInRange={getSideInRange(value, date, hoveredQuarter, isSelected)}\n onClick={disabled ? undefined : handleOnChangeQuarter(i, j, String(quarterName))}\n onMouseOver={disabled ? undefined : handleOnHoverQuarter}\n key={`StyledQuarter-${i}-${j}`}\n role=\"gridcell\"\n aria-label={quarterName}\n disabledArrowKey={disabledArrowKey}\n disabledMonths={disabledDates}\n isDayInCurrentMonth\n >\n {quarterName}\n </DateStructureItem>\n );\n },\n )}\n </Fragment>\n ))}\n </StyledCalendarQuarters>\n );\n};\n"],"names":["CalendarQuarters","date","currentDate","value","selectIndexes","eventList","disabledList","min","max","outerRefs","isDouble","isSecond","hoveredQuarter","onChangeQuarter","onHoverQuarter","onSetSelected","onKeyDown","minDate","Date","getFullYear","getMonth","undefined","maxDate","quarters","selected","useQuarters","selectedRef","useRef","onSetSelectedRef","offset","ROW_QUARTER_STEP","quarterItemTokens","innerTokens","dateStructureFontFamily","tokens","calendarQuarterFontFamily","dateStructureFontSize","calendarQuarterFontSize","dateStructureFontWeight","calendarQuarterFontWeight","dateStructureFontLineHeight","calendarQuarterFontLineHeight","dateStructureFontLetterSpacing","calendarQuarterFontLetterSpacing","dateStructureFontStyle","calendarQuarterFontStyle","dateStructureSelectedFontWeight","calendarQuarterSelectedFontWeight","dateStructureBorderRadius","calendarQuarterItemBorderRadius","getSelectedDate","useCallback","event","day","monthIndex","year","currentTarget","dataset","selectedDate","Number","canSelectDate","handleOnChangeQuarter","i","j","quarterName","nativeEvent","stopImmediatePropagation","isSelectProcess","handleOnHoverQuarter","isSelectedDone","Array","isArray","handleMouseOutGrid","getRefs","element","current","useEffect","React","createElement","StyledCalendarQuarters","role","onMouseLeave","map","quarter","Fragment","key","isSelected","isCurrent","events","isOutOfMinMaxRange","inRange","disabled","disabledArrowKey","disabledDates","DateStructureItem","ref","style","isFocused","isHovered","isSameDay","getInRange","sideInRange","getSideInRange","onClick","String","onMouseOver","disabledMonths","isDayInCurrentMonth"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"CalendarQuarters.js","sources":["../../../../../src/components/Calendar/ui/CalendarQuarters/CalendarQuarters.tsx"],"sourcesContent":["import React, { Fragment, useCallback, useEffect, useRef } from 'react';\n\nimport { useQuarters } from '../../hooks';\nimport { innerTokens, tokens } from '../../Calendar.tokens';\nimport { ROW_QUARTER_STEP, canSelectDate, getInRange, getSideInRange, isSameDay, isSelectProcess } from '../../utils';\nimport { DateStructureItem } from '../DateStructureItem/DateStructureItem';\n\nimport type { CalendarQuartersProps } from './CalendarQuarters.types';\nimport { StyledCalendarQuarters } from './CalendarQuarters.styles';\n\n/**\n * Компонент кварталов в календаре.\n */\nexport const CalendarQuarters: React.FC<CalendarQuartersProps> = ({\n date: currentDate,\n value,\n selectIndexes,\n eventList,\n disabledList,\n min,\n max,\n outerRefs,\n isDouble,\n isSecond,\n hoveredQuarter,\n onChangeQuarter,\n onHoverQuarter,\n onSetSelected,\n onKeyDown,\n}) => {\n const minDate = min ? new Date(min.getFullYear(), min.getMonth(), 1) : undefined;\n const maxDate = max ? new Date(max.getFullYear(), max.getMonth() + 1, 0) : undefined;\n\n const [quarters, selected] = useQuarters({\n date: currentDate,\n value,\n eventList,\n disabledList,\n min: minDate,\n max: maxDate,\n });\n const selectedRef = useRef(selected);\n const onSetSelectedRef = useRef(onSetSelected);\n\n const offset = isSecond ? ROW_QUARTER_STEP : 0;\n\n const quarterItemTokens = {\n [`${innerTokens.dateStructureFontFamily}`]: `var(${tokens.calendarQuarterFontFamily})`,\n [`${innerTokens.dateStructureFontSize}`]: `var(${tokens.calendarQuarterFontSize})`,\n [`${innerTokens.dateStructureFontWeight}`]: `var(${tokens.calendarQuarterFontWeight})`,\n [`${innerTokens.dateStructureFontLineHeight}`]: `var(${tokens.calendarQuarterFontLineHeight})`,\n [`${innerTokens.dateStructureFontLetterSpacing}`]: `var(${tokens.calendarQuarterFontLetterSpacing})`,\n [`${innerTokens.dateStructureFontStyle}`]: `var(${tokens.calendarQuarterFontStyle})`,\n [`${innerTokens.dateStructureSelectedFontWeight}`]: `var(${tokens.calendarQuarterSelectedFontWeight})`,\n [`${innerTokens.dateStructureBorderRadius}`]: `var(${tokens.calendarQuarterItemBorderRadius})`,\n };\n\n const getSelectedDate = useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n const { day, monthIndex, year } = event.currentTarget.dataset;\n\n const selectedDate = {\n day: Number(day),\n monthIndex: Number(monthIndex),\n year: Number(year),\n };\n\n if (!canSelectDate(selectedDate, value, disabledList)) {\n return;\n }\n\n return selectedDate;\n },\n [disabledList, value],\n );\n\n const handleOnChangeQuarter = useCallback(\n (i: number, j: number, quarterName: string) => (event: React.MouseEvent<HTMLDivElement>) => {\n /**\n * нужно вызвать stopImmediatePropagation для случаев, когда\n * обработчик события onClick навешивается снаружи.\n * Как, например, в компоненте Popup\n */\n event.nativeEvent.stopImmediatePropagation();\n\n const selectedDate = getSelectedDate(event);\n\n if (!selectedDate) {\n return;\n }\n\n onChangeQuarter(selectedDate, [i + offset, j], quarterName);\n\n if (isSelectProcess(value)) {\n onHoverQuarter?.(undefined);\n }\n },\n [getSelectedDate, onChangeQuarter, offset, value, onHoverQuarter],\n );\n\n const handleOnHoverQuarter = useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n const selectedDate = getSelectedDate(event);\n const isSelectedDone = Array.isArray(value) && value[0] && value[1];\n\n if (!selectedDate || !Array.isArray(value) || isSelectedDone) {\n return;\n }\n\n onHoverQuarter?.(selectedDate);\n },\n [getSelectedDate, onHoverQuarter, value],\n );\n\n const handleMouseOutGrid = () => onHoverQuarter?.(undefined);\n\n const getRefs = useCallback(\n (element: HTMLDivElement, i: number, j: number) => {\n if (!outerRefs.current[i + offset]) {\n outerRefs.current[i + offset] = [];\n }\n\n outerRefs.current[i + offset][j] = element;\n },\n [offset, outerRefs],\n );\n\n useEffect(() => {\n if (selectedRef.current) {\n onSetSelectedRef.current?.(selectedRef.current);\n }\n }, []);\n\n return (\n <StyledCalendarQuarters\n role=\"grid\"\n aria-labelledby=\"id-grid-label\"\n onKeyDown={onKeyDown}\n onMouseLeave={handleMouseOutGrid}\n >\n {quarters.map((quarter, i) => (\n <Fragment key={i}>\n {quarter.map(\n (\n {\n quarterName,\n isSelected,\n isCurrent,\n date,\n events,\n isOutOfMinMaxRange,\n inRange,\n disabled,\n disabledArrowKey,\n disabledDates,\n },\n j,\n ) => {\n return (\n <DateStructureItem\n ref={(element: HTMLDivElement) => getRefs(element, i, j)}\n style={quarterItemTokens}\n eventList={events}\n disabled={disabled}\n day={date.day}\n year={date.year}\n monthIndex={date.monthIndex}\n isFocused={\n i + offset === selectIndexes?.[0] &&\n j === selectIndexes?.[1] &&\n !isOutOfMinMaxRange\n }\n isSelected={isSelected}\n isCurrent={isCurrent}\n isDouble={isDouble}\n isHovered={isSameDay(date, hoveredQuarter)}\n inRange={getInRange(value, date, hoveredQuarter, inRange)}\n sideInRange={getSideInRange(value, date, hoveredQuarter, isSelected)}\n onClick={disabled ? undefined : handleOnChangeQuarter(i, j, String(quarterName))}\n onMouseOver={disabled ? undefined : handleOnHoverQuarter}\n key={`StyledQuarter-${i}-${j}`}\n role=\"gridcell\"\n aria-label={quarterName}\n disabledArrowKey={disabledArrowKey}\n disabledMonths={disabledDates}\n isDayInCurrentMonth\n >\n {quarterName}\n </DateStructureItem>\n );\n },\n )}\n </Fragment>\n ))}\n </StyledCalendarQuarters>\n );\n};\n"],"names":["CalendarQuarters","date","currentDate","value","selectIndexes","eventList","disabledList","min","max","outerRefs","isDouble","isSecond","hoveredQuarter","onChangeQuarter","onHoverQuarter","onSetSelected","onKeyDown","minDate","Date","getFullYear","getMonth","undefined","maxDate","quarters","selected","useQuarters","selectedRef","useRef","onSetSelectedRef","offset","ROW_QUARTER_STEP","quarterItemTokens","innerTokens","dateStructureFontFamily","tokens","calendarQuarterFontFamily","dateStructureFontSize","calendarQuarterFontSize","dateStructureFontWeight","calendarQuarterFontWeight","dateStructureFontLineHeight","calendarQuarterFontLineHeight","dateStructureFontLetterSpacing","calendarQuarterFontLetterSpacing","dateStructureFontStyle","calendarQuarterFontStyle","dateStructureSelectedFontWeight","calendarQuarterSelectedFontWeight","dateStructureBorderRadius","calendarQuarterItemBorderRadius","getSelectedDate","useCallback","event","day","monthIndex","year","currentTarget","dataset","selectedDate","Number","canSelectDate","handleOnChangeQuarter","i","j","quarterName","nativeEvent","stopImmediatePropagation","isSelectProcess","handleOnHoverQuarter","isSelectedDone","Array","isArray","handleMouseOutGrid","getRefs","element","current","useEffect","React","createElement","StyledCalendarQuarters","role","onMouseLeave","map","quarter","Fragment","key","isSelected","isCurrent","events","isOutOfMinMaxRange","inRange","disabled","disabledArrowKey","disabledDates","DateStructureItem","ref","style","isFocused","isHovered","isSameDay","getInRange","sideInRange","getSideInRange","onClick","String","onMouseOver","disabledMonths","isDayInCurrentMonth"],"mappings":"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"}
|
@@ -102,6 +102,9 @@ const CalendarYears = ({
|
|
102
102
|
}, [getSelectedDate, onHoverYear, value]);
|
103
103
|
const handleMouseOutGrid = () => onHoverYear?.(undefined);
|
104
104
|
const getRefs = React.useCallback((element, i, j) => {
|
105
|
+
if (!outerRefs.current[i + offset]) {
|
106
|
+
outerRefs.current[i + offset] = [];
|
107
|
+
}
|
105
108
|
outerRefs.current[i + offset][j] = element;
|
106
109
|
}, [outerRefs]);
|
107
110
|
React.useEffect(() => {
|