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.
@@ -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 _large = _interopRequireDefault(require("./large"));
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 onValueChanged = (0, _react.useCallback)(newValue => {
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
- onValueChanged,
57
+ onCommit: handelCommit,
58
58
  onClose: hideCalendar
59
59
  };
60
- if (size === 'lg') return /*#__PURE__*/_react.default.createElement(_large.default, Object.assign({}, props, {
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(_large.default, Object.assign({}, props, {
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.onValueChanged(value.format(dateFormat));
31
+ this.props.onCommit(value.format(dateFormat));
32
32
  };
33
33
  this.onBlur = () => {
34
- this.props.onValueChanged(this.getValue());
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.onValueChanged(null);
70
+ this.props.onCommit(null);
71
71
  };
72
72
  this.onFocusDatePicker = () => {
73
73
  this.setState({
@@ -1,5 +1,4 @@
1
1
  @import url('./custom-rc-calendar.css');
2
- @import url('../../css/mb-cell-editor.css');
3
2
 
4
3
  .mobile-dtable-ui-date-editor .mobile-dtable-ui-date-editor-input {
5
4
  display: flex;
@@ -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 SeaDatePicker = _interopRequireWildcard(require("@seafile/seafile-calendar/lib/Picker"));
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
- let {
29
- dateFormat,
30
- showHourAndMinute
31
- } = this.props;
32
- let newValue = (0, _dayjs.default)(date);
33
- if (showHourAndMinute) {
34
- const {
35
- datePickerValue
36
- } = this.state;
37
- const HM = datePickerValue.format('HH:mm');
38
- const format = dateFormat.split(' ')[0]; // 'YYYY-MM-DD HH:mm'
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
- const {
49
- datePickerValue
50
- } = this.state;
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
- datePickerValue: newValue
44
+ time: new Date(newTime)
60
45
  });
61
- this.props.onValueChanged(datePickerValue.format(dateFormat));
62
46
  };
63
- this.closePopover = () => {
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.onValueChanged('');
68
- this.closePopover();
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
- let {
73
- dateFormat
74
- } = this.props;
61
+ const newTime = (0, _dayjs.default)(value.format(this.format));
75
62
  this.setState({
76
- datePickerValue: value
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.getCalender = () => {
84
- let {
85
- dateFormat,
66
+ this.renderCalender = () => {
67
+ const {
68
+ time,
86
69
  lang,
87
70
  className,
88
71
  firstDayOfWeek
89
72
  } = this.props;
90
- let defaultValue = (0, _dayjs.default)().clone();
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
- this.renderDataPicker = () => {
109
- let {
110
- dateFormat
111
- } = this.props;
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
- value
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)('Please_select'),
106
+ placeholder: (0, _lang.getLocale)('please_select'),
135
107
  readOnly: true,
136
108
  tabIndex: "-1",
137
- className: "form-control",
138
- value: 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
- open: true,
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
- history.pushState(null, null, '#'); // eslint-disable-line
155
- window.addEventListener('popstate', this.handleHistaryBack, false);
156
- }
157
- componentWillUnmount() {
158
- window.removeEventListener('popstate', this.handleHistaryBack, false);
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
- datePickerValue
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: this.state.value,
182
+ value: time,
189
183
  onChange: this.handleDateChange
190
184
  }, /*#__PURE__*/_react.default.createElement("div", {
191
185
  className: "date-input-day"
192
- }, datePickerValue && datePickerValue.format(leftFormat)))), showHourAndMinute && /*#__PURE__*/_react.default.createElement("div", {
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: this.state.value,
194
+ value: time,
198
195
  onChange: this.handleTimeChange
199
196
  }, /*#__PURE__*/_react.default.createElement("div", {
200
197
  className: "date-input-day"
201
- }, datePickerValue && datePickerValue.format(rightFormat))))), /*#__PURE__*/_react.default.createElement("div", {
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.renderDataPicker()), /*#__PURE__*/_react.default.createElement("div", {
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
- exports.getTrimmedString = getTrimmedString;
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');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dtable-ui-component",
3
- "version": "6.0.26beta1",
3
+ "version": "6.0.26beta3",
4
4
  "main": "./lib/index.js",
5
5
  "dependencies": {
6
6
  "@seafile/react-image-lightbox": "4.0.2",