@gympass/yoga 7.49.0 → 7.50.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.
- package/cjs/Datepicker/Datepicker.theme.js +18 -0
- package/cjs/Datepicker/index.js +11 -0
- package/cjs/Datepicker/web/Calendar.js +355 -0
- package/cjs/Datepicker/web/Datepicker.js +272 -0
- package/cjs/Datepicker/web/Datepicker.test.js +229 -0
- package/cjs/Datepicker/web/index.js +11 -0
- package/cjs/Theme/theme/theme.js +3 -0
- package/cjs/index.js +4 -0
- package/esm/Datepicker/Datepicker.theme.js +12 -0
- package/esm/Datepicker/index.js +2 -0
- package/esm/Datepicker/web/Calendar.js +334 -0
- package/esm/Datepicker/web/Datepicker.js +246 -0
- package/esm/Datepicker/web/Datepicker.test.js +200 -0
- package/esm/Datepicker/web/index.js +2 -0
- package/esm/Theme/theme/theme.js +2 -0
- package/esm/index.js +2 -1
- package/package.json +2 -2
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
var _excluded = ["_disabled", "inputFilled"];
|
|
2
|
+
|
|
3
|
+
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9;
|
|
4
|
+
|
|
5
|
+
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); }
|
|
6
|
+
|
|
7
|
+
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
8
|
+
|
|
9
|
+
function _taggedTemplateLiteralLoose(strings, raw) { if (!raw) { raw = strings.slice(0); } strings.raw = raw; return strings; }
|
|
10
|
+
|
|
11
|
+
/* eslint-disable react/jsx-props-no-spreading */
|
|
12
|
+
import React, { useEffect, useRef, useState, useCallback } from 'react';
|
|
13
|
+
import { Booking, BookingFilled } from '@gympass/yoga-icons';
|
|
14
|
+
import { Text } from '@gympass/yoga';
|
|
15
|
+
import styled, { css } from 'styled-components';
|
|
16
|
+
import { bool, oneOf, func, instanceOf, string } from 'prop-types';
|
|
17
|
+
import moment from 'moment';
|
|
18
|
+
import { theme } from '../../Theme';
|
|
19
|
+
import Calendar from './Calendar';
|
|
20
|
+
var Wrapper = styled.div(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["\n position: relative;\n display: inline-block;\n vertical-align: top;\n width: ", ";\n"])), function (props) {
|
|
21
|
+
return props.fullWidth ? '100%' : css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteralLoose(["\n ", "px\n "])), theme.components.input.width);
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
var getSelectorBorderColor = function getSelectorBorderColor(open, error, disabled, colors, input) {
|
|
25
|
+
if (error) {
|
|
26
|
+
return colors.feedback.attention[1];
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
if (disabled) {
|
|
30
|
+
return colors.elements.backgroundAndDisabled;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
if (open) {
|
|
34
|
+
return colors.deep;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
return input.border.color["default"];
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
var Selector = styled.div(_templateObject3 || (_templateObject3 = _taggedTemplateLiteralLoose(["\n ", "\n"])), function (_ref) {
|
|
41
|
+
var open = _ref.open,
|
|
42
|
+
error = _ref.error,
|
|
43
|
+
disabled = _ref.disabled,
|
|
44
|
+
_ref$theme$yoga = _ref.theme.yoga,
|
|
45
|
+
components = _ref$theme$yoga.components,
|
|
46
|
+
colors = _ref$theme$yoga.colors,
|
|
47
|
+
spacing = _ref$theme$yoga.spacing;
|
|
48
|
+
return "\n position: relative;\n display: flex;\n justify-content: flex-start;\n align-items: center;\n box-sizing: border-box;\n height: " + components.input.height + "px;\n width: 100%;\n padding: " + spacing.small + "px;\n background-color: " + colors.white + ";\n border-radius: " + components.input.border.radius + "px;\n border-width: " + components.input.border.width + "px;\n border-style: solid;\n border-color: " + getSelectorBorderColor(open, error, disabled, colors, components.input) + "\n color: " + components.input.font.color.focus + ";\n ";
|
|
49
|
+
});
|
|
50
|
+
var Input = styled(Text.Small)(_templateObject4 || (_templateObject4 = _taggedTemplateLiteralLoose(["\n ", "\n"])), function (_ref2) {
|
|
51
|
+
var disabled = _ref2.disabled,
|
|
52
|
+
colors = _ref2.theme.yoga.colors;
|
|
53
|
+
return "\n width: 100%;\n padding: 0;\n border: none;\n cursor: pointer;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: " + (!disabled ? colors.text.primary : colors.text.disabled) + "\n ";
|
|
54
|
+
});
|
|
55
|
+
var InputPlaceholder = styled(Text.Small)(_templateObject5 || (_templateObject5 = _taggedTemplateLiteralLoose(["\n ", "\n"])), function (_ref3) {
|
|
56
|
+
var disabled = _ref3.disabled,
|
|
57
|
+
colors = _ref3.theme.yoga.colors;
|
|
58
|
+
return "\n color: " + (!disabled ? colors.text.secondary : colors.text.disabled) + "\n ";
|
|
59
|
+
});
|
|
60
|
+
var TButton = styled.button(_templateObject6 || (_templateObject6 = _taggedTemplateLiteralLoose(["\n display: flex;\n align-content: center;\n align-items: center;\n justify-content: flex-end;\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n border: none;\n outline: none;\n background-color: transparent;\n cursor: pointer;\n"])));
|
|
61
|
+
var Panel = styled.div(_templateObject7 || (_templateObject7 = _taggedTemplateLiteralLoose(["\n ", "\n"])), function (_ref4) {
|
|
62
|
+
var _ref4$theme$yoga = _ref4.theme.yoga,
|
|
63
|
+
components = _ref4$theme$yoga.components,
|
|
64
|
+
colors = _ref4$theme$yoga.colors,
|
|
65
|
+
radii = _ref4$theme$yoga.radii,
|
|
66
|
+
borders = _ref4$theme$yoga.borders,
|
|
67
|
+
spacing = _ref4$theme$yoga.spacing;
|
|
68
|
+
return "\n position: absolute;\n background-color: " + colors.white + ";\n border: " + borders.small + "px solid " + colors.elements.lineAndBorders + ";\n z-index: 1;\n width: " + components.input.width + "px;\n left: 0;\n border-radius: " + radii.regular + "px;\n margin-top: " + spacing.xxsmall + "px;\n ";
|
|
69
|
+
});
|
|
70
|
+
var CalendarIcon = styled(function (_ref5) {
|
|
71
|
+
var _disabled = _ref5._disabled,
|
|
72
|
+
inputFilled = _ref5.inputFilled,
|
|
73
|
+
props = _objectWithoutPropertiesLoose(_ref5, _excluded);
|
|
74
|
+
|
|
75
|
+
return !inputFilled ? /*#__PURE__*/React.createElement(Booking, _extends({
|
|
76
|
+
width: 20,
|
|
77
|
+
height: 20
|
|
78
|
+
}, props)) : /*#__PURE__*/React.createElement(BookingFilled, _extends({
|
|
79
|
+
width: 20,
|
|
80
|
+
height: 20
|
|
81
|
+
}, props));
|
|
82
|
+
})(_templateObject8 || (_templateObject8 = _taggedTemplateLiteralLoose(["\n ", "\n"])), function (_ref6) {
|
|
83
|
+
var disabled = _ref6.disabled,
|
|
84
|
+
_ref6$theme$yoga = _ref6.theme.yoga,
|
|
85
|
+
colors = _ref6$theme$yoga.colors,
|
|
86
|
+
spacing = _ref6$theme$yoga.spacing;
|
|
87
|
+
return "\n fill: " + (disabled ? colors.text.disabled : colors.text.primary) + ";\n margin-right: " + spacing.xxsmall + "px;\n ";
|
|
88
|
+
});
|
|
89
|
+
var ErrorWrapper = styled(Text.Small)(_templateObject9 || (_templateObject9 = _taggedTemplateLiteralLoose(["\n ", "\n"])), function (_ref7) {
|
|
90
|
+
var _ref7$theme$yoga = _ref7.theme.yoga,
|
|
91
|
+
colors = _ref7$theme$yoga.colors,
|
|
92
|
+
components = _ref7$theme$yoga.components;
|
|
93
|
+
return "\n margin-top: " + components.input.helper.margin.top + "px;\n font-size: " + components.input.helper.font.size + "px;\n color: " + colors.feedback.attention[1] + ";\n position: absolute;\n ";
|
|
94
|
+
});
|
|
95
|
+
export var toUTC = function toUTC(date) {
|
|
96
|
+
return new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds());
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
function Datepicker(_ref8) {
|
|
100
|
+
var fullWidth = _ref8.fullWidth,
|
|
101
|
+
type = _ref8.type,
|
|
102
|
+
placeholder = _ref8.placeholder,
|
|
103
|
+
startDate = _ref8.startDate,
|
|
104
|
+
endDate = _ref8.endDate,
|
|
105
|
+
onSelectSingle = _ref8.onSelectSingle,
|
|
106
|
+
disabled = _ref8.disabled,
|
|
107
|
+
onSelectRange = _ref8.onSelectRange,
|
|
108
|
+
disablePastDates = _ref8.disablePastDates,
|
|
109
|
+
disableFutureDates = _ref8.disableFutureDates,
|
|
110
|
+
error = _ref8.error,
|
|
111
|
+
onOpen = _ref8.onOpen;
|
|
112
|
+
|
|
113
|
+
var _useState = useState(),
|
|
114
|
+
open = _useState[0],
|
|
115
|
+
setOpen = _useState[1];
|
|
116
|
+
|
|
117
|
+
var _useState2 = useState(startDate),
|
|
118
|
+
startD = _useState2[0],
|
|
119
|
+
setStartDate = _useState2[1];
|
|
120
|
+
|
|
121
|
+
var _useState3 = useState(endDate),
|
|
122
|
+
endD = _useState3[0],
|
|
123
|
+
setEndDate = _useState3[1];
|
|
124
|
+
|
|
125
|
+
var ref = useRef(null);
|
|
126
|
+
|
|
127
|
+
var _useState4 = useState(false),
|
|
128
|
+
inputFilled = _useState4[0],
|
|
129
|
+
setInputFilled = _useState4[1];
|
|
130
|
+
|
|
131
|
+
var triggerOnOpen = useCallback(function () {
|
|
132
|
+
if (onOpen) onOpen(open === 'true');
|
|
133
|
+
}, [open]);
|
|
134
|
+
|
|
135
|
+
var onBlur = function onBlur() {
|
|
136
|
+
setOpen(false.toString());
|
|
137
|
+
triggerOnOpen();
|
|
138
|
+
};
|
|
139
|
+
|
|
140
|
+
useEffect(function () {
|
|
141
|
+
if (type === 'single' && onSelectSingle) {
|
|
142
|
+
onSelectSingle(startD);
|
|
143
|
+
setOpen(false.toString());
|
|
144
|
+
} else if (type === 'range' && onSelectRange) {
|
|
145
|
+
onSelectRange(startD, endD);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
setInputFilled(!!startD);
|
|
149
|
+
}, [startD, endD]);
|
|
150
|
+
|
|
151
|
+
var onDateSingleSelect = function onDateSingleSelect(startLocal) {
|
|
152
|
+
setStartDate(startLocal);
|
|
153
|
+
};
|
|
154
|
+
|
|
155
|
+
useEffect(function () {
|
|
156
|
+
if (open === 'true') ref.current.focus();
|
|
157
|
+
}, [open]);
|
|
158
|
+
|
|
159
|
+
var onDateRangeSelect = function onDateRangeSelect(selectedDate) {
|
|
160
|
+
if (!endD) {
|
|
161
|
+
if (!startD) {
|
|
162
|
+
setStartDate(selectedDate);
|
|
163
|
+
} else if (selectedDate < startD) {
|
|
164
|
+
setStartDate(selectedDate);
|
|
165
|
+
setEndDate(undefined);
|
|
166
|
+
} else setEndDate(selectedDate);
|
|
167
|
+
} else {
|
|
168
|
+
setStartDate(selectedDate);
|
|
169
|
+
setEndDate(undefined);
|
|
170
|
+
}
|
|
171
|
+
};
|
|
172
|
+
|
|
173
|
+
var renderInput = function renderInput() {
|
|
174
|
+
if (!startD && !endD) {
|
|
175
|
+
return /*#__PURE__*/React.createElement(InputPlaceholder, {
|
|
176
|
+
disabled: disabled
|
|
177
|
+
}, placeholder != null ? placeholder : "Select Date");
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
var dateFormat = 'MMM D, YYYY';
|
|
181
|
+
return startD && /*#__PURE__*/React.createElement(Input, {
|
|
182
|
+
disabled: disabled
|
|
183
|
+
}, moment(startD).format(dateFormat), endD && " - " + moment(endD).format(dateFormat));
|
|
184
|
+
};
|
|
185
|
+
|
|
186
|
+
return /*#__PURE__*/React.createElement(Wrapper, {
|
|
187
|
+
fullWidth: fullWidth,
|
|
188
|
+
tabIndex: "0"
|
|
189
|
+
}, /*#__PURE__*/React.createElement(Selector, {
|
|
190
|
+
open: open === 'true',
|
|
191
|
+
disabled: disabled,
|
|
192
|
+
error: error
|
|
193
|
+
}, renderInput(), /*#__PURE__*/React.createElement(TButton, {
|
|
194
|
+
onClick: function onClick() {
|
|
195
|
+
if (!disabled) {
|
|
196
|
+
setOpen((open !== 'true').toString());
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
triggerOnOpen();
|
|
200
|
+
}
|
|
201
|
+
}, /*#__PURE__*/React.createElement(CalendarIcon, {
|
|
202
|
+
disabled: disabled,
|
|
203
|
+
inputFilled: inputFilled
|
|
204
|
+
}))), error && /*#__PURE__*/React.createElement(ErrorWrapper, null, error), open === 'true' && /*#__PURE__*/React.createElement(Panel, {
|
|
205
|
+
tabIndex: -1,
|
|
206
|
+
ref: ref,
|
|
207
|
+
onBlur: onBlur
|
|
208
|
+
}, /*#__PURE__*/React.createElement(Calendar, {
|
|
209
|
+
type: type,
|
|
210
|
+
startDate: startD,
|
|
211
|
+
endDate: endD,
|
|
212
|
+
onSelectSingle: onDateSingleSelect,
|
|
213
|
+
onSelectRange: onDateRangeSelect,
|
|
214
|
+
disablePastDates: disablePastDates,
|
|
215
|
+
disableFutureDates: disableFutureDates
|
|
216
|
+
})));
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
Datepicker.propTypes = {
|
|
220
|
+
fullWidth: bool,
|
|
221
|
+
type: oneOf(['single', 'range']).isRequired,
|
|
222
|
+
placeholder: string,
|
|
223
|
+
startDate: instanceOf(Date),
|
|
224
|
+
endDate: instanceOf(Date),
|
|
225
|
+
disabled: bool,
|
|
226
|
+
onSelectSingle: func,
|
|
227
|
+
onSelectRange: func,
|
|
228
|
+
disablePastDates: bool,
|
|
229
|
+
disableFutureDates: bool,
|
|
230
|
+
error: string,
|
|
231
|
+
onOpen: func
|
|
232
|
+
};
|
|
233
|
+
Datepicker.defaultProps = {
|
|
234
|
+
fullWidth: false,
|
|
235
|
+
placeholder: undefined,
|
|
236
|
+
startDate: undefined,
|
|
237
|
+
endDate: undefined,
|
|
238
|
+
disabled: false,
|
|
239
|
+
onSelectSingle: undefined,
|
|
240
|
+
onSelectRange: undefined,
|
|
241
|
+
disablePastDates: false,
|
|
242
|
+
disableFutureDates: false,
|
|
243
|
+
error: undefined,
|
|
244
|
+
onOpen: undefined
|
|
245
|
+
};
|
|
246
|
+
export default Datepicker;
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { fireEvent, render, screen } from '@testing-library/react';
|
|
3
|
+
import moment from 'moment';
|
|
4
|
+
import { ThemeProvider, Datepicker } from '../..';
|
|
5
|
+
describe('<Datepicker />', function () {
|
|
6
|
+
var testDate = new Date(2022, 7, 3);
|
|
7
|
+
describe('Snapshots', function () {
|
|
8
|
+
it('should match with single Datepicker', function () {
|
|
9
|
+
var _render = render( /*#__PURE__*/React.createElement(ThemeProvider, null, /*#__PURE__*/React.createElement(Datepicker, {
|
|
10
|
+
type: "single"
|
|
11
|
+
}))),
|
|
12
|
+
container = _render.container;
|
|
13
|
+
|
|
14
|
+
expect(container).toMatchSnapshot();
|
|
15
|
+
});
|
|
16
|
+
it('should match with range Datepicker', function () {
|
|
17
|
+
var _render2 = render( /*#__PURE__*/React.createElement(ThemeProvider, null, /*#__PURE__*/React.createElement(Datepicker, {
|
|
18
|
+
type: "range"
|
|
19
|
+
}))),
|
|
20
|
+
container = _render2.container;
|
|
21
|
+
|
|
22
|
+
expect(container).toMatchSnapshot();
|
|
23
|
+
});
|
|
24
|
+
it('should match with default selected date single Datepicker', function () {
|
|
25
|
+
var _render3 = render( /*#__PURE__*/React.createElement(ThemeProvider, null, /*#__PURE__*/React.createElement(Datepicker, {
|
|
26
|
+
type: "single",
|
|
27
|
+
startDate: testDate
|
|
28
|
+
}))),
|
|
29
|
+
container = _render3.container;
|
|
30
|
+
|
|
31
|
+
expect(container).toMatchSnapshot();
|
|
32
|
+
});
|
|
33
|
+
it('should match with default selected dates range Datepicker', function () {
|
|
34
|
+
var endDate = new Date();
|
|
35
|
+
endDate.setDate(testDate.getDate() + 15);
|
|
36
|
+
|
|
37
|
+
var _render4 = render( /*#__PURE__*/React.createElement(ThemeProvider, null, /*#__PURE__*/React.createElement(Datepicker, {
|
|
38
|
+
type: "range",
|
|
39
|
+
startDate: testDate,
|
|
40
|
+
endDate: endDate
|
|
41
|
+
}))),
|
|
42
|
+
container = _render4.container;
|
|
43
|
+
|
|
44
|
+
expect(container).toMatchSnapshot();
|
|
45
|
+
});
|
|
46
|
+
it('should match with custom placeholder single Datepicker', function () {
|
|
47
|
+
var _render5 = render( /*#__PURE__*/React.createElement(ThemeProvider, null, /*#__PURE__*/React.createElement(Datepicker, {
|
|
48
|
+
type: "single",
|
|
49
|
+
placeholder: "This is a custom placeholder :)"
|
|
50
|
+
}))),
|
|
51
|
+
container = _render5.container;
|
|
52
|
+
|
|
53
|
+
expect(container).toMatchSnapshot();
|
|
54
|
+
});
|
|
55
|
+
it('should match with disabled past dates Datepicker', function () {
|
|
56
|
+
var _render6 = render( /*#__PURE__*/React.createElement(ThemeProvider, null, /*#__PURE__*/React.createElement(Datepicker, {
|
|
57
|
+
type: "single",
|
|
58
|
+
disablePastDates: true
|
|
59
|
+
}))),
|
|
60
|
+
container = _render6.container;
|
|
61
|
+
|
|
62
|
+
expect(container).toMatchSnapshot();
|
|
63
|
+
});
|
|
64
|
+
it('should match with disabled future dates Datepicker', function () {
|
|
65
|
+
var _render7 = render( /*#__PURE__*/React.createElement(ThemeProvider, null, /*#__PURE__*/React.createElement(Datepicker, {
|
|
66
|
+
type: "single",
|
|
67
|
+
disableFutureDates: true
|
|
68
|
+
}))),
|
|
69
|
+
container = _render7.container;
|
|
70
|
+
|
|
71
|
+
expect(container).toMatchSnapshot();
|
|
72
|
+
});
|
|
73
|
+
it('should match with disabled Datepicker', function () {
|
|
74
|
+
var _render8 = render( /*#__PURE__*/React.createElement(ThemeProvider, null, /*#__PURE__*/React.createElement(Datepicker, {
|
|
75
|
+
type: "single",
|
|
76
|
+
disabled: true
|
|
77
|
+
}))),
|
|
78
|
+
container = _render8.container;
|
|
79
|
+
|
|
80
|
+
expect(container).toMatchSnapshot();
|
|
81
|
+
});
|
|
82
|
+
it('should match with error Datepicker', function () {
|
|
83
|
+
var _render9 = render( /*#__PURE__*/React.createElement(ThemeProvider, null, /*#__PURE__*/React.createElement(Datepicker, {
|
|
84
|
+
type: "single",
|
|
85
|
+
error: "This is an error"
|
|
86
|
+
}))),
|
|
87
|
+
container = _render9.container;
|
|
88
|
+
|
|
89
|
+
expect(container).toMatchSnapshot();
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
describe('Unit', function () {
|
|
93
|
+
var dateFormat = 'MMM D, YYYY';
|
|
94
|
+
it('should call onSelectSingle function on single Datepicker', function () {
|
|
95
|
+
var onSelectSingle = jest.fn();
|
|
96
|
+
render( /*#__PURE__*/React.createElement(ThemeProvider, null, /*#__PURE__*/React.createElement(Datepicker, {
|
|
97
|
+
type: "single",
|
|
98
|
+
onSelectSingle: onSelectSingle
|
|
99
|
+
})));
|
|
100
|
+
expect(onSelectSingle).toHaveBeenCalledTimes(1);
|
|
101
|
+
fireEvent.click(screen.getByRole('button'));
|
|
102
|
+
var day10 = screen.queryAllByText('10')[0];
|
|
103
|
+
fireEvent.click(day10);
|
|
104
|
+
expect(onSelectSingle).toHaveBeenCalledTimes(2);
|
|
105
|
+
});
|
|
106
|
+
it('should call onSelectRange function on range Datepicker', function () {
|
|
107
|
+
var onSelectRange = jest.fn();
|
|
108
|
+
render( /*#__PURE__*/React.createElement(ThemeProvider, null, /*#__PURE__*/React.createElement(Datepicker, {
|
|
109
|
+
type: "range",
|
|
110
|
+
onSelectRange: onSelectRange
|
|
111
|
+
})));
|
|
112
|
+
expect(onSelectRange).toHaveBeenCalledTimes(1);
|
|
113
|
+
fireEvent.click(screen.getByRole('button'));
|
|
114
|
+
var day10 = screen.queryAllByText('10')[0];
|
|
115
|
+
var day20 = screen.queryAllByText('20')[0];
|
|
116
|
+
fireEvent.click(day10);
|
|
117
|
+
expect(onSelectRange).toHaveBeenCalledTimes(2);
|
|
118
|
+
fireEvent.click(day20);
|
|
119
|
+
expect(onSelectRange).toHaveBeenCalledTimes(3);
|
|
120
|
+
});
|
|
121
|
+
it('should display default date on single Datepicker', function () {
|
|
122
|
+
var currentDate = new Date();
|
|
123
|
+
render( /*#__PURE__*/React.createElement(ThemeProvider, null, /*#__PURE__*/React.createElement(Datepicker, {
|
|
124
|
+
type: "single",
|
|
125
|
+
startDate: currentDate
|
|
126
|
+
})));
|
|
127
|
+
var formattedDate = moment(currentDate).format(dateFormat);
|
|
128
|
+
expect(screen.getByText(formattedDate)).toBeVisible();
|
|
129
|
+
});
|
|
130
|
+
it('should display default date range on range Datepicker', function () {
|
|
131
|
+
var currentDate = new Date();
|
|
132
|
+
var end = new Date();
|
|
133
|
+
end.setDate(currentDate.getDate() + 15);
|
|
134
|
+
var formattedStartDate = moment(currentDate).format(dateFormat);
|
|
135
|
+
var formattedEndDate = moment(end).format(dateFormat);
|
|
136
|
+
render( /*#__PURE__*/React.createElement(ThemeProvider, null, /*#__PURE__*/React.createElement(Datepicker, {
|
|
137
|
+
type: "range",
|
|
138
|
+
startDate: currentDate,
|
|
139
|
+
endDate: end
|
|
140
|
+
})));
|
|
141
|
+
expect(screen.getByText(formattedStartDate + " - " + formattedEndDate)).toBeVisible();
|
|
142
|
+
});
|
|
143
|
+
it('should display custom placeholder and "Select Date" if none is provided', function () {
|
|
144
|
+
var _render10 = render( /*#__PURE__*/React.createElement(ThemeProvider, null, /*#__PURE__*/React.createElement(Datepicker, {
|
|
145
|
+
type: "single",
|
|
146
|
+
placeholder: "This is a custom placeholder :)"
|
|
147
|
+
}))),
|
|
148
|
+
rerender = _render10.rerender;
|
|
149
|
+
|
|
150
|
+
expect(screen.getByText('This is a custom placeholder :)')).toBeVisible();
|
|
151
|
+
rerender( /*#__PURE__*/React.createElement(ThemeProvider, null, /*#__PURE__*/React.createElement(Datepicker, {
|
|
152
|
+
type: "single"
|
|
153
|
+
})));
|
|
154
|
+
expect(screen.getByText('Select Date')).toBeVisible();
|
|
155
|
+
});
|
|
156
|
+
it('should disable past dates', function () {
|
|
157
|
+
render( /*#__PURE__*/React.createElement(ThemeProvider, null, /*#__PURE__*/React.createElement(Datepicker, {
|
|
158
|
+
type: "single",
|
|
159
|
+
disablePastDates: true
|
|
160
|
+
})));
|
|
161
|
+
fireEvent.click(screen.getByRole('button'));
|
|
162
|
+
var previousMonthArrow = screen.getByTestId('previous-month-arrow');
|
|
163
|
+
fireEvent.click(previousMonthArrow);
|
|
164
|
+
[].concat(Array(25)).forEach(function (_e, i) {
|
|
165
|
+
return expect(screen.getAllByText("" + (i + 1))[0].closest('div')).toHaveAttribute('disabled');
|
|
166
|
+
});
|
|
167
|
+
});
|
|
168
|
+
it('should disable future dates', function () {
|
|
169
|
+
render( /*#__PURE__*/React.createElement(ThemeProvider, null, /*#__PURE__*/React.createElement(Datepicker, {
|
|
170
|
+
type: "single",
|
|
171
|
+
startDate: testDate,
|
|
172
|
+
disableFutureDates: true
|
|
173
|
+
})));
|
|
174
|
+
fireEvent.click(screen.getByRole('button'));
|
|
175
|
+
var nextMonthArrow = screen.getByTestId('next-month-arrow');
|
|
176
|
+
fireEvent.click(nextMonthArrow);
|
|
177
|
+
[].concat(Array(25)).forEach(function (_e, i) {
|
|
178
|
+
return expect(screen.getAllByText("" + (i + 1))[0].closest('div')).toHaveAttribute('disabled');
|
|
179
|
+
});
|
|
180
|
+
});
|
|
181
|
+
it('should be disabled', function () {
|
|
182
|
+
render( /*#__PURE__*/React.createElement(ThemeProvider, null, /*#__PURE__*/React.createElement(Datepicker, {
|
|
183
|
+
type: "single",
|
|
184
|
+
startDate: testDate,
|
|
185
|
+
disabled: true
|
|
186
|
+
})));
|
|
187
|
+
var formattedDate = moment(testDate).format(dateFormat);
|
|
188
|
+
var datepickerInput = screen.getByText(formattedDate);
|
|
189
|
+
expect(datepickerInput).toHaveAttribute('disabled');
|
|
190
|
+
expect(datepickerInput.closest('div')).toHaveAttribute('disabled');
|
|
191
|
+
});
|
|
192
|
+
it('should display an error', function () {
|
|
193
|
+
render( /*#__PURE__*/React.createElement(ThemeProvider, null, /*#__PURE__*/React.createElement(Datepicker, {
|
|
194
|
+
type: "single",
|
|
195
|
+
error: "This is an error"
|
|
196
|
+
})));
|
|
197
|
+
expect(screen.getByText('This is an error')).toBeVisible();
|
|
198
|
+
});
|
|
199
|
+
});
|
|
200
|
+
});
|
package/esm/Theme/theme/theme.js
CHANGED
|
@@ -12,6 +12,7 @@ import _componentThemes_Card$Card from "./../../Card/Card.theme.js";
|
|
|
12
12
|
import _componentThemes_Card$CardWeb from "./../../Card/Card.web.theme.js";
|
|
13
13
|
import _componentThemes_Checkbox$Checkbox from "./../../Checkbox/Checkbox.theme.js";
|
|
14
14
|
import _componentThemes_Checkbox$CheckboxSwitch from "./../../Checkbox/CheckboxSwitch.theme.js";
|
|
15
|
+
import _componentThemes_Datepicker$Datepicker from "./../../Datepicker/Datepicker.theme.js";
|
|
15
16
|
import _componentThemes_Dialog$Dialog from "./../../Dialog/Dialog.theme.js";
|
|
16
17
|
import _componentThemes_Divider$Divider from "./../../Divider/Divider.theme.js";
|
|
17
18
|
import _componentThemes_Drawer$Drawer from "./../../Drawer/Drawer.theme.js";
|
|
@@ -46,6 +47,7 @@ var componentThemes = {
|
|
|
46
47
|
Card$CardWeb: _componentThemes_Card$CardWeb,
|
|
47
48
|
Checkbox$Checkbox: _componentThemes_Checkbox$Checkbox,
|
|
48
49
|
Checkbox$CheckboxSwitch: _componentThemes_Checkbox$CheckboxSwitch,
|
|
50
|
+
Datepicker$Datepicker: _componentThemes_Datepicker$Datepicker,
|
|
49
51
|
Dialog$Dialog: _componentThemes_Dialog$Dialog,
|
|
50
52
|
Divider$Divider: _componentThemes_Divider$Divider,
|
|
51
53
|
Drawer$Drawer: _componentThemes_Drawer$Drawer,
|
package/esm/index.js
CHANGED
|
@@ -28,6 +28,7 @@ import Menu from './Menu';
|
|
|
28
28
|
import Banner from './Banner';
|
|
29
29
|
import Heading from './Heading';
|
|
30
30
|
import Feedback from './Feedback';
|
|
31
|
+
import Datepicker from './Datepicker';
|
|
31
32
|
import Drawer from './Drawer';
|
|
32
33
|
import Skeleton from './Skeleton';
|
|
33
|
-
export { ThemeProvider, FontLoader, createTheme, yogaTheme, theme, Button, List, Checkbox, RadioGroup, Slider, Card, PlanCard, Stepper, Container, Row, Col, Hide, Text, Rating, EventCard, Tag, Input, Progress, Dropdown, TextArea, AutoComplete, Icon, Chips, Box, Snackbar, Avatar, BottomSheet, Dialog, Divider, Header, Menu, Banner, Heading, Feedback, Drawer, Skeleton };
|
|
34
|
+
export { ThemeProvider, FontLoader, createTheme, yogaTheme, theme, Button, List, Checkbox, RadioGroup, Slider, Card, PlanCard, Stepper, Container, Row, Col, Hide, Text, Rating, EventCard, Tag, Input, Progress, Dropdown, TextArea, AutoComplete, Icon, Chips, Box, Snackbar, Avatar, BottomSheet, Dialog, Divider, Header, Menu, Banner, Heading, Feedback, Datepicker, Drawer, Skeleton };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gympass/yoga",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.50.0",
|
|
4
4
|
"description": "Gympass component library",
|
|
5
5
|
"main": "./cjs",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
"react": ">=16",
|
|
52
52
|
"styled-components": "^4.4.0"
|
|
53
53
|
},
|
|
54
|
-
"gitHead": "
|
|
54
|
+
"gitHead": "2e47f0194f1ae130b94a7ab79f757e7b92a99c0c",
|
|
55
55
|
"module": "./esm",
|
|
56
56
|
"private": false,
|
|
57
57
|
"react-native": "./cjs/index.native.js"
|