@elliemae/ds-time-picker 2.2.0 → 2.3.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/cjs/TimePickerMenu.js
CHANGED
|
@@ -1,312 +1,241 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
var
|
|
6
|
-
var
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
var
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __reExport = (target, module2, copyDefault, desc) => {
|
|
13
|
+
if (module2 && typeof module2 === "object" || typeof module2 === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(module2))
|
|
15
|
+
if (!__hasOwnProp.call(target, key) && (copyDefault || key !== "default"))
|
|
16
|
+
__defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return target;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (module2, isNodeMode) => {
|
|
21
|
+
return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", !isNodeMode && module2 && module2.__esModule ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
|
|
22
|
+
};
|
|
23
|
+
var __toCommonJS = /* @__PURE__ */ ((cache) => {
|
|
24
|
+
return (module2, temp) => {
|
|
25
|
+
return cache && cache.get(module2) || (temp = __reExport(__markAsModule({}), module2, 1), cache && cache.set(module2, temp), temp);
|
|
26
|
+
};
|
|
27
|
+
})(typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : 0);
|
|
28
|
+
var TimePickerMenu_exports = {};
|
|
29
|
+
__export(TimePickerMenu_exports, {
|
|
30
|
+
TimePickerMenu: () => TimePickerMenu,
|
|
31
|
+
default: () => TimePickerMenu_default
|
|
32
|
+
});
|
|
33
|
+
var React = __toESM(require("react"));
|
|
34
|
+
var import_react = __toESM(require("react"));
|
|
35
|
+
var import_prop_types = __toESM(require("prop-types"));
|
|
36
|
+
var import_ds_classnames = require("@elliemae/ds-classnames");
|
|
37
|
+
var import_moment = __toESM(require("moment"));
|
|
38
|
+
var import_ds_utilities = require("@elliemae/ds-utilities");
|
|
39
|
+
var import_utils = require("./utils");
|
|
40
|
+
var import_PickerPanel = require("./PickerPanel");
|
|
41
|
+
const blockName = "time-picker-menu";
|
|
42
|
+
const TimePickerContainer = (0, import_ds_classnames.aggregatedClasses)("div")(blockName);
|
|
43
|
+
const TimePickerHeader = (0, import_ds_classnames.aggregatedClasses)("div")(blockName, "header");
|
|
44
|
+
const TimePickerPanelContainer = (0, import_ds_classnames.aggregatedClasses)("div")(blockName, "panel-container");
|
|
45
|
+
const generateOption = (format) => (option) => ({
|
|
36
46
|
value: option,
|
|
37
|
-
label: typeof format ===
|
|
47
|
+
label: typeof format === "function" ? format(option) : option
|
|
38
48
|
});
|
|
39
|
-
|
|
40
|
-
class TimePickerMenu extends React.Component {
|
|
49
|
+
class TimePickerMenu extends import_react.Component {
|
|
41
50
|
constructor(props) {
|
|
42
51
|
super(props);
|
|
43
|
-
|
|
44
52
|
this.renderHeader = () => {
|
|
45
|
-
const {
|
|
46
|
-
|
|
47
|
-
} = this.state;
|
|
48
|
-
return /*#__PURE__*/_jsx__default["default"](TimePickerHeader, {}, void 0, time.format('hh:mma'));
|
|
53
|
+
const { time } = this.state;
|
|
54
|
+
return /* @__PURE__ */ import_react.default.createElement(TimePickerHeader, null, time.format("hh:mma"));
|
|
49
55
|
};
|
|
50
|
-
|
|
51
56
|
this.state = {
|
|
52
|
-
time:
|
|
57
|
+
time: (0, import_moment.default)(props.time || "", props.format) || (0, import_moment.default)()
|
|
53
58
|
};
|
|
54
|
-
this.handleHoursChange = this.handleHoursChange.bind(this);
|
|
55
|
-
this.handleMinuteChange = this.handleMinuteChange.bind(this);
|
|
56
|
-
this.handleSecondsChange = this.handleSecondsChange.bind(this);
|
|
57
|
-
this.handleAMPMChange = this.handleAMPMChange.bind(this);
|
|
58
59
|
}
|
|
59
|
-
|
|
60
60
|
static getDerivedStateFromProps(props, state) {
|
|
61
61
|
if (props.time) {
|
|
62
|
-
return
|
|
63
|
-
time: moment__default["default"](props.time)
|
|
64
|
-
});
|
|
62
|
+
return { ...state, time: (0, import_moment.default)(props.time) };
|
|
65
63
|
}
|
|
66
|
-
|
|
67
|
-
return _objectSpread(_objectSpread({}, state), {}, {
|
|
68
|
-
time: undefined
|
|
69
|
-
});
|
|
64
|
+
return { ...state, time: void 0 };
|
|
70
65
|
}
|
|
71
|
-
|
|
72
66
|
componentDidMount() {
|
|
73
|
-
const {
|
|
74
|
-
|
|
75
|
-
} = this.state;
|
|
76
|
-
this.setState({
|
|
77
|
-
time
|
|
78
|
-
});
|
|
67
|
+
const { time } = this.state;
|
|
68
|
+
this.setState({ time });
|
|
79
69
|
}
|
|
80
|
-
|
|
81
70
|
handleMinuteChange(value) {
|
|
82
|
-
const {
|
|
83
|
-
time
|
|
84
|
-
} = this.state;
|
|
71
|
+
const { time } = this.state;
|
|
85
72
|
this.updateTime(time.minute(value));
|
|
86
73
|
}
|
|
87
|
-
|
|
88
74
|
handleHoursChange(value) {
|
|
89
|
-
const {
|
|
90
|
-
|
|
91
|
-
} = this.state;
|
|
92
|
-
const {
|
|
93
|
-
use12Hours
|
|
94
|
-
} = this.props;
|
|
75
|
+
const { time } = this.state;
|
|
76
|
+
const { use12Hours } = this.props;
|
|
95
77
|
let nextHour = value;
|
|
96
|
-
|
|
97
78
|
if (use12Hours) {
|
|
98
|
-
if (!
|
|
79
|
+
if (!(0, import_utils.isAM)(time)) {
|
|
99
80
|
nextHour = value % 12 + 12;
|
|
100
81
|
}
|
|
101
82
|
}
|
|
102
|
-
|
|
103
83
|
this.updateTime(time.hour(nextHour));
|
|
104
84
|
}
|
|
105
|
-
|
|
106
85
|
handleSecondsChange(value) {
|
|
107
|
-
const {
|
|
108
|
-
time
|
|
109
|
-
} = this.state;
|
|
86
|
+
const { time } = this.state;
|
|
110
87
|
this.updateTime(time.second(value));
|
|
111
88
|
}
|
|
112
|
-
|
|
113
89
|
handleAMPMChange(value) {
|
|
114
|
-
const {
|
|
115
|
-
time
|
|
116
|
-
} = this.state;
|
|
90
|
+
const { time } = this.state;
|
|
117
91
|
const hour = time.hour();
|
|
118
|
-
const nextHour = value.toLowerCase() ===
|
|
92
|
+
const nextHour = value.toLowerCase() === "am" ? hour % 12 : hour % 12 + 12;
|
|
119
93
|
this.updateTime(time.hour(nextHour));
|
|
120
94
|
}
|
|
121
|
-
|
|
122
95
|
updateTime(time) {
|
|
123
|
-
const {
|
|
124
|
-
onTimeChange
|
|
125
|
-
} = this.props;
|
|
96
|
+
const { onTimeChange } = this.props;
|
|
126
97
|
onTimeChange(time);
|
|
127
|
-
this.setState({
|
|
128
|
-
time
|
|
129
|
-
});
|
|
98
|
+
this.setState({ time });
|
|
130
99
|
}
|
|
131
|
-
|
|
132
100
|
renderHoursPanel() {
|
|
133
|
-
const {
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
use12Hours,
|
|
139
|
-
format,
|
|
140
|
-
hasHeader,
|
|
141
|
-
disabledTimes
|
|
142
|
-
} = this.props;
|
|
143
|
-
if (!showHours) return null;
|
|
144
|
-
const hour = time.hour(); // in 24 format
|
|
145
|
-
|
|
101
|
+
const { time } = this.state;
|
|
102
|
+
const { showHours, use12Hours, format, hasHeader, disabledTimes } = this.props;
|
|
103
|
+
if (!showHours)
|
|
104
|
+
return null;
|
|
105
|
+
const hour = time.hour();
|
|
146
106
|
let selectedHour = use12Hours ? hour % 12 || 12 : hour;
|
|
147
|
-
|
|
148
107
|
if (disabledTimes) {
|
|
149
|
-
const {
|
|
150
|
-
from,
|
|
151
|
-
to
|
|
152
|
-
} = disabledTimes;
|
|
153
|
-
|
|
108
|
+
const { from, to } = disabledTimes;
|
|
154
109
|
if (hour > from.hour && hour < to.hour) {
|
|
155
110
|
if (to.hour < 24) {
|
|
156
111
|
const toFormatted = to.hour % 12 || 12;
|
|
157
|
-
if (selectedHour !== toFormatted)
|
|
112
|
+
if (selectedHour !== toFormatted)
|
|
113
|
+
this.handleHoursChange(toFormatted);
|
|
158
114
|
selectedHour = toFormatted;
|
|
159
115
|
} else if (from) {
|
|
160
116
|
selectedHour = (from.hour - 1) % 12 || 12;
|
|
161
117
|
}
|
|
162
118
|
}
|
|
163
119
|
}
|
|
164
|
-
|
|
165
|
-
const
|
|
166
|
-
const
|
|
167
|
-
const
|
|
168
|
-
|
|
169
|
-
return /*#__PURE__*/_jsx__default["default"](PickerPanel, {
|
|
120
|
+
const meridiem = hour >= 12 ? "PM" : "AM";
|
|
121
|
+
const withLeadingZeros = format.indexOf("hh") > -1;
|
|
122
|
+
const rangeHours = use12Hours ? (0, import_ds_utilities.range)(1, 13) : (0, import_ds_utilities.range)(24);
|
|
123
|
+
const hoursOptions = rangeHours.map(generateOption(withLeadingZeros && (0, import_ds_utilities.addLeadingZeros)(2)));
|
|
124
|
+
return /* @__PURE__ */ import_react.default.createElement(import_PickerPanel.PickerPanel, {
|
|
170
125
|
type: "hour",
|
|
171
|
-
time
|
|
172
|
-
meridiem
|
|
173
|
-
hasHeader
|
|
126
|
+
time,
|
|
127
|
+
meridiem,
|
|
128
|
+
hasHeader,
|
|
174
129
|
header: "H",
|
|
175
130
|
onChange: this.handleHoursChange,
|
|
176
131
|
options: hoursOptions,
|
|
177
132
|
selected: selectedHour,
|
|
178
|
-
disabledTimes
|
|
133
|
+
disabledTimes
|
|
179
134
|
});
|
|
180
135
|
}
|
|
181
|
-
|
|
182
136
|
renderMinutesPanel() {
|
|
183
|
-
const {
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
hasHeader,
|
|
190
|
-
disabledTimes,
|
|
191
|
-
minutesInterval
|
|
192
|
-
} = this.props;
|
|
193
|
-
if (!showMinutes) return null;
|
|
194
|
-
const withLeadingZeros = format.indexOf('mm') > -1;
|
|
195
|
-
const rangeMinutes = dsUtilities.range(0, 60, minutesInterval).map(generateOption(withLeadingZeros && dsUtilities.addLeadingZeros(2)));
|
|
137
|
+
const { time } = this.state;
|
|
138
|
+
const { showMinutes, format, hasHeader, disabledTimes, minutesInterval } = this.props;
|
|
139
|
+
if (!showMinutes)
|
|
140
|
+
return null;
|
|
141
|
+
const withLeadingZeros = format.indexOf("mm") > -1;
|
|
142
|
+
const rangeMinutes = (0, import_ds_utilities.range)(0, 60, minutesInterval).map(generateOption(withLeadingZeros && (0, import_ds_utilities.addLeadingZeros)(2)));
|
|
196
143
|
let selectedMinute = time.minute();
|
|
197
144
|
const selectedHour = time.hour();
|
|
198
|
-
|
|
199
145
|
if (disabledTimes) {
|
|
200
|
-
const {
|
|
201
|
-
from,
|
|
202
|
-
to
|
|
203
|
-
} = disabledTimes;
|
|
204
|
-
|
|
146
|
+
const { from, to } = disabledTimes;
|
|
205
147
|
if (selectedHour <= to.hour && selectedHour > from.hour) {
|
|
206
148
|
if (to) {
|
|
207
|
-
if (selectedMinute < to.min)
|
|
149
|
+
if (selectedMinute < to.min)
|
|
150
|
+
this.handleMinuteChange(to.min);
|
|
208
151
|
} else if (from) {
|
|
209
|
-
if (selectedMinute > from.min)
|
|
152
|
+
if (selectedMinute > from.min)
|
|
153
|
+
this.handleMinuteChange(from.min - 1);
|
|
210
154
|
}
|
|
211
155
|
} else {
|
|
212
156
|
selectedMinute = time.minute();
|
|
213
157
|
}
|
|
214
158
|
}
|
|
215
|
-
|
|
216
|
-
return /*#__PURE__*/_jsx__default["default"](PickerPanel, {
|
|
159
|
+
return /* @__PURE__ */ import_react.default.createElement(import_PickerPanel.PickerPanel, {
|
|
217
160
|
type: "minutes",
|
|
218
|
-
time
|
|
219
|
-
hasHeader
|
|
161
|
+
time,
|
|
162
|
+
hasHeader,
|
|
220
163
|
header: "M",
|
|
221
164
|
onChange: this.handleMinuteChange,
|
|
222
165
|
options: rangeMinutes,
|
|
223
166
|
selected: selectedMinute,
|
|
224
|
-
disabledTimes
|
|
167
|
+
disabledTimes
|
|
225
168
|
});
|
|
226
169
|
}
|
|
227
|
-
|
|
228
170
|
renderSecondsPanel() {
|
|
229
|
-
const {
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
} = this.props;
|
|
237
|
-
if (!showSeconds) return null;
|
|
238
|
-
const withLeadingZeros = format.indexOf('ss') > -1;
|
|
239
|
-
const rangeSeconds = dsUtilities.range(60).map(generateOption(withLeadingZeros && dsUtilities.addLeadingZeros(2)));
|
|
240
|
-
return /*#__PURE__*/_jsx__default["default"](PickerPanel, {
|
|
171
|
+
const { time } = this.state;
|
|
172
|
+
const { showSeconds, format, hasHeader } = this.props;
|
|
173
|
+
if (!showSeconds)
|
|
174
|
+
return null;
|
|
175
|
+
const withLeadingZeros = format.indexOf("ss") > -1;
|
|
176
|
+
const rangeSeconds = (0, import_ds_utilities.range)(60).map(generateOption(withLeadingZeros && (0, import_ds_utilities.addLeadingZeros)(2)));
|
|
177
|
+
return /* @__PURE__ */ import_react.default.createElement(import_PickerPanel.PickerPanel, {
|
|
241
178
|
type: "seconds",
|
|
242
|
-
hasHeader
|
|
179
|
+
hasHeader,
|
|
243
180
|
header: "S",
|
|
244
181
|
onChange: this.handleSecondsChange,
|
|
245
182
|
options: rangeSeconds,
|
|
246
183
|
selected: time.second()
|
|
247
184
|
});
|
|
248
185
|
}
|
|
249
|
-
|
|
250
186
|
renderAMPMPanel() {
|
|
251
|
-
const {
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
disabledTimes
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
let meridiemSelected = !utils.isAM(time) ? 'pm' : 'am';
|
|
261
|
-
|
|
262
|
-
if (disabledTimes && disabledTimes.to && meridiemSelected === 'am') {
|
|
263
|
-
meridiemSelected = disabledTimes.to.hour >= 12 ? 'pm' : 'am';
|
|
264
|
-
|
|
265
|
-
if (meridiemSelected === 'am' && time.hour() > 12) {
|
|
266
|
-
this.handleAMPMChange('am');
|
|
187
|
+
const { time } = this.state;
|
|
188
|
+
const { use12Hours, hasHeader, disabledTimes } = this.props;
|
|
189
|
+
if (!use12Hours)
|
|
190
|
+
return null;
|
|
191
|
+
let meridiemSelected = !(0, import_utils.isAM)(time) ? "pm" : "am";
|
|
192
|
+
if (disabledTimes && disabledTimes.to && meridiemSelected === "am") {
|
|
193
|
+
meridiemSelected = disabledTimes.to.hour >= 12 ? "pm" : "am";
|
|
194
|
+
if (meridiemSelected === "am" && time.hour() > 12) {
|
|
195
|
+
this.handleAMPMChange("am");
|
|
267
196
|
}
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
this.handleAMPMChange('pm');
|
|
197
|
+
if (meridiemSelected === "pm" && time.hour() <= 12) {
|
|
198
|
+
this.handleAMPMChange("pm");
|
|
271
199
|
}
|
|
272
200
|
}
|
|
273
|
-
|
|
274
|
-
return /*#__PURE__*/_jsx__default["default"](PickerPanel, {
|
|
201
|
+
return /* @__PURE__ */ import_react.default.createElement(import_PickerPanel.PickerPanel, {
|
|
275
202
|
type: "meridiem",
|
|
276
|
-
hasHeader
|
|
203
|
+
hasHeader,
|
|
277
204
|
header: "",
|
|
278
205
|
onChange: this.handleAMPMChange,
|
|
279
|
-
options: [
|
|
280
|
-
value:
|
|
281
|
-
label:
|
|
282
|
-
|
|
283
|
-
value: 'pm',
|
|
284
|
-
label: 'pm'
|
|
285
|
-
}],
|
|
206
|
+
options: [
|
|
207
|
+
{ value: "am", label: "am" },
|
|
208
|
+
{ value: "pm", label: "pm" }
|
|
209
|
+
],
|
|
286
210
|
selected: meridiemSelected,
|
|
287
|
-
disabledTimes
|
|
211
|
+
disabledTimes
|
|
288
212
|
});
|
|
289
213
|
}
|
|
290
|
-
|
|
291
214
|
render() {
|
|
292
|
-
const {
|
|
293
|
-
|
|
294
|
-
} = this.props;
|
|
295
|
-
return /*#__PURE__*/_jsx__default["default"](TimePickerContainer, {}, void 0, hasHeaderDisplay && this.renderHeader(), /*#__PURE__*/_jsx__default["default"](TimePickerPanelContainer, {}, void 0, this.renderHoursPanel(), this.renderMinutesPanel(), this.renderSecondsPanel(), this.renderAMPMPanel()));
|
|
215
|
+
const { hasHeaderDisplay } = this.props;
|
|
216
|
+
return /* @__PURE__ */ import_react.default.createElement(TimePickerContainer, null, hasHeaderDisplay && this.renderHeader(), /* @__PURE__ */ import_react.default.createElement(TimePickerPanelContainer, null, this.renderHoursPanel(), this.renderMinutesPanel(), this.renderSecondsPanel(), this.renderAMPMPanel()));
|
|
296
217
|
}
|
|
297
|
-
|
|
298
218
|
}
|
|
299
|
-
|
|
300
219
|
TimePickerMenu.defaultProps = {
|
|
301
|
-
time:
|
|
220
|
+
time: (0, import_moment.default)(),
|
|
302
221
|
hasHeader: false,
|
|
303
222
|
use12Hours: true,
|
|
304
223
|
showSeconds: true,
|
|
305
224
|
showMinutes: true,
|
|
306
225
|
showHours: true,
|
|
307
|
-
disabledTimes:
|
|
226
|
+
disabledTimes: void 0,
|
|
308
227
|
onTimeChange: () => null
|
|
309
228
|
};
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
229
|
+
TimePickerMenu.propTypes = {
|
|
230
|
+
time: import_prop_types.default.instanceOf(import_moment.default),
|
|
231
|
+
hasHeader: import_prop_types.default.bool,
|
|
232
|
+
use12Hours: import_prop_types.default.bool,
|
|
233
|
+
showSeconds: import_prop_types.default.bool,
|
|
234
|
+
showMinutes: import_prop_types.default.bool,
|
|
235
|
+
showHours: import_prop_types.default.bool,
|
|
236
|
+
onTimeChange: import_prop_types.default.func,
|
|
237
|
+
disabledTimes: import_prop_types.default.object
|
|
238
|
+
};
|
|
239
|
+
var TimePickerMenu_default = TimePickerMenu;
|
|
240
|
+
module.exports = __toCommonJS(TimePickerMenu_exports);
|
|
241
|
+
//# sourceMappingURL=TimePickerMenu.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/TimePickerMenu.tsx", "../../../../scripts/build/transpile/react-shim.js"],
|
|
4
|
+
"sourcesContent": ["/* 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", "import * as React from 'react';\nexport { React };\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
package/cjs/index.js
CHANGED
|
@@ -1,17 +1,40 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
var
|
|
6
|
-
var
|
|
7
|
-
var
|
|
8
|
-
var
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __reExport = (target, module2, copyDefault, desc) => {
|
|
13
|
+
if (module2 && typeof module2 === "object" || typeof module2 === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(module2))
|
|
15
|
+
if (!__hasOwnProp.call(target, key) && (copyDefault || key !== "default"))
|
|
16
|
+
__defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return target;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (module2, isNodeMode) => {
|
|
21
|
+
return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", !isNodeMode && module2 && module2.__esModule ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
|
|
22
|
+
};
|
|
23
|
+
var __toCommonJS = /* @__PURE__ */ ((cache) => {
|
|
24
|
+
return (module2, temp) => {
|
|
25
|
+
return cache && cache.get(module2) || (temp = __reExport(__markAsModule({}), module2, 1), cache && cache.set(module2, temp), temp);
|
|
26
|
+
};
|
|
27
|
+
})(typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : 0);
|
|
28
|
+
var src_exports = {};
|
|
29
|
+
__export(src_exports, {
|
|
30
|
+
convertTimeString: () => import_utils.convertTimeString,
|
|
31
|
+
default: () => import_DSTimePicker.default
|
|
32
|
+
});
|
|
33
|
+
var React = __toESM(require("react"));
|
|
34
|
+
__reExport(src_exports, require("./DSTimePicker"));
|
|
35
|
+
__reExport(src_exports, require("./TimePickerMenu"));
|
|
36
|
+
__reExport(src_exports, require("./DSTimePickerMenu"));
|
|
37
|
+
var import_utils = require("./utils");
|
|
38
|
+
var import_DSTimePicker = __toESM(require("./DSTimePicker"));
|
|
39
|
+
module.exports = __toCommonJS(src_exports);
|
|
40
|
+
//# sourceMappingURL=index.js.map
|
package/cjs/index.js.map
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/index.tsx", "../../../../scripts/build/transpile/react-shim.js"],
|
|
4
|
+
"sourcesContent": ["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", "import * as React from 'react';\nexport { React };\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,wBAAc;AACd,wBAAc;AACd,wBAAc;AAEd,mBAAkC;AAElC,0BAAwB;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|