@majoo-ui/react 2.0.1 → 2.1.0-rc.1

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 (202) hide show
  1. package/charts.esm.js +3 -1453
  2. package/colors/Colors.esm.js +93 -0
  3. package/components/accordion/Accordion.esm.js +109 -0
  4. package/components/alertDialog/AlertDialog.esm.js +440 -0
  5. package/components/avatar/Avatar.esm.js +83 -0
  6. package/components/badge/Badge.esm.js +255 -0
  7. package/components/banner/Banner.esm.js +341 -0
  8. package/components/barChart/BarChart.esm.js +212 -0
  9. package/components/breadcrumb/Breadcrumb.esm.js +65 -0
  10. package/components/breadcrumb/index.esm.js +19 -0
  11. package/components/button/Button.esm.js +331 -0
  12. package/components/buttonGroup/ButtonGroup.esm.js +350 -0
  13. package/components/card/Card.esm.js +236 -0
  14. package/components/chart/assets/data_kosong.png.esm.js +3 -0
  15. package/components/chart/lineChart/LineChart.esm.js +358 -0
  16. package/components/chart/lineChart/components/Comparator.esm.js +82 -0
  17. package/components/chart/lineChart/components/ComparatorController.esm.js +112 -0
  18. package/components/chart/lineChart/components/ComparatorItem.esm.js +104 -0
  19. package/components/chart/lineChart/components/ProductList.esm.js +78 -0
  20. package/components/chart/lineChart/components/TitleLegend.esm.js +107 -0
  21. package/components/chart/lineChart/components/Tooltip.esm.js +90 -0
  22. package/components/chart/utils/index.esm.js +109 -0
  23. package/components/checkboxTable/CheckboxTable.esm.js +287 -0
  24. package/components/colorPicker/ColorPicker.esm.js +342 -0
  25. package/components/colorPicker/InputColorPicker.esm.js +120 -0
  26. package/components/colorPicker/assets/img_colormap.gif.esm.js +3 -0
  27. package/components/colorPicker/components/ColorFields.esm.js +144 -0
  28. package/components/colorPicker/components/ColorMap.esm.js +1188 -0
  29. package/components/contentEditor/ContentEditor.esm.js +251 -0
  30. package/components/contentEditor/assets/Inline-code-outline.svg.esm.js +3 -0
  31. package/components/contentEditor/assets/Link-outline.svg.esm.js +3 -0
  32. package/components/contentEditor/assets/List-bulleted-outline.svg.esm.js +3 -0
  33. package/components/contentEditor/assets/List-numbered-outline.svg.esm.js +3 -0
  34. package/components/contentEditor/assets/Redo-outline.svg.esm.js +3 -0
  35. package/components/contentEditor/assets/Text-bold-filled.svg.esm.js +3 -0
  36. package/components/contentEditor/assets/Text-clear-format-outline.svg.esm.js +3 -0
  37. package/components/contentEditor/assets/Text-italic-outline.svg.esm.js +3 -0
  38. package/components/contentEditor/assets/Text-strikethrough-outline.svg.esm.js +3 -0
  39. package/components/contentEditor/assets/Text-underline-outline.svg.esm.js +3 -0
  40. package/components/contentEditor/assets/Undo-outline.svg.esm.js +3 -0
  41. package/components/contextMenu/ContextMenu.esm.js +298 -0
  42. package/components/datePicker/AdvancedOption.esm.js +37 -0
  43. package/components/datePicker/CustomDatePicker.esm.js +121 -0
  44. package/components/datePicker/DatePicker.esm.js +244 -0
  45. package/components/datePicker/DatePickerMulti.esm.js +70 -0
  46. package/components/datePicker/InputDatePicker.esm.js +290 -0
  47. package/components/datePicker/InputDateRangePicker.esm.js +174 -0
  48. package/components/datePicker/components/Calendar.esm.js +654 -0
  49. package/components/datePicker/components/CalendarMulti.esm.js +407 -0
  50. package/components/datePicker/components/CalendarTimePicker.esm.js +104 -0
  51. package/components/datePicker/components/DateNumber.esm.js +89 -0
  52. package/components/datePicker/components/MobileCalendar.esm.js +522 -0
  53. package/components/datePicker/state/reducer.esm.js +286 -0
  54. package/components/datePicker/timePicker/InputTimePicker.esm.js +205 -0
  55. package/components/datePicker/timePicker/TimePicker.esm.js +481 -0
  56. package/components/devicePreview/DevicePreview.esm.js +631 -0
  57. package/components/devicePreview/deviceFrame/android-transparant.png.esm.js +3 -0
  58. package/components/devicePreview/deviceFrame/android-wide-transparant.png.esm.js +3 -0
  59. package/components/devicePreview/deviceFrame/bg-email.png.esm.js +3 -0
  60. package/components/devicePreview/deviceFrame/bg-notification.png.esm.js +3 -0
  61. package/components/devicePreview/deviceFrame/bg-sms.png.esm.js +3 -0
  62. package/components/devicePreview/deviceFrame/bg-whatsapp.png.esm.js +3 -0
  63. package/components/devicePreview/deviceFrame/desktop-transparant.png.esm.js +3 -0
  64. package/components/devicePreview/deviceFrame/ic-majoo-profpic.png.esm.js +3 -0
  65. package/components/devicePreview/deviceFrame/iphone-transparant.png.esm.js +3 -0
  66. package/components/dialog/Dialog.esm.js +106 -0
  67. package/components/drawer/Drawer.esm.js +294 -0
  68. package/components/dropdownMenu/DropdownMenu.esm.js +281 -0
  69. package/components/editableTable/EditableMobile.esm.js +361 -0
  70. package/components/editableTable/EditableTable.esm.js +618 -0
  71. package/components/editableTable/transition.esm.js +37 -0
  72. package/components/form/components/FormGroup/FormGroup.esm.js +142 -0
  73. package/components/form/components/FormHelper/Helper.esm.js +50 -0
  74. package/components/form/components/FormLabel/Label.esm.js +90 -0
  75. package/components/form/components/InputAddon/InputAddon.esm.js +105 -0
  76. package/components/form/components/InputCheckbox/CheckboxGroup.esm.js +60 -0
  77. package/components/form/components/InputCheckbox/InputCheckbox.esm.js +129 -0
  78. package/components/form/components/InputCheckbox/icon/CheckOutline.esm.js +33 -0
  79. package/components/form/components/InputCheckbox/icon/MinusOutline.esm.js +33 -0
  80. package/components/form/components/InputCombobox/InputCombobox.esm.js +169 -0
  81. package/components/form/components/InputCounter/InputCounter.esm.js +226 -0
  82. package/components/form/components/InputCreatable/InputCreatable.esm.js +229 -0
  83. package/components/form/components/InputDateRange/InputDateRange.esm.js +46 -0
  84. package/components/form/components/InputElement/InputElement.esm.js +35 -0
  85. package/components/form/components/InputGroup/InputGroup.esm.js +188 -0
  86. package/components/form/components/InputLetter/InputLetter.esm.js +68 -0
  87. package/components/form/components/InputNumber/InputNumber.esm.js +248 -0
  88. package/components/form/components/InputNumber/NumberFormat.esm.js +1263 -0
  89. package/components/form/components/InputOTP/InputOTP.esm.js +70 -0
  90. package/components/form/components/InputRadio/InputRadio.esm.js +273 -0
  91. package/components/form/components/InputRadio/InputRadioGroup.esm.js +35 -0
  92. package/components/form/components/InputRadio/context.esm.js +5 -0
  93. package/components/form/components/InputResourceList/InputResourceList.esm.js +429 -0
  94. package/components/form/components/InputSearchbox/CloseFilled.esm.js +34 -0
  95. package/components/form/components/InputSearchbox/InputSearchbox.esm.js +90 -0
  96. package/components/form/components/InputSearchbox/SearchOutline.esm.js +26 -0
  97. package/components/form/components/InputSelect/InputSelect.esm.js +964 -0
  98. package/components/form/components/InputSelectCheck/InputSelectCheck.esm.js +1388 -0
  99. package/components/form/components/InputSelectCheck/OptionGroupItem.esm.js +39 -0
  100. package/components/form/components/InputSelectCheck/icon/CheckOutline.esm.js +33 -0
  101. package/components/form/components/InputSelectTag/InputSelectTag.esm.js +62 -0
  102. package/components/form/components/InputSignature/InputSignature.esm.js +122 -0
  103. package/components/form/components/InputSignature/SignatureModal.esm.js +67 -0
  104. package/components/form/components/InputSwitch/InputSwitch.esm.js +96 -0
  105. package/components/form/components/InputSwitch/InputSwitchWithImage.esm.js +136 -0
  106. package/components/form/components/InputTags/InputTags.esm.js +268 -0
  107. package/components/form/components/InputText/InputText.esm.js +197 -0
  108. package/components/form/components/InputTextArea/InputTextArea.esm.js +77 -0
  109. package/components/heading/Heading.esm.js +64 -0
  110. package/components/iconButton/IconButton.esm.js +71 -0
  111. package/components/image/Image.esm.js +141 -0
  112. package/components/link/Link.esm.js +59 -0
  113. package/components/loadingBar/LoadingBar.esm.js +113 -0
  114. package/components/mapPicker/InputMapPicker.esm.js +160 -0
  115. package/components/mapPicker/MapPicker.esm.js +122 -0
  116. package/components/mapPicker/MapPicker.styles.esm.js +70 -0
  117. package/components/mapPicker/assets/images/Mapsicle.png.esm.js +3 -0
  118. package/components/mapPicker/components/AddressCard.esm.js +25 -0
  119. package/components/mapPicker/components/ButtonSelect.esm.js +46 -0
  120. package/components/mapPicker/components/ChangeView.esm.js +20 -0
  121. package/components/mapPicker/components/InputSearch.esm.js +74 -0
  122. package/components/mapPicker/components/MarkerIcon.esm.js +22 -0
  123. package/components/mapPicker/components/MarkerSvg.esm.js +62 -0
  124. package/components/mapPicker/components/ZoomControls.esm.js +36 -0
  125. package/components/mapPicker/hooks/useMapSearch.esm.js +161 -0
  126. package/components/modalDialog/ModalDialog.esm.js +247 -0
  127. package/components/notificationBadge/NotificationBadge.esm.js +149 -0
  128. package/components/pageDialog/PageDialog.esm.js +291 -0
  129. package/components/pageDialog/logo.svg.esm.js +3 -0
  130. package/components/pagination/Pagination.esm.js +94 -0
  131. package/components/pagination/PaginationButton.esm.js +346 -0
  132. package/components/pagination/PaginationInfo.esm.js +146 -0
  133. package/components/paper/Paper.esm.js +76 -0
  134. package/components/paragraph/Paragraph.esm.js +52 -0
  135. package/components/pieChart/PieChart.esm.js +287 -0
  136. package/components/popover/Popover.esm.js +142 -0
  137. package/components/progress/Progress.esm.js +170 -0
  138. package/components/progressIndicator/ProgressIndicator.esm.js +287 -0
  139. package/components/scrollSync/ScrollSync.esm.js +172 -0
  140. package/components/scrollSync/ScrollSyncNode.esm.js +87 -0
  141. package/components/scrollSync/utils.esm.js +9 -0
  142. package/components/separator/Separator.esm.js +43 -0
  143. package/components/skeleton/Skeleton.esm.js +131 -0
  144. package/components/slider/Slider.esm.js +345 -0
  145. package/components/stepWizard/StepWizard.esm.js +451 -0
  146. package/components/stepWizard/index.esm.js +14 -0
  147. package/components/table/MobileTable.esm.js +415 -0
  148. package/components/table/Table.esm.js +1472 -0
  149. package/components/table/components/columns/DateColumn.esm.js +26 -0
  150. package/components/table/components/columns/DecimalColumn.esm.js +36 -0
  151. package/components/table/components/columns/PriceColumn.esm.js +57 -0
  152. package/components/table/components/columns/RowDraggableColumn.esm.js +24 -0
  153. package/components/table/components/columns/RowExpanderColumn.esm.js +32 -0
  154. package/components/table/components/columns/RowExpanderMultipleColumn.esm.js +24 -0
  155. package/components/table/components/columns/RowMenuColumn.esm.js +101 -0
  156. package/components/table/components/columns/RowSelectionCallbackColumn.esm.js +38 -0
  157. package/components/table/components/columns/RowSelectionColumn.esm.js +34 -0
  158. package/components/table/images/img-emptydata.webp.esm.js +3 -0
  159. package/components/table/images/img-emptysearchdata.webp.esm.js +3 -0
  160. package/components/tableOfContent/TableOfContent.esm.js +267 -0
  161. package/components/tableOfContent/index.esm.js +18 -0
  162. package/components/tableOfContent/transition.esm.js +38 -0
  163. package/components/tabs/Tabs.esm.js +282 -0
  164. package/components/tag/Tag.esm.js +161 -0
  165. package/components/tagList/TagList.esm.js +90 -0
  166. package/components/tagStatus/TagStatus.esm.js +134 -0
  167. package/components/text/Text.esm.js +140 -0
  168. package/components/toast/Toast.esm.js +297 -0
  169. package/components/toast/ToastContainer.esm.js +73 -0
  170. package/components/toast/context/ToastContext.esm.js +5 -0
  171. package/components/toast/context/ToastProvider.esm.js +96 -0
  172. package/components/tooltip/Tooltip.esm.js +175 -0
  173. package/components/upload/Upload.esm.js +1103 -0
  174. package/components/upload/utils/canvasPreview.esm.js +39 -0
  175. package/components/upload/utils/imgPreview.esm.js +21 -0
  176. package/config/stitches.config.esm.js +216 -0
  177. package/editor.esm.js +1 -264
  178. package/hooks/useListOption/useListOption.esm.js +56 -0
  179. package/hooks/useToggle/useToggle.esm.js +8 -0
  180. package/index.esm.js +106 -42293
  181. package/layout/box/Box.esm.js +24 -0
  182. package/layout/flex/Flex.esm.js +135 -0
  183. package/layout/grid/Grid.esm.js +270 -0
  184. package/layout/pageContainer/PageContainer.esm.js +60 -0
  185. package/majoo-provider/MajooProvider.esm.js +42 -0
  186. package/majoo-provider/ThemeProvider.esm.js +41 -0
  187. package/majoo-provider/globalStyles.esm.js +242 -0
  188. package/majoo-provider/styles/modern-normalize.esm.js +95 -0
  189. package/map.esm.js +2 -734
  190. package/package.json +8 -4
  191. package/utils/calendar.esm.js +26 -0
  192. package/utils/element.esm.js +21 -0
  193. package/utils/object.esm.js +12 -0
  194. package/utils/request.esm.js +74 -0
  195. package/utils/strings.esm.js +6 -0
  196. package/{useMediaQuery.esm.js → utils/useMediaQuery.esm.js} +1 -1
  197. package/utils/useNavigatorOnline.esm.js +19 -0
  198. package/utils/variant.esm.js +12 -0
  199. package/wrapper/ConditionalWrapper.esm.js +9 -0
  200. package/ModalDialog.esm.js +0 -2669
  201. package/Separator.esm.js +0 -3002
  202. package/stitches.config.esm.js +0 -2284
@@ -0,0 +1,654 @@
1
+ import 'core-js/modules/es.iterator.constructor.js';
2
+ import 'core-js/modules/es.iterator.map.js';
3
+ import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
4
+ import { ChevronLeftOutline, ChevronRightOutline } from '@majoo-ui/icons';
5
+ import moment from 'moment';
6
+ import React__default, { useState, useEffect, useMemo, Fragment as Fragment$1 } from 'react';
7
+ import { Button } from '../../button/Button.esm.js';
8
+ import Heading from '../../heading/Heading.esm.js';
9
+ import Paragraph from '../../paragraph/Paragraph.esm.js';
10
+ import { Separator } from '../../separator/Separator.esm.js';
11
+ import Text from '../../text/Text.esm.js';
12
+ import { styled } from '../../../config/stitches.config.esm.js';
13
+ import Box from '../../../layout/box/Box.esm.js';
14
+ import Flex from '../../../layout/flex/Flex.esm.js';
15
+ import { Grid } from '../../../layout/grid/Grid.esm.js';
16
+ import { getCalendarStartYearRange, getCalendarStartYear, weekdayNamesShortEng, weekdayNamesShortId, monthNamesFullEng, monthNamesFullId, yearRangesList, toDateFormat } from '../../../utils/calendar.esm.js';
17
+ import DateNumber from './DateNumber.esm.js';
18
+ import { useTranslation } from 'react-i18next';
19
+ import CalendarTimePicker from './CalendarTimePicker.esm.js';
20
+
21
+ const getVariant = ({
22
+ selectable,
23
+ selected,
24
+ date
25
+ }, month, selectedDate) => {
26
+ let variant = 'default';
27
+ if (selected) {
28
+ variant = 'selected';
29
+ }
30
+ if (!selectable) {
31
+ variant = 'disabled';
32
+ }
33
+ if (date.getMonth() !== month) {
34
+ variant = 'neutral';
35
+ }
36
+ if (selectedDate && selectedDate.length === 2 && selectedDate[0].toDateString() !== selectedDate[1].toDateString()) {
37
+ if (selectedDate[0].toDateString() === date.toDateString()) {
38
+ variant = 'start';
39
+ } else if (selectedDate[1].toDateString() === date.toDateString()) {
40
+ variant = 'end';
41
+ } else if (selectedDate[0] < date && date < selectedDate[1]) {
42
+ variant = 'road';
43
+ }
44
+ }
45
+ return variant;
46
+ };
47
+ const ArrowButton = styled('button', {
48
+ all: 'unset',
49
+ size: '32px',
50
+ borderRadius: '$md',
51
+ backgroundColor: 'transparent',
52
+ border: 'none',
53
+ display: 'inline-flex',
54
+ alignItems: 'center',
55
+ justifyContent: 'center',
56
+ color: '$iconPrimary',
57
+ '&:hover': {
58
+ backgroundColor: '$bgSelectedLight',
59
+ color: '$textBrand'
60
+ },
61
+ '&:active': {
62
+ backgroundColor: '$bgBrand',
63
+ color: '$bgWhite'
64
+ },
65
+ cursor: 'pointer',
66
+ '&:disabled': {
67
+ backgroundColor: '$btnDisable',
68
+ color: '$iconDisable',
69
+ cursor: 'default'
70
+ }
71
+ });
72
+ const WeekdayBox = styled(Box, {
73
+ display: 'inline-block',
74
+ width: '32px',
75
+ textAlign: 'center',
76
+ marginBottom: '$spacing-03'
77
+ });
78
+ const CalendarsContainer = styled(Box, {
79
+ width: '100%',
80
+ display: 'inline-flex',
81
+ borderRadius: '$lg',
82
+ justifyContent: 'center',
83
+ gap: '$spacing-03',
84
+ '@md': {
85
+ width: 'unset'
86
+ }
87
+ });
88
+ const CalenderBoxContainer = styled(Box, {
89
+ display: 'flex',
90
+ flexDirection: 'column',
91
+ boxShadow: '0px 4px 8px rgba(0, 0, 0, 0.12)',
92
+ borderRadius: '$lg',
93
+ backgroundColor: '$bgWhite',
94
+ padding: '$spacing-03'
95
+ });
96
+ const CalendarItemContainer = styled(Flex, {});
97
+ const DateContainer = styled(Box, {
98
+ width: '100%',
99
+ position: 'relative',
100
+ display: 'inline-block',
101
+ '@md': {
102
+ maxWidth: '334px',
103
+ width: 'unset'
104
+ }
105
+ });
106
+ const TitleButton = styled('p', {
107
+ padding: '4px $spacing-05',
108
+ marginTop: 6,
109
+ fontWeight: 600,
110
+ fontStyle: 'normal',
111
+ fontSize: 16,
112
+ color: '$textPrimary',
113
+ '&:hover': {
114
+ backgroundColor: '$bgSelectedLight',
115
+ color: '$textBrand'
116
+ },
117
+ '&:active': {
118
+ backgroundColor: '$bgBrand',
119
+ color: '$bgWhite'
120
+ },
121
+ cursor: 'pointer',
122
+ '&:disabled': {
123
+ backgroundColor: '$btnDisable',
124
+ color: '$iconDisable',
125
+ cursor: 'default'
126
+ },
127
+ variants: {
128
+ disabled: {
129
+ true: {
130
+ pointerEvents: 'none'
131
+ }
132
+ }
133
+ }
134
+ });
135
+ const MonthButton = styled(Text, {
136
+ minWidth: '70px',
137
+ textAlign: 'center !important',
138
+ borderRadius: '$md',
139
+ padding: '$spacing-03 0',
140
+ cursor: 'pointer',
141
+ fontSize: '$label',
142
+ lineHeight: '$label',
143
+ letterSpacing: '$label',
144
+ fontWeight: '400',
145
+ color: '$textPrimary',
146
+ '&:hover': {
147
+ backgroundColor: '$bgSelectedLight',
148
+ color: '$textBrand'
149
+ },
150
+ '&:active': {
151
+ backgroundColor: '$bgBrand',
152
+ color: '$bgWhite'
153
+ },
154
+ '&:disabled': {
155
+ backgroundColor: '$btnDisable',
156
+ color: '$iconDisable',
157
+ cursor: 'default'
158
+ },
159
+ variants: {
160
+ isSelected: {
161
+ true: {
162
+ backgroundColor: '$bgBrand',
163
+ color: '$bgWhite'
164
+ }
165
+ }
166
+ }
167
+ });
168
+ styled('button', {
169
+ fontWeight: 600,
170
+ fontStyle: 'normal',
171
+ fontSize: 14,
172
+ letterSpacing: 2,
173
+ textAlign: 'center',
174
+ padding: 8,
175
+ width: '100%',
176
+ outline: 'none',
177
+ border: 'none',
178
+ background: 'transparent',
179
+ cursor: 'pointer',
180
+ transition: '0.2s',
181
+ borderRadius: 2,
182
+ color: '$textPrimary',
183
+ '&:hover': {
184
+ background: '$bgSelectedLight',
185
+ color: '$textBrand'
186
+ },
187
+ variants: {
188
+ disabled: {
189
+ true: {
190
+ pointerEvents: 'none',
191
+ background: '$btnDisable',
192
+ color: '$textDisable'
193
+ }
194
+ }
195
+ }
196
+ });
197
+ const DATE_PICKER = 0;
198
+ const MONTH_PICKER = 1;
199
+ const YEAR_PICKER = 2;
200
+ const YEAR_RANGE_PICKER = 3;
201
+ const TIME_PICKER = 4;
202
+ const Calendar = ({
203
+ calendars,
204
+ getDateProps,
205
+ advanceView,
206
+ onCalendarDateChange,
207
+ onIsMultiDateChange,
208
+ onUpdate,
209
+ onCancel,
210
+ onReset,
211
+ selected,
212
+ containerStyle,
213
+ disabled,
214
+ showTimePicker,
215
+ renderTimePicker,
216
+ minDate,
217
+ maxDate,
218
+ allowReset,
219
+ onSetDateValue,
220
+ maxRange = 0,
221
+ overMaxRange = false,
222
+ timePickerProps
223
+ }) => {
224
+ const {
225
+ t,
226
+ i18n
227
+ } = useTranslation(['MajooUI/datePicker', 'translation']);
228
+ const [pickerState, setPickerState] = useState({
229
+ type: DATE_PICKER,
230
+ selectedMonth: Number(calendars[0].month),
231
+ selectedYear: Number(calendars[0].year),
232
+ selectedYearRange: getCalendarStartYear(calendars[0].year),
233
+ selectedYearRangeStart: getCalendarStartYearRange(calendars[0].year)
234
+ });
235
+ const language = i18n.language;
236
+ const monthNamesFull = language === 'en' ? monthNamesFullEng : monthNamesFullId;
237
+ const weekdayNamesShort = language === 'en' ? weekdayNamesShortEng : weekdayNamesShortId;
238
+ useEffect(() => {
239
+ const selectedDate = new Date(pickerState.selectedYear, pickerState.selectedMonth, 1, 0);
240
+ if (pickerState.selectedMonth < 0) {
241
+ setPickerState(current => Object.assign(Object.assign({}, current), {
242
+ selectedMonth: selectedDate.getMonth(),
243
+ selectedYear: selectedDate.getFullYear(),
244
+ selectedYearRange: getCalendarStartYear(selectedDate.getFullYear()),
245
+ selectedYearRangeStart: getCalendarStartYearRange(selectedDate.getFullYear())
246
+ }));
247
+ } else {
248
+ onCalendarDateChange(selectedDate);
249
+ }
250
+ }, [`${pickerState.selectedMonth}/${pickerState.selectedYear}`]);
251
+ const isDisableSaveMinDate = useMemo(() => {
252
+ if ((selected === null || selected === void 0 ? void 0 : selected.length) && (timePickerProps === null || timePickerProps === void 0 ? void 0 : timePickerProps.minDate) instanceof Date) {
253
+ return moment(selected[0]).isBefore(timePickerProps === null || timePickerProps === void 0 ? void 0 : timePickerProps.minDate);
254
+ } else return false;
255
+ }, [selected, minDate, showTimePicker]);
256
+ const multiDatePicker = calendars.length > 1;
257
+ const renderTitleButton = (index = 0) => {
258
+ return multiDatePicker ? jsxs(TitleButton, {
259
+ onClick: () => {
260
+ if (onIsMultiDateChange) onIsMultiDateChange(false);
261
+ setPickerState(current => Object.assign(Object.assign({}, current), {
262
+ type: MONTH_PICKER
263
+ }));
264
+ },
265
+ children: [monthNamesFull[calendars[index].month], " ", calendars[index].year]
266
+ }) : jsxs(TitleButton, {
267
+ onClick: () => {
268
+ if (pickerState.type < YEAR_RANGE_PICKER) setPickerState(current => Object.assign(Object.assign({}, current), {
269
+ type: current.type + 1
270
+ }));
271
+ if (pickerState.type === TIME_PICKER) {
272
+ setPickerState(current => Object.assign(Object.assign({}, current), {
273
+ type: DATE_PICKER
274
+ }));
275
+ }
276
+ },
277
+ disabled: disabled || pickerState.type === YEAR_RANGE_PICKER,
278
+ children: [pickerState.type === DATE_PICKER && jsxs(Fragment, {
279
+ children: [monthNamesFull[calendars[0].month], " ", calendars[0].year]
280
+ }), pickerState.type === MONTH_PICKER && pickerState.selectedYear, pickerState.type === YEAR_PICKER && jsxs(Fragment, {
281
+ children: [pickerState.selectedYearRange, " - ", pickerState.selectedYearRange + 9]
282
+ }), pickerState.type === YEAR_RANGE_PICKER && jsxs(Fragment, {
283
+ children: [pickerState.selectedYearRangeStart, " - ", pickerState.selectedYearRangeStart + 99]
284
+ }), pickerState.type === TIME_PICKER && jsxs(Fragment, {
285
+ children: [selected && moment(selected === null || selected === void 0 ? void 0 : selected[0]).format('DD'), " ", monthNamesFull[calendars[0].month], " ", calendars[0].year]
286
+ })]
287
+ });
288
+ };
289
+ const renderBackButton = () => {
290
+ return jsx(ArrowButton, {
291
+ disabled: disabled,
292
+ onClick: () => {
293
+ if (!minDate || pickerState.type === DATE_PICKER && moment(minDate).isBefore(moment().date(1).month(pickerState.selectedMonth).year(pickerState.selectedYear)) || pickerState.type === MONTH_PICKER && new Date(minDate).getFullYear() < pickerState.selectedYear) {
294
+ setPickerState(current => Object.assign(Object.assign({}, current), {
295
+ selectedMonth: pickerState.type === DATE_PICKER ? current.selectedMonth - 1 : current.selectedMonth,
296
+ selectedYear: pickerState.type === MONTH_PICKER ? current.selectedYear - 1 : current.selectedYear,
297
+ selectedYearRange: pickerState.type === YEAR_PICKER ? current.selectedYearRange - 10 : current.selectedYearRange,
298
+ selectedYearRangeStart: pickerState.type === YEAR_RANGE_PICKER ? current.selectedYearRangeStart - 100 : current.selectedYearRangeStart
299
+ }));
300
+ }
301
+ },
302
+ type: "button",
303
+ children: jsx(ChevronLeftOutline, {
304
+ color: "currentColor"
305
+ })
306
+ });
307
+ };
308
+ const renderForwardButton = () => {
309
+ return jsx(ArrowButton, {
310
+ disabled: disabled,
311
+ onClick: () => {
312
+ if (!maxDate || pickerState.type === DATE_PICKER && moment(maxDate).isAfter(moment().date(1).month(pickerState.selectedMonth + 1).year(pickerState.selectedYear)) || pickerState.type === MONTH_PICKER && new Date(maxDate).getFullYear() > pickerState.selectedYear) {
313
+ setPickerState(current => Object.assign(Object.assign({}, current), {
314
+ selectedMonth: pickerState.type === DATE_PICKER ? current.selectedMonth === 11 ? 0 : current.selectedMonth + 1 : current.selectedMonth,
315
+ selectedYear: pickerState.type === MONTH_PICKER && current.selectedYear < 2100 || current.selectedMonth === 11 ? current.selectedYear + 1 : current.selectedYear,
316
+ selectedYearRange: pickerState.type === YEAR_PICKER && current.selectedYearRange < 2091 ? current.selectedYearRange + 10 : current.selectedYearRange,
317
+ selectedYearRangeStart: pickerState.type === YEAR_RANGE_PICKER && current.selectedYearRangeStart < 2001 ? current.selectedYearRangeStart + 100 : current.selectedYearRangeStart
318
+ }));
319
+ }
320
+ },
321
+ type: "button",
322
+ children: jsx(ChevronRightOutline, {
323
+ color: "currentColor"
324
+ })
325
+ });
326
+ };
327
+ const renderHeader = () => {
328
+ return jsx(Flex, {
329
+ justify: "between",
330
+ align: "center",
331
+ css: {
332
+ height: '32px'
333
+ },
334
+ children: multiDatePicker ? jsxs(Fragment, {
335
+ children: [jsxs(Flex, {
336
+ justify: "between",
337
+ align: "center",
338
+ css: {
339
+ width: '50%',
340
+ height: '100%'
341
+ },
342
+ children: [renderBackButton(), renderTitleButton(0), jsx(Box, {
343
+ css: {
344
+ size: '32px'
345
+ }
346
+ })]
347
+ }), jsx(Separator, {
348
+ orientation: "vertical",
349
+ css: {
350
+ alignSelf: 'stretch'
351
+ }
352
+ }), jsxs(Flex, {
353
+ justify: "between",
354
+ align: "center",
355
+ css: {
356
+ width: '50%',
357
+ height: '100%'
358
+ },
359
+ children: [jsx(Box, {
360
+ css: {
361
+ size: '32px'
362
+ }
363
+ }), renderTitleButton(1), renderForwardButton()]
364
+ })]
365
+ }) : jsxs(Fragment, {
366
+ children: [renderBackButton(), renderTitleButton(), renderForwardButton()]
367
+ })
368
+ });
369
+ };
370
+ const renderDateNumber = calendar => {
371
+ return jsx(Grid, {
372
+ columns: 7,
373
+ css: {
374
+ gridRowGap: '$spacing-02'
375
+ },
376
+ children: calendar.weeks.map((week, weekIndex) => week.map((dateObj, index) => {
377
+ const key = `${calendar.month}${calendar.year}${weekIndex}${index}`;
378
+ if (!dateObj) {
379
+ return jsx("div", {
380
+ style: {
381
+ display: 'inline-block',
382
+ width: '32px',
383
+ border: 'none',
384
+ background: 'transparent'
385
+ }
386
+ }, key);
387
+ }
388
+ const {
389
+ date
390
+ } = dateObj;
391
+ // let background = today ? 'cornflowerblue' : '';
392
+ // background = selected ? 'purple' : background;
393
+ // background = !selectable ? 'teal' : background;
394
+ let dateProps = disabled ? {} : getDateProps({
395
+ dateObj
396
+ });
397
+ dateProps = dateProps['disabled'] ? {} : dateProps;
398
+ return jsx(DateNumber, Object.assign({}, dateProps, {
399
+ variant: disabled ? 'disabled' : getVariant(dateObj, calendar.month, selected),
400
+ isSunday: date.getDay() === 0,
401
+ children: date.getDate()
402
+ }), key);
403
+ }))
404
+ });
405
+ };
406
+ const renderYearRangesList = () => {
407
+ const yearsRangeList = yearRangesList(pickerState.selectedYearRangeStart);
408
+ return jsx(Grid, {
409
+ columns: 3,
410
+ css: {
411
+ gridRowGap: '$spacing-05',
412
+ gridColumnGap: '$spacing-04',
413
+ padding: '6px 4px 8px 4px'
414
+ },
415
+ children: yearsRangeList.map(range => jsxs(MonthButton, {
416
+ isSelected: pickerState.selectedYearRange === range.start,
417
+ onClick: () => {
418
+ if ((!maxDate || new Date(maxDate).getFullYear() <= range.end) && (!minDate || new Date(minDate).getFullYear() >= range.start)) {
419
+ setPickerState(current => Object.assign(Object.assign({}, current), {
420
+ selectedYearRange: range.start,
421
+ type: YEAR_PICKER
422
+ }));
423
+ }
424
+ },
425
+ children: [range.start, "-", range.end]
426
+ }, range.start))
427
+ });
428
+ };
429
+ const renderYearsList = () => {
430
+ const startYear = pickerState.selectedYearRange;
431
+ const yearsArray = Array.from(new Array(10), (val, index) => index + startYear);
432
+ return jsx(Grid, {
433
+ columns: 3,
434
+ css: {
435
+ gridRowGap: '$spacing-05',
436
+ gridColumnGap: '$spacing-04',
437
+ padding: '6px 4px 8px 4px'
438
+ },
439
+ children: yearsArray.map((year, index) => jsx(MonthButton, {
440
+ isSelected: pickerState.selectedYear === year,
441
+ onClick: () => {
442
+ if ((!maxDate || new Date(maxDate).getFullYear() > year - 1) && (!minDate || new Date(minDate).getFullYear() < year + 1)) {
443
+ setPickerState(current => Object.assign(Object.assign({}, current), {
444
+ selectedYear: year,
445
+ type: MONTH_PICKER
446
+ }));
447
+ }
448
+ },
449
+ children: year
450
+ }, year))
451
+ });
452
+ };
453
+ const renderMonthsList = () => {
454
+ return jsx(Grid, {
455
+ columns: 3,
456
+ css: {
457
+ gridRowGap: '$spacing-05',
458
+ gridColumnGap: '$spacing-04',
459
+ padding: '6px 4px 8px 4px'
460
+ },
461
+ children: monthNamesFull.map((monthName, index) => jsx(MonthButton, {
462
+ isSelected: pickerState.selectedMonth === index,
463
+ onClick: () => {
464
+ if ((!minDate || moment(minDate).isBefore(moment().month(index).year(pickerState.selectedYear))) && (!maxDate || moment(maxDate).isAfter(moment().month(index).year(pickerState.selectedYear)))) {
465
+ if (onIsMultiDateChange) onIsMultiDateChange(true);
466
+ setPickerState(current => Object.assign(Object.assign({}, current), {
467
+ selectedMonth: index,
468
+ type: DATE_PICKER
469
+ }));
470
+ }
471
+ },
472
+ children: monthName
473
+ }, monthName))
474
+ });
475
+ };
476
+ const renderWeekLabel = calendar => {
477
+ return weekdayNamesShort.map(weekday => jsx(WeekdayBox, {
478
+ children: jsx(Paragraph, {
479
+ paragraph: "shortContentBold",
480
+ css: {
481
+ color: '$textSecondary',
482
+ fontSize: '$label',
483
+ textAlign: 'center !important'
484
+ },
485
+ children: weekday
486
+ })
487
+ }, `${calendar.month}${calendar.year}${weekday}`));
488
+ };
489
+ const renderFooter = () => {
490
+ return jsxs(Box, {
491
+ children: [jsx(Separator, {
492
+ css: {
493
+ my: '$spacing-03'
494
+ }
495
+ }), jsxs(Flex, {
496
+ justify: "between",
497
+ align: "center",
498
+ css: {
499
+ padding: 8
500
+ },
501
+ children: [jsx(Heading, {
502
+ heading: "sectionTitle",
503
+ color: overMaxRange ? 'red' : selected && selected.length > 1 ? 'primary' : 'disable',
504
+ css: {
505
+ lineHeight: '$short-content-regular',
506
+ fontSize: '$short-content-regular'
507
+ },
508
+ children: overMaxRange ? t('label.maxRangeDate', `Maksimal range adalah ${maxRange} hari`, {
509
+ maxRange
510
+ }) : selected && selected.length > 1 && !disabled ? `${toDateFormat(selected[0], language)} - ${toDateFormat(selected[1], language)}` : !selected || selected.length <= 0 ? t('notSelectedDateText', 'Tanggal belum dipilih') : toDateFormat(selected[0], language)
511
+ }), jsxs(Flex, {
512
+ gap: 3,
513
+ children: [allowReset ? jsx(Button, {
514
+ buttonType: "ghost",
515
+ css: {
516
+ fontWeight: 600
517
+ },
518
+ onClick: onReset,
519
+ disabled: disabled || !selected || selected.length <= 1,
520
+ size: "sm",
521
+ type: "button",
522
+ children: "Reset"
523
+ }) : jsx(Button, {
524
+ buttonType: "ghost",
525
+ css: {
526
+ fontWeight: 600
527
+ },
528
+ onClick: onCancel,
529
+ disabled: disabled,
530
+ size: "sm",
531
+ type: "button",
532
+ children: t('label.cancel', 'Batal', {
533
+ ns: 'translation'
534
+ })
535
+ }), jsx(Button, {
536
+ css: {
537
+ fontWeight: 600
538
+ },
539
+ onClick: onUpdate,
540
+ disabled: disabled || !selected || selected.length <= 1 || overMaxRange || isDisableSaveMinDate,
541
+ size: "sm",
542
+ type: "button",
543
+ children: t('label.process', 'Proses', {
544
+ ns: 'translation'
545
+ })
546
+ })]
547
+ })]
548
+ })]
549
+ });
550
+ };
551
+ const renderTime = () => {
552
+ return jsxs(Fragment$1, {
553
+ children: [jsx(Separator, {
554
+ orientation: "vertical"
555
+ }), jsx(CalendarTimePicker, {
556
+ selected,
557
+ disabled,
558
+ language,
559
+ onSetDateValue,
560
+ timePickerProps,
561
+ isSingle: !multiDatePicker
562
+ })]
563
+ });
564
+ };
565
+ const renderFooterSingleTimePicker = () => {
566
+ return jsxs(Box, {
567
+ css: {
568
+ width: '$full'
569
+ },
570
+ children: [jsx(Separator, {
571
+ css: {
572
+ my: '$spacing-03'
573
+ }
574
+ }), jsx(Flex, {
575
+ justify: "end",
576
+ align: "center",
577
+ css: {
578
+ padding: 8
579
+ },
580
+ children: jsxs(Flex, {
581
+ gap: 3,
582
+ children: [jsx(Button, {
583
+ buttonType: "ghost",
584
+ css: {
585
+ fontWeight: 600
586
+ },
587
+ onClick: onCancel,
588
+ disabled: disabled,
589
+ size: "sm",
590
+ type: "button",
591
+ children: t('label.cancel', 'Batal', {
592
+ ns: 'translation'
593
+ })
594
+ }), jsx(Button, {
595
+ css: {
596
+ fontWeight: 600
597
+ },
598
+ onClick: onUpdate,
599
+ disabled: disabled || !(selected && selected.length) || isDisableSaveMinDate,
600
+ size: "sm",
601
+ type: "button",
602
+ children: t('label.save', 'Simpan', {
603
+ ns: 'translation'
604
+ })
605
+ })]
606
+ })
607
+ })]
608
+ });
609
+ };
610
+ if (calendars.length) {
611
+ return jsxs(CalenderBoxContainer, {
612
+ children: [jsxs(CalendarsContainer, {
613
+ css: containerStyle,
614
+ children: [advanceView, advanceView && jsx(Separator, {
615
+ orientation: "vertical"
616
+ }), jsxs(Box, {
617
+ children: [renderHeader(), jsx(CalendarItemContainer, {
618
+ gap: 5,
619
+ children: calendars.map((calendar, index) => jsxs(React__default.Fragment, {
620
+ children: [index > 0 && jsx(Separator, {
621
+ orientation: "vertical",
622
+ css: {
623
+ height: 'auto'
624
+ }
625
+ }), jsxs(DateContainer, {
626
+ children: [jsx(Separator, {
627
+ css: {
628
+ mb: '$spacing-04',
629
+ mt: '$spacing-02'
630
+ }
631
+ }), pickerState.type === DATE_PICKER && jsxs(Fragment, {
632
+ children: [renderWeekLabel(calendar), renderDateNumber(calendar)]
633
+ }), pickerState.type === MONTH_PICKER && renderMonthsList(), pickerState.type === YEAR_PICKER && renderYearsList(), pickerState.type === YEAR_RANGE_PICKER && renderYearRangesList()]
634
+ })]
635
+ }, `${calendar.month}${calendar.year}`))
636
+ })]
637
+ }), !advanceView && showTimePicker && renderTime(), showTimePicker && pickerState.type === DATE_PICKER && !!advanceView && jsxs(Fragment$1, {
638
+ children: [jsx(Separator, {
639
+ orientation: "vertical"
640
+ }), jsx(CalendarTimePicker, {
641
+ selected,
642
+ disabled,
643
+ language,
644
+ onSetDateValue,
645
+ timePickerProps
646
+ })]
647
+ })]
648
+ }), !multiDatePicker && showTimePicker && renderFooterSingleTimePicker(), multiDatePicker && renderFooter()]
649
+ });
650
+ }
651
+ return null;
652
+ };
653
+
654
+ export { DATE_PICKER, MONTH_PICKER, TIME_PICKER, YEAR_PICKER, YEAR_RANGE_PICKER, Calendar as default };