@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/PickerPanel.js
CHANGED
|
@@ -1,157 +1,117 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
var
|
|
4
|
-
var
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
var
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
var
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
|
|
28
|
-
var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
|
|
29
|
-
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
30
|
-
var memoizeOne__default = /*#__PURE__*/_interopDefaultLegacy(memoizeOne);
|
|
31
|
-
var DSButton__default = /*#__PURE__*/_interopDefaultLegacy(DSButton);
|
|
32
|
-
|
|
33
|
-
var _SelectedCircle, _ChevronSmallUp, _ChevronSmallDown;
|
|
34
|
-
|
|
35
|
-
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; }
|
|
36
|
-
|
|
37
|
-
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__default["default"](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; }
|
|
38
|
-
const blockName = 'time-picker-panel';
|
|
39
|
-
const Container = dsClassnames.aggregatedClasses('div')(blockName, null, _ref => {
|
|
40
|
-
let {
|
|
41
|
-
scrolling
|
|
42
|
-
} = _ref;
|
|
43
|
-
return {
|
|
44
|
-
scrolling
|
|
45
|
-
};
|
|
46
|
-
});
|
|
47
|
-
const Wrapper = dsClassnames.aggregatedClasses('div')(blockName, 'wrapper');
|
|
48
|
-
const PickerItemListContainer = dsClassnames.aggregatedClasses('div')(blockName, 'item-list-container');
|
|
49
|
-
const PickerItemList = dsClassnames.aggregatedClasses('div')(blockName, 'item-list');
|
|
50
|
-
const PickerHeader = dsClassnames.aggregatedClasses('div')(blockName, 'header');
|
|
51
|
-
const PickerItemContainer = dsClassnames.aggregatedClasses('div')(blockName, 'item', _ref2 => {
|
|
52
|
-
let {
|
|
53
|
-
selected,
|
|
54
|
-
disabled
|
|
55
|
-
} = _ref2;
|
|
56
|
-
return {
|
|
57
|
-
selected,
|
|
58
|
-
disabled
|
|
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);
|
|
59
26
|
};
|
|
27
|
+
})(typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : 0);
|
|
28
|
+
var PickerPanel_exports = {};
|
|
29
|
+
__export(PickerPanel_exports, {
|
|
30
|
+
PickerPanel: () => PickerPanel,
|
|
31
|
+
default: () => PickerPanel
|
|
60
32
|
});
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
33
|
+
var React = __toESM(require("react"));
|
|
34
|
+
var import_react = __toESM(require("react"));
|
|
35
|
+
var import_lodash = require("lodash");
|
|
36
|
+
var import_ds_classnames = require("@elliemae/ds-classnames");
|
|
37
|
+
var import_memoize_one = __toESM(require("memoize-one"));
|
|
38
|
+
var import_ds_icons = require("@elliemae/ds-icons");
|
|
39
|
+
var import_ds_button = require("@elliemae/ds-button");
|
|
40
|
+
var import_moveElementOnScroll = require("./moveElementOnScroll");
|
|
41
|
+
var import_utils = require("./utils");
|
|
42
|
+
const blockName = "time-picker-panel";
|
|
43
|
+
const Container = (0, import_ds_classnames.aggregatedClasses)("div")(blockName, null, ({ scrolling }) => ({ scrolling }));
|
|
44
|
+
const Wrapper = (0, import_ds_classnames.aggregatedClasses)("div")(blockName, "wrapper");
|
|
45
|
+
const PickerItemListContainer = (0, import_ds_classnames.aggregatedClasses)("div")(blockName, "item-list-container");
|
|
46
|
+
const PickerItemList = (0, import_ds_classnames.aggregatedClasses)("div")(blockName, "item-list");
|
|
47
|
+
const PickerHeader = (0, import_ds_classnames.aggregatedClasses)("div")(blockName, "header");
|
|
48
|
+
const PickerItemContainer = (0, import_ds_classnames.aggregatedClasses)("div")(blockName, "item", ({ selected, disabled }) => ({
|
|
49
|
+
selected,
|
|
50
|
+
disabled
|
|
51
|
+
}));
|
|
52
|
+
const PickerSelectedOptionSelected = (0, import_ds_classnames.aggregatedClasses)("div")(blockName, "selected-container");
|
|
53
|
+
const SelectedCircle = (0, import_ds_classnames.aggregatedClasses)("div")(blockName, "selected-circle");
|
|
54
|
+
const ArrowButtonContainer = (0, import_ds_classnames.aggregatedClasses)("div")(blockName, "arrow-container");
|
|
55
|
+
const getOptionIndex = (options, selectedOption, valueProperty = "value") => {
|
|
56
|
+
const index = options.findIndex((option) => option[valueProperty] === selectedOption);
|
|
57
|
+
return (0, import_utils.validateIndex)(index, options);
|
|
69
58
|
};
|
|
70
|
-
|
|
71
59
|
const arrowProps = {
|
|
72
|
-
buttonType:
|
|
60
|
+
buttonType: "text",
|
|
73
61
|
fluidHeight: true,
|
|
74
62
|
fluidWidth: true,
|
|
75
|
-
size:
|
|
63
|
+
size: "s"
|
|
76
64
|
};
|
|
77
|
-
class PickerPanel extends
|
|
65
|
+
class PickerPanel extends import_react.Component {
|
|
78
66
|
constructor(props) {
|
|
79
67
|
super(props);
|
|
80
|
-
this.computeContainerTranslation =
|
|
81
|
-
const {
|
|
82
|
-
|
|
83
|
-
valueProperty
|
|
84
|
-
} = this.props;
|
|
85
|
-
const {
|
|
86
|
-
selectedOption,
|
|
87
|
-
scrolling
|
|
88
|
-
} = this.state;
|
|
68
|
+
this.computeContainerTranslation = (0, import_memoize_one.default)((index) => {
|
|
69
|
+
const { options, valueProperty } = this.props;
|
|
70
|
+
const { selectedOption, scrolling } = this.state;
|
|
89
71
|
const selectedOptionIndex = index || getOptionIndex(options, selectedOption, valueProperty);
|
|
90
72
|
const listYPosition = this.minYListPosition - selectedOptionIndex * this.optionHeight;
|
|
91
|
-
if (this.scrollHandler && !scrolling)
|
|
73
|
+
if (this.scrollHandler && !scrolling)
|
|
74
|
+
this.scrollHandler.updatePosition(listYPosition);
|
|
92
75
|
return listYPosition;
|
|
93
76
|
});
|
|
94
|
-
|
|
95
77
|
this.renderHeader = () => {
|
|
96
|
-
const {
|
|
97
|
-
|
|
98
|
-
} = this.props;
|
|
99
|
-
return /*#__PURE__*/_jsx__default["default"](PickerHeader, {}, void 0, header);
|
|
78
|
+
const { header } = this.props;
|
|
79
|
+
return /* @__PURE__ */ import_react.default.createElement(PickerHeader, null, header);
|
|
100
80
|
};
|
|
101
|
-
|
|
102
|
-
this.
|
|
103
|
-
this.
|
|
104
|
-
this.
|
|
105
|
-
this.selectedOptionRef = /*#__PURE__*/React__default["default"].createRef();
|
|
81
|
+
this.pickerListContainerRef = import_react.default.createRef();
|
|
82
|
+
this.pickerListRef = import_react.default.createRef();
|
|
83
|
+
this.pickerItemRef = import_react.default.createRef();
|
|
84
|
+
this.selectedOptionRef = import_react.default.createRef();
|
|
106
85
|
this.state = {
|
|
107
86
|
selectedOption: props.selected,
|
|
108
87
|
activeIndex: 0,
|
|
109
|
-
// eslint-disable-next-line react/no-unused-state
|
|
110
88
|
prevProps: {}
|
|
111
89
|
};
|
|
112
|
-
this.handleKeyDown = this.handleKeyDown.bind(this);
|
|
113
|
-
this.handleStepMoveUp = this.handleStepMoveUp.bind(this);
|
|
114
|
-
this.handleStepMoveDown = this.handleStepMoveDown.bind(this);
|
|
115
90
|
}
|
|
116
|
-
|
|
117
91
|
componentDidMount() {
|
|
118
92
|
this.computeSizes();
|
|
119
93
|
const pickerListContainerEl = this.pickerListContainerRef.current;
|
|
120
94
|
const pickerListEl = this.pickerListRef.current;
|
|
121
|
-
this.scrollHandler = new
|
|
95
|
+
this.scrollHandler = new import_moveElementOnScroll.MoveElementOnScroll(pickerListEl, {
|
|
122
96
|
container: pickerListContainerEl,
|
|
123
97
|
min: -this.minYListPosition,
|
|
124
98
|
max: this.maxYListPosition,
|
|
125
99
|
onUpdate: (pos, delta) => {
|
|
126
|
-
const {
|
|
127
|
-
options
|
|
128
|
-
} = this.props;
|
|
100
|
+
const { options } = this.props;
|
|
129
101
|
const index = options.length - -Math.floor((pos - this.maxYListPosition) / this.optionHeight) + (delta > 0 ? 1 : -1);
|
|
130
102
|
this.moveTo(index, true);
|
|
131
103
|
},
|
|
132
104
|
onEndScroll: () => {
|
|
133
|
-
this.setState({
|
|
134
|
-
scrolling: false
|
|
135
|
-
});
|
|
105
|
+
this.setState({ scrolling: false });
|
|
136
106
|
}
|
|
137
107
|
});
|
|
138
108
|
this.computeContainerTranslation();
|
|
139
109
|
}
|
|
140
|
-
|
|
141
110
|
componentWillUnmount() {
|
|
142
111
|
this.scrollHandler.unsubscribe();
|
|
143
112
|
}
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
let {
|
|
147
|
-
prevProps
|
|
148
|
-
} = _ref3;
|
|
149
|
-
const {
|
|
150
|
-
selected,
|
|
151
|
-
valueProperty,
|
|
152
|
-
options
|
|
153
|
-
} = nextProps;
|
|
154
|
-
|
|
113
|
+
static getDerivedStateFromProps(nextProps, { prevProps }) {
|
|
114
|
+
const { selected, valueProperty, options } = nextProps;
|
|
155
115
|
if (selected !== prevProps.selected) {
|
|
156
116
|
return {
|
|
157
117
|
selectedOption: selected,
|
|
@@ -159,244 +119,181 @@ class PickerPanel extends React.Component {
|
|
|
159
119
|
prevProps: nextProps
|
|
160
120
|
};
|
|
161
121
|
}
|
|
162
|
-
|
|
163
122
|
return null;
|
|
164
123
|
}
|
|
165
|
-
|
|
166
124
|
getOptionValue(option) {
|
|
167
|
-
const {
|
|
168
|
-
valueProperty
|
|
169
|
-
} = this.props;
|
|
125
|
+
const { valueProperty } = this.props;
|
|
170
126
|
return option[valueProperty];
|
|
171
127
|
}
|
|
172
|
-
|
|
173
128
|
getOptionLabel(option) {
|
|
174
|
-
const {
|
|
175
|
-
labelProperty
|
|
176
|
-
} = this.props;
|
|
129
|
+
const { labelProperty } = this.props;
|
|
177
130
|
return option[labelProperty];
|
|
178
131
|
}
|
|
179
|
-
|
|
180
132
|
computeSizes() {
|
|
181
|
-
const {
|
|
182
|
-
|
|
183
|
-
numberItemsOnScreen
|
|
184
|
-
} = this.props;
|
|
185
|
-
const {
|
|
186
|
-
offsetHeight: optionHeight
|
|
187
|
-
} = this.pickerItemRef.current;
|
|
133
|
+
const { options, numberItemsOnScreen } = this.props;
|
|
134
|
+
const { offsetHeight: optionHeight } = this.pickerItemRef.current;
|
|
188
135
|
this.optionHeight = optionHeight;
|
|
189
136
|
this.listHeight = this.optionHeight * numberItemsOnScreen;
|
|
190
137
|
this.minYListPosition = this.listHeight / 2 - this.optionHeight / 2;
|
|
191
138
|
this.maxYListPosition = this.optionHeight * (options.length - Math.ceil(numberItemsOnScreen / 2));
|
|
192
139
|
}
|
|
193
|
-
|
|
194
140
|
handleOptionSelect(optionValue, index, scrolling) {
|
|
195
|
-
const {
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
this.setState(state => _objectSpread(_objectSpread({}, state), {}, {
|
|
141
|
+
const { onChange } = this.props;
|
|
142
|
+
this.setState((state) => ({
|
|
143
|
+
...state,
|
|
199
144
|
scrolling,
|
|
200
145
|
selectedOption: optionValue,
|
|
201
146
|
activeIndex: index
|
|
202
147
|
}), () => {
|
|
203
148
|
onChange(optionValue, index);
|
|
204
149
|
});
|
|
205
|
-
}
|
|
206
|
-
// eslint-disable-next-line max-statements
|
|
207
|
-
|
|
208
|
-
|
|
150
|
+
}
|
|
209
151
|
handleKeyDown(e) {
|
|
210
|
-
const {
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
const {
|
|
214
|
-
options
|
|
215
|
-
} = this.props;
|
|
216
|
-
const [firstColumn, ...restColumns] = document.getElementsByClassName('em-ds-time-picker-panel');
|
|
152
|
+
const { activeIndex } = this.state;
|
|
153
|
+
const { options } = this.props;
|
|
154
|
+
const [firstColumn, ...restColumns] = document.getElementsByClassName("em-ds-time-picker-panel");
|
|
217
155
|
const [lastColumn] = restColumns.slice(-1);
|
|
218
|
-
const [prev] = document.getElementsByClassName(
|
|
156
|
+
const [prev] = document.getElementsByClassName("DayPickerNavigation_button");
|
|
219
157
|
const focusedElement = document.activeElement;
|
|
220
|
-
|
|
221
158
|
switch (e.key) {
|
|
222
|
-
case
|
|
159
|
+
case "Home":
|
|
223
160
|
this.moveTo(0);
|
|
224
161
|
break;
|
|
225
|
-
|
|
226
|
-
case 'End':
|
|
162
|
+
case "End":
|
|
227
163
|
this.moveTo(options.length - 1);
|
|
228
164
|
break;
|
|
229
|
-
|
|
230
|
-
case 'ArrowUp':
|
|
165
|
+
case "ArrowUp":
|
|
231
166
|
this.moveTo(activeIndex - 1);
|
|
232
167
|
break;
|
|
233
|
-
|
|
234
|
-
case 'ArrowDown':
|
|
168
|
+
case "ArrowDown":
|
|
235
169
|
this.moveTo(activeIndex + 1);
|
|
236
170
|
break;
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
{
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
} else {
|
|
247
|
-
const position = lodash.findIndex(restColumns, focusedElement);
|
|
248
|
-
restColumns[position + 1].focus();
|
|
249
|
-
}
|
|
250
|
-
|
|
251
|
-
break;
|
|
171
|
+
case "Tab": {
|
|
172
|
+
e.preventDefault();
|
|
173
|
+
if (prev && focusedElement === lastColumn) {
|
|
174
|
+
prev.focus();
|
|
175
|
+
} else if (focusedElement === lastColumn) {
|
|
176
|
+
firstColumn.focus();
|
|
177
|
+
} else {
|
|
178
|
+
const position = (0, import_lodash.findIndex)(restColumns, focusedElement);
|
|
179
|
+
restColumns[position + 1].focus();
|
|
252
180
|
}
|
|
181
|
+
break;
|
|
182
|
+
}
|
|
183
|
+
default:
|
|
184
|
+
break;
|
|
253
185
|
}
|
|
254
186
|
}
|
|
255
|
-
|
|
256
187
|
moveTo(index, scrolling) {
|
|
257
|
-
const {
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
const {
|
|
261
|
-
selectedOption
|
|
262
|
-
} = this.state;
|
|
263
|
-
const validIndex = utils.validateIndex(index, options);
|
|
188
|
+
const { options } = this.props;
|
|
189
|
+
const { selectedOption } = this.state;
|
|
190
|
+
const validIndex = (0, import_utils.validateIndex)(index, options);
|
|
264
191
|
const option = options[validIndex];
|
|
265
192
|
const optionValue = this.getOptionValue(option);
|
|
266
|
-
|
|
267
193
|
if (selectedOption !== optionValue && option.disabled !== true) {
|
|
268
194
|
this.handleOptionSelect(optionValue, validIndex, scrolling);
|
|
269
|
-
}
|
|
270
|
-
|
|
195
|
+
}
|
|
271
196
|
}
|
|
272
|
-
|
|
273
197
|
handleStepMoveUp() {
|
|
274
|
-
const {
|
|
275
|
-
|
|
276
|
-
} = this.state;
|
|
277
|
-
const {
|
|
278
|
-
arrowStep,
|
|
279
|
-
options
|
|
280
|
-
} = this.props;
|
|
198
|
+
const { activeIndex } = this.state;
|
|
199
|
+
const { arrowStep, options } = this.props;
|
|
281
200
|
const supposedPos = activeIndex - arrowStep;
|
|
282
201
|
const nextPos = supposedPos >= 0 ? supposedPos : activeIndex - 1;
|
|
283
|
-
const nextValidOption = options.find(op => !op.disabled);
|
|
202
|
+
const nextValidOption = options.find((op) => !op.disabled);
|
|
284
203
|
this.moveTo(nextPos, true, nextValidOption);
|
|
285
204
|
}
|
|
286
|
-
|
|
287
205
|
handleStepMoveDown() {
|
|
288
|
-
const {
|
|
289
|
-
|
|
290
|
-
} = this.state;
|
|
291
|
-
const {
|
|
292
|
-
arrowStep,
|
|
293
|
-
options
|
|
294
|
-
} = this.props;
|
|
206
|
+
const { activeIndex } = this.state;
|
|
207
|
+
const { arrowStep, options } = this.props;
|
|
295
208
|
const supposedPos = activeIndex + arrowStep;
|
|
296
209
|
const nextPos = supposedPos <= options.length ? supposedPos : activeIndex + 1;
|
|
297
210
|
this.moveTo(nextPos);
|
|
298
211
|
}
|
|
299
|
-
|
|
300
212
|
render() {
|
|
301
|
-
const {
|
|
302
|
-
|
|
303
|
-
hasHeader,
|
|
304
|
-
type,
|
|
305
|
-
time,
|
|
306
|
-
meridiem,
|
|
307
|
-
disabledTimes
|
|
308
|
-
} = this.props;
|
|
309
|
-
const {
|
|
310
|
-
selectedOption,
|
|
311
|
-
activeIndex,
|
|
312
|
-
scrolling
|
|
313
|
-
} = this.state;
|
|
213
|
+
const { options, hasHeader, type, time, meridiem, disabledTimes } = this.props;
|
|
214
|
+
const { selectedOption, activeIndex, scrolling } = this.state;
|
|
314
215
|
const listYPosition = this.computeContainerTranslation(activeIndex);
|
|
315
|
-
return
|
|
316
|
-
classProps: {
|
|
317
|
-
scrolling
|
|
318
|
-
},
|
|
216
|
+
return /* @__PURE__ */ import_react.default.createElement(Wrapper, null, hasHeader && this.renderHeader(), /* @__PURE__ */ import_react.default.createElement(Container, {
|
|
217
|
+
classProps: { scrolling },
|
|
319
218
|
onKeyDown: this.handleKeyDown,
|
|
320
219
|
tabIndex: 0
|
|
321
|
-
},
|
|
220
|
+
}, /* @__PURE__ */ import_react.default.createElement(PickerSelectedOptionSelected, {
|
|
322
221
|
innerRef: this.selectedOptionRef
|
|
323
|
-
},
|
|
222
|
+
}, /* @__PURE__ */ import_react.default.createElement(SelectedCircle, null)), /* @__PURE__ */ import_react.default.createElement(ArrowButtonContainer, null, /* @__PURE__ */ import_react.default.createElement(import_ds_button.DSButton, {
|
|
223
|
+
...arrowProps,
|
|
324
224
|
"aria-label": "Chevron Up",
|
|
325
|
-
"data-testid":
|
|
225
|
+
"data-testid": `${type}-chevron-up`,
|
|
326
226
|
disabled: activeIndex <= 0,
|
|
327
|
-
icon:
|
|
227
|
+
icon: /* @__PURE__ */ import_react.default.createElement(import_ds_icons.ChevronSmallUp, null),
|
|
328
228
|
onClick: this.handleStepMoveUp,
|
|
329
229
|
tabIndex: -1
|
|
330
|
-
}))
|
|
230
|
+
})), /* @__PURE__ */ import_react.default.createElement(PickerItemListContainer, {
|
|
331
231
|
innerRef: this.pickerListContainerRef,
|
|
332
232
|
style: {
|
|
333
233
|
height: this.listHeight
|
|
334
234
|
}
|
|
335
|
-
},
|
|
336
|
-
"data-testid":
|
|
235
|
+
}, /* @__PURE__ */ import_react.default.createElement(PickerItemList, {
|
|
236
|
+
"data-testid": `${type}-list`,
|
|
337
237
|
innerRef: this.pickerListRef,
|
|
338
238
|
style: {
|
|
339
|
-
transform:
|
|
239
|
+
transform: `translateY(${listYPosition}px)`
|
|
340
240
|
}
|
|
341
|
-
},
|
|
241
|
+
}, options.map((option, index) => {
|
|
342
242
|
const value = this.getOptionValue(option);
|
|
343
243
|
const label = this.getOptionLabel(option);
|
|
344
244
|
let valueFormatted;
|
|
345
|
-
if (meridiem ===
|
|
245
|
+
if (meridiem === "AM")
|
|
246
|
+
valueFormatted = value;
|
|
247
|
+
else if (meridiem === "PM" && value === 12)
|
|
248
|
+
valueFormatted = value;
|
|
249
|
+
else if (meridiem === "PM")
|
|
250
|
+
valueFormatted = value + 12;
|
|
346
251
|
let disabled = false;
|
|
347
|
-
|
|
348
252
|
if (disabledTimes) {
|
|
349
|
-
const {
|
|
350
|
-
|
|
351
|
-
to
|
|
352
|
-
} = disabledTimes;
|
|
353
|
-
|
|
354
|
-
if (type === 'hour' && valueFormatted >= (from === null || from === void 0 ? void 0 : from.hour) && valueFormatted < (to === null || to === void 0 ? void 0 : to.hour) || type === 'minutes' && value >= (from === null || from === void 0 ? void 0 : from.min) && value < (to === null || to === void 0 ? void 0 : to.min)) {
|
|
253
|
+
const { from, to } = disabledTimes;
|
|
254
|
+
if (type === "hour" && valueFormatted >= from?.hour && valueFormatted < to?.hour || type === "minutes" && value >= from?.min && value < to?.min) {
|
|
355
255
|
disabled = true;
|
|
356
256
|
}
|
|
357
|
-
|
|
358
|
-
if (type === 'minutes' && ((time === null || time === void 0 ? void 0 : time.hour()) > (to === null || to === void 0 ? void 0 : to.hour) || (time === null || time === void 0 ? void 0 : time.hour()) < (from === null || from === void 0 ? void 0 : from.hour))) {
|
|
257
|
+
if (type === "minutes" && (time?.hour() > to?.hour || time?.hour() < from?.hour)) {
|
|
359
258
|
disabled = false;
|
|
360
259
|
}
|
|
361
|
-
|
|
362
|
-
if (label === 'am' && (from === null || from === void 0 ? void 0 : from.hour) == 0 && (to === null || to === void 0 ? void 0 : to.hour) >= 12) {
|
|
260
|
+
if (label === "am" && from?.hour == 0 && to?.hour >= 12) {
|
|
363
261
|
disabled = true;
|
|
364
262
|
}
|
|
365
|
-
|
|
366
|
-
if (label === 'pm' && (to === null || to === void 0 ? void 0 : to.hour) == 24) {
|
|
263
|
+
if (label === "pm" && to?.hour == 24) {
|
|
367
264
|
disabled = true;
|
|
368
265
|
}
|
|
369
266
|
}
|
|
370
|
-
|
|
371
267
|
option.disabled = disabled;
|
|
372
|
-
return
|
|
268
|
+
return /* @__PURE__ */ import_react.default.createElement(PickerItemContainer, {
|
|
269
|
+
key: value,
|
|
373
270
|
classProps: {
|
|
374
271
|
selected: selectedOption ? value === selectedOption : index === 0,
|
|
375
272
|
disabled
|
|
376
273
|
},
|
|
377
274
|
innerRef: this.pickerItemRef,
|
|
378
275
|
onClick: () => {
|
|
379
|
-
if (!disabled)
|
|
276
|
+
if (!disabled)
|
|
277
|
+
this.handleOptionSelect(value, index);
|
|
380
278
|
}
|
|
381
|
-
},
|
|
382
|
-
}))),
|
|
279
|
+
}, label);
|
|
280
|
+
}))), /* @__PURE__ */ import_react.default.createElement(ArrowButtonContainer, null, /* @__PURE__ */ import_react.default.createElement(import_ds_button.DSButton, {
|
|
281
|
+
...arrowProps,
|
|
383
282
|
"aria-label": "Chevron Down",
|
|
384
|
-
"data-testid":
|
|
283
|
+
"data-testid": `${type}-chevron-down`,
|
|
385
284
|
disabled: activeIndex >= options.length - 1,
|
|
386
|
-
icon:
|
|
285
|
+
icon: /* @__PURE__ */ import_react.default.createElement(import_ds_icons.ChevronSmallDown, null),
|
|
387
286
|
onClick: this.handleStepMoveDown,
|
|
388
287
|
tabIndex: -1
|
|
389
|
-
}))))
|
|
288
|
+
}))));
|
|
390
289
|
}
|
|
391
|
-
|
|
392
290
|
}
|
|
393
291
|
PickerPanel.defaultProps = {
|
|
394
|
-
valueProperty:
|
|
395
|
-
labelProperty:
|
|
292
|
+
valueProperty: "value",
|
|
293
|
+
labelProperty: "label",
|
|
396
294
|
numberItemsOnScreen: 5,
|
|
397
|
-
// this number should be impair
|
|
398
295
|
options: [],
|
|
399
296
|
arrowStep: 1
|
|
400
297
|
};
|
|
401
|
-
|
|
402
|
-
|
|
298
|
+
module.exports = __toCommonJS(PickerPanel_exports);
|
|
299
|
+
//# sourceMappingURL=PickerPanel.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/PickerPanel.tsx", "../../../../scripts/build/transpile/react-shim.js"],
|
|
4
|
+
"sourcesContent": ["/* eslint-disable eqeqeq */\n/* eslint-disable react/prop-types */\n/* eslint-disable complexity */\n/* eslint-disable max-lines */\nimport React, { Component } from 'react';\nimport { findIndex } from 'lodash';\nimport { aggregatedClasses } from '@elliemae/ds-classnames';\nimport memoizeOne from 'memoize-one';\nimport { ChevronSmallUp, ChevronSmallDown } from '@elliemae/ds-icons';\nimport { DSButton } from '@elliemae/ds-button';\nimport { MoveElementOnScroll } from './moveElementOnScroll';\nimport { validateIndex } from './utils';\n\nconst blockName = 'time-picker-panel';\n\nconst Container = aggregatedClasses('div')(blockName, null, ({ scrolling }) => ({ scrolling }));\nconst Wrapper = aggregatedClasses('div')(blockName, 'wrapper');\nconst PickerItemListContainer = aggregatedClasses('div')(blockName, 'item-list-container');\nconst PickerItemList = aggregatedClasses('div')(blockName, 'item-list');\nconst PickerHeader = aggregatedClasses('div')(blockName, 'header');\nconst PickerItemContainer = aggregatedClasses('div')(blockName, 'item', ({ selected, disabled }) => ({\n selected,\n disabled,\n}));\nconst PickerSelectedOptionSelected = aggregatedClasses('div')(blockName, 'selected-container');\nconst SelectedCircle = aggregatedClasses('div')(blockName, 'selected-circle');\nconst ArrowButtonContainer = aggregatedClasses('div')(blockName, 'arrow-container');\n\nconst getOptionIndex = (options, selectedOption, valueProperty = 'value') => {\n const index = options.findIndex((option) => option[valueProperty] === selectedOption);\n return validateIndex(index, options);\n};\n\nconst arrowProps = {\n buttonType: 'text',\n fluidHeight: true,\n fluidWidth: true,\n size: 's',\n};\n\nexport default class PickerPanel extends Component {\n computeContainerTranslation = memoizeOne((index) => {\n const { options, valueProperty } = this.props;\n const { selectedOption, scrolling } = this.state;\n\n const selectedOptionIndex = index || getOptionIndex(options, selectedOption, valueProperty);\n const listYPosition = this.minYListPosition - selectedOptionIndex * this.optionHeight;\n\n if (this.scrollHandler && !scrolling) this.scrollHandler.updatePosition(listYPosition);\n\n return listYPosition;\n });\n\n constructor(props) {\n super(props);\n this.pickerListContainerRef = React.createRef();\n this.pickerListRef = React.createRef();\n this.pickerItemRef = React.createRef();\n this.selectedOptionRef = React.createRef();\n\n this.state = {\n selectedOption: props.selected,\n activeIndex: 0,\n // eslint-disable-next-line react/no-unused-state\n prevProps: {},\n };\n }\n\n componentDidMount() {\n this.computeSizes();\n const pickerListContainerEl = this.pickerListContainerRef.current;\n const pickerListEl = this.pickerListRef.current;\n\n this.scrollHandler = new MoveElementOnScroll(pickerListEl, {\n container: pickerListContainerEl,\n min: -this.minYListPosition,\n max: this.maxYListPosition,\n onUpdate: (pos, delta) => {\n const { options } = this.props;\n const index =\n options.length - -Math.floor((pos - this.maxYListPosition) / this.optionHeight) + (delta > 0 ? 1 : -1);\n this.moveTo(index, true);\n },\n onEndScroll: () => {\n this.setState({ scrolling: false });\n },\n });\n this.computeContainerTranslation();\n }\n\n componentWillUnmount() {\n this.scrollHandler.unsubscribe();\n }\n\n static getDerivedStateFromProps(nextProps, { prevProps }) {\n const { selected, valueProperty, options } = nextProps;\n if (selected !== prevProps.selected) {\n return {\n selectedOption: selected,\n activeIndex: getOptionIndex(options, selected, valueProperty),\n prevProps: nextProps,\n };\n }\n return null;\n }\n\n getOptionValue(option) {\n const { valueProperty } = this.props;\n return option[valueProperty];\n }\n\n getOptionLabel(option) {\n const { labelProperty } = this.props;\n return option[labelProperty];\n }\n\n computeSizes() {\n const { options, numberItemsOnScreen } = this.props;\n const { offsetHeight: optionHeight } = this.pickerItemRef.current;\n\n this.optionHeight = optionHeight;\n this.listHeight = this.optionHeight * numberItemsOnScreen;\n\n this.minYListPosition = this.listHeight / 2 - this.optionHeight / 2;\n this.maxYListPosition = this.optionHeight * (options.length - Math.ceil(numberItemsOnScreen / 2));\n }\n\n handleOptionSelect(optionValue, index, scrolling) {\n const { onChange } = this.props;\n this.setState(\n (state) => ({\n ...state,\n scrolling,\n selectedOption: optionValue,\n activeIndex: index,\n }),\n () => {\n onChange(optionValue, index);\n },\n );\n }\n\n // TODO: this needs a refactor from de FocusGroup\n // eslint-disable-next-line max-statements\n handleKeyDown(e) {\n const { activeIndex } = this.state;\n const { options } = this.props;\n const [firstColumn, ...restColumns] = document.getElementsByClassName('em-ds-time-picker-panel');\n const [lastColumn] = restColumns.slice(-1);\n const [prev] = document.getElementsByClassName('DayPickerNavigation_button');\n const focusedElement = document.activeElement;\n\n switch (e.key) {\n case 'Home':\n this.moveTo(0);\n break;\n case 'End':\n this.moveTo(options.length - 1);\n break;\n case 'ArrowUp':\n this.moveTo(activeIndex - 1);\n break;\n case 'ArrowDown':\n this.moveTo(activeIndex + 1);\n break;\n case 'Tab': {\n e.preventDefault();\n // If it is DateTimePicker, move focus to prev arrow element\n if (prev && focusedElement === lastColumn) {\n prev.focus();\n } else if (focusedElement === lastColumn) {\n firstColumn.focus();\n } else {\n const position = findIndex(restColumns, focusedElement);\n restColumns[position + 1].focus();\n }\n break;\n }\n default:\n break;\n }\n }\n\n moveTo(index, scrolling) {\n const { options } = this.props;\n const { selectedOption } = this.state;\n const validIndex = validateIndex(index, options);\n const option = options[validIndex];\n const optionValue = this.getOptionValue(option);\n if (selectedOption !== optionValue && option.disabled !== true) {\n this.handleOptionSelect(optionValue, validIndex, scrolling);\n }\n // TO-DO: if date disabled, add nextValidOption selection\n }\n\n handleStepMoveUp() {\n const { activeIndex } = this.state;\n const { arrowStep, options } = this.props;\n const supposedPos = activeIndex - arrowStep;\n const nextPos = supposedPos >= 0 ? supposedPos : activeIndex - 1;\n\n const nextValidOption = options.find((op) => !op.disabled);\n this.moveTo(nextPos, true, nextValidOption);\n }\n\n handleStepMoveDown() {\n const { activeIndex } = this.state;\n const { arrowStep, options } = this.props;\n const supposedPos = activeIndex + arrowStep;\n const nextPos = supposedPos <= options.length ? supposedPos : activeIndex + 1;\n this.moveTo(nextPos);\n }\n\n renderHeader = () => {\n const { header } = this.props;\n\n return <PickerHeader>{header}</PickerHeader>;\n };\n\n render() {\n const { options, hasHeader, type, time, meridiem, disabledTimes } = this.props;\n const { selectedOption, activeIndex, scrolling } = this.state;\n\n const listYPosition = this.computeContainerTranslation(activeIndex);\n\n return (\n <Wrapper>\n {hasHeader && this.renderHeader()}\n <Container classProps={{ scrolling }} onKeyDown={this.handleKeyDown} tabIndex={0}>\n <PickerSelectedOptionSelected innerRef={this.selectedOptionRef}>\n <SelectedCircle />\n </PickerSelectedOptionSelected>\n <ArrowButtonContainer>\n <DSButton\n {...arrowProps}\n aria-label=\"Chevron Up\"\n data-testid={`${type}-chevron-up`}\n disabled={activeIndex <= 0}\n icon={<ChevronSmallUp />}\n onClick={this.handleStepMoveUp}\n tabIndex={-1}\n />\n </ArrowButtonContainer>\n <PickerItemListContainer\n innerRef={this.pickerListContainerRef}\n style={{\n height: this.listHeight,\n }}\n >\n <PickerItemList\n data-testid={`${type}-list`}\n innerRef={this.pickerListRef}\n style={{\n transform: `translateY(${listYPosition}px)`,\n }}\n >\n {options.map((option, index) => {\n const value = this.getOptionValue(option);\n const label = this.getOptionLabel(option);\n let valueFormatted;\n if (meridiem === 'AM') valueFormatted = value;\n else if (meridiem === 'PM' && value === 12) valueFormatted = value;\n else if (meridiem === 'PM') valueFormatted = value + 12;\n\n let disabled = false;\n if (disabledTimes) {\n const { from, to } = disabledTimes;\n if (\n (type === 'hour' && valueFormatted >= from?.hour && valueFormatted < to?.hour) ||\n (type === 'minutes' && value >= from?.min && value < to?.min)\n ) {\n disabled = true;\n }\n if (type === 'minutes' && (time?.hour() > to?.hour || time?.hour() < from?.hour)) {\n disabled = false;\n }\n if (label === 'am' && from?.hour == 0 && to?.hour >= 12) {\n disabled = true;\n }\n if (label === 'pm' && to?.hour == 24) {\n disabled = true;\n }\n }\n\n option.disabled = disabled;\n\n return (\n <PickerItemContainer\n key={value}\n classProps={{\n selected: selectedOption ? value === selectedOption : index === 0,\n disabled,\n }}\n innerRef={this.pickerItemRef}\n onClick={() => {\n if (!disabled) this.handleOptionSelect(value, index);\n }}\n >\n {label}\n </PickerItemContainer>\n );\n })}\n </PickerItemList>\n </PickerItemListContainer>\n <ArrowButtonContainer>\n <DSButton\n {...arrowProps}\n aria-label=\"Chevron Down\"\n data-testid={`${type}-chevron-down`}\n disabled={activeIndex >= options.length - 1}\n icon={<ChevronSmallDown />}\n onClick={this.handleStepMoveDown}\n tabIndex={-1}\n />\n </ArrowButtonContainer>\n </Container>\n </Wrapper>\n );\n }\n}\n\nPickerPanel.defaultProps = {\n valueProperty: 'value',\n labelProperty: 'label',\n numberItemsOnScreen: 5, // this number should be impair\n options: [],\n arrowStep: 1,\n};\n\nexport { PickerPanel };", "import * as React from 'react';\nexport { React };\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|