@dhis2-ui/calendar 8.8.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
@@ -0,0 +1,84 @@
|
|
1
|
+
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); }
|
2
|
+
|
3
|
+
import React from 'react';
|
4
|
+
import { CalendarInput } from '../calendar-input/index.js';
|
5
|
+
import { CalendarStoryWrapper } from './calendarStoryWrapper.js';
|
6
|
+
const subtitle = "[Experimental] Calendar Input is a wrapper around Calendar displaying an input that triggers the calendar";
|
7
|
+
const description = "\nUse a CalendarInput where there is a need to let the user input a date.\n\nNote that it requires a parent, like [Box](../?path=/docs/layout-box--default), to define its size.\n\n```js\nimport { CalendarInput } from '@dhis2/ui'\n```\n";
|
8
|
+
export default {
|
9
|
+
title: 'CalendarInput',
|
10
|
+
component: CalendarInput,
|
11
|
+
parameters: {
|
12
|
+
componentSubtitle: subtitle,
|
13
|
+
docs: {
|
14
|
+
description: {
|
15
|
+
component: description
|
16
|
+
}
|
17
|
+
}
|
18
|
+
}
|
19
|
+
};
|
20
|
+
|
21
|
+
const buildCalendar = _ref => {
|
22
|
+
let {
|
23
|
+
date,
|
24
|
+
locale,
|
25
|
+
calendar
|
26
|
+
} = _ref;
|
27
|
+
return () => /*#__PURE__*/React.createElement(CalendarStoryWrapper, {
|
28
|
+
component: CalendarInput,
|
29
|
+
dir: "ltr",
|
30
|
+
timeZone: "Africa/Khartoum",
|
31
|
+
weekDayFormat: "short",
|
32
|
+
date: date,
|
33
|
+
locale: locale,
|
34
|
+
calendar: calendar
|
35
|
+
});
|
36
|
+
};
|
37
|
+
|
38
|
+
export const EthiopicWithAmharic = buildCalendar({
|
39
|
+
calendar: 'ethiopic',
|
40
|
+
locale: 'am-ET',
|
41
|
+
date: '2014-02-03' // 13 Oct 2021
|
42
|
+
|
43
|
+
});
|
44
|
+
export const EthiopicWithEnglish = buildCalendar({
|
45
|
+
calendar: 'ethiopic',
|
46
|
+
locale: 'en-ET',
|
47
|
+
date: '2014-02-03' // 13 Oct 2021
|
48
|
+
|
49
|
+
});
|
50
|
+
export const NepaliWithNepali = buildCalendar({
|
51
|
+
calendar: 'nepali',
|
52
|
+
locale: 'ne-NP',
|
53
|
+
date: '2078-06-27' // 13 Oct 2021
|
54
|
+
|
55
|
+
});
|
56
|
+
export const NepaliWithEnglish = buildCalendar({
|
57
|
+
calendar: 'nepali',
|
58
|
+
locale: 'en-NP',
|
59
|
+
date: '2078-06-27' // 13 Oct 2021
|
60
|
+
|
61
|
+
});
|
62
|
+
export const GregorianWithEnglish = buildCalendar({
|
63
|
+
calendar: 'gregorian',
|
64
|
+
locale: 'en-CA',
|
65
|
+
date: '2021-10-13'
|
66
|
+
});
|
67
|
+
export const GregorianWithArabic = buildCalendar({
|
68
|
+
calendar: 'gregorian',
|
69
|
+
locale: 'ar-SD',
|
70
|
+
date: '2021-10-13'
|
71
|
+
});
|
72
|
+
export const IslamicWithArabic = buildCalendar({
|
73
|
+
calendar: 'islamic-civil',
|
74
|
+
locale: 'ar-SD',
|
75
|
+
date: '2015-01-13'
|
76
|
+
});
|
77
|
+
export const WithAnyCalendar = args => {
|
78
|
+
return /*#__PURE__*/React.createElement(CalendarStoryWrapper, _extends({
|
79
|
+
calendarInput: true,
|
80
|
+
calendar: "islamic-civil",
|
81
|
+
locale: "en",
|
82
|
+
timeZone: "Africa/Khartoum"
|
83
|
+
}, args));
|
84
|
+
};
|
@@ -0,0 +1,176 @@
|
|
1
|
+
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); }
|
2
|
+
|
3
|
+
import { constants } from '@dhis2/multi-calendar-dates';
|
4
|
+
import PropTypes from 'prop-types';
|
5
|
+
import React, { useState } from 'react';
|
6
|
+
import { Calendar } from '../calendar/index.js';
|
7
|
+
const {
|
8
|
+
calendars,
|
9
|
+
numberingSystems
|
10
|
+
} = constants;
|
11
|
+
export const CalendarStoryWrapper = props => {
|
12
|
+
const {
|
13
|
+
calendar,
|
14
|
+
locale,
|
15
|
+
timeZone,
|
16
|
+
dir,
|
17
|
+
component: Component,
|
18
|
+
date,
|
19
|
+
weekDayFormat
|
20
|
+
} = props;
|
21
|
+
const [selectedCalendar, setSelectedCalendar] = useState(calendar);
|
22
|
+
const [selectedNumberingSystem, setSelectedNumberingSystem] = useState();
|
23
|
+
const [selectedDirection, setSelectedDirection] = useState(dir);
|
24
|
+
const [selectedWeekFormat, setWeekDayFormat] = useState(weekDayFormat);
|
25
|
+
const [selectedLocale, setLocale] = useState(locale);
|
26
|
+
const [selectedDate, setSelectedDate] = useState();
|
27
|
+
|
28
|
+
const changeCalendar = _ref => {
|
29
|
+
let {
|
30
|
+
target: {
|
31
|
+
value
|
32
|
+
}
|
33
|
+
} = _ref;
|
34
|
+
setSelectedCalendar(value);
|
35
|
+
};
|
36
|
+
|
37
|
+
const changeNumberingSystem = _ref2 => {
|
38
|
+
let {
|
39
|
+
target: {
|
40
|
+
value
|
41
|
+
}
|
42
|
+
} = _ref2;
|
43
|
+
|
44
|
+
if (value === '-1') {
|
45
|
+
setSelectedNumberingSystem(null);
|
46
|
+
} else {
|
47
|
+
setSelectedNumberingSystem(value);
|
48
|
+
}
|
49
|
+
};
|
50
|
+
|
51
|
+
const changeDirection = _ref3 => {
|
52
|
+
let {
|
53
|
+
target: {
|
54
|
+
value
|
55
|
+
}
|
56
|
+
} = _ref3;
|
57
|
+
setSelectedDirection(value);
|
58
|
+
};
|
59
|
+
|
60
|
+
const changeWeekFormat = _ref4 => {
|
61
|
+
let {
|
62
|
+
target: {
|
63
|
+
value
|
64
|
+
}
|
65
|
+
} = _ref4;
|
66
|
+
setWeekDayFormat(value);
|
67
|
+
};
|
68
|
+
|
69
|
+
const onLocaleChanged = _ref5 => {
|
70
|
+
let {
|
71
|
+
target: {
|
72
|
+
value
|
73
|
+
}
|
74
|
+
} = _ref5;
|
75
|
+
setLocale(value);
|
76
|
+
};
|
77
|
+
|
78
|
+
return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("div", {
|
79
|
+
style: {
|
80
|
+
fontSize: '0.8em',
|
81
|
+
marginBottom: 20,
|
82
|
+
gap: 5,
|
83
|
+
display: 'flex',
|
84
|
+
alignItems: 'center'
|
85
|
+
}
|
86
|
+
}, /*#__PURE__*/React.createElement("div", null, "Options"), /*#__PURE__*/React.createElement("input", {
|
87
|
+
defaultValue: locale,
|
88
|
+
placeholder: "locale",
|
89
|
+
onBlur: onLocaleChanged
|
90
|
+
}), /*#__PURE__*/React.createElement("select", {
|
91
|
+
onChange: changeCalendar,
|
92
|
+
value: selectedCalendar
|
93
|
+
}, /*#__PURE__*/React.createElement("option", {
|
94
|
+
disabled: true,
|
95
|
+
key: calendar,
|
96
|
+
value: "-1"
|
97
|
+
}, "Select calendar"), calendars.map(calendar => {
|
98
|
+
return /*#__PURE__*/React.createElement("option", {
|
99
|
+
value: calendar,
|
100
|
+
key: calendar
|
101
|
+
}, calendar);
|
102
|
+
})), /*#__PURE__*/React.createElement("select", {
|
103
|
+
onChange: changeNumberingSystem,
|
104
|
+
value: selectedNumberingSystem
|
105
|
+
}, /*#__PURE__*/React.createElement("option", {
|
106
|
+
disabled: true,
|
107
|
+
key: calendar,
|
108
|
+
value: "-1"
|
109
|
+
}, "Select numbering system"), numberingSystems.map(system => {
|
110
|
+
return /*#__PURE__*/React.createElement("option", {
|
111
|
+
value: system,
|
112
|
+
key: system
|
113
|
+
}, system);
|
114
|
+
})), /*#__PURE__*/React.createElement("select", {
|
115
|
+
onChange: changeDirection,
|
116
|
+
value: selectedDirection
|
117
|
+
}, /*#__PURE__*/React.createElement("option", {
|
118
|
+
disabled: true,
|
119
|
+
value: "-1"
|
120
|
+
}, "Select direction"), /*#__PURE__*/React.createElement("option", {
|
121
|
+
value: "ltr"
|
122
|
+
}, "Left-To-Right"), /*#__PURE__*/React.createElement("option", {
|
123
|
+
value: "rtl"
|
124
|
+
}, "Right-To-Left")), /*#__PURE__*/React.createElement("select", {
|
125
|
+
onChange: changeWeekFormat,
|
126
|
+
value: selectedWeekFormat
|
127
|
+
}, /*#__PURE__*/React.createElement("option", {
|
128
|
+
disabled: true,
|
129
|
+
value: "-1"
|
130
|
+
}, "Select format"), /*#__PURE__*/React.createElement("option", {
|
131
|
+
value: "narrow"
|
132
|
+
}, "narrow"), /*#__PURE__*/React.createElement("option", {
|
133
|
+
value: "short"
|
134
|
+
}, "short"), /*#__PURE__*/React.createElement("option", {
|
135
|
+
value: "long"
|
136
|
+
}, "long"))), /*#__PURE__*/React.createElement(Component, _extends({}, props, {
|
137
|
+
calendar: selectedCalendar,
|
138
|
+
dir: selectedDirection,
|
139
|
+
locale: selectedLocale,
|
140
|
+
date: date,
|
141
|
+
onDateSelect: date => {
|
142
|
+
setSelectedDate(date);
|
143
|
+
},
|
144
|
+
timeZone: timeZone,
|
145
|
+
weekDayFormat: selectedWeekFormat,
|
146
|
+
numberingSystem: selectedNumberingSystem
|
147
|
+
})), /*#__PURE__*/React.createElement("div", {
|
148
|
+
style: {
|
149
|
+
marginTop: 10,
|
150
|
+
gap: 5,
|
151
|
+
fontSize: '12px',
|
152
|
+
display: 'flex',
|
153
|
+
flexDirection: 'column'
|
154
|
+
}
|
155
|
+
}, /*#__PURE__*/React.createElement("div", null, selectedDate && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("label", null, "calendar date: "), /*#__PURE__*/React.createElement("span", {
|
156
|
+
"data-test": "storybook-calendar-result"
|
157
|
+
}, selectedDate.calendarDateString)), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("label", null, "iso date: "), /*#__PURE__*/React.createElement("span", {
|
158
|
+
"data-test": "storybook-calendar-result-iso"
|
159
|
+
}, selectedDate.calendarDate.withCalendar('iso8601').toLocaleString('en-GB', {
|
160
|
+
dateStyle: 'long'
|
161
|
+
}))), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("label", null, "callback:"), JSON.stringify(selectedDate, null, 2))))));
|
162
|
+
};
|
163
|
+
CalendarStoryWrapper.defaultProps = {
|
164
|
+
calendar: 'gregorian',
|
165
|
+
component: Calendar,
|
166
|
+
weekDayFormat: 'narrow'
|
167
|
+
};
|
168
|
+
CalendarStoryWrapper.propTypes = {
|
169
|
+
calendar: PropTypes.string.isRequired,
|
170
|
+
component: PropTypes.elementType.isRequired,
|
171
|
+
date: PropTypes.string,
|
172
|
+
dir: PropTypes.oneOf(['ltr', 'rtl']),
|
173
|
+
locale: PropTypes.string,
|
174
|
+
timeZone: PropTypes.string,
|
175
|
+
weekDayFormat: PropTypes.string
|
176
|
+
};
|
package/package.json
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
{
|
2
|
+
"name": "@dhis2-ui/calendar",
|
3
|
+
"version": "8.8.0",
|
4
|
+
"description": "UI Calendar",
|
5
|
+
"repository": {
|
6
|
+
"type": "git",
|
7
|
+
"url": "https://github.com/dhis2/ui.git",
|
8
|
+
"directory": "components/calendar"
|
9
|
+
},
|
10
|
+
"homepage": "https://github.com/dhis2/ui#readme",
|
11
|
+
"license": "BSD-3-Clause",
|
12
|
+
"private": false,
|
13
|
+
"main": "./build/cjs/index.js",
|
14
|
+
"module": "./build/es/index.js",
|
15
|
+
"exports": {
|
16
|
+
"import": "./build/es/index.js",
|
17
|
+
"require": "./build/cjs/index.js"
|
18
|
+
},
|
19
|
+
"sideEffects": false,
|
20
|
+
"publishConfig": {
|
21
|
+
"access": "public"
|
22
|
+
},
|
23
|
+
"scripts": {
|
24
|
+
"start": "start-storybook -c ../../storybook/config --port 5000",
|
25
|
+
"build": "d2-app-scripts build",
|
26
|
+
"test": "d2-app-scripts test --jestConfig ../../jest.config.shared.js"
|
27
|
+
},
|
28
|
+
"peerDependencies": {
|
29
|
+
"react": "^16.8",
|
30
|
+
"react-dom": "^16.8",
|
31
|
+
"styled-jsx": "^4"
|
32
|
+
},
|
33
|
+
"dependencies": {
|
34
|
+
"@dhis2-ui/card": "8.8.0",
|
35
|
+
"@dhis2-ui/input": "8.8.0",
|
36
|
+
"@dhis2-ui/layer": "8.8.0",
|
37
|
+
"@dhis2-ui/popper": "8.8.0",
|
38
|
+
"@dhis2/multi-calendar-dates": "1.0.0-alpha.17",
|
39
|
+
"@dhis2/prop-types": "^3.1.2",
|
40
|
+
"@dhis2/ui-constants": "8.8.0",
|
41
|
+
"@dhis2/ui-icons": "8.8.0",
|
42
|
+
"classnames": "^2.3.1",
|
43
|
+
"prop-types": "^15.7.2"
|
44
|
+
},
|
45
|
+
"files": [
|
46
|
+
"build"
|
47
|
+
],
|
48
|
+
"devDependencies": {
|
49
|
+
"react": "16.13",
|
50
|
+
"react-dom": "16.13",
|
51
|
+
"styled-jsx": "^4.0.1"
|
52
|
+
}
|
53
|
+
}
|