UNPKG

9.59 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, '__esModule', { value: true });
4
5function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
6
7var slicedToArray = require('./slicedToArray-ef426d0f.js');
8require('./unsupportedIterableToArray-8a00e599.js');
9var React = require('react');
10var React__default = _interopDefault(React);
11require('./_commonjsHelpers-72d386ba.js');
12var index = require('./index-b0606964.js');
13require('./defineProperty-0921a47c.js');
14require('./toConsumableArray-7f36359f.js');
15var _styled = require('styled-components');
16var _styled__default = _interopDefault(_styled);
17require('./getPrototypeOf-e2d1e599.js');
18require('./color.js');
19require('./components.js');
20require('./contains-component.js');
21require('./css.js');
22var dayjs_min = require('./dayjs.min-aa59a48e.js');
23var date = require('./date.js');
24require('./miscellaneous.js');
25require('./environment.js');
26require('./font.js');
27require('./math-ecfd5d91.js');
28require('./characters.js');
29require('./format.js');
30require('./keycodes.js');
31require('./url.js');
32require('./web3.js');
33var constants = require('./constants.js');
34require('./breakpoints.js');
35require('./springs.js');
36require('./text-styles.js');
37require('./theme-dark.js');
38require('./theme-light.js');
39require('./Theme.js');
40require('./extends-40571110.js');
41var objectWithoutProperties = require('./objectWithoutProperties-35db8ab0.js');
42require('./index-ecc57c9f.js');
43require('./FocusVisible.js');
44require('./ButtonBase.js');
45require('./IconPropTypes-086fd371.js');
46require('./IconAddUser.js');
47require('./IconAlert.js');
48require('./IconAlignCenter.js');
49require('./IconAlignJustify.js');
50require('./IconAlignLeft.js');
51require('./IconAlignRight.js');
52require('./IconAragon.js');
53require('./IconArrowDown.js');
54require('./IconArrowLeft.js');
55require('./IconArrowRight.js');
56require('./IconArrowUp.js');
57require('./IconAtSign.js');
58require('./IconBlock.js');
59require('./IconBookmark.js');
60require('./IconCalendar.js');
61require('./IconCanvas.js');
62require('./IconCaution.js');
63require('./IconCenter.js');
64require('./IconChart.js');
65require('./IconChat.js');
66require('./IconCheck.js');
67require('./IconChip.js');
68require('./IconCircleCheck.js');
69require('./IconCircleMinus.js');
70require('./IconCirclePlus.js');
71require('./IconClock.js');
72require('./IconCloudDownload.js');
73require('./IconCloudUpload.js');
74require('./IconCoin.js');
75require('./IconConfiguration.js');
76require('./IconConnect.js');
77require('./IconConnection.js');
78require('./IconConsole.js');
79require('./IconCopy.js');
80require('./IconCross.js');
81require('./IconDashedSquare.js');
82require('./IconDown.js');
83require('./IconDownload.js');
84require('./IconEdit.js');
85require('./IconEllipsis.js');
86require('./IconEnter.js');
87require('./IconEthereum.js');
88require('./IconExternal.js');
89require('./IconFile.js');
90require('./IconFilter.js');
91require('./IconFlag.js');
92require('./IconFolder.js');
93require('./IconGraph2.js');
94require('./IconGraph.js');
95require('./IconGrid.js');
96require('./IconGroup.js');
97require('./IconHash.js');
98require('./IconHeart.js');
99require('./IconHide.js');
100require('./IconHome.js');
101require('./IconImage.js');
102require('./IconInfo.js');
103require('./IconLabel.js');
104require('./IconLayers.js');
105require('./IconLeft.js');
106require('./IconLink.js');
107require('./IconLocation.js');
108require('./IconLock.js');
109require('./IconMail.js');
110require('./IconMaximize.js');
111require('./IconMenu.js');
112require('./IconMinimize.js');
113require('./IconMinus.js');
114require('./IconMove.js');
115require('./IconNoPicture.js');
116require('./IconPicture.js');
117require('./IconPlus.js');
118require('./IconPower.js');
119require('./IconPrint.js');
120require('./IconProhibited.js');
121require('./IconQuestion.js');
122require('./IconRefresh.js');
123require('./IconRemoveUser.js');
124require('./IconRight.js');
125require('./IconRotateLeft.js');
126require('./IconRotateRight.js');
127require('./IconSearch.js');
128require('./IconSettings.js');
129require('./IconShare.js');
130require('./IconSquareMinus.js');
131require('./IconSquarePlus.js');
132require('./IconSquare.js');
133require('./IconStarFilled.js');
134require('./IconStar.js');
135require('./IconSwap.js');
136require('./IconTarget.js');
137require('./IconToken.js');
138require('./IconTrash.js');
139require('./IconUnlock.js');
140require('./IconUp.js');
141require('./IconUpload.js');
142require('./IconUser.js');
143require('./IconView.js');
144require('./IconVote.js');
145require('./IconWallet.js');
146require('./IconWarning.js');
147require('./IconWorld.js');
148require('./IconWrite.js');
149require('./IconZoomIn.js');
150require('./IconZoomOut.js');
151var MonthDay = require('./MonthDay-094d337f.js');
152
153var _StyledDiv = _styled__default("div").withConfig({
154 displayName: "DatePicker___StyledDiv",
155 componentId: "sc-6xp23y-0"
156})(["display:grid;"]);
157
158var _StyledDiv2 = _styled__default("div").withConfig({
159 displayName: "DatePicker___StyledDiv2",
160 componentId: "sc-6xp23y-1"
161})(["display:grid;grid-template:auto / repeat(7,1fr);width:", "px;"], function (p) {
162 return p._css;
163});
164
165function DatePicker(_ref) {
166 var initialDate = _ref.initialDate,
167 onSelect = _ref.onSelect,
168 datesRangeStart = _ref.datesRangeStart,
169 datesRangeEnd = _ref.datesRangeEnd,
170 hideYearSelector = _ref.hideYearSelector,
171 yearFormat = _ref.yearFormat,
172 hideMonthSelector = _ref.hideMonthSelector,
173 monthFormat = _ref.monthFormat,
174 monthYearFormat = _ref.monthYearFormat,
175 hideWeekDays = _ref.hideWeekDays,
176 weekDayFormat = _ref.weekDayFormat,
177 props = objectWithoutProperties._objectWithoutProperties(_ref, ["initialDate", "onSelect", "datesRangeStart", "datesRangeEnd", "hideYearSelector", "yearFormat", "hideMonthSelector", "monthFormat", "monthYearFormat", "hideWeekDays", "weekDayFormat"]);
178
179 var _useState = React.useState(initialDate),
180 _useState2 = slicedToArray._slicedToArray(_useState, 2),
181 selectedDate = _useState2[0],
182 setSelectedDate = _useState2[1];
183
184 var setDate = function setDate(_ref2) {
185 var year = _ref2.year,
186 add = _ref2.add;
187 return function (event) {
188 setSelectedDate(dayjs_min.dayjs(selectedDate).startOf('month')[add ? 'add' : 'subtract'](1, year ? 'year' : 'month').toDate());
189 };
190 };
191
192 var today = dayjs_min.dayjs().startOf('day').toDate();
193 var selectedDayjs = dayjs_min.dayjs(selectedDate || today);
194
195 var isSelected = function isSelected(day) {
196 if (datesRangeStart || datesRangeEnd) {
197 return day.isSame(datesRangeStart, 'day') || day.isSame(datesRangeEnd, 'day');
198 }
199
200 return false;
201 };
202
203 var isInRange = function isInRange(day) {
204 if (datesRangeStart && datesRangeEnd) {
205 return day.isAfter(datesRangeStart) && day.isBefore(datesRangeEnd);
206 }
207 };
208
209 return /*#__PURE__*/React__default.createElement(_StyledDiv, props, !hideYearSelector && /*#__PURE__*/React__default.createElement(MonthDay.Selector, {
210 prev: setDate({
211 year: true,
212 add: false
213 }),
214 next: setDate({
215 year: true,
216 add: true
217 }),
218 small: true
219 }, selectedDayjs.format(yearFormat)), !hideMonthSelector && /*#__PURE__*/React__default.createElement(MonthDay.Selector, {
220 prev: setDate({
221 year: false,
222 add: false
223 }),
224 next: setDate({
225 year: false,
226 add: true
227 })
228 }, selectedDayjs.format(!hideYearSelector ? monthFormat : monthYearFormat)), /*#__PURE__*/React__default.createElement(_StyledDiv2, {
229 _css: 31.5 * constants.GU
230 }, !hideWeekDays && date.eachDayOfInterval({
231 start: selectedDayjs.startOf('week'),
232 end: selectedDayjs.endOf('week')
233 }).map(function (day) {
234 var dayJs = dayjs_min.dayjs(day);
235 return /*#__PURE__*/React__default.createElement(MonthDay.MonthDay, {
236 key: dayJs.format('dd'),
237 weekDay: true
238 }, dayJs.format(weekDayFormat));
239 }), date.eachDayOfInterval({
240 start: selectedDayjs.startOf('month').startOf('week'),
241 end: selectedDayjs.endOf('month').endOf('week')
242 }).map(function (day) {
243 var dayJs = dayjs_min.dayjs(day);
244 return /*#__PURE__*/React__default.createElement(MonthDay.MonthDay, {
245 key: dayJs.valueOf(),
246 disabled: !selectedDayjs.isSame(dayJs, 'month'),
247 selected: isSelected(dayJs),
248 inRange: isInRange(dayJs),
249 rangeBoundaryBegin: datesRangeStart && datesRangeEnd && dayJs.isSame(datesRangeStart, 'day'),
250 rangeBoundaryEnd: datesRangeStart && datesRangeEnd && dayJs.isSame(datesRangeEnd, 'day'),
251 today: dayJs.isSame(today, 'day'),
252 onClick: function onClick() {
253 return onSelect(dayJs.toDate());
254 }
255 }, dayJs.format(props.dayFormat));
256 })));
257}
258
259DatePicker.propTypes = {
260 /**
261 * For displaying a selected dates range - start
262 */
263 datesRangeStart: index.PropTypes.instanceOf(Date),
264
265 /**
266 * For displaying a selected dates range - end
267 */
268 datesRangeEnd: index.PropTypes.instanceOf(Date),
269
270 /**
271 * Initial date - calendar will start from here.
272 */
273 initialDate: index.PropTypes.instanceOf(Date),
274 // Events
275 onSelect: index.PropTypes.func,
276 // Visibility
277 hideMonthSelector: index.PropTypes.bool,
278 hideWeekDays: index.PropTypes.bool,
279 hideYearSelector: index.PropTypes.bool,
280 // Formatting
281 dayFormat: index.PropTypes.string,
282 monthFormat: index.PropTypes.string,
283 monthYearFormat: index.PropTypes.string,
284 weekDayFormat: index.PropTypes.string,
285 yearFormat: index.PropTypes.string
286};
287DatePicker.defaultProps = {
288 onSelect: function onSelect() {},
289 dayFormat: 'D',
290 monthFormat: 'MMMM',
291 monthYearFormat: 'MMMM YYYY',
292 weekDayFormat: 'ddd',
293 yearFormat: 'YYYY'
294};
295
296exports.default = DatePicker;
297//# sourceMappingURL=DatePicker.js.map