@gympass/yoga 7.53.7 → 7.54.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/ActionRequirement/native/ActionRequirement.js +1 -1
- package/cjs/ActionRequirement/web/ActionRequirement.js +4 -4
- package/cjs/ActionRequirement/web/ActionRequirement.test.js +22 -2
- package/cjs/Datepicker/web/Calendar.js +17 -8
- package/cjs/Datepicker/web/Datepicker.js +69 -37
- package/cjs/Datepicker/web/Datepicker.test.js +58 -8
- package/esm/ActionRequirement/native/ActionRequirement.js +2 -2
- package/esm/ActionRequirement/web/ActionRequirement.js +4 -4
- package/esm/ActionRequirement/web/ActionRequirement.test.js +21 -2
- package/esm/Datepicker/web/Calendar.js +17 -8
- package/esm/Datepicker/web/Datepicker.js +69 -37
- package/esm/Datepicker/web/Datepicker.test.js +49 -8
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _taggedTemplateLiteralLoose2=_interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteralLoose"));var _react=_interopRequireDefault(require("react"));var _propTypes=require("prop-types");var _native=_interopRequireDefault(require("styled-components/native"));var _reactNative=require("react-native");var _Box=_interopRequireDefault(require("../../Box"));var _ActionRequirementStyles=require("./ActionRequirementStyles");var _Text=_interopRequireDefault(require("../../Text"));var _templateObject;var StyledActionRequirement=_native["default"].View(_templateObject||(_templateObject=(0,_taggedTemplateLiteralLoose2["default"])([""])));function ActionRequirement(props){var title=props.title,description=props.description,children=props.children,checkable=props.checkable,illustration=props.illustration,list=props.list;return _react["default"].createElement(StyledActionRequirement,props,illustration&&_react["default"].createElement(_Box["default"],null,illustration),_react["default"].createElement(_ActionRequirementStyles.Title,null,title),_react["default"].createElement(_Text["default"],{mt:"small",color:"deep"},description),_react["default"].createElement(_Text["default"],{mt:"small",color:"deep"},
|
|
1
|
+
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _taggedTemplateLiteralLoose2=_interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteralLoose"));var _react=_interopRequireDefault(require("react"));var _propTypes=require("prop-types");var _native=_interopRequireDefault(require("styled-components/native"));var _reactNative=require("react-native");var _Box=_interopRequireDefault(require("../../Box"));var _ActionRequirementStyles=require("./ActionRequirementStyles");var _Text=_interopRequireDefault(require("../../Text"));var _templateObject;var StyledActionRequirement=_native["default"].View(_templateObject||(_templateObject=(0,_taggedTemplateLiteralLoose2["default"])([""])));function ActionRequirement(props){var title=props.title,description=props.description,children=props.children,checkable=props.checkable,illustration=props.illustration,list=props.list;return _react["default"].createElement(StyledActionRequirement,props,illustration&&_react["default"].createElement(_Box["default"],null,illustration),_react["default"].createElement(_ActionRequirementStyles.Title,null,title),_react["default"].createElement(_Text["default"],{mt:"small",color:"deep"},description),list&&_react["default"].createElement(_Text["default"],{mt:"small",color:"deep"},_react["default"].createElement(_Box["default"],{mt:"xxxlarge"},list)),checkable&&_react["default"].createElement(_Box["default"],{mt:"xxxlarge"},checkable),_react["default"].createElement(_reactNative.View,null,children));}ActionRequirement.propTypes={title:_propTypes.string.isRequired,children:(0,_propTypes.oneOfType)([(0,_propTypes.arrayOf)(_propTypes.node),_propTypes.node]),description:_propTypes.string.isRequired,checkable:(0,_propTypes.oneOfType)([(0,_propTypes.arrayOf)(_propTypes.node),_propTypes.node]),illustration:(0,_propTypes.oneOfType)([(0,_propTypes.arrayOf)(_propTypes.node),_propTypes.node]),list:(0,_propTypes.oneOfType)([(0,_propTypes.arrayOf)(_propTypes.node),_propTypes.node])};ActionRequirement.defaultProps={children:undefined,checkable:undefined,illustration:undefined,list:undefined};var _default=ActionRequirement;exports["default"]=_default;
|
|
@@ -23,11 +23,11 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "d
|
|
|
23
23
|
|
|
24
24
|
function _taggedTemplateLiteralLoose(strings, raw) { if (!raw) { raw = strings.slice(0); } strings.raw = raw; return strings; }
|
|
25
25
|
|
|
26
|
-
var StyledActionRequirement = _styledComponents["default"].div(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["\n display: flex;\n ", "\n ", "\n"])), _yogaHelpers.media.xxs(_templateObject2 || (_templateObject2 = _taggedTemplateLiteralLoose(["\n flex-direction: column;\n "]))), _yogaHelpers.media.lg(_templateObject3 || (_templateObject3 = _taggedTemplateLiteralLoose(["\n flex-direction: row-reverse;\n "]))));
|
|
26
|
+
var StyledActionRequirement = _styledComponents["default"].div(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["\n display: flex;\n height: 100%;\n ", "\n ", "\n"])), _yogaHelpers.media.xxs(_templateObject2 || (_templateObject2 = _taggedTemplateLiteralLoose(["\n flex-direction: column;\n "]))), _yogaHelpers.media.lg(_templateObject3 || (_templateObject3 = _taggedTemplateLiteralLoose(["\n flex-direction: row-reverse;\n "]))));
|
|
27
27
|
|
|
28
28
|
var Content = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = _taggedTemplateLiteralLoose(["\n display: flex;\n flex-direction: column;\n justify-content: center;\n\n ", "\n\n ", "\n"])), _yogaHelpers.media.xxs(_templateObject5 || (_templateObject5 = _taggedTemplateLiteralLoose(["\n width: auto;\n margin-right: 0;\n "]))), _yogaHelpers.media.lg(_templateObject6 || (_templateObject6 = _taggedTemplateLiteralLoose(["\n width: 520px;\n margin-right: 120px;\n "]))));
|
|
29
29
|
|
|
30
|
-
var BoxIllustration = (0, _styledComponents["default"])(_Box["default"])(_templateObject7 || (_templateObject7 = _taggedTemplateLiteralLoose(["\n
|
|
30
|
+
var BoxIllustration = (0, _styledComponents["default"])(_Box["default"])(_templateObject7 || (_templateObject7 = _taggedTemplateLiteralLoose(["\n flex-grow: 1;\n display: flex;\n justify-content: center;\n align-items: center;\n"])));
|
|
31
31
|
|
|
32
32
|
function isChildFromComponent(child, component) {
|
|
33
33
|
return child.type.displayName === component.displayName;
|
|
@@ -54,10 +54,10 @@ function ActionRequirement(props) {
|
|
|
54
54
|
return /*#__PURE__*/_react["default"].createElement(StyledActionRequirement, props, illustration && /*#__PURE__*/_react["default"].createElement(BoxIllustration, null, illustration), /*#__PURE__*/_react["default"].createElement(Content, null, /*#__PURE__*/_react["default"].createElement(_ActionRequirementStyles.Title, null, title), /*#__PURE__*/_react["default"].createElement(_Text["default"], {
|
|
55
55
|
mt: "small",
|
|
56
56
|
color: "deep"
|
|
57
|
-
}, description), /*#__PURE__*/_react["default"].createElement(_Text["default"], {
|
|
57
|
+
}, description), list && /*#__PURE__*/_react["default"].createElement(_Text["default"], {
|
|
58
58
|
mt: "large",
|
|
59
59
|
color: "deep"
|
|
60
|
-
},
|
|
60
|
+
}, /*#__PURE__*/_react["default"].createElement(_Box["default"], null, list)), checkable && /*#__PURE__*/_react["default"].createElement(_Box["default"], {
|
|
61
61
|
mt: "xxlarge"
|
|
62
62
|
}, checkable), /*#__PURE__*/_react["default"].createElement(_ActionRequirementStyles.Actions, {
|
|
63
63
|
mt: "xlarge"
|
|
@@ -4,17 +4,37 @@ var _react = _interopRequireDefault(require("react"));
|
|
|
4
4
|
|
|
5
5
|
var _react2 = require("@testing-library/react");
|
|
6
6
|
|
|
7
|
-
var
|
|
7
|
+
var _yoga = require("@gympass/yoga");
|
|
8
|
+
|
|
9
|
+
var _yogaIcons = require("@gympass/yoga-icons");
|
|
8
10
|
|
|
9
11
|
var _ActionRequirement = _interopRequireDefault(require("./ActionRequirement"));
|
|
10
12
|
|
|
13
|
+
var _ = require("../..");
|
|
14
|
+
|
|
11
15
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
12
16
|
|
|
17
|
+
function handleGetList() {
|
|
18
|
+
return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_yoga.Text, null, /*#__PURE__*/_react["default"].createElement(_yogaIcons.Dumbbell, null), " 1x/day standard access"), /*#__PURE__*/_react["default"].createElement(_yoga.Text, {
|
|
19
|
+
mt: "small"
|
|
20
|
+
}, /*#__PURE__*/_react["default"].createElement(_yogaIcons.User, null), " 4x/month 1-on-1 sessions"), /*#__PURE__*/_react["default"].createElement(_yoga.Text, {
|
|
21
|
+
mt: "small"
|
|
22
|
+
}, /*#__PURE__*/_react["default"].createElement(_yogaIcons.Star, null), " 2x/month premium classes"));
|
|
23
|
+
}
|
|
24
|
+
|
|
13
25
|
describe('<ActionRequirement />', function () {
|
|
14
|
-
it('should match snapshot', function () {
|
|
26
|
+
it('should default match snapshot', function () {
|
|
15
27
|
var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_.ThemeProvider, null, /*#__PURE__*/_react["default"].createElement(_ActionRequirement["default"], null))),
|
|
16
28
|
container = _render.container;
|
|
17
29
|
|
|
18
30
|
expect(container).toMatchSnapshot();
|
|
19
31
|
});
|
|
32
|
+
it('should match snapshot with list', function () {
|
|
33
|
+
var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_.ThemeProvider, null, /*#__PURE__*/_react["default"].createElement(_ActionRequirement["default"], {
|
|
34
|
+
list: handleGetList()
|
|
35
|
+
}))),
|
|
36
|
+
container = _render2.container;
|
|
37
|
+
|
|
38
|
+
expect(container).toMatchSnapshot();
|
|
39
|
+
});
|
|
20
40
|
});
|
|
@@ -97,7 +97,7 @@ var DayField = _styledComponents["default"].div(_templateObject4 || (_templateOb
|
|
|
97
97
|
radii = _ref4$theme$yoga.radii,
|
|
98
98
|
spacing = _ref4$theme$yoga.spacing,
|
|
99
99
|
datepicker = _ref4$theme$yoga.components.datepicker;
|
|
100
|
-
return "\n p {\n color: " + getDayFieldColor(selected, disabled, colors, aux) + ";\n z-index: 1;\n }\n width: " + datepicker.width.day + "px;\n height: " + datepicker.width.day + "px;\n padding: " + spacing.zero + "px 21.3px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: " + (inRange ? colors.clear : colors.white) + ";\n position: relative;\n cursor: pointer;\n " + (selected && inRange ? "border-radius: " + getDayFieldRadius(aux, radii) : "") + "\n " + (selected && !disabled ? "&:before {\n content: '';\n position: absolute;\n background: " + colors.vibin + ";\n width: " + datepicker.width.day + "px;\n height: " + datepicker.width.day + "px;\n border-radius: " + radii.circle + "px;\n }" : "") + "\n " + (!disabled ? "&:hover {\n &:before {\n content: '';\n position: absolute;\n border: 1px solid " + colors.secondary + ";\n width: " + datepicker.width.day + "px;\n height: " + datepicker.width.day + "px;\n border-radius: " + radii.circle + "px;\n }\n }" : "") + "\n";
|
|
100
|
+
return "\n p {\n color: " + getDayFieldColor(selected, disabled, colors, aux) + ";\n z-index: 1;\n }\n width: " + datepicker.width.day + "px;\n height: " + datepicker.width.day + "px;\n padding: " + spacing.zero + "px 21.3px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: " + (inRange ? colors.clear : colors.white) + ";\n position: relative;\n cursor: pointer;\n " + (selected && inRange ? "border-radius: " + getDayFieldRadius(aux, radii) + ";" : "") + "\n " + (selected && !disabled ? "&:before {\n content: '';\n position: absolute;\n background: " + colors.vibin + ";\n width: " + datepicker.width.day + "px;\n height: " + datepicker.width.day + "px;\n border-radius: " + radii.circle + "px;\n };" : "") + "\n " + (!disabled ? "&:hover {\n &:before {\n content: '';\n position: absolute;\n border: 1px solid " + colors.secondary + ";\n width: " + datepicker.width.day + "px;\n height: " + datepicker.width.day + "px;\n border-radius: " + radii.circle + "px;\n }\n };" : "") + "\n";
|
|
101
101
|
});
|
|
102
102
|
|
|
103
103
|
var Row = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = _taggedTemplateLiteralLoose(["\n ", "\n"])), function (_ref5) {
|
|
@@ -114,7 +114,9 @@ function Calendar(_ref6) {
|
|
|
114
114
|
onSelectSingle = _ref6.onSelectSingle,
|
|
115
115
|
onSelectRange = _ref6.onSelectRange,
|
|
116
116
|
disablePastDates = _ref6.disablePastDates,
|
|
117
|
-
disableFutureDates = _ref6.disableFutureDates
|
|
117
|
+
disableFutureDates = _ref6.disableFutureDates,
|
|
118
|
+
disablePastFrom = _ref6.disablePastFrom,
|
|
119
|
+
disableFutureFrom = _ref6.disableFutureFrom;
|
|
118
120
|
|
|
119
121
|
var _useState = (0, _react.useState)(new Date().getUTCMonth()),
|
|
120
122
|
month = _useState[0],
|
|
@@ -125,11 +127,14 @@ function Calendar(_ref6) {
|
|
|
125
127
|
setYear = _useState2[1];
|
|
126
128
|
|
|
127
129
|
(0, _react.useEffect)(function () {
|
|
128
|
-
if (
|
|
130
|
+
if (endDate) {
|
|
131
|
+
setMonth(endDate.getUTCMonth());
|
|
132
|
+
setYear(endDate.getUTCFullYear());
|
|
133
|
+
} else if (startDate) {
|
|
129
134
|
setMonth(startDate.getUTCMonth());
|
|
130
135
|
setYear(startDate.getUTCFullYear());
|
|
131
136
|
}
|
|
132
|
-
}, [startDate]);
|
|
137
|
+
}, [startDate, endDate]);
|
|
133
138
|
|
|
134
139
|
var getDayOfWeek = function getDayOfWeek(day) {
|
|
135
140
|
return new Date(Date.UTC(year, month, day)).getUTCDay();
|
|
@@ -159,8 +164,8 @@ function Calendar(_ref6) {
|
|
|
159
164
|
var local = new Date(Date.UTC(year, month, day));
|
|
160
165
|
var now = new Date();
|
|
161
166
|
var nowUTC = Date.UTC(now.getFullYear(), now.getMonth(), now.getDate());
|
|
162
|
-
var pastDatesDisabled = disablePastDates && local.getTime() < nowUTC;
|
|
163
|
-
var futureDateDisabled = disableFutureDates && local.getTime() > nowUTC;
|
|
167
|
+
var pastDatesDisabled = disablePastDates && local.getTime() < nowUTC || disablePastFrom && local.getTime() < new Date(Date.UTC(disablePastFrom.getFullYear(), disablePastFrom.getMonth(), disablePastFrom.getDate()));
|
|
168
|
+
var futureDateDisabled = disableFutureDates && local.getTime() > nowUTC || disableFutureFrom && local.getTime() > new Date(Date.UTC(disableFutureFrom.getFullYear(), disableFutureFrom.getMonth(), disableFutureFrom.getDate()));
|
|
164
169
|
return pastDatesDisabled || futureDateDisabled;
|
|
165
170
|
};
|
|
166
171
|
|
|
@@ -341,7 +346,9 @@ Calendar.propTypes = {
|
|
|
341
346
|
onSelectSingle: _propTypes.func,
|
|
342
347
|
onSelectRange: _propTypes.func,
|
|
343
348
|
disablePastDates: _propTypes.bool,
|
|
344
|
-
disableFutureDates: _propTypes.bool
|
|
349
|
+
disableFutureDates: _propTypes.bool,
|
|
350
|
+
disablePastFrom: (0, _propTypes.instanceOf)(Date),
|
|
351
|
+
disableFutureFrom: (0, _propTypes.instanceOf)(Date)
|
|
345
352
|
};
|
|
346
353
|
Calendar.defaultProps = {
|
|
347
354
|
startDate: undefined,
|
|
@@ -349,7 +356,9 @@ Calendar.defaultProps = {
|
|
|
349
356
|
onSelectSingle: null,
|
|
350
357
|
onSelectRange: null,
|
|
351
358
|
disablePastDates: false,
|
|
352
|
-
disableFutureDates: false
|
|
359
|
+
disableFutureDates: false,
|
|
360
|
+
disablePastFrom: undefined,
|
|
361
|
+
disableFutureFrom: undefined
|
|
353
362
|
};
|
|
354
363
|
var _default = Calendar;
|
|
355
364
|
exports["default"] = _default;
|
|
@@ -39,7 +39,7 @@ var Wrapper = _styledComponents["default"].div(_templateObject || (_templateObje
|
|
|
39
39
|
return props.fullWidth ? '100%' : (0, _styledComponents.css)(_templateObject2 || (_templateObject2 = _taggedTemplateLiteralLoose(["\n ", "px\n "])), _Theme.theme.components.input.width);
|
|
40
40
|
});
|
|
41
41
|
|
|
42
|
-
var getSelectorBorderColor = function getSelectorBorderColor(open, error, disabled,
|
|
42
|
+
var getSelectorBorderColor = function getSelectorBorderColor(open, error, disabled, inputFilled, colors) {
|
|
43
43
|
if (error) {
|
|
44
44
|
return colors.feedback.attention[1];
|
|
45
45
|
}
|
|
@@ -48,22 +48,23 @@ var getSelectorBorderColor = function getSelectorBorderColor(open, error, disabl
|
|
|
48
48
|
return colors.elements.backgroundAndDisabled;
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
-
if (open) {
|
|
52
|
-
return colors.
|
|
51
|
+
if (open || inputFilled) {
|
|
52
|
+
return colors.secondary;
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
-
return
|
|
55
|
+
return colors.elements.lineAndBorders;
|
|
56
56
|
};
|
|
57
57
|
|
|
58
58
|
var Selector = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = _taggedTemplateLiteralLoose(["\n ", "\n"])), function (_ref) {
|
|
59
59
|
var open = _ref.open,
|
|
60
60
|
error = _ref.error,
|
|
61
61
|
disabled = _ref.disabled,
|
|
62
|
+
inputFilled = _ref.inputFilled,
|
|
62
63
|
_ref$theme$yoga = _ref.theme.yoga,
|
|
63
64
|
components = _ref$theme$yoga.components,
|
|
64
65
|
colors = _ref$theme$yoga.colors,
|
|
65
66
|
spacing = _ref$theme$yoga.spacing;
|
|
66
|
-
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,
|
|
67
|
+
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, inputFilled, colors) + ";\n &:hover {\n border-color: " + colors.secondary + ";\n }\n ";
|
|
67
68
|
});
|
|
68
69
|
|
|
69
70
|
var Input = (0, _styledComponents["default"])(_yoga.Text.Small)(_templateObject4 || (_templateObject4 = _taggedTemplateLiteralLoose(["\n ", "\n"])), function (_ref2) {
|
|
@@ -125,27 +126,31 @@ function Datepicker(_ref8) {
|
|
|
125
126
|
var fullWidth = _ref8.fullWidth,
|
|
126
127
|
type = _ref8.type,
|
|
127
128
|
placeholder = _ref8.placeholder,
|
|
128
|
-
|
|
129
|
-
|
|
129
|
+
startDate = _ref8.startDate,
|
|
130
|
+
endDate = _ref8.endDate,
|
|
130
131
|
onSelectSingle = _ref8.onSelectSingle,
|
|
131
132
|
disabled = _ref8.disabled,
|
|
132
133
|
onSelectRange = _ref8.onSelectRange,
|
|
134
|
+
customOnSelectRange = _ref8.customOnSelectRange,
|
|
133
135
|
disablePastDates = _ref8.disablePastDates,
|
|
134
136
|
disableFutureDates = _ref8.disableFutureDates,
|
|
137
|
+
disablePastFrom = _ref8.disablePastFrom,
|
|
138
|
+
disableFutureFrom = _ref8.disableFutureFrom,
|
|
135
139
|
error = _ref8.error,
|
|
136
|
-
onOpen = _ref8.onOpen
|
|
140
|
+
onOpen = _ref8.onOpen,
|
|
141
|
+
displayEndDateOnly = _ref8.displayEndDateOnly;
|
|
137
142
|
|
|
138
143
|
var _useState = (0, _react.useState)(),
|
|
139
144
|
open = _useState[0],
|
|
140
145
|
setOpen = _useState[1];
|
|
141
146
|
|
|
142
|
-
var _useState2 = (0, _react.useState)(
|
|
143
|
-
|
|
144
|
-
|
|
147
|
+
var _useState2 = (0, _react.useState)(startDate),
|
|
148
|
+
startDateLocal = _useState2[0],
|
|
149
|
+
setStartDateLocal = _useState2[1];
|
|
145
150
|
|
|
146
|
-
var _useState3 = (0, _react.useState)(
|
|
147
|
-
|
|
148
|
-
|
|
151
|
+
var _useState3 = (0, _react.useState)(endDate),
|
|
152
|
+
endDateLocal = _useState3[0],
|
|
153
|
+
setEndDateLocal = _useState3[1];
|
|
149
154
|
|
|
150
155
|
var ref = (0, _react.useRef)(null);
|
|
151
156
|
|
|
@@ -163,18 +168,23 @@ function Datepicker(_ref8) {
|
|
|
163
168
|
};
|
|
164
169
|
|
|
165
170
|
(0, _react.useEffect)(function () {
|
|
166
|
-
|
|
167
|
-
|
|
171
|
+
setInputFilled(startDate || endDate);
|
|
172
|
+
}, [startDate, endDate]);
|
|
173
|
+
(0, _react.useEffect)(function () {
|
|
174
|
+
setInputFilled(startDate || endDate);
|
|
175
|
+
setStartDateLocal(startDate);
|
|
176
|
+
setEndDateLocal(endDate);
|
|
177
|
+
|
|
178
|
+
if (type === 'single' && startDate) {
|
|
168
179
|
setOpen(false.toString());
|
|
169
|
-
} else if (type === 'range' && onSelectRange) {
|
|
170
|
-
onSelectRange(startDate, endDate);
|
|
171
180
|
}
|
|
172
181
|
|
|
173
|
-
|
|
174
|
-
|
|
182
|
+
if ((startDate || endDate) && onSelectRange) onSelectRange(startDate, endDate);
|
|
183
|
+
if (displayEndDateOnly && !endDate) setInputFilled(false);
|
|
184
|
+
}, [startDate, endDate, type]);
|
|
175
185
|
|
|
176
186
|
var onDateSingleSelect = function onDateSingleSelect(startLocal) {
|
|
177
|
-
|
|
187
|
+
onSelectSingle(startLocal);
|
|
178
188
|
};
|
|
179
189
|
|
|
180
190
|
(0, _react.useEffect)(function () {
|
|
@@ -182,27 +192,38 @@ function Datepicker(_ref8) {
|
|
|
182
192
|
}, [open]);
|
|
183
193
|
|
|
184
194
|
var onDateRangeSelect = function onDateRangeSelect(selectedDate) {
|
|
185
|
-
if (
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
195
|
+
if (customOnSelectRange) {
|
|
196
|
+
customOnSelectRange(selectedDate);
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
var onSelectRangeCallback = function onSelectRangeCallback(start, end) {
|
|
201
|
+
if (onSelectRange) {
|
|
202
|
+
onSelectRange(start, end);
|
|
203
|
+
}
|
|
204
|
+
};
|
|
205
|
+
|
|
206
|
+
if (!startDateLocal || startDateLocal > selectedDate && !endDateLocal || endDateLocal) {
|
|
207
|
+
setStartDateLocal(selectedDate);
|
|
208
|
+
if (endDateLocal) setEndDateLocal(undefined);
|
|
209
|
+
onSelectRangeCallback(selectedDate, undefined);
|
|
192
210
|
} else {
|
|
193
|
-
|
|
194
|
-
|
|
211
|
+
setEndDateLocal(selectedDate);
|
|
212
|
+
onSelectRangeCallback(startDateLocal, selectedDate);
|
|
195
213
|
}
|
|
196
214
|
};
|
|
197
215
|
|
|
198
216
|
var renderInput = function renderInput() {
|
|
199
|
-
if (!startDate && !endDate) {
|
|
217
|
+
if (!startDate && !endDate || displayEndDateOnly && !endDate) {
|
|
200
218
|
return /*#__PURE__*/_react["default"].createElement(InputPlaceholder, {
|
|
201
219
|
disabled: disabled
|
|
202
220
|
}, placeholder != null ? placeholder : "Select Date");
|
|
203
221
|
}
|
|
204
222
|
|
|
205
223
|
var dateFormat = 'MMM d, yyyy';
|
|
224
|
+
if (displayEndDateOnly) return /*#__PURE__*/_react["default"].createElement(Input, {
|
|
225
|
+
disabled: disabled
|
|
226
|
+
}, endDate && (0, _dateFns.format)(endDate, dateFormat));
|
|
206
227
|
return startDate && /*#__PURE__*/_react["default"].createElement(Input, {
|
|
207
228
|
disabled: disabled
|
|
208
229
|
}, (0, _dateFns.format)(startDate, dateFormat), endDate && " - " + (0, _dateFns.format)(endDate, dateFormat));
|
|
@@ -214,7 +235,8 @@ function Datepicker(_ref8) {
|
|
|
214
235
|
}, /*#__PURE__*/_react["default"].createElement(Selector, {
|
|
215
236
|
open: open === 'true',
|
|
216
237
|
disabled: disabled,
|
|
217
|
-
error: error
|
|
238
|
+
error: error,
|
|
239
|
+
inputFilled: inputFilled
|
|
218
240
|
}, renderInput(), /*#__PURE__*/_react["default"].createElement(TButton, {
|
|
219
241
|
onClick: function onClick() {
|
|
220
242
|
if (!disabled) {
|
|
@@ -232,12 +254,14 @@ function Datepicker(_ref8) {
|
|
|
232
254
|
onBlur: onBlur
|
|
233
255
|
}, /*#__PURE__*/_react["default"].createElement(_Calendar["default"], {
|
|
234
256
|
type: type,
|
|
235
|
-
startDate:
|
|
236
|
-
endDate:
|
|
257
|
+
startDate: startDateLocal,
|
|
258
|
+
endDate: endDateLocal,
|
|
237
259
|
onSelectSingle: onDateSingleSelect,
|
|
238
260
|
onSelectRange: onDateRangeSelect,
|
|
239
261
|
disablePastDates: disablePastDates,
|
|
240
|
-
disableFutureDates: disableFutureDates
|
|
262
|
+
disableFutureDates: disableFutureDates,
|
|
263
|
+
disablePastFrom: disablePastFrom,
|
|
264
|
+
disableFutureFrom: disableFutureFrom
|
|
241
265
|
})));
|
|
242
266
|
}
|
|
243
267
|
|
|
@@ -250,10 +274,14 @@ Datepicker.propTypes = {
|
|
|
250
274
|
disabled: _propTypes.bool,
|
|
251
275
|
onSelectSingle: _propTypes.func,
|
|
252
276
|
onSelectRange: _propTypes.func,
|
|
277
|
+
customOnSelectRange: _propTypes.func,
|
|
253
278
|
disablePastDates: _propTypes.bool,
|
|
254
279
|
disableFutureDates: _propTypes.bool,
|
|
280
|
+
disablePastFrom: (0, _propTypes.instanceOf)(Date),
|
|
281
|
+
disableFutureFrom: (0, _propTypes.instanceOf)(Date),
|
|
255
282
|
error: _propTypes.string,
|
|
256
|
-
onOpen: _propTypes.func
|
|
283
|
+
onOpen: _propTypes.func,
|
|
284
|
+
displayEndDateOnly: _propTypes.bool
|
|
257
285
|
};
|
|
258
286
|
Datepicker.defaultProps = {
|
|
259
287
|
fullWidth: false,
|
|
@@ -263,10 +291,14 @@ Datepicker.defaultProps = {
|
|
|
263
291
|
disabled: false,
|
|
264
292
|
onSelectSingle: undefined,
|
|
265
293
|
onSelectRange: undefined,
|
|
294
|
+
customOnSelectRange: undefined,
|
|
266
295
|
disablePastDates: false,
|
|
267
296
|
disableFutureDates: false,
|
|
297
|
+
disablePastFrom: undefined,
|
|
298
|
+
disableFutureFrom: undefined,
|
|
268
299
|
error: undefined,
|
|
269
|
-
onOpen: undefined
|
|
300
|
+
onOpen: undefined,
|
|
301
|
+
displayEndDateOnly: false
|
|
270
302
|
};
|
|
271
303
|
var _default = Datepicker;
|
|
272
304
|
exports["default"] = _default;
|
|
@@ -30,8 +30,7 @@ describe('<Datepicker />', function () {
|
|
|
30
30
|
expect(container).toMatchSnapshot();
|
|
31
31
|
});
|
|
32
32
|
it('should match with default selected date single Datepicker', function () {
|
|
33
|
-
|
|
34
|
-
jest.useFakeTimers('modern').setSystemTime(mockedDate);
|
|
33
|
+
jest.useFakeTimers('modern').setSystemTime(testDate);
|
|
35
34
|
|
|
36
35
|
var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_.ThemeProvider, null, /*#__PURE__*/_react["default"].createElement(_.Datepicker, {
|
|
37
36
|
type: "single",
|
|
@@ -42,8 +41,7 @@ describe('<Datepicker />', function () {
|
|
|
42
41
|
expect(container).toMatchSnapshot();
|
|
43
42
|
});
|
|
44
43
|
it('should match with default selected dates range Datepicker', function () {
|
|
45
|
-
|
|
46
|
-
jest.useFakeTimers('modern').setSystemTime(mockedDate);
|
|
44
|
+
jest.useFakeTimers('modern').setSystemTime(testDate);
|
|
47
45
|
var endDate = new Date();
|
|
48
46
|
endDate.setDate(testDate.getDate() + 15);
|
|
49
47
|
|
|
@@ -110,7 +108,7 @@ describe('<Datepicker />', function () {
|
|
|
110
108
|
type: "single",
|
|
111
109
|
onSelectSingle: onSelectSingle
|
|
112
110
|
})));
|
|
113
|
-
expect(onSelectSingle).
|
|
111
|
+
expect(onSelectSingle).not.toHaveBeenCalled();
|
|
114
112
|
|
|
115
113
|
_react2.fireEvent.click(_react2.screen.getByRole('button'));
|
|
116
114
|
|
|
@@ -118,7 +116,7 @@ describe('<Datepicker />', function () {
|
|
|
118
116
|
|
|
119
117
|
_react2.fireEvent.click(day10);
|
|
120
118
|
|
|
121
|
-
expect(onSelectSingle).toHaveBeenCalledTimes(
|
|
119
|
+
expect(onSelectSingle).toHaveBeenCalledTimes(1);
|
|
122
120
|
});
|
|
123
121
|
it('should call onSelectRange function on range Datepicker', function () {
|
|
124
122
|
var onSelectRange = jest.fn();
|
|
@@ -126,7 +124,7 @@ describe('<Datepicker />', function () {
|
|
|
126
124
|
type: "range",
|
|
127
125
|
onSelectRange: onSelectRange
|
|
128
126
|
})));
|
|
129
|
-
expect(onSelectRange).
|
|
127
|
+
expect(onSelectRange).not.toHaveBeenCalled();
|
|
130
128
|
|
|
131
129
|
_react2.fireEvent.click(_react2.screen.getByRole('button'));
|
|
132
130
|
|
|
@@ -136,11 +134,33 @@ describe('<Datepicker />', function () {
|
|
|
136
134
|
|
|
137
135
|
_react2.fireEvent.click(day10);
|
|
138
136
|
|
|
137
|
+
expect(onSelectRange).toHaveBeenCalledTimes(1);
|
|
138
|
+
|
|
139
|
+
_react2.fireEvent.click(day20);
|
|
140
|
+
|
|
139
141
|
expect(onSelectRange).toHaveBeenCalledTimes(2);
|
|
142
|
+
});
|
|
143
|
+
it('should call onCustomSelectRange function on range Datepicker', function () {
|
|
144
|
+
var onCustomSelectRange = jest.fn();
|
|
145
|
+
(0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_.ThemeProvider, null, /*#__PURE__*/_react["default"].createElement(_.Datepicker, {
|
|
146
|
+
type: "range",
|
|
147
|
+
onSelectRange: onCustomSelectRange
|
|
148
|
+
})));
|
|
149
|
+
expect(onCustomSelectRange).not.toHaveBeenCalled();
|
|
150
|
+
|
|
151
|
+
_react2.fireEvent.click(_react2.screen.getByRole('button'));
|
|
152
|
+
|
|
153
|
+
var day10 = _react2.screen.queryAllByText('10')[0];
|
|
154
|
+
|
|
155
|
+
var day20 = _react2.screen.queryAllByText('20')[0];
|
|
156
|
+
|
|
157
|
+
_react2.fireEvent.click(day10);
|
|
158
|
+
|
|
159
|
+
expect(onCustomSelectRange).toHaveBeenCalledTimes(1);
|
|
140
160
|
|
|
141
161
|
_react2.fireEvent.click(day20);
|
|
142
162
|
|
|
143
|
-
expect(
|
|
163
|
+
expect(onCustomSelectRange).toHaveBeenCalledTimes(2);
|
|
144
164
|
});
|
|
145
165
|
it('should display default date on single Datepicker', function () {
|
|
146
166
|
var currentDate = new Date();
|
|
@@ -210,6 +230,36 @@ describe('<Datepicker />', function () {
|
|
|
210
230
|
return expect(_react2.screen.getAllByText("" + (i + 1))[0].closest('div')).toHaveAttribute('disabled');
|
|
211
231
|
});
|
|
212
232
|
});
|
|
233
|
+
it('should disable past dates from specific date', function () {
|
|
234
|
+
jest.useFakeTimers('modern').setSystemTime(testDate);
|
|
235
|
+
var date = new Date();
|
|
236
|
+
date.setDate(testDate.getDate() + 15);
|
|
237
|
+
(0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_.ThemeProvider, null, /*#__PURE__*/_react["default"].createElement(_.Datepicker, {
|
|
238
|
+
type: "single",
|
|
239
|
+
disablePastFrom: date
|
|
240
|
+
})));
|
|
241
|
+
|
|
242
|
+
_react2.fireEvent.click(_react2.screen.getByRole('button'));
|
|
243
|
+
|
|
244
|
+
for (var i = 1; i <= 17; i++) {
|
|
245
|
+
expect(_react2.screen.getAllByText("" + i)[0].closest('div')).toHaveAttribute('disabled');
|
|
246
|
+
}
|
|
247
|
+
});
|
|
248
|
+
it('should disable future dates from specific date', function () {
|
|
249
|
+
jest.useFakeTimers('modern').setSystemTime(testDate);
|
|
250
|
+
var date = new Date();
|
|
251
|
+
date.setDate(testDate.getDate() + 15);
|
|
252
|
+
(0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_.ThemeProvider, null, /*#__PURE__*/_react["default"].createElement(_.Datepicker, {
|
|
253
|
+
type: "single",
|
|
254
|
+
disableFutureFrom: date
|
|
255
|
+
})));
|
|
256
|
+
|
|
257
|
+
_react2.fireEvent.click(_react2.screen.getByRole('button'));
|
|
258
|
+
|
|
259
|
+
for (var i = 19; i <= 31; i++) {
|
|
260
|
+
expect(_react2.screen.getAllByText("" + i)[0].closest('div')).toHaveAttribute('disabled');
|
|
261
|
+
}
|
|
262
|
+
});
|
|
213
263
|
it('should be disabled', function () {
|
|
214
264
|
(0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_.ThemeProvider, null, /*#__PURE__*/_react["default"].createElement(_.Datepicker, {
|
|
215
265
|
type: "single",
|
|
@@ -21,10 +21,10 @@ function ActionRequirement(props) {
|
|
|
21
21
|
return /*#__PURE__*/React.createElement(StyledActionRequirement, props, illustration && /*#__PURE__*/React.createElement(Box, null, illustration), /*#__PURE__*/React.createElement(Title, null, title), /*#__PURE__*/React.createElement(Text, {
|
|
22
22
|
mt: "small",
|
|
23
23
|
color: "deep"
|
|
24
|
-
}, description), /*#__PURE__*/React.createElement(Text, {
|
|
24
|
+
}, description), list && /*#__PURE__*/React.createElement(Text, {
|
|
25
25
|
mt: "small",
|
|
26
26
|
color: "deep"
|
|
27
|
-
},
|
|
27
|
+
}, /*#__PURE__*/React.createElement(Box, {
|
|
28
28
|
mt: "xxxlarge"
|
|
29
29
|
}, list)), checkable && /*#__PURE__*/React.createElement(Box, {
|
|
30
30
|
mt: "xxxlarge"
|
|
@@ -9,9 +9,9 @@ import { media } from '@gympass/yoga-helpers';
|
|
|
9
9
|
import { Actions, Title, PrimaryButton, SecondaryButton } from './ActionRequirementStyles';
|
|
10
10
|
import Text from '../../Text';
|
|
11
11
|
import Box from '../../Box';
|
|
12
|
-
var StyledActionRequirement = styled.div(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["\n display: flex;\n ", "\n ", "\n"])), media.xxs(_templateObject2 || (_templateObject2 = _taggedTemplateLiteralLoose(["\n flex-direction: column;\n "]))), media.lg(_templateObject3 || (_templateObject3 = _taggedTemplateLiteralLoose(["\n flex-direction: row-reverse;\n "]))));
|
|
12
|
+
var StyledActionRequirement = styled.div(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["\n display: flex;\n height: 100%;\n ", "\n ", "\n"])), media.xxs(_templateObject2 || (_templateObject2 = _taggedTemplateLiteralLoose(["\n flex-direction: column;\n "]))), media.lg(_templateObject3 || (_templateObject3 = _taggedTemplateLiteralLoose(["\n flex-direction: row-reverse;\n "]))));
|
|
13
13
|
var Content = styled.div(_templateObject4 || (_templateObject4 = _taggedTemplateLiteralLoose(["\n display: flex;\n flex-direction: column;\n justify-content: center;\n\n ", "\n\n ", "\n"])), media.xxs(_templateObject5 || (_templateObject5 = _taggedTemplateLiteralLoose(["\n width: auto;\n margin-right: 0;\n "]))), media.lg(_templateObject6 || (_templateObject6 = _taggedTemplateLiteralLoose(["\n width: 520px;\n margin-right: 120px;\n "]))));
|
|
14
|
-
var BoxIllustration = styled(Box)(_templateObject7 || (_templateObject7 = _taggedTemplateLiteralLoose(["\n
|
|
14
|
+
var BoxIllustration = styled(Box)(_templateObject7 || (_templateObject7 = _taggedTemplateLiteralLoose(["\n flex-grow: 1;\n display: flex;\n justify-content: center;\n align-items: center;\n"])));
|
|
15
15
|
|
|
16
16
|
function isChildFromComponent(child, component) {
|
|
17
17
|
return child.type.displayName === component.displayName;
|
|
@@ -38,10 +38,10 @@ function ActionRequirement(props) {
|
|
|
38
38
|
return /*#__PURE__*/React.createElement(StyledActionRequirement, props, illustration && /*#__PURE__*/React.createElement(BoxIllustration, null, illustration), /*#__PURE__*/React.createElement(Content, null, /*#__PURE__*/React.createElement(Title, null, title), /*#__PURE__*/React.createElement(Text, {
|
|
39
39
|
mt: "small",
|
|
40
40
|
color: "deep"
|
|
41
|
-
}, description), /*#__PURE__*/React.createElement(Text, {
|
|
41
|
+
}, description), list && /*#__PURE__*/React.createElement(Text, {
|
|
42
42
|
mt: "large",
|
|
43
43
|
color: "deep"
|
|
44
|
-
},
|
|
44
|
+
}, /*#__PURE__*/React.createElement(Box, null, list)), checkable && /*#__PURE__*/React.createElement(Box, {
|
|
45
45
|
mt: "xxlarge"
|
|
46
46
|
}, checkable), /*#__PURE__*/React.createElement(Actions, {
|
|
47
47
|
mt: "xlarge"
|
|
@@ -1,12 +1,31 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { render } from '@testing-library/react';
|
|
3
|
-
import {
|
|
3
|
+
import { Text } from '@gympass/yoga';
|
|
4
|
+
import { Dumbbell, User, Star } from '@gympass/yoga-icons';
|
|
4
5
|
import ActionRequirement from './ActionRequirement';
|
|
6
|
+
import { ThemeProvider } from '../..';
|
|
7
|
+
|
|
8
|
+
function handleGetList() {
|
|
9
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Text, null, /*#__PURE__*/React.createElement(Dumbbell, null), " 1x/day standard access"), /*#__PURE__*/React.createElement(Text, {
|
|
10
|
+
mt: "small"
|
|
11
|
+
}, /*#__PURE__*/React.createElement(User, null), " 4x/month 1-on-1 sessions"), /*#__PURE__*/React.createElement(Text, {
|
|
12
|
+
mt: "small"
|
|
13
|
+
}, /*#__PURE__*/React.createElement(Star, null), " 2x/month premium classes"));
|
|
14
|
+
}
|
|
15
|
+
|
|
5
16
|
describe('<ActionRequirement />', function () {
|
|
6
|
-
it('should match snapshot', function () {
|
|
17
|
+
it('should default match snapshot', function () {
|
|
7
18
|
var _render = render( /*#__PURE__*/React.createElement(ThemeProvider, null, /*#__PURE__*/React.createElement(ActionRequirement, null))),
|
|
8
19
|
container = _render.container;
|
|
9
20
|
|
|
10
21
|
expect(container).toMatchSnapshot();
|
|
11
22
|
});
|
|
23
|
+
it('should match snapshot with list', function () {
|
|
24
|
+
var _render2 = render( /*#__PURE__*/React.createElement(ThemeProvider, null, /*#__PURE__*/React.createElement(ActionRequirement, {
|
|
25
|
+
list: handleGetList()
|
|
26
|
+
}))),
|
|
27
|
+
container = _render2.container;
|
|
28
|
+
|
|
29
|
+
expect(container).toMatchSnapshot();
|
|
30
|
+
});
|
|
12
31
|
});
|
|
@@ -78,7 +78,7 @@ var DayField = styled.div(_templateObject4 || (_templateObject4 = _taggedTemplat
|
|
|
78
78
|
radii = _ref4$theme$yoga.radii,
|
|
79
79
|
spacing = _ref4$theme$yoga.spacing,
|
|
80
80
|
datepicker = _ref4$theme$yoga.components.datepicker;
|
|
81
|
-
return "\n p {\n color: " + getDayFieldColor(selected, disabled, colors, aux) + ";\n z-index: 1;\n }\n width: " + datepicker.width.day + "px;\n height: " + datepicker.width.day + "px;\n padding: " + spacing.zero + "px 21.3px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: " + (inRange ? colors.clear : colors.white) + ";\n position: relative;\n cursor: pointer;\n " + (selected && inRange ? "border-radius: " + getDayFieldRadius(aux, radii) : "") + "\n " + (selected && !disabled ? "&:before {\n content: '';\n position: absolute;\n background: " + colors.vibin + ";\n width: " + datepicker.width.day + "px;\n height: " + datepicker.width.day + "px;\n border-radius: " + radii.circle + "px;\n }" : "") + "\n " + (!disabled ? "&:hover {\n &:before {\n content: '';\n position: absolute;\n border: 1px solid " + colors.secondary + ";\n width: " + datepicker.width.day + "px;\n height: " + datepicker.width.day + "px;\n border-radius: " + radii.circle + "px;\n }\n }" : "") + "\n";
|
|
81
|
+
return "\n p {\n color: " + getDayFieldColor(selected, disabled, colors, aux) + ";\n z-index: 1;\n }\n width: " + datepicker.width.day + "px;\n height: " + datepicker.width.day + "px;\n padding: " + spacing.zero + "px 21.3px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: " + (inRange ? colors.clear : colors.white) + ";\n position: relative;\n cursor: pointer;\n " + (selected && inRange ? "border-radius: " + getDayFieldRadius(aux, radii) + ";" : "") + "\n " + (selected && !disabled ? "&:before {\n content: '';\n position: absolute;\n background: " + colors.vibin + ";\n width: " + datepicker.width.day + "px;\n height: " + datepicker.width.day + "px;\n border-radius: " + radii.circle + "px;\n };" : "") + "\n " + (!disabled ? "&:hover {\n &:before {\n content: '';\n position: absolute;\n border: 1px solid " + colors.secondary + ";\n width: " + datepicker.width.day + "px;\n height: " + datepicker.width.day + "px;\n border-radius: " + radii.circle + "px;\n }\n };" : "") + "\n";
|
|
82
82
|
});
|
|
83
83
|
var Row = styled.div(_templateObject5 || (_templateObject5 = _taggedTemplateLiteralLoose(["\n ", "\n"])), function (_ref5) {
|
|
84
84
|
var _ref5$theme$yoga = _ref5.theme.yoga,
|
|
@@ -94,7 +94,9 @@ function Calendar(_ref6) {
|
|
|
94
94
|
onSelectSingle = _ref6.onSelectSingle,
|
|
95
95
|
onSelectRange = _ref6.onSelectRange,
|
|
96
96
|
disablePastDates = _ref6.disablePastDates,
|
|
97
|
-
disableFutureDates = _ref6.disableFutureDates
|
|
97
|
+
disableFutureDates = _ref6.disableFutureDates,
|
|
98
|
+
disablePastFrom = _ref6.disablePastFrom,
|
|
99
|
+
disableFutureFrom = _ref6.disableFutureFrom;
|
|
98
100
|
|
|
99
101
|
var _useState = useState(new Date().getUTCMonth()),
|
|
100
102
|
month = _useState[0],
|
|
@@ -105,11 +107,14 @@ function Calendar(_ref6) {
|
|
|
105
107
|
setYear = _useState2[1];
|
|
106
108
|
|
|
107
109
|
useEffect(function () {
|
|
108
|
-
if (
|
|
110
|
+
if (endDate) {
|
|
111
|
+
setMonth(endDate.getUTCMonth());
|
|
112
|
+
setYear(endDate.getUTCFullYear());
|
|
113
|
+
} else if (startDate) {
|
|
109
114
|
setMonth(startDate.getUTCMonth());
|
|
110
115
|
setYear(startDate.getUTCFullYear());
|
|
111
116
|
}
|
|
112
|
-
}, [startDate]);
|
|
117
|
+
}, [startDate, endDate]);
|
|
113
118
|
|
|
114
119
|
var getDayOfWeek = function getDayOfWeek(day) {
|
|
115
120
|
return new Date(Date.UTC(year, month, day)).getUTCDay();
|
|
@@ -139,8 +144,8 @@ function Calendar(_ref6) {
|
|
|
139
144
|
var local = new Date(Date.UTC(year, month, day));
|
|
140
145
|
var now = new Date();
|
|
141
146
|
var nowUTC = Date.UTC(now.getFullYear(), now.getMonth(), now.getDate());
|
|
142
|
-
var pastDatesDisabled = disablePastDates && local.getTime() < nowUTC;
|
|
143
|
-
var futureDateDisabled = disableFutureDates && local.getTime() > nowUTC;
|
|
147
|
+
var pastDatesDisabled = disablePastDates && local.getTime() < nowUTC || disablePastFrom && local.getTime() < new Date(Date.UTC(disablePastFrom.getFullYear(), disablePastFrom.getMonth(), disablePastFrom.getDate()));
|
|
148
|
+
var futureDateDisabled = disableFutureDates && local.getTime() > nowUTC || disableFutureFrom && local.getTime() > new Date(Date.UTC(disableFutureFrom.getFullYear(), disableFutureFrom.getMonth(), disableFutureFrom.getDate()));
|
|
144
149
|
return pastDatesDisabled || futureDateDisabled;
|
|
145
150
|
};
|
|
146
151
|
|
|
@@ -321,7 +326,9 @@ Calendar.propTypes = {
|
|
|
321
326
|
onSelectSingle: func,
|
|
322
327
|
onSelectRange: func,
|
|
323
328
|
disablePastDates: bool,
|
|
324
|
-
disableFutureDates: bool
|
|
329
|
+
disableFutureDates: bool,
|
|
330
|
+
disablePastFrom: instanceOf(Date),
|
|
331
|
+
disableFutureFrom: instanceOf(Date)
|
|
325
332
|
};
|
|
326
333
|
Calendar.defaultProps = {
|
|
327
334
|
startDate: undefined,
|
|
@@ -329,6 +336,8 @@ Calendar.defaultProps = {
|
|
|
329
336
|
onSelectSingle: null,
|
|
330
337
|
onSelectRange: null,
|
|
331
338
|
disablePastDates: false,
|
|
332
|
-
disableFutureDates: false
|
|
339
|
+
disableFutureDates: false,
|
|
340
|
+
disablePastFrom: undefined,
|
|
341
|
+
disableFutureFrom: undefined
|
|
333
342
|
};
|
|
334
343
|
export default Calendar;
|
|
@@ -21,7 +21,7 @@ var Wrapper = styled.div(_templateObject || (_templateObject = _taggedTemplateLi
|
|
|
21
21
|
return props.fullWidth ? '100%' : css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteralLoose(["\n ", "px\n "])), theme.components.input.width);
|
|
22
22
|
});
|
|
23
23
|
|
|
24
|
-
var getSelectorBorderColor = function getSelectorBorderColor(open, error, disabled,
|
|
24
|
+
var getSelectorBorderColor = function getSelectorBorderColor(open, error, disabled, inputFilled, colors) {
|
|
25
25
|
if (error) {
|
|
26
26
|
return colors.feedback.attention[1];
|
|
27
27
|
}
|
|
@@ -30,22 +30,23 @@ var getSelectorBorderColor = function getSelectorBorderColor(open, error, disabl
|
|
|
30
30
|
return colors.elements.backgroundAndDisabled;
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
-
if (open) {
|
|
34
|
-
return colors.
|
|
33
|
+
if (open || inputFilled) {
|
|
34
|
+
return colors.secondary;
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
-
return
|
|
37
|
+
return colors.elements.lineAndBorders;
|
|
38
38
|
};
|
|
39
39
|
|
|
40
40
|
var Selector = styled.div(_templateObject3 || (_templateObject3 = _taggedTemplateLiteralLoose(["\n ", "\n"])), function (_ref) {
|
|
41
41
|
var open = _ref.open,
|
|
42
42
|
error = _ref.error,
|
|
43
43
|
disabled = _ref.disabled,
|
|
44
|
+
inputFilled = _ref.inputFilled,
|
|
44
45
|
_ref$theme$yoga = _ref.theme.yoga,
|
|
45
46
|
components = _ref$theme$yoga.components,
|
|
46
47
|
colors = _ref$theme$yoga.colors,
|
|
47
48
|
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,
|
|
49
|
+
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, inputFilled, colors) + ";\n &:hover {\n border-color: " + colors.secondary + ";\n }\n ";
|
|
49
50
|
});
|
|
50
51
|
var Input = styled(Text.Small)(_templateObject4 || (_templateObject4 = _taggedTemplateLiteralLoose(["\n ", "\n"])), function (_ref2) {
|
|
51
52
|
var disabled = _ref2.disabled,
|
|
@@ -100,27 +101,31 @@ function Datepicker(_ref8) {
|
|
|
100
101
|
var fullWidth = _ref8.fullWidth,
|
|
101
102
|
type = _ref8.type,
|
|
102
103
|
placeholder = _ref8.placeholder,
|
|
103
|
-
|
|
104
|
-
|
|
104
|
+
startDate = _ref8.startDate,
|
|
105
|
+
endDate = _ref8.endDate,
|
|
105
106
|
onSelectSingle = _ref8.onSelectSingle,
|
|
106
107
|
disabled = _ref8.disabled,
|
|
107
108
|
onSelectRange = _ref8.onSelectRange,
|
|
109
|
+
customOnSelectRange = _ref8.customOnSelectRange,
|
|
108
110
|
disablePastDates = _ref8.disablePastDates,
|
|
109
111
|
disableFutureDates = _ref8.disableFutureDates,
|
|
112
|
+
disablePastFrom = _ref8.disablePastFrom,
|
|
113
|
+
disableFutureFrom = _ref8.disableFutureFrom,
|
|
110
114
|
error = _ref8.error,
|
|
111
|
-
onOpen = _ref8.onOpen
|
|
115
|
+
onOpen = _ref8.onOpen,
|
|
116
|
+
displayEndDateOnly = _ref8.displayEndDateOnly;
|
|
112
117
|
|
|
113
118
|
var _useState = useState(),
|
|
114
119
|
open = _useState[0],
|
|
115
120
|
setOpen = _useState[1];
|
|
116
121
|
|
|
117
|
-
var _useState2 = useState(
|
|
118
|
-
|
|
119
|
-
|
|
122
|
+
var _useState2 = useState(startDate),
|
|
123
|
+
startDateLocal = _useState2[0],
|
|
124
|
+
setStartDateLocal = _useState2[1];
|
|
120
125
|
|
|
121
|
-
var _useState3 = useState(
|
|
122
|
-
|
|
123
|
-
|
|
126
|
+
var _useState3 = useState(endDate),
|
|
127
|
+
endDateLocal = _useState3[0],
|
|
128
|
+
setEndDateLocal = _useState3[1];
|
|
124
129
|
|
|
125
130
|
var ref = useRef(null);
|
|
126
131
|
|
|
@@ -138,18 +143,23 @@ function Datepicker(_ref8) {
|
|
|
138
143
|
};
|
|
139
144
|
|
|
140
145
|
useEffect(function () {
|
|
141
|
-
|
|
142
|
-
|
|
146
|
+
setInputFilled(startDate || endDate);
|
|
147
|
+
}, [startDate, endDate]);
|
|
148
|
+
useEffect(function () {
|
|
149
|
+
setInputFilled(startDate || endDate);
|
|
150
|
+
setStartDateLocal(startDate);
|
|
151
|
+
setEndDateLocal(endDate);
|
|
152
|
+
|
|
153
|
+
if (type === 'single' && startDate) {
|
|
143
154
|
setOpen(false.toString());
|
|
144
|
-
} else if (type === 'range' && onSelectRange) {
|
|
145
|
-
onSelectRange(startDate, endDate);
|
|
146
155
|
}
|
|
147
156
|
|
|
148
|
-
|
|
149
|
-
|
|
157
|
+
if ((startDate || endDate) && onSelectRange) onSelectRange(startDate, endDate);
|
|
158
|
+
if (displayEndDateOnly && !endDate) setInputFilled(false);
|
|
159
|
+
}, [startDate, endDate, type]);
|
|
150
160
|
|
|
151
161
|
var onDateSingleSelect = function onDateSingleSelect(startLocal) {
|
|
152
|
-
|
|
162
|
+
onSelectSingle(startLocal);
|
|
153
163
|
};
|
|
154
164
|
|
|
155
165
|
useEffect(function () {
|
|
@@ -157,27 +167,38 @@ function Datepicker(_ref8) {
|
|
|
157
167
|
}, [open]);
|
|
158
168
|
|
|
159
169
|
var onDateRangeSelect = function onDateRangeSelect(selectedDate) {
|
|
160
|
-
if (
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
170
|
+
if (customOnSelectRange) {
|
|
171
|
+
customOnSelectRange(selectedDate);
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
var onSelectRangeCallback = function onSelectRangeCallback(start, end) {
|
|
176
|
+
if (onSelectRange) {
|
|
177
|
+
onSelectRange(start, end);
|
|
178
|
+
}
|
|
179
|
+
};
|
|
180
|
+
|
|
181
|
+
if (!startDateLocal || startDateLocal > selectedDate && !endDateLocal || endDateLocal) {
|
|
182
|
+
setStartDateLocal(selectedDate);
|
|
183
|
+
if (endDateLocal) setEndDateLocal(undefined);
|
|
184
|
+
onSelectRangeCallback(selectedDate, undefined);
|
|
167
185
|
} else {
|
|
168
|
-
|
|
169
|
-
|
|
186
|
+
setEndDateLocal(selectedDate);
|
|
187
|
+
onSelectRangeCallback(startDateLocal, selectedDate);
|
|
170
188
|
}
|
|
171
189
|
};
|
|
172
190
|
|
|
173
191
|
var renderInput = function renderInput() {
|
|
174
|
-
if (!startDate && !endDate) {
|
|
192
|
+
if (!startDate && !endDate || displayEndDateOnly && !endDate) {
|
|
175
193
|
return /*#__PURE__*/React.createElement(InputPlaceholder, {
|
|
176
194
|
disabled: disabled
|
|
177
195
|
}, placeholder != null ? placeholder : "Select Date");
|
|
178
196
|
}
|
|
179
197
|
|
|
180
198
|
var dateFormat = 'MMM d, yyyy';
|
|
199
|
+
if (displayEndDateOnly) return /*#__PURE__*/React.createElement(Input, {
|
|
200
|
+
disabled: disabled
|
|
201
|
+
}, endDate && format(endDate, dateFormat));
|
|
181
202
|
return startDate && /*#__PURE__*/React.createElement(Input, {
|
|
182
203
|
disabled: disabled
|
|
183
204
|
}, format(startDate, dateFormat), endDate && " - " + format(endDate, dateFormat));
|
|
@@ -189,7 +210,8 @@ function Datepicker(_ref8) {
|
|
|
189
210
|
}, /*#__PURE__*/React.createElement(Selector, {
|
|
190
211
|
open: open === 'true',
|
|
191
212
|
disabled: disabled,
|
|
192
|
-
error: error
|
|
213
|
+
error: error,
|
|
214
|
+
inputFilled: inputFilled
|
|
193
215
|
}, renderInput(), /*#__PURE__*/React.createElement(TButton, {
|
|
194
216
|
onClick: function onClick() {
|
|
195
217
|
if (!disabled) {
|
|
@@ -207,12 +229,14 @@ function Datepicker(_ref8) {
|
|
|
207
229
|
onBlur: onBlur
|
|
208
230
|
}, /*#__PURE__*/React.createElement(Calendar, {
|
|
209
231
|
type: type,
|
|
210
|
-
startDate:
|
|
211
|
-
endDate:
|
|
232
|
+
startDate: startDateLocal,
|
|
233
|
+
endDate: endDateLocal,
|
|
212
234
|
onSelectSingle: onDateSingleSelect,
|
|
213
235
|
onSelectRange: onDateRangeSelect,
|
|
214
236
|
disablePastDates: disablePastDates,
|
|
215
|
-
disableFutureDates: disableFutureDates
|
|
237
|
+
disableFutureDates: disableFutureDates,
|
|
238
|
+
disablePastFrom: disablePastFrom,
|
|
239
|
+
disableFutureFrom: disableFutureFrom
|
|
216
240
|
})));
|
|
217
241
|
}
|
|
218
242
|
|
|
@@ -225,10 +249,14 @@ Datepicker.propTypes = {
|
|
|
225
249
|
disabled: bool,
|
|
226
250
|
onSelectSingle: func,
|
|
227
251
|
onSelectRange: func,
|
|
252
|
+
customOnSelectRange: func,
|
|
228
253
|
disablePastDates: bool,
|
|
229
254
|
disableFutureDates: bool,
|
|
255
|
+
disablePastFrom: instanceOf(Date),
|
|
256
|
+
disableFutureFrom: instanceOf(Date),
|
|
230
257
|
error: string,
|
|
231
|
-
onOpen: func
|
|
258
|
+
onOpen: func,
|
|
259
|
+
displayEndDateOnly: bool
|
|
232
260
|
};
|
|
233
261
|
Datepicker.defaultProps = {
|
|
234
262
|
fullWidth: false,
|
|
@@ -238,9 +266,13 @@ Datepicker.defaultProps = {
|
|
|
238
266
|
disabled: false,
|
|
239
267
|
onSelectSingle: undefined,
|
|
240
268
|
onSelectRange: undefined,
|
|
269
|
+
customOnSelectRange: undefined,
|
|
241
270
|
disablePastDates: false,
|
|
242
271
|
disableFutureDates: false,
|
|
272
|
+
disablePastFrom: undefined,
|
|
273
|
+
disableFutureFrom: undefined,
|
|
243
274
|
error: undefined,
|
|
244
|
-
onOpen: undefined
|
|
275
|
+
onOpen: undefined,
|
|
276
|
+
displayEndDateOnly: false
|
|
245
277
|
};
|
|
246
278
|
export default Datepicker;
|
|
@@ -22,8 +22,7 @@ describe('<Datepicker />', function () {
|
|
|
22
22
|
expect(container).toMatchSnapshot();
|
|
23
23
|
});
|
|
24
24
|
it('should match with default selected date single Datepicker', function () {
|
|
25
|
-
|
|
26
|
-
jest.useFakeTimers('modern').setSystemTime(mockedDate);
|
|
25
|
+
jest.useFakeTimers('modern').setSystemTime(testDate);
|
|
27
26
|
|
|
28
27
|
var _render3 = render( /*#__PURE__*/React.createElement(ThemeProvider, null, /*#__PURE__*/React.createElement(Datepicker, {
|
|
29
28
|
type: "single",
|
|
@@ -34,8 +33,7 @@ describe('<Datepicker />', function () {
|
|
|
34
33
|
expect(container).toMatchSnapshot();
|
|
35
34
|
});
|
|
36
35
|
it('should match with default selected dates range Datepicker', function () {
|
|
37
|
-
|
|
38
|
-
jest.useFakeTimers('modern').setSystemTime(mockedDate);
|
|
36
|
+
jest.useFakeTimers('modern').setSystemTime(testDate);
|
|
39
37
|
var endDate = new Date();
|
|
40
38
|
endDate.setDate(testDate.getDate() + 15);
|
|
41
39
|
|
|
@@ -102,11 +100,11 @@ describe('<Datepicker />', function () {
|
|
|
102
100
|
type: "single",
|
|
103
101
|
onSelectSingle: onSelectSingle
|
|
104
102
|
})));
|
|
105
|
-
expect(onSelectSingle).
|
|
103
|
+
expect(onSelectSingle).not.toHaveBeenCalled();
|
|
106
104
|
fireEvent.click(screen.getByRole('button'));
|
|
107
105
|
var day10 = screen.queryAllByText('10')[0];
|
|
108
106
|
fireEvent.click(day10);
|
|
109
|
-
expect(onSelectSingle).toHaveBeenCalledTimes(
|
|
107
|
+
expect(onSelectSingle).toHaveBeenCalledTimes(1);
|
|
110
108
|
});
|
|
111
109
|
it('should call onSelectRange function on range Datepicker', function () {
|
|
112
110
|
var onSelectRange = jest.fn();
|
|
@@ -114,14 +112,29 @@ describe('<Datepicker />', function () {
|
|
|
114
112
|
type: "range",
|
|
115
113
|
onSelectRange: onSelectRange
|
|
116
114
|
})));
|
|
117
|
-
expect(onSelectRange).
|
|
115
|
+
expect(onSelectRange).not.toHaveBeenCalled();
|
|
118
116
|
fireEvent.click(screen.getByRole('button'));
|
|
119
117
|
var day10 = screen.queryAllByText('10')[0];
|
|
120
118
|
var day20 = screen.queryAllByText('20')[0];
|
|
121
119
|
fireEvent.click(day10);
|
|
120
|
+
expect(onSelectRange).toHaveBeenCalledTimes(1);
|
|
121
|
+
fireEvent.click(day20);
|
|
122
122
|
expect(onSelectRange).toHaveBeenCalledTimes(2);
|
|
123
|
+
});
|
|
124
|
+
it('should call onCustomSelectRange function on range Datepicker', function () {
|
|
125
|
+
var onCustomSelectRange = jest.fn();
|
|
126
|
+
render( /*#__PURE__*/React.createElement(ThemeProvider, null, /*#__PURE__*/React.createElement(Datepicker, {
|
|
127
|
+
type: "range",
|
|
128
|
+
onSelectRange: onCustomSelectRange
|
|
129
|
+
})));
|
|
130
|
+
expect(onCustomSelectRange).not.toHaveBeenCalled();
|
|
131
|
+
fireEvent.click(screen.getByRole('button'));
|
|
132
|
+
var day10 = screen.queryAllByText('10')[0];
|
|
133
|
+
var day20 = screen.queryAllByText('20')[0];
|
|
134
|
+
fireEvent.click(day10);
|
|
135
|
+
expect(onCustomSelectRange).toHaveBeenCalledTimes(1);
|
|
123
136
|
fireEvent.click(day20);
|
|
124
|
-
expect(
|
|
137
|
+
expect(onCustomSelectRange).toHaveBeenCalledTimes(2);
|
|
125
138
|
});
|
|
126
139
|
it('should display default date on single Datepicker', function () {
|
|
127
140
|
var currentDate = new Date();
|
|
@@ -183,6 +196,34 @@ describe('<Datepicker />', function () {
|
|
|
183
196
|
return expect(screen.getAllByText("" + (i + 1))[0].closest('div')).toHaveAttribute('disabled');
|
|
184
197
|
});
|
|
185
198
|
});
|
|
199
|
+
it('should disable past dates from specific date', function () {
|
|
200
|
+
jest.useFakeTimers('modern').setSystemTime(testDate);
|
|
201
|
+
var date = new Date();
|
|
202
|
+
date.setDate(testDate.getDate() + 15);
|
|
203
|
+
render( /*#__PURE__*/React.createElement(ThemeProvider, null, /*#__PURE__*/React.createElement(Datepicker, {
|
|
204
|
+
type: "single",
|
|
205
|
+
disablePastFrom: date
|
|
206
|
+
})));
|
|
207
|
+
fireEvent.click(screen.getByRole('button'));
|
|
208
|
+
|
|
209
|
+
for (var i = 1; i <= 17; i++) {
|
|
210
|
+
expect(screen.getAllByText("" + i)[0].closest('div')).toHaveAttribute('disabled');
|
|
211
|
+
}
|
|
212
|
+
});
|
|
213
|
+
it('should disable future dates from specific date', function () {
|
|
214
|
+
jest.useFakeTimers('modern').setSystemTime(testDate);
|
|
215
|
+
var date = new Date();
|
|
216
|
+
date.setDate(testDate.getDate() + 15);
|
|
217
|
+
render( /*#__PURE__*/React.createElement(ThemeProvider, null, /*#__PURE__*/React.createElement(Datepicker, {
|
|
218
|
+
type: "single",
|
|
219
|
+
disableFutureFrom: date
|
|
220
|
+
})));
|
|
221
|
+
fireEvent.click(screen.getByRole('button'));
|
|
222
|
+
|
|
223
|
+
for (var i = 19; i <= 31; i++) {
|
|
224
|
+
expect(screen.getAllByText("" + i)[0].closest('div')).toHaveAttribute('disabled');
|
|
225
|
+
}
|
|
226
|
+
});
|
|
186
227
|
it('should be disabled', function () {
|
|
187
228
|
render( /*#__PURE__*/React.createElement(ThemeProvider, null, /*#__PURE__*/React.createElement(Datepicker, {
|
|
188
229
|
type: "single",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gympass/yoga",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.54.0",
|
|
4
4
|
"description": "Gympass component library",
|
|
5
5
|
"main": "./cjs",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
"react": ">=16",
|
|
53
53
|
"styled-components": "^4.4.0"
|
|
54
54
|
},
|
|
55
|
-
"gitHead": "
|
|
55
|
+
"gitHead": "5ca2f69dd7404186a908a6a69141243ae4242285",
|
|
56
56
|
"module": "./esm",
|
|
57
57
|
"private": false,
|
|
58
58
|
"react-native": "./cjs/index.native.js"
|