1 | 'use strict';
|
2 |
|
3 | Object.defineProperty(exports, '__esModule', { value: true });
|
4 |
|
5 | function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
|
6 |
|
7 | var slicedToArray = require('./slicedToArray-0711941d.js');
|
8 | require('./unsupportedIterableToArray-68db1d3b.js');
|
9 | var React = require('react');
|
10 | var React__default = _interopDefault(React);
|
11 | require('./_commonjsHelpers-72d386ba.js');
|
12 | var index = require('./index-b0606964.js');
|
13 | require('./defineProperty-0921a47c.js');
|
14 | require('./toConsumableArray-d8a4a2c3.js');
|
15 | var _styled = require('styled-components');
|
16 | var _styled__default = _interopDefault(_styled);
|
17 | require('./getPrototypeOf-2a661a20.js');
|
18 | require('./color.js');
|
19 | require('./components.js');
|
20 | require('./contains-component.js');
|
21 | require('./css.js');
|
22 | var dayjs_min = require('./dayjs.min-e07657bf.js');
|
23 | require('./date.js');
|
24 | require('./miscellaneous.js');
|
25 | require('./environment.js');
|
26 | require('./font.js');
|
27 | require('./math-f4029164.js');
|
28 | require('./characters.js');
|
29 | require('./format.js');
|
30 | require('./keycodes.js');
|
31 | require('./url.js');
|
32 | require('./web3.js');
|
33 | var constants = require('./constants.js');
|
34 | require('./breakpoints.js');
|
35 | require('./springs.js');
|
36 | require('./text-styles.js');
|
37 | require('./theme-dark.js');
|
38 | require('./theme-light.js');
|
39 | var Theme = require('./Theme.js');
|
40 | var _extends$1 = require('./extends-40571110.js');
|
41 | require('./objectWithoutProperties-35db8ab0.js');
|
42 | require('./index-ecc57c9f.js');
|
43 | require('./isObject-ec755c87.js');
|
44 | var Viewport = require('./Viewport-15101437.js');
|
45 | require('./Layout.js');
|
46 | require('./FocusVisible.js');
|
47 | require('./ButtonBase.js');
|
48 | require('./IconPropTypes-56de5759.js');
|
49 | require('./IconAddUser.js');
|
50 | require('./IconAlert.js');
|
51 | require('./IconAlignCenter.js');
|
52 | require('./IconAlignJustify.js');
|
53 | require('./IconAlignLeft.js');
|
54 | require('./IconAlignRight.js');
|
55 | require('./IconAragon.js');
|
56 | require('./IconArrowDown.js');
|
57 | require('./IconArrowLeft.js');
|
58 | require('./IconArrowRight.js');
|
59 | require('./IconArrowUp.js');
|
60 | require('./IconAtSign.js');
|
61 | require('./IconBlock.js');
|
62 | require('./IconBookmark.js');
|
63 | require('./IconCalendar.js');
|
64 | require('./IconCanvas.js');
|
65 | require('./IconCaution.js');
|
66 | require('./IconCenter.js');
|
67 | require('./IconChart.js');
|
68 | require('./IconChat.js');
|
69 | require('./IconCheck.js');
|
70 | require('./IconChip.js');
|
71 | require('./IconCircleCheck.js');
|
72 | require('./IconCircleMinus.js');
|
73 | require('./IconCirclePlus.js');
|
74 | require('./IconClock.js');
|
75 | require('./IconCloudDownload.js');
|
76 | require('./IconCloudUpload.js');
|
77 | require('./IconCoin.js');
|
78 | require('./IconConfiguration.js');
|
79 | require('./IconConnect.js');
|
80 | require('./IconConnection.js');
|
81 | require('./IconConsole.js');
|
82 | require('./IconCopy.js');
|
83 | require('./IconCross.js');
|
84 | require('./IconDashedSquare.js');
|
85 | require('./IconDown.js');
|
86 | require('./IconDownload.js');
|
87 | require('./IconEdit.js');
|
88 | require('./IconEllipsis.js');
|
89 | require('./IconEnter.js');
|
90 | require('./IconEthereum.js');
|
91 | require('./IconExternal.js');
|
92 | require('./IconFile.js');
|
93 | require('./IconFilter.js');
|
94 | require('./IconFlag.js');
|
95 | require('./IconFolder.js');
|
96 | require('./IconGraph2.js');
|
97 | require('./IconGraph.js');
|
98 | require('./IconGrid.js');
|
99 | require('./IconGroup.js');
|
100 | require('./IconHash.js');
|
101 | require('./IconHeart.js');
|
102 | require('./IconHide.js');
|
103 | require('./IconHome.js');
|
104 | require('./IconImage.js');
|
105 | require('./IconInfo.js');
|
106 | require('./IconLabel.js');
|
107 | require('./IconLayers.js');
|
108 | require('./IconLeft.js');
|
109 | require('./IconLink.js');
|
110 | require('./IconLocation.js');
|
111 | require('./IconLock.js');
|
112 | require('./IconMail.js');
|
113 | require('./IconMaximize.js');
|
114 | require('./IconMenu.js');
|
115 | require('./IconMinimize.js');
|
116 | require('./IconMinus.js');
|
117 | require('./IconMove.js');
|
118 | require('./IconNoPicture.js');
|
119 | require('./IconPicture.js');
|
120 | require('./IconPlus.js');
|
121 | require('./IconPower.js');
|
122 | require('./IconPrint.js');
|
123 | require('./IconProhibited.js');
|
124 | require('./IconQuestion.js');
|
125 | require('./IconRefresh.js');
|
126 | require('./IconRemoveUser.js');
|
127 | require('./IconRight.js');
|
128 | require('./IconRotateLeft.js');
|
129 | require('./IconRotateRight.js');
|
130 | require('./IconSearch.js');
|
131 | require('./IconSettings.js');
|
132 | require('./IconShare.js');
|
133 | require('./IconSquareMinus.js');
|
134 | require('./IconSquarePlus.js');
|
135 | require('./IconSquare.js');
|
136 | require('./IconStarFilled.js');
|
137 | require('./IconStar.js');
|
138 | require('./IconSwap.js');
|
139 | require('./IconTarget.js');
|
140 | require('./IconToken.js');
|
141 | require('./IconTrash.js');
|
142 | require('./IconUnlock.js');
|
143 | require('./IconUp.js');
|
144 | require('./IconUpload.js');
|
145 | require('./IconUser.js');
|
146 | require('./IconView.js');
|
147 | require('./IconVote.js');
|
148 | require('./IconWallet.js');
|
149 | require('./IconWarning.js');
|
150 | require('./IconWorld.js');
|
151 | require('./IconWrite.js');
|
152 | require('./IconZoomIn.js');
|
153 | require('./IconZoomOut.js');
|
154 | require('./objectWithoutPropertiesLoose-1af20ad0.js');
|
155 | require('react-dom');
|
156 | require('./web-d0294535.js');
|
157 | var Button = require('./Button.js');
|
158 | require('./getDisplayName-7ab6d318.js');
|
159 | require('./index-bc84a358.js');
|
160 | require('./index-0db71dc1.js');
|
161 | require('./RootPortal.js');
|
162 | require('./proptypes-5b34673d.js');
|
163 | var Popover = require('./Popover.js');
|
164 | require('./observe.js');
|
165 | require('./index-030bfca8.js');
|
166 | require('./providers.js');
|
167 | require('./MonthDay-f5f7ffa0.js');
|
168 | var DatePicker = require('./DatePicker.js');
|
169 | var consts = require('./consts.js');
|
170 | var Labels = require('./Labels.js');
|
171 | var utils = require('./utils.js');
|
172 |
|
173 | var _StyledPopover = _styled__default(Popover.default).withConfig({
|
174 | displayName: "DateRangePicker___StyledPopover",
|
175 | componentId: "s3s5m9-0"
|
176 | })(["min-width:", "px;border:0;filter:none;background:none;margin:2px 0 0 0;"], function (p) {
|
177 | return p._css;
|
178 | });
|
179 |
|
180 | var _StyledDiv = _styled__default("div").withConfig({
|
181 | displayName: "DateRangePicker___StyledDiv",
|
182 | componentId: "s3s5m9-1"
|
183 | })(["padding:", "px ", "px ", "px;border:1px solid ", ";border-radius:", "px;background:", ";"], function (p) {
|
184 | return p._css2;
|
185 | }, function (p) {
|
186 | return p._css3;
|
187 | }, function (p) {
|
188 | return p._css4;
|
189 | }, function (p) {
|
190 | return p._css5;
|
191 | }, constants.RADIUS, function (p) {
|
192 | return p._css6;
|
193 | });
|
194 |
|
195 | var _StyledDiv2 = _styled__default("div").withConfig({
|
196 | displayName: "DateRangePicker___StyledDiv2",
|
197 | componentId: "s3s5m9-2"
|
198 | })(["display:flex;flex-direction:row;align-items:baseline;"]);
|
199 |
|
200 | var _StyledDatePicker = _styled__default(DatePicker.default).withConfig({
|
201 | displayName: "DateRangePicker___StyledDatePicker",
|
202 | componentId: "s3s5m9-3"
|
203 | })(["margin-left:", "px;"], function (p) {
|
204 | return p._css7;
|
205 | });
|
206 |
|
207 | var _StyledDiv3 = _styled__default("div").withConfig({
|
208 | displayName: "DateRangePicker___StyledDiv3",
|
209 | componentId: "s3s5m9-4"
|
210 | })(["display:flex;align-items:center;justify-content:space-between;margin-top:", "px;", ";"], function (p) {
|
211 | return p._css8;
|
212 | }, function (p) {
|
213 | return p._css9;
|
214 | });
|
215 |
|
216 | var _StyledButton = _styled__default(Button.default).withConfig({
|
217 | displayName: "DateRangePicker___StyledButton",
|
218 | componentId: "s3s5m9-5"
|
219 | })(["margin-left:", "px;"], function (p) {
|
220 | return p._css10;
|
221 | });
|
222 |
|
223 | function DateRangePicker(_ref) {
|
224 | var format = _ref.format,
|
225 | endDateProp = _ref.endDate,
|
226 | onChange = _ref.onChange,
|
227 | startDateProp = _ref.startDate;
|
228 | var theme = Theme.useTheme();
|
229 | var labelsRef = React.useRef();
|
230 |
|
231 | var _useState = React.useState(false),
|
232 | _useState2 = slicedToArray._slicedToArray(_useState, 2),
|
233 | showPicker = _useState2[0],
|
234 | setShowPicker = _useState2[1];
|
235 |
|
236 | var _useState3 = React.useState(startDateProp),
|
237 | _useState4 = slicedToArray._slicedToArray(_useState3, 2),
|
238 | startDate = _useState4[0],
|
239 | setStartDate = _useState4[1];
|
240 |
|
241 | var _useState5 = React.useState(endDateProp),
|
242 | _useState6 = slicedToArray._slicedToArray(_useState5, 2),
|
243 | endDate = _useState6[0],
|
244 | setEndDate = _useState6[1];
|
245 |
|
246 |
|
247 | React.useEffect(function () {
|
248 | if (!showPicker) {
|
249 | setStartDate(startDateProp);
|
250 | setEndDate(endDateProp);
|
251 | }
|
252 | }, [endDateProp, startDateProp, showPicker]);
|
253 | var handlePopoverClose = React.useCallback(function () {
|
254 | return setShowPicker(false);
|
255 | }, []);
|
256 | var handleLabelsClick = React.useCallback(function () {
|
257 | setShowPicker(function (show) {
|
258 | return !show;
|
259 | });
|
260 | }, []);
|
261 | var handleDateClick = React.useCallback(function (date) {
|
262 | var result = utils.handleDateSelect({
|
263 | date: date,
|
264 | startDate: startDate,
|
265 | endDate: endDate
|
266 | });
|
267 | result.startDate !== undefined && setStartDate(result.startDate);
|
268 | result.endDate !== undefined && setEndDate(result.endDate);
|
269 | }, [startDate, endDate]);
|
270 | var handleApply = React.useCallback(function () {
|
271 | setShowPicker(false);
|
272 |
|
273 | if (startDate && endDate) {
|
274 | onChange({
|
275 | start: dayjs_min.dayjs(startDate).startOf('day').toDate(),
|
276 | end: dayjs_min.dayjs(endDate).endOf('day').toDate()
|
277 | });
|
278 | }
|
279 | }, [endDate, onChange, startDate]);
|
280 | var handleClear = React.useCallback(function () {
|
281 | setStartDate(null);
|
282 | setEndDate(null);
|
283 | setShowPicker(false);
|
284 | onChange({
|
285 | start: null,
|
286 | end: null
|
287 | });
|
288 | }, [onChange]);
|
289 | var labelProps = React.useMemo(function () {
|
290 | var _startDate = showPicker ? startDate : startDateProp;
|
291 |
|
292 | var _endDate = showPicker ? endDate : endDateProp;
|
293 |
|
294 | return {
|
295 | startText: _startDate ? dayjs_min.dayjs(_startDate).format(format) : consts.START_DATE,
|
296 | endText: _endDate ? dayjs_min.dayjs(_endDate).format(format) : consts.END_DATE
|
297 | };
|
298 | }, [endDate, endDateProp, format, showPicker, startDate, startDateProp]);
|
299 | var compactMode = Viewport.useViewport().below('medium');
|
300 | var displayMonthBeforeOnLeft = React.useMemo(function () {
|
301 |
|
302 |
|
303 | var propsDatesInSameMonth = startDateProp && endDateProp && dayjs_min.dayjs(startDateProp).isSame(dayjs_min.dayjs(endDateProp), 'month');
|
304 | return !compactMode && (propsDatesInSameMonth || !startDateProp);
|
305 | }, [compactMode, endDateProp, startDateProp]);
|
306 | return React__default.createElement("div", null, React__default.createElement(Labels.default, _extends$1._extends({
|
307 | ref: labelsRef,
|
308 | enabled: showPicker,
|
309 | hasSetDates: Boolean(startDateProp && endDateProp),
|
310 | onClick: handleLabelsClick
|
311 | }, labelProps)), React__default.createElement(_StyledPopover, {
|
312 | closeOnOpenerFocus: true,
|
313 | onClose: handlePopoverClose,
|
314 | opener: labelsRef.current,
|
315 | placement: "bottom-start",
|
316 | visible: showPicker,
|
317 | _css: 37.5 * constants.GU + 2
|
318 | }, React__default.createElement(_StyledDiv, {
|
319 | _css2: 2.5 * constants.GU,
|
320 | _css3: 3 * constants.GU,
|
321 | _css4: 3 * constants.GU,
|
322 | _css5: theme.border,
|
323 | _css6: theme.surface
|
324 | }, React__default.createElement(_StyledDiv2, null, React__default.createElement(DatePicker.default, {
|
325 | datesRangeEnd: endDate,
|
326 | datesRangeStart: startDate,
|
327 | initialDate: dayjs_min.dayjs(startDateProp || undefined).subtract(displayMonthBeforeOnLeft ? 1 : 0, 'month').toDate(),
|
328 | onSelect: handleDateClick
|
329 | }), !compactMode && React__default.createElement(_StyledDatePicker, {
|
330 | datesRangeEnd: endDate,
|
331 | datesRangeStart: startDate,
|
332 | initialDate: dayjs_min.dayjs(endDateProp || undefined).toDate(),
|
333 | onSelect: handleDateClick,
|
334 | _css7: 1 * constants.GU
|
335 | })), React__default.createElement(_StyledDiv3, {
|
336 | _css8: constants.GU * 2.25,
|
337 | _css9: compactMode ? '' : "\n max-width: 247px;\n margin-left: auto;\n "
|
338 | }, React__default.createElement(Button.default, {
|
339 | onClick: handleClear,
|
340 | size: "small",
|
341 | wide: true
|
342 | }, "Reset"), React__default.createElement(_StyledButton, {
|
343 | disabled: !startDate || !endDate,
|
344 | mode: "strong",
|
345 | onClick: handleApply,
|
346 | size: "small",
|
347 | wide: true,
|
348 | _css10: 1.5 * constants.GU
|
349 | }, "Apply")))));
|
350 | }
|
351 |
|
352 | DateRangePicker.propTypes = {
|
353 | endDate: index.PropTypes.instanceOf(Date),
|
354 | format: index.PropTypes.string,
|
355 | onChange: index.PropTypes.func,
|
356 | startDate: index.PropTypes.instanceOf(Date)
|
357 | };
|
358 | DateRangePicker.defaultProps = {
|
359 | format: 'MM/DD/YYYY',
|
360 | onChange: function onChange() {}
|
361 | };
|
362 |
|
363 | exports.default = DateRangePicker;
|
364 |
|