@dhis2-ui/calendar 8.8.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/README.md +10 -0
- package/build/cjs/__e2e__/calendarInput.stories.e2e.js +58 -0
- package/build/cjs/calendar/calendar-prop-types.js +24 -0
- package/build/cjs/calendar/calendar-table-cell.js +55 -0
- package/build/cjs/calendar/calendar-table-days-header.js +40 -0
- package/build/cjs/calendar/calendar-table.js +57 -0
- package/build/cjs/calendar/index.js +93 -0
- package/build/cjs/calendar/navigation-container.js +134 -0
- package/build/cjs/calendar-input/index.js +117 -0
- package/build/cjs/features/supports_ethiopic_calendar/supports_ethiopic_calendar.js +39 -0
- package/build/cjs/features/supports_ethiopic_calendar.feature +19 -0
- package/build/cjs/features/supports_gregorian_calendar/supports_gregorian_calendar.js +39 -0
- package/build/cjs/features/supports_gregorian_calendar.feature +19 -0
- package/build/cjs/features/supports_islamic_calendar/supports_islamic_calendar.js +18 -0
- package/build/cjs/features/supports_islamic_calendar.feature +5 -0
- package/build/cjs/features/supports_nepali_calendar/supports_nepali_calendar.js +42 -0
- package/build/cjs/features/supports_nepali_calendar.feature +19 -0
- package/build/cjs/index.js +21 -0
- package/build/cjs/locales/en/translations.json +4 -0
- package/build/cjs/locales/index.js +27 -0
- package/build/cjs/stories/calendar.stories.js +66 -0
- package/build/cjs/stories/calendarInput.stories.js +107 -0
- package/build/cjs/stories/calendarStoryWrapper.js +196 -0
- package/build/es/__e2e__/calendarInput.stories.e2e.js +6 -0
- package/build/es/calendar/calendar-prop-types.js +13 -0
- package/build/es/calendar/calendar-table-cell.js +39 -0
- package/build/es/calendar/calendar-table-days-header.js +25 -0
- package/build/es/calendar/calendar-table.js +40 -0
- package/build/es/calendar/index.js +71 -0
- package/build/es/calendar/navigation-container.js +116 -0
- package/build/es/calendar-input/index.js +95 -0
- package/build/es/features/supports_ethiopic_calendar/supports_ethiopic_calendar.js +36 -0
- package/build/es/features/supports_ethiopic_calendar.feature +19 -0
- package/build/es/features/supports_gregorian_calendar/supports_gregorian_calendar.js +36 -0
- package/build/es/features/supports_gregorian_calendar.feature +19 -0
- package/build/es/features/supports_islamic_calendar/supports_islamic_calendar.js +15 -0
- package/build/es/features/supports_islamic_calendar.feature +5 -0
- package/build/es/features/supports_nepali_calendar/supports_nepali_calendar.js +39 -0
- package/build/es/features/supports_nepali_calendar.feature +19 -0
- package/build/es/index.js +2 -0
- package/build/es/locales/en/translations.json +4 -0
- package/build/es/locales/index.js +13 -0
- package/build/es/stories/calendar.stories.js +44 -0
- package/build/es/stories/calendarInput.stories.js +84 -0
- package/build/es/stories/calendarStoryWrapper.js +176 -0
- package/package.json +53 -0
package/README.md
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
> :warning:
|
2
|
+
> This is currently considered internal, please use `@dhis2/ui`.
|
3
|
+
>
|
4
|
+
> See the [Getting started
|
5
|
+
> guide](https://github.com/dhis2/ui/blob/master/docs/getting-started.md)
|
6
|
+
> for more information.
|
7
|
+
|
8
|
+
ToDo
|
9
|
+
|
10
|
+
For usage instructions see [the documentation for this component](https://ui.dhis2.nu/components/calendar).
|
@@ -0,0 +1,58 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
Object.defineProperty(exports, "EthiopicWithAmharic", {
|
7
|
+
enumerable: true,
|
8
|
+
get: function () {
|
9
|
+
return _calendarInputStories.EthiopicWithAmharic;
|
10
|
+
}
|
11
|
+
});
|
12
|
+
Object.defineProperty(exports, "EthiopicWithEnglish", {
|
13
|
+
enumerable: true,
|
14
|
+
get: function () {
|
15
|
+
return _calendarInputStories.EthiopicWithEnglish;
|
16
|
+
}
|
17
|
+
});
|
18
|
+
Object.defineProperty(exports, "GregorianWithArabic", {
|
19
|
+
enumerable: true,
|
20
|
+
get: function () {
|
21
|
+
return _calendarInputStories.GregorianWithArabic;
|
22
|
+
}
|
23
|
+
});
|
24
|
+
Object.defineProperty(exports, "GregorianWithEnglish", {
|
25
|
+
enumerable: true,
|
26
|
+
get: function () {
|
27
|
+
return _calendarInputStories.GregorianWithEnglish;
|
28
|
+
}
|
29
|
+
});
|
30
|
+
Object.defineProperty(exports, "IslamicWithArabic", {
|
31
|
+
enumerable: true,
|
32
|
+
get: function () {
|
33
|
+
return _calendarInputStories.IslamicWithArabic;
|
34
|
+
}
|
35
|
+
});
|
36
|
+
Object.defineProperty(exports, "NepaliWithEnglish", {
|
37
|
+
enumerable: true,
|
38
|
+
get: function () {
|
39
|
+
return _calendarInputStories.NepaliWithEnglish;
|
40
|
+
}
|
41
|
+
});
|
42
|
+
Object.defineProperty(exports, "NepaliWithNepali", {
|
43
|
+
enumerable: true,
|
44
|
+
get: function () {
|
45
|
+
return _calendarInputStories.NepaliWithNepali;
|
46
|
+
}
|
47
|
+
});
|
48
|
+
exports.default = void 0;
|
49
|
+
|
50
|
+
var _index = require("../index.js");
|
51
|
+
|
52
|
+
var _calendarInputStories = require("../stories/calendarInput.stories.js");
|
53
|
+
|
54
|
+
var _default = {
|
55
|
+
title: 'CalendarInputTesting',
|
56
|
+
component: _index.CalendarInput
|
57
|
+
};
|
58
|
+
exports.default = _default;
|
@@ -0,0 +1,24 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.CalendarProps = void 0;
|
7
|
+
|
8
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
9
|
+
|
10
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
11
|
+
|
12
|
+
const CalendarProps = {
|
13
|
+
calendar: _propTypes.default.any.isRequired,
|
14
|
+
cellSize: _propTypes.default.string,
|
15
|
+
date: _propTypes.default.string,
|
16
|
+
dir: _propTypes.default.oneOf(['ltr', 'rtl']),
|
17
|
+
locale: _propTypes.default.string,
|
18
|
+
numberingSystem: _propTypes.default.string,
|
19
|
+
timeZone: _propTypes.default.string,
|
20
|
+
weekDayFormat: _propTypes.default.string,
|
21
|
+
width: _propTypes.default.string,
|
22
|
+
onDateSelect: _propTypes.default.func
|
23
|
+
};
|
24
|
+
exports.CalendarProps = CalendarProps;
|
@@ -0,0 +1,55 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.CalendarTableCell = void 0;
|
7
|
+
|
8
|
+
var _style = _interopRequireDefault(require("styled-jsx/style"));
|
9
|
+
|
10
|
+
var _uiConstants = require("@dhis2/ui-constants");
|
11
|
+
|
12
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
13
|
+
|
14
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
15
|
+
|
16
|
+
var _react = _interopRequireDefault(require("react"));
|
17
|
+
|
18
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
19
|
+
|
20
|
+
const CalendarTableCell = _ref => {
|
21
|
+
let {
|
22
|
+
day,
|
23
|
+
cellSize
|
24
|
+
} = _ref;
|
25
|
+
const dayHoverBackgroundColor = _uiConstants.colors.grey200;
|
26
|
+
const selectedDayBackgroundColor = _uiConstants.colors.teal700;
|
27
|
+
return /*#__PURE__*/_react.default.createElement("td", {
|
28
|
+
"data-test": day === null || day === void 0 ? void 0 : day.calendarDate,
|
29
|
+
onClick: day.onClick,
|
30
|
+
className: _style.default.dynamic([["86824133", [cellSize, cellSize, cellSize, cellSize, _uiConstants.spacers.dp2, _uiConstants.colors.grey900, dayHoverBackgroundColor, selectedDayBackgroundColor, _uiConstants.colors.grey600]]])
|
31
|
+
}, /*#__PURE__*/_react.default.createElement("button", {
|
32
|
+
name: "day",
|
33
|
+
className: _style.default.dynamic([["86824133", [cellSize, cellSize, cellSize, cellSize, _uiConstants.spacers.dp2, _uiConstants.colors.grey900, dayHoverBackgroundColor, selectedDayBackgroundColor, _uiConstants.colors.grey600]]]) + " " + ((0, _classnames.default)('day', {
|
34
|
+
isSelected: day.isSelected,
|
35
|
+
isToday: day.isToday,
|
36
|
+
otherMonth: !day.isInCurrentMonth
|
37
|
+
}) || "")
|
38
|
+
}, day.label), /*#__PURE__*/_react.default.createElement(_style.default, {
|
39
|
+
id: "86824133",
|
40
|
+
dynamic: [cellSize, cellSize, cellSize, cellSize, _uiConstants.spacers.dp2, _uiConstants.colors.grey900, dayHoverBackgroundColor, selectedDayBackgroundColor, _uiConstants.colors.grey600]
|
41
|
+
}, ["td.__jsx-style-dynamic-selector{width:".concat(cellSize, ";height:100%;height:").concat(cellSize, ";text-align:center;border:2px solid transparent;}"), "td.__jsx-style-dynamic-selector span.__jsx-style-dynamic-selector{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;padding:2px 2px;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;border:2px solid transparent;min-width:16px;}", "button.__jsx-style-dynamic-selector{border:0;overflow:hidden;width:".concat(cellSize, ";height:").concat(cellSize, ";border:2px solid transparent;border-radius:3px;background:none;margin:").concat(_uiConstants.spacers.dp2, ";color:").concat(_uiConstants.colors.grey900, ";}"), "button.__jsx-style-dynamic-selector:hover{background-color:".concat(dayHoverBackgroundColor, ";-webkit-text-decoration:underline;text-decoration:underline;}"), "button.isSelected.__jsx-style-dynamic-selector,button.otherMonth.isSelected.__jsx-style-dynamic-selector{background-color:".concat(selectedDayBackgroundColor, ";color:white;}"), "button.isToday.__jsx-style-dynamic-selector{-webkit-text-decoration:underline;text-decoration:underline;}", "button.otherMonth.__jsx-style-dynamic-selector{color:".concat(_uiConstants.colors.grey600, ";}")]));
|
42
|
+
};
|
43
|
+
|
44
|
+
exports.CalendarTableCell = CalendarTableCell;
|
45
|
+
CalendarTableCell.propTypes = {
|
46
|
+
cellSize: _propTypes.default.string,
|
47
|
+
day: _propTypes.default.shape({
|
48
|
+
calendarDate: _propTypes.default.string,
|
49
|
+
isInCurrentMonth: _propTypes.default.bool,
|
50
|
+
isSelected: _propTypes.default.bool,
|
51
|
+
isToday: _propTypes.default.bool,
|
52
|
+
label: _propTypes.default.string,
|
53
|
+
onClick: _propTypes.default.func
|
54
|
+
})
|
55
|
+
};
|
@@ -0,0 +1,40 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.CalendarTableDaysHeader = void 0;
|
7
|
+
|
8
|
+
var _style = _interopRequireDefault(require("styled-jsx/style"));
|
9
|
+
|
10
|
+
var _uiConstants = require("@dhis2/ui-constants");
|
11
|
+
|
12
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
13
|
+
|
14
|
+
var _react = _interopRequireDefault(require("react"));
|
15
|
+
|
16
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
17
|
+
|
18
|
+
const CalendarTableDaysHeader = _ref => {
|
19
|
+
let {
|
20
|
+
weekDayLabels
|
21
|
+
} = _ref;
|
22
|
+
const dayNamesColor = _uiConstants.colors.grey700;
|
23
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("thead", {
|
24
|
+
className: _style.default.dynamic([["275131861", [dayNamesColor]]])
|
25
|
+
}, /*#__PURE__*/_react.default.createElement("tr", {
|
26
|
+
className: _style.default.dynamic([["275131861", [dayNamesColor]]])
|
27
|
+
}, weekDayLabels.map((label, i) => /*#__PURE__*/_react.default.createElement("th", {
|
28
|
+
scope: "col",
|
29
|
+
key: "weekday-".concat(i),
|
30
|
+
className: _style.default.dynamic([["275131861", [dayNamesColor]]])
|
31
|
+
}, label)))), /*#__PURE__*/_react.default.createElement(_style.default, {
|
32
|
+
id: "275131861",
|
33
|
+
dynamic: [dayNamesColor]
|
34
|
+
}, ["th.__jsx-style-dynamic-selector{color:".concat(dayNamesColor, ";font-weight:300;font-style:normal;padding:8px 8px;background:none;font-size:0.85em;border:none;}"), "tr.__jsx-style-dynamic-selector{border:none;}"]));
|
35
|
+
};
|
36
|
+
|
37
|
+
exports.CalendarTableDaysHeader = CalendarTableDaysHeader;
|
38
|
+
CalendarTableDaysHeader.propTypes = {
|
39
|
+
weekDayLabels: _propTypes.default.arrayOf(_propTypes.default.string)
|
40
|
+
};
|
@@ -0,0 +1,57 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.CalendarTable = void 0;
|
7
|
+
|
8
|
+
var _style = _interopRequireDefault(require("styled-jsx/style"));
|
9
|
+
|
10
|
+
var _uiConstants = require("@dhis2/ui-constants");
|
11
|
+
|
12
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
13
|
+
|
14
|
+
var _react = _interopRequireDefault(require("react"));
|
15
|
+
|
16
|
+
var _calendarTableCell = require("./calendar-table-cell.js");
|
17
|
+
|
18
|
+
var _calendarTableDaysHeader = require("./calendar-table-days-header.js");
|
19
|
+
|
20
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
21
|
+
|
22
|
+
const CalendarTable = _ref => {
|
23
|
+
let {
|
24
|
+
weekDayLabels,
|
25
|
+
calendarWeekDays,
|
26
|
+
width,
|
27
|
+
cellSize
|
28
|
+
} = _ref;
|
29
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
30
|
+
className: _style.default.dynamic([["452536960", [_uiConstants.spacers.dp4, _uiConstants.spacers.dp4]]]) + " " + "calendar-table-wrapper"
|
31
|
+
}, /*#__PURE__*/_react.default.createElement("table", {
|
32
|
+
className: _style.default.dynamic([["452536960", [_uiConstants.spacers.dp4, _uiConstants.spacers.dp4]]]) + " " + "calendar-table"
|
33
|
+
}, /*#__PURE__*/_react.default.createElement(_calendarTableDaysHeader.CalendarTableDaysHeader, {
|
34
|
+
weekDayLabels: weekDayLabels
|
35
|
+
}), /*#__PURE__*/_react.default.createElement("tbody", {
|
36
|
+
className: _style.default.dynamic([["452536960", [_uiConstants.spacers.dp4, _uiConstants.spacers.dp4]]])
|
37
|
+
}, calendarWeekDays.map((week, weekIndex) => /*#__PURE__*/_react.default.createElement("tr", {
|
38
|
+
key: "week-".concat(weekIndex + 1),
|
39
|
+
className: _style.default.dynamic([["452536960", [_uiConstants.spacers.dp4, _uiConstants.spacers.dp4]]])
|
40
|
+
}, week.map(day => /*#__PURE__*/_react.default.createElement(_calendarTableCell.CalendarTableCell, {
|
41
|
+
day: day,
|
42
|
+
key: day === null || day === void 0 ? void 0 : day.calendarDate,
|
43
|
+
cellSize: cellSize,
|
44
|
+
width: width
|
45
|
+
})))))), /*#__PURE__*/_react.default.createElement(_style.default, {
|
46
|
+
id: "452536960",
|
47
|
+
dynamic: [_uiConstants.spacers.dp4, _uiConstants.spacers.dp4]
|
48
|
+
}, [".calendar-table.__jsx-style-dynamic-selector{border:none;border-collapse:collapse;width:100%;margin-block:".concat(_uiConstants.spacers.dp4, ";}"), ".calendar-table.__jsx-style-dynamic-selector tr.__jsx-style-dynamic-selector,.calendar-table.__jsx-style-dynamic-selector td.__jsx-style-dynamic-selector{border:none;}", ".calendar-table-wrapper.__jsx-style-dynamic-selector{padding-inline:".concat(_uiConstants.spacers.dp4, ";}")]));
|
49
|
+
};
|
50
|
+
|
51
|
+
exports.CalendarTable = CalendarTable;
|
52
|
+
CalendarTable.propTypes = {
|
53
|
+
calendarWeekDays: _propTypes.default.arrayOf(_propTypes.default.string),
|
54
|
+
cellSize: _propTypes.default.string,
|
55
|
+
weekDayLabels: _propTypes.default.arrayOf(_propTypes.default.string),
|
56
|
+
width: _propTypes.default.string
|
57
|
+
};
|
@@ -0,0 +1,93 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.Calendar = void 0;
|
7
|
+
|
8
|
+
var _style = _interopRequireDefault(require("styled-jsx/style"));
|
9
|
+
|
10
|
+
var _multiCalendarDates = require("@dhis2/multi-calendar-dates");
|
11
|
+
|
12
|
+
var _uiConstants = require("@dhis2/ui-constants");
|
13
|
+
|
14
|
+
var _react = _interopRequireWildcard(require("react"));
|
15
|
+
|
16
|
+
var _calendarPropTypes = require("./calendar-prop-types.js");
|
17
|
+
|
18
|
+
var _calendarTable = require("./calendar-table.js");
|
19
|
+
|
20
|
+
var _navigationContainer = require("./navigation-container.js");
|
21
|
+
|
22
|
+
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); }
|
23
|
+
|
24
|
+
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; }
|
25
|
+
|
26
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
27
|
+
|
28
|
+
const Calendar = _ref => {
|
29
|
+
let {
|
30
|
+
onDateSelect,
|
31
|
+
calendar,
|
32
|
+
date,
|
33
|
+
dir,
|
34
|
+
locale,
|
35
|
+
numberingSystem,
|
36
|
+
weekDayFormat,
|
37
|
+
timeZone,
|
38
|
+
width,
|
39
|
+
cellSize
|
40
|
+
} = _ref;
|
41
|
+
const wrapperBorderColor = _uiConstants.colors.grey300;
|
42
|
+
const backgroundColor = 'none';
|
43
|
+
const [selectedDateString, setSelectedDateString] = (0, _react.useState)(date);
|
44
|
+
const languageDirection = (0, _multiCalendarDates.useResolvedDirection)(dir, locale);
|
45
|
+
const options = {
|
46
|
+
locale,
|
47
|
+
calendar,
|
48
|
+
timeZone,
|
49
|
+
numberingSystem,
|
50
|
+
weekDayFormat
|
51
|
+
};
|
52
|
+
const pickerOptions = (0, _multiCalendarDates.useDatePicker)({
|
53
|
+
onDateSelect: result => {
|
54
|
+
const {
|
55
|
+
calendarDateString
|
56
|
+
} = result;
|
57
|
+
setSelectedDateString(calendarDateString);
|
58
|
+
onDateSelect(result);
|
59
|
+
},
|
60
|
+
date: selectedDateString,
|
61
|
+
options
|
62
|
+
});
|
63
|
+
const {
|
64
|
+
calendarWeekDays,
|
65
|
+
weekDayLabels
|
66
|
+
} = pickerOptions;
|
67
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
68
|
+
className: _style.default.dynamic([["2823859047", [backgroundColor, wrapperBorderColor, width]]])
|
69
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
70
|
+
dir: languageDirection,
|
71
|
+
"data-test": "calendar",
|
72
|
+
className: _style.default.dynamic([["2823859047", [backgroundColor, wrapperBorderColor, width]]]) + " " + "calendar-wrapper"
|
73
|
+
}, /*#__PURE__*/_react.default.createElement(_navigationContainer.NavigationContainer, {
|
74
|
+
pickerOptions: pickerOptions,
|
75
|
+
languageDirection: languageDirection
|
76
|
+
}), /*#__PURE__*/_react.default.createElement(_calendarTable.CalendarTable, {
|
77
|
+
calendarWeekDays: calendarWeekDays,
|
78
|
+
weekDayLabels: weekDayLabels,
|
79
|
+
cellSize: cellSize,
|
80
|
+
width: width
|
81
|
+
})), /*#__PURE__*/_react.default.createElement(_style.default, {
|
82
|
+
id: "2823859047",
|
83
|
+
dynamic: [backgroundColor, wrapperBorderColor, width]
|
84
|
+
}, [".calendar-wrapper.__jsx-style-dynamic-selector{font-family:Roboto,sans-serif;font-weight:400;font-size:14px;background-color:".concat(backgroundColor, ";display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;border:1px solid ").concat(wrapperBorderColor, ";border-radius:3px;min-width:").concat(width, ";width:-webkit-max-content;width:-moz-max-content;width:max-content;box-shadow:0px 4px 6px -2px #2129340d;box-shadow:0px 10px 15px -3px #2129341a;}")]));
|
85
|
+
};
|
86
|
+
|
87
|
+
exports.Calendar = Calendar;
|
88
|
+
Calendar.defaultProps = {
|
89
|
+
cellSize: '32px',
|
90
|
+
width: '240px',
|
91
|
+
weekDayFormat: 'narrow'
|
92
|
+
};
|
93
|
+
Calendar.propTypes = _calendarPropTypes.CalendarProps;
|
@@ -0,0 +1,134 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.NavigationContainer = void 0;
|
7
|
+
|
8
|
+
var _style = _interopRequireDefault(require("styled-jsx/style"));
|
9
|
+
|
10
|
+
var _uiConstants = require("@dhis2/ui-constants");
|
11
|
+
|
12
|
+
var _uiIcons = require("@dhis2/ui-icons");
|
13
|
+
|
14
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
15
|
+
|
16
|
+
var _react = _interopRequireDefault(require("react"));
|
17
|
+
|
18
|
+
var _index = _interopRequireDefault(require("../locales/index.js"));
|
19
|
+
|
20
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
21
|
+
|
22
|
+
const chevronColor = _uiConstants.colors.grey600;
|
23
|
+
const wrapperBorderColor = _uiConstants.colors.grey300;
|
24
|
+
const headerBackground = _uiConstants.colors.grey050;
|
25
|
+
|
26
|
+
const NavigationContainer = _ref => {
|
27
|
+
let {
|
28
|
+
languageDirection,
|
29
|
+
pickerOptions
|
30
|
+
} = _ref;
|
31
|
+
const PreviousIcon = languageDirection === 'ltr' ? _uiIcons.IconChevronLeft16 : _uiIcons.IconChevronRight16;
|
32
|
+
const NextIcon = languageDirection === 'ltr' ? _uiIcons.IconChevronRight16 : _uiIcons.IconChevronLeft16;
|
33
|
+
const {
|
34
|
+
currMonth,
|
35
|
+
currYear,
|
36
|
+
nextMonth,
|
37
|
+
nextYear,
|
38
|
+
prevMonth,
|
39
|
+
prevYear
|
40
|
+
} = pickerOptions;
|
41
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
|
42
|
+
className: _style.default.dynamic([["4112940194", [_uiConstants.spacers.dp4, _uiConstants.colors.grey200, _uiConstants.spacers.dp36, _uiConstants.spacers.dp8, _uiConstants.spacers.dp4, wrapperBorderColor, headerBackground]]]) + " " + "navigation-container"
|
43
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
44
|
+
className: _style.default.dynamic([["4112940194", [_uiConstants.spacers.dp4, _uiConstants.colors.grey200, _uiConstants.spacers.dp36, _uiConstants.spacers.dp8, _uiConstants.spacers.dp4, wrapperBorderColor, headerBackground]]]) + " " + "month"
|
45
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
46
|
+
className: _style.default.dynamic([["4112940194", [_uiConstants.spacers.dp4, _uiConstants.colors.grey200, _uiConstants.spacers.dp36, _uiConstants.spacers.dp8, _uiConstants.spacers.dp4, wrapperBorderColor, headerBackground]]]) + " " + "prev"
|
47
|
+
}, /*#__PURE__*/_react.default.createElement("button", {
|
48
|
+
onClick: prevMonth.navigateTo,
|
49
|
+
name: "previous-month",
|
50
|
+
"data-test": "calendar-previous-month",
|
51
|
+
"aria-label": "".concat(_index.default.t("Go to ".concat(prevMonth.label))),
|
52
|
+
type: "button",
|
53
|
+
className: _style.default.dynamic([["4112940194", [_uiConstants.spacers.dp4, _uiConstants.colors.grey200, _uiConstants.spacers.dp36, _uiConstants.spacers.dp8, _uiConstants.spacers.dp4, wrapperBorderColor, headerBackground]]])
|
54
|
+
}, /*#__PURE__*/_react.default.createElement(PreviousIcon, {
|
55
|
+
color: chevronColor,
|
56
|
+
className: _style.default.dynamic([["4112940194", [_uiConstants.spacers.dp4, _uiConstants.colors.grey200, _uiConstants.spacers.dp36, _uiConstants.spacers.dp8, _uiConstants.spacers.dp4, wrapperBorderColor, headerBackground]]])
|
57
|
+
}))), /*#__PURE__*/_react.default.createElement("div", {
|
58
|
+
className: _style.default.dynamic([["4112940194", [_uiConstants.spacers.dp4, _uiConstants.colors.grey200, _uiConstants.spacers.dp36, _uiConstants.spacers.dp8, _uiConstants.spacers.dp4, wrapperBorderColor, headerBackground]]]) + " " + "curr"
|
59
|
+
}, /*#__PURE__*/_react.default.createElement("span", {
|
60
|
+
className: _style.default.dynamic([["4112940194", [_uiConstants.spacers.dp4, _uiConstants.colors.grey200, _uiConstants.spacers.dp36, _uiConstants.spacers.dp8, _uiConstants.spacers.dp4, wrapperBorderColor, headerBackground]]]) + " " + "label"
|
61
|
+
}, currMonth.label)), /*#__PURE__*/_react.default.createElement("div", {
|
62
|
+
className: _style.default.dynamic([["4112940194", [_uiConstants.spacers.dp4, _uiConstants.colors.grey200, _uiConstants.spacers.dp36, _uiConstants.spacers.dp8, _uiConstants.spacers.dp4, wrapperBorderColor, headerBackground]]]) + " " + "next"
|
63
|
+
}, /*#__PURE__*/_react.default.createElement("button", {
|
64
|
+
onClick: nextMonth.navigateTo,
|
65
|
+
"data-test": "calendar-next-month",
|
66
|
+
name: "next-month",
|
67
|
+
"aria-label": "".concat(_index.default.t("Go to ".concat(nextMonth.label))),
|
68
|
+
type: "button",
|
69
|
+
className: _style.default.dynamic([["4112940194", [_uiConstants.spacers.dp4, _uiConstants.colors.grey200, _uiConstants.spacers.dp36, _uiConstants.spacers.dp8, _uiConstants.spacers.dp4, wrapperBorderColor, headerBackground]]])
|
70
|
+
}, /*#__PURE__*/_react.default.createElement(NextIcon, {
|
71
|
+
color: chevronColor,
|
72
|
+
className: _style.default.dynamic([["4112940194", [_uiConstants.spacers.dp4, _uiConstants.colors.grey200, _uiConstants.spacers.dp36, _uiConstants.spacers.dp8, _uiConstants.spacers.dp4, wrapperBorderColor, headerBackground]]])
|
73
|
+
})))), /*#__PURE__*/_react.default.createElement("div", {
|
74
|
+
className: _style.default.dynamic([["4112940194", [_uiConstants.spacers.dp4, _uiConstants.colors.grey200, _uiConstants.spacers.dp36, _uiConstants.spacers.dp8, _uiConstants.spacers.dp4, wrapperBorderColor, headerBackground]]]) + " " + "year"
|
75
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
76
|
+
className: _style.default.dynamic([["4112940194", [_uiConstants.spacers.dp4, _uiConstants.colors.grey200, _uiConstants.spacers.dp36, _uiConstants.spacers.dp8, _uiConstants.spacers.dp4, wrapperBorderColor, headerBackground]]]) + " " + "prev"
|
77
|
+
}, /*#__PURE__*/_react.default.createElement("button", {
|
78
|
+
onClick: prevYear.navigateTo,
|
79
|
+
name: "previous-year",
|
80
|
+
"aria-label": "".concat(_index.default.t('Go to previous year')),
|
81
|
+
type: "button",
|
82
|
+
className: _style.default.dynamic([["4112940194", [_uiConstants.spacers.dp4, _uiConstants.colors.grey200, _uiConstants.spacers.dp36, _uiConstants.spacers.dp8, _uiConstants.spacers.dp4, wrapperBorderColor, headerBackground]]])
|
83
|
+
}, /*#__PURE__*/_react.default.createElement(PreviousIcon, {
|
84
|
+
color: chevronColor,
|
85
|
+
className: _style.default.dynamic([["4112940194", [_uiConstants.spacers.dp4, _uiConstants.colors.grey200, _uiConstants.spacers.dp36, _uiConstants.spacers.dp8, _uiConstants.spacers.dp4, wrapperBorderColor, headerBackground]]])
|
86
|
+
}))), /*#__PURE__*/_react.default.createElement("div", {
|
87
|
+
className: _style.default.dynamic([["4112940194", [_uiConstants.spacers.dp4, _uiConstants.colors.grey200, _uiConstants.spacers.dp36, _uiConstants.spacers.dp8, _uiConstants.spacers.dp4, wrapperBorderColor, headerBackground]]]) + " " + "curr"
|
88
|
+
}, /*#__PURE__*/_react.default.createElement("span", {
|
89
|
+
className: _style.default.dynamic([["4112940194", [_uiConstants.spacers.dp4, _uiConstants.colors.grey200, _uiConstants.spacers.dp36, _uiConstants.spacers.dp8, _uiConstants.spacers.dp4, wrapperBorderColor, headerBackground]]]) + " " + "label"
|
90
|
+
}, currYear.label)), /*#__PURE__*/_react.default.createElement("div", {
|
91
|
+
className: _style.default.dynamic([["4112940194", [_uiConstants.spacers.dp4, _uiConstants.colors.grey200, _uiConstants.spacers.dp36, _uiConstants.spacers.dp8, _uiConstants.spacers.dp4, wrapperBorderColor, headerBackground]]]) + " " + "next"
|
92
|
+
}, /*#__PURE__*/_react.default.createElement("button", {
|
93
|
+
onClick: nextYear.navigateTo,
|
94
|
+
name: "next-year",
|
95
|
+
"aria-label": "".concat(_index.default.t('Go to next year')),
|
96
|
+
type: "button",
|
97
|
+
className: _style.default.dynamic([["4112940194", [_uiConstants.spacers.dp4, _uiConstants.colors.grey200, _uiConstants.spacers.dp36, _uiConstants.spacers.dp8, _uiConstants.spacers.dp4, wrapperBorderColor, headerBackground]]])
|
98
|
+
}, /*#__PURE__*/_react.default.createElement(NextIcon, {
|
99
|
+
color: chevronColor,
|
100
|
+
className: _style.default.dynamic([["4112940194", [_uiConstants.spacers.dp4, _uiConstants.colors.grey200, _uiConstants.spacers.dp36, _uiConstants.spacers.dp8, _uiConstants.spacers.dp4, wrapperBorderColor, headerBackground]]])
|
101
|
+
}))))), /*#__PURE__*/_react.default.createElement(_style.default, {
|
102
|
+
id: "4112940194",
|
103
|
+
dynamic: [_uiConstants.spacers.dp4, _uiConstants.colors.grey200, _uiConstants.spacers.dp36, _uiConstants.spacers.dp8, _uiConstants.spacers.dp4, wrapperBorderColor, headerBackground]
|
104
|
+
}, ["button.__jsx-style-dynamic-selector{background:none;border:0;}", ".month.__jsx-style-dynamic-selector,.year.__jsx-style-dynamic-selector{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:100%;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}", ".month.__jsx-style-dynamic-selector .curr.__jsx-style-dynamic-selector,.year.__jsx-style-dynamic-selector .curr.__jsx-style-dynamic-selector{-webkit-flex:2;-ms-flex:2;flex:2;white-space:nowrap;}", ".prev.__jsx-style-dynamic-selector,.next.__jsx-style-dynamic-selector{-webkit-flex:1;-ms-flex:1;flex:1;text-align:center;}", ".prev.__jsx-style-dynamic-selector button.__jsx-style-dynamic-selector,.next.__jsx-style-dynamic-selector button.__jsx-style-dynamic-selector{padding:".concat(_uiConstants.spacers.dp4, ";}"), ".prev.__jsx-style-dynamic-selector:hover button.__jsx-style-dynamic-selector,.next.__jsx-style-dynamic-selector:hover button.__jsx-style-dynamic-selector{background-color:".concat(_uiConstants.colors.grey200, ";cursor:pointer;}"), ".label.__jsx-style-dynamic-selector{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding:4px 8px;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;min-height:16px;}", ".navigation-container.__jsx-style-dynamic-selector{height:".concat(_uiConstants.spacers.dp36, ";gap:").concat(_uiConstants.spacers.dp8, ";padding:").concat(_uiConstants.spacers.dp4, ";display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;border-bottom:1px solid ").concat(wrapperBorderColor, ";background-color:").concat(headerBackground, ";font-size:1.08em;}")]));
|
105
|
+
};
|
106
|
+
|
107
|
+
exports.NavigationContainer = NavigationContainer;
|
108
|
+
NavigationContainer.propTypes = {
|
109
|
+
languageDirection: _propTypes.default.oneOf(['ltr', 'rtl']),
|
110
|
+
pickerOptions: _propTypes.default.shape({
|
111
|
+
currMonth: _propTypes.default.shape({
|
112
|
+
label: _propTypes.default.string
|
113
|
+
}),
|
114
|
+
currYear: _propTypes.default.shape({
|
115
|
+
label: _propTypes.default.string
|
116
|
+
}),
|
117
|
+
nextMonth: _propTypes.default.shape({
|
118
|
+
label: _propTypes.default.string,
|
119
|
+
navigateTo: _propTypes.default.func
|
120
|
+
}),
|
121
|
+
nextYear: _propTypes.default.shape({
|
122
|
+
label: _propTypes.default.string,
|
123
|
+
navigateTo: _propTypes.default.func
|
124
|
+
}),
|
125
|
+
prevMonth: _propTypes.default.shape({
|
126
|
+
label: _propTypes.default.string,
|
127
|
+
navigateTo: _propTypes.default.func
|
128
|
+
}),
|
129
|
+
prevYear: _propTypes.default.shape({
|
130
|
+
label: _propTypes.default.string,
|
131
|
+
navigateTo: _propTypes.default.func
|
132
|
+
})
|
133
|
+
})
|
134
|
+
};
|
@@ -0,0 +1,117 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.CalendarInput = void 0;
|
7
|
+
|
8
|
+
var _card = require("@dhis2-ui/card");
|
9
|
+
|
10
|
+
var _input = require("@dhis2-ui/input");
|
11
|
+
|
12
|
+
var _layer = require("@dhis2-ui/layer");
|
13
|
+
|
14
|
+
var _popper = require("@dhis2-ui/popper");
|
15
|
+
|
16
|
+
var _multiCalendarDates = require("@dhis2/multi-calendar-dates");
|
17
|
+
|
18
|
+
var _react = _interopRequireWildcard(require("react"));
|
19
|
+
|
20
|
+
var _calendarPropTypes = require("../calendar/calendar-prop-types.js");
|
21
|
+
|
22
|
+
var _index = require("../calendar/index.js");
|
23
|
+
|
24
|
+
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); }
|
25
|
+
|
26
|
+
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; }
|
27
|
+
|
28
|
+
function _extends() { _extends = Object.assign || 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); }
|
29
|
+
|
30
|
+
const padWithZeroes = function (number) {
|
31
|
+
let count = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;
|
32
|
+
return String(number).padStart(count, '0');
|
33
|
+
};
|
34
|
+
|
35
|
+
const offsetModifier = {
|
36
|
+
name: 'offset',
|
37
|
+
options: {
|
38
|
+
offset: [0, 2]
|
39
|
+
}
|
40
|
+
};
|
41
|
+
|
42
|
+
const CalendarInput = function () {
|
43
|
+
let {
|
44
|
+
onDateSelect,
|
45
|
+
calendar,
|
46
|
+
date,
|
47
|
+
dir,
|
48
|
+
locale,
|
49
|
+
numberingSystem,
|
50
|
+
weekDayFormat,
|
51
|
+
timeZone,
|
52
|
+
width,
|
53
|
+
cellSize,
|
54
|
+
...rest
|
55
|
+
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
56
|
+
const ref = (0, _react.useRef)();
|
57
|
+
const [open, setOpen] = (0, _react.useState)(false);
|
58
|
+
const currentDate = (0, _multiCalendarDates.getNowInCalendar)(calendar, timeZone);
|
59
|
+
const initialDate = date || "".concat(currentDate.eraYear || currentDate.year, "-").concat(padWithZeroes(currentDate.month), "-").concat(padWithZeroes(currentDate.day));
|
60
|
+
const [value, setValue] = (0, _react.useState)(initialDate);
|
61
|
+
|
62
|
+
const calendarProps = _react.default.useMemo(() => {
|
63
|
+
const onDateSelectWrapper = selectedDate => {
|
64
|
+
const {
|
65
|
+
calendarDateString
|
66
|
+
} = selectedDate;
|
67
|
+
setValue(calendarDateString);
|
68
|
+
setOpen(false);
|
69
|
+
onDateSelect === null || onDateSelect === void 0 ? void 0 : onDateSelect(selectedDate);
|
70
|
+
};
|
71
|
+
|
72
|
+
return {
|
73
|
+
onDateSelect: onDateSelectWrapper,
|
74
|
+
calendar,
|
75
|
+
date,
|
76
|
+
dir,
|
77
|
+
locale,
|
78
|
+
numberingSystem,
|
79
|
+
weekDayFormat,
|
80
|
+
timeZone,
|
81
|
+
width,
|
82
|
+
cellSize
|
83
|
+
};
|
84
|
+
}, [calendar, cellSize, date, dir, locale, numberingSystem, onDateSelect, timeZone, weekDayFormat, width]);
|
85
|
+
|
86
|
+
const onFocus = () => {
|
87
|
+
setOpen(true);
|
88
|
+
};
|
89
|
+
|
90
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
|
91
|
+
ref: ref
|
92
|
+
}, /*#__PURE__*/_react.default.createElement(_input.InputField, _extends({
|
93
|
+
label: "Pick a date"
|
94
|
+
}, rest, {
|
95
|
+
type: "text",
|
96
|
+
onFocus: onFocus,
|
97
|
+
value: value
|
98
|
+
}))), open && /*#__PURE__*/_react.default.createElement(_layer.Layer, {
|
99
|
+
onBackdropClick: () => {
|
100
|
+
setOpen(false);
|
101
|
+
}
|
102
|
+
}, /*#__PURE__*/_react.default.createElement(_popper.Popper, {
|
103
|
+
reference: ref,
|
104
|
+
placement: "bottom-start",
|
105
|
+
modifiers: [offsetModifier]
|
106
|
+
}, /*#__PURE__*/_react.default.createElement(_card.Card, null, /*#__PURE__*/_react.default.createElement(_index.Calendar, _extends({}, calendarProps, {
|
107
|
+
date: value
|
108
|
+
}))))));
|
109
|
+
};
|
110
|
+
|
111
|
+
exports.CalendarInput = CalendarInput;
|
112
|
+
CalendarInput.defaultProps = {
|
113
|
+
dataTest: 'dhis2-uiwidgets-calendar-inputfield'
|
114
|
+
};
|
115
|
+
CalendarInput.propTypes = { ..._calendarPropTypes.CalendarProps,
|
116
|
+
..._input.InputFieldProps
|
117
|
+
};
|
@@ -0,0 +1,39 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _steps = require("cypress-cucumber-preprocessor/steps");
|
4
|
+
|
5
|
+
(0, _steps.Given)('an Ethiopic calendar is rendered in {word}', language => {
|
6
|
+
cy.visitStory('CalendarInputTesting', "Ethiopic With ".concat(language));
|
7
|
+
cy.get('[data-test="dhis2-uiwidgets-calendar-inputfield"]').click();
|
8
|
+
cy.get('[data-test=calendar]').should('be.visible');
|
9
|
+
});
|
10
|
+
(0, _steps.Then)('days should be rendered in "{word}"', language => {
|
11
|
+
const days = language === 'amharic' ? ['ሰኞ', 'ማክሰ', 'ረቡዕ', 'ሐሙስ', 'ዓርብ', 'ቅዳሜ', 'እሑድ'] : ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'];
|
12
|
+
days.forEach(day => {
|
13
|
+
cy.contains(day).should('be.visible');
|
14
|
+
});
|
15
|
+
});
|
16
|
+
(0, _steps.And)('months should be rendered in "{word}" with navigation', language => {
|
17
|
+
const months = language === 'amharic' ? {
|
18
|
+
current: 'ጥቅምት',
|
19
|
+
previous: 'መስከረም',
|
20
|
+
next: 'ኅዳር'
|
21
|
+
} : {
|
22
|
+
current: 'Tekemt',
|
23
|
+
previous: 'Meskerem',
|
24
|
+
next: 'Hedar'
|
25
|
+
};
|
26
|
+
cy.contains(months.current).should('be.visible');
|
27
|
+
cy.get('[data-test="calendar-next-month"]').click();
|
28
|
+
cy.contains(months.next).should('be.visible');
|
29
|
+
cy.get('[data-test="calendar-previous-month"]').click();
|
30
|
+
cy.get('[data-test="calendar-previous-month"]').click();
|
31
|
+
cy.contains(months.previous).should('be.visible');
|
32
|
+
});
|
33
|
+
(0, _steps.Then)('we should be able to select a day', () => {
|
34
|
+
const date = '2014-02-03';
|
35
|
+
cy.get("[data-test=\"".concat(date, "\"]")).click();
|
36
|
+
cy.get('[data-test="dhis2-uiwidgets-calendar-inputfield"] input').should('have.value', date);
|
37
|
+
cy.get('[data-test="storybook-calendar-result"]').should('have.text', date);
|
38
|
+
cy.get('[data-test="storybook-calendar-result-iso"]').should('have.text', '13 October 2021');
|
39
|
+
});
|
@@ -0,0 +1,19 @@
|
|
1
|
+
Feature: The Calendar renders in the Ethiopic calendar system
|
2
|
+
|
3
|
+
Scenario: Display an Ethiopic calendar in Amharic
|
4
|
+
Given an Ethiopic calendar is rendered in "amharic"
|
5
|
+
Then days should be rendered in "amharic"
|
6
|
+
And months should be rendered in "amharic" with navigation
|
7
|
+
|
8
|
+
Scenario: Select a day in the Ethiopic calendar in Amharic
|
9
|
+
Given an Ethiopic calendar is rendered in "amharic"
|
10
|
+
Then we should be able to select a day
|
11
|
+
|
12
|
+
Scenario: Display an Ethiopic calendar in English
|
13
|
+
Given an Ethiopic calendar is rendered in "english"
|
14
|
+
Then days should be rendered in "english"
|
15
|
+
And months should be rendered in "english" with navigation
|
16
|
+
|
17
|
+
Scenario: Select a day in the Ethiopic calendar in English
|
18
|
+
Given an Ethiopic calendar is rendered in English
|
19
|
+
Then we should be able to select a day
|