@spaced-out/ui-design-system 0.1.92 → 0.1.93-beta.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 (38) hide show
  1. package/.cspell/custom-words.txt +41 -0
  2. package/CHANGELOG.md +12 -0
  3. package/lib/components/DateRangePicker/Calendar.js +75 -0
  4. package/lib/components/DateRangePicker/Calendar.js.flow +113 -0
  5. package/lib/components/DateRangePicker/Calendar.module.css +49 -0
  6. package/lib/components/DateRangePicker/DateRangePicker.js +120 -0
  7. package/lib/components/DateRangePicker/DateRangePicker.js.flow +173 -0
  8. package/lib/components/DateRangePicker/DateRangePicker.module.css +8 -0
  9. package/lib/components/DateRangePicker/DateRangeWrapper.js +175 -0
  10. package/lib/components/DateRangePicker/DateRangeWrapper.js.flow +282 -0
  11. package/lib/components/DateRangePicker/DateRangeWrapper.module.css +64 -0
  12. package/lib/components/DateRangePicker/Day.js +65 -0
  13. package/lib/components/DateRangePicker/Day.js.flow +80 -0
  14. package/lib/components/DateRangePicker/Day.module.css +91 -0
  15. package/lib/components/DateRangePicker/index.js +16 -0
  16. package/lib/components/DateRangePicker/index.js.flow +3 -0
  17. package/lib/components/DateRangePicker/timezones.js +262 -0
  18. package/lib/components/DateRangePicker/timezones.js.flow +256 -0
  19. package/lib/components/DateRangePicker/utils.js +218 -0
  20. package/lib/components/DateRangePicker/utils.js.flow +231 -0
  21. package/lib/components/Dropdown/Dropdown.js +7 -1
  22. package/lib/components/Dropdown/Dropdown.js.flow +7 -0
  23. package/lib/components/SpiderChart/SpiderChart.js +1 -20
  24. package/lib/components/SpiderChart/SpiderChart.js.flow +0 -20
  25. package/lib/components/index.js +11 -0
  26. package/lib/components/index.js.flow +1 -0
  27. package/lib/types/charts.js.flow +1 -0
  28. package/lib/utils/charts/charts.js +3 -0
  29. package/lib/utils/charts/charts.js.flow +3 -0
  30. package/lib/utils/charts/columnChart.js +1 -0
  31. package/lib/utils/charts/columnChart.js.flow +1 -0
  32. package/lib/utils/charts/lineChart.js +1 -0
  33. package/lib/utils/charts/lineChart.js.flow +1 -0
  34. package/lib/utils/charts/spiderChart.js +3 -1
  35. package/lib/utils/charts/spiderChart.js.flow +4 -17
  36. package/lib/utils/charts/typography.js +2 -3
  37. package/lib/utils/charts/typography.js.flow +1 -3
  38. package/package.json +2 -1
@@ -0,0 +1,175 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.DateRangeWrapper = void 0;
7
+ var React = _interopRequireWildcard(require("react"));
8
+ var _momentTimezone = _interopRequireDefault(require("moment-timezone"));
9
+ var _classify = _interopRequireDefault(require("../../utils/classify"));
10
+ var _Button = require("../Button");
11
+ var _Card = require("../Card");
12
+ var _Dropdown = require("../Dropdown");
13
+ var _FocusManager = require("../FocusManager");
14
+ var _Icon = require("../Icon");
15
+ var _Calendar = require("./Calendar.js");
16
+ var _utils = require("./utils");
17
+ var _DateRangeWrapperModule = _interopRequireDefault(require("./DateRangeWrapper.module.css"));
18
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
20
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
21
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
22
+ const CalendarHeader = _ref => {
23
+ let {
24
+ date,
25
+ marker,
26
+ setDate,
27
+ rangeStartMonth,
28
+ rangeEndMonth,
29
+ onClickNext,
30
+ nextDisabled,
31
+ prevDisabled,
32
+ onClickPrevious
33
+ } = _ref;
34
+ return /*#__PURE__*/React.createElement("div", {
35
+ className: _DateRangeWrapperModule.default.calendarHeader
36
+ }, /*#__PURE__*/React.createElement(_Icon.ClickableIcon, {
37
+ size: "small",
38
+ name: "chevron-left",
39
+ className: (0, _classify.default)(_DateRangeWrapperModule.default.headerIcon, {
40
+ [_DateRangeWrapperModule.default.disabledIcon]: prevDisabled
41
+ }),
42
+ onClick: onClickPrevious,
43
+ color: prevDisabled ? 'disabled' : 'secondary'
44
+ }), /*#__PURE__*/React.createElement(_Dropdown.Dropdown, {
45
+ size: "small",
46
+ menu: {
47
+ options: (0, _utils.getAvailableMonths)(_utils.MONTHS, rangeStartMonth, rangeEndMonth, marker),
48
+ selectedKeys: [(0, _momentTimezone.default)(date).month().toString()]
49
+ },
50
+ onChange: event => {
51
+ setDate((0, _utils.formatIsoDate)((0, _momentTimezone.default)(date).set('M', event.key)));
52
+ },
53
+ dropdownInputText: _utils.MONTHS[(0, _momentTimezone.default)(date).month()].label,
54
+ openMenuAtBottom: true
55
+ }), /*#__PURE__*/React.createElement(_Dropdown.Dropdown, {
56
+ menu: {
57
+ selectedKeys: [(0, _momentTimezone.default)(date).year().toString()],
58
+ options: (0, _utils.generateAvailableYears)(45, rangeStartMonth, rangeEndMonth, marker)
59
+ },
60
+ size: "small",
61
+ onChange: event => {
62
+ setDate((0, _utils.formatIsoDate)((0, _momentTimezone.default)(date).set('y', event.key)));
63
+ },
64
+ dropdownInputText: (0, _momentTimezone.default)(date).year(),
65
+ openMenuAtBottom: true
66
+ }), /*#__PURE__*/React.createElement(_Icon.ClickableIcon, {
67
+ size: "small",
68
+ name: "chevron-right",
69
+ className: (0, _classify.default)(_DateRangeWrapperModule.default.headerIcon, {
70
+ [_DateRangeWrapperModule.default.disabledIcon]: nextDisabled
71
+ }),
72
+ onClick: onClickNext,
73
+ color: nextDisabled ? 'disabled' : 'secondary'
74
+ }));
75
+ };
76
+ const DateRangeWrapper = /*#__PURE__*/React.forwardRef((_ref2, ref) => {
77
+ let {
78
+ onApply,
79
+ onCancel,
80
+ handlers,
81
+ hoverDay,
82
+ timeZone,
83
+ dateRange,
84
+ rangeStartMonth,
85
+ setTimeZone,
86
+ rangeEndMonth,
87
+ inHoverRange,
88
+ setRangeStartMonth,
89
+ setRangeEndMonth,
90
+ cardWrapperClass
91
+ } = _ref2;
92
+ const canNavigateCloser = (0, _momentTimezone.default)(rangeStartMonth).year() !== (0, _momentTimezone.default)(rangeEndMonth).year() || Math.abs((0, _momentTimezone.default)(rangeStartMonth).month() - (0, _momentTimezone.default)(rangeEndMonth).month()) > 1;
93
+ const handleApplyClick = () => {
94
+ const {
95
+ startDate,
96
+ endDate
97
+ } = dateRange;
98
+ const startDateUTC = startDate && (0, _utils.addTimeZone)(startDate, timeZone);
99
+ const endDateUTC = endDate && (0, _utils.addTimeZone)(endDate, timeZone);
100
+ onApply({
101
+ startDate,
102
+ endDate,
103
+ startDateUTC,
104
+ endDateUTC,
105
+ timeZone
106
+ });
107
+ };
108
+ const {
109
+ onMonthNavigate
110
+ } = handlers;
111
+ const commonProps = {
112
+ inHoverRange,
113
+ handlers,
114
+ hoverDay,
115
+ dateRange
116
+ };
117
+ return /*#__PURE__*/React.createElement(_FocusManager.FocusManager, null, /*#__PURE__*/React.createElement(_Card.Card, {
118
+ classNames: {
119
+ wrapper: (0, _classify.default)(_DateRangeWrapperModule.default.dateRangeWrapper, cardWrapperClass)
120
+ },
121
+ ref: ref
122
+ }, /*#__PURE__*/React.createElement(_Card.CardHeader, {
123
+ className: _DateRangeWrapperModule.default.cardHeader
124
+ }, /*#__PURE__*/React.createElement(CalendarHeader, {
125
+ marker: _utils.MARKERS.DATE_RANGE_START,
126
+ rangeStartMonth: rangeStartMonth,
127
+ rangeEndMonth: rangeEndMonth,
128
+ date: rangeStartMonth,
129
+ setDate: setRangeStartMonth,
130
+ nextDisabled: !canNavigateCloser,
131
+ prevDisabled: false,
132
+ onClickNext: () => onMonthNavigate(_utils.MARKERS.DATE_RANGE_START, _utils.NAVIGATION_ACTION.NEXT),
133
+ onClickPrevious: () => onMonthNavigate(_utils.MARKERS.DATE_RANGE_START, _utils.NAVIGATION_ACTION.PREV)
134
+ }), /*#__PURE__*/React.createElement(CalendarHeader, {
135
+ marker: _utils.MARKERS.DATE_RANGE_END,
136
+ rangeStartMonth: rangeStartMonth,
137
+ rangeEndMonth: rangeEndMonth,
138
+ date: rangeEndMonth,
139
+ setDate: setRangeEndMonth,
140
+ nextDisabled: (0, _momentTimezone.default)((0, _utils.getAddedDate)(rangeEndMonth, 1, 'M')).isAfter((0, _momentTimezone.default)()),
141
+ prevDisabled: !canNavigateCloser,
142
+ onClickNext: () => onMonthNavigate(_utils.MARKERS.DATE_RANGE_END, _utils.NAVIGATION_ACTION.NEXT),
143
+ onClickPrevious: () => onMonthNavigate(_utils.MARKERS.DATE_RANGE_END, _utils.NAVIGATION_ACTION.PREV)
144
+ })), /*#__PURE__*/React.createElement(_Card.CardContent, {
145
+ className: _DateRangeWrapperModule.default.dateRangeCalendars
146
+ }, /*#__PURE__*/React.createElement(_Calendar.Calendar, _extends({
147
+ marker: _utils.MARKERS.DATE_RANGE_START,
148
+ value: rangeStartMonth
149
+ }, commonProps)), /*#__PURE__*/React.createElement("div", {
150
+ className: _DateRangeWrapperModule.default.divider
151
+ }), /*#__PURE__*/React.createElement(_Calendar.Calendar, _extends({
152
+ marker: _utils.MARKERS.DATE_RANGE_END,
153
+ value: rangeEndMonth
154
+ }, commonProps))), /*#__PURE__*/React.createElement(_Card.CardFooter, null, /*#__PURE__*/React.createElement(_Card.CardTitle, {
155
+ className: _DateRangeWrapperModule.default.timezoneDropdownContainer
156
+ }, /*#__PURE__*/React.createElement(_Dropdown.SimpleDropdown, {
157
+ options: (0, _utils.getTimeZones)(),
158
+ classNames: {
159
+ box: _DateRangeWrapperModule.default.timezoneDropdown
160
+ },
161
+ selectedKeys: [timeZone],
162
+ onChange: event => setTimeZone(event.key),
163
+ size: "small",
164
+ allowSearch: true
165
+ })), /*#__PURE__*/React.createElement(_Card.CardActions, null, /*#__PURE__*/React.createElement(_Button.Button, {
166
+ type: "ghost",
167
+ onClick: onCancel,
168
+ size: "small"
169
+ }, "Cancel"), /*#__PURE__*/React.createElement(_Button.Button, {
170
+ onClick: handleApplyClick,
171
+ size: "small",
172
+ disabled: !(dateRange.startDate && dateRange.endDate)
173
+ }, "Apply")))));
174
+ });
175
+ exports.DateRangeWrapper = DateRangeWrapper;
@@ -0,0 +1,282 @@
1
+ // @flow strict
2
+
3
+ import * as React from 'react';
4
+ // $FlowFixMe[untyped-import]
5
+ import moment from 'moment-timezone';
6
+
7
+ import classify from '../../utils/classify';
8
+ import {Button} from '../Button';
9
+ import {
10
+ Card,
11
+ CardActions,
12
+ CardContent,
13
+ CardFooter,
14
+ CardHeader,
15
+ CardTitle,
16
+ } from '../Card';
17
+ import {Dropdown, SimpleDropdown} from '../Dropdown';
18
+ import {FocusManager} from '../FocusManager';
19
+ import {ClickableIcon} from '../Icon';
20
+
21
+ import {Calendar} from './Calendar.js';
22
+ import {
23
+ type DatePickerSelectedRange,
24
+ type DateRange,
25
+ addTimeZone,
26
+ formatIsoDate,
27
+ generateAvailableYears,
28
+ getAddedDate,
29
+ getAvailableMonths,
30
+ getTimeZones,
31
+ MARKERS,
32
+ MONTHS,
33
+ NAVIGATION_ACTION,
34
+ } from './utils';
35
+
36
+ import css from './DateRangeWrapper.module.css';
37
+
38
+
39
+ type HeaderProps = {
40
+ date: string,
41
+ rangeStartMonth: string,
42
+ rangeEndMonth: string,
43
+ nextDisabled: boolean,
44
+ prevDisabled: boolean,
45
+ onClickNext: () => void,
46
+ onClickPrevious: () => void,
47
+ marker: $Values<typeof MARKERS>,
48
+ setDate: (date: string) => void,
49
+ };
50
+
51
+ type DateRangeWrapperProps = {
52
+ dateRange: DateRange,
53
+ hoverDay: string,
54
+ rangeStartMonth: string,
55
+ rangeEndMonth: string,
56
+ cardWrapperClass: ?string,
57
+ setRangeStartMonth: (string) => void,
58
+ setRangeEndMonth: (string) => void,
59
+ setTimeZone: (string) => void,
60
+ timeZone: string,
61
+ onApply: (datePickerSelectedRange: DatePickerSelectedRange) => void,
62
+ onCancel: () => void,
63
+ inHoverRange: (day: string) => boolean,
64
+ handlers: {
65
+ onDayClick: (day: string) => void,
66
+ onDayHover: (day: string) => void,
67
+ onMonthNavigate: (
68
+ marker: $Values<typeof MARKERS>,
69
+ action: $Values<typeof NAVIGATION_ACTION>,
70
+ ) => void,
71
+ },
72
+ };
73
+
74
+ const CalendarHeader = ({
75
+ date,
76
+ marker,
77
+ setDate,
78
+ rangeStartMonth,
79
+ rangeEndMonth,
80
+ onClickNext,
81
+ nextDisabled,
82
+ prevDisabled,
83
+ onClickPrevious,
84
+ }: HeaderProps): React.Node => (
85
+ <div className={css.calendarHeader}>
86
+ <ClickableIcon
87
+ size="small"
88
+ name="chevron-left"
89
+ className={classify(css.headerIcon, {
90
+ [css.disabledIcon]: prevDisabled,
91
+ })}
92
+ onClick={onClickPrevious}
93
+ color={prevDisabled ? 'disabled' : 'secondary'}
94
+ />
95
+ <Dropdown
96
+ size="small"
97
+ menu={{
98
+ options: getAvailableMonths(
99
+ MONTHS,
100
+ rangeStartMonth,
101
+ rangeEndMonth,
102
+ marker,
103
+ ),
104
+ selectedKeys: [moment(date).month().toString()],
105
+ }}
106
+ onChange={(event) => {
107
+ setDate(formatIsoDate(moment(date).set('M', event.key)));
108
+ }}
109
+ dropdownInputText={MONTHS[moment(date).month()].label}
110
+ openMenuAtBottom
111
+ />
112
+ <Dropdown
113
+ menu={{
114
+ selectedKeys: [moment(date).year().toString()],
115
+ options: generateAvailableYears(
116
+ 45,
117
+ rangeStartMonth,
118
+ rangeEndMonth,
119
+ marker,
120
+ ),
121
+ }}
122
+ size="small"
123
+ onChange={(event) => {
124
+ setDate(formatIsoDate(moment(date).set('y', event.key)));
125
+ }}
126
+ dropdownInputText={moment(date).year()}
127
+ openMenuAtBottom
128
+ />
129
+ <ClickableIcon
130
+ size="small"
131
+ name="chevron-right"
132
+ className={classify(css.headerIcon, {
133
+ [css.disabledIcon]: nextDisabled,
134
+ })}
135
+ onClick={onClickNext}
136
+ color={nextDisabled ? 'disabled' : 'secondary'}
137
+ />
138
+ </div>
139
+ );
140
+
141
+ export const DateRangeWrapper: React$AbstractComponent<
142
+ DateRangeWrapperProps,
143
+ HTMLDivElement,
144
+ > = React.forwardRef<DateRangeWrapperProps, HTMLDivElement>(
145
+ (
146
+ {
147
+ onApply,
148
+ onCancel,
149
+ handlers,
150
+ hoverDay,
151
+ timeZone,
152
+ dateRange,
153
+ rangeStartMonth,
154
+ setTimeZone,
155
+ rangeEndMonth,
156
+ inHoverRange,
157
+ setRangeStartMonth,
158
+ setRangeEndMonth,
159
+ cardWrapperClass,
160
+ }: DateRangeWrapperProps,
161
+ ref,
162
+ ): React.Node => {
163
+ const canNavigateCloser =
164
+ moment(rangeStartMonth).year() !== moment(rangeEndMonth).year() ||
165
+ Math.abs(
166
+ moment(rangeStartMonth).month() - moment(rangeEndMonth).month(),
167
+ ) > 1;
168
+
169
+ const handleApplyClick = () => {
170
+ const {startDate, endDate} = dateRange;
171
+ const startDateUTC = startDate && addTimeZone(startDate, timeZone);
172
+ const endDateUTC = endDate && addTimeZone(endDate, timeZone);
173
+ onApply({
174
+ startDate,
175
+ endDate,
176
+ startDateUTC,
177
+ endDateUTC,
178
+ timeZone,
179
+ });
180
+ };
181
+
182
+ const {onMonthNavigate} = handlers;
183
+
184
+ const commonProps = {
185
+ inHoverRange,
186
+ handlers,
187
+ hoverDay,
188
+ dateRange,
189
+ };
190
+
191
+ return (
192
+ <FocusManager>
193
+ <Card
194
+ classNames={{
195
+ wrapper: classify(css.dateRangeWrapper, cardWrapperClass),
196
+ }}
197
+ ref={ref}
198
+ >
199
+ <CardHeader className={css.cardHeader}>
200
+ <CalendarHeader
201
+ marker={MARKERS.DATE_RANGE_START}
202
+ rangeStartMonth={rangeStartMonth}
203
+ rangeEndMonth={rangeEndMonth}
204
+ date={rangeStartMonth}
205
+ setDate={setRangeStartMonth}
206
+ nextDisabled={!canNavigateCloser}
207
+ prevDisabled={false}
208
+ onClickNext={() =>
209
+ onMonthNavigate(
210
+ MARKERS.DATE_RANGE_START,
211
+ NAVIGATION_ACTION.NEXT,
212
+ )
213
+ }
214
+ onClickPrevious={() =>
215
+ onMonthNavigate(
216
+ MARKERS.DATE_RANGE_START,
217
+ NAVIGATION_ACTION.PREV,
218
+ )
219
+ }
220
+ />
221
+ <CalendarHeader
222
+ marker={MARKERS.DATE_RANGE_END}
223
+ rangeStartMonth={rangeStartMonth}
224
+ rangeEndMonth={rangeEndMonth}
225
+ date={rangeEndMonth}
226
+ setDate={setRangeEndMonth}
227
+ nextDisabled={moment(getAddedDate(rangeEndMonth, 1, 'M')).isAfter(
228
+ moment(),
229
+ )}
230
+ prevDisabled={!canNavigateCloser}
231
+ onClickNext={() =>
232
+ onMonthNavigate(MARKERS.DATE_RANGE_END, NAVIGATION_ACTION.NEXT)
233
+ }
234
+ onClickPrevious={() =>
235
+ onMonthNavigate(MARKERS.DATE_RANGE_END, NAVIGATION_ACTION.PREV)
236
+ }
237
+ />
238
+ </CardHeader>
239
+ <CardContent className={css.dateRangeCalendars}>
240
+ <Calendar
241
+ marker={MARKERS.DATE_RANGE_START}
242
+ value={rangeStartMonth}
243
+ {...commonProps}
244
+ />
245
+ <div className={css.divider} />
246
+ <Calendar
247
+ marker={MARKERS.DATE_RANGE_END}
248
+ value={rangeEndMonth}
249
+ {...commonProps}
250
+ />
251
+ </CardContent>
252
+ <CardFooter>
253
+ <CardTitle className={css.timezoneDropdownContainer}>
254
+ <SimpleDropdown
255
+ options={getTimeZones()}
256
+ classNames={{
257
+ box: css.timezoneDropdown,
258
+ }}
259
+ selectedKeys={[timeZone]}
260
+ onChange={(event) => setTimeZone(event.key)}
261
+ size="small"
262
+ allowSearch
263
+ />
264
+ </CardTitle>
265
+ <CardActions>
266
+ <Button type="ghost" onClick={onCancel} size="small">
267
+ Cancel
268
+ </Button>
269
+ <Button
270
+ onClick={handleApplyClick}
271
+ size="small"
272
+ disabled={!(dateRange.startDate && dateRange.endDate)}
273
+ >
274
+ Apply
275
+ </Button>
276
+ </CardActions>
277
+ </CardFooter>
278
+ </Card>
279
+ </FocusManager>
280
+ );
281
+ },
282
+ );
@@ -0,0 +1,64 @@
1
+ @value (
2
+ size180,
3
+ size580,
4
+ sizeFluid
5
+ ) from '../../styles/variables/_size.css';
6
+ @value (
7
+ spaceNone,
8
+ spaceSmall,
9
+ spaceXSmall
10
+ ) from '../../styles/variables/_space.css';
11
+
12
+ .dateRangeWrapper {
13
+ display: flex;
14
+ width: size580;
15
+ }
16
+
17
+ .cardHeader {
18
+ width: sizeFluid;
19
+ padding: spaceXSmall;
20
+ gap: spaceSmall;
21
+ }
22
+
23
+ .calendarHeader {
24
+ display: flex;
25
+ align-items: center;
26
+ gap: spaceXSmall;
27
+ }
28
+
29
+ .divider {
30
+ height: sizeFluid;
31
+ width: spaceNone;
32
+ composes: borderRightPrimary from '../../styles/border.module.css';
33
+ }
34
+
35
+ .dateRangeCalendars {
36
+ display: flex;
37
+ padding: spaceNone;
38
+ width: sizeFluid;
39
+ }
40
+
41
+ .headerIcon {
42
+ margin: spaceXSmall;
43
+ }
44
+
45
+ .disabledIcon {
46
+ pointer-events: none;
47
+ outline: none;
48
+ }
49
+
50
+ .timezoneDropdownContainer {
51
+ width: sizeFluid;
52
+ }
53
+
54
+ .timezoneDropdown {
55
+ width: size180;
56
+ }
57
+
58
+ .timezoneDropdown input {
59
+ text-overflow: ellipsis;
60
+ }
61
+
62
+ .mainContainer {
63
+ width: sizeFluid;
64
+ }
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.Day = void 0;
7
+ var React = _interopRequireWildcard(require("react"));
8
+ var _momentTimezone = _interopRequireDefault(require("moment-timezone"));
9
+ var _classify = _interopRequireDefault(require("../../utils/classify"));
10
+ var _Button = require("../Button");
11
+ var _Text = require("../Text");
12
+ var _DayModule = _interopRequireDefault(require("./Day.module.css"));
13
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
15
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
16
+
17
+ // $FlowFixMe[untyped-import]
18
+
19
+ const getTextColor = (disabled, filled) => {
20
+ if (disabled) {
21
+ return _Text.TEXT_COLORS.disabled;
22
+ } else if (filled) {
23
+ return _Text.TEXT_COLORS.inversePrimary;
24
+ } else {
25
+ return _Text.TEXT_COLORS.secondary;
26
+ }
27
+ };
28
+ const Day = _ref => {
29
+ let {
30
+ date,
31
+ value,
32
+ filled,
33
+ onHover,
34
+ onClick,
35
+ disabled,
36
+ hoverDay,
37
+ outlined,
38
+ endOfRange,
39
+ highlighted,
40
+ startOfRange
41
+ } = _ref;
42
+ return /*#__PURE__*/React.createElement(_Button.UnstyledButton, {
43
+ tabIndex: disabled ? -1 : 0,
44
+ className: (0, _classify.default)(_DayModule.default.calendarItemButton, {
45
+ [_DayModule.default.calendarRowItemDisabled]: disabled,
46
+ [_DayModule.default.calendarRowItemBorderLeft]: !disabled && filled && endOfRange,
47
+ [_DayModule.default.calendarRowItemBorderRight]: !disabled && !(0, _momentTimezone.default)(date).isSame((0, _momentTimezone.default)(hoverDay)) && (filled || highlighted) && startOfRange,
48
+ [_DayModule.default.calendarRowItemHighlighted]: !disabled && !filled && highlighted
49
+ }),
50
+ onMouseOver: onHover,
51
+ onClick: onClick,
52
+ onKeyUp: onHover
53
+ }, /*#__PURE__*/React.createElement(_Text.BodyMedium, {
54
+ type: "ghost",
55
+ color: getTextColor(disabled, filled),
56
+ className: (0, _classify.default)(_DayModule.default.calendarRowItem, {
57
+ [_DayModule.default.calendarRowItemHover]: !disabled && !filled,
58
+ [_DayModule.default.calendarRowItemFilled]: !disabled && filled,
59
+ [_DayModule.default.calendarRowItemOutlined]: !disabled && outlined
60
+ }),
61
+ onMouseOver: onHover,
62
+ onClick: onClick
63
+ }, value));
64
+ };
65
+ exports.Day = Day;
@@ -0,0 +1,80 @@
1
+ // @flow strict
2
+ import * as React from 'react';
3
+ // $FlowFixMe[untyped-import]
4
+ import moment from 'moment-timezone';
5
+
6
+ import classify from '../../utils/classify';
7
+ import {UnstyledButton} from '../Button';
8
+ import {BodyMedium, TEXT_COLORS} from '../Text';
9
+
10
+ import css from './Day.module.css';
11
+
12
+
13
+ type DayProps = {
14
+ date: string,
15
+ value: string,
16
+ filled: boolean,
17
+ hoverDay: string,
18
+ outlined: boolean,
19
+ disabled: boolean,
20
+ endOfRange: boolean,
21
+ highlighted: boolean,
22
+ startOfRange: boolean,
23
+ onClick: () => void,
24
+ onHover: () => void,
25
+ };
26
+
27
+ const getTextColor = (disabled: boolean, filled: boolean) => {
28
+ if (disabled) {
29
+ return TEXT_COLORS.disabled;
30
+ } else if (filled) {
31
+ return TEXT_COLORS.inversePrimary;
32
+ } else {
33
+ return TEXT_COLORS.secondary;
34
+ }
35
+ };
36
+
37
+ export const Day = ({
38
+ date,
39
+ value,
40
+ filled,
41
+ onHover,
42
+ onClick,
43
+ disabled,
44
+ hoverDay,
45
+ outlined,
46
+ endOfRange,
47
+ highlighted,
48
+ startOfRange,
49
+ }: DayProps): React.Node => (
50
+ <UnstyledButton
51
+ tabIndex={disabled ? -1 : 0}
52
+ className={classify(css.calendarItemButton, {
53
+ [css.calendarRowItemDisabled]: disabled,
54
+ [css.calendarRowItemBorderLeft]: !disabled && filled && endOfRange,
55
+ [css.calendarRowItemBorderRight]:
56
+ !disabled &&
57
+ !moment(date).isSame(moment(hoverDay)) &&
58
+ (filled || highlighted) &&
59
+ startOfRange,
60
+ [css.calendarRowItemHighlighted]: !disabled && !filled && highlighted,
61
+ })}
62
+ onMouseOver={onHover}
63
+ onClick={onClick}
64
+ onKeyUp={onHover}
65
+ >
66
+ <BodyMedium
67
+ type="ghost"
68
+ color={getTextColor(disabled, filled)}
69
+ className={classify(css.calendarRowItem, {
70
+ [css.calendarRowItemHover]: !disabled && !filled,
71
+ [css.calendarRowItemFilled]: !disabled && filled,
72
+ [css.calendarRowItemOutlined]: !disabled && outlined,
73
+ })}
74
+ onMouseOver={onHover}
75
+ onClick={onClick}
76
+ >
77
+ {value}
78
+ </BodyMedium>
79
+ </UnstyledButton>
80
+ );