@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.
- package/charts.esm.js +3 -1453
- package/colors/Colors.esm.js +93 -0
- package/components/accordion/Accordion.esm.js +109 -0
- package/components/alertDialog/AlertDialog.esm.js +440 -0
- package/components/avatar/Avatar.esm.js +83 -0
- package/components/badge/Badge.esm.js +255 -0
- package/components/banner/Banner.esm.js +341 -0
- package/components/barChart/BarChart.esm.js +212 -0
- package/components/breadcrumb/Breadcrumb.esm.js +65 -0
- package/components/breadcrumb/index.esm.js +19 -0
- package/components/button/Button.esm.js +331 -0
- package/components/buttonGroup/ButtonGroup.esm.js +350 -0
- package/components/card/Card.esm.js +236 -0
- package/components/chart/assets/data_kosong.png.esm.js +3 -0
- package/components/chart/lineChart/LineChart.esm.js +358 -0
- package/components/chart/lineChart/components/Comparator.esm.js +82 -0
- package/components/chart/lineChart/components/ComparatorController.esm.js +112 -0
- package/components/chart/lineChart/components/ComparatorItem.esm.js +104 -0
- package/components/chart/lineChart/components/ProductList.esm.js +78 -0
- package/components/chart/lineChart/components/TitleLegend.esm.js +107 -0
- package/components/chart/lineChart/components/Tooltip.esm.js +90 -0
- package/components/chart/utils/index.esm.js +109 -0
- package/components/checkboxTable/CheckboxTable.esm.js +287 -0
- package/components/colorPicker/ColorPicker.esm.js +342 -0
- package/components/colorPicker/InputColorPicker.esm.js +120 -0
- package/components/colorPicker/assets/img_colormap.gif.esm.js +3 -0
- package/components/colorPicker/components/ColorFields.esm.js +144 -0
- package/components/colorPicker/components/ColorMap.esm.js +1188 -0
- package/components/contentEditor/ContentEditor.esm.js +251 -0
- package/components/contentEditor/assets/Inline-code-outline.svg.esm.js +3 -0
- package/components/contentEditor/assets/Link-outline.svg.esm.js +3 -0
- package/components/contentEditor/assets/List-bulleted-outline.svg.esm.js +3 -0
- package/components/contentEditor/assets/List-numbered-outline.svg.esm.js +3 -0
- package/components/contentEditor/assets/Redo-outline.svg.esm.js +3 -0
- package/components/contentEditor/assets/Text-bold-filled.svg.esm.js +3 -0
- package/components/contentEditor/assets/Text-clear-format-outline.svg.esm.js +3 -0
- package/components/contentEditor/assets/Text-italic-outline.svg.esm.js +3 -0
- package/components/contentEditor/assets/Text-strikethrough-outline.svg.esm.js +3 -0
- package/components/contentEditor/assets/Text-underline-outline.svg.esm.js +3 -0
- package/components/contentEditor/assets/Undo-outline.svg.esm.js +3 -0
- package/components/contextMenu/ContextMenu.esm.js +298 -0
- package/components/datePicker/AdvancedOption.esm.js +37 -0
- package/components/datePicker/CustomDatePicker.esm.js +121 -0
- package/components/datePicker/DatePicker.esm.js +244 -0
- package/components/datePicker/DatePickerMulti.esm.js +70 -0
- package/components/datePicker/InputDatePicker.esm.js +290 -0
- package/components/datePicker/InputDateRangePicker.esm.js +174 -0
- package/components/datePicker/components/Calendar.esm.js +654 -0
- package/components/datePicker/components/CalendarMulti.esm.js +407 -0
- package/components/datePicker/components/CalendarTimePicker.esm.js +104 -0
- package/components/datePicker/components/DateNumber.esm.js +89 -0
- package/components/datePicker/components/MobileCalendar.esm.js +522 -0
- package/components/datePicker/state/reducer.esm.js +286 -0
- package/components/datePicker/timePicker/InputTimePicker.esm.js +205 -0
- package/components/datePicker/timePicker/TimePicker.esm.js +481 -0
- package/components/devicePreview/DevicePreview.esm.js +631 -0
- package/components/devicePreview/deviceFrame/android-transparant.png.esm.js +3 -0
- package/components/devicePreview/deviceFrame/android-wide-transparant.png.esm.js +3 -0
- package/components/devicePreview/deviceFrame/bg-email.png.esm.js +3 -0
- package/components/devicePreview/deviceFrame/bg-notification.png.esm.js +3 -0
- package/components/devicePreview/deviceFrame/bg-sms.png.esm.js +3 -0
- package/components/devicePreview/deviceFrame/bg-whatsapp.png.esm.js +3 -0
- package/components/devicePreview/deviceFrame/desktop-transparant.png.esm.js +3 -0
- package/components/devicePreview/deviceFrame/ic-majoo-profpic.png.esm.js +3 -0
- package/components/devicePreview/deviceFrame/iphone-transparant.png.esm.js +3 -0
- package/components/dialog/Dialog.esm.js +106 -0
- package/components/drawer/Drawer.esm.js +294 -0
- package/components/dropdownMenu/DropdownMenu.esm.js +281 -0
- package/components/editableTable/EditableMobile.esm.js +361 -0
- package/components/editableTable/EditableTable.esm.js +618 -0
- package/components/editableTable/transition.esm.js +37 -0
- package/components/form/components/FormGroup/FormGroup.esm.js +142 -0
- package/components/form/components/FormHelper/Helper.esm.js +50 -0
- package/components/form/components/FormLabel/Label.esm.js +90 -0
- package/components/form/components/InputAddon/InputAddon.esm.js +105 -0
- package/components/form/components/InputCheckbox/CheckboxGroup.esm.js +60 -0
- package/components/form/components/InputCheckbox/InputCheckbox.esm.js +129 -0
- package/components/form/components/InputCheckbox/icon/CheckOutline.esm.js +33 -0
- package/components/form/components/InputCheckbox/icon/MinusOutline.esm.js +33 -0
- package/components/form/components/InputCombobox/InputCombobox.esm.js +169 -0
- package/components/form/components/InputCounter/InputCounter.esm.js +226 -0
- package/components/form/components/InputCreatable/InputCreatable.esm.js +229 -0
- package/components/form/components/InputDateRange/InputDateRange.esm.js +46 -0
- package/components/form/components/InputElement/InputElement.esm.js +35 -0
- package/components/form/components/InputGroup/InputGroup.esm.js +188 -0
- package/components/form/components/InputLetter/InputLetter.esm.js +68 -0
- package/components/form/components/InputNumber/InputNumber.esm.js +248 -0
- package/components/form/components/InputNumber/NumberFormat.esm.js +1263 -0
- package/components/form/components/InputOTP/InputOTP.esm.js +70 -0
- package/components/form/components/InputRadio/InputRadio.esm.js +273 -0
- package/components/form/components/InputRadio/InputRadioGroup.esm.js +35 -0
- package/components/form/components/InputRadio/context.esm.js +5 -0
- package/components/form/components/InputResourceList/InputResourceList.esm.js +429 -0
- package/components/form/components/InputSearchbox/CloseFilled.esm.js +34 -0
- package/components/form/components/InputSearchbox/InputSearchbox.esm.js +90 -0
- package/components/form/components/InputSearchbox/SearchOutline.esm.js +26 -0
- package/components/form/components/InputSelect/InputSelect.esm.js +964 -0
- package/components/form/components/InputSelectCheck/InputSelectCheck.esm.js +1388 -0
- package/components/form/components/InputSelectCheck/OptionGroupItem.esm.js +39 -0
- package/components/form/components/InputSelectCheck/icon/CheckOutline.esm.js +33 -0
- package/components/form/components/InputSelectTag/InputSelectTag.esm.js +62 -0
- package/components/form/components/InputSignature/InputSignature.esm.js +122 -0
- package/components/form/components/InputSignature/SignatureModal.esm.js +67 -0
- package/components/form/components/InputSwitch/InputSwitch.esm.js +96 -0
- package/components/form/components/InputSwitch/InputSwitchWithImage.esm.js +136 -0
- package/components/form/components/InputTags/InputTags.esm.js +268 -0
- package/components/form/components/InputText/InputText.esm.js +197 -0
- package/components/form/components/InputTextArea/InputTextArea.esm.js +77 -0
- package/components/heading/Heading.esm.js +64 -0
- package/components/iconButton/IconButton.esm.js +71 -0
- package/components/image/Image.esm.js +141 -0
- package/components/link/Link.esm.js +59 -0
- package/components/loadingBar/LoadingBar.esm.js +113 -0
- package/components/mapPicker/InputMapPicker.esm.js +160 -0
- package/components/mapPicker/MapPicker.esm.js +122 -0
- package/components/mapPicker/MapPicker.styles.esm.js +70 -0
- package/components/mapPicker/assets/images/Mapsicle.png.esm.js +3 -0
- package/components/mapPicker/components/AddressCard.esm.js +25 -0
- package/components/mapPicker/components/ButtonSelect.esm.js +46 -0
- package/components/mapPicker/components/ChangeView.esm.js +20 -0
- package/components/mapPicker/components/InputSearch.esm.js +74 -0
- package/components/mapPicker/components/MarkerIcon.esm.js +22 -0
- package/components/mapPicker/components/MarkerSvg.esm.js +62 -0
- package/components/mapPicker/components/ZoomControls.esm.js +36 -0
- package/components/mapPicker/hooks/useMapSearch.esm.js +161 -0
- package/components/modalDialog/ModalDialog.esm.js +247 -0
- package/components/notificationBadge/NotificationBadge.esm.js +149 -0
- package/components/pageDialog/PageDialog.esm.js +291 -0
- package/components/pageDialog/logo.svg.esm.js +3 -0
- package/components/pagination/Pagination.esm.js +94 -0
- package/components/pagination/PaginationButton.esm.js +346 -0
- package/components/pagination/PaginationInfo.esm.js +146 -0
- package/components/paper/Paper.esm.js +76 -0
- package/components/paragraph/Paragraph.esm.js +52 -0
- package/components/pieChart/PieChart.esm.js +287 -0
- package/components/popover/Popover.esm.js +142 -0
- package/components/progress/Progress.esm.js +170 -0
- package/components/progressIndicator/ProgressIndicator.esm.js +287 -0
- package/components/scrollSync/ScrollSync.esm.js +172 -0
- package/components/scrollSync/ScrollSyncNode.esm.js +87 -0
- package/components/scrollSync/utils.esm.js +9 -0
- package/components/separator/Separator.esm.js +43 -0
- package/components/skeleton/Skeleton.esm.js +131 -0
- package/components/slider/Slider.esm.js +345 -0
- package/components/stepWizard/StepWizard.esm.js +451 -0
- package/components/stepWizard/index.esm.js +14 -0
- package/components/table/MobileTable.esm.js +415 -0
- package/components/table/Table.esm.js +1472 -0
- package/components/table/components/columns/DateColumn.esm.js +26 -0
- package/components/table/components/columns/DecimalColumn.esm.js +36 -0
- package/components/table/components/columns/PriceColumn.esm.js +57 -0
- package/components/table/components/columns/RowDraggableColumn.esm.js +24 -0
- package/components/table/components/columns/RowExpanderColumn.esm.js +32 -0
- package/components/table/components/columns/RowExpanderMultipleColumn.esm.js +24 -0
- package/components/table/components/columns/RowMenuColumn.esm.js +101 -0
- package/components/table/components/columns/RowSelectionCallbackColumn.esm.js +38 -0
- package/components/table/components/columns/RowSelectionColumn.esm.js +34 -0
- package/components/table/images/img-emptydata.webp.esm.js +3 -0
- package/components/table/images/img-emptysearchdata.webp.esm.js +3 -0
- package/components/tableOfContent/TableOfContent.esm.js +267 -0
- package/components/tableOfContent/index.esm.js +18 -0
- package/components/tableOfContent/transition.esm.js +38 -0
- package/components/tabs/Tabs.esm.js +282 -0
- package/components/tag/Tag.esm.js +161 -0
- package/components/tagList/TagList.esm.js +90 -0
- package/components/tagStatus/TagStatus.esm.js +134 -0
- package/components/text/Text.esm.js +140 -0
- package/components/toast/Toast.esm.js +297 -0
- package/components/toast/ToastContainer.esm.js +73 -0
- package/components/toast/context/ToastContext.esm.js +5 -0
- package/components/toast/context/ToastProvider.esm.js +96 -0
- package/components/tooltip/Tooltip.esm.js +175 -0
- package/components/upload/Upload.esm.js +1103 -0
- package/components/upload/utils/canvasPreview.esm.js +39 -0
- package/components/upload/utils/imgPreview.esm.js +21 -0
- package/config/stitches.config.esm.js +216 -0
- package/editor.esm.js +1 -264
- package/hooks/useListOption/useListOption.esm.js +56 -0
- package/hooks/useToggle/useToggle.esm.js +8 -0
- package/index.esm.js +106 -42293
- package/layout/box/Box.esm.js +24 -0
- package/layout/flex/Flex.esm.js +135 -0
- package/layout/grid/Grid.esm.js +270 -0
- package/layout/pageContainer/PageContainer.esm.js +60 -0
- package/majoo-provider/MajooProvider.esm.js +42 -0
- package/majoo-provider/ThemeProvider.esm.js +41 -0
- package/majoo-provider/globalStyles.esm.js +242 -0
- package/majoo-provider/styles/modern-normalize.esm.js +95 -0
- package/map.esm.js +2 -734
- package/package.json +8 -4
- package/utils/calendar.esm.js +26 -0
- package/utils/element.esm.js +21 -0
- package/utils/object.esm.js +12 -0
- package/utils/request.esm.js +74 -0
- package/utils/strings.esm.js +6 -0
- package/{useMediaQuery.esm.js → utils/useMediaQuery.esm.js} +1 -1
- package/utils/useNavigatorOnline.esm.js +19 -0
- package/utils/variant.esm.js +12 -0
- package/wrapper/ConditionalWrapper.esm.js +9 -0
- package/ModalDialog.esm.js +0 -2669
- package/Separator.esm.js +0 -3002
- package/stitches.config.esm.js +0 -2284
|
@@ -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 };
|