dtable-ui-component 6.0.26-beta1 → 6.0.26-beta3
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/lib/DateEditor/index.js
CHANGED
|
@@ -10,7 +10,7 @@ var _react = _interopRequireWildcard(require("react"));
|
|
|
10
10
|
var _reactResponsive = _interopRequireDefault(require("react-responsive"));
|
|
11
11
|
var _dtableUtils = require("dtable-utils");
|
|
12
12
|
var _dayjs = _interopRequireDefault(require("../utils/dayjs"));
|
|
13
|
-
var
|
|
13
|
+
var _lg = _interopRequireDefault(require("./lg"));
|
|
14
14
|
var _sm = _interopRequireDefault(require("./sm"));
|
|
15
15
|
require("dayjs/locale/zh-cn");
|
|
16
16
|
require("dayjs/locale/en-gb");
|
|
@@ -35,7 +35,7 @@ const DateEditor = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
|
|
|
35
35
|
return (column === null || column === void 0 ? void 0 : column.data) && (column === null || column === void 0 ? void 0 : (_column$data = column.data) === null || _column$data === void 0 ? void 0 : _column$data.format) || _dtableUtils.DEFAULT_DATE_FORMAT;
|
|
36
36
|
}, [column]);
|
|
37
37
|
const showHourAndMinute = (0, _react.useMemo)(() => format.indexOf('HH:mm') > -1, [format]);
|
|
38
|
-
const
|
|
38
|
+
const handelCommit = (0, _react.useCallback)(newValue => {
|
|
39
39
|
if (value !== newValue) {
|
|
40
40
|
setValue(newValue);
|
|
41
41
|
onCommit(newValue);
|
|
@@ -54,10 +54,10 @@ const DateEditor = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
|
|
|
54
54
|
showHourAndMinute,
|
|
55
55
|
firstDayOfWeek,
|
|
56
56
|
className,
|
|
57
|
-
|
|
57
|
+
onCommit: handelCommit,
|
|
58
58
|
onClose: hideCalendar
|
|
59
59
|
};
|
|
60
|
-
if (size === 'lg') return /*#__PURE__*/_react.default.createElement(
|
|
60
|
+
if (size === 'lg') return /*#__PURE__*/_react.default.createElement(_lg.default, Object.assign({}, props, {
|
|
61
61
|
isInModal: isInModal,
|
|
62
62
|
ref: ref
|
|
63
63
|
}));
|
|
@@ -68,7 +68,7 @@ const DateEditor = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
|
|
|
68
68
|
}));
|
|
69
69
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_reactResponsive.default, {
|
|
70
70
|
query: '(min-width: 768px)'
|
|
71
|
-
}, /*#__PURE__*/_react.default.createElement(
|
|
71
|
+
}, /*#__PURE__*/_react.default.createElement(_lg.default, Object.assign({}, props, {
|
|
72
72
|
isInModal: isInModal,
|
|
73
73
|
ref: ref
|
|
74
74
|
}))), /*#__PURE__*/_react.default.createElement(_reactResponsive.default, {
|
|
@@ -28,10 +28,10 @@ class Large extends _react.default.Component {
|
|
|
28
28
|
value: value,
|
|
29
29
|
open: true // if value changed, don't close datePicker
|
|
30
30
|
});
|
|
31
|
-
this.props.
|
|
31
|
+
this.props.onCommit(value.format(dateFormat));
|
|
32
32
|
};
|
|
33
33
|
this.onBlur = () => {
|
|
34
|
-
this.props.
|
|
34
|
+
this.props.onCommit(this.getValue());
|
|
35
35
|
};
|
|
36
36
|
this.getValue = () => {
|
|
37
37
|
let {
|
|
@@ -67,7 +67,7 @@ class Large extends _react.default.Component {
|
|
|
67
67
|
this.setState({
|
|
68
68
|
value: null
|
|
69
69
|
});
|
|
70
|
-
this.props.
|
|
70
|
+
this.props.onCommit(null);
|
|
71
71
|
};
|
|
72
72
|
this.onFocusDatePicker = () => {
|
|
73
73
|
this.setState({
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
4
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
@@ -10,90 +9,73 @@ var _datePicker = _interopRequireDefault(require("antd-mobile/lib/date-picker"))
|
|
|
10
9
|
var _react = _interopRequireDefault(require("react"));
|
|
11
10
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
12
11
|
var _dayjs = _interopRequireDefault(require("dayjs"));
|
|
12
|
+
require("dayjs/locale/zh-cn");
|
|
13
|
+
require("dayjs/locale/en-gb");
|
|
13
14
|
var _seafileCalendar = _interopRequireDefault(require("@seafile/seafile-calendar"));
|
|
14
|
-
var
|
|
15
|
+
var _Picker = _interopRequireDefault(require("@seafile/seafile-calendar/lib/Picker"));
|
|
15
16
|
var _lang = require("../../lang");
|
|
16
17
|
var _editorUtils = require("../../utils/editor-utils");
|
|
17
18
|
var _MobileFullScreenPage = _interopRequireDefault(require("../../MobileFullScreenPage"));
|
|
18
19
|
require("@seafile/seafile-calendar/assets/index.css");
|
|
19
20
|
require("./index.css");
|
|
21
|
+
let now = (0, _dayjs.default)();
|
|
20
22
|
class Small extends _react.default.PureComponent {
|
|
21
23
|
constructor(props) {
|
|
22
24
|
super(props);
|
|
23
|
-
this.handleHistaryBack = e => {
|
|
24
|
-
e.preventDefault();
|
|
25
|
-
this.closePopover();
|
|
26
|
-
};
|
|
27
25
|
this.handleDateChange = date => {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
const newDate = (0, _dayjs.default)(date).format(format) + ' ' + HM;
|
|
40
|
-
newValue = (0, _dayjs.default)(newDate);
|
|
26
|
+
if (this.showTime) {
|
|
27
|
+
const HM = (0, _dayjs.default)(this.state.time).format('HH:mm');
|
|
28
|
+
// In iOS, the time standard is ISO-8601, new Date("YYYY-MM-DD") will be wrong, new Date("YYYY/MM/DD") will be OK.
|
|
29
|
+
const newTime = (0, _dayjs.default)(date).format('YYYY/MM/DD') + ' ' + HM;
|
|
30
|
+
this.setState({
|
|
31
|
+
time: new Date(newTime)
|
|
32
|
+
});
|
|
33
|
+
} else {
|
|
34
|
+
this.setState({
|
|
35
|
+
time: date
|
|
36
|
+
});
|
|
41
37
|
}
|
|
42
|
-
this.setState({
|
|
43
|
-
datePickerValue: (0, _dayjs.default)(date)
|
|
44
|
-
});
|
|
45
|
-
this.props.onValueChanged(newValue.format(dateFormat));
|
|
46
38
|
};
|
|
47
39
|
this.handleTimeChange = time => {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
const {
|
|
52
|
-
dateFormat
|
|
53
|
-
} = this.props;
|
|
54
|
-
const format = dateFormat.split(' ')[0]; // 'YYYY-MM-DD HH:mm'
|
|
55
|
-
const YMD = datePickerValue.format(format);
|
|
56
|
-
const newDate = YMD + ' ' + (0, _dayjs.default)(time).format('HH:mm');
|
|
57
|
-
const newValue = (0, _dayjs.default)(newDate);
|
|
40
|
+
// In iOS, the time standard is ISO-8601, new Date("YYYY-MM-DD") will be wrong, new Date("YYYY/MM/DD") will be OK.
|
|
41
|
+
const YMD = (0, _dayjs.default)(this.state.time).format('YYYY/MM/DD');
|
|
42
|
+
const newTime = YMD + ' ' + (0, _dayjs.default)(time).format('HH:mm');
|
|
58
43
|
this.setState({
|
|
59
|
-
|
|
44
|
+
time: new Date(newTime)
|
|
60
45
|
});
|
|
61
|
-
this.props.onValueChanged(datePickerValue.format(dateFormat));
|
|
62
46
|
};
|
|
63
|
-
this.
|
|
47
|
+
this.onSave = () => {
|
|
48
|
+
const value = (0, _dayjs.default)(this.state.time).format(this.format);
|
|
49
|
+
this.props.onCommit(value);
|
|
64
50
|
this.props.onClose();
|
|
65
51
|
};
|
|
66
52
|
this.deleteDate = () => {
|
|
67
|
-
this.props.
|
|
68
|
-
this.
|
|
53
|
+
this.props.onCommit(null);
|
|
54
|
+
this.props.onClose();
|
|
55
|
+
};
|
|
56
|
+
this.getCalendarContainer = () => {
|
|
57
|
+
return this.calendarContainerRef.current;
|
|
69
58
|
};
|
|
70
59
|
this.onChange = value => {
|
|
71
60
|
if (!value) return;
|
|
72
|
-
|
|
73
|
-
dateFormat
|
|
74
|
-
} = this.props;
|
|
61
|
+
const newTime = (0, _dayjs.default)(value.format(this.format));
|
|
75
62
|
this.setState({
|
|
76
|
-
|
|
63
|
+
time: newTime
|
|
77
64
|
});
|
|
78
|
-
this.props.onValueChanged(value.format(dateFormat));
|
|
79
|
-
};
|
|
80
|
-
this.getCalendarContainer = () => {
|
|
81
|
-
return this.calendarContainerRef.current;
|
|
82
65
|
};
|
|
83
|
-
this.
|
|
84
|
-
|
|
85
|
-
|
|
66
|
+
this.renderCalender = () => {
|
|
67
|
+
const {
|
|
68
|
+
time,
|
|
86
69
|
lang,
|
|
87
70
|
className,
|
|
88
71
|
firstDayOfWeek
|
|
89
72
|
} = this.props;
|
|
90
|
-
|
|
91
|
-
return /*#__PURE__*/_react.default.createElement(_seafileCalendar.default, {
|
|
73
|
+
const calendar = /*#__PURE__*/_react.default.createElement(_seafileCalendar.default, {
|
|
92
74
|
className: (0, _classnames.default)('dtable-rc-calendar', className),
|
|
93
75
|
locale: (0, _editorUtils.initDateEditorLanguage)(lang),
|
|
94
|
-
format: dateFormat,
|
|
95
|
-
defaultValue: defaultValue,
|
|
96
76
|
dateInputPlaceholder: (0, _lang.getLocale)('Please_input'),
|
|
77
|
+
format: this.format,
|
|
78
|
+
defaultValue: this.defaultCalendarValue,
|
|
97
79
|
showDateInput: false,
|
|
98
80
|
focusablePanel: false,
|
|
99
81
|
showToday: false,
|
|
@@ -104,38 +86,28 @@ class Small extends _react.default.PureComponent {
|
|
|
104
86
|
},
|
|
105
87
|
firstDayOfWeek: firstDayOfWeek
|
|
106
88
|
});
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
let {
|
|
113
|
-
datePickerValue
|
|
114
|
-
} = this.state;
|
|
115
|
-
let calendar = this.getCalender();
|
|
116
|
-
return /*#__PURE__*/_react.default.createElement(SeaDatePicker, {
|
|
89
|
+
return /*#__PURE__*/_react.default.createElement(_Picker.default, {
|
|
90
|
+
calendar: calendar,
|
|
91
|
+
value: time,
|
|
92
|
+
onChange: this.onChange,
|
|
93
|
+
getCalendarContainer: this.getCalendarContainer,
|
|
117
94
|
open: true,
|
|
118
95
|
style: {
|
|
119
96
|
width: '100%'
|
|
120
|
-
}
|
|
121
|
-
calendar: calendar,
|
|
122
|
-
value: datePickerValue,
|
|
123
|
-
getCalendarContainer: this.getCalendarContainer,
|
|
124
|
-
onChange: this.onChange
|
|
97
|
+
}
|
|
125
98
|
}, _ref => {
|
|
126
99
|
let {
|
|
127
|
-
|
|
100
|
+
time
|
|
128
101
|
} = _ref;
|
|
129
|
-
value = value && value.format(dateFormat);
|
|
130
102
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
131
103
|
tabIndex: "0",
|
|
132
104
|
onFocus: this.onReadOnlyFocus
|
|
133
105
|
}, /*#__PURE__*/_react.default.createElement("input", {
|
|
134
|
-
placeholder: (0, _lang.getLocale)('
|
|
106
|
+
placeholder: (0, _lang.getLocale)('please_select'),
|
|
135
107
|
readOnly: true,
|
|
136
108
|
tabIndex: "-1",
|
|
137
|
-
className: "form-control",
|
|
138
|
-
value:
|
|
109
|
+
className: "ant-calendar-picker-input ant-input form-control",
|
|
110
|
+
value: time ? (0, _dayjs.default)(time).format(this.getFormat()) : ''
|
|
139
111
|
}), /*#__PURE__*/_react.default.createElement("div", {
|
|
140
112
|
ref: this.calendarContainerRef,
|
|
141
113
|
style: {
|
|
@@ -144,30 +116,45 @@ class Small extends _react.default.PureComponent {
|
|
|
144
116
|
}));
|
|
145
117
|
});
|
|
146
118
|
};
|
|
119
|
+
const {
|
|
120
|
+
dateFormat,
|
|
121
|
+
showHourAndMinute
|
|
122
|
+
} = props;
|
|
147
123
|
this.state = {
|
|
148
|
-
|
|
149
|
-
datePickerValue: props.value ? (0, _dayjs.default)(props.value) : (0, _dayjs.default)().clone()
|
|
124
|
+
time: null
|
|
150
125
|
};
|
|
151
126
|
this.calendarContainerRef = /*#__PURE__*/_react.default.createRef();
|
|
127
|
+
this.leftFormat = dateFormat ? dateFormat.indexOf(' ') === -1 ? dateFormat : dateFormat.slice(0, dateFormat.indexOf(' ')) : 'YYYY-MM-DD';
|
|
128
|
+
this.rightFormat = 'HH:mm';
|
|
129
|
+
this.showTime = showHourAndMinute;
|
|
130
|
+
this.format = showHourAndMinute ? 'YYYY-MM-DD HH:mm' : 'YYYY-MM-DD';
|
|
152
131
|
}
|
|
153
132
|
componentDidMount() {
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
133
|
+
let {
|
|
134
|
+
value,
|
|
135
|
+
lang
|
|
136
|
+
} = this.props;
|
|
137
|
+
const iszhcn = lang === 'zh-cn';
|
|
138
|
+
if (iszhcn) {
|
|
139
|
+
now = now.locale('zh-cn');
|
|
140
|
+
} else {
|
|
141
|
+
now = now.locale('en-gb');
|
|
142
|
+
}
|
|
143
|
+
if (!value) {
|
|
144
|
+
value = new Date(Date.now());
|
|
145
|
+
}
|
|
146
|
+
this.defaultCalendarValue = now.clone();
|
|
147
|
+
this.setState({
|
|
148
|
+
time: iszhcn ? (0, _dayjs.default)(value).locale('zh-cn') : (0, _dayjs.default)(value).locale('en-gb')
|
|
149
|
+
});
|
|
159
150
|
}
|
|
160
151
|
render() {
|
|
161
152
|
const {
|
|
162
153
|
lang,
|
|
163
|
-
column
|
|
164
|
-
dateFormat,
|
|
165
|
-
showHourAndMinute
|
|
154
|
+
column
|
|
166
155
|
} = this.props;
|
|
167
|
-
const leftFormat = dateFormat.split(' ')[0];
|
|
168
|
-
const rightFormat = dateFormat.split(' ')[1];
|
|
169
156
|
const {
|
|
170
|
-
|
|
157
|
+
time
|
|
171
158
|
} = this.state;
|
|
172
159
|
return /*#__PURE__*/_react.default.createElement(_MobileFullScreenPage.default, {
|
|
173
160
|
className: "mobile-dtable-ui-date-editor",
|
|
@@ -181,26 +168,36 @@ class Small extends _react.default.PureComponent {
|
|
|
181
168
|
}, (0, _lang.getLocale)('Done')), /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
|
|
182
169
|
className: "mobile-dtable-ui-date-editor-input"
|
|
183
170
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
184
|
-
className: "date-input"
|
|
171
|
+
className: "date-input",
|
|
172
|
+
style: this.showTime ? {
|
|
173
|
+
width: '50%'
|
|
174
|
+
} : {
|
|
175
|
+
width: '100%'
|
|
176
|
+
}
|
|
185
177
|
}, /*#__PURE__*/_react.default.createElement(_datePicker.default, {
|
|
186
178
|
mode: "date",
|
|
179
|
+
minDate: _editorUtils.minDate,
|
|
180
|
+
maxDate: _editorUtils.maxDate,
|
|
187
181
|
locale: (0, _editorUtils.initDateEditorLanguage)(lang),
|
|
188
|
-
value:
|
|
182
|
+
value: time,
|
|
189
183
|
onChange: this.handleDateChange
|
|
190
184
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
191
185
|
className: "date-input-day"
|
|
192
|
-
},
|
|
193
|
-
className: "date-input"
|
|
186
|
+
}, (0, _dayjs.default)(time).format(this.leftFormat)))), this.showTime && /*#__PURE__*/_react.default.createElement("div", {
|
|
187
|
+
className: "date-input",
|
|
188
|
+
style: {
|
|
189
|
+
width: '50%'
|
|
190
|
+
}
|
|
194
191
|
}, /*#__PURE__*/_react.default.createElement(_datePicker.default, {
|
|
195
192
|
mode: "time",
|
|
196
193
|
locale: (0, _editorUtils.initDateEditorLanguage)(lang),
|
|
197
|
-
value:
|
|
194
|
+
value: time,
|
|
198
195
|
onChange: this.handleTimeChange
|
|
199
196
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
200
197
|
className: "date-input-day"
|
|
201
|
-
},
|
|
198
|
+
}, (0, _dayjs.default)(time).format(this.rightFormat))))), /*#__PURE__*/_react.default.createElement("div", {
|
|
202
199
|
className: "dtable-ui mobile-dtable-ui-date-editor-picker"
|
|
203
|
-
}, this.
|
|
200
|
+
}, this.renderCalender()), /*#__PURE__*/_react.default.createElement("div", {
|
|
204
201
|
className: "mobile-dtable-ui-date-editor-clear"
|
|
205
202
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
206
203
|
onClick: this.deleteDate,
|
|
@@ -55,7 +55,6 @@ class Small extends _react.default.Component {
|
|
|
55
55
|
render() {
|
|
56
56
|
let {
|
|
57
57
|
column,
|
|
58
|
-
isInModal,
|
|
59
58
|
lang
|
|
60
59
|
} = this.props;
|
|
61
60
|
let {
|
|
@@ -72,7 +71,6 @@ class Small extends _react.default.Component {
|
|
|
72
71
|
},
|
|
73
72
|
onClick: this.toggleEditor
|
|
74
73
|
}, value ? (0, _dtableUtils.getDateDisplayString)(value, format) : ''), /*#__PURE__*/_react.default.createElement(_RightAngle.default, null)), isShowEditor && /*#__PURE__*/_react.default.createElement(_DateEditor.default, {
|
|
75
|
-
isInModal: isInModal,
|
|
76
74
|
value: value,
|
|
77
75
|
lang: lang,
|
|
78
76
|
column: column,
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.initDateEditorLanguage = exports.getTrimmedString = exports.getSelectOptionItem = void 0;
|
|
6
|
+
exports.minDate = exports.maxDate = exports.initDateEditorLanguage = exports.getTrimmedString = exports.getSelectOptionItem = void 0;
|
|
7
7
|
const zhCN = require('@seafile/seafile-calendar/lib/locale/zh_CN');
|
|
8
8
|
const zhTW = require('@seafile/seafile-calendar/lib/locale/zh_TW');
|
|
9
9
|
const enUS = require('@seafile/seafile-calendar/lib/locale/en_US');
|
|
@@ -66,4 +66,8 @@ exports.getSelectOptionItem = getSelectOptionItem;
|
|
|
66
66
|
const getTrimmedString = value => {
|
|
67
67
|
return typeof value === 'string' ? value.trim() : '';
|
|
68
68
|
};
|
|
69
|
-
|
|
69
|
+
|
|
70
|
+
// min date and max date for mobile date picker
|
|
71
|
+
exports.getTrimmedString = getTrimmedString;
|
|
72
|
+
const minDate = exports.minDate = new Date('1900/01/01');
|
|
73
|
+
const maxDate = exports.maxDate = new Date('2100/12/31');
|