@skbkontur/react-ui 4.16.0 → 4.17.0-datepicker.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/CHANGELOG.md +23 -149
- package/LICENSE +21 -21
- package/cjs/components/Calendar/Calendar.d.ts +62 -3
- package/cjs/components/Calendar/Calendar.js +122 -37
- package/cjs/components/Calendar/Calendar.js.map +1 -1
- package/cjs/components/Calendar/Calendar.md +112 -0
- package/cjs/components/Calendar/Calendar.styles.js +1 -1
- package/cjs/components/Calendar/Calendar.styles.js.map +1 -1
- package/cjs/components/Calendar/CalendarContext.d.ts +17 -0
- package/cjs/components/Calendar/CalendarContext.js +27 -0
- package/cjs/components/Calendar/CalendarContext.js.map +1 -0
- package/cjs/components/Calendar/CalendarDateShape.d.ts +2 -2
- package/cjs/components/Calendar/CalendarDateShape.js +1 -1
- package/cjs/components/Calendar/CalendarDateShape.js.map +1 -1
- package/cjs/components/Calendar/CalendarUtils.d.ts +9 -0
- package/cjs/components/Calendar/CalendarUtils.js +13 -3
- package/cjs/components/Calendar/CalendarUtils.js.map +1 -1
- package/cjs/components/Calendar/DayCellView.d.ts +27 -12
- package/cjs/components/Calendar/DayCellView.js +116 -25
- package/cjs/components/Calendar/DayCellView.js.map +1 -1
- package/cjs/components/Calendar/DayCellView.styles.d.ts +5 -0
- package/cjs/components/Calendar/DayCellView.styles.js +46 -12
- package/cjs/components/Calendar/DayCellView.styles.js.map +1 -1
- package/cjs/components/Calendar/Month.d.ts +1 -10
- package/cjs/components/Calendar/Month.js +15 -76
- package/cjs/components/Calendar/Month.js.map +1 -1
- package/cjs/components/Calendar/MonthView.d.ts +0 -3
- package/cjs/components/Calendar/MonthView.js +15 -6
- package/cjs/components/Calendar/MonthView.js.map +1 -1
- package/cjs/components/Calendar/MonthView.styles.js +1 -1
- package/cjs/components/Calendar/MonthView.styles.js.map +1 -1
- package/cjs/components/Calendar/MonthViewModel.js +4 -3
- package/cjs/components/Calendar/MonthViewModel.js.map +1 -1
- package/cjs/components/Calendar/config.js +6 -3
- package/cjs/components/Calendar/config.js.map +1 -1
- package/cjs/components/Calendar/index.d.ts +1 -0
- package/cjs/components/Calendar/index.js.map +1 -1
- package/cjs/components/DatePicker/DatePicker.d.ts +3 -1
- package/cjs/components/DatePicker/DatePicker.js +9 -2
- package/cjs/components/DatePicker/DatePicker.js.map +1 -1
- package/cjs/components/DatePicker/DatePicker.md +24 -1
- package/cjs/components/DatePicker/DatePickerHelpers.js +2 -1
- package/cjs/components/DatePicker/DatePickerHelpers.js.map +1 -1
- package/cjs/components/Gapped/Gapped.md +43 -43
- package/cjs/components/Hint/Hint.js +2 -1
- package/cjs/components/Hint/Hint.js.map +1 -1
- package/cjs/components/Kebab/Kebab.js +1 -1
- package/cjs/components/Kebab/Kebab.js.map +1 -1
- package/cjs/components/Paging/Paging.js +1 -1
- package/cjs/components/Paging/Paging.js.map +1 -1
- package/cjs/components/Paging/Paging.styles.js +2 -1
- package/cjs/components/Paging/Paging.styles.js.map +1 -1
- package/cjs/components/RadioGroup/RadioGroup.md +43 -43
- package/cjs/components/Token/Token.md +112 -112
- package/cjs/hooks/usePrevious.d.ts +1 -0
- package/cjs/hooks/usePrevious.js +9 -0
- package/cjs/hooks/usePrevious.js.map +1 -0
- package/cjs/internal/DateSelect/locale/locales/en.js +2 -1
- package/cjs/internal/DateSelect/locale/locales/en.js.map +1 -1
- package/cjs/internal/DateSelect/locale/locales/ru.js +2 -1
- package/cjs/internal/DateSelect/locale/locales/ru.js.map +1 -1
- package/cjs/internal/DateSelect/locale/types.d.ts +1 -0
- package/cjs/internal/NativeDateInput/utils.js +3 -2
- package/cjs/internal/NativeDateInput/utils.js.map +1 -1
- package/cjs/internal/ThemeShowcase/ThemeShowcase.md +13 -13
- package/cjs/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
- package/cjs/internal/themes/DefaultTheme.d.ts +3 -0
- package/cjs/internal/themes/DefaultTheme.js +10 -3
- package/cjs/internal/themes/DefaultTheme.js.map +1 -1
- package/cjs/internal/themes/Theme2022.d.ts +4 -0
- package/cjs/internal/themes/Theme2022.js +11 -2
- package/cjs/internal/themes/Theme2022.js.map +1 -1
- package/cjs/internal/themes/Theme2022Dark.d.ts +5 -0
- package/cjs/internal/themes/Theme2022Dark.js +6 -1
- package/cjs/internal/themes/Theme2022Dark.js.map +1 -1
- package/cjs/lib/date/InternalDate.d.ts +2 -0
- package/cjs/lib/date/InternalDate.js +8 -1
- package/cjs/lib/date/InternalDate.js.map +1 -1
- package/cjs/lib/date/InternalDateTransformer.d.ts +2 -0
- package/cjs/lib/date/InternalDateTransformer.js +15 -0
- package/cjs/lib/date/InternalDateTransformer.js.map +1 -1
- package/cjs/lib/date/InternalDateValidator.js +2 -1
- package/cjs/lib/date/InternalDateValidator.js.map +1 -1
- package/cjs/lib/locale/constants.d.ts +3 -0
- package/cjs/lib/locale/constants.js +6 -2
- package/cjs/lib/locale/constants.js.map +1 -1
- package/components/Calendar/Calendar/Calendar.js +86 -65
- package/components/Calendar/Calendar/Calendar.js.map +1 -1
- package/components/Calendar/Calendar.d.ts +62 -3
- package/components/Calendar/Calendar.md +112 -0
- package/components/Calendar/Calendar.styles/Calendar.styles.js +1 -1
- package/components/Calendar/Calendar.styles/Calendar.styles.js.map +1 -1
- package/components/Calendar/CalendarContext/CalendarContext.js +13 -0
- package/components/Calendar/CalendarContext/CalendarContext.js.map +1 -0
- package/components/Calendar/CalendarContext/package.json +6 -0
- package/components/Calendar/CalendarContext.d.ts +17 -0
- package/components/Calendar/CalendarDateShape/CalendarDateShape.js +1 -1
- package/components/Calendar/CalendarDateShape/CalendarDateShape.js.map +1 -1
- package/components/Calendar/CalendarDateShape.d.ts +2 -2
- package/components/Calendar/CalendarUtils/CalendarUtils.js +7 -0
- package/components/Calendar/CalendarUtils/CalendarUtils.js.map +1 -1
- package/components/Calendar/CalendarUtils.d.ts +9 -0
- package/components/Calendar/DayCellView/DayCellView.js +95 -32
- package/components/Calendar/DayCellView/DayCellView.js.map +1 -1
- package/components/Calendar/DayCellView.d.ts +27 -12
- package/components/Calendar/DayCellView.styles/DayCellView.styles.js +22 -7
- package/components/Calendar/DayCellView.styles/DayCellView.styles.js.map +1 -1
- package/components/Calendar/DayCellView.styles.d.ts +5 -0
- package/components/Calendar/Month/Month.js +11 -77
- package/components/Calendar/Month/Month.js.map +1 -1
- package/components/Calendar/Month.d.ts +1 -10
- package/components/Calendar/MonthView/MonthView.js +17 -2
- package/components/Calendar/MonthView/MonthView.js.map +1 -1
- package/components/Calendar/MonthView.d.ts +0 -3
- package/components/Calendar/MonthView.styles/MonthView.styles.js +1 -1
- package/components/Calendar/MonthView.styles/MonthView.styles.js.map +1 -1
- package/components/Calendar/MonthViewModel/MonthViewModel.js +4 -3
- package/components/Calendar/MonthViewModel/MonthViewModel.js.map +1 -1
- package/components/Calendar/config/config.js +4 -3
- package/components/Calendar/config/config.js.map +1 -1
- package/components/Calendar/index/index.js +2 -1
- package/components/Calendar/index/index.js.map +1 -1
- package/components/Calendar/index.d.ts +1 -0
- package/components/DatePicker/DatePicker/DatePicker.js +7 -2
- package/components/DatePicker/DatePicker/DatePicker.js.map +1 -1
- package/components/DatePicker/DatePicker.d.ts +3 -1
- package/components/DatePicker/DatePicker.md +24 -1
- package/components/DatePicker/DatePickerHelpers/DatePickerHelpers.js +2 -1
- package/components/DatePicker/DatePickerHelpers/DatePickerHelpers.js.map +1 -1
- package/components/Gapped/Gapped.md +43 -43
- package/components/Hint/Hint/Hint.js +2 -1
- package/components/Hint/Hint/Hint.js.map +1 -1
- package/components/Kebab/Kebab/Kebab.js +1 -1
- package/components/Kebab/Kebab/Kebab.js.map +1 -1
- package/components/Paging/Paging/Paging.js +1 -1
- package/components/Paging/Paging/Paging.js.map +1 -1
- package/components/Paging/Paging.styles/Paging.styles.js +1 -1
- package/components/Paging/Paging.styles/Paging.styles.js.map +1 -1
- package/components/RadioGroup/RadioGroup.md +43 -43
- package/components/Token/Token.md +112 -112
- package/hooks/usePrevious/package.json +6 -0
- package/hooks/usePrevious/usePrevious.js +8 -0
- package/hooks/usePrevious/usePrevious.js.map +1 -0
- package/hooks/usePrevious.d.ts +1 -0
- package/internal/DateSelect/locale/locales/en/en.js +2 -1
- package/internal/DateSelect/locale/locales/en/en.js.map +1 -1
- package/internal/DateSelect/locale/locales/ru/ru.js +2 -1
- package/internal/DateSelect/locale/locales/ru/ru.js.map +1 -1
- package/internal/DateSelect/locale/types.d.ts +1 -0
- package/internal/NativeDateInput/utils/utils.js +2 -1
- package/internal/NativeDateInput/utils/utils.js.map +1 -1
- package/internal/ThemeShowcase/ThemeShowcase.md +13 -13
- package/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
- package/internal/themes/DefaultTheme/DefaultTheme.js +13 -1
- package/internal/themes/DefaultTheme/DefaultTheme.js.map +1 -1
- package/internal/themes/DefaultTheme.d.ts +3 -0
- package/internal/themes/Theme2022/Theme2022.js +11 -3
- package/internal/themes/Theme2022/Theme2022.js.map +1 -1
- package/internal/themes/Theme2022.d.ts +4 -0
- package/internal/themes/Theme2022Dark/Theme2022Dark.js +9 -4
- package/internal/themes/Theme2022Dark/Theme2022Dark.js.map +1 -1
- package/internal/themes/Theme2022Dark.d.ts +5 -0
- package/lib/date/InternalDate/InternalDate.js +7 -1
- package/lib/date/InternalDate/InternalDate.js.map +1 -1
- package/lib/date/InternalDate.d.ts +2 -0
- package/lib/date/InternalDateTransformer/InternalDateTransformer.js +19 -0
- package/lib/date/InternalDateTransformer/InternalDateTransformer.js.map +1 -1
- package/lib/date/InternalDateTransformer.d.ts +2 -0
- package/lib/date/InternalDateValidator/InternalDateValidator.js +6 -1
- package/lib/date/InternalDateValidator/InternalDateValidator.js.map +1 -1
- package/lib/locale/constants/constants.js +4 -1
- package/lib/locale/constants/constants.js.map +1 -1
- package/lib/locale/constants.d.ts +3 -0
- package/package.json +2 -5
|
@@ -4,13 +4,13 @@ var _DateSelect = require("../../internal/DateSelect");
|
|
|
4
4
|
var _ThemeContext = require("../../lib/theming/ThemeContext");
|
|
5
5
|
var ColorFunctions = _interopRequireWildcard(require("../../lib/styles/ColorFunctions"));
|
|
6
6
|
var _Emotion = require("../../lib/theming/Emotion");
|
|
7
|
+
var _usePrevious = require("../../hooks/usePrevious");
|
|
7
8
|
|
|
8
9
|
var _MonthView = require("./MonthView.styles");
|
|
9
10
|
var _config = require("./config");
|
|
10
11
|
var CDS = _interopRequireWildcard(require("./CalendarDateShape"));
|
|
11
|
-
var _Calendar = require("./Calendar");
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
var _Calendar = require("./Calendar");
|
|
13
|
+
var _CalendarContext = require("./CalendarContext");function _getRequireWildcardCache(nodeInterop) {if (typeof WeakMap !== "function") return null;var cacheBabelInterop = new WeakMap();var cacheNodeInterop = new WeakMap();return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) {return nodeInterop ? cacheNodeInterop : cacheBabelInterop;})(nodeInterop);}function _interopRequireWildcard(obj, nodeInterop) {if (!nodeInterop && obj && obj.__esModule) {return obj;}if (obj === null || typeof obj !== "object" && typeof obj !== "function") {return { default: obj };}var cache = _getRequireWildcardCache(nodeInterop);if (cache && cache.has(obj)) {return cache.get(obj);}var newObj = {};var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;for (var key in obj) {if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;if (desc && (desc.get || desc.set)) {Object.defineProperty(newObj, key, desc);} else {newObj[key] = obj[key];}}}newObj.default = obj;if (cache) {cache.set(obj, newObj);}return newObj;}
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
|
|
@@ -29,6 +29,7 @@ var _Calendar = require("./Calendar");function _getRequireWildcardCache(nodeInte
|
|
|
29
29
|
|
|
30
30
|
function MonthView(props) {var _cx;
|
|
31
31
|
var theme = (0, _react.useContext)(_ThemeContext.ThemeContext);
|
|
32
|
+
var _useContext = (0, _react.useContext)(_CalendarContext.CalendarContext),minDate = _useContext.minDate,maxDate = _useContext.maxDate,onStuckMonth = _useContext.onStuckMonth;
|
|
32
33
|
|
|
33
34
|
var
|
|
34
35
|
children =
|
|
@@ -42,9 +43,7 @@ function MonthView(props) {var _cx;
|
|
|
42
43
|
|
|
43
44
|
|
|
44
45
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
props.children,height = props.height,isFirstInYear = props.isFirstInYear,isLastInYear = props.isLastInYear,maxDate = props.maxDate,minDate = props.minDate,month = props.month,top = props.top,year = props.year,onMonthSelect = props.onMonthSelect,onYearSelect = props.onYearSelect,monthSelectRef = props.monthSelectRef,yearSelectRef = props.yearSelectRef;
|
|
46
|
+
props.children,height = props.height,isFirstInYear = props.isFirstInYear,isLastInYear = props.isLastInYear,month = props.month,top = props.top,year = props.year,onMonthSelect = props.onMonthSelect,onYearSelect = props.onYearSelect,monthSelectRef = props.monthSelectRef,yearSelectRef = props.yearSelectRef;
|
|
48
47
|
|
|
49
48
|
var isTopNegative = top <= 0;
|
|
50
49
|
var isHeaderSticky = isTopNegative && height >= -top;
|
|
@@ -55,6 +54,16 @@ function MonthView(props) {var _cx;
|
|
|
55
54
|
var yearTop = isHeaderSticky && !isLastInYear ? -headerTop - top : 0;
|
|
56
55
|
var monthSelectDisabled = top > 40 || headerTop < 0 || headerTop >= height - (0, _config.themeConfig)(theme).MONTH_TITLE_HEIGHT;
|
|
57
56
|
var yearSelectDisabled = top > 40 || isLastInYear && top < -height + (0, _config.themeConfig)(theme).MONTH_TITLE_HEIGHT;
|
|
57
|
+
var prevMonthSelectDisabled = (0, _usePrevious.usePrevious)(monthSelectDisabled);
|
|
58
|
+
|
|
59
|
+
var monthInfo = {
|
|
60
|
+
month: month + 1,
|
|
61
|
+
year: year };
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
if (onStuckMonth && prevMonthSelectDisabled && !monthSelectDisabled) {
|
|
65
|
+
onStuckMonth(monthInfo);
|
|
66
|
+
}
|
|
58
67
|
|
|
59
68
|
var getMinMonth = function getMinMonth(value) {
|
|
60
69
|
var min = 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["MonthView.tsx"],"names":["MonthView","props","theme","ThemeContext","
|
|
1
|
+
{"version":3,"sources":["MonthView.tsx"],"names":["MonthView","props","theme","ThemeContext","CalendarContext","minDate","maxDate","onStuckMonth","children","height","isFirstInYear","isLastInYear","month","top","year","onMonthSelect","onYearSelect","monthSelectRef","yearSelectRef","isTopNegative","isHeaderSticky","headerTop","Math","min","MONTH_TITLE_HEIGHT","alpha","borderBottomColor","ColorFunctions","fade","calendarMonthTitleBorderBottomColor","isYearVisible","yearTop","monthSelectDisabled","yearSelectDisabled","prevMonthSelectDisabled","monthInfo","getMinMonth","value","i","CDS","isGreaterOrEqual","date","getMaxMonth","max","isLessOrEqual","CalendarDataTids","styles","header","headerSticky","monthTitle","headerMonth","undefined","headerYear"],"mappings":"qEAAA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oD;;;;;;;;;;;;;;;;;AAiBO,SAASA,SAAT,CAAmBC,KAAnB,EAA0C;AAC/C,MAAMC,KAAK,GAAG,uBAAWC,0BAAX,CAAd;AACA,oBAA2C,uBAAWC,gCAAX,CAA3C,CAAQC,OAAR,eAAQA,OAAR,CAAiBC,OAAjB,eAAiBA,OAAjB,CAA0BC,YAA1B,eAA0BA,YAA1B;;AAEA;AACEC,EAAAA,QADF;;;;;;;;;;;AAYIP,EAAAA,KAZJ,CACEO,QADF,CAEEC,MAFF,GAYIR,KAZJ,CAEEQ,MAFF,CAGEC,aAHF,GAYIT,KAZJ,CAGES,aAHF,CAIEC,YAJF,GAYIV,KAZJ,CAIEU,YAJF,CAKEC,KALF,GAYIX,KAZJ,CAKEW,KALF,CAMEC,GANF,GAYIZ,KAZJ,CAMEY,GANF,CAOEC,IAPF,GAYIb,KAZJ,CAOEa,IAPF,CAQEC,aARF,GAYId,KAZJ,CAQEc,aARF,CASEC,YATF,GAYIf,KAZJ,CASEe,YATF,CAUEC,cAVF,GAYIhB,KAZJ,CAUEgB,cAVF,CAWEC,aAXF,GAYIjB,KAZJ,CAWEiB,aAXF;;AAcA,MAAMC,aAAa,GAAGN,GAAG,IAAI,CAA7B;AACA,MAAMO,cAAc,GAAGD,aAAa,IAAIV,MAAM,IAAI,CAACI,GAAnD;AACA,MAAMQ,SAAS,GAAGD,cAAc,GAAGE,IAAI,CAACC,GAAL,CAAS,CAACV,GAAV,EAAeJ,MAAM,GAAG,yBAAYP,KAAZ,EAAmBsB,kBAA3C,CAAH,GAAoE,CAApG;AACA,MAAMC,KAAK,GAAGL,cAAc,GAAG,CAACX,MAAM,GAAGI,GAAT,GAAe,yBAAYX,KAAZ,EAAmBsB,kBAAnC,IAAyD,EAA5D,GAAiE,CAA7F;AACA,MAAME,iBAAiB,GAAGC,cAAc,CAACC,IAAf,CAAoB1B,KAAK,CAAC2B,mCAA1B,EAA+DJ,KAA/D,CAA1B;AACA,MAAMK,aAAa,GAAGpB,aAAa,IAAIU,cAAvC;AACA,MAAMW,OAAO,GAAGX,cAAc,IAAI,CAACT,YAAnB,GAAkC,CAACU,SAAD,GAAaR,GAA/C,GAAqD,CAArE;AACA,MAAMmB,mBAAmB,GAAGnB,GAAG,GAAG,EAAN,IAAYQ,SAAS,GAAG,CAAxB,IAA6BA,SAAS,IAAIZ,MAAM,GAAG,yBAAYP,KAAZ,EAAmBsB,kBAAlG;AACA,MAAMS,kBAAkB,GAAGpB,GAAG,GAAG,EAAN,IAAaF,YAAY,IAAIE,GAAG,GAAG,CAACJ,MAAD,GAAU,yBAAYP,KAAZ,EAAmBsB,kBAA3F;AACA,MAAMU,uBAAuB,GAAG,8BAAYF,mBAAZ,CAAhC;;AAEA,MAAMG,SAAS,GAAG;AAChBvB,IAAAA,KAAK,EAAEA,KAAK,GAAG,CADC;AAEhBE,IAAAA,IAAI,EAAJA,IAFgB,EAAlB;;;AAKA,MAAIP,YAAY,IAAI2B,uBAAhB,IAA2C,CAACF,mBAAhD,EAAqE;AACnEzB,IAAAA,YAAY,CAAC4B,SAAD,CAAZ;AACD;;AAED,MAAMC,WAAW,GAAG,SAAdA,WAAc,CAACC,KAAD,EAAmB;AACrC,QAAId,GAAG,GAAG,CAAV;AACA,SAAK,IAAIe,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,EAApB,EAAwB,EAAEA,CAA1B,EAA6B;AAC3B,UAAIjC,OAAO,IAAIkC,GAAG,CAACC,gBAAJ,CAAqB,EAAEC,IAAI,EAAE,EAAR,EAAY7B,KAAK,EAAE0B,CAAnB,EAAsBxB,IAAI,EAAEuB,KAA5B,EAArB,EAA0DhC,OAA1D,CAAf,EAAmF;AACjFkB,QAAAA,GAAG,GAAGe,CAAN;AACA;AACD;AACF;AACD,WAAOf,GAAP;AACD,GATD;;AAWA,MAAMmB,WAAW,GAAG,SAAdA,WAAc,CAACL,KAAD,EAAmB;AACrC,QAAIM,GAAG,GAAG,EAAV;AACA,SAAK,IAAIL,CAAC,GAAG,EAAb,EAAiBA,CAAC,IAAI,CAAtB,EAAyB,EAAEA,CAA3B,EAA8B;AAC5B,UAAIhC,OAAO,IAAIiC,GAAG,CAACK,aAAJ,CAAkB,EAAEH,IAAI,EAAE,CAAR,EAAW7B,KAAK,EAAE0B,CAAlB,EAAqBxB,IAAI,EAAEuB,KAA3B,EAAlB,EAAsD/B,OAAtD,CAAf,EAA+E;AAC7EqC,QAAAA,GAAG,GAAGL,CAAN;AACA;AACD;AACF;AACD,WAAOK,GAAP;AACD,GATD;;AAWA;AACE,0CAAK,YAAUE,2BAAiBjC,KAAhC,EAAuC,SAAS,EAAEkC,kBAAOlC,KAAP,CAAaV,KAAb,CAAlD,EAAuE,KAAK,EAAE,EAAEW,GAAG,EAAHA,GAAF,EAA9E,EAAuF,GAAG,EAAED,KAAK,GAAG,GAAR,GAAcE,IAA1G;AACE;AACE,MAAA,KAAK,EAAE,EAAED,GAAG,EAAEQ,SAAP,EADT;AAEE,MAAA,SAAS,EAAE;AACRyB,wBAAOC,MAAP,EADQ,IACU,IADV;AAERD,wBAAOE,YAAP,CAAoB9C,KAApB,CAFQ,IAEqBkB,cAFrB,OAFb;;;AAOE,0CAAK,KAAK,EAAE,EAAEM,iBAAiB,EAAjBA,iBAAF,EAAZ,EAAmC,SAAS,EAAEoB,kBAAOG,UAAP,CAAkB/C,KAAlB,CAA9C;AACE,0CAAK,YAAU2C,2BAAiBK,WAAhC,EAA6C,SAAS,EAAEJ,kBAAOI,WAAP,CAAmBhD,KAAnB,CAAxD;AACE,iCAAC,sBAAD;AACE,MAAA,QAAQ,EAAE8B,mBADZ;AAEE,MAAA,KAAK,EAAE,EAFT;AAGE,MAAA,IAAI,EAAC,OAHP;AAIE,MAAA,KAAK,EAAEpB,KAJT;AAKE,MAAA,aAAa,EAAEG,aALjB;AAME,MAAA,GAAG,EAAE,CAACiB,mBAAD,GAAuBf,cAAvB,GAAwCkC,SAN/C;AAOE,MAAA,QAAQ,EAAEf,WAAW,CAACtB,IAAD,CAPvB;AAQE,MAAA,QAAQ,EAAE4B,WAAW,CAAC5B,IAAD,CARvB,GADF,CADF;;;AAaGgB,IAAAA,aAAa;AACZ,0CAAK,YAAUe,2BAAiBO,UAAhC,EAA4C,SAAS,EAAEN,kBAAOM,UAAP,CAAkBlD,KAAlB,CAAvD,EAAiF,KAAK,EAAE,EAAEW,GAAG,EAAEkB,OAAP,EAAxF;AACE,iCAAC,sBAAD;AACE,MAAA,QAAQ,EAAEE,kBADZ;AAEE,MAAA,KAAK,EAAE,EAFT;AAGE,MAAA,IAAI,EAAC,MAHP;AAIE,MAAA,KAAK,EAAEnB,IAJT;AAKE,MAAA,QAAQ,EAAET,OAAO,GAAGA,OAAO,CAACS,IAAX,GAAkBqC,SALrC;AAME,MAAA,QAAQ,EAAE7C,OAAO,GAAGA,OAAO,CAACQ,IAAX,GAAkBqC,SANrC;AAOE,MAAA,aAAa,EAAEnC,YAPjB;AAQE,MAAA,GAAG,EAAE,CAACiB,kBAAD,GAAsBf,aAAtB,GAAsCiC,SAR7C,GADF,CAdJ,CAPF,CADF;;;;;;AAqCG3C,IAAAA,QArCH,CADF;;;AAyCD","sourcesContent":["import React, { useContext } from 'react';\n\nimport { DateSelect } from '../../internal/DateSelect';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport * as ColorFunctions from '../../lib/styles/ColorFunctions';\nimport { cx } from '../../lib/theming/Emotion';\nimport { usePrevious } from '../../hooks/usePrevious';\n\nimport { styles } from './MonthView.styles';\nimport { themeConfig } from './config';\nimport * as CDS from './CalendarDateShape';\nimport { CalendarDataTids } from './Calendar';\nimport { CalendarContext } from './CalendarContext';\n\ninterface MonthViewProps {\n children: React.ReactNode;\n firstDayOffset: number;\n height: number;\n isFirstInYear?: boolean;\n isLastInYear?: boolean;\n month: number;\n top: number;\n year: number;\n onMonthSelect: (month: number) => void;\n onYearSelect: (month: number) => void;\n monthSelectRef: (select: DateSelect | null) => void;\n yearSelectRef: (select: DateSelect | null) => void;\n}\n\nexport function MonthView(props: MonthViewProps) {\n const theme = useContext(ThemeContext);\n const { minDate, maxDate, onStuckMonth } = useContext(CalendarContext);\n\n const {\n children,\n height,\n isFirstInYear,\n isLastInYear,\n month,\n top,\n year,\n onMonthSelect,\n onYearSelect,\n monthSelectRef,\n yearSelectRef,\n } = props;\n\n const isTopNegative = top <= 0;\n const isHeaderSticky = isTopNegative && height >= -top;\n const headerTop = isHeaderSticky ? Math.min(-top, height - themeConfig(theme).MONTH_TITLE_HEIGHT) : 0;\n const alpha = isHeaderSticky ? (height + top - themeConfig(theme).MONTH_TITLE_HEIGHT) / 10 : 1;\n const borderBottomColor = ColorFunctions.fade(theme.calendarMonthTitleBorderBottomColor, alpha);\n const isYearVisible = isFirstInYear || isHeaderSticky;\n const yearTop = isHeaderSticky && !isLastInYear ? -headerTop - top : 0;\n const monthSelectDisabled = top > 40 || headerTop < 0 || headerTop >= height - themeConfig(theme).MONTH_TITLE_HEIGHT;\n const yearSelectDisabled = top > 40 || (isLastInYear && top < -height + themeConfig(theme).MONTH_TITLE_HEIGHT);\n const prevMonthSelectDisabled = usePrevious(monthSelectDisabled);\n\n const monthInfo = {\n month: month + 1,\n year,\n };\n\n if (onStuckMonth && prevMonthSelectDisabled && !monthSelectDisabled) {\n onStuckMonth(monthInfo);\n }\n\n const getMinMonth = (value: number) => {\n let min = 0;\n for (let i = 0; i < 12; ++i) {\n if (minDate && CDS.isGreaterOrEqual({ date: 31, month: i, year: value }, minDate)) {\n min = i;\n break;\n }\n }\n return min;\n };\n\n const getMaxMonth = (value: number) => {\n let max = 11;\n for (let i = 11; i >= 0; --i) {\n if (maxDate && CDS.isLessOrEqual({ date: 1, month: i, year: value }, maxDate)) {\n max = i;\n break;\n }\n }\n return max;\n };\n\n return (\n <div data-tid={CalendarDataTids.month} className={styles.month(theme)} style={{ top }} key={month + '-' + year}>\n <div\n style={{ top: headerTop }}\n className={cx({\n [styles.header()]: true,\n [styles.headerSticky(theme)]: isHeaderSticky,\n })}\n >\n <div style={{ borderBottomColor }} className={styles.monthTitle(theme)}>\n <div data-tid={CalendarDataTids.headerMonth} className={styles.headerMonth(theme)}>\n <DateSelect\n disabled={monthSelectDisabled}\n width={85}\n type=\"month\"\n value={month}\n onValueChange={onMonthSelect}\n ref={!monthSelectDisabled ? monthSelectRef : undefined}\n minValue={getMinMonth(year)}\n maxValue={getMaxMonth(year)}\n />\n </div>\n {isYearVisible && (\n <div data-tid={CalendarDataTids.headerYear} className={styles.headerYear(theme)} style={{ top: yearTop }}>\n <DateSelect\n disabled={yearSelectDisabled}\n width={50}\n type=\"year\"\n value={year}\n minValue={minDate ? minDate.year : undefined}\n maxValue={maxDate ? maxDate.year : undefined}\n onValueChange={onYearSelect}\n ref={!yearSelectDisabled ? yearSelectRef : undefined}\n />\n </div>\n )}\n </div>\n </div>\n {children}\n </div>\n );\n}\n"]}
|
|
@@ -19,7 +19,7 @@ var styles = (0, _Emotion.memoizeStyle)({
|
|
|
19
19
|
},
|
|
20
20
|
|
|
21
21
|
month: function month(t) {
|
|
22
|
-
var width = parseInt(t.
|
|
22
|
+
var width = parseInt(t.calendarCellWidth) * 7;
|
|
23
23
|
return (0, _Emotion.css)(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteralLoose2.default)(["\n position: absolute;\n width: ", "px;\n "])),
|
|
24
24
|
|
|
25
25
|
width);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["MonthView.styles.ts"],"names":["styles","headerMonth","t","css","calendarMonthTitlePaddingTop","calendarMonthTitlePaddingBottom","headerYear","month","width","parseInt","
|
|
1
|
+
{"version":3,"sources":["MonthView.styles.ts"],"names":["styles","headerMonth","t","css","calendarMonthTitlePaddingTop","calendarMonthTitlePaddingBottom","headerYear","month","width","parseInt","calendarCellWidth","header","headerSticky","calendarMonthHeaderStickedBgColor","monthTitle","calendarMonthTitleBorderBottomColor","dateSelectFontWeight","calendarMonthTitleMarginX","calendarMonthTitleMarginBottom","calendarMonthTitleLineHeight","monthDayGrid","calendarCellLineHeight"],"mappings":"4QAAA,oD;;;AAGO,IAAMA,MAAM,GAAG,2BAAa;AACjCC,EAAAA,WADiC,uBACrBC,CADqB,EACX;AACpB,eAAOC,YAAP;;AAEaD,IAAAA,CAAC,CAACE,4BAFf,EAEiDF,CAAC,CAACG,+BAFnD;;AAID,GANgC;;AAQjCC,EAAAA,UARiC,sBAQtBJ,CARsB,EAQZ;AACnB,eAAOC,YAAP;;;;AAIaD,IAAAA,CAAC,CAACE,4BAJf,EAIiDF,CAAC,CAACG,+BAJnD;;AAMD,GAfgC;;AAiBjCE,EAAAA,KAjBiC,iBAiB3BL,CAjB2B,EAiBjB;AACd,QAAMM,KAAK,GAAGC,QAAQ,CAACP,CAAC,CAACQ,iBAAH,CAAR,GAAgC,CAA9C;AACA,eAAOP,YAAP;;AAEWK,IAAAA,KAFX;;AAID,GAvBgC;;AAyBjCG,EAAAA,MAzBiC,oBAyBxB;AACP,eAAOR,YAAP;;;AAGD,GA7BgC;;AA+BjCS,EAAAA,YA/BiC,wBA+BpBV,CA/BoB,EA+BV;AACrB,eAAOC,YAAP;AACsBD,IAAAA,CAAC,CAACW,iCADxB;;;AAID,GApCgC;;AAsCjCC,EAAAA,UAtCiC,sBAsCtBZ,CAtCsB,EAsCZ;AACnB,eAAOC,YAAP;AAC6BD,IAAAA,CAAC,CAACa,mCAD/B;AAEiBb,IAAAA,CAAC,CAACc,oBAFnB;AAGcd,IAAAA,CAAC,CAACe,yBAHhB,EAG6Cf,CAAC,CAACgB,8BAH/C;AAIiBhB,IAAAA,CAAC,CAACiB,4BAJnB;;AAMD,GA7CgC;;AA+CjCC,EAAAA,YA/CiC,wBA+CpBlB,CA/CoB,EA+CV;AACrB,eAAOC,YAAP;AACiBD,IAAAA,CAAC,CAACmB,sBADnB;;AAGD,GAnDgC,EAAb,CAAf,C","sourcesContent":["import { css, memoizeStyle } from '../../lib/theming/Emotion';\nimport { Theme } from '../../lib/theming/Theme';\n\nexport const styles = memoizeStyle({\n headerMonth(t: Theme) {\n return css`\n display: inline-block;\n padding: ${t.calendarMonthTitlePaddingTop} 0 ${t.calendarMonthTitlePaddingBottom};\n `;\n },\n\n headerYear(t: Theme) {\n return css`\n display: inline-block;\n position: absolute;\n right: 0;\n padding: ${t.calendarMonthTitlePaddingTop} 0 ${t.calendarMonthTitlePaddingBottom};\n `;\n },\n\n month(t: Theme) {\n const width = parseInt(t.calendarCellWidth) * 7;\n return css`\n position: absolute;\n width: ${width}px;\n `;\n },\n\n header() {\n return css`\n position: relative;\n `;\n },\n\n headerSticky(t: Theme) {\n return css`\n background-color: ${t.calendarMonthHeaderStickedBgColor};\n z-index: 2;\n `;\n },\n\n monthTitle(t: Theme) {\n return css`\n border-bottom: 1px solid ${t.calendarMonthTitleBorderBottomColor};\n font-weight: ${t.dateSelectFontWeight};\n margin: 0 ${t.calendarMonthTitleMarginX} ${t.calendarMonthTitleMarginBottom};\n line-height: ${t.calendarMonthTitleLineHeight};\n `;\n },\n\n monthDayGrid(t: Theme) {\n return css`\n line-height: ${t.calendarCellLineHeight};\n `;\n },\n});\n"]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";exports.__esModule = true;exports.MonthViewModel = void 0;var _memo = require("../../lib/memo");
|
|
2
2
|
|
|
3
3
|
|
|
4
|
+
var _CalendarUtils = require("./CalendarUtils");
|
|
4
5
|
var _config = require("./config");
|
|
5
6
|
var _DayCellViewModel = require("./DayCellViewModel");
|
|
6
7
|
|
|
@@ -48,8 +49,8 @@ MonthViewModel = /*#__PURE__*/function () {var _proto = MonthViewModel.prototype
|
|
|
48
49
|
|
|
49
50
|
|
|
50
51
|
getHeight = function getHeight(theme) {
|
|
51
|
-
var _themeConfig = (0, _config.themeConfig)(theme),
|
|
52
|
-
return getMonthHeight(this.daysCount, this.offset,
|
|
52
|
+
var _themeConfig = (0, _config.themeConfig)(theme),DAY_HEIGHT = _themeConfig.DAY_HEIGHT,MONTH_TITLE_OFFSET_HEIGHT = _themeConfig.MONTH_TITLE_OFFSET_HEIGHT,MONTH_BOTTOM_MARGIN = _themeConfig.MONTH_BOTTOM_MARGIN;
|
|
53
|
+
return getMonthHeight(this.daysCount, this.offset, DAY_HEIGHT, MONTH_TITLE_OFFSET_HEIGHT, MONTH_BOTTOM_MARGIN);
|
|
53
54
|
};
|
|
54
55
|
|
|
55
56
|
function MonthViewModel(month, year) {
|
|
@@ -75,7 +76,7 @@ var getMonthHeight = (0, _memo.memo)(
|
|
|
75
76
|
function (daysCount, offset, dayHeight, titleHeight, marginBottom) {return (
|
|
76
77
|
Math.ceil((daysCount + offset) / 7) * dayHeight + titleHeight + marginBottom);});
|
|
77
78
|
|
|
78
|
-
var getMonthsDays = (0, _memo.memo)(function (month, year) {return new Date(year, month
|
|
79
|
+
var getMonthsDays = (0, _memo.memo)(function (month, year) {return new Date(year, (0, _CalendarUtils.getMonthInHumanFormat)(month), 0).getDate();});
|
|
79
80
|
|
|
80
81
|
var getMonthOffset = (0, _memo.memo)(function (month, year) {
|
|
81
82
|
var day = new Date(year, month, 1).getDay() - 1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["MonthViewModel.ts"],"names":["getCurrentYear","month","year","Math","ceil","floor","getCurrentMonth","MonthViewModel","getHeight","theme","
|
|
1
|
+
{"version":3,"sources":["MonthViewModel.ts"],"names":["getCurrentYear","month","year","Math","ceil","floor","getCurrentMonth","MonthViewModel","getHeight","theme","DAY_HEIGHT","MONTH_TITLE_OFFSET_HEIGHT","MONTH_BOTTOM_MARGIN","getMonthHeight","daysCount","offset","currentYear","currentMonth","getMonthsDays","getMonthOffset","isLastInYear","isFirstInYear","days","Array","from","length","_","i","isWeekend","DayCellViewModel","create","dayHeight","titleHeight","marginBottom","Date","getDate","day","getDay"],"mappings":"uEAAA;;;AAGA;AACA;AACA;;AAEA,IAAMA,cAAc,GAAG,SAAjBA,cAAiB,CAACC,KAAD,EAAgBC,IAAhB,EAAiC;AACtD,MAAID,KAAK,GAAG,CAAZ,EAAe;AACb,WAAOC,IAAI,GAAGC,IAAI,CAACC,IAAL,CAAU,CAACH,KAAD,GAAS,EAAnB,CAAd;AACD;;AAED,MAAIA,KAAK,GAAG,EAAZ,EAAgB;AACd,WAAOC,IAAI,GAAGC,IAAI,CAACE,KAAL,CAAWJ,KAAK,GAAG,EAAnB,CAAd;AACD;;AAED,SAAOC,IAAP;AACD,CAVD;;AAYA,IAAMI,eAAe,GAAG,SAAlBA,eAAkB,CAACL,KAAD,EAAmB;AACzC,MAAIA,KAAK,GAAG,CAAZ,EAAe;AACb,WAAO,KAAMA,KAAK,GAAG,EAArB;AACD;;AAED,MAAIA,KAAK,GAAG,EAAZ,EAAgB;AACd,WAAOA,KAAK,GAAG,EAAf;AACD;;AAED,SAAOA,KAAP;AACD,CAVD,C;;AAYaM,c;;;;;;;;;;;;;;;;;;;AAmBJC,EAAAA,S,GAAP,mBAAiBC,KAAjB,EAAuC;AACrC,uBAAuE,yBAAYA,KAAZ,CAAvE,CAAQC,UAAR,gBAAQA,UAAR,CAAoBC,yBAApB,gBAAoBA,yBAApB,CAA+CC,mBAA/C,gBAA+CA,mBAA/C;AACA,WAAOC,cAAc,CAAC,KAAKC,SAAN,EAAiB,KAAKC,MAAtB,EAA8BL,UAA9B,EAA0CC,yBAA1C,EAAqEC,mBAArE,CAArB;AACD,G;;AAED,0BAAoBX,KAApB,EAAmCC,IAAnC,EAAiD;AAC/C,QAAMc,WAAW,GAAGhB,cAAc,CAACC,KAAD,EAAQC,IAAR,CAAlC;AACA,QAAMe,YAAY,GAAGX,eAAe,CAACL,KAAD,CAApC;;AAEA,QAAMa,SAAS,GAAGI,aAAa,CAACD,YAAD,EAAeD,WAAf,CAA/B;AACA,QAAMD,MAAM,GAAGI,cAAc,CAACF,YAAD,EAAeD,WAAf,CAA7B;AACA,SAAKF,SAAL,GAAiBA,SAAjB;AACA,SAAKC,MAAL,GAAcA,MAAd;AACA,SAAKd,KAAL,GAAagB,YAAb;AACA,SAAKf,IAAL,GAAYc,WAAZ;AACA,SAAKI,YAAL,GAAoBH,YAAY,KAAK,EAArC;AACA,SAAKI,aAAL,GAAqBJ,YAAY,KAAK,CAAtC;AACA,SAAKK,IAAL,GAAYC,KAAK,CAACC,IAAN,CAAW,EAAEC,MAAM,EAAEX,SAAV,EAAX,EAAkC,UAACY,CAAD,EAAIC,CAAJ,EAAU;AACtD,UAAMC,SAAS,GAAG,CAACD,CAAC,GAAGR,cAAc,CAACF,YAAD,EAAeD,WAAf,CAAnB,IAAkD,CAAlD,IAAuD,CAAzE;AACA,aAAOa,mCAAiBC,MAAjB,CAAwBH,CAAC,GAAG,CAA5B,EAA+BV,YAA/B,EAA6CD,WAA7C,EAA0DY,SAA1D,CAAP;AACD,KAHW,CAAZ;AAID,G,kEAxCUrB,c,CACGuB,M,GAAS,gBAAK,UAAC7B,KAAD,EAAgBC,IAAhB,UAAiD,IAAIK,cAAJ,CAAmBN,KAAnB,EAA0BC,IAA1B,CAAjD,EAAL,C;;;AA0CzB,IAAMW,cAAc,GAAG;AACrB,UAACC,SAAD,EAAoBC,MAApB,EAAoCgB,SAApC,EAAuDC,WAAvD,EAA4EC,YAA5E;AACE9B,IAAAA,IAAI,CAACC,IAAL,CAAU,CAACU,SAAS,GAAGC,MAAb,IAAuB,CAAjC,IAAsCgB,SAAtC,GAAkDC,WAAlD,GAAgEC,YADlE,GADqB,CAAvB;;AAIA,IAAMf,aAAa,GAAG,gBAAK,UAACjB,KAAD,EAAgBC,IAAhB,UAAiC,IAAIgC,IAAJ,CAAShC,IAAT,EAAe,0CAAsBD,KAAtB,CAAf,EAA6C,CAA7C,EAAgDkC,OAAhD,EAAjC,EAAL,CAAtB;;AAEA,IAAMhB,cAAc,GAAG,gBAAK,UAAClB,KAAD,EAAgBC,IAAhB,EAAiC;AAC3D,MAAMkC,GAAG,GAAG,IAAIF,IAAJ,CAAShC,IAAT,EAAeD,KAAf,EAAsB,CAAtB,EAAyBoC,MAAzB,KAAoC,CAAhD;AACA,MAAID,GAAG,KAAK,CAAC,CAAb,EAAgB;AACd,WAAO,CAAP;AACD;AACD,SAAOA,GAAP;AACD,CANsB,CAAvB","sourcesContent":["import { memo } from '../../lib/memo';\nimport { Theme } from '../../lib/theming/Theme';\n\nimport { getMonthInHumanFormat } from './CalendarUtils';\nimport { themeConfig } from './config';\nimport { DayCellViewModel } from './DayCellViewModel';\n\nconst getCurrentYear = (month: number, year: number) => {\n if (month < 0) {\n return year - Math.ceil(-month / 12);\n }\n\n if (month > 11) {\n return year + Math.floor(month / 12);\n }\n\n return year;\n};\n\nconst getCurrentMonth = (month: number) => {\n if (month < 0) {\n return 12 + (month % 12);\n }\n\n if (month > 11) {\n return month % 12;\n }\n\n return month;\n};\n\nexport class MonthViewModel {\n public static create = memo((month: number, year: number): MonthViewModel => new MonthViewModel(month, year));\n\n public readonly daysCount: number;\n\n public readonly offset: number;\n\n public readonly month: number;\n\n public readonly year: number;\n\n public readonly days: DayCellViewModel[];\n\n // FIXME: shouldbe readonly\n public isLastInYear: boolean;\n\n // FIXME: shouldbe readonly\n public isFirstInYear: boolean;\n\n public getHeight(theme: Theme): number {\n const { DAY_HEIGHT, MONTH_TITLE_OFFSET_HEIGHT, MONTH_BOTTOM_MARGIN } = themeConfig(theme);\n return getMonthHeight(this.daysCount, this.offset, DAY_HEIGHT, MONTH_TITLE_OFFSET_HEIGHT, MONTH_BOTTOM_MARGIN);\n }\n\n private constructor(month: number, year: number) {\n const currentYear = getCurrentYear(month, year);\n const currentMonth = getCurrentMonth(month);\n\n const daysCount = getMonthsDays(currentMonth, currentYear);\n const offset = getMonthOffset(currentMonth, currentYear);\n this.daysCount = daysCount;\n this.offset = offset;\n this.month = currentMonth;\n this.year = currentYear;\n this.isLastInYear = currentMonth === 11;\n this.isFirstInYear = currentMonth === 0;\n this.days = Array.from({ length: daysCount }, (_, i) => {\n const isWeekend = (i + getMonthOffset(currentMonth, currentYear)) % 7 >= 5;\n return DayCellViewModel.create(i + 1, currentMonth, currentYear, isWeekend);\n });\n }\n}\n\nconst getMonthHeight = memo(\n (daysCount: number, offset: number, dayHeight: number, titleHeight: number, marginBottom: number) =>\n Math.ceil((daysCount + offset) / 7) * dayHeight + titleHeight + marginBottom,\n);\nconst getMonthsDays = memo((month: number, year: number) => new Date(year, getMonthInHumanFormat(month), 0).getDate());\n\nconst getMonthOffset = memo((month: number, year: number) => {\n const day = new Date(year, month, 1).getDay() - 1;\n if (day === -1) {\n return 6;\n }\n return day;\n});\n"]}
|
|
@@ -7,7 +7,8 @@ monthTitleLineHeight,
|
|
|
7
7
|
monthTitlePaddingTop,
|
|
8
8
|
monthTitlePaddingBottom,
|
|
9
9
|
monthTitleMarginBottom,
|
|
10
|
-
|
|
10
|
+
cellWidth,
|
|
11
|
+
cellHeight,
|
|
11
12
|
wrapperHeight,
|
|
12
13
|
monthMarginBottom,
|
|
13
14
|
maxMonthsToAppendOnScroll)
|
|
@@ -15,7 +16,8 @@ maxMonthsToAppendOnScroll)
|
|
|
15
16
|
var monthTitleHeight =
|
|
16
17
|
parseInt(monthTitleLineHeight) + parseInt(monthTitlePaddingTop) + parseInt(monthTitlePaddingBottom);
|
|
17
18
|
return {
|
|
18
|
-
|
|
19
|
+
DAY_WIDTH: parseInt(cellWidth),
|
|
20
|
+
DAY_HEIGHT: parseInt(cellHeight),
|
|
19
21
|
MONTH_TITLE_HEIGHT: monthTitleHeight,
|
|
20
22
|
MONTH_TITLE_OFFSET_HEIGHT: monthTitleHeight + parseInt(monthTitleMarginBottom) + 1, // + 1px separator line
|
|
21
23
|
WRAPPER_HEIGHT: parseInt(wrapperHeight),
|
|
@@ -31,7 +33,8 @@ var themeConfig = function themeConfig(t) {return (
|
|
|
31
33
|
t.calendarMonthTitlePaddingTop,
|
|
32
34
|
t.calendarMonthTitlePaddingBottom,
|
|
33
35
|
t.calendarMonthTitleMarginBottom,
|
|
34
|
-
t.
|
|
36
|
+
t.calendarCellWidth,
|
|
37
|
+
t.calendarCellHeight,
|
|
35
38
|
t.calendarWrapperHeight,
|
|
36
39
|
t.calendarMonthMarginBottom,
|
|
37
40
|
t.calendarMaxMonthsToAppendOnScroll));};exports.themeConfig = themeConfig;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["config.ts"],"names":["getConfig","monthTitleLineHeight","monthTitlePaddingTop","monthTitlePaddingBottom","monthTitleMarginBottom","
|
|
1
|
+
{"version":3,"sources":["config.ts"],"names":["getConfig","monthTitleLineHeight","monthTitlePaddingTop","monthTitlePaddingBottom","monthTitleMarginBottom","cellWidth","cellHeight","wrapperHeight","monthMarginBottom","maxMonthsToAppendOnScroll","monthTitleHeight","parseInt","DAY_WIDTH","DAY_HEIGHT","MONTH_TITLE_HEIGHT","MONTH_TITLE_OFFSET_HEIGHT","WRAPPER_HEIGHT","MONTH_BOTTOM_MARGIN","MAX_MONTHS_TO_APPEND_ON_SCROLL","themeConfig","t","calendarMonthTitleLineHeight","calendarMonthTitlePaddingTop","calendarMonthTitlePaddingBottom","calendarMonthTitleMarginBottom","calendarCellWidth","calendarCellHeight","calendarWrapperHeight","calendarMonthMarginBottom","calendarMaxMonthsToAppendOnScroll"],"mappings":";AACA;;AAEA,IAAMA,SAAS,GAAG;AAChB;AACEC,oBADF;AAEEC,oBAFF;AAGEC,uBAHF;AAIEC,sBAJF;AAKEC,SALF;AAMEC,UANF;AAOEC,aAPF;AAQEC,iBARF;AASEC,yBATF;AAUK;AACH,MAAMC,gBAAgB;AACpBC,EAAAA,QAAQ,CAACV,oBAAD,CAAR,GAAiCU,QAAQ,CAACT,oBAAD,CAAzC,GAAkES,QAAQ,CAACR,uBAAD,CAD5E;AAEA,SAAO;AACLS,IAAAA,SAAS,EAAED,QAAQ,CAACN,SAAD,CADd;AAELQ,IAAAA,UAAU,EAAEF,QAAQ,CAACL,UAAD,CAFf;AAGLQ,IAAAA,kBAAkB,EAAEJ,gBAHf;AAILK,IAAAA,yBAAyB,EAAEL,gBAAgB,GAAGC,QAAQ,CAACP,sBAAD,CAA3B,GAAsD,CAJ5E,EAI+E;AACpFY,IAAAA,cAAc,EAAEL,QAAQ,CAACJ,aAAD,CALnB;AAMLU,IAAAA,mBAAmB,EAAEN,QAAQ,CAACH,iBAAD,CANxB;AAOLU,IAAAA,8BAA8B,EAAEP,QAAQ,CAACF,yBAAD,CAPnC,EAAP;;AASD,CAvBe,CAAlB;;;AA0BO,IAAMU,WAAW,GAAG,SAAdA,WAAc,CAACC,CAAD;AACzBpB,IAAAA,SAAS;AACPoB,IAAAA,CAAC,CAACC,4BADK;AAEPD,IAAAA,CAAC,CAACE,4BAFK;AAGPF,IAAAA,CAAC,CAACG,+BAHK;AAIPH,IAAAA,CAAC,CAACI,8BAJK;AAKPJ,IAAAA,CAAC,CAACK,iBALK;AAMPL,IAAAA,CAAC,CAACM,kBANK;AAOPN,IAAAA,CAAC,CAACO,qBAPK;AAQPP,IAAAA,CAAC,CAACQ,yBARK;AASPR,IAAAA,CAAC,CAACS,iCATK,CADgB,GAApB,C","sourcesContent":["import { Theme } from '../../lib/theming/Theme';\nimport { memo } from '../../lib/memo';\n\nconst getConfig = memo(\n (\n monthTitleLineHeight: string,\n monthTitlePaddingTop: string,\n monthTitlePaddingBottom: string,\n monthTitleMarginBottom: string,\n cellWidth: string,\n cellHeight: string,\n wrapperHeight: string,\n monthMarginBottom: string,\n maxMonthsToAppendOnScroll: string,\n ) => {\n const monthTitleHeight =\n parseInt(monthTitleLineHeight) + parseInt(monthTitlePaddingTop) + parseInt(monthTitlePaddingBottom);\n return {\n DAY_WIDTH: parseInt(cellWidth),\n DAY_HEIGHT: parseInt(cellHeight),\n MONTH_TITLE_HEIGHT: monthTitleHeight,\n MONTH_TITLE_OFFSET_HEIGHT: monthTitleHeight + parseInt(monthTitleMarginBottom) + 1, // + 1px separator line\n WRAPPER_HEIGHT: parseInt(wrapperHeight),\n MONTH_BOTTOM_MARGIN: parseInt(monthMarginBottom),\n MAX_MONTHS_TO_APPEND_ON_SCROLL: parseInt(maxMonthsToAppendOnScroll),\n };\n },\n);\n\nexport const themeConfig = (t: Theme) =>\n getConfig(\n t.calendarMonthTitleLineHeight,\n t.calendarMonthTitlePaddingTop,\n t.calendarMonthTitlePaddingBottom,\n t.calendarMonthTitleMarginBottom,\n t.calendarCellWidth,\n t.calendarCellHeight,\n t.calendarWrapperHeight,\n t.calendarMonthMarginBottom,\n t.calendarMaxMonthsToAppendOnScroll,\n );\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["index.tsx"],"names":[],"mappings":"uCAAA;AACA","sourcesContent":["export * from './Calendar';\nexport * from './CalendarDateShape';\n"]}
|
|
1
|
+
{"version":3,"sources":["index.tsx"],"names":[],"mappings":"uCAAA;AACA","sourcesContent":["export * from './Calendar';\nexport * from './CalendarDateShape';\nexport type { DayProps } from './DayCellView';\n"]}
|
|
@@ -5,7 +5,7 @@ import { DropdownContainerProps } from '../../internal/DropdownContainer';
|
|
|
5
5
|
import { CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';
|
|
6
6
|
import { CalendarDateShape, CalendarProps } from '../Calendar';
|
|
7
7
|
export declare const MIN_WIDTH = 120;
|
|
8
|
-
export interface DatePickerProps extends Pick<DropdownContainerProps, 'menuPos'>, Pick<CalendarProps, 'isHoliday' | 'minDate' | 'maxDate'>, CommonProps {
|
|
8
|
+
export interface DatePickerProps extends Pick<DropdownContainerProps, 'menuPos'>, Pick<CalendarProps, 'isHoliday' | 'minDate' | 'maxDate' | 'renderDay' | 'onStuckMonth' | 'onMonthSelect'>, CommonProps {
|
|
9
9
|
autoFocus?: boolean;
|
|
10
10
|
disabled?: boolean;
|
|
11
11
|
/**
|
|
@@ -89,6 +89,8 @@ export declare class DatePicker extends React.PureComponent<DatePickerProps, Dat
|
|
|
89
89
|
onMouseLeave: PropTypes.Requireable<(...args: any[]) => any>;
|
|
90
90
|
onMouseOver: PropTypes.Requireable<(...args: any[]) => any>;
|
|
91
91
|
isHoliday: PropTypes.Requireable<(...args: any[]) => any>;
|
|
92
|
+
renderDay: PropTypes.Requireable<(...args: any[]) => any>;
|
|
93
|
+
onStuckMonth: PropTypes.Requireable<(...args: any[]) => any>;
|
|
92
94
|
};
|
|
93
95
|
static defaultProps: DefaultProps;
|
|
94
96
|
private getProps;
|
|
@@ -154,6 +154,10 @@ DatePicker = (_dec = (0, _decorators.locale)('DatePicker', _locale2.DatePickerLo
|
|
|
154
154
|
|
|
155
155
|
|
|
156
156
|
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
|
|
157
161
|
|
|
158
162
|
|
|
159
163
|
|
|
@@ -301,7 +305,10 @@ DatePicker = (_dec = (0, _decorators.locale)('DatePicker', _locale2.DatePickerLo
|
|
|
301
305
|
minDate: _this.parseValueToDate(minDate),
|
|
302
306
|
onValueChange: _this.handleValueChange,
|
|
303
307
|
isHoliday: _this.props.isHoliday,
|
|
304
|
-
value: _this.parseValueToDate(_this.props.value)
|
|
308
|
+
value: _this.parseValueToDate(_this.props.value),
|
|
309
|
+
renderDay: _this.props.renderDay,
|
|
310
|
+
onStuckMonth: _this.props.onStuckMonth,
|
|
311
|
+
onMonthSelect: _this.props.onMonthSelect }),
|
|
305
312
|
|
|
306
313
|
_this.props.enableTodayLink && _this.renderTodayLink(), ' ')));
|
|
307
314
|
|
|
@@ -473,4 +480,4 @@ DatePicker = (_dec = (0, _decorators.locale)('DatePicker', _locale2.DatePickerLo
|
|
|
473
480
|
* Минимальная дата в календаре.
|
|
474
481
|
*/minDate: _propTypes.default.string.isRequired, /**
|
|
475
482
|
* Строка формата `dd.mm.yyyy`
|
|
476
|
-
*/value: _propTypes.default.string, warning: _propTypes.default.bool, width: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]).isRequired, onBlur: _propTypes.default.func, onValueChange: _propTypes.default.func.isRequired, onFocus: _propTypes.default.func, onKeyDown: _propTypes.default.func, onMouseEnter: _propTypes.default.func, onMouseLeave: _propTypes.default.func, onMouseOver: _propTypes.default.func, isHoliday: _propTypes.default.func }, _class2.defaultProps = { minDate: _constants.MIN_FULLDATE, maxDate: _constants.MAX_FULLDATE }, _class2.validate = function (value, range) {if (range === void 0) {range = {};}if (!value) {return false;}var _range = range,_range$minDate = _range.minDate,minDate = _range$minDate === void 0 ? _constants.MIN_FULLDATE : _range$minDate,_range$maxDate = _range.maxDate,maxDate = _range$maxDate === void 0 ? _constants.MAX_FULLDATE : _range$maxDate;var internalDate = new _InternalDate.InternalDate({ order: _types.InternalDateOrder.DMY, separator: _types.InternalDateSeparator.Dot }).setRangeStart(new _InternalDate.InternalDate({ value: minDate })).setRangeEnd(new _InternalDate.InternalDate({ value: maxDate })).parseValue(value);return internalDate.validate({ checks: [_types.InternalDateValidateCheck.NotNull, _types.InternalDateValidateCheck.Number, _types.InternalDateValidateCheck.Native, _types.InternalDateValidateCheck.Limits, _types.InternalDateValidateCheck.Range] });}, _temp)) || _class) || _class);exports.DatePicker = DatePicker;
|
|
483
|
+
*/value: _propTypes.default.string, warning: _propTypes.default.bool, width: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]).isRequired, onBlur: _propTypes.default.func, onValueChange: _propTypes.default.func.isRequired, onFocus: _propTypes.default.func, onKeyDown: _propTypes.default.func, onMouseEnter: _propTypes.default.func, onMouseLeave: _propTypes.default.func, onMouseOver: _propTypes.default.func, isHoliday: _propTypes.default.func, renderDay: _propTypes.default.func, onStuckMonth: _propTypes.default.func }, _class2.defaultProps = { minDate: _constants.MIN_FULLDATE, maxDate: _constants.MAX_FULLDATE }, _class2.validate = function (value, range) {if (range === void 0) {range = {};}if (!value) {return false;}var _range = range,_range$minDate = _range.minDate,minDate = _range$minDate === void 0 ? _constants.MIN_FULLDATE : _range$minDate,_range$maxDate = _range.maxDate,maxDate = _range$maxDate === void 0 ? _constants.MAX_FULLDATE : _range$maxDate;var internalDate = new _InternalDate.InternalDate({ order: _types.InternalDateOrder.DMY, separator: _types.InternalDateSeparator.Dot }).setRangeStart(new _InternalDate.InternalDate({ value: minDate })).setRangeEnd(new _InternalDate.InternalDate({ value: maxDate })).parseValue(value);return internalDate.validate({ checks: [_types.InternalDateValidateCheck.NotNull, _types.InternalDateValidateCheck.Number, _types.InternalDateValidateCheck.Native, _types.InternalDateValidateCheck.Limits, _types.InternalDateValidateCheck.Range] });}, _temp)) || _class) || _class);exports.DatePicker = DatePicker;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["DatePicker.tsx"],"names":["INPUT_PASS_PROPS","autoFocus","disabled","warning","error","size","onKeyDown","MIN_WIDTH","DatePickerDataTids","root","input","label","pickerRoot","pickerTodayWrapper","DatePicker","DatePickerLocaleHelper","rootNode","getProps","defaultProps","calendar","state","opened","canUseMobileNativeDatePicker","today","focused","renderMain","props","picker","minDate","maxDate","locale","Calendar","months","dayCellChooseDateAriaLabel","selectMonthAriaLabel","selectYearAriaLabel","selectChosenAriaLabel","menuPos","getParent","parseInt","theme","datePickerMenuOffsetY","menuAlign","styles","calendarWrapper","e","preventDefault","c","parseValueToDate","handleValueChange","isHoliday","value","enableTodayLink","renderTodayLink","getRootStyle","onMouseEnter","onMouseLeave","onMouseOver","getInputRef","handleBlur","handleFocus","onValueChange","handleSelectToday","handleSelect","month","year","scrollToMonth","width","minWidth","ref","setState","onFocus","close","onBlur","blur","componentDidMount","useMobileNativeDatePicker","isMobile","focus","componentDidUpdate","render","ThemeFactory","create","calendarBottomSeparatorBorder","setRootNode","undefined","date","InternalDate","validate","checks","InternalDateValidateCheck","NotNull","Native","toString","withPad","order","separator","setComponents","InternalDateGetter","getTodayComponents","withSeparator","margin","todayAriaLabel","todayLinkWrapper","React","PureComponent","__KONTUR_REACT_UI__","propTypes","PropTypes","bool","string","isRequired","oneOf","oneOfType","number","func","MIN_FULLDATE","MAX_FULLDATE","range","internalDate","InternalDateOrder","DMY","InternalDateSeparator","Dot","setRangeStart","setRangeEnd","parseValue","Number","Limits","Range"],"mappings":"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","sourcesContent":["import PropTypes from 'prop-types';\nimport React from 'react';\n\nimport { LocaleContext } from '../../lib/locale';\nimport { locale } from '../../lib/locale/decorators';\nimport { InternalDateGetter } from '../../lib/date/InternalDateGetter';\nimport { ArrowAUpIcon16Light } from '../../internal/icons2022/ArrowAUpIcon/ArrowAUp16Light';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { cx } from '../../lib/theming/Emotion';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { InternalDate } from '../../lib/date/InternalDate';\nimport { MAX_FULLDATE, MIN_FULLDATE } from '../../lib/date/constants';\nimport { InternalDateOrder, InternalDateSeparator, InternalDateValidateCheck } from '../../lib/date/types';\nimport { Nullable } from '../../typings/utility-types';\nimport { DateInput } from '../DateInput';\nimport { DropdownContainer, DropdownContainerProps } from '../../internal/DropdownContainer';\nimport { filterProps } from '../../lib/filterProps';\nimport { CommonWrapper, CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { isMobile } from '../../lib/client';\nimport { NativeDateInput } from '../../internal/NativeDateInput';\nimport { getRootNode, rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { isNonNullable } from '../../lib/utils';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { Calendar, CalendarDateShape, CalendarProps } from '../Calendar';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { Button } from '../Button';\nimport { getTodayDate } from '../Calendar/CalendarUtils';\n\nimport { styles } from './DatePicker.styles';\nimport { DatePickerLocale, DatePickerLocaleHelper } from './locale';\n\nconst INPUT_PASS_PROPS = {\n autoFocus: true,\n disabled: true,\n warning: true,\n error: true,\n size: true,\n onKeyDown: true,\n};\n\nexport const MIN_WIDTH = 120;\n\nexport interface DatePickerProps\n extends Pick<DropdownContainerProps, 'menuPos'>,\n Pick<CalendarProps, 'isHoliday' | 'minDate' | 'maxDate'>,\n CommonProps {\n autoFocus?: boolean;\n disabled?: boolean;\n /**\n * Отвечает за отображение кнопки \"Сегодня\".\n */\n enableTodayLink?: boolean;\n /**\n * Состояние валидации при ошибке.\n */\n error?: boolean;\n menuAlign?: 'left' | 'right';\n size?: 'small' | 'medium' | 'large';\n value?: string | null;\n /**\n * Состояние валидации при предупреждении.\n */\n warning?: boolean;\n width?: number | string;\n onBlur?: () => void;\n /**\n * Вызывается при изменении `value`\n *\n * @param value - строка в формате `dd.mm.yyyy`.\n */\n onValueChange: (value: string) => void;\n onFocus?: () => void;\n onKeyDown?: (e: React.KeyboardEvent<any>) => void;\n onMouseEnter?: (e: React.MouseEvent<any>) => void;\n onMouseLeave?: (e: React.MouseEvent<any>) => void;\n onMouseOver?: (e: React.MouseEvent<any>) => void;\n /**\n * Использовать на мобильных устройствах нативный календарь для выбора дат.\n *\n * - На iOS нативный календарь не умеет работать с minDate и maxDate\n */\n useMobileNativeDatePicker?: boolean;\n}\n\nexport interface DatePickerState {\n opened: boolean;\n canUseMobileNativeDatePicker: boolean;\n today: CalendarDateShape;\n}\n\nexport const DatePickerDataTids = {\n root: 'DatePicker__root',\n input: 'DatePicker__input',\n label: 'DatePicker__label',\n pickerRoot: 'Picker__root',\n pickerTodayWrapper: 'Picker__todayWrapper',\n} as const;\n\ntype DefaultProps = Required<Pick<DatePickerProps, 'minDate' | 'maxDate'>>;\n\n@rootNode\n@locale('DatePicker', DatePickerLocaleHelper)\nexport class DatePicker extends React.PureComponent<DatePickerProps, DatePickerState> {\n public static __KONTUR_REACT_UI__ = 'DatePicker';\n\n public static propTypes = {\n autoFocus: PropTypes.bool,\n\n disabled: PropTypes.bool,\n\n /**\n * Включает кнопку сегодня в календаре\n */\n enableTodayLink: PropTypes.bool,\n\n error: PropTypes.bool,\n\n /**\n * Максимальная дата в календаре.\n */\n maxDate: PropTypes.string.isRequired,\n\n menuAlign: PropTypes.oneOf(['left', 'right']),\n\n /**\n * Минимальная дата в календаре.\n */\n minDate: PropTypes.string.isRequired,\n\n /**\n * Строка формата `dd.mm.yyyy`\n */\n value: PropTypes.string,\n\n warning: PropTypes.bool,\n\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n\n onBlur: PropTypes.func,\n\n onValueChange: PropTypes.func.isRequired,\n\n onFocus: PropTypes.func,\n\n onKeyDown: PropTypes.func,\n\n onMouseEnter: PropTypes.func,\n\n onMouseLeave: PropTypes.func,\n\n onMouseOver: PropTypes.func,\n\n isHoliday: PropTypes.func,\n };\n\n public static defaultProps: DefaultProps = {\n minDate: MIN_FULLDATE,\n maxDate: MAX_FULLDATE,\n };\n\n private getProps = createPropsGetter(DatePicker.defaultProps);\n private theme!: Theme;\n private calendar: Calendar | null = null;\n private readonly locale!: DatePickerLocale;\n\n public static validate = (value: Nullable<string>, range: { minDate?: string; maxDate?: string } = {}) => {\n if (!value) {\n return false;\n }\n\n const { minDate = MIN_FULLDATE, maxDate = MAX_FULLDATE } = range;\n const internalDate = new InternalDate({\n order: InternalDateOrder.DMY,\n separator: InternalDateSeparator.Dot,\n })\n .setRangeStart(new InternalDate({ value: minDate }))\n .setRangeEnd(new InternalDate({ value: maxDate }))\n .parseValue(value);\n\n return internalDate.validate({\n checks: [\n InternalDateValidateCheck.NotNull,\n InternalDateValidateCheck.Number,\n InternalDateValidateCheck.Native,\n InternalDateValidateCheck.Limits,\n InternalDateValidateCheck.Range,\n ],\n });\n };\n\n public state: DatePickerState = { opened: false, canUseMobileNativeDatePicker: false, today: getTodayDate() };\n\n private input: DateInput | null = null;\n private focused = false;\n private setRootNode!: TSetRootNode;\n\n public componentDidMount() {\n if (this.props.useMobileNativeDatePicker && isMobile) {\n this.setState({\n canUseMobileNativeDatePicker: true,\n });\n }\n if (this.props.autoFocus) {\n this.focus();\n }\n }\n\n public componentDidUpdate() {\n const { disabled } = this.props;\n const { opened } = this.state;\n if (disabled && opened) {\n this.close();\n }\n }\n\n /**\n * @public\n */\n public blur() {\n if (this.input) {\n this.input.blur();\n }\n this.handleBlur();\n }\n\n /**\n * @public\n */\n public focus() {\n if (this.props.disabled) {\n return;\n }\n if (this.input) {\n this.input.focus();\n }\n this.handleFocus();\n }\n\n /**\n * Закрывает выпадашку выбора дня\n * @public\n */\n public close() {\n this.setState({ opened: false });\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n\n return (\n <ThemeContext.Provider value={ThemeFactory.create({ calendarBottomSeparatorBorder: 'none' }, theme)}>\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {this.renderMain}\n </CommonWrapper>\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderMain = (props: CommonWrapperRestProps<DatePickerProps>) => {\n let picker = null;\n\n const { minDate, maxDate } = this.getProps();\n\n if (this.state.opened) {\n picker = (\n <LocaleContext.Provider\n value={{\n locale: {\n Calendar: {\n months: this.locale.months,\n dayCellChooseDateAriaLabel: this.locale.dayCellChooseDateAriaLabel,\n selectMonthAriaLabel: this.locale.selectMonthAriaLabel,\n selectYearAriaLabel: this.locale.selectYearAriaLabel,\n selectChosenAriaLabel: this.locale.selectChosenAriaLabel,\n },\n },\n }}\n >\n <DropdownContainer\n menuPos={this.props.menuPos}\n data-tid={DatePickerDataTids.root}\n getParent={this.getParent}\n offsetY={parseInt(this.theme.datePickerMenuOffsetY)}\n align={this.props.menuAlign}\n >\n <div\n data-tid={DatePickerDataTids.pickerRoot}\n className={styles.calendarWrapper(this.theme)}\n onMouseDown={(e) => e.preventDefault()}\n >\n <Calendar\n ref={(c) => (this.calendar = c)}\n maxDate={this.parseValueToDate(maxDate)}\n minDate={this.parseValueToDate(minDate)}\n onValueChange={this.handleValueChange}\n isHoliday={this.props.isHoliday}\n value={this.parseValueToDate(this.props.value)}\n />\n {this.props.enableTodayLink && this.renderTodayLink()}{' '}\n </div>\n </DropdownContainer>\n </LocaleContext.Provider>\n );\n }\n\n return (\n <label\n className={styles.root()}\n style={this.getRootStyle()}\n onMouseEnter={this.props.onMouseEnter}\n onMouseLeave={this.props.onMouseLeave}\n onMouseOver={this.props.onMouseOver}\n data-tid={DatePickerDataTids.label}\n >\n <DateInput\n {...filterProps(props, INPUT_PASS_PROPS)}\n ref={this.getInputRef}\n value={this.props.value || ''}\n width=\"100%\"\n withIcon\n minDate={minDate}\n maxDate={maxDate}\n onBlur={this.handleBlur}\n onFocus={this.handleFocus}\n onValueChange={this.props.onValueChange}\n data-tid={DatePickerDataTids.input}\n />\n {this.state.canUseMobileNativeDatePicker && (\n <NativeDateInput\n onValueChange={this.props.onValueChange}\n value={this.props.value || ''}\n minDate={minDate}\n maxDate={maxDate}\n disabled={this.props.disabled}\n />\n )}\n {!this.state.canUseMobileNativeDatePicker && picker}\n </label>\n );\n };\n\n private parseValueToDate(value?: Nullable<string>): string | undefined {\n if (value === undefined || value === null) {\n return undefined;\n }\n\n const date = new InternalDate({ value });\n if (date.validate({ checks: [InternalDateValidateCheck.NotNull, InternalDateValidateCheck.Native] })) {\n return date.toString({ withPad: true });\n }\n\n return undefined;\n }\n\n private renderTodayLink() {\n const { order, separator } = this.locale;\n const today = new InternalDate({ order, separator })\n .setComponents(InternalDateGetter.getTodayComponents())\n .toString({ withPad: true, withSeparator: true });\n\n if (isTheme2022(this.theme)) {\n return (\n <div style={{ margin: 8 }}>\n <Button\n aria-label={this.locale.todayAriaLabel}\n data-tid={DatePickerDataTids.pickerTodayWrapper}\n width=\"100%\"\n onClick={this.handleSelectToday(today)}\n icon={<ArrowAUpIcon16Light />}\n >\n {this.locale.today}\n </Button>\n </div>\n );\n }\n\n return (\n <button\n aria-label={this.locale.todayAriaLabel}\n data-tid={DatePickerDataTids.pickerTodayWrapper}\n className={cx({\n [styles.todayLinkWrapper(this.theme)]: true,\n })}\n onClick={this.handleSelectToday(today)}\n tabIndex={-1}\n >\n {`${this.locale.today} ${today}`}\n </button>\n );\n }\n\n private handleSelectToday = (today: string) => () => {\n this.handleSelect(today);\n\n if (this.calendar) {\n const { month, year } = this.state.today;\n this.calendar.scrollToMonth(month, year);\n }\n };\n\n public getParent = () => {\n return getRootNode(this);\n };\n\n private getRootStyle = () => {\n const { width } = this.props;\n return isNonNullable(width) ? { width } : { minWidth: MIN_WIDTH };\n };\n\n private getInputRef = (ref: DateInput | null) => {\n this.input = ref;\n };\n\n private handleFocus = () => {\n if (this.focused) {\n return;\n }\n\n this.focused = true;\n\n this.setState({ opened: true });\n\n if (this.props.onFocus) {\n this.props.onFocus();\n }\n };\n\n private handleBlur = () => {\n if (!this.focused) {\n return;\n }\n\n this.focused = false;\n this.close();\n\n if (this.props.onBlur) {\n this.props.onBlur();\n }\n };\n\n private handleValueChange = (value: string) => {\n this.handleSelect(value);\n this.blur();\n };\n\n private handleSelect = (value: string | null) => {\n if (!value) {\n return null;\n }\n\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["DatePicker.tsx"],"names":["INPUT_PASS_PROPS","autoFocus","disabled","warning","error","size","onKeyDown","MIN_WIDTH","DatePickerDataTids","root","input","label","pickerRoot","pickerTodayWrapper","DatePicker","DatePickerLocaleHelper","rootNode","getProps","defaultProps","calendar","state","opened","canUseMobileNativeDatePicker","today","focused","renderMain","props","picker","minDate","maxDate","locale","Calendar","months","dayCellChooseDateAriaLabel","selectMonthAriaLabel","selectYearAriaLabel","selectChosenAriaLabel","menuPos","getParent","parseInt","theme","datePickerMenuOffsetY","menuAlign","styles","calendarWrapper","e","preventDefault","c","parseValueToDate","handleValueChange","isHoliday","value","renderDay","onStuckMonth","onMonthSelect","enableTodayLink","renderTodayLink","getRootStyle","onMouseEnter","onMouseLeave","onMouseOver","getInputRef","handleBlur","handleFocus","onValueChange","handleSelectToday","handleSelect","month","year","scrollToMonth","width","minWidth","ref","setState","onFocus","close","onBlur","blur","componentDidMount","useMobileNativeDatePicker","isMobile","focus","componentDidUpdate","render","ThemeFactory","create","calendarBottomSeparatorBorder","setRootNode","undefined","date","InternalDate","validate","checks","InternalDateValidateCheck","NotNull","Native","toString","withPad","order","separator","setComponents","InternalDateGetter","getTodayComponents","withSeparator","margin","todayAriaLabel","todayLinkWrapper","React","PureComponent","__KONTUR_REACT_UI__","propTypes","PropTypes","bool","string","isRequired","oneOf","oneOfType","number","func","MIN_FULLDATE","MAX_FULLDATE","range","internalDate","InternalDateOrder","DMY","InternalDateSeparator","Dot","setRangeStart","setRangeEnd","parseValue","Number","Limits","Range"],"mappings":"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","sourcesContent":["import PropTypes from 'prop-types';\nimport React from 'react';\n\nimport { LocaleContext } from '../../lib/locale';\nimport { locale } from '../../lib/locale/decorators';\nimport { InternalDateGetter } from '../../lib/date/InternalDateGetter';\nimport { ArrowAUpIcon16Light } from '../../internal/icons2022/ArrowAUpIcon/ArrowAUp16Light';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { cx } from '../../lib/theming/Emotion';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { InternalDate } from '../../lib/date/InternalDate';\nimport { MAX_FULLDATE, MIN_FULLDATE } from '../../lib/date/constants';\nimport { InternalDateOrder, InternalDateSeparator, InternalDateValidateCheck } from '../../lib/date/types';\nimport { Nullable } from '../../typings/utility-types';\nimport { DateInput } from '../DateInput';\nimport { DropdownContainer, DropdownContainerProps } from '../../internal/DropdownContainer';\nimport { filterProps } from '../../lib/filterProps';\nimport { CommonWrapper, CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { isMobile } from '../../lib/client';\nimport { NativeDateInput } from '../../internal/NativeDateInput';\nimport { getRootNode, rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { isNonNullable } from '../../lib/utils';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { Calendar, CalendarDateShape, CalendarProps } from '../Calendar';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { Button } from '../Button';\nimport { getTodayDate } from '../Calendar/CalendarUtils';\n\nimport { styles } from './DatePicker.styles';\nimport { DatePickerLocale, DatePickerLocaleHelper } from './locale';\n\nconst INPUT_PASS_PROPS = {\n autoFocus: true,\n disabled: true,\n warning: true,\n error: true,\n size: true,\n onKeyDown: true,\n};\n\nexport const MIN_WIDTH = 120;\n\nexport interface DatePickerProps\n extends Pick<DropdownContainerProps, 'menuPos'>,\n Pick<CalendarProps, 'isHoliday' | 'minDate' | 'maxDate' | 'renderDay' | 'onStuckMonth' | 'onMonthSelect'>,\n CommonProps {\n autoFocus?: boolean;\n disabled?: boolean;\n /**\n * Отвечает за отображение кнопки \"Сегодня\".\n */\n enableTodayLink?: boolean;\n /**\n * Состояние валидации при ошибке.\n */\n error?: boolean;\n menuAlign?: 'left' | 'right';\n size?: 'small' | 'medium' | 'large';\n value?: string | null;\n /**\n * Состояние валидации при предупреждении.\n */\n warning?: boolean;\n width?: number | string;\n onBlur?: () => void;\n /**\n * Вызывается при изменении `value`\n *\n * @param value - строка в формате `dd.mm.yyyy`.\n */\n onValueChange: (value: string) => void;\n onFocus?: () => void;\n onKeyDown?: (e: React.KeyboardEvent<any>) => void;\n onMouseEnter?: (e: React.MouseEvent<any>) => void;\n onMouseLeave?: (e: React.MouseEvent<any>) => void;\n onMouseOver?: (e: React.MouseEvent<any>) => void;\n /**\n * Использовать на мобильных устройствах нативный календарь для выбора дат.\n *\n * - На iOS нативный календарь не умеет работать с minDate и maxDate\n */\n useMobileNativeDatePicker?: boolean;\n}\n\nexport interface DatePickerState {\n opened: boolean;\n canUseMobileNativeDatePicker: boolean;\n today: CalendarDateShape;\n}\n\nexport const DatePickerDataTids = {\n root: 'DatePicker__root',\n input: 'DatePicker__input',\n label: 'DatePicker__label',\n pickerRoot: 'Picker__root',\n pickerTodayWrapper: 'Picker__todayWrapper',\n} as const;\n\ntype DefaultProps = Required<Pick<DatePickerProps, 'minDate' | 'maxDate'>>;\n\n@rootNode\n@locale('DatePicker', DatePickerLocaleHelper)\nexport class DatePicker extends React.PureComponent<DatePickerProps, DatePickerState> {\n public static __KONTUR_REACT_UI__ = 'DatePicker';\n\n public static propTypes = {\n autoFocus: PropTypes.bool,\n\n disabled: PropTypes.bool,\n\n /**\n * Включает кнопку сегодня в календаре\n */\n enableTodayLink: PropTypes.bool,\n\n error: PropTypes.bool,\n\n /**\n * Максимальная дата в календаре.\n */\n maxDate: PropTypes.string.isRequired,\n\n menuAlign: PropTypes.oneOf(['left', 'right']),\n\n /**\n * Минимальная дата в календаре.\n */\n minDate: PropTypes.string.isRequired,\n\n /**\n * Строка формата `dd.mm.yyyy`\n */\n value: PropTypes.string,\n\n warning: PropTypes.bool,\n\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n\n onBlur: PropTypes.func,\n\n onValueChange: PropTypes.func.isRequired,\n\n onFocus: PropTypes.func,\n\n onKeyDown: PropTypes.func,\n\n onMouseEnter: PropTypes.func,\n\n onMouseLeave: PropTypes.func,\n\n onMouseOver: PropTypes.func,\n\n isHoliday: PropTypes.func,\n\n renderDay: PropTypes.func,\n\n onStuckMonth: PropTypes.func,\n };\n\n public static defaultProps: DefaultProps = {\n minDate: MIN_FULLDATE,\n maxDate: MAX_FULLDATE,\n };\n\n private getProps = createPropsGetter(DatePicker.defaultProps);\n private theme!: Theme;\n private calendar: Calendar | null = null;\n private readonly locale!: DatePickerLocale;\n\n public static validate = (value: Nullable<string>, range: { minDate?: string; maxDate?: string } = {}) => {\n if (!value) {\n return false;\n }\n\n const { minDate = MIN_FULLDATE, maxDate = MAX_FULLDATE } = range;\n const internalDate = new InternalDate({\n order: InternalDateOrder.DMY,\n separator: InternalDateSeparator.Dot,\n })\n .setRangeStart(new InternalDate({ value: minDate }))\n .setRangeEnd(new InternalDate({ value: maxDate }))\n .parseValue(value);\n\n return internalDate.validate({\n checks: [\n InternalDateValidateCheck.NotNull,\n InternalDateValidateCheck.Number,\n InternalDateValidateCheck.Native,\n InternalDateValidateCheck.Limits,\n InternalDateValidateCheck.Range,\n ],\n });\n };\n\n public state: DatePickerState = { opened: false, canUseMobileNativeDatePicker: false, today: getTodayDate() };\n\n private input: DateInput | null = null;\n private focused = false;\n private setRootNode!: TSetRootNode;\n\n public componentDidMount() {\n if (this.props.useMobileNativeDatePicker && isMobile) {\n this.setState({\n canUseMobileNativeDatePicker: true,\n });\n }\n if (this.props.autoFocus) {\n this.focus();\n }\n }\n\n public componentDidUpdate() {\n const { disabled } = this.props;\n const { opened } = this.state;\n if (disabled && opened) {\n this.close();\n }\n }\n\n /**\n * @public\n */\n public blur() {\n if (this.input) {\n this.input.blur();\n }\n this.handleBlur();\n }\n\n /**\n * @public\n */\n public focus() {\n if (this.props.disabled) {\n return;\n }\n if (this.input) {\n this.input.focus();\n }\n this.handleFocus();\n }\n\n /**\n * Закрывает выпадашку выбора дня\n * @public\n */\n public close() {\n this.setState({ opened: false });\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n\n return (\n <ThemeContext.Provider value={ThemeFactory.create({ calendarBottomSeparatorBorder: 'none' }, theme)}>\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {this.renderMain}\n </CommonWrapper>\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderMain = (props: CommonWrapperRestProps<DatePickerProps>) => {\n let picker = null;\n\n const { minDate, maxDate } = this.getProps();\n\n if (this.state.opened) {\n picker = (\n <LocaleContext.Provider\n value={{\n locale: {\n Calendar: {\n months: this.locale.months,\n dayCellChooseDateAriaLabel: this.locale.dayCellChooseDateAriaLabel,\n selectMonthAriaLabel: this.locale.selectMonthAriaLabel,\n selectYearAriaLabel: this.locale.selectYearAriaLabel,\n selectChosenAriaLabel: this.locale.selectChosenAriaLabel,\n },\n },\n }}\n >\n <DropdownContainer\n menuPos={this.props.menuPos}\n data-tid={DatePickerDataTids.root}\n getParent={this.getParent}\n offsetY={parseInt(this.theme.datePickerMenuOffsetY)}\n align={this.props.menuAlign}\n >\n <div\n data-tid={DatePickerDataTids.pickerRoot}\n className={styles.calendarWrapper(this.theme)}\n onMouseDown={(e) => e.preventDefault()}\n >\n <Calendar\n ref={(c) => (this.calendar = c)}\n maxDate={this.parseValueToDate(maxDate)}\n minDate={this.parseValueToDate(minDate)}\n onValueChange={this.handleValueChange}\n isHoliday={this.props.isHoliday}\n value={this.parseValueToDate(this.props.value)}\n renderDay={this.props.renderDay}\n onStuckMonth={this.props.onStuckMonth}\n onMonthSelect={this.props.onMonthSelect}\n />\n {this.props.enableTodayLink && this.renderTodayLink()}{' '}\n </div>\n </DropdownContainer>\n </LocaleContext.Provider>\n );\n }\n\n return (\n <label\n className={styles.root()}\n style={this.getRootStyle()}\n onMouseEnter={this.props.onMouseEnter}\n onMouseLeave={this.props.onMouseLeave}\n onMouseOver={this.props.onMouseOver}\n data-tid={DatePickerDataTids.label}\n >\n <DateInput\n {...filterProps(props, INPUT_PASS_PROPS)}\n ref={this.getInputRef}\n value={this.props.value || ''}\n width=\"100%\"\n withIcon\n minDate={minDate}\n maxDate={maxDate}\n onBlur={this.handleBlur}\n onFocus={this.handleFocus}\n onValueChange={this.props.onValueChange}\n data-tid={DatePickerDataTids.input}\n />\n {this.state.canUseMobileNativeDatePicker && (\n <NativeDateInput\n onValueChange={this.props.onValueChange}\n value={this.props.value || ''}\n minDate={minDate}\n maxDate={maxDate}\n disabled={this.props.disabled}\n />\n )}\n {!this.state.canUseMobileNativeDatePicker && picker}\n </label>\n );\n };\n\n private parseValueToDate(value?: Nullable<string>): string | undefined {\n if (value === undefined || value === null) {\n return undefined;\n }\n\n const date = new InternalDate({ value });\n if (date.validate({ checks: [InternalDateValidateCheck.NotNull, InternalDateValidateCheck.Native] })) {\n return date.toString({ withPad: true });\n }\n\n return undefined;\n }\n\n private renderTodayLink() {\n const { order, separator } = this.locale;\n const today = new InternalDate({ order, separator })\n .setComponents(InternalDateGetter.getTodayComponents())\n .toString({ withPad: true, withSeparator: true });\n\n if (isTheme2022(this.theme)) {\n return (\n <div style={{ margin: 8 }}>\n <Button\n aria-label={this.locale.todayAriaLabel}\n data-tid={DatePickerDataTids.pickerTodayWrapper}\n width=\"100%\"\n onClick={this.handleSelectToday(today)}\n icon={<ArrowAUpIcon16Light />}\n >\n {this.locale.today}\n </Button>\n </div>\n );\n }\n\n return (\n <button\n aria-label={this.locale.todayAriaLabel}\n data-tid={DatePickerDataTids.pickerTodayWrapper}\n className={cx({\n [styles.todayLinkWrapper(this.theme)]: true,\n })}\n onClick={this.handleSelectToday(today)}\n tabIndex={-1}\n >\n {`${this.locale.today} ${today}`}\n </button>\n );\n }\n\n private handleSelectToday = (today: string) => () => {\n this.handleSelect(today);\n\n if (this.calendar) {\n const { month, year } = this.state.today;\n this.calendar.scrollToMonth(month, year);\n }\n };\n\n public getParent = () => {\n return getRootNode(this);\n };\n\n private getRootStyle = () => {\n const { width } = this.props;\n return isNonNullable(width) ? { width } : { minWidth: MIN_WIDTH };\n };\n\n private getInputRef = (ref: DateInput | null) => {\n this.input = ref;\n };\n\n private handleFocus = () => {\n if (this.focused) {\n return;\n }\n\n this.focused = true;\n\n this.setState({ opened: true });\n\n if (this.props.onFocus) {\n this.props.onFocus();\n }\n };\n\n private handleBlur = () => {\n if (!this.focused) {\n return;\n }\n\n this.focused = false;\n this.close();\n\n if (this.props.onBlur) {\n this.props.onBlur();\n }\n };\n\n private handleValueChange = (value: string) => {\n this.handleSelect(value);\n this.blur();\n };\n\n private handleSelect = (value: string | null) => {\n if (!value) {\n return null;\n }\n\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n };\n}\n"]}
|
|
@@ -60,6 +60,7 @@ let removeTooltip = () => setTooltip(false);
|
|
|
60
60
|
```
|
|
61
61
|
|
|
62
62
|
Очистить значение в `DatePicker`'е можно с помощью пустой строки, `null` или `undefined`
|
|
63
|
+
|
|
63
64
|
```jsx harmony
|
|
64
65
|
import { Button, Group } from '@skbkontur/react-ui';
|
|
65
66
|
|
|
@@ -131,7 +132,7 @@ const isHoliday = (day, isWeekend) => {
|
|
|
131
132
|
<details><summary>`data.gov.ru`</summary>
|
|
132
133
|
|
|
133
134
|
Docs:
|
|
134
|
-
https://data.gov.ru/api-portala-otkrytyh-dannyh-rf-polnoe-rukovodstvo
|
|
135
|
+
<https://data.gov.ru/api-portala-otkrytyh-dannyh-rf-polnoe-rukovodstvo>
|
|
135
136
|
|
|
136
137
|
Request:
|
|
137
138
|
|
|
@@ -273,6 +274,28 @@ class DatePickerFormatting extends React.Component {
|
|
|
273
274
|
<DatePickerFormatting />;
|
|
274
275
|
```
|
|
275
276
|
|
|
277
|
+
### Кастомизирование отображения даты
|
|
278
|
+
|
|
279
|
+
```jsx harmony
|
|
280
|
+
import MagicWand from '@skbkontur/react-icons/MagicWand';
|
|
281
|
+
|
|
282
|
+
const [value, setValue] = React.useState('12.05.2022');
|
|
283
|
+
|
|
284
|
+
const CustomDayItem = ({ date }) => {
|
|
285
|
+
const isEven = (num) => num % 2 === 0;
|
|
286
|
+
|
|
287
|
+
return (
|
|
288
|
+
<div>
|
|
289
|
+
{isEven(date.date) ? <MagicWand /> : date.date}
|
|
290
|
+
</div>
|
|
291
|
+
);
|
|
292
|
+
};
|
|
293
|
+
|
|
294
|
+
const renderDay = (date) => <CustomDayItem date={date} />;
|
|
295
|
+
|
|
296
|
+
<DatePicker value={value} onValueChange={setValue} renderDay={renderDay} />;
|
|
297
|
+
```
|
|
298
|
+
|
|
276
299
|
#### Локали по умолчанию
|
|
277
300
|
|
|
278
301
|
```typescript static
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";exports.__esModule = true;exports.formatDate = formatDate;
|
|
2
|
+
var _CalendarUtils = require("../Calendar/CalendarUtils");
|
|
2
3
|
|
|
3
4
|
function formatDate(_ref) {var date = _ref.date,month = _ref.month,year = _ref.year;
|
|
4
|
-
var _map = [date, month
|
|
5
|
+
var _map = [date, (0, _CalendarUtils.getMonthInHumanFormat)(month), year].map(function (x) {return x.toString();}),d = _map[0],m = _map[1],y = _map[2];
|
|
5
6
|
return d.padStart(2, '0') + "." + m.padStart(2, '0') + "." + y.padStart(4, '0');
|
|
6
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["DatePickerHelpers.tsx"],"names":["formatDate","date","month","year","map","x","toString","d","m","y","padStart"],"mappings":";;AAEO,SAASA,UAAT,OAAsE,KAAhDC,IAAgD,QAAhDA,IAAgD,CAA1CC,KAA0C,QAA1CA,KAA0C,CAAnCC,IAAmC,QAAnCA,IAAmC;AAC3E,aAAkB,CAACF,IAAD,
|
|
1
|
+
{"version":3,"sources":["DatePickerHelpers.tsx"],"names":["formatDate","date","month","year","map","x","toString","d","m","y","padStart"],"mappings":";AACA;;AAEO,SAASA,UAAT,OAAsE,KAAhDC,IAAgD,QAAhDA,IAAgD,CAA1CC,KAA0C,QAA1CA,KAA0C,CAAnCC,IAAmC,QAAnCA,IAAmC;AAC3E,aAAkB,CAACF,IAAD,EAAO,0CAAsBC,KAAtB,CAAP,EAAqCC,IAArC,EAA2CC,GAA3C,CAA+C,UAACC,CAAD,UAAOA,CAAC,CAACC,QAAF,EAAP,EAA/C,CAAlB,CAAOC,CAAP,WAAUC,CAAV,WAAaC,CAAb;AACA,SAAUF,CAAC,CAACG,QAAF,CAAW,CAAX,EAAc,GAAd,CAAV,SAAgCF,CAAC,CAACE,QAAF,CAAW,CAAX,EAAc,GAAd,CAAhC,SAAsDD,CAAC,CAACC,QAAF,CAAW,CAAX,EAAc,GAAd,CAAtD;AACD","sourcesContent":["import { CalendarDateShape } from '../../components/Calendar/CalendarDateShape';\nimport { getMonthInHumanFormat } from '../Calendar/CalendarUtils';\n\nexport function formatDate({ date, month, year }: CalendarDateShape): string {\n const [d, m, y] = [date, getMonthInHumanFormat(month), year].map((x) => x.toString());\n return `${d.padStart(2, '0')}.${m.padStart(2, '0')}.${y.padStart(4, '0')}`;\n}\n"]}
|
|
@@ -1,43 +1,43 @@
|
|
|
1
|
-
Вывод элементов с горизонтальным расположением
|
|
2
|
-
|
|
3
|
-
```jsx harmony
|
|
4
|
-
import { Button } from '@skbkontur/react-ui';
|
|
5
|
-
|
|
6
|
-
<Gapped gap={20}>
|
|
7
|
-
<Button use="primary">Сохранить</Button>
|
|
8
|
-
<Button>Отмена</Button>
|
|
9
|
-
</Gapped>;
|
|
10
|
-
```
|
|
11
|
-
|
|
12
|
-
Вертикальное расположение
|
|
13
|
-
|
|
14
|
-
```jsx harmony
|
|
15
|
-
import { Checkbox } from '@skbkontur/react-ui';
|
|
16
|
-
|
|
17
|
-
<Gapped vertical gap={20}>
|
|
18
|
-
<Checkbox checked>Write todos</Checkbox>
|
|
19
|
-
<Checkbox initialIndeterminate>Work in progress</Checkbox>
|
|
20
|
-
<Checkbox>Make things done</Checkbox>
|
|
21
|
-
</Gapped>;
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
По умолчанию `Gapped` выстраивает элементы в одну строчку, но с помощью свойства `wrap` можно включить перенос элементов на новую строку.
|
|
25
|
-
При этом между строчками будет отступ равный значению свойста `gap`
|
|
26
|
-
В таком случае из-за особенности верстки `Gapped` может перекрывать элементы расположенные сверху-слева.
|
|
27
|
-
|
|
28
|
-
```jsx harmony
|
|
29
|
-
import { Button, Checkbox, Toggle } from '@skbkontur/react-ui';
|
|
30
|
-
|
|
31
|
-
<>
|
|
32
|
-
{"U Can't Touch This! => "}
|
|
33
|
-
<Toggle />
|
|
34
|
-
|
|
35
|
-
<div style={{ paddingTop: '10px', position: 'relative', width: '250px' }}>
|
|
36
|
-
<Gapped wrap gap={50}>
|
|
37
|
-
<Button use="primary">Сохранить</Button>
|
|
38
|
-
<Button>Отмена</Button>
|
|
39
|
-
<Checkbox>Я не робот</Checkbox>
|
|
40
|
-
</Gapped>
|
|
41
|
-
</div>
|
|
42
|
-
</>;
|
|
43
|
-
```
|
|
1
|
+
Вывод элементов с горизонтальным расположением
|
|
2
|
+
|
|
3
|
+
```jsx harmony
|
|
4
|
+
import { Button } from '@skbkontur/react-ui';
|
|
5
|
+
|
|
6
|
+
<Gapped gap={20}>
|
|
7
|
+
<Button use="primary">Сохранить</Button>
|
|
8
|
+
<Button>Отмена</Button>
|
|
9
|
+
</Gapped>;
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
Вертикальное расположение
|
|
13
|
+
|
|
14
|
+
```jsx harmony
|
|
15
|
+
import { Checkbox } from '@skbkontur/react-ui';
|
|
16
|
+
|
|
17
|
+
<Gapped vertical gap={20}>
|
|
18
|
+
<Checkbox checked>Write todos</Checkbox>
|
|
19
|
+
<Checkbox initialIndeterminate>Work in progress</Checkbox>
|
|
20
|
+
<Checkbox>Make things done</Checkbox>
|
|
21
|
+
</Gapped>;
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
По умолчанию `Gapped` выстраивает элементы в одну строчку, но с помощью свойства `wrap` можно включить перенос элементов на новую строку.
|
|
25
|
+
При этом между строчками будет отступ равный значению свойста `gap`
|
|
26
|
+
В таком случае из-за особенности верстки `Gapped` может перекрывать элементы расположенные сверху-слева.
|
|
27
|
+
|
|
28
|
+
```jsx harmony
|
|
29
|
+
import { Button, Checkbox, Toggle } from '@skbkontur/react-ui';
|
|
30
|
+
|
|
31
|
+
<>
|
|
32
|
+
{"U Can't Touch This! => "}
|
|
33
|
+
<Toggle />
|
|
34
|
+
|
|
35
|
+
<div style={{ paddingTop: '10px', position: 'relative', width: '250px' }}>
|
|
36
|
+
<Gapped wrap gap={50}>
|
|
37
|
+
<Button use="primary">Сохранить</Button>
|
|
38
|
+
<Button>Отмена</Button>
|
|
39
|
+
<Checkbox>Я не робот</Checkbox>
|
|
40
|
+
</Gapped>
|
|
41
|
+
</div>
|
|
42
|
+
</>;
|
|
43
|
+
```
|