@capillarytech/blaze-ui 6.4.0 → 6.5.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 (109) hide show
  1. package/CapDateRangePicker/index.d.ts.map +1 -1
  2. package/CapDateRangePicker/index.js +5 -1
  3. package/CapDateRangePicker/styles.css +28 -0
  4. package/CapDateRangePicker/styles.module.scss.js +2 -1
  5. package/CapDateRangePicker/styles.scss +37 -0
  6. package/CapDateRangePicker/types.d.ts +5 -0
  7. package/CapDateRangePicker/types.d.ts.map +1 -1
  8. package/CapDragAndDrop/index.d.ts +19 -3
  9. package/CapDragAndDrop/index.d.ts.map +1 -1
  10. package/CapDragAndDrop/index.js +29 -24
  11. package/CapDragAndDrop/styles.css +15 -17
  12. package/CapDragAndDrop/styles.scss +16 -18
  13. package/CapMobileDateRangePicker/DateRangeInputSelectors.d.ts +7 -0
  14. package/CapMobileDateRangePicker/DateRangeInputSelectors.d.ts.map +1 -0
  15. package/CapMobileDateRangePicker/DateRangeInputSelectors.js +68 -0
  16. package/CapMobileDateRangePicker/ReactMobileDatePickerModule.d.ts.map +1 -1
  17. package/CapMobileDateRangePicker/ReactMobileDatePickerModule.js +2 -1
  18. package/CapMobileDateRangePicker/index.d.ts +5 -21
  19. package/CapMobileDateRangePicker/index.d.ts.map +1 -1
  20. package/CapMobileDateRangePicker/index.js +256 -309
  21. package/CapMobileDateRangePicker/messages.d.ts +17 -0
  22. package/CapMobileDateRangePicker/messages.d.ts.map +1 -0
  23. package/CapMobileDateRangePicker/messages.js +20 -0
  24. package/CapMobileDateRangePicker/styles.css +107 -144
  25. package/CapMobileDateRangePicker/styles.module.scss.js +21 -0
  26. package/CapMobileDateRangePicker/styles.scss +188 -192
  27. package/CapMobileDateRangePicker/tests/CapMobileDateRangePicker.mockData.d.ts +18 -0
  28. package/CapMobileDateRangePicker/tests/CapMobileDateRangePicker.mockData.d.ts.map +1 -0
  29. package/CapMobileDateRangePicker/types.d.ts +95 -0
  30. package/CapMobileDateRangePicker/types.d.ts.map +1 -0
  31. package/CapMobileDateRangePicker/utils.d.ts +3 -0
  32. package/CapMobileDateRangePicker/utils.d.ts.map +1 -0
  33. package/CapMobileDateRangePicker/utils.js +5 -0
  34. package/CapPopoverTree/index.d.ts +3 -40
  35. package/CapPopoverTree/index.d.ts.map +1 -1
  36. package/CapPopoverTree/index.js +72 -82
  37. package/CapPopoverTree/style.d.ts +5 -1
  38. package/CapPopoverTree/style.d.ts.map +1 -1
  39. package/CapPopoverTree/styles.css +119 -18
  40. package/CapPopoverTree/styles.module.scss.js +26 -0
  41. package/CapPopoverTree/styles.scss +179 -31
  42. package/CapPopoverTree/tests/CapPopoverTree.mockData.d.ts +22 -0
  43. package/CapPopoverTree/tests/CapPopoverTree.mockData.d.ts.map +1 -0
  44. package/CapPopoverTree/types.d.ts +62 -0
  45. package/CapPopoverTree/types.d.ts.map +1 -0
  46. package/CapTimeline/CapTimelineCard.d.ts +27 -4
  47. package/CapTimeline/CapTimelineCard.d.ts.map +1 -1
  48. package/CapTimeline/CapTimelineCard.js +157 -40
  49. package/CapTimeline/CapTimelinePanesWrapper.d.ts +25 -4
  50. package/CapTimeline/CapTimelinePanesWrapper.d.ts.map +1 -1
  51. package/CapTimeline/CapTimelinePanesWrapper.js +20 -24
  52. package/CapTimeline/index.d.ts +17 -2
  53. package/CapTimeline/index.d.ts.map +1 -1
  54. package/CapTimeline/index.js +23 -62
  55. package/CapTimeline/styles.css +40 -40
  56. package/CapTimeline/styles.scss +57 -76
  57. package/CapVirtualSelect/actions.d.ts +16 -0
  58. package/CapVirtualSelect/actions.d.ts.map +1 -0
  59. package/CapVirtualSelect/actions.js +21 -0
  60. package/CapVirtualSelect/constants.d.ts +13 -0
  61. package/CapVirtualSelect/constants.d.ts.map +1 -0
  62. package/CapVirtualSelect/constants.js +26 -0
  63. package/CapVirtualSelect/index.d.ts +169 -0
  64. package/CapVirtualSelect/index.d.ts.map +1 -0
  65. package/CapVirtualSelect/index.js +409 -0
  66. package/CapVirtualSelect/messages.d.ts +9 -0
  67. package/CapVirtualSelect/messages.d.ts.map +1 -0
  68. package/CapVirtualSelect/messages.js +12 -0
  69. package/CapVirtualSelect/reducer.d.ts +4 -0
  70. package/CapVirtualSelect/reducer.d.ts.map +1 -0
  71. package/CapVirtualSelect/reducer.js +63 -0
  72. package/CapVirtualSelect/saga.d.ts +40 -0
  73. package/CapVirtualSelect/saga.d.ts.map +1 -0
  74. package/CapVirtualSelect/saga.js +91 -0
  75. package/CapVirtualSelect/selectors.d.ts +28 -0
  76. package/CapVirtualSelect/selectors.d.ts.map +1 -0
  77. package/CapVirtualSelect/selectors.js +30 -0
  78. package/CapVirtualSelect/styles.css +110 -0
  79. package/CapVirtualSelect/styles.scss +106 -0
  80. package/CapVirtualSelect/tests/mockData.d.ts +7 -0
  81. package/CapVirtualSelect/tests/mockData.d.ts.map +1 -0
  82. package/CapVirtualSelect/utils.d.ts +2 -0
  83. package/CapVirtualSelect/utils.d.ts.map +1 -0
  84. package/CapVirtualSelect/utils.js +12 -0
  85. package/index.d.ts +2 -4
  86. package/index.d.ts.map +1 -1
  87. package/index.js +97 -99
  88. package/package.json +1 -1
  89. package/utils/dayjs.d.ts +29 -0
  90. package/utils/dayjs.d.ts.map +1 -1
  91. package/utils/dayjs.js +30 -0
  92. package/utils/getCapThemeConfig.d.ts.map +1 -1
  93. package/utils/getCapThemeConfig.js +1 -9
  94. package/CapDragAndDrop/messages.d.ts +0 -25
  95. package/CapDragAndDrop/messages.d.ts.map +0 -1
  96. package/CapDragAndDrop/messages.js +0 -28
  97. package/CapDragAndDrop/styles.module.scss.js +0 -21
  98. package/CapDragAndDrop/types.d.ts +0 -17
  99. package/CapDragAndDrop/types.d.ts.map +0 -1
  100. package/CapTimeline/messages.d.ts +0 -21
  101. package/CapTimeline/messages.d.ts.map +0 -1
  102. package/CapTimeline/messages.js +0 -24
  103. package/CapTimeline/styles.module.scss.js +0 -30
  104. package/CapTimeline/tests/CapTimeline.mockData.d.ts +0 -14
  105. package/CapTimeline/tests/CapTimeline.mockData.d.ts.map +0 -1
  106. package/CapTimeline/types.d.ts +0 -60
  107. package/CapTimeline/types.d.ts.map +0 -1
  108. /package/{CapDragAndDrop → CapMobileDateRangePicker}/types.js +0 -0
  109. /package/{CapTimeline → CapPopoverTree}/types.js +0 -0
@@ -1,355 +1,302 @@
1
- import { jsxs, Fragment, jsx } from "react/jsx-runtime";
1
+ import { jsxs, jsx, Fragment } from "react/jsx-runtime";
2
+ import classNames from "classnames";
2
3
  import moment from "moment";
3
- import PropTypes from "prop-types";
4
- import React from "react";
4
+ import { useState, useEffect, useCallback, useMemo } from "react";
5
+ import { injectIntl } from "react-intl";
6
+ import { RANGE_PICKER, TIME_UNITS, FORMAT_TOKENS, WEEKDAY_MAP, MONTH_MAP } from "../utils/dayjs.js";
5
7
  import CapColumn from "../CapColumn/index.js";
6
8
  import CapDateRangePicker from "../CapDateRangePicker/index.js";
7
9
  import CapDivider from "../CapDivider/index.js";
8
- import InputFinal from "../CapInput/index.js";
10
+ import CapLabelWithStatic from "../CapLabel/index.js";
9
11
  import CapModalWithHoc from "../CapModal/index.js";
10
12
  import CapRow from "../CapRow/index.js";
13
+ import DateRangeInputSelectors_default from "./DateRangeInputSelectors.js";
14
+ import messages from "./messages.js";
11
15
  import ReactMobileDatePicker from "./ReactMobileDatePickerModule.js";
12
- import './styles.css';/* empty css */
13
- const DATE_FORMAT = "YYYY-MM-DD";
14
- const monthMap = {
15
- 1: "Jan",
16
- 2: "Feb",
17
- 3: "Mar",
18
- 4: "Apr",
19
- 5: "May",
20
- 6: "Jun",
21
- 7: "Jul",
22
- 8: "Aug",
23
- 9: "Sep",
24
- 10: "Oct",
25
- 11: "Nov",
26
- 12: "Dec"
27
- };
16
+ import styles from "./styles.module.scss.js";
17
+ import { checkIfSameDate } from "./utils.js";
18
+ const clsPrefix = "cap-mobile-date-range-picker";
28
19
  const dateConfig = {
29
20
  date: {
30
- format: "DD",
31
- caption: "Day",
21
+ format: FORMAT_TOKENS.DAY_OF_MONTH_PADDED,
22
+ caption: TIME_UNITS.DAY,
32
23
  step: 1
33
24
  },
34
25
  month: {
35
- format: (value) => monthMap[value.getMonth() + 1],
36
- caption: "Mon",
26
+ format: (value) => MONTH_MAP[value.getMonth() + 1],
27
+ caption: WEEKDAY_MAP[1],
37
28
  step: 1
38
29
  },
39
30
  year: {
40
- format: "YYYY",
41
- caption: "Year",
31
+ format: FORMAT_TOKENS.YEAR,
32
+ caption: TIME_UNITS.YEAR,
42
33
  step: 1
43
34
  }
44
35
  };
45
- class CapMobileDateRangePicker extends React.Component {
46
- constructor(props) {
47
- super(props);
48
- this.handleDatePickerVisible = (val) => this.setState(() => ({ isDatePickerVisible: val }));
49
- this.handleModalVisible = () => this.setState((prevState) => ({ isModalOpen: !prevState.isModalOpen }));
50
- this.checkIfSameDate = (d1, d2) => d1.format(DATE_FORMAT) === d2.format(DATE_FORMAT);
51
- this.toggleFocusedInput = (inputType = "", onClickHandler) => {
36
+ const CapMobileDateRangePicker = ({
37
+ intl: { formatMessage },
38
+ cancelText,
39
+ resetText,
40
+ dateDisplayFormat,
41
+ doneText,
42
+ startDate: startDateProp,
43
+ endDate: endDateProp,
44
+ minDate,
45
+ maxDate,
46
+ type,
47
+ minimumNights,
48
+ onDone,
49
+ switchBackToScrollerText,
50
+ switchBackToCalenderText,
51
+ title
52
+ }) => {
53
+ const [startDate, setStartDate] = useState(startDateProp);
54
+ const [endDate, setEndDate] = useState(endDateProp);
55
+ const [isModalOpen, setIsModalOpen] = useState(false);
56
+ const [focusedInput, setFocusedInput] = useState(RANGE_PICKER.START_DATE);
57
+ const [isDatePickerVisible, setIsDatePickerVisible] = useState(false);
58
+ const isComparing = type === "compare";
59
+ const isStartDateFocused = focusedInput === RANGE_PICKER.START_DATE;
60
+ const isEndDateFocused = focusedInput === RANGE_PICKER.END_DATE;
61
+ useEffect(() => {
62
+ const isSameStart = checkIfSameDate(startDateProp, startDate);
63
+ const isSameEnd = checkIfSameDate(endDateProp, endDate);
64
+ if (!(isSameStart && isSameEnd)) {
65
+ setStartDate(startDateProp);
66
+ setEndDate(endDateProp);
67
+ }
68
+ }, [startDateProp, endDateProp]);
69
+ const toggleFocusedInput = useCallback(
70
+ (inputType = "", onClickHandler) => {
52
71
  if (inputType === "") {
53
- this.setState(
54
- (prevState) => ({
55
- focusedInput: prevState.focusedInput === "startDate" ? "endDate" : "startDate"
56
- }),
57
- () => onClickHandler && onClickHandler()
72
+ setFocusedInput(
73
+ (prev) => prev === RANGE_PICKER.START_DATE ? RANGE_PICKER.END_DATE : RANGE_PICKER.START_DATE
58
74
  );
59
75
  } else {
60
- this.setState({ focusedInput: inputType }, () => onClickHandler && onClickHandler());
61
- }
62
- };
63
- this.handleDateRangeChange = (date) => {
64
- const dateRange = {
65
- start: moment(this.state.startDate),
66
- end: moment(this.state.endDate)
67
- };
68
- let newRange = {
69
- start: date[0] || moment(dateRange.start),
70
- end: date[1] || moment(dateRange.end)
71
- };
72
- const prevRange = {
73
- start: moment(dateRange.start),
74
- end: moment(dateRange.end)
75
- };
76
- let dateIndexModified = 0;
77
- if (!this.checkIfSameDate(newRange.start, moment(dateRange.start))) {
78
- dateIndexModified = 0;
79
- } else if (!this.checkIfSameDate(newRange.end, moment(dateRange.end))) {
80
- dateIndexModified = 1;
76
+ setFocusedInput(inputType);
81
77
  }
82
- const { focusedInput } = this.state;
83
- if (focusedInput === "startDate") {
84
- newRange.start = date[dateIndexModified];
85
- newRange.end = moment(dateRange.end);
86
- } else if (focusedInput === "endDate") {
87
- newRange.start = moment(dateRange.start);
88
- newRange.end = date[dateIndexModified];
78
+ onClickHandler == null ? void 0 : onClickHandler();
79
+ },
80
+ []
81
+ );
82
+ const handleStartDateClick = useCallback(() => {
83
+ toggleFocusedInput(RANGE_PICKER.START_DATE);
84
+ setIsModalOpen(true);
85
+ }, [toggleFocusedInput]);
86
+ const handleEndDateClick = useCallback(() => {
87
+ toggleFocusedInput(RANGE_PICKER.END_DATE);
88
+ setIsModalOpen(true);
89
+ }, [toggleFocusedInput]);
90
+ const formatDate = useCallback((date) => new Date(moment(date).format()), []);
91
+ const handleOnSelect = useCallback(
92
+ (date) => {
93
+ const newDate = moment(date);
94
+ if (isStartDateFocused) {
95
+ setStartDate(newDate);
96
+ } else {
97
+ setEndDate(newDate);
89
98
  }
90
- if (date[0] && date[1]) {
91
- if (this.checkIfSameDate(date[0], date[1])) {
92
- newRange = {
93
- start: date[0],
94
- end: date[1]
95
- };
96
- } else if (this.checkIfSameDate(date[0], prevRange.start) && this.checkIfSameDate(date[1], prevRange.end)) {
97
- newRange = {
98
- start: date[1],
99
- end: date[1]
100
- };
99
+ },
100
+ [isStartDateFocused]
101
+ );
102
+ const checkMaxDateForScrollDatepicker = useCallback(() => {
103
+ if (isStartDateFocused) {
104
+ return formatDate(endDate);
105
+ }
106
+ return formatDate(maxDate);
107
+ }, [isStartDateFocused, endDate, maxDate, formatDate]);
108
+ const checkMinDateForScrollDatepicker = useCallback(() => {
109
+ if (isStartDateFocused) {
110
+ return formatDate(minDate);
111
+ }
112
+ return formatDate(startDate);
113
+ }, [isStartDateFocused, minDate, startDate, formatDate]);
114
+ const currentScrollDate = useMemo(
115
+ () => formatDate(isStartDateFocused ? startDate : endDate),
116
+ [isStartDateFocused, startDate, endDate, formatDate]
117
+ );
118
+ const handleCalendarChange = useCallback(
119
+ (dates) => {
120
+ if (!dates) return;
121
+ const [rawStart, rawEnd] = dates;
122
+ const raw = rawStart || rawEnd;
123
+ if (!raw) return;
124
+ const clicked = moment(raw.toDate());
125
+ if (isStartDateFocused) {
126
+ setStartDate(clicked);
127
+ setFocusedInput(RANGE_PICKER.END_DATE);
128
+ } else {
129
+ if (clicked.diff(startDate, TIME_UNITS.DAY) >= 0) {
130
+ setEndDate(clicked);
131
+ setFocusedInput(RANGE_PICKER.START_DATE);
101
132
  }
102
133
  }
103
- if (newRange.start.diff(newRange.end, "days") <= 0) {
104
- this.setState({
105
- startDate: newRange.start,
106
- endDate: newRange.end,
107
- dateRange: newRange
108
- });
109
- this.toggleFocusedInput();
110
- }
111
- };
112
- this.handleOnSelect = (date) => {
113
- const newDate = moment(date);
114
- const { focusedInput } = this.state;
115
- this.setState({ [focusedInput]: newDate });
116
- };
117
- this.checkIfDateDisabled = (current) => {
118
- const { focusedInput } = this.state;
119
- let isDisabled = false;
120
- const currentMoment = moment(current);
121
- const itd = moment(this.props.minDate, DATE_FORMAT);
122
- const { maxDate } = this.props;
123
- isDisabled = currentMoment.isAfter(moment(maxDate), "day") || currentMoment.isBefore(itd, "day");
124
- if (focusedInput === "startDate" && currentMoment.isAfter(moment(this.state.endDate), "day")) {
134
+ },
135
+ [startDate, isStartDateFocused]
136
+ );
137
+ const checkIfDateDisabled = useCallback(
138
+ (current) => {
139
+ const currentMoment = moment(current.toDate());
140
+ const itd = moment(minDate, FORMAT_TOKENS.ISO_8601_DATE);
141
+ let isDisabled = currentMoment.isAfter(moment(maxDate), TIME_UNITS.DAY) || currentMoment.isBefore(itd, TIME_UNITS.DAY);
142
+ if (isStartDateFocused && currentMoment.isAfter(moment(endDate), TIME_UNITS.DAY)) {
125
143
  isDisabled = true;
126
- } else if (focusedInput === "endDate" && currentMoment.isBefore(moment(this.state.startDate), "day")) {
144
+ } else if (isEndDateFocused && currentMoment.isBefore(moment(startDate), TIME_UNITS.DAY)) {
127
145
  isDisabled = true;
128
146
  }
129
147
  return isDisabled;
148
+ },
149
+ [isStartDateFocused, isEndDateFocused, minDate, maxDate, startDate, endDate]
150
+ );
151
+ const handleModalVisible = useCallback(() => {
152
+ setIsModalOpen((prev) => !prev);
153
+ }, []);
154
+ const resetDate = useCallback(() => {
155
+ setStartDate(startDateProp);
156
+ setEndDate(endDateProp);
157
+ }, [startDateProp, endDateProp]);
158
+ const handleCancel = useCallback(() => {
159
+ resetDate();
160
+ handleModalVisible();
161
+ }, [resetDate, handleModalVisible]);
162
+ const handleDone = useCallback(() => {
163
+ const dateRange = {
164
+ start: moment(startDate),
165
+ end: moment(endDate)
130
166
  };
131
- this.formatDate = (date) => new Date(moment(date).format());
132
- this.checkMaxDateForScrollDatepicker = () => {
133
- const { endDate, focusedInput } = this.state;
134
- const { maxDate } = this.props;
135
- if (focusedInput === "startDate") {
136
- return this.formatDate(endDate);
137
- }
138
- return this.formatDate(maxDate);
139
- };
140
- this.checkMinDateForScrollDatepicker = () => {
141
- const { startDate, focusedInput } = this.state;
142
- const { minDate } = this.props;
143
- if (focusedInput === "startDate") {
144
- return this.formatDate(minDate);
145
- }
146
- return this.formatDate(startDate);
147
- };
148
- this.resetDate = () => {
149
- const { startDate, endDate } = this.props;
150
- this.setState({ startDate, endDate });
151
- };
152
- this.handleCancel = () => {
153
- this.resetDate();
154
- this.handleModalVisible();
155
- };
156
- this.handleDone = () => {
157
- const dateRange = {
158
- start: moment(this.state.startDate),
159
- end: moment(this.state.endDate)
160
- };
161
- this.props.onDone(dateRange);
162
- this.handleModalVisible();
163
- };
164
- this.getDaySize = () => {
165
- const screenWidth = window.screen.width;
166
- return 40 + Math.ceil((screenWidth - 360) / 10);
167
- };
168
- this.state = {
169
- startDate: props.startDate,
170
- endDate: props.endDate,
171
- isModalOpen: false,
172
- focusedInput: "startDate",
173
- isDatePickerVisible: false
174
- };
175
- }
176
- componentWillReceiveProps(nextProps) {
177
- if (!(this.checkIfSameDate(nextProps.startDate, this.props.startDate) && this.checkIfSameDate(nextProps.endDate, this.props.endDate))) {
178
- this.setState({
179
- startDate: nextProps.startDate,
180
- endDate: nextProps.endDate
181
- });
182
- }
183
- }
184
- render() {
185
- const { dateDisplayFormat, type, minimumNights } = this.props;
186
- const { startDate, endDate, focusedInput } = this.state;
187
- const DateRangePickerInputs = ({ showPlaceholders = false, onClick }) => /* @__PURE__ */ jsxs(CapRow, { className: "mobile-dateRange-picker-inputs", children: [
188
- /* @__PURE__ */ jsxs(
189
- CapColumn,
190
- {
191
- span: 11,
192
- onClick: () => {
193
- this.toggleFocusedInput("startDate", onClick);
194
- },
195
- children: [
196
- showPlaceholders && /* @__PURE__ */ jsx("span", { className: "placeholder-text", children: "Start Date" }),
197
- /* @__PURE__ */ jsx(
198
- InputFinal,
199
- {
200
- className: `${focusedInput === "startDate" ? "focused" : ""}`,
201
- value: moment(startDate).format(dateDisplayFormat),
202
- size: "default",
203
- disabled: true
204
- }
205
- )
206
- ]
207
- }
208
- ),
209
- /* @__PURE__ */ jsx(CapColumn, { span: 2, className: `date-range-hyphen ${showPlaceholders && "vertical-align"}`, children: "-" }),
210
- /* @__PURE__ */ jsxs(
211
- CapColumn,
212
- {
213
- span: 11,
214
- onClick: () => {
215
- this.toggleFocusedInput("endDate", onClick);
216
- },
217
- children: [
218
- showPlaceholders && /* @__PURE__ */ jsx("span", { className: "placeholder-text", children: "End Date" }),
219
- /* @__PURE__ */ jsx(
220
- InputFinal,
167
+ onDone(dateRange);
168
+ handleModalVisible();
169
+ }, [startDate, endDate, onDone, handleModalVisible]);
170
+ return /* @__PURE__ */ jsxs(CapRow, { className: styles[clsPrefix], children: [
171
+ isModalOpen && /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsxs(
172
+ CapModalWithHoc,
173
+ {
174
+ open: true,
175
+ title,
176
+ centered: true,
177
+ destroyOnHidden: true,
178
+ width: "90%",
179
+ onCancel: handleCancel,
180
+ className: styles[`${clsPrefix}-modal`],
181
+ classNames: {
182
+ header: styles[`${clsPrefix}-modal-header`],
183
+ footer: styles[`${clsPrefix}-modal-footer`]
184
+ },
185
+ closable: false,
186
+ footer: /* @__PURE__ */ jsxs(CapRow, { align: "middle", justify: "space-between", children: [
187
+ /* @__PURE__ */ jsx(
188
+ CapLabelWithStatic,
189
+ {
190
+ className: styles[`${clsPrefix}-modal-footer-cancel-button`],
191
+ onClick: handleCancel,
192
+ children: cancelText
193
+ }
194
+ ),
195
+ /* @__PURE__ */ jsx(
196
+ CapLabelWithStatic,
197
+ {
198
+ className: styles[`${clsPrefix}-modal-footer-done-button`],
199
+ onClick: handleDone,
200
+ children: doneText
201
+ }
202
+ )
203
+ ] }),
204
+ children: [
205
+ /* @__PURE__ */ jsxs(CapRow, { justify: "start", align: "middle", children: [
206
+ /* @__PURE__ */ jsx(CapColumn, { span: 21, children: /* @__PURE__ */ jsx(
207
+ DateRangeInputSelectors_default,
221
208
  {
222
- className: `${focusedInput === "endDate" ? "focused" : ""}`,
223
- value: moment(endDate).format(dateDisplayFormat),
224
- size: "default",
225
- disabled: true
209
+ focusedInput,
210
+ startDate,
211
+ endDate,
212
+ dateDisplayFormat,
213
+ handleStartDateClick,
214
+ handleEndDateClick,
215
+ showPlaceholders: true
226
216
  }
227
- )
228
- ]
229
- }
230
- )
231
- ] });
232
- const { isModalOpen, isDatePickerVisible } = this.state;
233
- return /* @__PURE__ */ jsxs(Fragment, { children: [
234
- /* @__PURE__ */ jsxs(
235
- CapModalWithHoc,
236
- {
237
- title: this.props.title,
238
- visible: isModalOpen,
239
- centered: true,
240
- okText: this.props.yesText,
241
- cancelText: this.props.noText,
242
- width: "90%",
243
- onCancel: this.handleCancel,
244
- className: "mobile-date-range-picker-modal",
245
- closable: false,
246
- footer: /* @__PURE__ */ jsxs(CapRow, { className: "modal-footer", children: [
247
- /* @__PURE__ */ jsx("span", { span: 3, onClick: this.handleCancel, className: "action-item", children: this.props.cancelText && this.props.cancelText }),
217
+ ) }),
248
218
  /* @__PURE__ */ jsx(
249
- "span",
219
+ CapColumn,
250
220
  {
221
+ onClick: resetDate,
251
222
  span: 3,
252
- style: { marginLeft: "39px" },
253
- className: "action-item",
254
- onClick: this.handleDone,
255
- children: this.props.doneText
223
+ className: styles[`${clsPrefix}-reset-button`],
224
+ children: resetText
256
225
  }
257
226
  )
258
227
  ] }),
259
- children: [
260
- /* @__PURE__ */ jsxs(CapRow, { type: "flex", align: "middle", className: "control-section", children: [
261
- /* @__PURE__ */ jsx(CapColumn, { span: 21, children: /* @__PURE__ */ jsx(
262
- DateRangePickerInputs,
228
+ /* @__PURE__ */ jsx(CapDivider, { className: styles[`${clsPrefix}-divider`] }),
229
+ /* @__PURE__ */ jsx(CapRow, { children: /* @__PURE__ */ jsx(
230
+ CapColumn,
231
+ {
232
+ onClick: () => setIsDatePickerVisible(!isDatePickerVisible),
233
+ span: 24,
234
+ className: classNames(styles[`${clsPrefix}-switch-label`]),
235
+ children: !isDatePickerVisible ? switchBackToScrollerText : switchBackToCalenderText
236
+ }
237
+ ) }),
238
+ isDatePickerVisible ? /* @__PURE__ */ jsx(
239
+ "div",
240
+ {
241
+ className: classNames(styles[`${clsPrefix}-scroller-datepicker`], {
242
+ [styles[`${clsPrefix}-compare-mobile-date-picker`]]: isComparing
243
+ }),
244
+ children: /* @__PURE__ */ jsx(
245
+ ReactMobileDatePicker,
263
246
  {
264
- context: "inner",
265
- showPlaceholders: true,
266
- onClick: () => this.handleDatePickerVisible(true)
247
+ isPopup: false,
248
+ title: formatMessage(messages.datePicker),
249
+ onChange: handleOnSelect,
250
+ value: currentScrollDate,
251
+ min: checkMinDateForScrollDatepicker(),
252
+ max: checkMaxDateForScrollDatepicker(),
253
+ showHeader: false,
254
+ showFooter: false,
255
+ dateConfig
267
256
  }
268
- ) }),
269
- /* @__PURE__ */ jsx(
270
- CapColumn,
257
+ )
258
+ }
259
+ ) : /* @__PURE__ */ jsx(
260
+ "div",
261
+ {
262
+ className: classNames(styles[`${clsPrefix}-calender-only`], {
263
+ [styles[`${clsPrefix}-compare-mobile-date-range-picker`]]: isComparing
264
+ }),
265
+ children: /* @__PURE__ */ jsx(
266
+ CapDateRangePicker,
271
267
  {
272
- title: this.props.resetText,
273
- onClick: this.resetDate,
274
- span: 3,
275
- className: "action-item",
276
- children: this.props.resetText
268
+ showCalendarOnly: true,
269
+ isSingleMonthRangePicker: true,
270
+ autoFocus: true,
271
+ previewValue: false,
272
+ value: [startDate, endDate],
273
+ onCalendarChange: handleCalendarChange,
274
+ isDayBlocked: checkIfDateDisabled,
275
+ minimumNights,
276
+ allowYearNavigation: true,
277
+ getPopupContainer: (trigger) => (trigger == null ? void 0 : trigger.parentElement) || document.body
277
278
  }
278
279
  )
279
- ] }),
280
- /* @__PURE__ */ jsx(CapDivider, {}),
281
- /* @__PURE__ */ jsx(CapRow, { span: 24, children: /* @__PURE__ */ jsx(
282
- CapColumn,
283
- {
284
- title: this.props.resetText,
285
- onClick: () => this.handleDatePickerVisible(!isDatePickerVisible),
286
- span: 24,
287
- className: "action-item toggle-text",
288
- children: !isDatePickerVisible ? this.props.switchBackToScrollerText : this.props.switchBackToCalenderText
289
- }
290
- ) }),
291
- isDatePickerVisible ? /* @__PURE__ */ jsx("div", { className: `${type === "compare" && "compare-mobile-date-picker"}`, children: /* @__PURE__ */ jsx(
292
- ReactMobileDatePicker,
293
- {
294
- isPopup: false,
295
- className: "date-picker-scroller",
296
- title: "Date picker",
297
- onChange: this.handleOnSelect,
298
- value: this.formatDate(this.state[this.state.focusedInput]),
299
- min: this.checkMinDateForScrollDatepicker(),
300
- max: this.checkMaxDateForScrollDatepicker(),
301
- showHeader: false,
302
- showFooter: false,
303
- dateConfig
304
- }
305
- ) }) : /* @__PURE__ */ jsx(
306
- "div",
307
- {
308
- className: `calender-only ${type === "compare" && "compare-mobile-date-range-picker"}`,
309
- children: /* @__PURE__ */ jsx(
310
- CapDateRangePicker,
311
- {
312
- numberOfMonths: 1,
313
- showCalendarOnly: true,
314
- autoFocus: true,
315
- daySize: this.getDaySize(),
316
- startDate,
317
- endDate,
318
- onChange: this.handleDateRangeChange,
319
- isOutsideRange: (current) => this.checkIfDateDisabled(current),
320
- minimumNights,
321
- allowYearNavigation: true,
322
- minDate: moment(this.props.minDate),
323
- rootClass: "calender-only"
324
- }
325
- )
326
- }
327
- )
328
- ]
329
- }
330
- ),
331
- /* @__PURE__ */ jsx(DateRangePickerInputs, { context: "inner", onClick: this.handleModalVisible })
332
- ] });
333
- }
334
- }
335
- CapMobileDateRangePicker.propTypes = {
336
- cancelText: PropTypes.string,
337
- resetText: PropTypes.string,
338
- dateDisplayFormat: PropTypes.string,
339
- yesText: PropTypes.string,
340
- noText: PropTypes.string,
341
- doneText: PropTypes.string,
342
- startDate: PropTypes.object,
343
- endDate: PropTypes.object,
344
- minDate: PropTypes.object,
345
- maxDate: PropTypes.object,
346
- type: PropTypes.string,
347
- minimumNights: PropTypes.number,
348
- onDone: PropTypes.func,
349
- switchBackToScrollerText: PropTypes.string,
350
- switchBackToCalenderText: PropTypes.string,
351
- title: PropTypes.string
280
+ }
281
+ )
282
+ ]
283
+ }
284
+ ) }),
285
+ /* @__PURE__ */ jsx(
286
+ DateRangeInputSelectors_default,
287
+ {
288
+ focusedInput,
289
+ startDate,
290
+ endDate,
291
+ dateDisplayFormat,
292
+ handleStartDateClick,
293
+ handleEndDateClick
294
+ }
295
+ )
296
+ ] });
352
297
  };
298
+ const index = injectIntl(CapMobileDateRangePicker);
353
299
  export {
354
- CapMobileDateRangePicker as default
300
+ clsPrefix,
301
+ index as default
355
302
  };
@@ -0,0 +1,17 @@
1
+ export declare const scope = "app.commonUtils.capUiLibrary.CapMobileDateRangePicker";
2
+ declare const _default: {
3
+ startDate: {
4
+ id: string;
5
+ defaultMessage: string;
6
+ };
7
+ endDate: {
8
+ id: string;
9
+ defaultMessage: string;
10
+ };
11
+ datePicker: {
12
+ id: string;
13
+ defaultMessage: string;
14
+ };
15
+ };
16
+ export default _default;
17
+ //# sourceMappingURL=messages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../components/CapMobileDateRangePicker/messages.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,KAAK,0DAA0D,CAAC;;;;;;;;;;;;;;;AAE7E,wBAaG"}
@@ -0,0 +1,20 @@
1
+ import { defineMessages } from "react-intl";
2
+ const scope = "app.commonUtils.capUiLibrary.CapMobileDateRangePicker";
3
+ const messages = defineMessages({
4
+ startDate: {
5
+ id: `${scope}.startDate`,
6
+ defaultMessage: "Start Date"
7
+ },
8
+ endDate: {
9
+ id: `${scope}.endDate`,
10
+ defaultMessage: "End Date"
11
+ },
12
+ datePicker: {
13
+ id: `${scope}.datePicker`,
14
+ defaultMessage: "Date picker"
15
+ }
16
+ });
17
+ export {
18
+ messages as default,
19
+ scope
20
+ };