@vkontakte/vkui 4.30.0 → 4.31.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/.cache/.eslintcache +1 -1
- package/.cache/.stylelintcache +1 -1
- package/.cache/.tsbuildinfo +38 -27
- package/.cache/ts/src/components/Calendar/Calendar.d.ts +1 -1
- package/.cache/ts/src/components/CalendarHeader/CalendarHeader.d.ts +2 -0
- package/.cache/ts/src/components/CalendarRange/CalendarRange.d.ts +1 -1
- package/.cache/ts/src/components/DateInput/DateInput.d.ts +1 -1
- package/.cache/ts/src/components/DateRangeInput/DateRangeInput.d.ts +1 -1
- package/.cache/ts/src/hooks/useAdaptivity.d.ts +1 -0
- package/.cache/ts/src/index.d.ts +1 -0
- package/dist/cjs/components/ActionSheet/ActionSheet.js +2 -9
- package/dist/cjs/components/ActionSheet/ActionSheet.js.map +1 -1
- package/dist/cjs/components/Calendar/Calendar.d.ts +1 -1
- package/dist/cjs/components/Calendar/Calendar.js +6 -2
- package/dist/cjs/components/Calendar/Calendar.js.map +1 -1
- package/dist/cjs/components/CalendarHeader/CalendarHeader.d.ts +2 -0
- package/dist/cjs/components/CalendarHeader/CalendarHeader.js +15 -9
- package/dist/cjs/components/CalendarHeader/CalendarHeader.js.map +1 -1
- package/dist/cjs/components/CalendarRange/CalendarRange.d.ts +1 -1
- package/dist/cjs/components/CalendarRange/CalendarRange.js +7 -3
- package/dist/cjs/components/CalendarRange/CalendarRange.js.map +1 -1
- package/dist/cjs/components/DateInput/DateInput.d.ts +1 -1
- package/dist/cjs/components/DateInput/DateInput.js +7 -3
- package/dist/cjs/components/DateInput/DateInput.js.map +1 -1
- package/dist/cjs/components/DateRangeInput/DateRangeInput.d.ts +1 -1
- package/dist/cjs/components/DateRangeInput/DateRangeInput.js +6 -2
- package/dist/cjs/components/DateRangeInput/DateRangeInput.js.map +1 -1
- package/dist/cjs/components/ModalCard/ModalCard.js +3 -1
- package/dist/cjs/components/ModalCard/ModalCard.js.map +1 -1
- package/dist/cjs/components/ModalCardBase/ModalCardBase.js +4 -2
- package/dist/cjs/components/ModalCardBase/ModalCardBase.js.map +1 -1
- package/dist/cjs/components/ModalPage/ModalPage.js +6 -2
- package/dist/cjs/components/ModalPage/ModalPage.js.map +1 -1
- package/dist/cjs/components/ModalPageHeader/ModalPageHeader.js +2 -10
- package/dist/cjs/components/ModalPageHeader/ModalPageHeader.js.map +1 -1
- package/dist/cjs/components/ModalRoot/ModalRootAdaptive.js +3 -4
- package/dist/cjs/components/ModalRoot/ModalRootAdaptive.js.map +1 -1
- package/dist/cjs/components/PanelHeader/PanelHeader.js +8 -6
- package/dist/cjs/components/PanelHeader/PanelHeader.js.map +1 -1
- package/dist/cjs/components/PopoutRoot/PopoutRoot.js +3 -1
- package/dist/cjs/components/PopoutRoot/PopoutRoot.js.map +1 -1
- package/dist/cjs/hooks/useAdaptivity.d.ts +1 -0
- package/dist/cjs/hooks/useAdaptivity.js +18 -1
- package/dist/cjs/hooks/useAdaptivity.js.map +1 -1
- package/dist/cjs/index.d.ts +1 -0
- package/dist/cjs/index.js +8 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/components/ActionSheet/ActionSheet.js +2 -8
- package/dist/components/ActionSheet/ActionSheet.js.map +1 -1
- package/dist/components/Calendar/Calendar.d.ts +1 -1
- package/dist/components/Calendar/Calendar.js +6 -2
- package/dist/components/Calendar/Calendar.js.map +1 -1
- package/dist/components/CalendarHeader/CalendarHeader.d.ts +2 -0
- package/dist/components/CalendarHeader/CalendarHeader.js +15 -9
- package/dist/components/CalendarHeader/CalendarHeader.js.map +1 -1
- package/dist/components/CalendarRange/CalendarRange.d.ts +1 -1
- package/dist/components/CalendarRange/CalendarRange.js +7 -3
- package/dist/components/CalendarRange/CalendarRange.js.map +1 -1
- package/dist/components/DateInput/DateInput.d.ts +1 -1
- package/dist/components/DateInput/DateInput.js +7 -3
- package/dist/components/DateInput/DateInput.js.map +1 -1
- package/dist/components/DateRangeInput/DateRangeInput.d.ts +1 -1
- package/dist/components/DateRangeInput/DateRangeInput.js +6 -2
- package/dist/components/DateRangeInput/DateRangeInput.js.map +1 -1
- package/dist/components/ModalCard/ModalCard.js +3 -2
- package/dist/components/ModalCard/ModalCard.js.map +1 -1
- package/dist/components/ModalCardBase/ModalCardBase.js +5 -4
- package/dist/components/ModalCardBase/ModalCardBase.js.map +1 -1
- package/dist/components/ModalPage/ModalPage.js +5 -3
- package/dist/components/ModalPage/ModalPage.js.map +1 -1
- package/dist/components/ModalPageHeader/ModalPageHeader.js +2 -9
- package/dist/components/ModalPageHeader/ModalPageHeader.js.map +1 -1
- package/dist/components/ModalRoot/ModalRootAdaptive.js +3 -5
- package/dist/components/ModalRoot/ModalRootAdaptive.js.map +1 -1
- package/dist/components/PanelHeader/PanelHeader.js +8 -6
- package/dist/components/PanelHeader/PanelHeader.js.map +1 -1
- package/dist/components/PopoutRoot/PopoutRoot.js +3 -2
- package/dist/components/PopoutRoot/PopoutRoot.js.map +1 -1
- package/dist/components.css +18 -18
- package/dist/components.css.map +1 -1
- package/dist/cssm/components/ActionSheet/ActionSheet.js +2 -8
- package/dist/cssm/components/ActionSheet/ActionSheet.js.map +1 -1
- package/dist/cssm/components/Button/Button.css +9 -9
- package/dist/cssm/components/ButtonGroup/ButtonGroup.css +1 -1
- package/dist/cssm/components/Calendar/Calendar.css +1 -1
- package/dist/cssm/components/Calendar/Calendar.d.ts +1 -1
- package/dist/cssm/components/Calendar/Calendar.js +6 -2
- package/dist/cssm/components/Calendar/Calendar.js.map +1 -1
- package/dist/cssm/components/CalendarDay/CalendarDay.css +1 -1
- package/dist/cssm/components/CalendarDays/CalendarDays.css +1 -1
- package/dist/cssm/components/CalendarHeader/CalendarHeader.css +1 -1
- package/dist/cssm/components/CalendarHeader/CalendarHeader.d.ts +2 -0
- package/dist/cssm/components/CalendarHeader/CalendarHeader.js +15 -9
- package/dist/cssm/components/CalendarHeader/CalendarHeader.js.map +1 -1
- package/dist/cssm/components/CalendarRange/CalendarRange.css +1 -1
- package/dist/cssm/components/CalendarRange/CalendarRange.d.ts +1 -1
- package/dist/cssm/components/CalendarRange/CalendarRange.js +7 -3
- package/dist/cssm/components/CalendarRange/CalendarRange.js.map +1 -1
- package/dist/cssm/components/CalendarTime/CalendarTime.css +1 -1
- package/dist/cssm/components/Card/Card.css +2 -2
- package/dist/cssm/components/CardScroll/CardScroll.css +1 -1
- package/dist/cssm/components/Cell/Cell.css +1 -1
- package/dist/cssm/components/CellButton/CellButton.css +1 -1
- package/dist/cssm/components/Checkbox/Checkbox.css +1 -1
- package/dist/cssm/components/ChipsInput/ChipsInput.css +1 -1
- package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.css +1 -1
- package/dist/cssm/components/CustomSelectOption/CustomSelectOption.css +1 -1
- package/dist/cssm/components/DateInput/DateInput.d.ts +1 -1
- package/dist/cssm/components/DateInput/DateInput.js +7 -3
- package/dist/cssm/components/DateInput/DateInput.js.map +1 -1
- package/dist/cssm/components/DateRangeInput/DateRangeInput.d.ts +1 -1
- package/dist/cssm/components/DateRangeInput/DateRangeInput.js +6 -2
- package/dist/cssm/components/DateRangeInput/DateRangeInput.js.map +1 -1
- package/dist/cssm/components/FixedLayout/FixedLayout.css +1 -1
- package/dist/cssm/components/FormField/FormField.css +2 -2
- package/dist/cssm/components/FormLayoutGroup/FormLayoutGroup.css +1 -1
- package/dist/cssm/components/HorizontalScroll/HorizontalScrollArrow.css +1 -1
- package/dist/cssm/components/Input/Input.css +1 -1
- package/dist/cssm/components/InputLike/InputLike.css +1 -1
- package/dist/cssm/components/InputLike/InputLikeDivider.css +1 -1
- package/dist/cssm/components/ModalCard/ModalCard.js +3 -2
- package/dist/cssm/components/ModalCard/ModalCard.js.map +1 -1
- package/dist/cssm/components/ModalCardBase/ModalCardBase.js +5 -4
- package/dist/cssm/components/ModalCardBase/ModalCardBase.js.map +1 -1
- package/dist/cssm/components/ModalPage/ModalPage.js +5 -3
- package/dist/cssm/components/ModalPage/ModalPage.js.map +1 -1
- package/dist/cssm/components/ModalPageHeader/ModalPageHeader.js +2 -9
- package/dist/cssm/components/ModalPageHeader/ModalPageHeader.js.map +1 -1
- package/dist/cssm/components/ModalRoot/ModalRootAdaptive.js +3 -5
- package/dist/cssm/components/ModalRoot/ModalRootAdaptive.js.map +1 -1
- package/dist/cssm/components/Pagination/Pagination.css +1 -1
- package/dist/cssm/components/PanelHeader/PanelHeader.js +8 -6
- package/dist/cssm/components/PanelHeader/PanelHeader.js.map +1 -1
- package/dist/cssm/components/PopoutRoot/PopoutRoot.js +3 -2
- package/dist/cssm/components/PopoutRoot/PopoutRoot.js.map +1 -1
- package/dist/cssm/components/Popper/Popper.css +1 -1
- package/dist/cssm/components/Radio/Radio.css +1 -1
- package/dist/cssm/components/RadioGroup/RadioGroup.css +1 -1
- package/dist/cssm/components/Removable/Removable.css +1 -1
- package/dist/cssm/components/RichCell/RichCell.css +1 -1
- package/dist/cssm/components/SegmentedControl/SegmentedControl.css +1 -1
- package/dist/cssm/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.css +1 -1
- package/dist/cssm/components/SimpleCell/SimpleCell.css +1 -1
- package/dist/cssm/components/Typography/Caption/Caption.css +1 -1
- package/dist/cssm/components/Typography/Paragraph/Paragraph.css +1 -1
- package/dist/cssm/components/Typography/Subhead/Subhead.css +1 -1
- package/dist/cssm/components/Typography/Title/Title.css +1 -1
- package/dist/cssm/hooks/useAdaptivity.d.ts +1 -0
- package/dist/cssm/hooks/useAdaptivity.js +13 -1
- package/dist/cssm/hooks/useAdaptivity.js.map +1 -1
- package/dist/cssm/index.d.ts +1 -0
- package/dist/cssm/index.js +1 -0
- package/dist/cssm/index.js.map +1 -1
- package/dist/cssm/styles/components.css +18 -18
- package/dist/cssm/styles/themes.css +1 -1
- package/dist/hooks/useAdaptivity.d.ts +1 -0
- package/dist/hooks/useAdaptivity.js +13 -1
- package/dist/hooks/useAdaptivity.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/vkui.css +19 -19
- package/dist/vkui.css.map +1 -1
- package/jest.unit.config.js +1 -0
- package/package.json +4 -2
- package/postcss-custom-properties-fallback/__tests__/custom_properties.css +5 -0
- package/postcss-custom-properties-fallback/index.js +83 -0
- package/src/components/ActionSheet/ActionSheet.tsx +2 -6
- package/src/components/Calendar/Calendar.tsx +6 -0
- package/src/components/CalendarHeader/CalendarHeader.css +3 -0
- package/src/components/CalendarHeader/CalendarHeader.tsx +18 -2
- package/src/components/CalendarRange/CalendarRange.tsx +6 -0
- package/src/components/Cell/Cell.css +1 -1
- package/src/components/CellButton/CellButton.css +1 -1
- package/src/components/Checkbox/Checkbox.css +1 -1
- package/src/components/DateInput/DateInput.tsx +7 -1
- package/src/components/DateRangeInput/DateRangeInput.tsx +6 -0
- package/src/components/FixedLayout/FixedLayout.css +10 -2
- package/src/components/FormItem/FormItem.css +1 -0
- package/src/components/FormLayoutGroup/FormLayoutGroup.css +2 -1
- package/src/components/ModalCard/ModalCard.tsx +3 -8
- package/src/components/ModalCardBase/ModalCardBase.tsx +6 -10
- package/src/components/ModalPage/ModalPage.tsx +6 -9
- package/src/components/ModalPageHeader/ModalPageHeader.tsx +2 -6
- package/src/components/ModalRoot/ModalRootAdaptive.tsx +3 -9
- package/src/components/ModalRoot/Readme.md +1 -1
- package/src/components/PanelHeader/PanelHeader.tsx +19 -18
- package/src/components/PanelHeader/Readme.md +2 -2
- package/src/components/PopoutRoot/PopoutRoot.tsx +3 -8
- package/src/components/Popper/Popper.css +14 -2
- package/src/components/Radio/Radio.css +1 -1
- package/src/components/RadioGroup/RadioGroup.css +1 -1
- package/src/components/Removable/Removable.css +2 -2
- package/src/components/RichCell/RichCell.css +1 -1
- package/src/components/SimpleCell/SimpleCell.css +1 -1
- package/src/components/Tooltip/Readme.md +35 -47
- package/src/hooks/useAdaptivity.ts +15 -0
- package/src/index.ts +1 -0
- package/src/styles/constants.css +1 -0
- package/tsconfig.json +1 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/Calendar/Calendar.tsx"],"names":["warn","Calendar","value","onChange","disablePast","disableFuture","shouldDisableDate","onClose","enableTime","doneButtonText","weekStartsOn","getRootRef","disablePickers","changeHoursAriaLabel","changeMinutesAriaLabel","prevMonthAriaLabel","nextMonthAriaLabel","changeMonthAriaLabel","changeYearAriaLabel","showNeighboringMonth","changeDayAriaLabel","size","externalViewDate","viewDate","onHeaderChange","onNextMonth","onPrevMonth","props","setViewDate","setPrevMonth","setNextMonth","focusedDay","setFocusedDay","isDayFocused","isDayDisabled","resetSelectedDay","process","env","NODE_ENV","handleKeyDown","React","useCallback","event","includes","key","preventDefault","newFocusedDay","onDayChange","date","isDayActive","day","Boolean","isFirstDay","isLastDay"],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport { isSameMonth, isSameDay } from \"../../lib/date\";\nimport {\n CalendarHeader,\n CalendarHeaderProps,\n} from \"../CalendarHeader/CalendarHeader\";\nimport { CalendarDays } from \"../CalendarDays/CalendarDays\";\nimport { CalendarTime, CalendarTimeProps } from \"../CalendarTime/CalendarTime\";\nimport { useIsomorphicLayoutEffect } from \"../../lib/useIsomorphicLayoutEffect\";\nimport {\n navigateDate,\n setTimeEqual,\n isFirstDay,\n isLastDay,\n} from \"../../lib/calendar\";\nimport { useCalendar } from \"../../hooks/useCalendar\";\nimport { HasRootRef } from \"../../types\";\nimport { classNames } from \"../../lib/classNames\";\nimport { warnOnce } from \"../../lib/warnOnce\";\nimport \"./Calendar.css\";\n\nexport interface CalendarProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\">,\n Pick<CalendarTimeProps, \"changeHoursAriaLabel\" | \"changeMinutesAriaLabel\">,\n Pick<\n CalendarHeaderProps,\n | \"prevMonthAriaLabel\"\n | \"nextMonthAriaLabel\"\n | \"changeMonthAriaLabel\"\n | \"changeYearAriaLabel\"\n | \"onNextMonth\"\n | \"onPrevMonth\"\n >,\n HasRootRef<HTMLDivElement> {\n value?: Date;\n disablePast?: boolean;\n disableFuture?: boolean;\n enableTime?: boolean;\n disablePickers?: boolean;\n doneButtonText?: string;\n changeDayAriaLabel?: string;\n weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n showNeighboringMonth?: boolean;\n size?: \"s\" | \"m\";\n onChange?(value?: Date): void;\n shouldDisableDate?(value: Date): boolean;\n onClose?(): void;\n /**\n * Дата отображаемого месяца.\n * При использовании обновление даты должно происходить вне компонента.\n */\n viewDate?: Date;\n /**\n * Изменение даты в шапке календаря.\n */\n onHeaderChange?(value: Date): void;\n}\n\nconst warn = warnOnce(\"Calendar\");\n\nexport const Calendar: React.FC<CalendarProps> = ({\n value,\n onChange,\n disablePast,\n disableFuture,\n shouldDisableDate,\n onClose,\n enableTime = false,\n doneButtonText,\n weekStartsOn = 1,\n getRootRef,\n disablePickers,\n changeHoursAriaLabel,\n changeMinutesAriaLabel,\n prevMonthAriaLabel,\n nextMonthAriaLabel,\n changeMonthAriaLabel,\n changeYearAriaLabel,\n showNeighboringMonth,\n changeDayAriaLabel = \"Изменить день\",\n size = \"m\",\n viewDate: externalViewDate,\n onHeaderChange,\n onNextMonth,\n onPrevMonth,\n ...props\n}) => {\n const {\n viewDate,\n setViewDate,\n setPrevMonth,\n setNextMonth,\n focusedDay,\n setFocusedDay,\n isDayFocused,\n isDayDisabled,\n resetSelectedDay,\n } = useCalendar({\n value,\n disableFuture,\n disablePast,\n shouldDisableDate,\n onHeaderChange,\n onNextMonth,\n onPrevMonth,\n });\n\n useIsomorphicLayoutEffect(() => {\n if (value) {\n setViewDate(value);\n }\n }, [value]);\n\n if (\n process.env.NODE_ENV === \"development\" &&\n !disablePickers &&\n size === \"s\"\n ) {\n warn(\n \"Нельзя включить селекты выбора месяца/года, если размер календаря 's'\",\n \"error\"\n );\n }\n\n if (process.env.NODE_ENV === \"development\" && enableTime && size === \"s\") {\n warn(\"Нельзя включить выбор времени, если размер календаря 's'\", \"error\");\n }\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent) => {\n if (\n [\"ArrowUp\", \"ArrowDown\", \"ArrowLeft\", \"ArrowRight\"].includes(event.key)\n ) {\n event.preventDefault();\n }\n\n const newFocusedDay = navigateDate(focusedDay ?? value, event.key);\n\n if (newFocusedDay && !isSameMonth(newFocusedDay, viewDate)) {\n setViewDate(newFocusedDay);\n }\n setFocusedDay(newFocusedDay);\n },\n [focusedDay, setFocusedDay, setViewDate, value, viewDate]\n );\n\n const onDayChange = React.useCallback(\n (date: Date) => {\n onChange?.(setTimeEqual(date, value as Date | undefined | null));\n },\n [value, onChange]\n );\n\n const isDayActive = React.useCallback(\n (day: Date) => Boolean(value && isSameDay(day, value)),\n [value]\n );\n\n return (\n <div\n {...props}\n ref={getRootRef}\n vkuiClass={classNames(\"Calendar\", `Calendar--size-${size}`)}\n >\n <CalendarHeader\n viewDate={externalViewDate || viewDate}\n onChange={setViewDate}\n onNextMonth={setNextMonth}\n onPrevMonth={setPrevMonth}\n disablePickers={disablePickers || size === \"s\"}\n vkuiClass=\"Calendar__header\"\n prevMonthAriaLabel={prevMonthAriaLabel}\n nextMonthAriaLabel={nextMonthAriaLabel}\n changeMonthAriaLabel={changeMonthAriaLabel}\n changeYearAriaLabel={changeYearAriaLabel}\n />\n <CalendarDays\n viewDate={externalViewDate || viewDate}\n value={value}\n weekStartsOn={weekStartsOn}\n isDayFocused={isDayFocused}\n tabIndex={0}\n aria-label={changeDayAriaLabel}\n onKeyDown={handleKeyDown}\n onDayChange={onDayChange}\n isDayActive={isDayActive}\n isDaySelectionStart={isFirstDay}\n isDaySelectionEnd={isLastDay}\n isDayDisabled={isDayDisabled}\n onBlur={resetSelectedDay}\n showNeighboringMonth={showNeighboringMonth}\n size={size}\n />\n {enableTime && value && size !== \"s\" && (\n <div vkuiClass=\"Calendar__time\">\n <CalendarTime\n value={value}\n onChange={onChange}\n onClose={onClose}\n doneButtonText={doneButtonText}\n changeHoursAriaLabel={changeHoursAriaLabel}\n changeMinutesAriaLabel={changeMinutesAriaLabel}\n />\n </div>\n )}\n </div>\n );\n};\n"],"file":"Calendar.js"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/Calendar/Calendar.tsx"],"names":["warn","Calendar","value","onChange","disablePast","disableFuture","shouldDisableDate","onClose","enableTime","doneButtonText","weekStartsOn","getRootRef","disablePickers","changeHoursAriaLabel","changeMinutesAriaLabel","prevMonthAriaLabel","nextMonthAriaLabel","changeMonthAriaLabel","changeYearAriaLabel","showNeighboringMonth","changeDayAriaLabel","size","externalViewDate","viewDate","onHeaderChange","onNextMonth","onPrevMonth","prevMonthIcon","nextMonthIcon","props","setViewDate","setPrevMonth","setNextMonth","focusedDay","setFocusedDay","isDayFocused","isDayDisabled","resetSelectedDay","process","env","NODE_ENV","handleKeyDown","React","useCallback","event","includes","key","preventDefault","newFocusedDay","onDayChange","date","isDayActive","day","Boolean","isFirstDay","isLastDay"],"mappings":";;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AAIA;;AACA;;AACA;;AACA;;AAMA;;AAEA;;AACA;;;AA0CA,IAAMA,IAAI,GAAG,wBAAS,UAAT,CAAb;;AAEO,IAAMC,QAAiC,GAAG,SAApCA,QAAoC,OA4B3C;AAAA,MA3BJC,KA2BI,QA3BJA,KA2BI;AAAA,MA1BJC,QA0BI,QA1BJA,QA0BI;AAAA,MAzBJC,WAyBI,QAzBJA,WAyBI;AAAA,MAxBJC,aAwBI,QAxBJA,aAwBI;AAAA,MAvBJC,iBAuBI,QAvBJA,iBAuBI;AAAA,MAtBJC,OAsBI,QAtBJA,OAsBI;AAAA,6BArBJC,UAqBI;AAAA,MArBJA,UAqBI,gCArBS,KAqBT;AAAA,MApBJC,cAoBI,QApBJA,cAoBI;AAAA,+BAnBJC,YAmBI;AAAA,MAnBJA,YAmBI,kCAnBW,CAmBX;AAAA,MAlBJC,UAkBI,QAlBJA,UAkBI;AAAA,MAjBJC,cAiBI,QAjBJA,cAiBI;AAAA,MAhBJC,oBAgBI,QAhBJA,oBAgBI;AAAA,MAfJC,sBAeI,QAfJA,sBAeI;AAAA,MAdJC,kBAcI,QAdJA,kBAcI;AAAA,MAbJC,kBAaI,QAbJA,kBAaI;AAAA,MAZJC,oBAYI,QAZJA,oBAYI;AAAA,MAXJC,mBAWI,QAXJA,mBAWI;AAAA,MAVJC,oBAUI,QAVJA,oBAUI;AAAA,mCATJC,kBASI;AAAA,MATJA,kBASI,sCATiB,eASjB;AAAA,uBARJC,IAQI;AAAA,MARJA,IAQI,0BARG,GAQH;AAAA,MAPMC,gBAON,QAPJC,QAOI;AAAA,MANJC,cAMI,QANJA,cAMI;AAAA,MALJC,WAKI,QALJA,WAKI;AAAA,MAJJC,WAII,QAJJA,WAII;AAAA,MAHJC,aAGI,QAHJA,aAGI;AAAA,MAFJC,aAEI,QAFJA,aAEI;AAAA,MADDC,KACC;;AACJ,qBAUI,+BAAY;AACd3B,IAAAA,KAAK,EAALA,KADc;AAEdG,IAAAA,aAAa,EAAbA,aAFc;AAGdD,IAAAA,WAAW,EAAXA,WAHc;AAIdE,IAAAA,iBAAiB,EAAjBA,iBAJc;AAKdkB,IAAAA,cAAc,EAAdA,cALc;AAMdC,IAAAA,WAAW,EAAXA,WANc;AAOdC,IAAAA,WAAW,EAAXA;AAPc,GAAZ,CAVJ;AAAA,MACEH,QADF,gBACEA,QADF;AAAA,MAEEO,WAFF,gBAEEA,WAFF;AAAA,MAGEC,YAHF,gBAGEA,YAHF;AAAA,MAIEC,YAJF,gBAIEA,YAJF;AAAA,MAKEC,UALF,gBAKEA,UALF;AAAA,MAMEC,aANF,gBAMEA,aANF;AAAA,MAOEC,YAPF,gBAOEA,YAPF;AAAA,MAQEC,aARF,gBAQEA,aARF;AAAA,MASEC,gBATF,gBASEA,gBATF;;AAoBA,4DAA0B,YAAM;AAC9B,QAAInC,KAAJ,EAAW;AACT4B,MAAAA,WAAW,CAAC5B,KAAD,CAAX;AACD;AACF,GAJD,EAIG,CAACA,KAAD,CAJH;;AAMA,MACEoC,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,aAAzB,IACA,CAAC5B,cADD,IAEAS,IAAI,KAAK,GAHX,EAIE;AACArB,IAAAA,IAAI,CACF,uEADE,EAEF,OAFE,CAAJ;AAID;;AAED,MAAIsC,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,aAAzB,IAA0ChC,UAA1C,IAAwDa,IAAI,KAAK,GAArE,EAA0E;AACxErB,IAAAA,IAAI,CAAC,0DAAD,EAA6D,OAA7D,CAAJ;AACD;;AAED,MAAMyC,aAAa,GAAGC,KAAK,CAACC,WAAN,CACpB,UAACC,KAAD,EAAgC;AAC9B,QACE,CAAC,SAAD,EAAY,WAAZ,EAAyB,WAAzB,EAAsC,YAAtC,EAAoDC,QAApD,CAA6DD,KAAK,CAACE,GAAnE,CADF,EAEE;AACAF,MAAAA,KAAK,CAACG,cAAN;AACD;;AAED,QAAMC,aAAa,GAAG,4BAAaf,UAAb,aAAaA,UAAb,cAAaA,UAAb,GAA2B/B,KAA3B,EAAkC0C,KAAK,CAACE,GAAxC,CAAtB;;AAEA,QAAIE,aAAa,IAAI,CAAC,uBAAYA,aAAZ,EAA2BzB,QAA3B,CAAtB,EAA4D;AAC1DO,MAAAA,WAAW,CAACkB,aAAD,CAAX;AACD;;AACDd,IAAAA,aAAa,CAACc,aAAD,CAAb;AACD,GAdmB,EAepB,CAACf,UAAD,EAAaC,aAAb,EAA4BJ,WAA5B,EAAyC5B,KAAzC,EAAgDqB,QAAhD,CAfoB,CAAtB;AAkBA,MAAM0B,WAAW,GAAGP,KAAK,CAACC,WAAN,CAClB,UAACO,IAAD,EAAgB;AACd/C,IAAAA,QAAQ,SAAR,IAAAA,QAAQ,WAAR,YAAAA,QAAQ,CAAG,4BAAa+C,IAAb,EAAmBhD,KAAnB,CAAH,CAAR;AACD,GAHiB,EAIlB,CAACA,KAAD,EAAQC,QAAR,CAJkB,CAApB;AAOA,MAAMgD,WAAW,GAAGT,KAAK,CAACC,WAAN,CAClB,UAACS,GAAD;AAAA,WAAeC,OAAO,CAACnD,KAAK,IAAI,qBAAUkD,GAAV,EAAelD,KAAf,CAAV,CAAtB;AAAA,GADkB,EAElB,CAACA,KAAD,CAFkB,CAApB;AAKA,SACE,uEACM2B,KADN;AAEE,IAAA,GAAG,EAAElB,UAFP;AAGE,IAAA,SAAS,EAAE,4BAAW,UAAX,2BAAyCU,IAAzC;AAHb,MAKE,qCAAC,8BAAD;AACE,IAAA,QAAQ,EAAEC,gBAAgB,IAAIC,QADhC;AAEE,IAAA,QAAQ,EAAEO,WAFZ;AAGE,IAAA,WAAW,EAAEE,YAHf;AAIE,IAAA,WAAW,EAAED,YAJf;AAKE,IAAA,cAAc,EAAEnB,cAAc,IAAIS,IAAI,KAAK,GAL7C;AAME,IAAA,SAAS,EAAC,kBANZ;AAOE,IAAA,kBAAkB,EAAEN,kBAPtB;AAQE,IAAA,kBAAkB,EAAEC,kBARtB;AASE,IAAA,oBAAoB,EAAEC,oBATxB;AAUE,IAAA,mBAAmB,EAAEC,mBAVvB;AAWE,IAAA,aAAa,EAAES,aAXjB;AAYE,IAAA,aAAa,EAAEC;AAZjB,IALF,EAmBE,qCAAC,0BAAD;AACE,IAAA,QAAQ,EAAEN,gBAAgB,IAAIC,QADhC;AAEE,IAAA,KAAK,EAAErB,KAFT;AAGE,IAAA,YAAY,EAAEQ,YAHhB;AAIE,IAAA,YAAY,EAAEyB,YAJhB;AAKE,IAAA,QAAQ,EAAE,CALZ;AAME,kBAAYf,kBANd;AAOE,IAAA,SAAS,EAAEqB,aAPb;AAQE,IAAA,WAAW,EAAEQ,WARf;AASE,IAAA,WAAW,EAAEE,WATf;AAUE,IAAA,mBAAmB,EAAEG,oBAVvB;AAWE,IAAA,iBAAiB,EAAEC,mBAXrB;AAYE,IAAA,aAAa,EAAEnB,aAZjB;AAaE,IAAA,MAAM,EAAEC,gBAbV;AAcE,IAAA,oBAAoB,EAAElB,oBAdxB;AAeE,IAAA,IAAI,EAAEE;AAfR,IAnBF,EAoCGb,UAAU,IAAIN,KAAd,IAAuBmB,IAAI,KAAK,GAAhC,IACC;AAAK,IAAA,SAAS,EAAC;AAAf,KACE,qCAAC,0BAAD;AACE,IAAA,KAAK,EAAEnB,KADT;AAEE,IAAA,QAAQ,EAAEC,QAFZ;AAGE,IAAA,OAAO,EAAEI,OAHX;AAIE,IAAA,cAAc,EAAEE,cAJlB;AAKE,IAAA,oBAAoB,EAAEI,oBALxB;AAME,IAAA,sBAAsB,EAAEC;AAN1B,IADF,CArCJ,CADF;AAmDD,CAvJM","sourcesContent":["import * as React from \"react\";\nimport { isSameMonth, isSameDay } from \"../../lib/date\";\nimport {\n CalendarHeader,\n CalendarHeaderProps,\n} from \"../CalendarHeader/CalendarHeader\";\nimport { CalendarDays } from \"../CalendarDays/CalendarDays\";\nimport { CalendarTime, CalendarTimeProps } from \"../CalendarTime/CalendarTime\";\nimport { useIsomorphicLayoutEffect } from \"../../lib/useIsomorphicLayoutEffect\";\nimport {\n navigateDate,\n setTimeEqual,\n isFirstDay,\n isLastDay,\n} from \"../../lib/calendar\";\nimport { useCalendar } from \"../../hooks/useCalendar\";\nimport { HasRootRef } from \"../../types\";\nimport { classNames } from \"../../lib/classNames\";\nimport { warnOnce } from \"../../lib/warnOnce\";\nimport \"./Calendar.css\";\n\nexport interface CalendarProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\">,\n Pick<CalendarTimeProps, \"changeHoursAriaLabel\" | \"changeMinutesAriaLabel\">,\n Pick<\n CalendarHeaderProps,\n | \"prevMonthAriaLabel\"\n | \"nextMonthAriaLabel\"\n | \"changeMonthAriaLabel\"\n | \"changeYearAriaLabel\"\n | \"onNextMonth\"\n | \"onPrevMonth\"\n | \"prevMonthIcon\"\n | \"nextMonthIcon\"\n >,\n HasRootRef<HTMLDivElement> {\n value?: Date;\n disablePast?: boolean;\n disableFuture?: boolean;\n enableTime?: boolean;\n disablePickers?: boolean;\n doneButtonText?: string;\n changeDayAriaLabel?: string;\n weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n showNeighboringMonth?: boolean;\n size?: \"s\" | \"m\";\n onChange?(value?: Date): void;\n shouldDisableDate?(value: Date): boolean;\n onClose?(): void;\n /**\n * Дата отображаемого месяца.\n * При использовании обновление даты должно происходить вне компонента.\n */\n viewDate?: Date;\n /**\n * Изменение даты в шапке календаря.\n */\n onHeaderChange?(value: Date): void;\n}\n\nconst warn = warnOnce(\"Calendar\");\n\nexport const Calendar: React.FC<CalendarProps> = ({\n value,\n onChange,\n disablePast,\n disableFuture,\n shouldDisableDate,\n onClose,\n enableTime = false,\n doneButtonText,\n weekStartsOn = 1,\n getRootRef,\n disablePickers,\n changeHoursAriaLabel,\n changeMinutesAriaLabel,\n prevMonthAriaLabel,\n nextMonthAriaLabel,\n changeMonthAriaLabel,\n changeYearAriaLabel,\n showNeighboringMonth,\n changeDayAriaLabel = \"Изменить день\",\n size = \"m\",\n viewDate: externalViewDate,\n onHeaderChange,\n onNextMonth,\n onPrevMonth,\n prevMonthIcon,\n nextMonthIcon,\n ...props\n}) => {\n const {\n viewDate,\n setViewDate,\n setPrevMonth,\n setNextMonth,\n focusedDay,\n setFocusedDay,\n isDayFocused,\n isDayDisabled,\n resetSelectedDay,\n } = useCalendar({\n value,\n disableFuture,\n disablePast,\n shouldDisableDate,\n onHeaderChange,\n onNextMonth,\n onPrevMonth,\n });\n\n useIsomorphicLayoutEffect(() => {\n if (value) {\n setViewDate(value);\n }\n }, [value]);\n\n if (\n process.env.NODE_ENV === \"development\" &&\n !disablePickers &&\n size === \"s\"\n ) {\n warn(\n \"Нельзя включить селекты выбора месяца/года, если размер календаря 's'\",\n \"error\"\n );\n }\n\n if (process.env.NODE_ENV === \"development\" && enableTime && size === \"s\") {\n warn(\"Нельзя включить выбор времени, если размер календаря 's'\", \"error\");\n }\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent) => {\n if (\n [\"ArrowUp\", \"ArrowDown\", \"ArrowLeft\", \"ArrowRight\"].includes(event.key)\n ) {\n event.preventDefault();\n }\n\n const newFocusedDay = navigateDate(focusedDay ?? value, event.key);\n\n if (newFocusedDay && !isSameMonth(newFocusedDay, viewDate)) {\n setViewDate(newFocusedDay);\n }\n setFocusedDay(newFocusedDay);\n },\n [focusedDay, setFocusedDay, setViewDate, value, viewDate]\n );\n\n const onDayChange = React.useCallback(\n (date: Date) => {\n onChange?.(setTimeEqual(date, value as Date | undefined | null));\n },\n [value, onChange]\n );\n\n const isDayActive = React.useCallback(\n (day: Date) => Boolean(value && isSameDay(day, value)),\n [value]\n );\n\n return (\n <div\n {...props}\n ref={getRootRef}\n vkuiClass={classNames(\"Calendar\", `Calendar--size-${size}`)}\n >\n <CalendarHeader\n viewDate={externalViewDate || viewDate}\n onChange={setViewDate}\n onNextMonth={setNextMonth}\n onPrevMonth={setPrevMonth}\n disablePickers={disablePickers || size === \"s\"}\n vkuiClass=\"Calendar__header\"\n prevMonthAriaLabel={prevMonthAriaLabel}\n nextMonthAriaLabel={nextMonthAriaLabel}\n changeMonthAriaLabel={changeMonthAriaLabel}\n changeYearAriaLabel={changeYearAriaLabel}\n prevMonthIcon={prevMonthIcon}\n nextMonthIcon={nextMonthIcon}\n />\n <CalendarDays\n viewDate={externalViewDate || viewDate}\n value={value}\n weekStartsOn={weekStartsOn}\n isDayFocused={isDayFocused}\n tabIndex={0}\n aria-label={changeDayAriaLabel}\n onKeyDown={handleKeyDown}\n onDayChange={onDayChange}\n isDayActive={isDayActive}\n isDaySelectionStart={isFirstDay}\n isDaySelectionEnd={isLastDay}\n isDayDisabled={isDayDisabled}\n onBlur={resetSelectedDay}\n showNeighboringMonth={showNeighboringMonth}\n size={size}\n />\n {enableTime && value && size !== \"s\" && (\n <div vkuiClass=\"Calendar__time\">\n <CalendarTime\n value={value}\n onChange={onChange}\n onClose={onClose}\n doneButtonText={doneButtonText}\n changeHoursAriaLabel={changeHoursAriaLabel}\n changeMinutesAriaLabel={changeMinutesAriaLabel}\n />\n </div>\n )}\n </div>\n );\n};\n"],"file":"Calendar.js"}
|
|
@@ -9,6 +9,8 @@ export interface CalendarHeaderProps extends Pick<React.HTMLAttributes<HTMLDivEl
|
|
|
9
9
|
nextMonthAriaLabel?: string;
|
|
10
10
|
changeMonthAriaLabel?: string;
|
|
11
11
|
changeYearAriaLabel?: string;
|
|
12
|
+
prevMonthIcon?: React.ReactNode;
|
|
13
|
+
nextMonthIcon?: React.ReactNode;
|
|
12
14
|
onChange(viewDate: Date): void;
|
|
13
15
|
/**
|
|
14
16
|
* Нажатие на кнопку переключения на следующий месяц.
|
|
@@ -65,7 +65,19 @@ var CalendarHeader = function CalendarHeader(_ref2) {
|
|
|
65
65
|
_ref2$changeMonthAria = _ref2.changeMonthAriaLabel,
|
|
66
66
|
changeMonthAriaLabel = _ref2$changeMonthAria === void 0 ? "Изменить месяц" : _ref2$changeMonthAria,
|
|
67
67
|
_ref2$changeYearAriaL = _ref2.changeYearAriaLabel,
|
|
68
|
-
changeYearAriaLabel = _ref2$changeYearAriaL === void 0 ? "Изменить год" : _ref2$changeYearAriaL
|
|
68
|
+
changeYearAriaLabel = _ref2$changeYearAriaL === void 0 ? "Изменить год" : _ref2$changeYearAriaL,
|
|
69
|
+
_ref2$prevMonthIcon = _ref2.prevMonthIcon,
|
|
70
|
+
prevMonthIcon = _ref2$prevMonthIcon === void 0 ? (0, _jsxRuntime.createScopedElement)(_icons.Icon20ChevronLeftOutline, {
|
|
71
|
+
vkuiClass: "CalendarHeader__nav-icon--accent",
|
|
72
|
+
width: 30,
|
|
73
|
+
height: 30
|
|
74
|
+
}) : _ref2$prevMonthIcon,
|
|
75
|
+
_ref2$nextMonthIcon = _ref2.nextMonthIcon,
|
|
76
|
+
nextMonthIcon = _ref2$nextMonthIcon === void 0 ? (0, _jsxRuntime.createScopedElement)(_icons.Icon20ChevronRightOutline, {
|
|
77
|
+
vkuiClass: "CalendarHeader__nav-icon--accent",
|
|
78
|
+
width: 30,
|
|
79
|
+
height: 30
|
|
80
|
+
}) : _ref2$nextMonthIcon;
|
|
69
81
|
var locale = React.useContext(_LocaleProviderContext.LocaleProviderContext);
|
|
70
82
|
var onMonthsChange = React.useCallback(function (event) {
|
|
71
83
|
return onChange((0, _date.setMonth)(viewDate, Number(event.target.value)));
|
|
@@ -91,10 +103,7 @@ var CalendarHeader = function CalendarHeader(_ref2) {
|
|
|
91
103
|
vkuiClass: (0, _classNames.classNames)("CalendarHeader__nav-icon", "CalendarHeader__nav-icon-prev"),
|
|
92
104
|
onClick: onPrevMonth,
|
|
93
105
|
"aria-label": "".concat(prevMonthAriaLabel, ", ").concat(formatter.format((0, _date.subMonths)(viewDate, 1)))
|
|
94
|
-
}, (0, _jsxRuntime.createScopedElement)(
|
|
95
|
-
width: 30,
|
|
96
|
-
height: 30
|
|
97
|
-
})), (0, _jsxRuntime.createScopedElement)("div", {
|
|
106
|
+
}, prevMonthIcon), (0, _jsxRuntime.createScopedElement)("div", {
|
|
98
107
|
vkuiClass: "CalendarHeader__pickers"
|
|
99
108
|
}, disablePickers ? (0, _jsxRuntime.createScopedElement)(React.Fragment, null, (0, _jsxRuntime.createScopedElement)(_Paragraph.Paragraph, {
|
|
100
109
|
weight: "2",
|
|
@@ -133,10 +142,7 @@ var CalendarHeader = function CalendarHeader(_ref2) {
|
|
|
133
142
|
vkuiClass: (0, _classNames.classNames)("CalendarHeader__nav-icon", "CalendarHeader__nav-icon-next"),
|
|
134
143
|
onClick: onNextMonth,
|
|
135
144
|
"aria-label": "".concat(nextMonthAriaLabel, ", ").concat(formatter.format((0, _date.addMonths)(viewDate, 1)))
|
|
136
|
-
},
|
|
137
|
-
width: 30,
|
|
138
|
-
height: 30
|
|
139
|
-
})));
|
|
145
|
+
}, nextMonthIcon));
|
|
140
146
|
};
|
|
141
147
|
|
|
142
148
|
exports.CalendarHeader = CalendarHeader;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/CalendarHeader/CalendarHeader.tsx"],"names":["renderOption","option","children","props","CalendarHeader","viewDate","onChange","prevMonth","nextMonth","disablePickers","onNextMonth","onPrevMonth","className","prevMonthAriaLabel","nextMonthAriaLabel","changeMonthAriaLabel","changeYearAriaLabel","locale","React","useContext","LocaleProviderContext","onMonthsChange","useCallback","event","Number","target","value","onYearChange","months","useMemo","currentYear","getFullYear","years","formatter","Intl","DateTimeFormat","year","month","format","getMonth","SizeType","COMPACT","SelectType","Plain"],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport { setMonth, setYear, subMonths, addMonths } from \"../../lib/date\";\nimport {\n Icon20ChevronLeftOutline,\n Icon20ChevronRightOutline,\n Icon12Dropdown,\n} from \"@vkontakte/icons\";\nimport Tappable from \"../Tappable/Tappable\";\nimport { classNames } from \"../../lib/classNames\";\nimport {\n CustomSelect,\n CustomSelectProps,\n SelectType,\n} from \"../CustomSelect/CustomSelect\";\nimport { CustomSelectOption } from \"../CustomSelectOption/CustomSelectOption\";\nimport { SizeType } from \"../../hoc/withAdaptivity\";\nimport { getMonths, getYears } from \"../../lib/calendar\";\nimport { LocaleProviderContext } from \"../LocaleProviderContext/LocaleProviderContext\";\nimport { Paragraph } from \"../Typography/Paragraph/Paragraph\";\nimport \"./CalendarHeader.css\";\n\nexport interface CalendarHeaderProps\n extends Pick<React.HTMLAttributes<HTMLDivElement>, \"className\"> {\n viewDate: Date;\n prevMonth?: boolean;\n nextMonth?: boolean;\n disablePickers?: boolean;\n prevMonthAriaLabel?: string;\n nextMonthAriaLabel?: string;\n changeMonthAriaLabel?: string;\n changeYearAriaLabel?: string;\n onChange(viewDate: Date): void;\n /**\n * Нажатие на кнопку переключения на следующий месяц.\n */\n onNextMonth?(): void;\n /**\n * Нажатие на кнопку переключения на предыдущий месяц.\n */\n onPrevMonth?(): void;\n}\n\nconst renderOption: CustomSelectProps[\"renderOption\"] = ({\n option,\n children,\n ...props\n}) => {\n return (\n <CustomSelectOption {...props}>\n <span vkuiClass=\"CalendarHeader__month_name\">{children}</span>\n </CustomSelectOption>\n );\n};\n\nexport const CalendarHeader: React.FC<CalendarHeaderProps> = ({\n viewDate,\n onChange,\n prevMonth = true,\n nextMonth = true,\n disablePickers = false,\n onNextMonth,\n onPrevMonth,\n className,\n prevMonthAriaLabel = \"Предыдущий месяц\",\n nextMonthAriaLabel = \"Следующий месяц\",\n changeMonthAriaLabel = \"Изменить месяц\",\n changeYearAriaLabel = \"Изменить год\",\n}) => {\n const locale = React.useContext(LocaleProviderContext);\n const onMonthsChange = React.useCallback(\n (event: React.ChangeEvent<HTMLSelectElement>) =>\n onChange(setMonth(viewDate, Number(event.target.value))),\n [onChange, viewDate]\n );\n const onYearChange = React.useCallback(\n (event: React.ChangeEvent<HTMLSelectElement>) =>\n onChange(setYear(viewDate, Number(event.target.value))),\n [onChange, viewDate]\n );\n\n const months = React.useMemo(() => getMonths(locale), [locale]);\n\n const currentYear = viewDate.getFullYear();\n\n const years = React.useMemo(() => getYears(currentYear, 100), [currentYear]);\n\n const formatter = new Intl.DateTimeFormat(locale, {\n year: \"numeric\",\n month: \"long\",\n });\n\n return (\n <div vkuiClass=\"CalendarHeader\" className={className}>\n {prevMonth && (\n <Tappable\n vkuiClass={classNames(\n \"CalendarHeader__nav-icon\",\n \"CalendarHeader__nav-icon-prev\"\n )}\n onClick={onPrevMonth}\n aria-label={`${prevMonthAriaLabel}, ${formatter.format(\n subMonths(viewDate, 1)\n )}`}\n >\n <Icon20ChevronLeftOutline width={30} height={30} />\n </Tappable>\n )}\n <div vkuiClass=\"CalendarHeader__pickers\">\n {disablePickers ? (\n <React.Fragment>\n <Paragraph\n weight=\"2\"\n vkuiClass=\"CalendarHeader__pickers-placeholder\"\n >\n {new Intl.DateTimeFormat(locale, {\n month: \"long\",\n }).format(viewDate)}\n </Paragraph>\n <Paragraph\n weight=\"2\"\n vkuiClass=\"CalendarHeader__pickers-placeholder\"\n >\n {new Intl.DateTimeFormat(locale, {\n year: \"numeric\",\n }).format(viewDate)}\n </Paragraph>\n </React.Fragment>\n ) : (\n <React.Fragment>\n <CustomSelect\n value={viewDate.getMonth()}\n options={months}\n renderOption={renderOption}\n dropdownOffsetDistance={4}\n fixDropdownWidth={false}\n sizeY={SizeType.COMPACT}\n icon={<Icon12Dropdown />}\n onChange={onMonthsChange}\n forceDropdownPortal={false}\n selectType={SelectType.Plain}\n aria-label={changeMonthAriaLabel}\n />\n <CustomSelect\n value={viewDate.getFullYear()}\n options={years}\n dropdownOffsetDistance={4}\n fixDropdownWidth={false}\n sizeY={SizeType.COMPACT}\n icon={<Icon12Dropdown />}\n onChange={onYearChange}\n forceDropdownPortal={false}\n selectType={SelectType.Plain}\n aria-label={changeYearAriaLabel}\n />\n </React.Fragment>\n )}\n </div>\n {nextMonth && (\n <Tappable\n vkuiClass={classNames(\n \"CalendarHeader__nav-icon\",\n \"CalendarHeader__nav-icon-next\"\n )}\n onClick={onNextMonth}\n aria-label={`${nextMonthAriaLabel}, ${formatter.format(\n addMonths(viewDate, 1)\n )}`}\n >\n <Icon20ChevronRightOutline width={30} height={30} />\n </Tappable>\n )}\n </div>\n );\n};\n"],"file":"CalendarHeader.js"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/CalendarHeader/CalendarHeader.tsx"],"names":["renderOption","option","children","props","CalendarHeader","viewDate","onChange","prevMonth","nextMonth","disablePickers","onNextMonth","onPrevMonth","className","prevMonthAriaLabel","nextMonthAriaLabel","changeMonthAriaLabel","changeYearAriaLabel","prevMonthIcon","nextMonthIcon","locale","React","useContext","LocaleProviderContext","onMonthsChange","useCallback","event","Number","target","value","onYearChange","months","useMemo","currentYear","getFullYear","years","formatter","Intl","DateTimeFormat","year","month","format","getMonth","SizeType","COMPACT","SelectType","Plain"],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport { setMonth, setYear, subMonths, addMonths } from \"../../lib/date\";\nimport {\n Icon20ChevronLeftOutline,\n Icon20ChevronRightOutline,\n Icon12Dropdown,\n} from \"@vkontakte/icons\";\nimport Tappable from \"../Tappable/Tappable\";\nimport { classNames } from \"../../lib/classNames\";\nimport {\n CustomSelect,\n CustomSelectProps,\n SelectType,\n} from \"../CustomSelect/CustomSelect\";\nimport { CustomSelectOption } from \"../CustomSelectOption/CustomSelectOption\";\nimport { SizeType } from \"../../hoc/withAdaptivity\";\nimport { getMonths, getYears } from \"../../lib/calendar\";\nimport { LocaleProviderContext } from \"../LocaleProviderContext/LocaleProviderContext\";\nimport { Paragraph } from \"../Typography/Paragraph/Paragraph\";\nimport \"./CalendarHeader.css\";\n\nexport interface CalendarHeaderProps\n extends Pick<React.HTMLAttributes<HTMLDivElement>, \"className\"> {\n viewDate: Date;\n prevMonth?: boolean;\n nextMonth?: boolean;\n disablePickers?: boolean;\n prevMonthAriaLabel?: string;\n nextMonthAriaLabel?: string;\n changeMonthAriaLabel?: string;\n changeYearAriaLabel?: string;\n prevMonthIcon?: React.ReactNode;\n nextMonthIcon?: React.ReactNode;\n onChange(viewDate: Date): void;\n /**\n * Нажатие на кнопку переключения на следующий месяц.\n */\n onNextMonth?(): void;\n /**\n * Нажатие на кнопку переключения на предыдущий месяц.\n */\n onPrevMonth?(): void;\n}\n\nconst renderOption: CustomSelectProps[\"renderOption\"] = ({\n option,\n children,\n ...props\n}) => {\n return (\n <CustomSelectOption {...props}>\n <span vkuiClass=\"CalendarHeader__month_name\">{children}</span>\n </CustomSelectOption>\n );\n};\n\nexport const CalendarHeader: React.FC<CalendarHeaderProps> = ({\n viewDate,\n onChange,\n prevMonth = true,\n nextMonth = true,\n disablePickers = false,\n onNextMonth,\n onPrevMonth,\n className,\n prevMonthAriaLabel = \"Предыдущий месяц\",\n nextMonthAriaLabel = \"Следующий месяц\",\n changeMonthAriaLabel = \"Изменить месяц\",\n changeYearAriaLabel = \"Изменить год\",\n prevMonthIcon = (\n <Icon20ChevronLeftOutline\n vkuiClass=\"CalendarHeader__nav-icon--accent\"\n width={30}\n height={30}\n />\n ),\n nextMonthIcon = (\n <Icon20ChevronRightOutline\n vkuiClass=\"CalendarHeader__nav-icon--accent\"\n width={30}\n height={30}\n />\n ),\n}) => {\n const locale = React.useContext(LocaleProviderContext);\n const onMonthsChange = React.useCallback(\n (event: React.ChangeEvent<HTMLSelectElement>) =>\n onChange(setMonth(viewDate, Number(event.target.value))),\n [onChange, viewDate]\n );\n const onYearChange = React.useCallback(\n (event: React.ChangeEvent<HTMLSelectElement>) =>\n onChange(setYear(viewDate, Number(event.target.value))),\n [onChange, viewDate]\n );\n\n const months = React.useMemo(() => getMonths(locale), [locale]);\n\n const currentYear = viewDate.getFullYear();\n\n const years = React.useMemo(() => getYears(currentYear, 100), [currentYear]);\n\n const formatter = new Intl.DateTimeFormat(locale, {\n year: \"numeric\",\n month: \"long\",\n });\n\n return (\n <div vkuiClass=\"CalendarHeader\" className={className}>\n {prevMonth && (\n <Tappable\n vkuiClass={classNames(\n \"CalendarHeader__nav-icon\",\n \"CalendarHeader__nav-icon-prev\"\n )}\n onClick={onPrevMonth}\n aria-label={`${prevMonthAriaLabel}, ${formatter.format(\n subMonths(viewDate, 1)\n )}`}\n >\n {prevMonthIcon}\n </Tappable>\n )}\n <div vkuiClass=\"CalendarHeader__pickers\">\n {disablePickers ? (\n <React.Fragment>\n <Paragraph\n weight=\"2\"\n vkuiClass=\"CalendarHeader__pickers-placeholder\"\n >\n {new Intl.DateTimeFormat(locale, {\n month: \"long\",\n }).format(viewDate)}\n </Paragraph>\n <Paragraph\n weight=\"2\"\n vkuiClass=\"CalendarHeader__pickers-placeholder\"\n >\n {new Intl.DateTimeFormat(locale, {\n year: \"numeric\",\n }).format(viewDate)}\n </Paragraph>\n </React.Fragment>\n ) : (\n <React.Fragment>\n <CustomSelect\n value={viewDate.getMonth()}\n options={months}\n renderOption={renderOption}\n dropdownOffsetDistance={4}\n fixDropdownWidth={false}\n sizeY={SizeType.COMPACT}\n icon={<Icon12Dropdown />}\n onChange={onMonthsChange}\n forceDropdownPortal={false}\n selectType={SelectType.Plain}\n aria-label={changeMonthAriaLabel}\n />\n <CustomSelect\n value={viewDate.getFullYear()}\n options={years}\n dropdownOffsetDistance={4}\n fixDropdownWidth={false}\n sizeY={SizeType.COMPACT}\n icon={<Icon12Dropdown />}\n onChange={onYearChange}\n forceDropdownPortal={false}\n selectType={SelectType.Plain}\n aria-label={changeYearAriaLabel}\n />\n </React.Fragment>\n )}\n </div>\n {nextMonth && (\n <Tappable\n vkuiClass={classNames(\n \"CalendarHeader__nav-icon\",\n \"CalendarHeader__nav-icon-next\"\n )}\n onClick={onNextMonth}\n aria-label={`${nextMonthAriaLabel}, ${formatter.format(\n addMonths(viewDate, 1)\n )}`}\n >\n {nextMonthIcon}\n </Tappable>\n )}\n </div>\n );\n};\n"],"file":"CalendarHeader.js"}
|
|
@@ -2,7 +2,7 @@ import * as React from "react";
|
|
|
2
2
|
import { CalendarHeaderProps } from "../CalendarHeader/CalendarHeader";
|
|
3
3
|
import { HasRootRef } from "../../types";
|
|
4
4
|
import "./CalendarRange.css";
|
|
5
|
-
export interface CalendarRangeProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "onChange">, Pick<CalendarHeaderProps, "prevMonthAriaLabel" | "nextMonthAriaLabel" | "changeMonthAriaLabel" | "changeYearAriaLabel">, HasRootRef<HTMLDivElement> {
|
|
5
|
+
export interface CalendarRangeProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "onChange">, Pick<CalendarHeaderProps, "prevMonthAriaLabel" | "nextMonthAriaLabel" | "changeMonthAriaLabel" | "changeYearAriaLabel" | "prevMonthIcon" | "nextMonthIcon">, HasRootRef<HTMLDivElement> {
|
|
6
6
|
value?: Array<Date | null>;
|
|
7
7
|
disablePast?: boolean;
|
|
8
8
|
disableFuture?: boolean;
|
|
@@ -29,7 +29,7 @@ var _calendar = require("../../lib/calendar");
|
|
|
29
29
|
|
|
30
30
|
var _useCalendar2 = require("../../hooks/useCalendar");
|
|
31
31
|
|
|
32
|
-
var _excluded = ["value", "onChange", "disablePast", "disableFuture", "shouldDisableDate", "onClose", "weekStartsOn", "getRootRef", "disablePickers", "prevMonthAriaLabel", "nextMonthAriaLabel", "changeMonthAriaLabel", "changeYearAriaLabel", "changeDayAriaLabel"];
|
|
32
|
+
var _excluded = ["value", "onChange", "disablePast", "disableFuture", "shouldDisableDate", "onClose", "weekStartsOn", "getRootRef", "disablePickers", "prevMonthAriaLabel", "nextMonthAriaLabel", "changeMonthAriaLabel", "changeYearAriaLabel", "changeDayAriaLabel", "prevMonthIcon", "nextMonthIcon"];
|
|
33
33
|
|
|
34
34
|
var getIsDaySelected = function getIsDaySelected(day, value) {
|
|
35
35
|
if (!(value !== null && value !== void 0 && value[0]) || !value[1]) {
|
|
@@ -56,6 +56,8 @@ var CalendarRange = function CalendarRange(_ref) {
|
|
|
56
56
|
changeYearAriaLabel = _ref.changeYearAriaLabel,
|
|
57
57
|
_ref$changeDayAriaLab = _ref.changeDayAriaLabel,
|
|
58
58
|
changeDayAriaLabel = _ref$changeDayAriaLab === void 0 ? "Изменить день" : _ref$changeDayAriaLab,
|
|
59
|
+
prevMonthIcon = _ref.prevMonthIcon,
|
|
60
|
+
nextMonthIcon = _ref.nextMonthIcon,
|
|
59
61
|
props = (0, _objectWithoutProperties2.default)(_ref, _excluded);
|
|
60
62
|
|
|
61
63
|
var _useCalendar = (0, _useCalendar2.useCalendar)({
|
|
@@ -157,7 +159,8 @@ var CalendarRange = function CalendarRange(_ref) {
|
|
|
157
159
|
prevMonthAriaLabel: prevMonthAriaLabel,
|
|
158
160
|
nextMonthAriaLabel: nextMonthAriaLabel,
|
|
159
161
|
changeMonthAriaLabel: changeMonthAriaLabel,
|
|
160
|
-
changeYearAriaLabel: changeYearAriaLabel
|
|
162
|
+
changeYearAriaLabel: changeYearAriaLabel,
|
|
163
|
+
prevMonthIcon: prevMonthIcon
|
|
161
164
|
}), (0, _jsxRuntime.createScopedElement)(_CalendarDays.CalendarDays, {
|
|
162
165
|
viewDate: viewDate,
|
|
163
166
|
value: value,
|
|
@@ -188,7 +191,8 @@ var CalendarRange = function CalendarRange(_ref) {
|
|
|
188
191
|
prevMonthAriaLabel: prevMonthAriaLabel,
|
|
189
192
|
nextMonthAriaLabel: nextMonthAriaLabel,
|
|
190
193
|
changeMonthAriaLabel: changeMonthAriaLabel,
|
|
191
|
-
changeYearAriaLabel: changeYearAriaLabel
|
|
194
|
+
changeYearAriaLabel: changeYearAriaLabel,
|
|
195
|
+
nextMonthIcon: nextMonthIcon
|
|
192
196
|
}), (0, _jsxRuntime.createScopedElement)(_CalendarDays.CalendarDays, {
|
|
193
197
|
viewDate: secondViewDate,
|
|
194
198
|
value: value,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/CalendarRange/CalendarRange.tsx"],"names":["getIsDaySelected","day","value","Boolean","CalendarRange","onChange","disablePast","disableFuture","shouldDisableDate","onClose","weekStartsOn","getRootRef","disablePickers","prevMonthAriaLabel","nextMonthAriaLabel","changeMonthAriaLabel","changeYearAriaLabel","changeDayAriaLabel","props","viewDate","setViewDate","setPrevMonth","setNextMonth","focusedDay","setFocusedDay","isDayFocused","isDayDisabled","resetSelectedDay","React","useState","hintedDate","setHintedDate","secondViewDate","handleKeyDown","useCallback","event","includes","key","preventDefault","newFocusedDay","getNewValue","date","start","end","onDayChange","undefined","isDaySelected","isDayActive","isDaySelectionEnd","dayOfWeek","isHintedDaySelectionEnd","isDaySelectionStart","isHintedDaySelectionStart","onDayEnter","onDayLeave","isDayHinted"],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport {\n addMonths,\n isSameMonth,\n isSameDay,\n isBefore,\n isAfter,\n startOfDay,\n endOfDay,\n isWithinInterval,\n} from \"../../lib/date\";\nimport {\n CalendarHeader,\n CalendarHeaderProps,\n} from \"../CalendarHeader/CalendarHeader\";\nimport { CalendarDays } from \"../CalendarDays/CalendarDays\";\nimport {\n navigateDate,\n setTimeEqual,\n isLastDay,\n isFirstDay,\n} from \"../../lib/calendar\";\nimport { useCalendar } from \"../../hooks/useCalendar\";\nimport { HasRootRef } from \"../../types\";\nimport \"./CalendarRange.css\";\n\nexport interface CalendarRangeProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\">,\n Pick<\n CalendarHeaderProps,\n | \"prevMonthAriaLabel\"\n | \"nextMonthAriaLabel\"\n | \"changeMonthAriaLabel\"\n | \"changeYearAriaLabel\"\n >,\n HasRootRef<HTMLDivElement> {\n value?: Array<Date | null>;\n disablePast?: boolean;\n disableFuture?: boolean;\n disablePickers?: boolean;\n changeDayAriaLabel?: string;\n weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n onChange?(value?: Array<Date | null>): void;\n shouldDisableDate?(value: Date): boolean;\n onClose?(): void;\n}\n\nconst getIsDaySelected = (day: Date, value?: Array<Date | null>) => {\n if (!value?.[0] || !value[1]) {\n return false;\n }\n\n return Boolean(\n isWithinInterval(day, startOfDay(value[0]), endOfDay(value[1]))\n );\n};\n\nexport const CalendarRange: React.FC<CalendarRangeProps> = ({\n value,\n onChange,\n disablePast,\n disableFuture,\n shouldDisableDate,\n onClose,\n weekStartsOn = 1,\n getRootRef,\n disablePickers,\n prevMonthAriaLabel,\n nextMonthAriaLabel,\n changeMonthAriaLabel,\n changeYearAriaLabel,\n changeDayAriaLabel = \"Изменить день\",\n ...props\n}) => {\n const {\n viewDate,\n setViewDate,\n setPrevMonth,\n setNextMonth,\n focusedDay,\n setFocusedDay,\n isDayFocused,\n isDayDisabled,\n resetSelectedDay,\n } = useCalendar({ value, disableFuture, disablePast, shouldDisableDate });\n const [hintedDate, setHintedDate] = React.useState<Array<Date | null>>();\n const secondViewDate = addMonths(viewDate, 1);\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent) => {\n if (\n [\"ArrowUp\", \"ArrowDown\", \"ArrowLeft\", \"ArrowRight\"].includes(event.key)\n ) {\n event.preventDefault();\n }\n\n const newFocusedDay = navigateDate(focusedDay ?? value?.[1], event.key);\n\n if (\n newFocusedDay &&\n !isSameMonth(newFocusedDay, viewDate) &&\n !isSameMonth(newFocusedDay, addMonths(viewDate, 1))\n ) {\n setViewDate(newFocusedDay);\n }\n setFocusedDay(newFocusedDay);\n },\n [focusedDay, setFocusedDay, setViewDate, value, viewDate]\n );\n\n const getNewValue = React.useCallback(\n (date: Date) => {\n if (!value) {\n return [date, null];\n }\n\n const start = value[0];\n const end = value[1];\n if ((start && isSameDay(date, start)) || (end && isSameDay(date, end))) {\n return [setTimeEqual(date, start), setTimeEqual(date, end)];\n } else if (start && isBefore(date, start)) {\n return [setTimeEqual(date, start), end];\n } else if (start && isAfter(date, start)) {\n return [start, setTimeEqual(date, end)];\n }\n\n return value;\n },\n [value]\n );\n\n const onDayChange = React.useCallback(\n (date: Date) => {\n onChange?.(getNewValue(date));\n setHintedDate(undefined);\n },\n [onChange, getNewValue]\n );\n\n const isDaySelected = React.useCallback(\n (day: Date) => getIsDaySelected(day, value),\n [value]\n );\n\n const isDayActive = React.useCallback(\n (day: Date) =>\n Boolean(\n (value?.[0] && isSameDay(day, value[0])) ||\n (value?.[1] && isSameDay(day, value[1]))\n ),\n [value]\n );\n\n const isDaySelectionEnd = React.useCallback(\n (day: Date, dayOfWeek: number) =>\n Boolean(\n isLastDay(day, dayOfWeek) || (value?.[1] && isSameDay(day, value[1]))\n ),\n [value]\n );\n\n const isHintedDaySelectionEnd = React.useCallback(\n (day: Date, dayOfWeek: number) =>\n Boolean(\n isLastDay(day, dayOfWeek) ||\n (hintedDate?.[1] && isSameDay(day, hintedDate[1]))\n ),\n [hintedDate]\n );\n\n const isDaySelectionStart = React.useCallback(\n (day: Date, dayOfWeek: number) =>\n Boolean(\n isFirstDay(day, dayOfWeek) || (value?.[0] && isSameDay(day, value[0]))\n ),\n [value]\n );\n\n const isHintedDaySelectionStart = React.useCallback(\n (day: Date, dayOfWeek: number) =>\n Boolean(\n isFirstDay(day, dayOfWeek) ||\n (hintedDate?.[0] && isSameDay(day, hintedDate[0]))\n ),\n [hintedDate]\n );\n\n const onDayEnter = React.useCallback(\n (date: Date) => setHintedDate(getNewValue(date)),\n [setHintedDate, getNewValue]\n );\n\n const onDayLeave = React.useCallback(\n () => setHintedDate(undefined),\n [setHintedDate]\n );\n\n const isDayHinted = React.useCallback(\n (day: Date) => getIsDaySelected(day, hintedDate),\n [hintedDate]\n );\n\n return (\n <div {...props} ref={getRootRef} vkuiClass=\"CalendarRange\">\n <div vkuiClass=\"CalendarRange__inner\">\n <CalendarHeader\n viewDate={viewDate}\n onChange={setViewDate}\n nextMonth={false}\n onPrevMonth={setPrevMonth}\n disablePickers={disablePickers}\n vkuiClass=\"CalendarRange__header\"\n prevMonthAriaLabel={prevMonthAriaLabel}\n nextMonthAriaLabel={nextMonthAriaLabel}\n changeMonthAriaLabel={changeMonthAriaLabel}\n changeYearAriaLabel={changeYearAriaLabel}\n />\n <CalendarDays\n viewDate={viewDate}\n value={value}\n weekStartsOn={weekStartsOn}\n onKeyDown={handleKeyDown}\n isDayFocused={isDayFocused}\n onDayChange={onDayChange}\n isDaySelected={isDaySelected}\n isDayActive={isDayActive}\n isDaySelectionEnd={isDaySelectionEnd}\n isDaySelectionStart={isDaySelectionStart}\n isDayHinted={isDayHinted}\n onDayEnter={onDayEnter}\n onDayLeave={onDayLeave}\n isHintedDaySelectionEnd={isHintedDaySelectionEnd}\n isHintedDaySelectionStart={isHintedDaySelectionStart}\n isDayDisabled={isDayDisabled}\n aria-label={changeDayAriaLabel}\n />\n </div>\n <div vkuiClass=\"CalendarRange__inner\">\n <CalendarHeader\n viewDate={secondViewDate}\n onChange={setViewDate}\n prevMonth={false}\n onNextMonth={setNextMonth}\n disablePickers={disablePickers}\n vkuiClass=\"CalendarRange__header\"\n prevMonthAriaLabel={prevMonthAriaLabel}\n nextMonthAriaLabel={nextMonthAriaLabel}\n changeMonthAriaLabel={changeMonthAriaLabel}\n changeYearAriaLabel={changeYearAriaLabel}\n />\n <CalendarDays\n viewDate={secondViewDate}\n value={value}\n weekStartsOn={weekStartsOn}\n aria-label={changeDayAriaLabel}\n onKeyDown={handleKeyDown}\n isDayFocused={isDayFocused}\n onDayChange={onDayChange}\n isDaySelected={isDaySelected}\n isDayActive={isDayActive}\n isDaySelectionEnd={isDaySelectionEnd}\n isDaySelectionStart={isDaySelectionStart}\n isDayHinted={isDayHinted}\n onDayEnter={onDayEnter}\n onDayLeave={onDayLeave}\n isHintedDaySelectionEnd={isHintedDaySelectionEnd}\n isHintedDaySelectionStart={isHintedDaySelectionStart}\n isDayDisabled={isDayDisabled}\n tabIndex={0}\n onBlur={resetSelectedDay}\n />\n </div>\n </div>\n );\n};\n"],"file":"CalendarRange.js"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/CalendarRange/CalendarRange.tsx"],"names":["getIsDaySelected","day","value","Boolean","CalendarRange","onChange","disablePast","disableFuture","shouldDisableDate","onClose","weekStartsOn","getRootRef","disablePickers","prevMonthAriaLabel","nextMonthAriaLabel","changeMonthAriaLabel","changeYearAriaLabel","changeDayAriaLabel","prevMonthIcon","nextMonthIcon","props","viewDate","setViewDate","setPrevMonth","setNextMonth","focusedDay","setFocusedDay","isDayFocused","isDayDisabled","resetSelectedDay","React","useState","hintedDate","setHintedDate","secondViewDate","handleKeyDown","useCallback","event","includes","key","preventDefault","newFocusedDay","getNewValue","date","start","end","onDayChange","undefined","isDaySelected","isDayActive","isDaySelectionEnd","dayOfWeek","isHintedDaySelectionEnd","isDaySelectionStart","isHintedDaySelectionStart","onDayEnter","onDayLeave","isDayHinted"],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport {\n addMonths,\n isSameMonth,\n isSameDay,\n isBefore,\n isAfter,\n startOfDay,\n endOfDay,\n isWithinInterval,\n} from \"../../lib/date\";\nimport {\n CalendarHeader,\n CalendarHeaderProps,\n} from \"../CalendarHeader/CalendarHeader\";\nimport { CalendarDays } from \"../CalendarDays/CalendarDays\";\nimport {\n navigateDate,\n setTimeEqual,\n isLastDay,\n isFirstDay,\n} from \"../../lib/calendar\";\nimport { useCalendar } from \"../../hooks/useCalendar\";\nimport { HasRootRef } from \"../../types\";\nimport \"./CalendarRange.css\";\n\nexport interface CalendarRangeProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\">,\n Pick<\n CalendarHeaderProps,\n | \"prevMonthAriaLabel\"\n | \"nextMonthAriaLabel\"\n | \"changeMonthAriaLabel\"\n | \"changeYearAriaLabel\"\n | \"prevMonthIcon\"\n | \"nextMonthIcon\"\n >,\n HasRootRef<HTMLDivElement> {\n value?: Array<Date | null>;\n disablePast?: boolean;\n disableFuture?: boolean;\n disablePickers?: boolean;\n changeDayAriaLabel?: string;\n weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n onChange?(value?: Array<Date | null>): void;\n shouldDisableDate?(value: Date): boolean;\n onClose?(): void;\n}\n\nconst getIsDaySelected = (day: Date, value?: Array<Date | null>) => {\n if (!value?.[0] || !value[1]) {\n return false;\n }\n\n return Boolean(\n isWithinInterval(day, startOfDay(value[0]), endOfDay(value[1]))\n );\n};\n\nexport const CalendarRange: React.FC<CalendarRangeProps> = ({\n value,\n onChange,\n disablePast,\n disableFuture,\n shouldDisableDate,\n onClose,\n weekStartsOn = 1,\n getRootRef,\n disablePickers,\n prevMonthAriaLabel,\n nextMonthAriaLabel,\n changeMonthAriaLabel,\n changeYearAriaLabel,\n changeDayAriaLabel = \"Изменить день\",\n prevMonthIcon,\n nextMonthIcon,\n ...props\n}) => {\n const {\n viewDate,\n setViewDate,\n setPrevMonth,\n setNextMonth,\n focusedDay,\n setFocusedDay,\n isDayFocused,\n isDayDisabled,\n resetSelectedDay,\n } = useCalendar({ value, disableFuture, disablePast, shouldDisableDate });\n const [hintedDate, setHintedDate] = React.useState<Array<Date | null>>();\n const secondViewDate = addMonths(viewDate, 1);\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent) => {\n if (\n [\"ArrowUp\", \"ArrowDown\", \"ArrowLeft\", \"ArrowRight\"].includes(event.key)\n ) {\n event.preventDefault();\n }\n\n const newFocusedDay = navigateDate(focusedDay ?? value?.[1], event.key);\n\n if (\n newFocusedDay &&\n !isSameMonth(newFocusedDay, viewDate) &&\n !isSameMonth(newFocusedDay, addMonths(viewDate, 1))\n ) {\n setViewDate(newFocusedDay);\n }\n setFocusedDay(newFocusedDay);\n },\n [focusedDay, setFocusedDay, setViewDate, value, viewDate]\n );\n\n const getNewValue = React.useCallback(\n (date: Date) => {\n if (!value) {\n return [date, null];\n }\n\n const start = value[0];\n const end = value[1];\n if ((start && isSameDay(date, start)) || (end && isSameDay(date, end))) {\n return [setTimeEqual(date, start), setTimeEqual(date, end)];\n } else if (start && isBefore(date, start)) {\n return [setTimeEqual(date, start), end];\n } else if (start && isAfter(date, start)) {\n return [start, setTimeEqual(date, end)];\n }\n\n return value;\n },\n [value]\n );\n\n const onDayChange = React.useCallback(\n (date: Date) => {\n onChange?.(getNewValue(date));\n setHintedDate(undefined);\n },\n [onChange, getNewValue]\n );\n\n const isDaySelected = React.useCallback(\n (day: Date) => getIsDaySelected(day, value),\n [value]\n );\n\n const isDayActive = React.useCallback(\n (day: Date) =>\n Boolean(\n (value?.[0] && isSameDay(day, value[0])) ||\n (value?.[1] && isSameDay(day, value[1]))\n ),\n [value]\n );\n\n const isDaySelectionEnd = React.useCallback(\n (day: Date, dayOfWeek: number) =>\n Boolean(\n isLastDay(day, dayOfWeek) || (value?.[1] && isSameDay(day, value[1]))\n ),\n [value]\n );\n\n const isHintedDaySelectionEnd = React.useCallback(\n (day: Date, dayOfWeek: number) =>\n Boolean(\n isLastDay(day, dayOfWeek) ||\n (hintedDate?.[1] && isSameDay(day, hintedDate[1]))\n ),\n [hintedDate]\n );\n\n const isDaySelectionStart = React.useCallback(\n (day: Date, dayOfWeek: number) =>\n Boolean(\n isFirstDay(day, dayOfWeek) || (value?.[0] && isSameDay(day, value[0]))\n ),\n [value]\n );\n\n const isHintedDaySelectionStart = React.useCallback(\n (day: Date, dayOfWeek: number) =>\n Boolean(\n isFirstDay(day, dayOfWeek) ||\n (hintedDate?.[0] && isSameDay(day, hintedDate[0]))\n ),\n [hintedDate]\n );\n\n const onDayEnter = React.useCallback(\n (date: Date) => setHintedDate(getNewValue(date)),\n [setHintedDate, getNewValue]\n );\n\n const onDayLeave = React.useCallback(\n () => setHintedDate(undefined),\n [setHintedDate]\n );\n\n const isDayHinted = React.useCallback(\n (day: Date) => getIsDaySelected(day, hintedDate),\n [hintedDate]\n );\n\n return (\n <div {...props} ref={getRootRef} vkuiClass=\"CalendarRange\">\n <div vkuiClass=\"CalendarRange__inner\">\n <CalendarHeader\n viewDate={viewDate}\n onChange={setViewDate}\n nextMonth={false}\n onPrevMonth={setPrevMonth}\n disablePickers={disablePickers}\n vkuiClass=\"CalendarRange__header\"\n prevMonthAriaLabel={prevMonthAriaLabel}\n nextMonthAriaLabel={nextMonthAriaLabel}\n changeMonthAriaLabel={changeMonthAriaLabel}\n changeYearAriaLabel={changeYearAriaLabel}\n prevMonthIcon={prevMonthIcon}\n />\n <CalendarDays\n viewDate={viewDate}\n value={value}\n weekStartsOn={weekStartsOn}\n onKeyDown={handleKeyDown}\n isDayFocused={isDayFocused}\n onDayChange={onDayChange}\n isDaySelected={isDaySelected}\n isDayActive={isDayActive}\n isDaySelectionEnd={isDaySelectionEnd}\n isDaySelectionStart={isDaySelectionStart}\n isDayHinted={isDayHinted}\n onDayEnter={onDayEnter}\n onDayLeave={onDayLeave}\n isHintedDaySelectionEnd={isHintedDaySelectionEnd}\n isHintedDaySelectionStart={isHintedDaySelectionStart}\n isDayDisabled={isDayDisabled}\n aria-label={changeDayAriaLabel}\n />\n </div>\n <div vkuiClass=\"CalendarRange__inner\">\n <CalendarHeader\n viewDate={secondViewDate}\n onChange={setViewDate}\n prevMonth={false}\n onNextMonth={setNextMonth}\n disablePickers={disablePickers}\n vkuiClass=\"CalendarRange__header\"\n prevMonthAriaLabel={prevMonthAriaLabel}\n nextMonthAriaLabel={nextMonthAriaLabel}\n changeMonthAriaLabel={changeMonthAriaLabel}\n changeYearAriaLabel={changeYearAriaLabel}\n nextMonthIcon={nextMonthIcon}\n />\n <CalendarDays\n viewDate={secondViewDate}\n value={value}\n weekStartsOn={weekStartsOn}\n aria-label={changeDayAriaLabel}\n onKeyDown={handleKeyDown}\n isDayFocused={isDayFocused}\n onDayChange={onDayChange}\n isDaySelected={isDaySelected}\n isDayActive={isDayActive}\n isDaySelectionEnd={isDaySelectionEnd}\n isDaySelectionStart={isDaySelectionStart}\n isDayHinted={isDayHinted}\n onDayEnter={onDayEnter}\n onDayLeave={onDayLeave}\n isHintedDaySelectionEnd={isHintedDaySelectionEnd}\n isHintedDaySelectionStart={isHintedDaySelectionStart}\n isDayDisabled={isDayDisabled}\n tabIndex={0}\n onBlur={resetSelectedDay}\n />\n </div>\n </div>\n );\n};\n"],"file":"CalendarRange.js"}
|
|
@@ -3,7 +3,7 @@ import { CalendarProps } from "../Calendar/Calendar";
|
|
|
3
3
|
import { Placement } from "../Popper/Popper";
|
|
4
4
|
import { HasRootRef } from "../../types";
|
|
5
5
|
import "./DateInput.css";
|
|
6
|
-
export interface DateInputProps extends Omit<React.InputHTMLAttributes<HTMLDivElement>, "value" | "onChange" | "size">, Pick<CalendarProps, "disablePast" | "disableFuture" | "enableTime" | "shouldDisableDate" | "onChange" | "value" | "doneButtonText" | "weekStartsOn" | "disablePickers" | "changeHoursAriaLabel" | "changeMinutesAriaLabel" | "prevMonthAriaLabel" | "nextMonthAriaLabel" | "changeMonthAriaLabel" | "changeYearAriaLabel" | "changeDayAriaLabel" | "showNeighboringMonth" | "size" | "viewDate" | "onHeaderChange" | "onNextMonth" | "onPrevMonth">, HasRootRef<HTMLDivElement> {
|
|
6
|
+
export interface DateInputProps extends Omit<React.InputHTMLAttributes<HTMLDivElement>, "value" | "onChange" | "size">, Pick<CalendarProps, "disablePast" | "disableFuture" | "enableTime" | "shouldDisableDate" | "onChange" | "value" | "doneButtonText" | "weekStartsOn" | "disablePickers" | "changeHoursAriaLabel" | "changeMinutesAriaLabel" | "prevMonthAriaLabel" | "nextMonthAriaLabel" | "changeMonthAriaLabel" | "changeYearAriaLabel" | "changeDayAriaLabel" | "showNeighboringMonth" | "size" | "viewDate" | "onHeaderChange" | "onNextMonth" | "onPrevMonth" | "prevMonthIcon" | "nextMonthIcon">, HasRootRef<HTMLDivElement> {
|
|
7
7
|
calendarPlacement?: Placement;
|
|
8
8
|
closeOnChange?: boolean;
|
|
9
9
|
clearFieldAriaLabel?: string;
|
|
@@ -43,7 +43,7 @@ var _useAdaptivity2 = require("../../hooks/useAdaptivity");
|
|
|
43
43
|
|
|
44
44
|
var _callMultiple = require("../../lib/callMultiple");
|
|
45
45
|
|
|
46
|
-
var _excluded = ["enableTime", "shouldDisableDate", "disableFuture", "disablePast", "value", "onChange", "calendarPlacement", "style", "className", "doneButtonText", "closeOnChange", "disablePickers", "getRootRef", "name", "autoFocus", "disabled", "onClick", "onFocus", "prevMonthAriaLabel", "nextMonthAriaLabel", "showNeighboringMonth", "size", "changeMonthAriaLabel", "changeYearAriaLabel", "changeDayAriaLabel", "changeHoursAriaLabel", "changeMinutesAriaLabel", "clearFieldAriaLabel", "showCalendarAriaLabel", "viewDate", "onHeaderChange", "onNextMonth", "onPrevMonth"];
|
|
46
|
+
var _excluded = ["enableTime", "shouldDisableDate", "disableFuture", "disablePast", "value", "onChange", "calendarPlacement", "style", "className", "doneButtonText", "closeOnChange", "disablePickers", "getRootRef", "name", "autoFocus", "disabled", "onClick", "onFocus", "prevMonthAriaLabel", "nextMonthAriaLabel", "showNeighboringMonth", "size", "changeMonthAriaLabel", "changeYearAriaLabel", "changeDayAriaLabel", "changeHoursAriaLabel", "changeMinutesAriaLabel", "clearFieldAriaLabel", "showCalendarAriaLabel", "viewDate", "onHeaderChange", "onNextMonth", "onPrevMonth", "prevMonthIcon", "nextMonthIcon"];
|
|
47
47
|
|
|
48
48
|
var elementsConfig = function elementsConfig(index) {
|
|
49
49
|
var length = 2;
|
|
@@ -138,6 +138,8 @@ var DateInput = function DateInput(_ref) {
|
|
|
138
138
|
onHeaderChange = _ref.onHeaderChange,
|
|
139
139
|
onNextMonth = _ref.onNextMonth,
|
|
140
140
|
onPrevMonth = _ref.onPrevMonth,
|
|
141
|
+
prevMonthIcon = _ref.prevMonthIcon,
|
|
142
|
+
nextMonthIcon = _ref.nextMonthIcon,
|
|
141
143
|
props = (0, _objectWithoutProperties2.default)(_ref, _excluded);
|
|
142
144
|
var daysRef = React.useRef(null);
|
|
143
145
|
var monthsRef = React.useRef(null);
|
|
@@ -288,9 +290,11 @@ var DateInput = function DateInput(_ref) {
|
|
|
288
290
|
showNeighboringMonth: showNeighboringMonth,
|
|
289
291
|
size: size,
|
|
290
292
|
viewDate: viewDate,
|
|
291
|
-
onHeaderChange:
|
|
293
|
+
onHeaderChange: onHeaderChange,
|
|
292
294
|
onNextMonth: onNextMonth,
|
|
293
|
-
onPrevMonth: onPrevMonth
|
|
295
|
+
onPrevMonth: onPrevMonth,
|
|
296
|
+
prevMonthIcon: prevMonthIcon,
|
|
297
|
+
nextMonthIcon: nextMonthIcon
|
|
294
298
|
})));
|
|
295
299
|
};
|
|
296
300
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/DateInput/DateInput.tsx"],"names":["elementsConfig","index","length","min","max","getInternalValue","value","newValue","String","getDate","padStart","getMonth","getFullYear","getHours","getMinutes","DateInput","enableTime","shouldDisableDate","disableFuture","disablePast","onChange","calendarPlacement","style","className","doneButtonText","closeOnChange","disablePickers","getRootRef","name","autoFocus","disabled","onClick","onFocus","prevMonthAriaLabel","nextMonthAriaLabel","showNeighboringMonth","size","changeMonthAriaLabel","changeYearAriaLabel","changeDayAriaLabel","changeHoursAriaLabel","changeMinutesAriaLabel","clearFieldAriaLabel","showCalendarAriaLabel","viewDate","onHeaderChange","onNextMonth","onPrevMonth","props","daysRef","React","useRef","monthsRef","yearsRef","hoursRef","minutesRef","maxElement","onInternalValueChange","useCallback","internalValue","i","formattedValue","mask","Date","refs","useMemo","rootRef","calendarRef","open","openCalendar","closeCalendar","handleKeyDown","setFocusedElement","handleFieldEnter","clear","removeFocusFromField","sizeY","onCalendarChange"],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport { format, isMatch, parse } from \"../../lib/date\";\nimport { Icon16Clear, Icon20CalendarOutline } from \"@vkontakte/icons\";\nimport { Calendar, CalendarProps } from \"../Calendar/Calendar\";\nimport { Popper, Placement } from \"../Popper/Popper\";\nimport { multiRef } from \"../../lib/utils\";\nimport IconButton from \"../IconButton/IconButton\";\nimport { classNames } from \"../../lib/classNames\";\nimport { FormField } from \"../FormField/FormField\";\nimport { HasRootRef } from \"../../types\";\nimport { useDateInput } from \"../../hooks/useDateInput\";\nimport { InputLike } from \"../InputLike/InputLike\";\nimport { InputLikeDivider } from \"../InputLike/InputLikeDivider\";\nimport { useAdaptivity } from \"../../hooks/useAdaptivity\";\nimport { callMultiple } from \"../../lib/callMultiple\";\nimport \"./DateInput.css\";\n\nexport interface DateInputProps\n extends Omit<\n React.InputHTMLAttributes<HTMLDivElement>,\n \"value\" | \"onChange\" | \"size\"\n >,\n Pick<\n CalendarProps,\n | \"disablePast\"\n | \"disableFuture\"\n | \"enableTime\"\n | \"shouldDisableDate\"\n | \"onChange\"\n | \"value\"\n | \"doneButtonText\"\n | \"weekStartsOn\"\n | \"disablePickers\"\n | \"changeHoursAriaLabel\"\n | \"changeMinutesAriaLabel\"\n | \"prevMonthAriaLabel\"\n | \"nextMonthAriaLabel\"\n | \"changeMonthAriaLabel\"\n | \"changeYearAriaLabel\"\n | \"changeDayAriaLabel\"\n | \"showNeighboringMonth\"\n | \"size\"\n | \"viewDate\"\n | \"onHeaderChange\"\n | \"onNextMonth\"\n | \"onPrevMonth\"\n >,\n HasRootRef<HTMLDivElement> {\n calendarPlacement?: Placement;\n closeOnChange?: boolean;\n clearFieldAriaLabel?: string;\n showCalendarAriaLabel?: string;\n}\n\nconst elementsConfig = (index: number) => {\n let length = 2;\n let min = 1;\n let max = 0;\n\n switch (index) {\n case 0:\n max = 31;\n break;\n case 1:\n max = 12;\n break;\n case 2:\n max = 2100;\n min = 1900;\n length = 4;\n break;\n case 3:\n max = 23;\n break;\n case 4:\n max = 59;\n break;\n }\n\n return { length, min, max };\n};\n\nconst getInternalValue = (value: CalendarProps[\"value\"]) => {\n const newValue = [\"\", \"\", \"\", \"\", \"\"];\n if (value) {\n newValue[0] = String(value.getDate()).padStart(2, \"0\");\n newValue[1] = String(value.getMonth() + 1).padStart(2, \"0\");\n newValue[2] = String(value.getFullYear()).padStart(4, \"0\");\n newValue[3] = String(value.getHours()).padStart(2, \"0\");\n newValue[4] = String(value.getMinutes()).padStart(2, \"0\");\n }\n return newValue;\n};\n\nexport const DateInput: React.FC<DateInputProps> = ({\n enableTime,\n shouldDisableDate,\n disableFuture,\n disablePast,\n value,\n onChange,\n calendarPlacement = \"bottom-start\",\n style,\n className,\n doneButtonText,\n closeOnChange = true,\n disablePickers,\n getRootRef,\n name,\n autoFocus,\n disabled,\n onClick,\n onFocus,\n prevMonthAriaLabel,\n nextMonthAriaLabel,\n showNeighboringMonth,\n size,\n changeMonthAriaLabel = \"Изменить месяц\",\n changeYearAriaLabel = \"Изменить год\",\n changeDayAriaLabel = \"Изменить день\",\n changeHoursAriaLabel = \"Изменить час\",\n changeMinutesAriaLabel = \"Изменить минуту\",\n clearFieldAriaLabel = \"Очистить поле\",\n showCalendarAriaLabel = \"Показать календарь\",\n viewDate,\n onHeaderChange,\n onNextMonth,\n onPrevMonth,\n ...props\n}) => {\n const daysRef = React.useRef<HTMLSpanElement>(null);\n const monthsRef = React.useRef<HTMLSpanElement>(null);\n const yearsRef = React.useRef<HTMLSpanElement>(null);\n const hoursRef = React.useRef<HTMLSpanElement>(null);\n const minutesRef = React.useRef<HTMLSpanElement>(null);\n\n const maxElement = enableTime ? 4 : 2;\n\n const onInternalValueChange = React.useCallback(\n (internalValue: string[]) => {\n for (let i = 0; i <= maxElement; i += 1) {\n if (internalValue[i].length < elementsConfig(i).length) {\n return;\n }\n }\n\n let formattedValue = `${internalValue[0]}.${internalValue[1]}.${internalValue[2]}`;\n let mask = \"DD.MM.YYYY\";\n if (enableTime) {\n formattedValue += ` ${internalValue[3]}:${internalValue[4]}`;\n mask += \" HH:mm\";\n }\n\n if (isMatch(formattedValue, mask)) {\n onChange?.(parse(formattedValue, mask, value ?? new Date()));\n }\n },\n [enableTime, maxElement, onChange, value]\n );\n\n const refs = React.useMemo(\n () => [daysRef, monthsRef, yearsRef, hoursRef, minutesRef],\n [daysRef, monthsRef, yearsRef, hoursRef, minutesRef]\n );\n\n const {\n rootRef,\n calendarRef,\n open,\n openCalendar,\n closeCalendar,\n internalValue,\n handleKeyDown,\n setFocusedElement,\n handleFieldEnter,\n clear,\n removeFocusFromField,\n } = useDateInput({\n maxElement,\n refs,\n autoFocus,\n disabled,\n elementsConfig,\n onChange,\n onInternalValueChange,\n getInternalValue,\n value,\n });\n\n const { sizeY } = useAdaptivity();\n\n const onCalendarChange = React.useCallback(\n (value?: Date | undefined) => {\n onChange?.(value);\n if (closeOnChange && !enableTime) {\n removeFocusFromField();\n }\n },\n [onChange, removeFocusFromField, closeOnChange, enableTime]\n );\n\n return (\n <FormField\n vkuiClass={classNames(\"DateInput\", `DateInput--sizeY-${sizeY}`)}\n style={style}\n className={className}\n getRootRef={multiRef(rootRef, getRootRef)}\n after={\n value ? (\n <IconButton\n hoverMode=\"opacity\"\n aria-label={clearFieldAriaLabel}\n onClick={clear}\n >\n <Icon16Clear />\n </IconButton>\n ) : (\n <IconButton\n hoverMode=\"opacity\"\n aria-label={showCalendarAriaLabel}\n onClick={openCalendar}\n >\n <Icon20CalendarOutline />\n </IconButton>\n )\n }\n disabled={disabled}\n onClick={callMultiple(handleFieldEnter, onClick)}\n onFocus={callMultiple(handleFieldEnter, onFocus)}\n {...props}\n >\n <input\n type=\"hidden\"\n name={name}\n value={\n value\n ? format(value, enableTime ? \"DD.MM.YYYYTHH:mm\" : \"DD.MM.YYYY\")\n : \"\"\n }\n />\n <span vkuiClass=\"DateInput__input\" onKeyDown={handleKeyDown}>\n <InputLike\n tabIndex={1}\n length={2}\n getRootRef={daysRef}\n index={0}\n onElementSelect={setFocusedElement}\n value={internalValue[0]}\n aria-label={changeDayAriaLabel}\n />\n <InputLikeDivider>.</InputLikeDivider>\n <InputLike\n length={2}\n getRootRef={monthsRef}\n index={1}\n onElementSelect={setFocusedElement}\n value={internalValue[1]}\n aria-label={changeMonthAriaLabel}\n />\n <InputLikeDivider>.</InputLikeDivider>\n <InputLike\n length={4}\n getRootRef={yearsRef}\n index={2}\n onElementSelect={setFocusedElement}\n value={internalValue[2]}\n aria-label={changeYearAriaLabel}\n />\n {enableTime && (\n <React.Fragment>\n <InputLikeDivider vkuiClass=\"DateInput__input-time-divider\">\n {\" \"}\n </InputLikeDivider>\n <InputLike\n length={2}\n getRootRef={hoursRef}\n index={3}\n onElementSelect={setFocusedElement}\n value={internalValue[3]}\n aria-label={changeHoursAriaLabel}\n />\n <InputLikeDivider>:</InputLikeDivider>\n <InputLike\n length={2}\n getRootRef={minutesRef}\n index={4}\n onElementSelect={setFocusedElement}\n value={internalValue[4]}\n aria-label={changeMinutesAriaLabel}\n />\n </React.Fragment>\n )}\n </span>\n {open && (\n <Popper\n targetRef={rootRef}\n offsetDistance={8}\n placement={calendarPlacement}\n >\n <Calendar\n value={value}\n onChange={onCalendarChange}\n enableTime={enableTime}\n disablePast={disablePast}\n disableFuture={disableFuture}\n shouldDisableDate={shouldDisableDate}\n onClose={closeCalendar}\n getRootRef={calendarRef}\n doneButtonText={doneButtonText}\n disablePickers={disablePickers}\n changeHoursAriaLabel={changeHoursAriaLabel}\n changeMinutesAriaLabel={changeMinutesAriaLabel}\n prevMonthAriaLabel={prevMonthAriaLabel}\n nextMonthAriaLabel={nextMonthAriaLabel}\n changeMonthAriaLabel={changeMonthAriaLabel}\n changeYearAriaLabel={changeYearAriaLabel}\n changeDayAriaLabel={changeDayAriaLabel}\n showNeighboringMonth={showNeighboringMonth}\n size={size}\n viewDate={viewDate}\n onHeaderChange={onCalendarChange}\n onNextMonth={onNextMonth}\n onPrevMonth={onPrevMonth}\n />\n </Popper>\n )}\n </FormField>\n );\n};\n"],"file":"DateInput.js"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/DateInput/DateInput.tsx"],"names":["elementsConfig","index","length","min","max","getInternalValue","value","newValue","String","getDate","padStart","getMonth","getFullYear","getHours","getMinutes","DateInput","enableTime","shouldDisableDate","disableFuture","disablePast","onChange","calendarPlacement","style","className","doneButtonText","closeOnChange","disablePickers","getRootRef","name","autoFocus","disabled","onClick","onFocus","prevMonthAriaLabel","nextMonthAriaLabel","showNeighboringMonth","size","changeMonthAriaLabel","changeYearAriaLabel","changeDayAriaLabel","changeHoursAriaLabel","changeMinutesAriaLabel","clearFieldAriaLabel","showCalendarAriaLabel","viewDate","onHeaderChange","onNextMonth","onPrevMonth","prevMonthIcon","nextMonthIcon","props","daysRef","React","useRef","monthsRef","yearsRef","hoursRef","minutesRef","maxElement","onInternalValueChange","useCallback","internalValue","i","formattedValue","mask","Date","refs","useMemo","rootRef","calendarRef","open","openCalendar","closeCalendar","handleKeyDown","setFocusedElement","handleFieldEnter","clear","removeFocusFromField","sizeY","onCalendarChange"],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport { format, isMatch, parse } from \"../../lib/date\";\nimport { Icon16Clear, Icon20CalendarOutline } from \"@vkontakte/icons\";\nimport { Calendar, CalendarProps } from \"../Calendar/Calendar\";\nimport { Popper, Placement } from \"../Popper/Popper\";\nimport { multiRef } from \"../../lib/utils\";\nimport IconButton from \"../IconButton/IconButton\";\nimport { classNames } from \"../../lib/classNames\";\nimport { FormField } from \"../FormField/FormField\";\nimport { HasRootRef } from \"../../types\";\nimport { useDateInput } from \"../../hooks/useDateInput\";\nimport { InputLike } from \"../InputLike/InputLike\";\nimport { InputLikeDivider } from \"../InputLike/InputLikeDivider\";\nimport { useAdaptivity } from \"../../hooks/useAdaptivity\";\nimport { callMultiple } from \"../../lib/callMultiple\";\nimport \"./DateInput.css\";\n\nexport interface DateInputProps\n extends Omit<\n React.InputHTMLAttributes<HTMLDivElement>,\n \"value\" | \"onChange\" | \"size\"\n >,\n Pick<\n CalendarProps,\n | \"disablePast\"\n | \"disableFuture\"\n | \"enableTime\"\n | \"shouldDisableDate\"\n | \"onChange\"\n | \"value\"\n | \"doneButtonText\"\n | \"weekStartsOn\"\n | \"disablePickers\"\n | \"changeHoursAriaLabel\"\n | \"changeMinutesAriaLabel\"\n | \"prevMonthAriaLabel\"\n | \"nextMonthAriaLabel\"\n | \"changeMonthAriaLabel\"\n | \"changeYearAriaLabel\"\n | \"changeDayAriaLabel\"\n | \"showNeighboringMonth\"\n | \"size\"\n | \"viewDate\"\n | \"onHeaderChange\"\n | \"onNextMonth\"\n | \"onPrevMonth\"\n | \"prevMonthIcon\"\n | \"nextMonthIcon\"\n >,\n HasRootRef<HTMLDivElement> {\n calendarPlacement?: Placement;\n closeOnChange?: boolean;\n clearFieldAriaLabel?: string;\n showCalendarAriaLabel?: string;\n}\n\nconst elementsConfig = (index: number) => {\n let length = 2;\n let min = 1;\n let max = 0;\n\n switch (index) {\n case 0:\n max = 31;\n break;\n case 1:\n max = 12;\n break;\n case 2:\n max = 2100;\n min = 1900;\n length = 4;\n break;\n case 3:\n max = 23;\n break;\n case 4:\n max = 59;\n break;\n }\n\n return { length, min, max };\n};\n\nconst getInternalValue = (value: CalendarProps[\"value\"]) => {\n const newValue = [\"\", \"\", \"\", \"\", \"\"];\n if (value) {\n newValue[0] = String(value.getDate()).padStart(2, \"0\");\n newValue[1] = String(value.getMonth() + 1).padStart(2, \"0\");\n newValue[2] = String(value.getFullYear()).padStart(4, \"0\");\n newValue[3] = String(value.getHours()).padStart(2, \"0\");\n newValue[4] = String(value.getMinutes()).padStart(2, \"0\");\n }\n return newValue;\n};\n\nexport const DateInput: React.FC<DateInputProps> = ({\n enableTime,\n shouldDisableDate,\n disableFuture,\n disablePast,\n value,\n onChange,\n calendarPlacement = \"bottom-start\",\n style,\n className,\n doneButtonText,\n closeOnChange = true,\n disablePickers,\n getRootRef,\n name,\n autoFocus,\n disabled,\n onClick,\n onFocus,\n prevMonthAriaLabel,\n nextMonthAriaLabel,\n showNeighboringMonth,\n size,\n changeMonthAriaLabel = \"Изменить месяц\",\n changeYearAriaLabel = \"Изменить год\",\n changeDayAriaLabel = \"Изменить день\",\n changeHoursAriaLabel = \"Изменить час\",\n changeMinutesAriaLabel = \"Изменить минуту\",\n clearFieldAriaLabel = \"Очистить поле\",\n showCalendarAriaLabel = \"Показать календарь\",\n viewDate,\n onHeaderChange,\n onNextMonth,\n onPrevMonth,\n prevMonthIcon,\n nextMonthIcon,\n ...props\n}) => {\n const daysRef = React.useRef<HTMLSpanElement>(null);\n const monthsRef = React.useRef<HTMLSpanElement>(null);\n const yearsRef = React.useRef<HTMLSpanElement>(null);\n const hoursRef = React.useRef<HTMLSpanElement>(null);\n const minutesRef = React.useRef<HTMLSpanElement>(null);\n\n const maxElement = enableTime ? 4 : 2;\n\n const onInternalValueChange = React.useCallback(\n (internalValue: string[]) => {\n for (let i = 0; i <= maxElement; i += 1) {\n if (internalValue[i].length < elementsConfig(i).length) {\n return;\n }\n }\n\n let formattedValue = `${internalValue[0]}.${internalValue[1]}.${internalValue[2]}`;\n let mask = \"DD.MM.YYYY\";\n if (enableTime) {\n formattedValue += ` ${internalValue[3]}:${internalValue[4]}`;\n mask += \" HH:mm\";\n }\n\n if (isMatch(formattedValue, mask)) {\n onChange?.(parse(formattedValue, mask, value ?? new Date()));\n }\n },\n [enableTime, maxElement, onChange, value]\n );\n\n const refs = React.useMemo(\n () => [daysRef, monthsRef, yearsRef, hoursRef, minutesRef],\n [daysRef, monthsRef, yearsRef, hoursRef, minutesRef]\n );\n\n const {\n rootRef,\n calendarRef,\n open,\n openCalendar,\n closeCalendar,\n internalValue,\n handleKeyDown,\n setFocusedElement,\n handleFieldEnter,\n clear,\n removeFocusFromField,\n } = useDateInput({\n maxElement,\n refs,\n autoFocus,\n disabled,\n elementsConfig,\n onChange,\n onInternalValueChange,\n getInternalValue,\n value,\n });\n\n const { sizeY } = useAdaptivity();\n\n const onCalendarChange = React.useCallback(\n (value?: Date | undefined) => {\n onChange?.(value);\n if (closeOnChange && !enableTime) {\n removeFocusFromField();\n }\n },\n [onChange, removeFocusFromField, closeOnChange, enableTime]\n );\n\n return (\n <FormField\n vkuiClass={classNames(\"DateInput\", `DateInput--sizeY-${sizeY}`)}\n style={style}\n className={className}\n getRootRef={multiRef(rootRef, getRootRef)}\n after={\n value ? (\n <IconButton\n hoverMode=\"opacity\"\n aria-label={clearFieldAriaLabel}\n onClick={clear}\n >\n <Icon16Clear />\n </IconButton>\n ) : (\n <IconButton\n hoverMode=\"opacity\"\n aria-label={showCalendarAriaLabel}\n onClick={openCalendar}\n >\n <Icon20CalendarOutline />\n </IconButton>\n )\n }\n disabled={disabled}\n onClick={callMultiple(handleFieldEnter, onClick)}\n onFocus={callMultiple(handleFieldEnter, onFocus)}\n {...props}\n >\n <input\n type=\"hidden\"\n name={name}\n value={\n value\n ? format(value, enableTime ? \"DD.MM.YYYYTHH:mm\" : \"DD.MM.YYYY\")\n : \"\"\n }\n />\n <span vkuiClass=\"DateInput__input\" onKeyDown={handleKeyDown}>\n <InputLike\n tabIndex={1}\n length={2}\n getRootRef={daysRef}\n index={0}\n onElementSelect={setFocusedElement}\n value={internalValue[0]}\n aria-label={changeDayAriaLabel}\n />\n <InputLikeDivider>.</InputLikeDivider>\n <InputLike\n length={2}\n getRootRef={monthsRef}\n index={1}\n onElementSelect={setFocusedElement}\n value={internalValue[1]}\n aria-label={changeMonthAriaLabel}\n />\n <InputLikeDivider>.</InputLikeDivider>\n <InputLike\n length={4}\n getRootRef={yearsRef}\n index={2}\n onElementSelect={setFocusedElement}\n value={internalValue[2]}\n aria-label={changeYearAriaLabel}\n />\n {enableTime && (\n <React.Fragment>\n <InputLikeDivider vkuiClass=\"DateInput__input-time-divider\">\n {\" \"}\n </InputLikeDivider>\n <InputLike\n length={2}\n getRootRef={hoursRef}\n index={3}\n onElementSelect={setFocusedElement}\n value={internalValue[3]}\n aria-label={changeHoursAriaLabel}\n />\n <InputLikeDivider>:</InputLikeDivider>\n <InputLike\n length={2}\n getRootRef={minutesRef}\n index={4}\n onElementSelect={setFocusedElement}\n value={internalValue[4]}\n aria-label={changeMinutesAriaLabel}\n />\n </React.Fragment>\n )}\n </span>\n {open && (\n <Popper\n targetRef={rootRef}\n offsetDistance={8}\n placement={calendarPlacement}\n >\n <Calendar\n value={value}\n onChange={onCalendarChange}\n enableTime={enableTime}\n disablePast={disablePast}\n disableFuture={disableFuture}\n shouldDisableDate={shouldDisableDate}\n onClose={closeCalendar}\n getRootRef={calendarRef}\n doneButtonText={doneButtonText}\n disablePickers={disablePickers}\n changeHoursAriaLabel={changeHoursAriaLabel}\n changeMinutesAriaLabel={changeMinutesAriaLabel}\n prevMonthAriaLabel={prevMonthAriaLabel}\n nextMonthAriaLabel={nextMonthAriaLabel}\n changeMonthAriaLabel={changeMonthAriaLabel}\n changeYearAriaLabel={changeYearAriaLabel}\n changeDayAriaLabel={changeDayAriaLabel}\n showNeighboringMonth={showNeighboringMonth}\n size={size}\n viewDate={viewDate}\n onHeaderChange={onHeaderChange}\n onNextMonth={onNextMonth}\n onPrevMonth={onPrevMonth}\n prevMonthIcon={prevMonthIcon}\n nextMonthIcon={nextMonthIcon}\n />\n </Popper>\n )}\n </FormField>\n );\n};\n"],"file":"DateInput.js"}
|
|
@@ -3,7 +3,7 @@ import { CalendarRangeProps } from "../CalendarRange/CalendarRange";
|
|
|
3
3
|
import { Placement } from "../Popper/Popper";
|
|
4
4
|
import { HasRootRef } from "../../types";
|
|
5
5
|
import "./DateRangeInput.css";
|
|
6
|
-
export interface DateRangeInputProps extends Omit<React.InputHTMLAttributes<HTMLDivElement>, "value" | "onChange">, Pick<CalendarRangeProps, "disablePast" | "disableFuture" | "shouldDisableDate" | "onChange" | "value" | "weekStartsOn" | "disablePickers" | "prevMonthAriaLabel" | "nextMonthAriaLabel" | "changeMonthAriaLabel" | "changeYearAriaLabel" | "changeDayAriaLabel">, HasRootRef<HTMLDivElement> {
|
|
6
|
+
export interface DateRangeInputProps extends Omit<React.InputHTMLAttributes<HTMLDivElement>, "value" | "onChange">, Pick<CalendarRangeProps, "disablePast" | "disableFuture" | "shouldDisableDate" | "onChange" | "value" | "weekStartsOn" | "disablePickers" | "prevMonthAriaLabel" | "nextMonthAriaLabel" | "changeMonthAriaLabel" | "changeYearAriaLabel" | "changeDayAriaLabel" | "prevMonthIcon" | "nextMonthIcon">, HasRootRef<HTMLDivElement> {
|
|
7
7
|
calendarPlacement?: Placement;
|
|
8
8
|
closeOnChange?: boolean;
|
|
9
9
|
clearFieldAriaLabel?: string;
|
|
@@ -43,7 +43,7 @@ var _InputLikeDivider = require("../InputLike/InputLikeDivider");
|
|
|
43
43
|
|
|
44
44
|
var _callMultiple = require("../../lib/callMultiple");
|
|
45
45
|
|
|
46
|
-
var _excluded = ["shouldDisableDate", "disableFuture", "disablePast", "value", "onChange", "calendarPlacement", "style", "className", "closeOnChange", "disablePickers", "getRootRef", "name", "autoFocus", "disabled", "onClick", "onFocus", "prevMonthAriaLabel", "nextMonthAriaLabel", "changeDayAriaLabel", "changeMonthAriaLabel", "changeYearAriaLabel", "changeStartDayAriaLabel", "changeStartMonthAriaLabel", "changeStartYearAriaLabel", "changeEndDayAriaLabel", "changeEndMonthAriaLabel", "changeEndYearAriaLabel", "clearFieldAriaLabel", "showCalendarAriaLabel"];
|
|
46
|
+
var _excluded = ["shouldDisableDate", "disableFuture", "disablePast", "value", "onChange", "calendarPlacement", "style", "className", "closeOnChange", "disablePickers", "getRootRef", "name", "autoFocus", "disabled", "onClick", "onFocus", "prevMonthAriaLabel", "nextMonthAriaLabel", "changeDayAriaLabel", "changeMonthAriaLabel", "changeYearAriaLabel", "changeStartDayAriaLabel", "changeStartMonthAriaLabel", "changeStartYearAriaLabel", "changeEndDayAriaLabel", "changeEndMonthAriaLabel", "changeEndYearAriaLabel", "clearFieldAriaLabel", "showCalendarAriaLabel", "prevMonthIcon", "nextMonthIcon"];
|
|
47
47
|
|
|
48
48
|
var elementsConfig = function elementsConfig(index) {
|
|
49
49
|
var length = 2;
|
|
@@ -134,6 +134,8 @@ var DateRangeInput = function DateRangeInput(_ref) {
|
|
|
134
134
|
clearFieldAriaLabel = _ref$clearFieldAriaLa === void 0 ? "Очистить поле" : _ref$clearFieldAriaLa,
|
|
135
135
|
_ref$showCalendarAria = _ref.showCalendarAriaLabel,
|
|
136
136
|
showCalendarAriaLabel = _ref$showCalendarAria === void 0 ? "Показать календарь" : _ref$showCalendarAria,
|
|
137
|
+
prevMonthIcon = _ref.prevMonthIcon,
|
|
138
|
+
nextMonthIcon = _ref.nextMonthIcon,
|
|
137
139
|
props = (0, _objectWithoutProperties2.default)(_ref, _excluded);
|
|
138
140
|
var daysStartRef = React.useRef(null);
|
|
139
141
|
var monthsStartRef = React.useRef(null);
|
|
@@ -302,7 +304,9 @@ var DateRangeInput = function DateRangeInput(_ref) {
|
|
|
302
304
|
nextMonthAriaLabel: nextMonthAriaLabel,
|
|
303
305
|
changeMonthAriaLabel: changeMonthAriaLabel,
|
|
304
306
|
changeYearAriaLabel: changeYearAriaLabel,
|
|
305
|
-
changeDayAriaLabel: changeDayAriaLabel
|
|
307
|
+
changeDayAriaLabel: changeDayAriaLabel,
|
|
308
|
+
prevMonthIcon: prevMonthIcon,
|
|
309
|
+
nextMonthIcon: nextMonthIcon
|
|
306
310
|
})));
|
|
307
311
|
};
|
|
308
312
|
|