@majoo-ui/react 2.0.1 → 2.1.0-rc.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.
Files changed (203) 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
  203. package/{index.esm.css → charts.esm.css} +4 -4
@@ -0,0 +1,286 @@
1
+ import 'core-js/modules/es.iterator.constructor.js';
2
+ import 'core-js/modules/es.iterator.every.js';
3
+ import moment from 'moment';
4
+
5
+ moment.updateLocale('id', {
6
+ week: {
7
+ dow: 1
8
+ }
9
+ });
10
+ const UPDATE_PICKER = 'UPDATE';
11
+ const TODAY = 'TODAY';
12
+ const YESTERDAY = 'YESTERDAY';
13
+ const LAST_7_DAYS = 'LAST_7_DAYS';
14
+ const LAST_WEEK = 'LAST_WEEK';
15
+ const PREV_WEEK = 'PREV_WEEK';
16
+ const RANGE_WEEK = 'RANGE_WEEK';
17
+ const NEXT_WEEK = 'NEXT_WEEK';
18
+ const PREV_MONTH = 'PREV_MONTH';
19
+ const RANGE_MONTH = 'RANGE_MONTH';
20
+ const NEXT_MONTH = 'NEXT_MONTH';
21
+ const THIS_WEEK = 'THIS_WEEK';
22
+ const LAST_30_DAYS = 'LAST_30_DAYS';
23
+ const LAST_MONTH = 'LAST_MONTH';
24
+ const LAST_TWO_MONTHS = 'LAST_TWO_MONTH';
25
+ const THIS_MONTH = 'THIS_MONTH';
26
+ const advancePickerOptionsId = [{
27
+ label: 'Hari Ini',
28
+ value: TODAY
29
+ }, {
30
+ label: 'Kemarin',
31
+ value: YESTERDAY
32
+ }, {
33
+ label: '7 Hari Terakhir',
34
+ value: LAST_7_DAYS
35
+ }, {
36
+ label: 'Minggu Ini',
37
+ value: THIS_WEEK
38
+ }, {
39
+ label: 'Minggu Lalu',
40
+ value: LAST_WEEK
41
+ }, {
42
+ label: '30 Hari Terakhir',
43
+ value: LAST_30_DAYS
44
+ }, {
45
+ label: 'Bulan Ini',
46
+ value: THIS_MONTH
47
+ }, {
48
+ label: 'Bulan Lalu',
49
+ value: LAST_MONTH
50
+ }];
51
+ const advancePickerOptionsEn = [{
52
+ label: 'Today',
53
+ value: TODAY
54
+ }, {
55
+ label: 'Yesterday',
56
+ value: YESTERDAY
57
+ }, {
58
+ label: 'Last 7 Days',
59
+ value: LAST_7_DAYS
60
+ }, {
61
+ label: 'This Week',
62
+ value: THIS_WEEK
63
+ }, {
64
+ label: 'Last Week',
65
+ value: LAST_WEEK
66
+ }, {
67
+ label: 'Last 30 Days',
68
+ value: LAST_30_DAYS
69
+ }, {
70
+ label: 'This Month',
71
+ value: THIS_MONTH
72
+ }, {
73
+ label: 'Last Month',
74
+ value: LAST_MONTH
75
+ }];
76
+ function pickerReducer(state, action) {
77
+ const tempDate = new Date();
78
+ const today = new Date(tempDate.getFullYear(), tempDate.getMonth(), tempDate.getDate(), 0, 0, 0, 0);
79
+ switch (action.type) {
80
+ case UPDATE_PICKER:
81
+ {
82
+ const current = state.selectedDate;
83
+ const next = action.payload;
84
+ // Bail out if the value hasn't changed — prevents infinite re-render loops
85
+ // caused by the circular: dispatch → selectedDate → DatePicker effect → onChange → dispatch
86
+ if (current === next) return state;
87
+ if (current instanceof Date && next instanceof Date && current.getTime() === next.getTime()) {
88
+ return state;
89
+ }
90
+ if (Array.isArray(current) && Array.isArray(next) && current.length === next.length && current.every((d, i) => d instanceof Date && next[i] instanceof Date && d.getTime() === next[i].getTime())) {
91
+ return state;
92
+ }
93
+ return Object.assign(Object.assign({}, state), {
94
+ selectedDate: next
95
+ });
96
+ }
97
+ case TODAY:
98
+ {
99
+ return Object.assign(Object.assign({}, state), {
100
+ selectedDate: [today, today]
101
+ });
102
+ }
103
+ case YESTERDAY:
104
+ {
105
+ const yesterday = new Date(today);
106
+ yesterday.setDate(today.getDate() - 1);
107
+ return Object.assign(Object.assign({}, state), {
108
+ selectedDate: [yesterday, yesterday]
109
+ });
110
+ }
111
+ case LAST_7_DAYS:
112
+ {
113
+ const last7Days = new Date(today);
114
+ last7Days.setDate(today.getDate() - 6);
115
+ return Object.assign(Object.assign({}, state), {
116
+ selectedDate: [last7Days, today]
117
+ });
118
+ }
119
+ case LAST_WEEK:
120
+ {
121
+ const startThisWeek = new Date(today);
122
+ startThisWeek.setDate(today.getDate() - today.getDay() - 7);
123
+ const endThisWeek = new Date(today);
124
+ endThisWeek.setDate(today.getDate() - today.getDay() - 1);
125
+ return Object.assign(Object.assign({}, state), {
126
+ selectedDate: [startThisWeek, endThisWeek]
127
+ });
128
+ }
129
+ case THIS_WEEK:
130
+ {
131
+ const startThisWeek = new Date(today);
132
+ startThisWeek.setDate(today.getDate() - today.getDay());
133
+ const endThisWeek = new Date(today);
134
+ endThisWeek.setDate(today.getDate() - today.getDay() + 6);
135
+ return Object.assign(Object.assign({}, state), {
136
+ selectedDate: [startThisWeek, endThisWeek]
137
+ });
138
+ }
139
+ case LAST_30_DAYS:
140
+ {
141
+ const last30Days = new Date(today);
142
+ last30Days.setDate(today.getDate() - 29);
143
+ return Object.assign(Object.assign({}, state), {
144
+ selectedDate: [last30Days, today]
145
+ });
146
+ }
147
+ case LAST_MONTH:
148
+ {
149
+ const startThisMonth = new Date(today.getFullYear(), today.getMonth() - 1, 1, 0);
150
+ const endThisMonth = new Date(today.getFullYear(), today.getMonth(), 0, 0);
151
+ return Object.assign(Object.assign({}, state), {
152
+ selectedDate: [startThisMonth, endThisMonth]
153
+ });
154
+ }
155
+ case LAST_TWO_MONTHS:
156
+ {
157
+ const last2Months = moment().subtract(2, 'months').startOf('day');
158
+ const prev2Months = last2Months.add(1, 'day').toDate();
159
+ return Object.assign(Object.assign({}, state), {
160
+ selectedDate: [prev2Months, today]
161
+ });
162
+ }
163
+ case THIS_MONTH:
164
+ {
165
+ const startThisMonth = new Date(today.getFullYear(), today.getMonth(), 1, 0);
166
+ const endThisMonth = new Date(startThisMonth.getFullYear(), startThisMonth.getMonth() + 1, 0, 0);
167
+ return Object.assign(Object.assign({}, state), {
168
+ selectedDate: [startThisMonth, endThisMonth]
169
+ });
170
+ }
171
+ default:
172
+ {
173
+ throw new Error(`Unhandled action type: ${action.type}`);
174
+ }
175
+ }
176
+ }
177
+ function advancePickerDate(type, date) {
178
+ const tempDate = new Date();
179
+ const today = new Date(tempDate.getFullYear(), tempDate.getMonth(), tempDate.getDate(), 0, 0, 0, 0);
180
+ switch (type) {
181
+ case TODAY:
182
+ {
183
+ return [today, today];
184
+ }
185
+ case YESTERDAY:
186
+ {
187
+ const yesterday = new Date(today);
188
+ yesterday.setDate(today.getDate() - 1);
189
+ return [yesterday, yesterday];
190
+ }
191
+ case LAST_7_DAYS:
192
+ {
193
+ const last7Days = new Date(today);
194
+ last7Days.setDate(today.getDate() - 6);
195
+ return [last7Days, today];
196
+ }
197
+ case LAST_WEEK:
198
+ {
199
+ const startThisWeek = new Date(today);
200
+ startThisWeek.setDate(today.getDate() - today.getDay() - 7);
201
+ const endThisWeek = new Date(today);
202
+ endThisWeek.setDate(today.getDate() - today.getDay() - 1);
203
+ return [startThisWeek, endThisWeek];
204
+ }
205
+ case THIS_WEEK:
206
+ {
207
+ const startThisWeek = new Date(today);
208
+ startThisWeek.setDate(today.getDate() - today.getDay());
209
+ const endThisWeek = new Date(today);
210
+ endThisWeek.setDate(today.getDate() - today.getDay() + 6);
211
+ return [startThisWeek, endThisWeek];
212
+ }
213
+ case NEXT_WEEK:
214
+ {
215
+ const currentDate = moment(date === null || date === void 0 ? void 0 : date[1]).add(1, 'day');
216
+ const startThisWeek = currentDate.startOf('isoWeek').toDate();
217
+ const endThisWeek = currentDate.endOf('isoWeek').toDate();
218
+ return [startThisWeek, endThisWeek];
219
+ }
220
+ case RANGE_WEEK:
221
+ {
222
+ const currentDate = moment(date === null || date === void 0 ? void 0 : date[0]);
223
+ const startThisWeek = currentDate.startOf('isoWeek').toDate();
224
+ const endThisWeek = currentDate.endOf('isoWeek').toDate();
225
+ return [startThisWeek, endThisWeek];
226
+ }
227
+ case PREV_WEEK:
228
+ {
229
+ const currentDate = moment(date === null || date === void 0 ? void 0 : date[0]).subtract(1, 'day');
230
+ const startThisWeek = currentDate.startOf('isoWeek').toDate();
231
+ const endThisWeek = currentDate.endOf('isoWeek').toDate();
232
+ return [startThisWeek, endThisWeek];
233
+ }
234
+ case LAST_30_DAYS:
235
+ {
236
+ const last30Days = new Date(today);
237
+ last30Days.setDate(today.getDate() - 29);
238
+ return [last30Days, today];
239
+ }
240
+ case RANGE_MONTH:
241
+ {
242
+ const currentDate = moment(date === null || date === void 0 ? void 0 : date[0]);
243
+ const startThisMonth = currentDate.startOf('month').toDate();
244
+ const endThisMonth = currentDate.endOf('month').toDate();
245
+ return [startThisMonth, endThisMonth];
246
+ }
247
+ case NEXT_MONTH:
248
+ {
249
+ const currentDate = moment(date === null || date === void 0 ? void 0 : date[1]).add(1, 'day');
250
+ const startThisMonth = currentDate.startOf('month').toDate();
251
+ const endThisMonth = currentDate.endOf('month').toDate();
252
+ return [startThisMonth, endThisMonth];
253
+ }
254
+ case PREV_MONTH:
255
+ {
256
+ const currentDate = moment(date === null || date === void 0 ? void 0 : date[0]).subtract(1, 'day');
257
+ const startThisMonth = currentDate.startOf('month').toDate();
258
+ const endThisMonth = currentDate.endOf('month').toDate();
259
+ return [startThisMonth, endThisMonth];
260
+ }
261
+ case LAST_MONTH:
262
+ {
263
+ const startThisMonth = new Date(today.getFullYear(), today.getMonth() - 1, 1, 0);
264
+ const endThisMonth = new Date(today.getFullYear(), today.getMonth(), 0, 0);
265
+ return [startThisMonth, endThisMonth];
266
+ }
267
+ case LAST_TWO_MONTHS:
268
+ {
269
+ const last2Months = moment().subtract(2, 'months').startOf('day');
270
+ const prev2Months = last2Months.add(1, 'day').toDate();
271
+ return [prev2Months, today];
272
+ }
273
+ case THIS_MONTH:
274
+ {
275
+ const startThisMonth = new Date(today.getFullYear(), today.getMonth(), 1, 0);
276
+ const endThisMonth = new Date(startThisMonth.getFullYear(), startThisMonth.getMonth() + 1, 0, 0);
277
+ return [startThisMonth, endThisMonth];
278
+ }
279
+ default:
280
+ {
281
+ throw new Error(`Unhandled action type: ${type}`);
282
+ }
283
+ }
284
+ }
285
+
286
+ export { LAST_30_DAYS, LAST_7_DAYS, LAST_MONTH, LAST_TWO_MONTHS, LAST_WEEK, NEXT_MONTH, NEXT_WEEK, PREV_MONTH, PREV_WEEK, RANGE_MONTH, RANGE_WEEK, THIS_MONTH, THIS_WEEK, TODAY, UPDATE_PICKER, YESTERDAY, advancePickerDate, advancePickerOptionsEn, advancePickerOptionsId, pickerReducer };
@@ -0,0 +1,205 @@
1
+ import { useState } from 'react';
2
+ import { TimeOutline } from '@majoo-ui/icons';
3
+ import PropTypes from 'prop-types';
4
+ import Box from '../../../layout/box/Box.esm.js';
5
+ import { InputGroup } from '../../form/components/InputGroup/InputGroup.esm.js';
6
+ import { InputLeftElement } from '../../form/components/InputElement/InputElement.esm.js';
7
+ import { InputText } from '../../form/components/InputText/InputText.esm.js';
8
+ import { TimePicker } from './TimePicker.esm.js';
9
+ import moment from 'moment';
10
+ import { jsxs, jsx } from 'react/jsx-runtime';
11
+ import { Popover, PopoverTrigger, PopoverContent } from '../../popover/Popover.esm.js';
12
+
13
+ const getInputPickerValue = date => {
14
+ if (!date) return;
15
+ return moment(date).format('HH:mm');
16
+ };
17
+ function InputTimePicker({
18
+ size,
19
+ onChange,
20
+ defaultValue,
21
+ value,
22
+ placeholder,
23
+ placement,
24
+ css,
25
+ disabled,
26
+ disabledHour,
27
+ disabledHourIncrease,
28
+ disabledHourDecrease,
29
+ disabledMinute,
30
+ disabledMinuteIncrease,
31
+ disabledMinuteDecrease,
32
+ readOnly,
33
+ minDate,
34
+ maxDate,
35
+ isInvalid,
36
+ portalled,
37
+ contentCss,
38
+ onInputOpenChange
39
+ }) {
40
+ const [openPicker, setOpenPicker] = useState(false);
41
+ function handleChange() {
42
+ if (!disabled && !readOnly) {
43
+ setOpenPicker(!openPicker);
44
+ }
45
+ }
46
+ const renderInputGroup = () => /*#__PURE__*/jsxs(InputGroup, {
47
+ size: size,
48
+ disabled: disabled,
49
+ onClick: handleChange,
50
+ readOnly: readOnly,
51
+ isInvalid: isInvalid,
52
+ children: [/*#__PURE__*/jsx(InputLeftElement, {
53
+ color: disabled ? 'disabled' : 'primary',
54
+ children: /*#__PURE__*/jsx(TimeOutline, {
55
+ color: "currentColor"
56
+ })
57
+ }), /*#__PURE__*/jsx(InputText, {
58
+ placeholder: placeholder,
59
+ value: getInputPickerValue(value),
60
+ defaultValue: defaultValue,
61
+ onChange: () => {
62
+ /* noop: read-only picker input, value set via picker */
63
+ },
64
+ isPicker: true,
65
+ autoComplete: "false",
66
+ readOnly: true
67
+ // tabIndex="-1"
68
+ })]
69
+ });
70
+ const renderTimePicker = ({
71
+ css
72
+ }) => /*#__PURE__*/jsx(TimePicker, {
73
+ size: size,
74
+ disabled: disabled,
75
+ disabledHour: disabledHour,
76
+ disabledHourIncrease: disabledHourIncrease,
77
+ disabledHourDecrease: disabledHourDecrease,
78
+ disabledMinute: disabledMinute,
79
+ disabledMinuteIncrease: disabledMinuteIncrease,
80
+ disabledMinuteDecrease: disabledMinuteDecrease,
81
+ defaultValue: defaultValue,
82
+ value: value,
83
+ onChange: onChange,
84
+ minDate: minDate,
85
+ maxDate: maxDate,
86
+ css: css
87
+ });
88
+ return /*#__PURE__*/jsxs(Popover, {
89
+ open: openPicker,
90
+ onOpenChange: open => {
91
+ setOpenPicker(open);
92
+ if (onInputOpenChange) {
93
+ onInputOpenChange(open);
94
+ }
95
+ },
96
+ placement: placement,
97
+ children: [disabled || readOnly ? /*#__PURE__*/jsx(Box, {
98
+ css: css,
99
+ children: renderInputGroup()
100
+ }) : /*#__PURE__*/jsx(PopoverTrigger, {
101
+ children: /*#__PURE__*/jsx(Box, {
102
+ css: css,
103
+ children: renderInputGroup()
104
+ })
105
+ }), /*#__PURE__*/jsx(PopoverContent, {
106
+ portalled: portalled,
107
+ children: renderTimePicker({
108
+ css: contentCss
109
+ })
110
+ })]
111
+ });
112
+ }
113
+ InputTimePicker.defaultProps = {
114
+ placement: 'bottom-start',
115
+ placeholder: 'Select Time'
116
+ };
117
+ InputTimePicker.propTypes = {
118
+ /**
119
+ Additional styles.
120
+ */
121
+ css: PropTypes.object,
122
+ /**
123
+ Disabled state.
124
+ */
125
+ disabled: PropTypes.bool,
126
+ /**
127
+ Disabled hour state.
128
+ */
129
+ disabledHour: PropTypes.bool,
130
+ /**
131
+ Disabled increase hour state.
132
+ */
133
+ disabledHourIncrease: PropTypes.bool,
134
+ /**
135
+ Disabled decrease hour state.
136
+ */
137
+ disabledHourDecrease: PropTypes.bool,
138
+ /**
139
+ Disabled minute state.
140
+ */
141
+ disabledMinute: PropTypes.bool,
142
+ /**
143
+ Disabled increase minute state.
144
+ */
145
+ disabledMinuteIncrease: PropTypes.bool,
146
+ /**
147
+ Disabled decrease minute state.
148
+ */
149
+ disabledMinuteDecrease: PropTypes.bool,
150
+ /**
151
+ ReadOnly state.
152
+ */
153
+ readOnly: PropTypes.bool,
154
+ /**
155
+ Resize time picker.
156
+ */
157
+ size: PropTypes.oneOf(['sm', 'lg']),
158
+ /**
159
+ Custom placeholder input time picker.
160
+ */
161
+ placeholder: PropTypes.string,
162
+ /**
163
+ Time picker default value, support moment format.
164
+ */
165
+ defaultValue: PropTypes.instanceOf(Date),
166
+ /**
167
+ Time picker value, support moment format.
168
+ */
169
+ value: PropTypes.instanceOf(Date),
170
+ /**
171
+ Change handler.
172
+ */
173
+ onChange: PropTypes.func,
174
+ /**
175
+ Placement popover input time picker.
176
+ */
177
+ placement: PropTypes.string,
178
+ /**
179
+ Specify the minimum date.
180
+ */
181
+ minDate: PropTypes.instanceOf(Date),
182
+ /**
183
+ Specify the maximum date.
184
+ */
185
+ maxDate: PropTypes.instanceOf(Date),
186
+ /**
187
+ * Invalid state input.
188
+ */
189
+ isInvalid: PropTypes.bool,
190
+ /**
191
+ If true, the component will rendered on portal element
192
+ */
193
+ portalled: PropTypes.bool,
194
+ /**
195
+ Additional TimePicker styles.
196
+ */
197
+ contentCss: PropTypes.object,
198
+ /**
199
+ Input open change callback.
200
+ */
201
+ onInputOpenChange: PropTypes.func
202
+ };
203
+ InputTimePicker.displayName = 'InputTimePicker';
204
+
205
+ export { InputTimePicker, InputTimePicker as default };