colibri-ui 0.7.57 → 0.7.59

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.
Files changed (225) hide show
  1. package/Badge/Badge.module.css +13 -15
  2. package/Badge/Control/Control.module.css +1 -1
  3. package/Button/Button.module.css +44 -30
  4. package/Button/index.props.d.ts +1 -1
  5. package/Calendar/components/ContinueButton/index.d.ts +10 -0
  6. package/Calendar/components/ContinueButton/index.js +45 -0
  7. package/Calendar/components/ContinueButton/index.module.css +4 -0
  8. package/Calendar/components/Month/Month.d.ts +15 -0
  9. package/Calendar/components/Month/Month.js +142 -0
  10. package/Calendar/components/Month/index.module.css +143 -0
  11. package/Calendar/components/Presets/index.d.ts +19 -0
  12. package/Calendar/components/Presets/index.js +68 -0
  13. package/Calendar/components/Presets/index.module.css +28 -0
  14. package/Calendar/index.d.ts +20 -0
  15. package/Calendar/index.js +196 -0
  16. package/Calendar/index.module.css +98 -0
  17. package/Calendar/package.json +6 -0
  18. package/Calendar/utils/getMonthWeeks.d.ts +20 -0
  19. package/Calendar/utils/getMonthWeeks.js +81 -0
  20. package/Calendar/utils/getNumberOfMonthsBetweenDates.d.ts +4 -0
  21. package/Calendar/utils/getNumberOfMonthsBetweenDates.js +21 -0
  22. package/Calendar/utils/getPresets.d.ts +10 -0
  23. package/Calendar/utils/getStartMonth.d.ts +6 -0
  24. package/Calendar/utils/getStartMonth.js +15 -0
  25. package/Checkbox/Checkbox.module.css +14 -14
  26. package/Checkbox/index.js +1 -1
  27. package/Counter/Counter.module.css +3 -3
  28. package/Dropdown/Dropdown.module.css +7 -7
  29. package/Dropdown/index.js +3 -2
  30. package/Grid/Grid.module.css +5 -10
  31. package/Grid/Item/Grid-Item.module.css +1 -1
  32. package/Grid/Item/index.js +4 -2
  33. package/Grid/Item/index.props.d.ts +2 -1
  34. package/Icons/Check.d.ts +4 -0
  35. package/Icons/Check.js +41 -0
  36. package/Icons/Setting.d.ts +4 -0
  37. package/Image/Image.module.css +5 -6
  38. package/InputRadio/InputRadio.module.css +7 -9
  39. package/Menu/Menu.module.css +3 -3
  40. package/Menu/components/MenuItem/MenuItem.module.css +8 -7
  41. package/Menu/components/MenuItem/index.d.ts +2 -2
  42. package/Menu/components/MenuItem/index.js +9 -9
  43. package/Menu/index.d.ts +3 -2
  44. package/Menu/index.js +3 -4
  45. package/Menu/index.props.d.ts +2 -7
  46. package/Modal/Modal.module.css +19 -19
  47. package/Modal/components/Content/Content.module.css +1 -1
  48. package/Modal/index.js +4 -4
  49. package/RadioGroup/index.d.ts +2 -1
  50. package/Select/components/MenuOverlay/index.d.ts +11 -0
  51. package/Select/components/MenuOverlay/index.js +63 -0
  52. package/Select/components/MenuOverlay/index.module.css +4 -0
  53. package/Select/components/MenuOverlayItem/index.d.ts +13 -0
  54. package/Select/components/MenuOverlayItem/index.js +45 -0
  55. package/Select/index.d.ts +1 -1
  56. package/Select/index.js +19 -34
  57. package/Select/{Select.module.css → index.module.css} +12 -17
  58. package/Select/index.props.d.ts +6 -3
  59. package/Skeleton/Skeleton.module.css +4 -4
  60. package/Switch/Switch.module.css +22 -22
  61. package/Switch/index.js +1 -1
  62. package/Theme/colors/common.d.ts +27 -0
  63. package/Theme/colors/common.js +28 -0
  64. package/Theme/colors/index.d.ts +48 -0
  65. package/Theme/colors/index.js +12 -0
  66. package/Theme/colors/theme_buenos_aires.d.ts +47 -0
  67. package/Theme/colors/theme_buenos_aires.js +40 -0
  68. package/Theme/colors/theme_default.d.ts +47 -0
  69. package/Theme/colors/theme_default.js +40 -0
  70. package/Theme/global.css +7 -5
  71. package/Theme/index.d.ts +12 -0
  72. package/Theme/themes/buenos_aires.js +7 -7
  73. package/Theme/themes/default.d.ts +12 -0
  74. package/Theme/themes/default.js +94 -82
  75. package/TimeSelect/Label/index.d.ts +8 -0
  76. package/TimeSelect/helpers.d.ts +7 -0
  77. package/TimeSelect/index.d.ts +7 -0
  78. package/TimeSelect/index.props.d.ts +4 -0
  79. package/TimeSelect/package.json +6 -0
  80. package/Typography/Typography.module.css +3 -3
  81. package/Typography/index.d.ts +2 -2
  82. package/Typography/index.js +3 -3
  83. package/Typography/index.props.d.ts +2 -1
  84. package/base/BaseInput/BaseInput.module.css +4 -4
  85. package/base/BaseInput/index.js +1 -1
  86. package/base/InputRoot/InputRoot.module.css +22 -20
  87. package/base/InputRoot/index.js +5 -5
  88. package/esm/Badge/Badge.module.css +13 -15
  89. package/esm/Badge/Control/Control.module.css +1 -1
  90. package/esm/Badge/Control/index.js +2 -2
  91. package/esm/Badge/index.js +2 -2
  92. package/esm/Button/Button.module.css +44 -30
  93. package/esm/Button/index.js +5 -5
  94. package/esm/Button/index.props.d.ts +1 -1
  95. package/esm/Calendar/components/ContinueButton/index.d.ts +10 -0
  96. package/esm/Calendar/components/ContinueButton/index.js +37 -0
  97. package/esm/Calendar/components/ContinueButton/index.module.css +4 -0
  98. package/esm/Calendar/components/Month/Month.d.ts +15 -0
  99. package/esm/Calendar/components/Month/Month.js +116 -0
  100. package/esm/Calendar/components/Month/index.module.css +143 -0
  101. package/esm/Calendar/components/Presets/index.d.ts +19 -0
  102. package/esm/Calendar/components/Presets/index.js +42 -0
  103. package/esm/Calendar/components/Presets/index.module.css +28 -0
  104. package/esm/Calendar/index.d.ts +20 -0
  105. package/esm/Calendar/index.js +186 -0
  106. package/esm/Calendar/index.module.css +98 -0
  107. package/esm/Calendar/utils/getMonthWeeks.d.ts +20 -0
  108. package/esm/Calendar/utils/getMonthWeeks.js +79 -0
  109. package/esm/Calendar/utils/getNumberOfMonthsBetweenDates.d.ts +4 -0
  110. package/esm/Calendar/utils/getNumberOfMonthsBetweenDates.js +19 -0
  111. package/esm/Calendar/utils/getPresets.d.ts +10 -0
  112. package/esm/Calendar/utils/getStartMonth.d.ts +6 -0
  113. package/esm/Calendar/utils/getStartMonth.js +13 -0
  114. package/esm/Checkbox/Checkbox.module.css +14 -14
  115. package/esm/Checkbox/index.js +9 -9
  116. package/esm/ClickOutside/index.js +3 -3
  117. package/esm/Counter/Counter.module.css +3 -3
  118. package/esm/Counter/index.js +8 -8
  119. package/esm/DotsLoader/index.js +6 -6
  120. package/esm/Dropdown/Dropdown.module.css +7 -7
  121. package/esm/Dropdown/index.js +9 -8
  122. package/esm/Grid/Grid.module.css +5 -10
  123. package/esm/Grid/Item/Grid-Item.module.css +1 -1
  124. package/esm/Grid/Item/index.js +6 -4
  125. package/esm/Grid/Item/index.props.d.ts +2 -1
  126. package/esm/Grid/index.js +2 -2
  127. package/esm/Icons/Cart.js +3 -3
  128. package/esm/Icons/Check.d.ts +4 -0
  129. package/esm/Icons/Check.js +33 -0
  130. package/esm/Icons/Chevron.js +3 -3
  131. package/esm/Icons/Close.js +3 -3
  132. package/esm/Icons/EyeClosed.js +3 -3
  133. package/esm/Icons/EyeOpen.js +4 -4
  134. package/esm/Icons/Help.js +3 -3
  135. package/esm/Icons/Info.js +3 -3
  136. package/esm/Icons/Minus.js +3 -3
  137. package/esm/Icons/More.js +5 -5
  138. package/esm/Icons/Plus.js +5 -5
  139. package/esm/Icons/Setting.d.ts +4 -0
  140. package/esm/Icons/Trash.js +3 -3
  141. package/esm/Icons/User.js +4 -4
  142. package/esm/Image/Image.module.css +5 -6
  143. package/esm/Image/index.js +4 -4
  144. package/esm/Input/index.js +4 -4
  145. package/esm/InputRadio/InputRadio.module.css +7 -9
  146. package/esm/InputRadio/index.js +7 -7
  147. package/esm/Menu/Menu.module.css +3 -3
  148. package/esm/Menu/components/MenuItem/MenuItem.module.css +8 -7
  149. package/esm/Menu/components/MenuItem/index.d.ts +2 -2
  150. package/esm/Menu/components/MenuItem/index.js +11 -11
  151. package/esm/Menu/index.d.ts +3 -2
  152. package/esm/Menu/index.js +5 -6
  153. package/esm/Menu/index.props.d.ts +2 -7
  154. package/esm/Modal/Modal.module.css +19 -19
  155. package/esm/Modal/components/Close/index.js +2 -2
  156. package/esm/Modal/components/Content/Content.module.css +1 -1
  157. package/esm/Modal/components/Content/index.js +2 -2
  158. package/esm/Modal/components/Title/index.js +3 -3
  159. package/esm/Modal/index.js +13 -13
  160. package/esm/RadioGroup/Radio.js +2 -2
  161. package/esm/RadioGroup/index.d.ts +2 -1
  162. package/esm/RadioGroup/index.js +3 -3
  163. package/esm/Select/components/MenuOverlay/index.d.ts +11 -0
  164. package/esm/Select/components/MenuOverlay/index.js +53 -0
  165. package/esm/Select/components/MenuOverlay/index.module.css +4 -0
  166. package/esm/Select/components/MenuOverlayItem/index.d.ts +13 -0
  167. package/esm/Select/components/MenuOverlayItem/index.js +37 -0
  168. package/esm/Select/index.d.ts +1 -1
  169. package/esm/Select/index.js +26 -41
  170. package/esm/Select/{Select.module.css → index.module.css} +12 -17
  171. package/esm/Select/index.props.d.ts +6 -3
  172. package/esm/Separator/index.js +2 -2
  173. package/esm/Skeleton/Skeleton.module.css +4 -4
  174. package/esm/Skeleton/index.js +3 -3
  175. package/esm/Switch/Switch.module.css +22 -22
  176. package/esm/Switch/index.js +6 -6
  177. package/esm/Theme/colors/common.d.ts +27 -0
  178. package/esm/Theme/colors/common.js +20 -0
  179. package/esm/Theme/colors/index.d.ts +48 -0
  180. package/esm/Theme/colors/index.js +8 -0
  181. package/esm/Theme/colors/theme_buenos_aires.d.ts +47 -0
  182. package/esm/Theme/colors/theme_buenos_aires.js +31 -0
  183. package/esm/Theme/colors/theme_default.d.ts +47 -0
  184. package/esm/Theme/colors/theme_default.js +31 -0
  185. package/esm/Theme/global.css +7 -5
  186. package/esm/Theme/index.d.ts +12 -0
  187. package/esm/Theme/themes/buenos_aires.js +1 -1
  188. package/esm/Theme/themes/default.d.ts +12 -0
  189. package/esm/Theme/themes/default.js +13 -1
  190. package/esm/TimeSelect/Label/index.d.ts +8 -0
  191. package/esm/TimeSelect/helpers.d.ts +7 -0
  192. package/esm/TimeSelect/index.d.ts +7 -0
  193. package/esm/TimeSelect/index.props.d.ts +4 -0
  194. package/esm/Typography/Typography.module.css +3 -3
  195. package/esm/Typography/index.d.ts +2 -2
  196. package/esm/Typography/index.js +5 -5
  197. package/esm/Typography/index.props.d.ts +2 -1
  198. package/esm/base/BaseInput/BaseInput.module.css +4 -4
  199. package/esm/base/BaseInput/index.js +3 -3
  200. package/esm/base/FormField/index.js +4 -4
  201. package/esm/base/InputRoot/InputRoot.module.css +22 -20
  202. package/esm/base/InputRoot/index.js +8 -8
  203. package/esm/helpers/date/index.d.ts +11 -0
  204. package/esm/helpers/date/index.js +69 -0
  205. package/esm/index.d.ts +3 -1
  206. package/esm/index.js +2 -0
  207. package/esm/libs/numbers/leadingZeros.d.ts +4 -0
  208. package/esm/libs/numbers/leadingZeros.js +12 -0
  209. package/esm/libs/requestIdleCallback/index.d.ts +5 -0
  210. package/esm/libs/requestIdleCallback/index.js +9 -0
  211. package/esm/theme_default_variables.css +12 -0
  212. package/helpers/date/index.d.ts +11 -0
  213. package/helpers/date/index.js +79 -0
  214. package/index.d.ts +3 -1
  215. package/index.js +43 -39
  216. package/libs/numbers/leadingZeros.d.ts +4 -0
  217. package/libs/numbers/leadingZeros.js +14 -0
  218. package/libs/requestIdleCallback/index.d.ts +5 -0
  219. package/libs/requestIdleCallback/index.js +11 -0
  220. package/package.json +2 -1
  221. package/theme_default_variables.css +12 -0
  222. package/Theme/color.d.ts +0 -118
  223. package/Theme/color.js +0 -88
  224. package/esm/Theme/color.d.ts +0 -118
  225. package/esm/Theme/color.js +0 -72
@@ -0,0 +1,28 @@
1
+ .native-scroll-inner {
2
+ -webkit-overflow-scrolling: touch;
3
+ overflow-x: auto;
4
+ transform: translate3d(0, 0, 0);
5
+ }
6
+
7
+ .inner {
8
+ align-items: stretch;
9
+ display: flex;
10
+ flex-wrap: nowrap;
11
+ justify-content: space-between;
12
+ }
13
+
14
+ .item {
15
+ flex-grow: 1;
16
+ padding: 0 4px;
17
+ }
18
+ .item > button {
19
+ display: block;
20
+ padding: 0 8px;
21
+ width: 100%;
22
+ }
23
+ .item:first-child {
24
+ padding-left: 16px;
25
+ }
26
+ .item:last-child {
27
+ padding-right: 16px;
28
+ }
@@ -0,0 +1,20 @@
1
+ import React from "react";
2
+ import type { Preset } from "./components/Presets";
3
+ type ChangePayload = {
4
+ date: string;
5
+ period: number;
6
+ };
7
+ type Props = {
8
+ today: string;
9
+ selectedDate?: string;
10
+ selectedPeriod?: number;
11
+ canSelectRange?: boolean;
12
+ activeDates?: string[];
13
+ datePresets?: Preset[];
14
+ availableDates?: string[];
15
+ onChange?: (payload: ChangePayload) => void;
16
+ onCancel?: () => void;
17
+ withContinueButton?: boolean;
18
+ };
19
+ declare const Calendar: React.FC<Props>;
20
+ export default Calendar;
@@ -0,0 +1,196 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var tslib = require('tslib');
6
+ var React = require('react');
7
+ var classNames = require('classnames/bind');
8
+ var index$1 = require('../libs/requestIdleCallback/index.js');
9
+ var index = require('../helpers/date/index.js');
10
+ var Month = require('./components/Month/Month.js');
11
+ var getStartMonth = require('./utils/getStartMonth.js');
12
+ var index$2 = require('./components/Presets/index.js');
13
+ var getNumberOfMonthsBetweenDates = require('./utils/getNumberOfMonthsBetweenDates.js');
14
+ var index$3 = require('./components/ContinueButton/index.js');
15
+ var styles = require('./index.module.css');
16
+
17
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
18
+
19
+ var React__default = /*#__PURE__*/_interopDefault(React);
20
+ var classNames__default = /*#__PURE__*/_interopDefault(classNames);
21
+ var styles__default = /*#__PURE__*/_interopDefault(styles);
22
+
23
+ var clx = classNames__default.default.bind(styles__default.default);
24
+ var idleCallbackOptions = {
25
+ timeout: 1000
26
+ };
27
+ var Calendar = function Calendar(_a) {
28
+ var today = _a.today,
29
+ initialSelectedDate = _a.selectedDate,
30
+ initialSelectedPeriod = _a.selectedPeriod,
31
+ activeDates = _a.activeDates,
32
+ datePresets = _a.datePresets,
33
+ availableDates = _a.availableDates,
34
+ canSelectRange = _a.canSelectRange,
35
+ onChange = _a.onChange,
36
+ onCancel = _a.onCancel,
37
+ _b = _a.withContinueButton,
38
+ withContinueButton = _b === void 0 ? false : _b;
39
+ var $root = React.useRef(null);
40
+ var startMonth = getStartMonth.getStartMonth({
41
+ today: today,
42
+ activeDates: activeDates
43
+ });
44
+ var _c = React.useState(initialSelectedDate),
45
+ selectedDate = _c[0],
46
+ setSelectedDate = _c[1];
47
+ var _d = React.useState(initialSelectedPeriod),
48
+ selectedPeriod = _d[0],
49
+ setSelectedPeriod = _d[1];
50
+ var _e = React.useState(function () {
51
+ if (initialSelectedDate) {
52
+ return getNumberOfMonthsBetweenDates.getNumberOfMonthsBetweenDates(startMonth, initialSelectedDate);
53
+ } else if (activeDates && activeDates.length) {
54
+ return getNumberOfMonthsBetweenDates.getNumberOfMonthsBetweenDates(startMonth, activeDates.sort()[0]);
55
+ }
56
+ return 0;
57
+ }),
58
+ currentMonthOffset = _e[0],
59
+ setCurrentMonthOffset = _e[1];
60
+ var _f = React.useState(0),
61
+ contentWidth = _f[0],
62
+ setContentWidth = _f[1];
63
+ var _g = React.useState(true),
64
+ isRangeCompleted = _g[0],
65
+ setIsRangeCompleted = _g[1];
66
+ React.useEffect(function () {
67
+ var _a;
68
+ setContentWidth(((_a = $root.current) === null || _a === void 0 ? void 0 : _a.offsetWidth) || 0);
69
+ }, []);
70
+ var showPrevMonth = React.useCallback(function () {
71
+ setCurrentMonthOffset(function (prev) {
72
+ return prev - 1;
73
+ });
74
+ }, []);
75
+ var showNextMonth = React.useCallback(function () {
76
+ setCurrentMonthOffset(function (prev) {
77
+ return prev + 1;
78
+ });
79
+ }, []);
80
+ var selectDate = React.useCallback(function (date, period, rangeCompleted) {
81
+ setSelectedDate(date);
82
+ setSelectedPeriod(period);
83
+ setIsRangeCompleted(rangeCompleted);
84
+ setCurrentMonthOffset(getNumberOfMonthsBetweenDates.getNumberOfMonthsBetweenDates(startMonth, date));
85
+ }, [startMonth]);
86
+ var handleDayClick = React.useCallback(function (date) {
87
+ if (canSelectRange && selectedDate && !isRangeCompleted) {
88
+ var _a = [date, selectedDate].sort(),
89
+ startDate_1 = _a[0],
90
+ endDate = _a[1];
91
+ var period_1 = index.getDaysDiff(new Date(startDate_1), new Date(endDate)) + 1;
92
+ if (!withContinueButton && onChange) {
93
+ onChange({
94
+ date: date,
95
+ period: period_1
96
+ });
97
+ return;
98
+ }
99
+ index$1.requestIdleCallback(function () {
100
+ return selectDate(startDate_1, period_1, true);
101
+ }, idleCallbackOptions);
102
+ } else {
103
+ if (!withContinueButton && onChange) {
104
+ onChange({
105
+ date: date,
106
+ period: 1
107
+ });
108
+ return;
109
+ }
110
+ index$1.requestIdleCallback(function () {
111
+ return selectDate(date, 1, !canSelectRange);
112
+ }, idleCallbackOptions);
113
+ }
114
+ }, [canSelectRange, selectedDate, isRangeCompleted, selectDate]);
115
+ var handlePresetSelect = React.useCallback(function (preset) {
116
+ index$1.requestIdleCallback(function () {
117
+ return selectDate(preset.date, preset.period, true);
118
+ }, idleCallbackOptions);
119
+ }, [selectDate]);
120
+ var commitSelectedDates = React.useCallback(function () {
121
+ if (selectedDate && selectedPeriod) {
122
+ if (onCancel) {
123
+ onCancel();
124
+ }
125
+ if (onChange) {
126
+ onChange({
127
+ date: selectedDate,
128
+ period: selectedPeriod
129
+ });
130
+ }
131
+ }
132
+ }, [selectedDate, selectedPeriod, onChange, onCancel]);
133
+ var cancelCalendar = React.useCallback(function () {
134
+ if (onCancel) {
135
+ onCancel();
136
+ }
137
+ }, [onCancel]);
138
+ var getMonthStartDate = React.useCallback(function (shiftIndex) {
139
+ var startDate = new Date(startMonth);
140
+ startDate.setMonth(startDate.getMonth() + shiftIndex);
141
+ return startDate;
142
+ }, [startMonth]);
143
+ var commonAttrs = {
144
+ selectedDate: selectedDate,
145
+ selectedPeriod: selectedPeriod,
146
+ activeDates: activeDates,
147
+ availableDates: availableDates,
148
+ isRangeCompleted: isRangeCompleted,
149
+ onDayClick: handleDayClick
150
+ };
151
+ return /*#__PURE__*/React__default.default.createElement("div", {
152
+ className: clx(styles__default.default.root),
153
+ "data-component": "Calendar",
154
+ ref: $root
155
+ }, /*#__PURE__*/React__default.default.createElement("div", null, contentWidth ? ( /*#__PURE__*/React__default.default.createElement("div", {
156
+ "data-component": "Months",
157
+ className: clx(styles__default.default.months),
158
+ style: {
159
+ transform: "translate3D(".concat(-1 * currentMonthOffset * contentWidth, "px, 0, 0)")
160
+ }
161
+ }, [currentMonthOffset - 1, currentMonthOffset, currentMonthOffset + 1].filter(function (index) {
162
+ return index >= 0;
163
+ }).map(function (index) {
164
+ var attrs = tslib.__assign(tslib.__assign({}, commonAttrs), {
165
+ today: today,
166
+ startDate: getMonthStartDate(index),
167
+ offsetLeft: index * contentWidth
168
+ });
169
+ return /*#__PURE__*/React__default.default.createElement(Month.Month, tslib.__assign({}, attrs, {
170
+ key: "month-".concat(index)
171
+ }));
172
+ }))) : ( /*#__PURE__*/React__default.default.createElement(Month.Month, tslib.__assign({
173
+ today: today,
174
+ startDate: getMonthStartDate(currentMonthOffset),
175
+ offsetLeft: 0
176
+ }, commonAttrs))), /*#__PURE__*/React__default.default.createElement("button", {
177
+ className: clx(styles__default.default["month-control"], styles__default.default["month-control-prev"]),
178
+ onClick: showPrevMonth,
179
+ disabled: currentMonthOffset <= 0
180
+ }), /*#__PURE__*/React__default.default.createElement("button", {
181
+ className: clx(styles__default.default["month-control"], styles__default.default["month-control-next"]),
182
+ onClick: showNextMonth,
183
+ disabled: currentMonthOffset >= 11
184
+ })), datePresets && ( /*#__PURE__*/React__default.default.createElement(index$2.Presets, {
185
+ presets: datePresets,
186
+ onPresetSelect: handlePresetSelect
187
+ })), withContinueButton && ( /*#__PURE__*/React__default.default.createElement(index$3.ContinueButton, {
188
+ isChanged: selectedDate !== initialSelectedDate || selectedPeriod !== initialSelectedPeriod,
189
+ selectedDate: selectedDate,
190
+ selectedPeriod: selectedPeriod,
191
+ onContinue: commitSelectedDates,
192
+ onCancel: cancelCalendar
193
+ })));
194
+ };
195
+
196
+ exports.default = Calendar;
@@ -0,0 +1,98 @@
1
+ .root {
2
+ display: flex;
3
+ flex-direction: column;
4
+ -moz-osx-font-smoothing: grayscale;
5
+ -webkit-font-smoothing: antialiased;
6
+ gap: 16px;
7
+ min-width: 300px;
8
+ overflow: hidden;
9
+ position: relative;
10
+ text-rendering: optimizelegibility;
11
+ text-size-adjust: 100%;
12
+ }
13
+ @media (width >= 360px) {
14
+ .root {
15
+ min-width: 360px;
16
+ }
17
+ }
18
+
19
+ .month-control {
20
+ background: transparent;
21
+ border: 0;
22
+ cursor: pointer;
23
+ height: 48px;
24
+ outline: 0;
25
+ padding: 0 16px;
26
+ position: absolute;
27
+ top: 0;
28
+ width: 80px;
29
+ }
30
+ .month-control::before {
31
+ border: 0 solid #fff;
32
+ content: "";
33
+ display: block;
34
+ height: 100%;
35
+ position: absolute;
36
+ top: 0;
37
+ width: 40px;
38
+ }
39
+ .month-control::after {
40
+ background-repeat: no-repeat;
41
+ background-size: 10px 16px;
42
+ content: "";
43
+ display: inline-block;
44
+ height: 16px;
45
+ opacity: 0.8;
46
+ position: relative;
47
+ transition: opacity 0.3s ease;
48
+ width: 10px;
49
+ }
50
+ .month-control:hover::after {
51
+ opacity: 1;
52
+ }
53
+ .month-control[disabled] {
54
+ cursor: default;
55
+ opacity: 0.3;
56
+ }
57
+ .month-control[disabled]::after {
58
+ opacity: 0.3;
59
+ }
60
+
61
+ .month-control-prev {
62
+ border-left-width: 16px;
63
+ left: 0;
64
+ text-align: left;
65
+ }
66
+ .month-control-prev::before {
67
+ background: linear-gradient(to right, rgb(255, 255, 255) 0%, rgba(255, 255, 255, 0) 100%);
68
+ border-left-width: 26px;
69
+ left: 0;
70
+ }
71
+ .month-control-prev::after {
72
+ background-image: url("./assets/next-arrow.svg");
73
+ transform: rotate(180deg);
74
+ }
75
+
76
+ .month-control-next {
77
+ border-right-width: 16px;
78
+ right: 0;
79
+ text-align: right;
80
+ }
81
+ .month-control-next::before {
82
+ background: linear-gradient(to left, rgb(255, 255, 255) 0%, rgba(255, 255, 255, 0) 100%);
83
+ border-right-width: 26px;
84
+ right: 0;
85
+ }
86
+ .month-control-next::after {
87
+ background-image: url("./assets/next-arrow.svg");
88
+ }
89
+
90
+ .months {
91
+ height: 284px;
92
+ position: relative;
93
+ transition: transform 0.3s ease;
94
+ }
95
+ .months > div {
96
+ position: absolute;
97
+ top: 0;
98
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "sideEffects": false,
3
+ "module": "../esm/Calendar/index.js",
4
+ "main": "./index.js",
5
+ "types": "./index.d.ts"
6
+ }
@@ -0,0 +1,20 @@
1
+ type Day = {
2
+ day: number;
3
+ isDummy?: boolean;
4
+ isActive?: boolean;
5
+ isSelected?: boolean;
6
+ isStartOfSelection?: boolean;
7
+ isEndOfSelection?: boolean;
8
+ isInSelectedRange?: boolean;
9
+ };
10
+ type Week = Day[];
11
+ type Options = {
12
+ today: string;
13
+ startDate: Date;
14
+ activeDays?: string[];
15
+ selectedDate?: string;
16
+ selectedPeriod?: number;
17
+ availableDates?: string[];
18
+ };
19
+ export declare function getMonthWeeks(options: Options): Week[];
20
+ export {};
@@ -0,0 +1,81 @@
1
+ 'use strict';
2
+
3
+ var leadingZeros = require('../../libs/numbers/leadingZeros.js');
4
+
5
+ var dummyDay = {
6
+ day: 0,
7
+ isDummy: true
8
+ };
9
+ function getMonthWeeks(options) {
10
+ var _a = getSelectedDates(options),
11
+ selectedDateFrom = _a.selectedDateFrom,
12
+ selectedDateTo = _a.selectedDateTo;
13
+ var currMonth = options.startDate.getMonth();
14
+ var weeks = [[]];
15
+ var currWeek = weeks[weeks.length - 1];
16
+ var currDate = new Date(options.startDate);
17
+ {
18
+ // Prepending wirst week with dummy days
19
+ var dayInWeek = getDateDayInWeek(currDate);
20
+ while (dayInWeek) {
21
+ weeks[0].push(dummyDay);
22
+ dayInWeek -= 1;
23
+ }
24
+ }
25
+ while (currDate.getMonth() === currMonth) {
26
+ var currCompareDate = formatToComparable(currDate);
27
+ var isStartOfSelection = currCompareDate === selectedDateFrom;
28
+ var isEndOfSelection = currCompareDate === selectedDateTo;
29
+ currWeek.push({
30
+ day: currDate.getDate(),
31
+ isActive: checkIfDateIsAvailable(currCompareDate, options),
32
+ isSelected: isStartOfSelection || isEndOfSelection,
33
+ isStartOfSelection: isStartOfSelection,
34
+ isEndOfSelection: isEndOfSelection,
35
+ isInSelectedRange: !!selectedDateFrom && !!selectedDateTo && currCompareDate > selectedDateFrom && currCompareDate < selectedDateTo
36
+ });
37
+ if (currWeek.length === 7) {
38
+ currWeek = [];
39
+ weeks.push(currWeek);
40
+ }
41
+ currDate.setDate(currDate.getDate() + 1);
42
+ }
43
+ {
44
+ var lastWeek = weeks[weeks.length - 1];
45
+ while (lastWeek.length < 7) {
46
+ lastWeek.push(dummyDay);
47
+ }
48
+ }
49
+ return weeks;
50
+ }
51
+ function getDateDayInWeek(date) {
52
+ var day = date.getDay() - 1;
53
+ return day >= 0 ? day : 6;
54
+ }
55
+ function getSelectedDates(options) {
56
+ var period = options.selectedPeriod ? options.selectedPeriod - 1 : 0;
57
+ var dateFrom = options.selectedDate ? new Date(options.selectedDate) : undefined;
58
+ var dateTo = dateFrom ? new Date(dateFrom.getTime() + 24 * 60 * 60 * 1000 * period) : undefined;
59
+ return {
60
+ selectedDateFrom: dateFrom ? formatToComparable(dateFrom) : undefined,
61
+ selectedDateTo: dateTo ? formatToComparable(dateTo) : undefined
62
+ };
63
+ }
64
+ function formatToComparable(date) {
65
+ return new Date([date.getFullYear(), doubleDigits(date.getMonth() + 1), doubleDigits(date.getDate())].join("-")).getTime();
66
+ }
67
+ function doubleDigits(v) {
68
+ return leadingZeros.leadingZeros(v, 2);
69
+ }
70
+ function checkIfDateIsAvailable(date, options) {
71
+ var availableDates = options.availableDates,
72
+ today = options.today;
73
+ var todayCompatible = formatToComparable(new Date(today));
74
+ var availableDatesComparable = availableDates && availableDates.length > 0 && availableDates.map(function (_date) {
75
+ return formatToComparable(new Date(_date));
76
+ });
77
+ var isAvailableDate = availableDatesComparable ? availableDatesComparable.includes(date) : true;
78
+ return date >= todayCompatible && isAvailableDate;
79
+ }
80
+
81
+ exports.getMonthWeeks = getMonthWeeks;
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Returns number of months between dates
3
+ */
4
+ export declare function getNumberOfMonthsBetweenDates(startDate: string, activeDate: string): number;
@@ -0,0 +1,21 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * Returns number of months between dates
5
+ */
6
+ function getNumberOfMonthsBetweenDates(startDate, activeDate) {
7
+ var start = new Date(normalizeDate(startDate));
8
+ var active = new Date(normalizeDate(activeDate));
9
+ var offset = active > start ? 1 : -1;
10
+ var count = 0;
11
+ while (start.getFullYear() !== active.getFullYear() || start.getMonth() !== active.getMonth()) {
12
+ count += offset;
13
+ start.setMonth(start.getMonth() + offset);
14
+ }
15
+ return count;
16
+ }
17
+ function normalizeDate(date) {
18
+ return date.split("-").slice(0, 2).join("-");
19
+ }
20
+
21
+ exports.getNumberOfMonthsBetweenDates = getNumberOfMonthsBetweenDates;
@@ -0,0 +1,10 @@
1
+ export type DatePreset = {
2
+ name: string;
3
+ date: string;
4
+ period: number;
5
+ };
6
+ export declare function getPresets(presets: string[]): ({
7
+ name: string;
8
+ date: string;
9
+ period: number;
10
+ } | undefined)[] | undefined;
@@ -0,0 +1,6 @@
1
+ type Options = {
2
+ today?: string;
3
+ activeDates?: string[];
4
+ };
5
+ export declare function getStartMonth({ today, activeDates, }: Options): string;
6
+ export {};
@@ -0,0 +1,15 @@
1
+ 'use strict';
2
+
3
+ var leadingZeros = require('../../libs/numbers/leadingZeros.js');
4
+
5
+ function getStartMonth(_a) {
6
+ var _b = _a.today,
7
+ today = _b === void 0 ? "" : _b,
8
+ _c = _a.activeDates,
9
+ activeDates = _c === void 0 ? [""] : _c;
10
+ var sortedDates = [].concat(activeDates, today).filter(Boolean).sort();
11
+ var date = new Date(sortedDates[0]);
12
+ return [date.getFullYear(), leadingZeros.leadingZeros(date.getMonth() + 1, 2)].join("-");
13
+ }
14
+
15
+ exports.getStartMonth = getStartMonth;
@@ -8,10 +8,10 @@
8
8
  }
9
9
 
10
10
  .label {
11
+ cursor: pointer;
11
12
  display: inline-flex;
12
13
  line-height: 18px;
13
14
  position: relative;
14
- cursor: pointer;
15
15
  }
16
16
 
17
17
  .text {
@@ -20,7 +20,7 @@
20
20
  margin-inline-start: 8px;
21
21
  }
22
22
 
23
- .fakeCheckbox {
23
+ .fake-checkbox {
24
24
  background-color: var(--palette-white);
25
25
  block-size: 16px;
26
26
  border: 1px solid var(--palette-bg-3);
@@ -35,20 +35,20 @@
35
35
  }
36
36
 
37
37
  .checked {
38
- border: 0;
39
38
  background-color: var(--checkbox-primary-background-color-checked);
39
+ border: 0;
40
40
  }
41
41
  .checked::after {
42
- box-sizing: content-box;
43
- content: "";
44
- display: block;
45
- position: absolute;
46
42
  block-size: 8px;
47
43
  border-block-end: 2px solid var(--palette-black);
48
44
  border-inline-end: 2px solid var(--palette-black);
45
+ box-sizing: content-box;
46
+ content: "";
47
+ display: block;
49
48
  inline-size: 4px;
50
49
  inset-block-start: 45%;
51
50
  inset-inline-start: 50%;
51
+ position: absolute;
52
52
  transform: translate(-50%, -50%) rotate(45deg);
53
53
  }
54
54
 
@@ -65,25 +65,25 @@
65
65
  inset-inline-start: -9999px;
66
66
  position: absolute;
67
67
  }
68
- .control:disabled + .fakeCheckbox::after {
68
+ .control:disabled + .fake-checkbox::after {
69
69
  border-block-end: 2px solid var(--palette-bg-4);
70
70
  border-inline-end: 2px solid var(--palette-bg-4);
71
71
  }
72
- .control:hover:not(:disabled) + .fakeCheckbox {
72
+ .control:hover:not(:disabled) + .fake-checkbox {
73
73
  border-color: var(--palette-bg-3);
74
74
  }
75
- .control_variant_primary:focus:not(:disabled) + .fakeCheckbox {
75
+ .control_variant_primary:focus:not(:disabled) + .fake-checkbox {
76
76
  box-shadow: 0 0 0 2px var(--checkbox-primary-box-shadow-focused);
77
77
  }
78
- .control_variant_primary:hover:not(:disabled) + .fakeCheckbox {
78
+ .control_variant_primary:hover:not(:disabled) + .fake-checkbox {
79
79
  background-color: var(--checkbox-primary-background-color-hovered);
80
80
  }
81
- .control_variant_primary:active:not(:disabled) + .fakeCheckbox {
81
+ .control_variant_primary:active:not(:disabled) + .fake-checkbox {
82
82
  background-color: var(--checkbox-primary-background-color-active);
83
83
  border-color: var(--checkbox-primary-border-color-active);
84
84
  box-shadow: var(--checkbox-primary-box-shadow-active);
85
85
  }
86
- .control_variant_primary:disabled + .fakeCheckbox {
87
- z-index: 1;
86
+ .control_variant_primary:disabled + .fake-checkbox {
88
87
  background-color: var(--checkbox-primary-background-color-disabled);
88
+ z-index: 1;
89
89
  }
package/Checkbox/index.js CHANGED
@@ -46,7 +46,7 @@ var Checkbox = function Checkbox(_a) {
46
46
  onBlur: onBlur,
47
47
  disabled: disabled
48
48
  }), /*#__PURE__*/React__default.default.createElement("span", {
49
- className: clx(styles__default.default.fakeCheckbox, (_c = {}, _c["variant_".concat(variant, "_disabled")] = disabled ? 1 : 0, _c["variant_".concat(variant, "_error")] = isError ? 1 : 0, _c["variant_".concat(variant, "_checked")] = checked ? 1 : 0, _c.checked = checked ? 1 : 0, _c["variant_".concat(variant)] = !!variant, _c))
49
+ className: clx(styles__default.default["fake-checkbox"], (_c = {}, _c["variant_".concat(variant, "_disabled")] = disabled ? 1 : 0, _c["variant_".concat(variant, "_error")] = isError ? 1 : 0, _c["variant_".concat(variant, "_checked")] = checked ? 1 : 0, _c.checked = checked ? 1 : 0, _c["variant_".concat(variant)] = !!variant, _c))
50
50
  }), /*#__PURE__*/React__default.default.createElement("span", {
51
51
  className: clx(styles__default.default.text)
52
52
  }, label)));
@@ -18,17 +18,17 @@
18
18
  align-items: center;
19
19
  block-size: 38px;
20
20
  display: flex;
21
- justify-content: space-between;
22
21
  gap: 4px;
22
+ justify-content: space-between;
23
23
  }
24
24
  .control_fullWidth {
25
25
  inline-size: 100%;
26
26
  }
27
27
 
28
28
  .value {
29
- font-weight: 500;
30
29
  font-size: 18px;
30
+ font-weight: 500;
31
31
  inline-size: 24px;
32
- user-select: none;
33
32
  text-align: center;
33
+ user-select: none;
34
34
  }
@@ -1,13 +1,13 @@
1
- .popperContainer {
2
- padding-top: 2px;
1
+ .popper-container {
3
2
  padding-bottom: 2px;
3
+ padding-top: 2px;
4
4
  }
5
5
 
6
- .overlayContainer {
7
- border-width: 1px;
8
- border-style: solid;
6
+ .overlay-container {
7
+ background-color: var(--palette-white);
8
+ border-color: var(--palette-bg-2);
9
9
  border-radius: 4px;
10
+ border-style: solid;
11
+ border-width: 1px;
10
12
  overflow: hidden;
11
- border-color: var(--palette-bg-2);
12
- background-color: var(--palette-white);
13
13
  }
package/Dropdown/index.js CHANGED
@@ -126,7 +126,8 @@ var Dropdown = function Dropdown(_a) {
126
126
  onClick: onClickOutside
127
127
  }, /*#__PURE__*/React__default.default.createElement("div", tslib.__assign({
128
128
  ref: setPopperElement,
129
- className: classNames__default.default(dropDownStyles__default.default.popperContainer),
129
+ "data-component": "popper-container",
130
+ className: classNames__default.default(dropDownStyles__default.default["popper-container"]),
130
131
  style: tslib.__assign(tslib.__assign(tslib.__assign({}, styles.popper), {
131
132
  zIndex: zIndex,
132
133
  minWidth: controlElement === null || controlElement === void 0 ? void 0 : controlElement.offsetWidth
@@ -135,7 +136,7 @@ var Dropdown = function Dropdown(_a) {
135
136
  }),
136
137
  tabIndex: 0
137
138
  }, attributes.popper), /*#__PURE__*/React__default.default.createElement("div", {
138
- className: classNames__default.default(dropDownStyles__default.default.overlayContainer),
139
+ className: classNames__default.default(dropDownStyles__default.default["overlay-container"]),
139
140
  onClick: onClickOverlay
140
141
  }, overlay))))));
141
142
  };