funda-ui 2.0.755 → 2.1.102
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/CascadingSelect/index.css +3 -3
- package/CascadingSelect/index.js +63 -69
- package/CascadingSelectE2E/index.css +3 -3
- package/CascadingSelectE2E/index.js +123 -97
- package/MultilevelDropdownMenu/index.js +21 -3
- package/lib/cjs/CascadingSelect/index.js +63 -69
- package/lib/cjs/CascadingSelectE2E/index.js +123 -97
- package/lib/cjs/MultilevelDropdownMenu/index.js +21 -3
- package/lib/css/CascadingSelect/index.css +3 -3
- package/lib/css/CascadingSelectE2E/index.css +3 -3
- package/lib/esm/CascadingSelect/index.scss +5 -4
- package/lib/esm/CascadingSelect/index.tsx +54 -56
- package/lib/esm/CascadingSelectE2E/index.scss +6 -4
- package/lib/esm/CascadingSelectE2E/index.tsx +105 -64
- package/lib/esm/MultilevelDropdownMenu/MenuList.tsx +13 -0
- package/package.json +1 -1
- package/lib/esm/CascadingSelect/utils/tree.js +0 -119
|
@@ -7,9 +7,6 @@
|
|
|
7
7
|
--cas-select-result-font-size: 1rem;
|
|
8
8
|
--cas-select-result-padding-x: 0.75rem;
|
|
9
9
|
--cas-select-result-padding-y: 0.375rem;
|
|
10
|
-
--cas-select-opt-font-size: 0.875rem;
|
|
11
|
-
--cas-select-opt-padding-x: .4rem;
|
|
12
|
-
--cas-select-opt-padding-y: .3rem;
|
|
13
10
|
}
|
|
14
11
|
.cas-select__wrapper .cas-select__result {
|
|
15
12
|
position: absolute;
|
|
@@ -70,6 +67,9 @@
|
|
|
70
67
|
|
|
71
68
|
/*------ List ------*/
|
|
72
69
|
.cas-select__items-wrapper {
|
|
70
|
+
--cas-select-opt-font-size: 0.875rem;
|
|
71
|
+
--cas-select-opt-padding-x: .4rem;
|
|
72
|
+
--cas-select-opt-padding-y: .3rem;
|
|
73
73
|
--cas-select-opt-header-border-color: rgba(1, 1, 1, .2);
|
|
74
74
|
--cas-select-opt-header-text-color: #999;
|
|
75
75
|
--cas-select-opt-hover-bg: #f7f7f7;
|
package/CascadingSelect/index.js
CHANGED
|
@@ -552,53 +552,41 @@ var CascadingSelect = function CascadingSelect(props) {
|
|
|
552
552
|
var rootRef = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useRef)(null);
|
|
553
553
|
var valRef = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useRef)(null);
|
|
554
554
|
var listRef = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useRef)(null);
|
|
555
|
-
|
|
555
|
+
|
|
556
|
+
// @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
|
557
|
+
// DO NOT USE `useState()` for `dictionaryData`, `listData`,
|
|
558
|
+
// because the list uses vanilla JS DOM events which will cause the results of useState not to be displayed in real time.
|
|
559
|
+
// @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
|
560
|
+
|
|
561
|
+
var dictionaryData = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useRef)([]);
|
|
562
|
+
var _useState = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)(false),
|
|
556
563
|
_useState2 = _slicedToArray(_useState, 2),
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
var _useState3 = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)(
|
|
564
|
+
loading = _useState2[0],
|
|
565
|
+
setLoading = _useState2[1];
|
|
566
|
+
var _useState3 = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)([]),
|
|
560
567
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
var _useState5 = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)(
|
|
568
|
+
columnTitleData = _useState4[0],
|
|
569
|
+
setColumnTitleData = _useState4[1];
|
|
570
|
+
var _useState5 = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)(false),
|
|
564
571
|
_useState6 = _slicedToArray(_useState5, 2),
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
var _useState7 = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)(
|
|
572
|
+
hasErr = _useState6[0],
|
|
573
|
+
setHasErr = _useState6[1];
|
|
574
|
+
var _useState7 = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)(value || ''),
|
|
568
575
|
_useState8 = _slicedToArray(_useState7, 2),
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
var _useState9 = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)(value || ''),
|
|
572
|
-
_useState10 = _slicedToArray(_useState9, 2),
|
|
573
|
-
changedVal = _useState10[0],
|
|
574
|
-
setChangedVal = _useState10[1];
|
|
576
|
+
changedVal = _useState8[0],
|
|
577
|
+
setChangedVal = _useState8[1];
|
|
575
578
|
var windowScrollUpdate = (0,performance.debounce)(handleScrollEvent, 500);
|
|
576
579
|
|
|
577
580
|
//for variable
|
|
578
|
-
var
|
|
579
|
-
_useState12 = _slicedToArray(_useState11, 2),
|
|
580
|
-
data = _useState12[0],
|
|
581
|
-
setData = _useState12[1];
|
|
582
|
-
|
|
583
|
-
// DO NOT USE `useState()` for `selectedData`, because the list uses
|
|
584
|
-
// vanilla JS DOM events which will cause the results of useState not to be displayed in real time.
|
|
581
|
+
var listData = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useRef)([]);
|
|
585
582
|
var selectedData = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useRef)({
|
|
586
583
|
labels: [],
|
|
587
584
|
values: []
|
|
588
585
|
});
|
|
589
|
-
var
|
|
590
|
-
|
|
591
|
-
isShow =
|
|
592
|
-
setIsShow =
|
|
593
|
-
|
|
594
|
-
// destroy `parent_id` match
|
|
595
|
-
var _useState15 = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)({
|
|
596
|
-
labels: [],
|
|
597
|
-
values: []
|
|
598
|
-
}),
|
|
599
|
-
_useState16 = _slicedToArray(_useState15, 2),
|
|
600
|
-
selectedDataByClick = _useState16[0],
|
|
601
|
-
setSelectedDataByClick = _useState16[1];
|
|
586
|
+
var _useState9 = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)(false),
|
|
587
|
+
_useState10 = _slicedToArray(_useState9, 2),
|
|
588
|
+
isShow = _useState10[0],
|
|
589
|
+
setIsShow = _useState10[1];
|
|
602
590
|
|
|
603
591
|
/**
|
|
604
592
|
* Check if an element is in the viewport
|
|
@@ -698,7 +686,7 @@ var CascadingSelect = function CascadingSelect(props) {
|
|
|
698
686
|
|
|
699
687
|
// options event listener
|
|
700
688
|
// !!! to prevent button mismatch when changing
|
|
701
|
-
if (
|
|
689
|
+
if (listData.current.length > 0) {
|
|
702
690
|
[].slice.call(listRef.current.querySelectorAll('[data-opt]')).forEach(function (node) {
|
|
703
691
|
if (typeof node.dataset.ev === 'undefined') {
|
|
704
692
|
node.dataset.ev = 'true';
|
|
@@ -708,7 +696,7 @@ var CascadingSelect = function CascadingSelect(props) {
|
|
|
708
696
|
var _value = JSON.parse(e.currentTarget.dataset.value);
|
|
709
697
|
var _index = Number(e.currentTarget.dataset.index);
|
|
710
698
|
var _level = Number(e.currentTarget.dataset.level);
|
|
711
|
-
handleClickItem(e, _value, _index, _level,
|
|
699
|
+
handleClickItem(e, _value, _index, _level, listData.current);
|
|
712
700
|
});
|
|
713
701
|
}
|
|
714
702
|
});
|
|
@@ -751,6 +739,11 @@ var CascadingSelect = function CascadingSelect(props) {
|
|
|
751
739
|
}
|
|
752
740
|
});
|
|
753
741
|
}
|
|
742
|
+
|
|
743
|
+
// initialize events for options
|
|
744
|
+
setTimeout(function () {
|
|
745
|
+
popwinBtnEventsInit();
|
|
746
|
+
}, 0);
|
|
754
747
|
}
|
|
755
748
|
function cancel() {
|
|
756
749
|
// hide list
|
|
@@ -812,7 +805,7 @@ var CascadingSelect = function CascadingSelect(props) {
|
|
|
812
805
|
|
|
813
806
|
// STEP 2: ===========
|
|
814
807
|
// dictionary data (orginal)
|
|
815
|
-
|
|
808
|
+
dictionaryData.current = _ORGIN_DATA;
|
|
816
809
|
|
|
817
810
|
// STEP 3: ===========
|
|
818
811
|
// Add an empty item to each list to support empty item selection
|
|
@@ -821,7 +814,7 @@ var CascadingSelect = function CascadingSelect(props) {
|
|
|
821
814
|
|
|
822
815
|
// STEP 4: ===========
|
|
823
816
|
// Turn the data of each group into an array
|
|
824
|
-
|
|
817
|
+
listData.current = [_EMPTY_SUPPORTED_DATA];
|
|
825
818
|
|
|
826
819
|
// STEP 5: ===========
|
|
827
820
|
//
|
|
@@ -880,12 +873,16 @@ var CascadingSelect = function CascadingSelect(props) {
|
|
|
880
873
|
//
|
|
881
874
|
activate();
|
|
882
875
|
}
|
|
883
|
-
function handleClickItem(e, resValue, index, level,
|
|
876
|
+
function handleClickItem(e, resValue, index, level, curData) {
|
|
884
877
|
e.preventDefault();
|
|
885
878
|
|
|
879
|
+
// update column display with DOM
|
|
880
|
+
//////////////////////////////////////////
|
|
881
|
+
updateColDisplay(true, false, level);
|
|
882
|
+
|
|
886
883
|
// update value
|
|
887
884
|
//////////////////////////////////////////
|
|
888
|
-
var inputVal = updateValue(dictionaryData, resValue.id, level);
|
|
885
|
+
var inputVal = updateValue(dictionaryData.current, resValue.id, level);
|
|
889
886
|
|
|
890
887
|
// callback
|
|
891
888
|
//////////////////////////////////////////
|
|
@@ -895,7 +892,7 @@ var CascadingSelect = function CascadingSelect(props) {
|
|
|
895
892
|
|
|
896
893
|
// update data
|
|
897
894
|
//////////////////////////////////////////
|
|
898
|
-
var newData =
|
|
895
|
+
var newData = curData; // such as: [Array(6), Array(3)]
|
|
899
896
|
|
|
900
897
|
// All the elements from start(array.length - start) to the end of the array will be deleted.
|
|
901
898
|
newData.splice(level + 1);
|
|
@@ -910,7 +907,7 @@ var CascadingSelect = function CascadingSelect(props) {
|
|
|
910
907
|
|
|
911
908
|
// update actived items
|
|
912
909
|
//////////////////////////////////////////
|
|
913
|
-
|
|
910
|
+
listData.current = newData;
|
|
914
911
|
|
|
915
912
|
// close modal
|
|
916
913
|
//////////////////////////////////////////
|
|
@@ -923,7 +920,7 @@ var CascadingSelect = function CascadingSelect(props) {
|
|
|
923
920
|
//////////////////////////////////////////
|
|
924
921
|
var currentItemsInner = e.currentTarget.closest('.cas-select__items-inner');
|
|
925
922
|
if (currentItemsInner !== null) {
|
|
926
|
-
|
|
923
|
+
curData.forEach(function (v, col) {
|
|
927
924
|
var colItemsWrapper = currentItemsInner.querySelectorAll('.cas-select__items-col');
|
|
928
925
|
colItemsWrapper.forEach(function (perCol) {
|
|
929
926
|
var _col = Number(perCol.dataset.col);
|
|
@@ -938,12 +935,6 @@ var CascadingSelect = function CascadingSelect(props) {
|
|
|
938
935
|
// not header option
|
|
939
936
|
if (typeof e.currentTarget.dataset.optHeader === 'undefined') e.currentTarget.classList.add('active');
|
|
940
937
|
}
|
|
941
|
-
|
|
942
|
-
// initialize events for options
|
|
943
|
-
//////////////////////////////////////////
|
|
944
|
-
setTimeout(function () {
|
|
945
|
-
popwinBtnEventsInit();
|
|
946
|
-
}, 0);
|
|
947
938
|
}
|
|
948
939
|
|
|
949
940
|
/**
|
|
@@ -953,6 +944,8 @@ var CascadingSelect = function CascadingSelect(props) {
|
|
|
953
944
|
* @returns
|
|
954
945
|
*/
|
|
955
946
|
function markCurrent(arr, index) {
|
|
947
|
+
if (!Array.isArray(arr)) return;
|
|
948
|
+
|
|
956
949
|
// click an item
|
|
957
950
|
//////////////////////////////////////////
|
|
958
951
|
for (var i = 0; i < arr.length; i++) {
|
|
@@ -1047,12 +1040,8 @@ var CascadingSelect = function CascadingSelect(props) {
|
|
|
1047
1040
|
labels: [],
|
|
1048
1041
|
values: []
|
|
1049
1042
|
};
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
values: []
|
|
1053
|
-
});
|
|
1054
|
-
setDictionaryData([]);
|
|
1055
|
-
setData([]);
|
|
1043
|
+
dictionaryData.current = [];
|
|
1044
|
+
listData.current = [];
|
|
1056
1045
|
setChangedVal('');
|
|
1057
1046
|
}
|
|
1058
1047
|
function initDefaultValue(defaultValue) {
|
|
@@ -1133,7 +1122,7 @@ var CascadingSelect = function CascadingSelect(props) {
|
|
|
1133
1122
|
// STEP 2: ===========
|
|
1134
1123
|
// update actived items
|
|
1135
1124
|
//////////////////////////////////////////
|
|
1136
|
-
|
|
1125
|
+
listData.current = _allColumnsData;
|
|
1137
1126
|
|
|
1138
1127
|
// STEP 3: ===========
|
|
1139
1128
|
// Set a default value
|
|
@@ -1142,10 +1131,6 @@ var CascadingSelect = function CascadingSelect(props) {
|
|
|
1142
1131
|
labels: _allLables,
|
|
1143
1132
|
values: _allValues
|
|
1144
1133
|
};
|
|
1145
|
-
setSelectedDataByClick({
|
|
1146
|
-
labels: _allLables,
|
|
1147
|
-
values: _allValues
|
|
1148
|
-
});
|
|
1149
1134
|
}
|
|
1150
1135
|
});
|
|
1151
1136
|
|
|
@@ -1307,9 +1292,18 @@ var CascadingSelect = function CascadingSelect(props) {
|
|
|
1307
1292
|
}
|
|
1308
1293
|
return resAll;
|
|
1309
1294
|
}
|
|
1310
|
-
function displayInfo(
|
|
1311
|
-
var _data =
|
|
1312
|
-
|
|
1295
|
+
function displayInfo() {
|
|
1296
|
+
var _data = selectedData.current;
|
|
1297
|
+
var formattedDefaultValue = changedVal !== '' ? VALUE_BY_BRACES ? (0,extract.extractContentsOfBraces)(changedVal) : changedVal.split(',') : [];
|
|
1298
|
+
var _labels = Array.isArray(_data.labels) && _data.labels.length > 0 ? _data.labels : [];
|
|
1299
|
+
|
|
1300
|
+
// Sometimes the array may be empty due to rendering speed
|
|
1301
|
+
if (_labels.length === 0) {
|
|
1302
|
+
_labels = formattedDefaultValue.map(function (s) {
|
|
1303
|
+
return s.toString().replace(/[\w\s]/gi, '').replace(/\[\]/g, '');
|
|
1304
|
+
});
|
|
1305
|
+
}
|
|
1306
|
+
return _labels.length > 0 ? _labels.map(function (item, i, arr) {
|
|
1313
1307
|
if (arr.length - 1 === i) {
|
|
1314
1308
|
return /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", {
|
|
1315
1309
|
key: i
|
|
@@ -1441,7 +1435,7 @@ var CascadingSelect = function CascadingSelect(props) {
|
|
|
1441
1435
|
}, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("path", {
|
|
1442
1436
|
fill: "#000",
|
|
1443
1437
|
d: "M195.2 195.2a64 64 0 0 1 90.496 0L512 421.504 738.304 195.2a64 64 0 0 1 90.496 90.496L602.496 512 828.8 738.304a64 64 0 0 1-90.496 90.496L512 602.496 285.696 828.8a64 64 0 0 1-90.496-90.496L421.504 512 195.2 285.696a64 64 0 0 1 0-90.496z"
|
|
1444
|
-
}))) : null,
|
|
1438
|
+
}))) : null, listData.current.map(function (item, level) {
|
|
1445
1439
|
if (item.length > 0) {
|
|
1446
1440
|
return /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("li", {
|
|
1447
1441
|
key: level,
|
|
@@ -1454,7 +1448,7 @@ var CascadingSelect = function CascadingSelect(props) {
|
|
|
1454
1448
|
cleanNodeBtnClassName: cleanNodeBtnClassName,
|
|
1455
1449
|
cleanNodeBtnContent: cleanNodeBtnContent,
|
|
1456
1450
|
selectEv: function selectEv(e, value, index) {
|
|
1457
|
-
return handleClickItem(e, value, index, level,
|
|
1451
|
+
return handleClickItem(e, value, index, level, listData.current);
|
|
1458
1452
|
}
|
|
1459
1453
|
}));
|
|
1460
1454
|
} else {
|
|
@@ -1463,9 +1457,9 @@ var CascadingSelect = function CascadingSelect(props) {
|
|
|
1463
1457
|
}))) : null, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", {
|
|
1464
1458
|
className: "cas-select__val",
|
|
1465
1459
|
onClick: handleDisplayOptions
|
|
1466
|
-
}, displayResult ?
|
|
1460
|
+
}, displayResult ? /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", {
|
|
1467
1461
|
className: "cas-select__result"
|
|
1468
|
-
}, displayInfo(
|
|
1462
|
+
}, displayInfo()) : null, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("input", _extends({
|
|
1469
1463
|
ref: valRef,
|
|
1470
1464
|
id: idRes,
|
|
1471
1465
|
"data-overlay-id": "cas-select__items-wrapper-".concat(idRes),
|
|
@@ -7,9 +7,6 @@
|
|
|
7
7
|
--cas-select-e2e-result-font-size: 1rem;
|
|
8
8
|
--cas-select-e2e-result-padding-x: 0.75rem;
|
|
9
9
|
--cas-select-e2e-result-padding-y: 0.375rem;
|
|
10
|
-
--cas-select-e2e-opt-font-size: 0.875rem;
|
|
11
|
-
--cas-select-e2e-opt-padding-x: .4rem;
|
|
12
|
-
--cas-select-e2e-opt-padding-y: .3rem;
|
|
13
10
|
}
|
|
14
11
|
.cas-select-e2e__wrapper .cas-select-e2e__result {
|
|
15
12
|
position: absolute;
|
|
@@ -70,6 +67,9 @@
|
|
|
70
67
|
|
|
71
68
|
/*------ List ------*/
|
|
72
69
|
.cas-select-e2e__items-wrapper {
|
|
70
|
+
--cas-select-e2e-opt-font-size: 0.875rem;
|
|
71
|
+
--cas-select-e2e-opt-padding-x: .4rem;
|
|
72
|
+
--cas-select-e2e-opt-padding-y: .3rem;
|
|
73
73
|
--cas-select-e2e-opt-header-border-color: rgba(1, 1, 1, .2);
|
|
74
74
|
--cas-select-e2e-opt-header-text-color: #999;
|
|
75
75
|
--cas-select-e2e-opt-hover-bg: #f7f7f7;
|