@cashub/ui 0.18.0 → 0.18.2
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/datetimePicker/DatePickerV2.js +11 -6
- package/package.json +1 -1
- package/select/Select.js +143 -56
|
@@ -165,8 +165,10 @@ var DatePickerV2 = function DatePickerV2(_ref) {
|
|
|
165
165
|
}
|
|
166
166
|
}, [accordionCurrentDisplayType]);
|
|
167
167
|
var handleConfirm = (0, _react.useCallback)(function () {
|
|
168
|
-
if (
|
|
169
|
-
|
|
168
|
+
if (confirmDate) {
|
|
169
|
+
onConfirm(confirmDate);
|
|
170
|
+
}
|
|
171
|
+
|
|
170
172
|
setDisplayPicker(false);
|
|
171
173
|
setAccordionCurrentDisplayType(null);
|
|
172
174
|
}, [confirmDate, onConfirm]);
|
|
@@ -350,10 +352,13 @@ var DatePickerV2 = function DatePickerV2(_ref) {
|
|
|
350
352
|
});
|
|
351
353
|
}, [selectedDate, handleChangeDate, isSelectedDay, handleDisabled]);
|
|
352
354
|
(0, _react.useEffect)(function () {
|
|
353
|
-
if (
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
355
|
+
if (selected) {
|
|
356
|
+
var formattedDate = (0, _utils.formatDate)((0, _toUTC.default)(selected), 'date');
|
|
357
|
+
setSelectedDate("".concat(formattedDate, " ").concat(DEFAULT_TIME));
|
|
358
|
+
setConfirmDate(formattedDate);
|
|
359
|
+
} else {
|
|
360
|
+
setConfirmDate('');
|
|
361
|
+
}
|
|
357
362
|
}, [selected]);
|
|
358
363
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_DateTimePickerContext.default.Provider, {
|
|
359
364
|
value: context,
|
package/package.json
CHANGED
package/select/Select.js
CHANGED
|
@@ -7,6 +7,8 @@ exports.default = void 0;
|
|
|
7
7
|
|
|
8
8
|
var _react = require("react");
|
|
9
9
|
|
|
10
|
+
var _reactI18next = require("react-i18next");
|
|
11
|
+
|
|
10
12
|
var _reactOutsideClickHandler = _interopRequireDefault(require("react-outside-click-handler"));
|
|
11
13
|
|
|
12
14
|
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
@@ -75,6 +77,8 @@ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
|
75
77
|
|
|
76
78
|
var Select = function Select(_ref) {
|
|
77
79
|
var options = _ref.options,
|
|
80
|
+
_ref$enableSelectAll = _ref.enableSelectAll,
|
|
81
|
+
enableSelectAll = _ref$enableSelectAll === void 0 ? false : _ref$enableSelectAll,
|
|
78
82
|
selected = _ref.selected,
|
|
79
83
|
onSelect = _ref.onSelect,
|
|
80
84
|
onDeselect = _ref.onDeselect,
|
|
@@ -93,71 +97,93 @@ var Select = function Select(_ref) {
|
|
|
93
97
|
fillReverse = _ref.fillReverse,
|
|
94
98
|
onBlur = _ref.onBlur,
|
|
95
99
|
onSearch = _ref.onSearch;
|
|
100
|
+
console.log('selected', selected);
|
|
101
|
+
|
|
102
|
+
var _useTranslation = (0, _reactI18next.useTranslation)(),
|
|
103
|
+
t = _useTranslation.t;
|
|
96
104
|
|
|
97
105
|
var _useState = (0, _react.useState)((0, _lodash.default)('select-')),
|
|
98
106
|
_useState2 = _slicedToArray(_useState, 1),
|
|
99
107
|
id = _useState2[0];
|
|
100
108
|
|
|
101
|
-
var _useState3 = (0, _react.useState)(
|
|
102
|
-
_useState4 = _slicedToArray(_useState3,
|
|
103
|
-
|
|
104
|
-
setDisplay = _useState4[1];
|
|
109
|
+
var _useState3 = (0, _react.useState)((0, _lodash.default)('allOptons-')),
|
|
110
|
+
_useState4 = _slicedToArray(_useState3, 1),
|
|
111
|
+
allOptionId = _useState4[0];
|
|
105
112
|
|
|
106
|
-
var _useState5 = (0, _react.useState)(
|
|
113
|
+
var _useState5 = (0, _react.useState)(false),
|
|
107
114
|
_useState6 = _slicedToArray(_useState5, 2),
|
|
108
|
-
|
|
109
|
-
|
|
115
|
+
display = _useState6[0],
|
|
116
|
+
setDisplay = _useState6[1];
|
|
110
117
|
|
|
111
118
|
var _useState7 = (0, _react.useState)(null),
|
|
112
119
|
_useState8 = _slicedToArray(_useState7, 2),
|
|
113
|
-
|
|
114
|
-
|
|
120
|
+
comboboxElement = _useState8[0],
|
|
121
|
+
setComboboxElement = _useState8[1];
|
|
122
|
+
|
|
123
|
+
var _useState9 = (0, _react.useState)(null),
|
|
124
|
+
_useState10 = _slicedToArray(_useState9, 2),
|
|
125
|
+
listBoxElement = _useState10[0],
|
|
126
|
+
setListBoxElement = _useState10[1];
|
|
115
127
|
|
|
116
128
|
var optionsElementRef = (0, _react.useRef)(null);
|
|
117
129
|
var searchBoxElement = (0, _react.useRef)(null);
|
|
118
130
|
|
|
119
|
-
var
|
|
120
|
-
_useState10 = _slicedToArray(_useState9, 2),
|
|
121
|
-
listBoxWidth = _useState10[0],
|
|
122
|
-
setListBoxWidth = _useState10[1];
|
|
123
|
-
|
|
124
|
-
var _useState11 = (0, _react.useState)([]),
|
|
131
|
+
var _useState11 = (0, _react.useState)(0),
|
|
125
132
|
_useState12 = _slicedToArray(_useState11, 2),
|
|
126
|
-
|
|
127
|
-
|
|
133
|
+
listBoxWidth = _useState12[0],
|
|
134
|
+
setListBoxWidth = _useState12[1];
|
|
128
135
|
|
|
129
|
-
var _useState13 = (0, _react.useState)(
|
|
136
|
+
var _useState13 = (0, _react.useState)([]),
|
|
130
137
|
_useState14 = _slicedToArray(_useState13, 2),
|
|
131
|
-
|
|
132
|
-
|
|
138
|
+
optionList = _useState14[0],
|
|
139
|
+
setOptionList = _useState14[1];
|
|
133
140
|
|
|
134
|
-
var _useState15 = (0, _react.useState)(
|
|
141
|
+
var _useState15 = (0, _react.useState)(null),
|
|
135
142
|
_useState16 = _slicedToArray(_useState15, 2),
|
|
136
|
-
|
|
137
|
-
|
|
143
|
+
focusedOption = _useState16[0],
|
|
144
|
+
setFocusedOption = _useState16[1];
|
|
138
145
|
|
|
139
|
-
var _useState17 = (0, _react.useState)(
|
|
146
|
+
var _useState17 = (0, _react.useState)(false),
|
|
140
147
|
_useState18 = _slicedToArray(_useState17, 2),
|
|
141
|
-
|
|
142
|
-
|
|
148
|
+
isFocusCombobox = _useState18[0],
|
|
149
|
+
setIsFocusCombobox = _useState18[1];
|
|
143
150
|
|
|
144
|
-
var _useState19 = (0, _react.useState)(
|
|
151
|
+
var _useState19 = (0, _react.useState)([]),
|
|
145
152
|
_useState20 = _slicedToArray(_useState19, 2),
|
|
146
|
-
|
|
147
|
-
|
|
153
|
+
selectedOptions = _useState20[0],
|
|
154
|
+
setSelectedOptions = _useState20[1];
|
|
148
155
|
|
|
149
|
-
var _useState21 = (0, _react.useState)(
|
|
156
|
+
var _useState21 = (0, _react.useState)(options),
|
|
150
157
|
_useState22 = _slicedToArray(_useState21, 2),
|
|
151
|
-
|
|
152
|
-
|
|
158
|
+
filteredOptions = _useState22[0],
|
|
159
|
+
setFilteredOptions = _useState22[1];
|
|
160
|
+
|
|
161
|
+
var _useState23 = (0, _react.useState)(''),
|
|
162
|
+
_useState24 = _slicedToArray(_useState23, 2),
|
|
163
|
+
search = _useState24[0],
|
|
164
|
+
setSearch = _useState24[1];
|
|
153
165
|
|
|
154
166
|
var _useCustomPopper = (0, _hooks.useCustomPopper)(comboboxElement, listBoxElement),
|
|
155
167
|
styles = _useCustomPopper.styles,
|
|
156
168
|
attributes = _useCustomPopper.attributes,
|
|
157
169
|
state = _useCustomPopper.state,
|
|
158
|
-
update = _useCustomPopper.update;
|
|
159
|
-
|
|
170
|
+
update = _useCustomPopper.update;
|
|
171
|
+
|
|
172
|
+
var newOptions = (0, _react.useMemo)(function () {
|
|
173
|
+
if (!options) return;
|
|
160
174
|
|
|
175
|
+
var newOptions = _toConsumableArray(options);
|
|
176
|
+
|
|
177
|
+
if (options.length > 0 && multiple && enableSelectAll) {
|
|
178
|
+
newOptions.unshift({
|
|
179
|
+
id: allOptionId,
|
|
180
|
+
text: t('all')
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
return newOptions;
|
|
185
|
+
}, [options, multiple, enableSelectAll, allOptionId]); // parse all value to string
|
|
186
|
+
// for subsequently determine whether it is a selected item
|
|
161
187
|
|
|
162
188
|
var parsedSelected = (0, _react.useMemo)(function () {
|
|
163
189
|
if (selected || selected === 0) {
|
|
@@ -173,7 +199,16 @@ var Select = function Select(_ref) {
|
|
|
173
199
|
}
|
|
174
200
|
|
|
175
201
|
return '';
|
|
176
|
-
}, [selected]);
|
|
202
|
+
}, [selected]);
|
|
203
|
+
var selectedAllOptions = (0, _react.useMemo)(function () {
|
|
204
|
+
var selectedAllOptions = _toConsumableArray(parsedSelected);
|
|
205
|
+
|
|
206
|
+
if (multiple && enableSelectAll && parsedSelected.length + 1 === newOptions.length) {
|
|
207
|
+
selectedAllOptions.unshift(allOptionId);
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
return selectedAllOptions;
|
|
211
|
+
}, [multiple, enableSelectAll, newOptions.length, parsedSelected, allOptionId]); // set focused option
|
|
177
212
|
|
|
178
213
|
var handleFocusItem = (0, _react.useCallback)(function (element) {
|
|
179
214
|
if (!optionsElementRef.current) return;
|
|
@@ -236,21 +271,73 @@ var Select = function Select(_ref) {
|
|
|
236
271
|
}, [listBoxElement]);
|
|
237
272
|
var handleOnSelect = (0, _react.useCallback)(function (event, value) {
|
|
238
273
|
event.stopPropagation();
|
|
239
|
-
if (disabled === true) return;
|
|
240
|
-
|
|
274
|
+
if (disabled === true) return; // 選取選項
|
|
275
|
+
// 點選 all 全選
|
|
276
|
+
|
|
277
|
+
if (value.toString() === allOptionId && selectedAllOptions.length < newOptions.length) {
|
|
278
|
+
for (var index = 1; index < newOptions.length; index += 1) {
|
|
279
|
+
onSelect(newOptions[index].id);
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
if (value.toString() !== allOptionId && !selectedAllOptions.includes(value.toString())) {
|
|
284
|
+
// 選取一個選項,變成全選
|
|
285
|
+
if (selectedAllOptions.length + 2 === newOptions.length) {
|
|
286
|
+
onSelect(value);
|
|
287
|
+
} else {
|
|
288
|
+
// 選取特定選項
|
|
289
|
+
onSelect(value);
|
|
290
|
+
}
|
|
291
|
+
} // 刪除選項
|
|
292
|
+
// 點選 all 刪除全選
|
|
293
|
+
|
|
294
|
+
|
|
295
|
+
if (value.toString() === allOptionId && selectedAllOptions.length === newOptions.length) {
|
|
296
|
+
for (var _index = 0; _index < newOptions.length; _index += 1) {
|
|
297
|
+
onDeselect(newOptions[_index].id);
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
if (value.toString() !== allOptionId && selectedAllOptions.includes(value.toString())) {
|
|
302
|
+
// 原本是 all 全選後來刪除其中一個選項
|
|
303
|
+
if (selectedAllOptions.length === newOptions.length) {
|
|
304
|
+
onDeselect(value);
|
|
305
|
+
} else {
|
|
306
|
+
// 刪除特定選項
|
|
307
|
+
onDeselect(value);
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
|
|
241
311
|
comboboxElement.focus();
|
|
242
312
|
setSearch('');
|
|
243
|
-
setDisplay(
|
|
244
|
-
}, [disabled, onSelect, comboboxElement]);
|
|
313
|
+
setDisplay(true);
|
|
314
|
+
}, [disabled, onSelect, comboboxElement, selectedAllOptions, onDeselect, newOptions, allOptionId]);
|
|
245
315
|
var handleOnDeselect = (0, _react.useCallback)(function (event, value) {
|
|
246
316
|
event.stopPropagation();
|
|
247
317
|
if (disabled === true) return;
|
|
248
|
-
|
|
249
|
-
|
|
318
|
+
|
|
319
|
+
if (value.toString() === allOptionId) {
|
|
320
|
+
for (var index = 0; index < optionList.length; index += 1) {
|
|
321
|
+
onDeselect(optionList[index].id);
|
|
322
|
+
}
|
|
323
|
+
} else {
|
|
324
|
+
onDeselect(value);
|
|
325
|
+
}
|
|
326
|
+
}, [disabled, onDeselect, optionList, allOptionId]); // list all selected option
|
|
250
327
|
|
|
251
328
|
var selectedItem = (0, _react.useMemo)(function () {
|
|
252
329
|
if (selectedOptions.length > 0) {
|
|
253
330
|
if (multiple) {
|
|
331
|
+
if (selectedOptions[0].id === allOptionId) {
|
|
332
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_SelectedMultiple.default, {
|
|
333
|
+
content: selectedOptions[0].text,
|
|
334
|
+
onClick: function onClick(event) {
|
|
335
|
+
return handleOnDeselect(event, selectedOptions[0].id);
|
|
336
|
+
},
|
|
337
|
+
disabled: disabled
|
|
338
|
+
}, selectedOptions[0].id);
|
|
339
|
+
}
|
|
340
|
+
|
|
254
341
|
return selectedOptions.map(function (value) {
|
|
255
342
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_SelectedMultiple.default, {
|
|
256
343
|
content: value.text,
|
|
@@ -268,7 +355,7 @@ var Select = function Select(_ref) {
|
|
|
268
355
|
}
|
|
269
356
|
|
|
270
357
|
return placeholder;
|
|
271
|
-
}, [placeholder, handleOnDeselect, multiple, selectedOptions, disabled]);
|
|
358
|
+
}, [placeholder, handleOnDeselect, multiple, selectedOptions, disabled, allOptionId]);
|
|
272
359
|
var optionItem = (0, _react.useMemo)(function () {
|
|
273
360
|
if (optionList.length <= 0) return null;
|
|
274
361
|
return optionList.map(function (option) {
|
|
@@ -432,21 +519,21 @@ var Select = function Select(_ref) {
|
|
|
432
519
|
|
|
433
520
|
|
|
434
521
|
(0, _react.useEffect)(function () {
|
|
435
|
-
if (!
|
|
522
|
+
if (!newOptions) return;
|
|
436
523
|
var tmpSelectedOptions = [];
|
|
437
|
-
|
|
524
|
+
newOptions.forEach(function (option) {
|
|
438
525
|
if (option.child && option.child.length > 0) {
|
|
439
526
|
option.child.forEach(function (option) {
|
|
440
|
-
if (multiple &&
|
|
527
|
+
if (multiple && selectedAllOptions.includes(option.id.toString())) {
|
|
441
528
|
tmpSelectedOptions.push(option);
|
|
442
|
-
} else if (
|
|
529
|
+
} else if (selectedAllOptions === option.id.toString()) {
|
|
443
530
|
tmpSelectedOptions.push(option);
|
|
444
531
|
}
|
|
445
532
|
});
|
|
446
533
|
} else {
|
|
447
|
-
if (multiple &&
|
|
534
|
+
if (multiple && selectedAllOptions.includes(option.id.toString())) {
|
|
448
535
|
tmpSelectedOptions.push(option);
|
|
449
|
-
} else if (
|
|
536
|
+
} else if (selectedAllOptions === option.id.toString()) {
|
|
450
537
|
tmpSelectedOptions.push(option);
|
|
451
538
|
}
|
|
452
539
|
}
|
|
@@ -454,7 +541,7 @@ var Select = function Select(_ref) {
|
|
|
454
541
|
return false;
|
|
455
542
|
});
|
|
456
543
|
setSelectedOptions(tmpSelectedOptions);
|
|
457
|
-
}, [
|
|
544
|
+
}, [newOptions, selectedAllOptions, multiple]);
|
|
458
545
|
(0, _react.useEffect)(function () {
|
|
459
546
|
if (update) {
|
|
460
547
|
setTimeout(function () {
|
|
@@ -504,9 +591,9 @@ var Select = function Select(_ref) {
|
|
|
504
591
|
child: option.child.map(function (option) {
|
|
505
592
|
var selected = false;
|
|
506
593
|
|
|
507
|
-
if (multiple &&
|
|
594
|
+
if (multiple && selectedAllOptions.includes(option.id.toString())) {
|
|
508
595
|
selected = true;
|
|
509
|
-
} else if (
|
|
596
|
+
} else if (selectedAllOptions === option.id.toString()) {
|
|
510
597
|
selected = true;
|
|
511
598
|
}
|
|
512
599
|
|
|
@@ -519,9 +606,9 @@ var Select = function Select(_ref) {
|
|
|
519
606
|
|
|
520
607
|
var selected = false;
|
|
521
608
|
|
|
522
|
-
if (multiple &&
|
|
609
|
+
if (multiple && selectedAllOptions.includes(option.id.toString())) {
|
|
523
610
|
selected = true;
|
|
524
|
-
} else if (
|
|
611
|
+
} else if (selectedAllOptions === option.id.toString()) {
|
|
525
612
|
selected = true;
|
|
526
613
|
}
|
|
527
614
|
|
|
@@ -529,11 +616,11 @@ var Select = function Select(_ref) {
|
|
|
529
616
|
selected: selected
|
|
530
617
|
});
|
|
531
618
|
}));
|
|
532
|
-
}, [filteredOptions, multiple,
|
|
619
|
+
}, [filteredOptions, multiple, selectedAllOptions]); // filter options on search keyword changed
|
|
533
620
|
|
|
534
621
|
(0, _react.useEffect)(function () {
|
|
535
622
|
var tmpFilteredOptions = [];
|
|
536
|
-
|
|
623
|
+
newOptions.forEach(function (option) {
|
|
537
624
|
if (option.child && option.child.length > 0) {
|
|
538
625
|
var tmpFilteredChildOptions = option.child.filter(function (option) {
|
|
539
626
|
return option.text.toLowerCase().indexOf(search.toLowerCase().trim()) !== -1;
|
|
@@ -549,7 +636,7 @@ var Select = function Select(_ref) {
|
|
|
549
636
|
}
|
|
550
637
|
});
|
|
551
638
|
setFilteredOptions(tmpFilteredOptions);
|
|
552
|
-
}, [search,
|
|
639
|
+
}, [search, newOptions]);
|
|
553
640
|
(0, _react.useEffect)(function () {
|
|
554
641
|
if (display) {
|
|
555
642
|
setupFocus();
|