@elliemae/ds-time-picker 2.1.0 → 2.2.0-alpha.3
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/DSTimePicker.js +100 -115
- package/cjs/DSTimePicker.js.map +7 -0
- package/cjs/DSTimePickerMenu.js +46 -33
- package/cjs/DSTimePickerMenu.js.map +7 -0
- package/cjs/PickerPanel.js +151 -254
- package/cjs/PickerPanel.js.map +7 -0
- package/cjs/TimePickerDropdown.js +73 -52
- package/cjs/TimePickerDropdown.js.map +7 -0
- package/cjs/TimePickerImpl.js +146 -138
- package/cjs/TimePickerImpl.js.map +7 -0
- package/cjs/TimePickerMenu.js +138 -209
- package/cjs/TimePickerMenu.js.map +7 -0
- package/cjs/index.js +40 -17
- package/cjs/index.js.map +7 -0
- package/cjs/moveElementOnScroll.js +57 -39
- package/cjs/moveElementOnScroll.js.map +7 -0
- package/cjs/utils.js +57 -24
- package/cjs/utils.js.map +7 -0
- package/esm/DSTimePicker.js +71 -105
- package/esm/DSTimePicker.js.map +7 -0
- package/esm/DSTimePickerMenu.js +17 -22
- package/esm/DSTimePickerMenu.js.map +7 -0
- package/esm/PickerPanel.js +120 -242
- package/esm/PickerPanel.js.map +7 -0
- package/esm/TimePickerDropdown.js +44 -44
- package/esm/TimePickerDropdown.js.map +7 -0
- package/esm/TimePickerImpl.js +106 -117
- package/esm/TimePickerImpl.js.map +7 -0
- package/esm/TimePickerMenu.js +102 -191
- package/esm/TimePickerMenu.js.map +7 -0
- package/esm/index.js +11 -4
- package/esm/index.js.map +7 -0
- package/esm/moveElementOnScroll.js +28 -34
- package/esm/moveElementOnScroll.js.map +7 -0
- package/esm/utils.js +28 -17
- package/esm/utils.js.map +7 -0
- package/package.json +7 -7
- package/types/PickerPanel.d.ts +1 -0
- package/types/TimePickerDropdown.d.ts +1 -0
- package/types/TimePickerImpl.d.ts +1 -0
package/esm/TimePickerMenu.js
CHANGED
|
@@ -1,292 +1,189 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
import { isAM } from './utils.js';
|
|
15
|
-
import PickerPanel from './PickerPanel.js';
|
|
16
|
-
|
|
17
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
18
|
-
|
|
19
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
20
|
-
const blockName = 'time-picker-menu';
|
|
21
|
-
const TimePickerContainer = aggregatedClasses('div')(blockName);
|
|
22
|
-
const TimePickerHeader = aggregatedClasses('div')(blockName, 'header');
|
|
23
|
-
const TimePickerPanelContainer = aggregatedClasses('div')(blockName, 'panel-container');
|
|
24
|
-
|
|
25
|
-
const generateOption = format => option => ({
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import React2, { Component } from "react";
|
|
3
|
+
import PropTypes from "prop-types";
|
|
4
|
+
import { aggregatedClasses } from "@elliemae/ds-classnames";
|
|
5
|
+
import moment from "moment";
|
|
6
|
+
import { range, addLeadingZeros } from "@elliemae/ds-utilities";
|
|
7
|
+
import { isAM } from "./utils";
|
|
8
|
+
import { PickerPanel } from "./PickerPanel";
|
|
9
|
+
const blockName = "time-picker-menu";
|
|
10
|
+
const TimePickerContainer = aggregatedClasses("div")(blockName);
|
|
11
|
+
const TimePickerHeader = aggregatedClasses("div")(blockName, "header");
|
|
12
|
+
const TimePickerPanelContainer = aggregatedClasses("div")(blockName, "panel-container");
|
|
13
|
+
const generateOption = (format) => (option) => ({
|
|
26
14
|
value: option,
|
|
27
|
-
label: typeof format ===
|
|
15
|
+
label: typeof format === "function" ? format(option) : option
|
|
28
16
|
});
|
|
29
|
-
|
|
30
17
|
class TimePickerMenu extends Component {
|
|
31
18
|
constructor(props) {
|
|
32
19
|
super(props);
|
|
33
|
-
|
|
34
20
|
this.renderHeader = () => {
|
|
35
|
-
const {
|
|
36
|
-
|
|
37
|
-
} = this.state;
|
|
38
|
-
return /*#__PURE__*/_jsx(TimePickerHeader, {}, void 0, time.format('hh:mma'));
|
|
21
|
+
const { time } = this.state;
|
|
22
|
+
return /* @__PURE__ */ React2.createElement(TimePickerHeader, null, time.format("hh:mma"));
|
|
39
23
|
};
|
|
40
|
-
|
|
41
24
|
this.state = {
|
|
42
|
-
time: moment(props.time ||
|
|
25
|
+
time: moment(props.time || "", props.format) || moment()
|
|
43
26
|
};
|
|
44
|
-
this.handleHoursChange = this.handleHoursChange.bind(this);
|
|
45
|
-
this.handleMinuteChange = this.handleMinuteChange.bind(this);
|
|
46
|
-
this.handleSecondsChange = this.handleSecondsChange.bind(this);
|
|
47
|
-
this.handleAMPMChange = this.handleAMPMChange.bind(this);
|
|
48
27
|
}
|
|
49
|
-
|
|
50
28
|
static getDerivedStateFromProps(props, state) {
|
|
51
29
|
if (props.time) {
|
|
52
|
-
return
|
|
53
|
-
time: moment(props.time)
|
|
54
|
-
});
|
|
30
|
+
return { ...state, time: moment(props.time) };
|
|
55
31
|
}
|
|
56
|
-
|
|
57
|
-
return _objectSpread(_objectSpread({}, state), {}, {
|
|
58
|
-
time: undefined
|
|
59
|
-
});
|
|
32
|
+
return { ...state, time: void 0 };
|
|
60
33
|
}
|
|
61
|
-
|
|
62
34
|
componentDidMount() {
|
|
63
|
-
const {
|
|
64
|
-
|
|
65
|
-
} = this.state;
|
|
66
|
-
this.setState({
|
|
67
|
-
time
|
|
68
|
-
});
|
|
35
|
+
const { time } = this.state;
|
|
36
|
+
this.setState({ time });
|
|
69
37
|
}
|
|
70
|
-
|
|
71
38
|
handleMinuteChange(value) {
|
|
72
|
-
const {
|
|
73
|
-
time
|
|
74
|
-
} = this.state;
|
|
39
|
+
const { time } = this.state;
|
|
75
40
|
this.updateTime(time.minute(value));
|
|
76
41
|
}
|
|
77
|
-
|
|
78
42
|
handleHoursChange(value) {
|
|
79
|
-
const {
|
|
80
|
-
|
|
81
|
-
} = this.state;
|
|
82
|
-
const {
|
|
83
|
-
use12Hours
|
|
84
|
-
} = this.props;
|
|
43
|
+
const { time } = this.state;
|
|
44
|
+
const { use12Hours } = this.props;
|
|
85
45
|
let nextHour = value;
|
|
86
|
-
|
|
87
46
|
if (use12Hours) {
|
|
88
47
|
if (!isAM(time)) {
|
|
89
48
|
nextHour = value % 12 + 12;
|
|
90
49
|
}
|
|
91
50
|
}
|
|
92
|
-
|
|
93
51
|
this.updateTime(time.hour(nextHour));
|
|
94
52
|
}
|
|
95
|
-
|
|
96
53
|
handleSecondsChange(value) {
|
|
97
|
-
const {
|
|
98
|
-
time
|
|
99
|
-
} = this.state;
|
|
54
|
+
const { time } = this.state;
|
|
100
55
|
this.updateTime(time.second(value));
|
|
101
56
|
}
|
|
102
|
-
|
|
103
57
|
handleAMPMChange(value) {
|
|
104
|
-
const {
|
|
105
|
-
time
|
|
106
|
-
} = this.state;
|
|
58
|
+
const { time } = this.state;
|
|
107
59
|
const hour = time.hour();
|
|
108
|
-
const nextHour = value.toLowerCase() ===
|
|
60
|
+
const nextHour = value.toLowerCase() === "am" ? hour % 12 : hour % 12 + 12;
|
|
109
61
|
this.updateTime(time.hour(nextHour));
|
|
110
62
|
}
|
|
111
|
-
|
|
112
63
|
updateTime(time) {
|
|
113
|
-
const {
|
|
114
|
-
onTimeChange
|
|
115
|
-
} = this.props;
|
|
64
|
+
const { onTimeChange } = this.props;
|
|
116
65
|
onTimeChange(time);
|
|
117
|
-
this.setState({
|
|
118
|
-
time
|
|
119
|
-
});
|
|
66
|
+
this.setState({ time });
|
|
120
67
|
}
|
|
121
|
-
|
|
122
68
|
renderHoursPanel() {
|
|
123
|
-
const {
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
use12Hours,
|
|
129
|
-
format,
|
|
130
|
-
hasHeader,
|
|
131
|
-
disabledTimes
|
|
132
|
-
} = this.props;
|
|
133
|
-
if (!showHours) return null;
|
|
134
|
-
const hour = time.hour(); // in 24 format
|
|
135
|
-
|
|
69
|
+
const { time } = this.state;
|
|
70
|
+
const { showHours, use12Hours, format, hasHeader, disabledTimes } = this.props;
|
|
71
|
+
if (!showHours)
|
|
72
|
+
return null;
|
|
73
|
+
const hour = time.hour();
|
|
136
74
|
let selectedHour = use12Hours ? hour % 12 || 12 : hour;
|
|
137
|
-
|
|
138
75
|
if (disabledTimes) {
|
|
139
|
-
const {
|
|
140
|
-
from,
|
|
141
|
-
to
|
|
142
|
-
} = disabledTimes;
|
|
143
|
-
|
|
76
|
+
const { from, to } = disabledTimes;
|
|
144
77
|
if (hour > from.hour && hour < to.hour) {
|
|
145
78
|
if (to.hour < 24) {
|
|
146
79
|
const toFormatted = to.hour % 12 || 12;
|
|
147
|
-
if (selectedHour !== toFormatted)
|
|
80
|
+
if (selectedHour !== toFormatted)
|
|
81
|
+
this.handleHoursChange(toFormatted);
|
|
148
82
|
selectedHour = toFormatted;
|
|
149
83
|
} else if (from) {
|
|
150
84
|
selectedHour = (from.hour - 1) % 12 || 12;
|
|
151
85
|
}
|
|
152
86
|
}
|
|
153
87
|
}
|
|
154
|
-
|
|
155
|
-
const
|
|
156
|
-
const withLeadingZeros = format.indexOf('hh') > -1;
|
|
88
|
+
const meridiem = hour >= 12 ? "PM" : "AM";
|
|
89
|
+
const withLeadingZeros = format.indexOf("hh") > -1;
|
|
157
90
|
const rangeHours = use12Hours ? range(1, 13) : range(24);
|
|
158
91
|
const hoursOptions = rangeHours.map(generateOption(withLeadingZeros && addLeadingZeros(2)));
|
|
159
|
-
return
|
|
92
|
+
return /* @__PURE__ */ React2.createElement(PickerPanel, {
|
|
160
93
|
type: "hour",
|
|
161
|
-
time
|
|
162
|
-
meridiem
|
|
163
|
-
hasHeader
|
|
94
|
+
time,
|
|
95
|
+
meridiem,
|
|
96
|
+
hasHeader,
|
|
164
97
|
header: "H",
|
|
165
98
|
onChange: this.handleHoursChange,
|
|
166
99
|
options: hoursOptions,
|
|
167
100
|
selected: selectedHour,
|
|
168
|
-
disabledTimes
|
|
101
|
+
disabledTimes
|
|
169
102
|
});
|
|
170
103
|
}
|
|
171
|
-
|
|
172
104
|
renderMinutesPanel() {
|
|
173
|
-
const {
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
format,
|
|
179
|
-
hasHeader,
|
|
180
|
-
disabledTimes,
|
|
181
|
-
minutesInterval
|
|
182
|
-
} = this.props;
|
|
183
|
-
if (!showMinutes) return null;
|
|
184
|
-
const withLeadingZeros = format.indexOf('mm') > -1;
|
|
105
|
+
const { time } = this.state;
|
|
106
|
+
const { showMinutes, format, hasHeader, disabledTimes, minutesInterval } = this.props;
|
|
107
|
+
if (!showMinutes)
|
|
108
|
+
return null;
|
|
109
|
+
const withLeadingZeros = format.indexOf("mm") > -1;
|
|
185
110
|
const rangeMinutes = range(0, 60, minutesInterval).map(generateOption(withLeadingZeros && addLeadingZeros(2)));
|
|
186
111
|
let selectedMinute = time.minute();
|
|
187
112
|
const selectedHour = time.hour();
|
|
188
|
-
|
|
189
113
|
if (disabledTimes) {
|
|
190
|
-
const {
|
|
191
|
-
from,
|
|
192
|
-
to
|
|
193
|
-
} = disabledTimes;
|
|
194
|
-
|
|
114
|
+
const { from, to } = disabledTimes;
|
|
195
115
|
if (selectedHour <= to.hour && selectedHour > from.hour) {
|
|
196
116
|
if (to) {
|
|
197
|
-
if (selectedMinute < to.min)
|
|
117
|
+
if (selectedMinute < to.min)
|
|
118
|
+
this.handleMinuteChange(to.min);
|
|
198
119
|
} else if (from) {
|
|
199
|
-
if (selectedMinute > from.min)
|
|
120
|
+
if (selectedMinute > from.min)
|
|
121
|
+
this.handleMinuteChange(from.min - 1);
|
|
200
122
|
}
|
|
201
123
|
} else {
|
|
202
124
|
selectedMinute = time.minute();
|
|
203
125
|
}
|
|
204
126
|
}
|
|
205
|
-
|
|
206
|
-
return /*#__PURE__*/_jsx(PickerPanel, {
|
|
127
|
+
return /* @__PURE__ */ React2.createElement(PickerPanel, {
|
|
207
128
|
type: "minutes",
|
|
208
|
-
time
|
|
209
|
-
hasHeader
|
|
129
|
+
time,
|
|
130
|
+
hasHeader,
|
|
210
131
|
header: "M",
|
|
211
132
|
onChange: this.handleMinuteChange,
|
|
212
133
|
options: rangeMinutes,
|
|
213
134
|
selected: selectedMinute,
|
|
214
|
-
disabledTimes
|
|
135
|
+
disabledTimes
|
|
215
136
|
});
|
|
216
137
|
}
|
|
217
|
-
|
|
218
138
|
renderSecondsPanel() {
|
|
219
|
-
const {
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
format,
|
|
225
|
-
hasHeader
|
|
226
|
-
} = this.props;
|
|
227
|
-
if (!showSeconds) return null;
|
|
228
|
-
const withLeadingZeros = format.indexOf('ss') > -1;
|
|
139
|
+
const { time } = this.state;
|
|
140
|
+
const { showSeconds, format, hasHeader } = this.props;
|
|
141
|
+
if (!showSeconds)
|
|
142
|
+
return null;
|
|
143
|
+
const withLeadingZeros = format.indexOf("ss") > -1;
|
|
229
144
|
const rangeSeconds = range(60).map(generateOption(withLeadingZeros && addLeadingZeros(2)));
|
|
230
|
-
return
|
|
145
|
+
return /* @__PURE__ */ React2.createElement(PickerPanel, {
|
|
231
146
|
type: "seconds",
|
|
232
|
-
hasHeader
|
|
147
|
+
hasHeader,
|
|
233
148
|
header: "S",
|
|
234
149
|
onChange: this.handleSecondsChange,
|
|
235
150
|
options: rangeSeconds,
|
|
236
151
|
selected: time.second()
|
|
237
152
|
});
|
|
238
153
|
}
|
|
239
|
-
|
|
240
154
|
renderAMPMPanel() {
|
|
241
|
-
const {
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
disabledTimes
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
let meridiemSelected = !isAM(time) ? 'pm' : 'am';
|
|
251
|
-
|
|
252
|
-
if (disabledTimes && disabledTimes.to && meridiemSelected === 'am') {
|
|
253
|
-
meridiemSelected = disabledTimes.to.hour >= 12 ? 'pm' : 'am';
|
|
254
|
-
|
|
255
|
-
if (meridiemSelected === 'am' && time.hour() > 12) {
|
|
256
|
-
this.handleAMPMChange('am');
|
|
155
|
+
const { time } = this.state;
|
|
156
|
+
const { use12Hours, hasHeader, disabledTimes } = this.props;
|
|
157
|
+
if (!use12Hours)
|
|
158
|
+
return null;
|
|
159
|
+
let meridiemSelected = !isAM(time) ? "pm" : "am";
|
|
160
|
+
if (disabledTimes && disabledTimes.to && meridiemSelected === "am") {
|
|
161
|
+
meridiemSelected = disabledTimes.to.hour >= 12 ? "pm" : "am";
|
|
162
|
+
if (meridiemSelected === "am" && time.hour() > 12) {
|
|
163
|
+
this.handleAMPMChange("am");
|
|
257
164
|
}
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
this.handleAMPMChange('pm');
|
|
165
|
+
if (meridiemSelected === "pm" && time.hour() <= 12) {
|
|
166
|
+
this.handleAMPMChange("pm");
|
|
261
167
|
}
|
|
262
168
|
}
|
|
263
|
-
|
|
264
|
-
return /*#__PURE__*/_jsx(PickerPanel, {
|
|
169
|
+
return /* @__PURE__ */ React2.createElement(PickerPanel, {
|
|
265
170
|
type: "meridiem",
|
|
266
|
-
hasHeader
|
|
171
|
+
hasHeader,
|
|
267
172
|
header: "",
|
|
268
173
|
onChange: this.handleAMPMChange,
|
|
269
|
-
options: [
|
|
270
|
-
value:
|
|
271
|
-
label:
|
|
272
|
-
|
|
273
|
-
value: 'pm',
|
|
274
|
-
label: 'pm'
|
|
275
|
-
}],
|
|
174
|
+
options: [
|
|
175
|
+
{ value: "am", label: "am" },
|
|
176
|
+
{ value: "pm", label: "pm" }
|
|
177
|
+
],
|
|
276
178
|
selected: meridiemSelected,
|
|
277
|
-
disabledTimes
|
|
179
|
+
disabledTimes
|
|
278
180
|
});
|
|
279
181
|
}
|
|
280
|
-
|
|
281
182
|
render() {
|
|
282
|
-
const {
|
|
283
|
-
|
|
284
|
-
} = this.props;
|
|
285
|
-
return /*#__PURE__*/_jsx(TimePickerContainer, {}, void 0, hasHeaderDisplay && this.renderHeader(), /*#__PURE__*/_jsx(TimePickerPanelContainer, {}, void 0, this.renderHoursPanel(), this.renderMinutesPanel(), this.renderSecondsPanel(), this.renderAMPMPanel()));
|
|
183
|
+
const { hasHeaderDisplay } = this.props;
|
|
184
|
+
return /* @__PURE__ */ React2.createElement(TimePickerContainer, null, hasHeaderDisplay && this.renderHeader(), /* @__PURE__ */ React2.createElement(TimePickerPanelContainer, null, this.renderHoursPanel(), this.renderMinutesPanel(), this.renderSecondsPanel(), this.renderAMPMPanel()));
|
|
286
185
|
}
|
|
287
|
-
|
|
288
186
|
}
|
|
289
|
-
|
|
290
187
|
TimePickerMenu.defaultProps = {
|
|
291
188
|
time: moment(),
|
|
292
189
|
hasHeader: false,
|
|
@@ -294,8 +191,22 @@ TimePickerMenu.defaultProps = {
|
|
|
294
191
|
showSeconds: true,
|
|
295
192
|
showMinutes: true,
|
|
296
193
|
showHours: true,
|
|
297
|
-
disabledTimes:
|
|
194
|
+
disabledTimes: void 0,
|
|
298
195
|
onTimeChange: () => null
|
|
299
196
|
};
|
|
300
|
-
|
|
301
|
-
|
|
197
|
+
TimePickerMenu.propTypes = {
|
|
198
|
+
time: PropTypes.instanceOf(moment),
|
|
199
|
+
hasHeader: PropTypes.bool,
|
|
200
|
+
use12Hours: PropTypes.bool,
|
|
201
|
+
showSeconds: PropTypes.bool,
|
|
202
|
+
showMinutes: PropTypes.bool,
|
|
203
|
+
showHours: PropTypes.bool,
|
|
204
|
+
onTimeChange: PropTypes.func,
|
|
205
|
+
disabledTimes: PropTypes.object
|
|
206
|
+
};
|
|
207
|
+
var TimePickerMenu_default = TimePickerMenu;
|
|
208
|
+
export {
|
|
209
|
+
TimePickerMenu,
|
|
210
|
+
TimePickerMenu_default as default
|
|
211
|
+
};
|
|
212
|
+
//# sourceMappingURL=TimePickerMenu.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../scripts/build/transpile/react-shim.js", "../../src/TimePickerMenu.tsx"],
|
|
4
|
+
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable complexity */\n/* eslint-disable max-lines */\n/* eslint-disable react/prop-types */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { aggregatedClasses } from '@elliemae/ds-classnames';\nimport moment from 'moment';\nimport { range, addLeadingZeros } from '@elliemae/ds-utilities';\nimport { isAM } from './utils';\nimport { PickerPanel } from './PickerPanel';\n\nconst blockName = 'time-picker-menu';\n\nconst TimePickerContainer = aggregatedClasses('div')(blockName);\nconst TimePickerHeader = aggregatedClasses('div')(blockName, 'header');\nconst TimePickerPanelContainer = aggregatedClasses('div')(blockName, 'panel-container');\n\nconst generateOption = (format) => (option) => ({\n value: option,\n label: typeof format === 'function' ? format(option) : option,\n});\n\nclass TimePickerMenu extends Component {\n constructor(props) {\n super(props);\n this.state = {\n time: moment(props.time || '', props.format) || moment(),\n };\n }\n\n static getDerivedStateFromProps(props, state) {\n if (props.time) {\n return { ...state, time: moment(props.time) };\n }\n return { ...state, time: undefined };\n }\n\n componentDidMount() {\n const { time } = this.state;\n this.setState({ time });\n }\n\n handleMinuteChange(value) {\n const { time } = this.state;\n this.updateTime(time.minute(value));\n }\n\n handleHoursChange(value) {\n const { time } = this.state;\n const { use12Hours } = this.props;\n let nextHour = value;\n if (use12Hours) {\n if (!isAM(time)) {\n nextHour = (value % 12) + 12;\n }\n }\n this.updateTime(time.hour(nextHour));\n }\n\n handleSecondsChange(value) {\n const { time } = this.state;\n this.updateTime(time.second(value));\n }\n\n handleAMPMChange(value) {\n const { time } = this.state;\n const hour = time.hour();\n const nextHour = value.toLowerCase() === 'am' ? hour % 12 : (hour % 12) + 12;\n this.updateTime(time.hour(nextHour));\n }\n\n updateTime(time) {\n const { onTimeChange } = this.props;\n onTimeChange(time);\n this.setState({ time });\n }\n\n renderHoursPanel() {\n const { time } = this.state;\n const { showHours, use12Hours, format, hasHeader, disabledTimes } = this.props;\n if (!showHours) return null;\n\n const hour = time.hour(); // in 24 format\n let selectedHour = use12Hours ? hour % 12 || 12 : hour;\n if (disabledTimes) {\n const { from, to } = disabledTimes;\n if (hour > from.hour && hour < to.hour) {\n if (to.hour < 24) {\n const toFormatted = to.hour % 12 || 12;\n if (selectedHour !== toFormatted) this.handleHoursChange(toFormatted);\n selectedHour = toFormatted;\n } else if (from) {\n selectedHour = (from.hour - 1) % 12 || 12;\n }\n }\n }\n\n const meridiem = hour >= 12 ? 'PM' : 'AM';\n const withLeadingZeros = format.indexOf('hh') > -1;\n const rangeHours = use12Hours ? range(1, 13) : range(24);\n const hoursOptions = rangeHours.map(generateOption(withLeadingZeros && addLeadingZeros(2)));\n return (\n <PickerPanel\n type=\"hour\"\n time={time}\n meridiem={meridiem}\n hasHeader={hasHeader}\n header=\"H\"\n onChange={this.handleHoursChange}\n options={hoursOptions}\n selected={selectedHour}\n disabledTimes={disabledTimes}\n />\n );\n }\n\n renderMinutesPanel() {\n const { time } = this.state;\n const { showMinutes, format, hasHeader, disabledTimes, minutesInterval } = this.props;\n if (!showMinutes) return null;\n const withLeadingZeros = format.indexOf('mm') > -1;\n const rangeMinutes = range(0, 60, minutesInterval).map(generateOption(withLeadingZeros && addLeadingZeros(2)));\n\n let selectedMinute = time.minute();\n const selectedHour = time.hour();\n\n if (disabledTimes) {\n const { from, to } = disabledTimes;\n if (selectedHour <= to.hour && selectedHour > from.hour) {\n if (to) {\n if (selectedMinute < to.min) this.handleMinuteChange(to.min);\n } else if (from) {\n if (selectedMinute > from.min) this.handleMinuteChange(from.min - 1);\n }\n } else {\n selectedMinute = time.minute();\n }\n }\n\n return (\n <PickerPanel\n type=\"minutes\"\n time={time}\n hasHeader={hasHeader}\n header=\"M\"\n onChange={this.handleMinuteChange}\n options={rangeMinutes}\n selected={selectedMinute}\n disabledTimes={disabledTimes}\n />\n );\n }\n\n renderSecondsPanel() {\n const { time } = this.state;\n const { showSeconds, format, hasHeader } = this.props;\n if (!showSeconds) return null;\n const withLeadingZeros = format.indexOf('ss') > -1;\n const rangeSeconds = range(60).map(generateOption(withLeadingZeros && addLeadingZeros(2)));\n return (\n <PickerPanel\n type=\"seconds\"\n hasHeader={hasHeader}\n header=\"S\"\n onChange={this.handleSecondsChange}\n options={rangeSeconds}\n selected={time.second()}\n />\n );\n }\n\n renderAMPMPanel() {\n const { time } = this.state;\n const { use12Hours, hasHeader, disabledTimes } = this.props;\n if (!use12Hours) return null;\n\n let meridiemSelected = !isAM(time) ? 'pm' : 'am';\n if (disabledTimes && disabledTimes.to && meridiemSelected === 'am') {\n meridiemSelected = disabledTimes.to.hour >= 12 ? 'pm' : 'am';\n if (meridiemSelected === 'am' && time.hour() > 12) {\n this.handleAMPMChange('am');\n }\n\n if (meridiemSelected === 'pm' && time.hour() <= 12) {\n this.handleAMPMChange('pm');\n }\n }\n\n return (\n <PickerPanel\n type=\"meridiem\"\n hasHeader={hasHeader}\n header=\"\"\n onChange={this.handleAMPMChange}\n options={[\n { value: 'am', label: 'am' },\n { value: 'pm', label: 'pm' },\n ]}\n selected={meridiemSelected}\n disabledTimes={disabledTimes}\n />\n );\n }\n\n renderHeader = () => {\n const { time } = this.state;\n return <TimePickerHeader>{time.format('hh:mma')}</TimePickerHeader>;\n };\n\n render() {\n const { hasHeaderDisplay } = this.props;\n\n return (\n <TimePickerContainer>\n {hasHeaderDisplay && this.renderHeader()}\n <TimePickerPanelContainer>\n {this.renderHoursPanel()}\n {this.renderMinutesPanel()}\n {this.renderSecondsPanel()}\n {this.renderAMPMPanel()}\n </TimePickerPanelContainer>\n </TimePickerContainer>\n );\n }\n}\n\nTimePickerMenu.defaultProps = {\n time: moment(),\n hasHeader: false,\n use12Hours: true,\n showSeconds: true,\n showMinutes: true,\n showHours: true,\n disabledTimes: undefined,\n onTimeChange: () => null,\n};\n\nTimePickerMenu.propTypes = {\n /** Time value */\n time: PropTypes.instanceOf(moment),\n /** If the menu has header or not */\n hasHeader: PropTypes.bool,\n /** Whether to use the 12 hours format */\n use12Hours: PropTypes.bool,\n /** Whether show 'seconds' or not */\n showSeconds: PropTypes.bool,\n /** Whether show 'minutes' or not */\n showMinutes: PropTypes.bool,\n /** Whether show 'hours' or not */\n showHours: PropTypes.bool,\n /** Handler when time changes */\n onTimeChange: PropTypes.func,\n disabledTimes: PropTypes.object,\n};\n\nexport { TimePickerMenu };\nexport default TimePickerMenu;\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
package/esm/index.js
CHANGED
|
@@ -1,4 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
export
|
|
3
|
-
export
|
|
4
|
-
export
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
export * from "./DSTimePicker";
|
|
3
|
+
export * from "./TimePickerMenu";
|
|
4
|
+
export * from "./DSTimePickerMenu";
|
|
5
|
+
import { convertTimeString } from "./utils";
|
|
6
|
+
import { default as default2 } from "./DSTimePicker";
|
|
7
|
+
export {
|
|
8
|
+
convertTimeString,
|
|
9
|
+
default2 as default
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
package/esm/index.js.map
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../scripts/build/transpile/react-shim.js", "../../src/index.tsx"],
|
|
4
|
+
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "export * from './DSTimePicker';\nexport * from './TimePickerMenu';\nexport * from './DSTimePickerMenu';\n\nexport { convertTimeString } from './utils'; // this is an exception, we should move utils to shared tho?\n\nexport { default } from './DSTimePicker';\n"],
|
|
5
|
+
"mappings": "AAAA;ACAA;AACA;AACA;AAEA;AAEA;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -1,28 +1,25 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
function MoveElementOnScroll(element, {
|
|
3
|
+
container,
|
|
4
|
+
min = 0,
|
|
5
|
+
max = element.offsetHeight,
|
|
6
|
+
speed = 1,
|
|
7
|
+
smooth = 2,
|
|
8
|
+
onUpdate = () => null,
|
|
9
|
+
onEndScroll = () => null
|
|
10
|
+
}) {
|
|
11
11
|
let moving = false;
|
|
12
12
|
let pos = min;
|
|
13
|
-
let lastPos = pos;
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
window.setTimeout(func, 1000 / 50);
|
|
13
|
+
let lastPos = pos;
|
|
14
|
+
const requestFrame = function() {
|
|
15
|
+
return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function(func) {
|
|
16
|
+
window.setTimeout(func, 1e3 / 50);
|
|
18
17
|
};
|
|
19
18
|
}();
|
|
20
|
-
|
|
21
19
|
function update() {
|
|
22
20
|
moving = true;
|
|
23
21
|
const delta = (pos - lastPos) / smooth;
|
|
24
22
|
lastPos += delta;
|
|
25
|
-
|
|
26
23
|
if (Math.abs(delta) > 0.7) {
|
|
27
24
|
requestFrame(() => {
|
|
28
25
|
onUpdate(lastPos, delta);
|
|
@@ -33,38 +30,35 @@ function MoveElementOnScroll(element, _ref) {
|
|
|
33
30
|
moving = false;
|
|
34
31
|
}
|
|
35
32
|
}
|
|
36
|
-
|
|
37
33
|
function scrolling(e) {
|
|
38
|
-
e.preventDefault();
|
|
39
|
-
|
|
34
|
+
e.preventDefault();
|
|
40
35
|
let delta = e.delta || e.wheelDelta;
|
|
41
|
-
|
|
42
|
-
if (delta === undefined) {
|
|
43
|
-
// for firefox
|
|
36
|
+
if (delta === void 0) {
|
|
44
37
|
delta = -e.detail;
|
|
45
38
|
delta *= 10 * speed;
|
|
46
39
|
}
|
|
47
|
-
|
|
48
40
|
pos += -delta * speed;
|
|
49
|
-
pos = Math.max(min, Math.min(pos, max));
|
|
50
|
-
|
|
41
|
+
pos = Math.max(min, Math.min(pos, max));
|
|
51
42
|
if (!moving) {
|
|
52
43
|
update();
|
|
53
44
|
}
|
|
54
45
|
}
|
|
55
|
-
|
|
56
|
-
container.addEventListener(
|
|
57
|
-
container.addEventListener('DOMMouseScroll', scrolling, false);
|
|
46
|
+
container.addEventListener("mousewheel", scrolling, false);
|
|
47
|
+
container.addEventListener("DOMMouseScroll", scrolling, false);
|
|
58
48
|
return {
|
|
59
49
|
unsubscribe: () => {
|
|
60
|
-
container.removeEventListener(
|
|
61
|
-
container.removeEventListener(
|
|
50
|
+
container.removeEventListener("mousewheel", scrolling);
|
|
51
|
+
container.removeEventListener("DOMMouseScroll", scrolling);
|
|
62
52
|
},
|
|
63
|
-
updatePosition: newPos => {
|
|
53
|
+
updatePosition: (newPos) => {
|
|
64
54
|
pos = -newPos;
|
|
65
55
|
lastPos = -pos;
|
|
66
56
|
}
|
|
67
57
|
};
|
|
68
58
|
}
|
|
69
|
-
|
|
70
|
-
export {
|
|
59
|
+
var moveElementOnScroll_default = MoveElementOnScroll;
|
|
60
|
+
export {
|
|
61
|
+
MoveElementOnScroll,
|
|
62
|
+
moveElementOnScroll_default as default
|
|
63
|
+
};
|
|
64
|
+
//# sourceMappingURL=moveElementOnScroll.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../scripts/build/transpile/react-shim.js", "../../src/moveElementOnScroll.tsx"],
|
|
4
|
+
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "export function MoveElementOnScroll(\n element,\n {\n container,\n min = 0,\n max = element.offsetHeight,\n speed = 1,\n smooth = 2,\n onUpdate = () => null,\n onEndScroll = () => null,\n },\n) {\n let moving = false;\n let pos = min;\n let lastPos = pos;\n\n // todo: move this to utils if we finally need it\n const requestFrame = (function() {\n return (\n window.requestAnimationFrame ||\n window.webkitRequestAnimationFrame ||\n window.mozRequestAnimationFrame ||\n window.oRequestAnimationFrame ||\n window.msRequestAnimationFrame ||\n function(func) {\n window.setTimeout(func, 1000 / 50);\n }\n );\n })();\n\n function update() {\n moving = true;\n const delta = (pos - lastPos) / smooth;\n lastPos += delta;\n\n if (Math.abs(delta) > 0.7) {\n requestFrame(() => {\n onUpdate(lastPos, delta);\n update();\n });\n } else {\n onEndScroll(pos);\n moving = false;\n }\n }\n\n function scrolling(e) {\n e.preventDefault(); // disable default scrolling\n let delta = e.delta || e.wheelDelta;\n if (delta === undefined) {\n // for firefox\n delta = -e.detail;\n delta *= 10 * speed;\n }\n\n pos += -delta * speed;\n pos = Math.max(min, Math.min(pos, max)); // limit scrolling\n if (!moving) {\n update();\n }\n }\n\n container.addEventListener('mousewheel', scrolling, false);\n container.addEventListener('DOMMouseScroll', scrolling, false);\n\n return {\n unsubscribe: () => {\n container.removeEventListener('mousewheel', scrolling);\n container.removeEventListener('DOMMouseScroll', scrolling);\n },\n updatePosition: newPos => {\n pos = -newPos;\n lastPos = -pos;\n },\n };\n}\n\nexport default MoveElementOnScroll;\n"],
|
|
5
|
+
"mappings": "AAAA;ACAO,6BACL,SACA;AAAA,EACE;AAAA,EACA,MAAM;AAAA,EACN,MAAM,QAAQ;AAAA,EACd,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,WAAW,MAAM;AAAA,EACjB,cAAc,MAAM;AAAA,GAEtB;AACA,MAAI,SAAS;AACb,MAAI,MAAM;AACV,MAAI,UAAU;AAGd,QAAM,eAAgB,WAAW;AAC/B,WACE,OAAO,yBACP,OAAO,+BACP,OAAO,4BACP,OAAO,0BACP,OAAO,2BACP,SAAS,MAAM;AACb,aAAO,WAAW,MAAM,MAAO;AAAA;AAAA;AAKrC,oBAAkB;AAChB,aAAS;AACT,UAAM,QAAS,OAAM,WAAW;AAChC,eAAW;AAEX,QAAI,KAAK,IAAI,SAAS,KAAK;AACzB,mBAAa,MAAM;AACjB,iBAAS,SAAS;AAClB;AAAA;AAAA,WAEG;AACL,kBAAY;AACZ,eAAS;AAAA;AAAA;AAIb,qBAAmB,GAAG;AACpB,MAAE;AACF,QAAI,QAAQ,EAAE,SAAS,EAAE;AACzB,QAAI,UAAU,QAAW;AAEvB,cAAQ,CAAC,EAAE;AACX,eAAS,KAAK;AAAA;AAGhB,WAAO,CAAC,QAAQ;AAChB,UAAM,KAAK,IAAI,KAAK,KAAK,IAAI,KAAK;AAClC,QAAI,CAAC,QAAQ;AACX;AAAA;AAAA;AAIJ,YAAU,iBAAiB,cAAc,WAAW;AACpD,YAAU,iBAAiB,kBAAkB,WAAW;AAExD,SAAO;AAAA,IACL,aAAa,MAAM;AACjB,gBAAU,oBAAoB,cAAc;AAC5C,gBAAU,oBAAoB,kBAAkB;AAAA;AAAA,IAElD,gBAAgB,YAAU;AACxB,YAAM,CAAC;AACP,gBAAU,CAAC;AAAA;AAAA;AAAA;AAKjB,IAAO,8BAAQ;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
package/esm/utils.js
CHANGED
|
@@ -1,24 +1,30 @@
|
|
|
1
|
+
import * as React from "react";
|
|
1
2
|
const validateIndex = (index, options) => {
|
|
2
|
-
if (index < 0)
|
|
3
|
-
|
|
3
|
+
if (index < 0)
|
|
4
|
+
return 0;
|
|
5
|
+
if (index >= options.length)
|
|
6
|
+
return options.length - 1;
|
|
4
7
|
return index;
|
|
5
8
|
};
|
|
6
|
-
const getOptionIndex =
|
|
7
|
-
|
|
8
|
-
const index = options.findIndex(option => option[valueProperty] === selectedOption);
|
|
9
|
+
const getOptionIndex = (options, selectedOption, valueProperty = "value") => {
|
|
10
|
+
const index = options.findIndex((option) => option[valueProperty] === selectedOption);
|
|
9
11
|
return validateIndex(index, options);
|
|
10
12
|
};
|
|
11
|
-
const isAM = time => time && time.hour() < 12;
|
|
12
|
-
const convertTimeString = string => {
|
|
13
|
-
if (!string)
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
const isAM = (time) => time && time.hour() < 12;
|
|
14
|
+
const convertTimeString = (string) => {
|
|
15
|
+
if (!string)
|
|
16
|
+
return null;
|
|
17
|
+
let meridiem = "AM";
|
|
18
|
+
if (string.toUpperCase().includes("PM"))
|
|
19
|
+
meridiem = "PM";
|
|
20
|
+
const arr = string.split(":");
|
|
17
21
|
let hour = parseInt(arr[0], 10);
|
|
18
|
-
if (meridiem ===
|
|
19
|
-
|
|
20
|
-
if (meridiem ===
|
|
21
|
-
|
|
22
|
+
if (meridiem === "PM" && hour !== 12)
|
|
23
|
+
hour += 12;
|
|
24
|
+
if (meridiem === "AM" && hour === 12)
|
|
25
|
+
hour = 0;
|
|
26
|
+
if (meridiem === "PM" && hour === 12)
|
|
27
|
+
hour = 12;
|
|
22
28
|
const min = parseInt(arr[1], 10);
|
|
23
29
|
const sec = parseInt(arr[2], 10);
|
|
24
30
|
return {
|
|
@@ -27,5 +33,10 @@ const convertTimeString = string => {
|
|
|
27
33
|
sec
|
|
28
34
|
};
|
|
29
35
|
};
|
|
30
|
-
|
|
31
|
-
|
|
36
|
+
export {
|
|
37
|
+
convertTimeString,
|
|
38
|
+
getOptionIndex,
|
|
39
|
+
isAM,
|
|
40
|
+
validateIndex
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=utils.js.map
|
package/esm/utils.js.map
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../scripts/build/transpile/react-shim.js", "../../src/utils.tsx"],
|
|
4
|
+
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "export const validateIndex = (index, options) => {\n if (index < 0) return 0;\n if (index >= options.length) return options.length - 1;\n return index;\n};\n\nexport const getOptionIndex = (\n options,\n selectedOption,\n valueProperty = 'value',\n) => {\n const index = options.findIndex(\n (option) => option[valueProperty] === selectedOption,\n );\n return validateIndex(index, options);\n};\n\nexport const isAM = (time) => time && time.hour() < 12;\n\nexport const convertTimeString = (string) => {\n if (!string) return null;\n let meridiem = 'AM';\n if (string.toUpperCase().includes('PM')) meridiem = 'PM';\n\n const arr = string.split(':');\n let hour = parseInt(arr[0], 10);\n if (meridiem === 'PM' && hour !== 12) hour += 12; // formats to 24\n if (meridiem === 'AM' && hour === 12) hour = 0;\n if (meridiem === 'PM' && hour === 12) hour = 12;\n\n const min = parseInt(arr[1], 10);\n const sec = parseInt(arr[2], 10);\n\n return {\n hour,\n min,\n sec,\n };\n};\n"],
|
|
5
|
+
"mappings": "AAAA;ACAO,MAAM,gBAAgB,CAAC,OAAO,YAAY;AAC/C,MAAI,QAAQ;AAAG,WAAO;AACtB,MAAI,SAAS,QAAQ;AAAQ,WAAO,QAAQ,SAAS;AACrD,SAAO;AAAA;AAGF,MAAM,iBAAiB,CAC5B,SACA,gBACA,gBAAgB,YACb;AACH,QAAM,QAAQ,QAAQ,UACpB,CAAC,WAAW,OAAO,mBAAmB;AAExC,SAAO,cAAc,OAAO;AAAA;AAGvB,MAAM,OAAO,CAAC,SAAS,QAAQ,KAAK,SAAS;AAE7C,MAAM,oBAAoB,CAAC,WAAW;AAC3C,MAAI,CAAC;AAAQ,WAAO;AACpB,MAAI,WAAW;AACf,MAAI,OAAO,cAAc,SAAS;AAAO,eAAW;AAEpD,QAAM,MAAM,OAAO,MAAM;AACzB,MAAI,OAAO,SAAS,IAAI,IAAI;AAC5B,MAAI,aAAa,QAAQ,SAAS;AAAI,YAAQ;AAC9C,MAAI,aAAa,QAAQ,SAAS;AAAI,WAAO;AAC7C,MAAI,aAAa,QAAQ,SAAS;AAAI,WAAO;AAE7C,QAAM,MAAM,SAAS,IAAI,IAAI;AAC7B,QAAM,MAAM,SAAS,IAAI,IAAI;AAE7B,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA;AAAA;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|