funda-ui 1.1.159 → 1.1.165
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/Accordion/index.js +88 -5
- package/DropdownMenu/index.js +23 -0
- package/HorizontalScrollContent/index.js +86 -2
- package/LiveSearch/index.d.ts +2 -0
- package/LiveSearch/index.js +27 -21
- package/MultiFuncSelect/index.css +13 -1
- package/MultiFuncSelect/index.d.ts +5 -0
- package/MultiFuncSelect/index.js +47 -30
- package/MultipleCheckboxes/index.js +13 -13
- package/MultipleSelect/index.css +172 -0
- package/MultipleSelect/index.d.ts +39 -0
- package/MultipleSelect/index.js +750 -0
- package/README.md +1 -1
- package/all.d.ts +1 -0
- package/all.js +1 -0
- package/lib/cjs/Accordion/index.js +88 -5
- package/lib/cjs/DropdownMenu/index.js +23 -0
- package/lib/cjs/HorizontalScrollContent/index.js +86 -2
- package/lib/cjs/LiveSearch/index.d.ts +2 -0
- package/lib/cjs/LiveSearch/index.js +27 -21
- package/lib/cjs/MultiFuncSelect/index.d.ts +5 -0
- package/lib/cjs/MultiFuncSelect/index.js +47 -30
- package/lib/cjs/MultipleCheckboxes/index.js +13 -13
- package/lib/cjs/MultipleSelect/index.d.ts +39 -0
- package/lib/cjs/MultipleSelect/index.js +750 -0
- package/lib/cjs/index.d.ts +1 -0
- package/lib/cjs/index.js +1 -0
- package/lib/css/MultiFuncSelect/index.css +13 -1
- package/lib/css/MultipleSelect/index.css +172 -0
- package/lib/esm/Accordion/AccordionItem.tsx +18 -0
- package/lib/esm/Accordion/utils/performance.js +52 -0
- package/lib/esm/DropdownMenu/index.tsx +37 -2
- package/lib/esm/HorizontalScrollContent/index.tsx +17 -0
- package/lib/esm/HorizontalScrollContent/utils/performance.js +52 -0
- package/lib/esm/LiveSearch/index.tsx +23 -18
- package/lib/esm/MultiFuncSelect/index.scss +23 -1
- package/lib/esm/MultiFuncSelect/index.tsx +495 -433
- package/lib/esm/MultipleCheckboxes/index.tsx +11 -11
- package/lib/esm/MultipleSelect/index.scss +208 -0
- package/lib/esm/MultipleSelect/index.tsx +466 -0
- package/lib/esm/MultipleSelect/utils/convert.js +59 -0
- package/lib/esm/MultipleSelect/utils/extract.js +63 -0
- package/lib/esm/MultipleSelect/utils/tree.js +119 -0
- package/lib/esm/ScrollReveal/utils/performance.js +52 -0
- package/lib/esm/index.js +1 -0
- package/package.json +1 -1
package/MultiFuncSelect/index.js
CHANGED
|
@@ -876,7 +876,7 @@ var enableBodyScroll = function enableBodyScroll(targetElement) {
|
|
|
876
876
|
// EXTERNAL MODULE: ./src/utils/tree.js
|
|
877
877
|
var tree = __webpack_require__(602);
|
|
878
878
|
;// CONCATENATED MODULE: ./src/index.tsx
|
|
879
|
-
var _excluded = ["wrapperClassName", "controlClassName", "multiSelect", "disabled", "required", "value", "label", "name", "readOnly", "placeholder", "id", "options", "lockBodyScroll", "hierarchical", "indentation", "doubleIndent", "style", "depth", "controlArrow", "winWidth", "tabIndex", "fetchTrigger", "fetchTriggerForDefaultData", "fetchNoneInfo", "fetchUpdate", "fetchFuncAsync", "fetchFuncMethod", "fetchFuncMethodParams", "data", "extractValueByBrackets", "fetchCallback", "onFetch", "onLoad", "onSelect", "onChange", "onBlur", "onFocus"];
|
|
879
|
+
var _excluded = ["wrapperClassName", "controlClassName", "multiSelect", "disabled", "required", "value", "label", "name", "readOnly", "placeholder", "id", "options", "cleanTrigger", "lockBodyScroll", "hierarchical", "indentation", "doubleIndent", "style", "depth", "controlArrow", "winWidth", "tabIndex", "fetchTrigger", "fetchTriggerForDefaultData", "fetchNoneInfo", "fetchUpdate", "fetchFuncAsync", "fetchFuncMethod", "fetchFuncMethodParams", "data", "extractValueByBrackets", "fetchCallback", "onFetch", "onLoad", "onSelect", "onChange", "onBlur", "onFocus"];
|
|
880
880
|
function src_toConsumableArray(arr) { return src_arrayWithoutHoles(arr) || src_iterableToArray(arr) || src_unsupportedIterableToArray(arr) || src_nonIterableSpread(); }
|
|
881
881
|
function src_nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
882
882
|
function src_iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
@@ -922,6 +922,7 @@ var MultiFuncSelect = /*#__PURE__*/(0,external_root_React_commonjs2_react_common
|
|
|
922
922
|
placeholder = props.placeholder,
|
|
923
923
|
id = props.id,
|
|
924
924
|
options = props.options,
|
|
925
|
+
cleanTrigger = props.cleanTrigger,
|
|
925
926
|
lockBodyScroll = props.lockBodyScroll,
|
|
926
927
|
hierarchical = props.hierarchical,
|
|
927
928
|
indentation = props.indentation,
|
|
@@ -1005,10 +1006,9 @@ var MultiFuncSelect = /*#__PURE__*/(0,external_root_React_commonjs2_react_common
|
|
|
1005
1006
|
_useState16 = _slicedToArray(_useState15, 2),
|
|
1006
1007
|
incomingData = _useState16[0],
|
|
1007
1008
|
setIncomingData = _useState16[1];
|
|
1008
|
-
|
|
1009
|
-
// Multiple selection
|
|
1010
1009
|
var selectedSign = false;
|
|
1011
1010
|
var MULTI_SEL_VALID = multiSelect ? multiSelect.valid : false;
|
|
1011
|
+
var MULTI_SEL_LABEL = multiSelect ? multiSelect.selectAllLabel : 'Select all options';
|
|
1012
1012
|
var _useState17 = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)({
|
|
1013
1013
|
labels: [],
|
|
1014
1014
|
values: []
|
|
@@ -1022,6 +1022,10 @@ var MultiFuncSelect = /*#__PURE__*/(0,external_root_React_commonjs2_react_common
|
|
|
1022
1022
|
}).includes(val.toString());
|
|
1023
1023
|
};
|
|
1024
1024
|
|
|
1025
|
+
// clean trigger
|
|
1026
|
+
var CLEAN_TRIGGER_VALID = typeof cleanTrigger === 'undefined' ? false : cleanTrigger ? cleanTrigger.valid : false;
|
|
1027
|
+
var CLEAN_TRIGGER_LABEL = cleanTrigger ? cleanTrigger.cleanValueLabel : 'Clean';
|
|
1028
|
+
|
|
1025
1029
|
//performance
|
|
1026
1030
|
var handleChangeFetchSafe = utils_useDebounce(function (val) {
|
|
1027
1031
|
var _orginalData = [];
|
|
@@ -1603,6 +1607,8 @@ var MultiFuncSelect = /*#__PURE__*/(0,external_root_React_commonjs2_react_common
|
|
|
1603
1607
|
});
|
|
1604
1608
|
}
|
|
1605
1609
|
});
|
|
1610
|
+
|
|
1611
|
+
// select all button
|
|
1606
1612
|
var _btnSelectAll = listContentRef.current.querySelector('.mf-select-multi__control-option-item--select-all > span');
|
|
1607
1613
|
if (_btnSelectAll !== null && typeof _btnSelectAll.dataset.ev === 'undefined') {
|
|
1608
1614
|
_btnSelectAll.dataset.ev = 'true';
|
|
@@ -1610,6 +1616,15 @@ var MultiFuncSelect = /*#__PURE__*/(0,external_root_React_commonjs2_react_common
|
|
|
1610
1616
|
handleSelectAll(e);
|
|
1611
1617
|
});
|
|
1612
1618
|
}
|
|
1619
|
+
|
|
1620
|
+
// clean button
|
|
1621
|
+
var _btnClean = listContentRef.current.querySelector('.mf-select-multi__control-option-item--clean > span');
|
|
1622
|
+
if (_btnClean !== null && typeof _btnClean.dataset.ev === 'undefined') {
|
|
1623
|
+
_btnClean.dataset.ev = 'true';
|
|
1624
|
+
_btnClean.addEventListener('pointerdown', function (e) {
|
|
1625
|
+
handleCleanValue(e);
|
|
1626
|
+
});
|
|
1627
|
+
}
|
|
1613
1628
|
}
|
|
1614
1629
|
function popwinFilterItems(val) {
|
|
1615
1630
|
if (listContentRef.current === null) return;
|
|
@@ -1968,31 +1983,6 @@ var MultiFuncSelect = /*#__PURE__*/(0,external_root_React_commonjs2_react_common
|
|
|
1968
1983
|
}
|
|
1969
1984
|
function handleSelectAll(event) {
|
|
1970
1985
|
event.preventDefault();
|
|
1971
|
-
var onChangeSelectAll = function onChangeSelectAll(labelsArr, valuesArr) {
|
|
1972
|
-
if (typeof onChange === 'function') {
|
|
1973
|
-
onChange === null || onChange === void 0 ? void 0 : onChange(selectInputRef.current, valueInputRef.current, {
|
|
1974
|
-
labels: labelsArr.map(function (v) {
|
|
1975
|
-
return v.toString();
|
|
1976
|
-
}),
|
|
1977
|
-
values: valuesArr.map(function (v) {
|
|
1978
|
-
return v.toString();
|
|
1979
|
-
}),
|
|
1980
|
-
labelsOfString: VALUE_BY_BRACKETS ? (0,convert.convertArrToValByBrackets)(labelsArr.map(function (v) {
|
|
1981
|
-
return v.toString();
|
|
1982
|
-
})) : labelsArr.map(function (v) {
|
|
1983
|
-
return v.toString();
|
|
1984
|
-
}).join(','),
|
|
1985
|
-
valuesOfString: VALUE_BY_BRACKETS ? (0,convert.convertArrToValByBrackets)(valuesArr.map(function (v) {
|
|
1986
|
-
return v.toString();
|
|
1987
|
-
})) : valuesArr.map(function (v) {
|
|
1988
|
-
return v.toString();
|
|
1989
|
-
}).join(',')
|
|
1990
|
-
});
|
|
1991
|
-
|
|
1992
|
-
//
|
|
1993
|
-
selectInputRef.current.blur();
|
|
1994
|
-
}
|
|
1995
|
-
};
|
|
1996
1986
|
var updateOptionCheckboxes = function updateOptionCheckboxes(type) {
|
|
1997
1987
|
var _labels = [];
|
|
1998
1988
|
var _values = [];
|
|
@@ -2041,6 +2031,23 @@ var MultiFuncSelect = /*#__PURE__*/(0,external_root_React_commonjs2_react_common
|
|
|
2041
2031
|
}
|
|
2042
2032
|
selectedSign = !selectedSign;
|
|
2043
2033
|
}
|
|
2034
|
+
function handleCleanValue(event) {
|
|
2035
|
+
event.preventDefault();
|
|
2036
|
+
|
|
2037
|
+
// It is valid when a single selection
|
|
2038
|
+
var emptyValue = {
|
|
2039
|
+
label: '',
|
|
2040
|
+
value: '',
|
|
2041
|
+
queryString: ''
|
|
2042
|
+
};
|
|
2043
|
+
handleSelect(null, JSON.stringify(emptyValue), [], []);
|
|
2044
|
+
if (typeof onChange === 'function') {
|
|
2045
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(selectInputRef.current, valueInputRef.current, emptyValue);
|
|
2046
|
+
}
|
|
2047
|
+
|
|
2048
|
+
// update temporary value
|
|
2049
|
+
setControlTempValue('');
|
|
2050
|
+
}
|
|
2044
2051
|
function handleMultiControlItemRemove(event) {
|
|
2045
2052
|
event.preventDefault();
|
|
2046
2053
|
var valueToRemove = String(event.currentTarget.dataset.item);
|
|
@@ -2582,9 +2589,19 @@ var MultiFuncSelect = /*#__PURE__*/(0,external_root_React_commonjs2_react_common
|
|
|
2582
2589
|
tabIndex: -1,
|
|
2583
2590
|
className: "btn btn-secondary",
|
|
2584
2591
|
dangerouslySetInnerHTML: {
|
|
2585
|
-
__html: "".concat(
|
|
2592
|
+
__html: "".concat(MULTI_SEL_LABEL)
|
|
2593
|
+
}
|
|
2594
|
+
}))) : null, !MULTI_SEL_VALID ? /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement((external_root_React_commonjs2_react_commonjs_react_amd_react_default()).Fragment, null, CLEAN_TRIGGER_VALID ? /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement((external_root_React_commonjs2_react_commonjs_react_amd_react_default()).Fragment, null, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("span", {
|
|
2595
|
+
tabIndex: -1,
|
|
2596
|
+
className: "list-group-item list-group-item-action border-start-0 border-end-0 text-secondary bg-light mf-select-multi__control-option-item--clean",
|
|
2597
|
+
role: "tab"
|
|
2598
|
+
}, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("span", {
|
|
2599
|
+
tabIndex: -1,
|
|
2600
|
+
className: "btn btn-secondary",
|
|
2601
|
+
dangerouslySetInnerHTML: {
|
|
2602
|
+
__html: "".concat(CLEAN_TRIGGER_LABEL)
|
|
2586
2603
|
}
|
|
2587
|
-
}))) : null, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("button", {
|
|
2604
|
+
}))) : null) : null, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("button", {
|
|
2588
2605
|
tabIndex: -1,
|
|
2589
2606
|
type: "button",
|
|
2590
2607
|
className: "list-group-item list-group-item-action no-match border-0 mf-select-multi__control-option-item--nomatch hide",
|
|
@@ -702,12 +702,12 @@ var MultipleCheckboxes = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.forw
|
|
|
702
702
|
var optionsRes = options ? isJSON(options) ? JSON.parse(options) : options : [];
|
|
703
703
|
var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]),
|
|
704
704
|
_useState2 = _slicedToArray(_useState, 2),
|
|
705
|
-
|
|
706
|
-
|
|
705
|
+
valData = _useState2[0],
|
|
706
|
+
setValData = _useState2[1];
|
|
707
707
|
var _useState3 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]),
|
|
708
708
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
709
|
-
|
|
710
|
-
|
|
709
|
+
valSelected = _useState4[0],
|
|
710
|
+
setValSelected = _useState4[1];
|
|
711
711
|
var _inline = typeof inline === 'undefined' ? true : inline;
|
|
712
712
|
|
|
713
713
|
// Determine whether it is in JSON format
|
|
@@ -733,15 +733,15 @@ var MultipleCheckboxes = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.forw
|
|
|
733
733
|
function initDefaultValue(defaultValue) {
|
|
734
734
|
// change the value to trigger component rendering
|
|
735
735
|
if (typeof defaultValue === 'undefined' || defaultValue === '') {
|
|
736
|
-
|
|
736
|
+
setValSelected([]);
|
|
737
737
|
} else {
|
|
738
738
|
var _val = VALUE_BY_BRACKETS ? (0,_utils_extract__WEBPACK_IMPORTED_MODULE_2__.extractContentsOfBrackets)(defaultValue) : defaultValue.trim().replace(/^\,|\,$/g, '').split(',');
|
|
739
739
|
if (Array.isArray(_val)) {
|
|
740
|
-
|
|
740
|
+
setValSelected(_val.filter(function (v) {
|
|
741
741
|
return v !== '';
|
|
742
742
|
}));
|
|
743
743
|
} else {
|
|
744
|
-
|
|
744
|
+
setValSelected([]);
|
|
745
745
|
}
|
|
746
746
|
}
|
|
747
747
|
}
|
|
@@ -752,7 +752,7 @@ var MultipleCheckboxes = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.forw
|
|
|
752
752
|
|
|
753
753
|
// Initialize options
|
|
754
754
|
//--------------
|
|
755
|
-
|
|
755
|
+
setValData(optionsRes);
|
|
756
756
|
}, [value, options]);
|
|
757
757
|
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
|
|
758
758
|
className: wrapperClassName || wrapperClassName === '' ? "multiple-checkboxes__wrapper ".concat(wrapperClassName) : "multiple-checkboxes__wrapper mb-3 position-relative",
|
|
@@ -766,7 +766,7 @@ var MultipleCheckboxes = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.forw
|
|
|
766
766
|
})) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
|
|
767
767
|
className: "multiple-checkboxes__control-wrapper",
|
|
768
768
|
style: style
|
|
769
|
-
},
|
|
769
|
+
}, valData ? valData.map(function (item, i) {
|
|
770
770
|
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
|
|
771
771
|
key: 'checkbox' + i,
|
|
772
772
|
className: "multiple-checkboxes__control ".concat(_inline ? 'd-inline-block' : '', " pe-3"),
|
|
@@ -780,18 +780,18 @@ var MultipleCheckboxes = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.forw
|
|
|
780
780
|
value: item.value,
|
|
781
781
|
disabled: disabled || null,
|
|
782
782
|
onChange: function onChange(e, val) {
|
|
783
|
-
|
|
783
|
+
setValSelected(function (prevState) {
|
|
784
784
|
var newData = JSON.parse(JSON.stringify(prevState));
|
|
785
785
|
var index = newData.findIndex(function (item) {
|
|
786
786
|
return item == e.target.value;
|
|
787
787
|
});
|
|
788
788
|
if (index !== -1) newData.splice(index, 1);
|
|
789
789
|
var _res = val ? Array.from(new Set([e.target.value].concat(_toConsumableArray(newData)))) : newData;
|
|
790
|
-
_onChange === null || _onChange === void 0 ? void 0 : _onChange(e, _res, VALUE_BY_BRACKETS ? (0,_utils_convert__WEBPACK_IMPORTED_MODULE_3__.convertArrToValByBrackets)(_res) : _res.join(','));
|
|
790
|
+
_onChange === null || _onChange === void 0 ? void 0 : _onChange(e.target, _res, VALUE_BY_BRACKETS ? (0,_utils_convert__WEBPACK_IMPORTED_MODULE_3__.convertArrToValByBrackets)(_res) : _res.join(','));
|
|
791
791
|
return _res;
|
|
792
792
|
});
|
|
793
793
|
},
|
|
794
|
-
checked:
|
|
794
|
+
checked: valSelected.includes(item.value)
|
|
795
795
|
}));
|
|
796
796
|
}) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("input", _extends({
|
|
797
797
|
ref: inputRef,
|
|
@@ -799,7 +799,7 @@ var MultipleCheckboxes = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.forw
|
|
|
799
799
|
type: "hidden",
|
|
800
800
|
id: idRes,
|
|
801
801
|
name: name,
|
|
802
|
-
value: VALUE_BY_BRACKETS ? (0,_utils_convert__WEBPACK_IMPORTED_MODULE_3__.convertArrToValByBrackets)(
|
|
802
|
+
value: VALUE_BY_BRACKETS ? (0,_utils_convert__WEBPACK_IMPORTED_MODULE_3__.convertArrToValByBrackets)(valSelected) : valSelected.join(','),
|
|
803
803
|
required: required || null
|
|
804
804
|
}, attributes))), required ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("span", {
|
|
805
805
|
className: "position-absolute end-0 top-0 my-2 mx-2"
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
/* ======================================================
|
|
2
|
+
<!-- Multiple Select -->
|
|
3
|
+
/* ====================================================== */
|
|
4
|
+
.m-select__wrapper {
|
|
5
|
+
--m-select-scrollbar-color: rgba(0, 0, 0, 0.2);
|
|
6
|
+
--m-select-scrollbar-track: rgba(0, 0, 0, 0);
|
|
7
|
+
--m-select-scrollbar-w: 3px;
|
|
8
|
+
min-width: 350px;
|
|
9
|
+
min-height: 315px;
|
|
10
|
+
width: 100%;
|
|
11
|
+
height: 100%;
|
|
12
|
+
border: solid 1px #dee2e6;
|
|
13
|
+
border-radius: 0.35rem;
|
|
14
|
+
position: relative;
|
|
15
|
+
background: #fff;
|
|
16
|
+
/*-------- List --------*/
|
|
17
|
+
}
|
|
18
|
+
.m-select__wrapper .m-select-diving-line {
|
|
19
|
+
width: 1px;
|
|
20
|
+
background-color: #dee2e6;
|
|
21
|
+
left: 50%;
|
|
22
|
+
top: 0;
|
|
23
|
+
position: absolute;
|
|
24
|
+
height: 100%;
|
|
25
|
+
z-index: 1;
|
|
26
|
+
}
|
|
27
|
+
.m-select__wrapper .m-select-inner {
|
|
28
|
+
display: flex;
|
|
29
|
+
font-size: 0.8em;
|
|
30
|
+
height: 100%;
|
|
31
|
+
}
|
|
32
|
+
.m-select__wrapper .m-select-inner ul,
|
|
33
|
+
.m-select__wrapper .m-select-inner li {
|
|
34
|
+
margin: 0;
|
|
35
|
+
padding: 0;
|
|
36
|
+
list-style: none;
|
|
37
|
+
}
|
|
38
|
+
.m-select__wrapper .m-select-inner div.m-select__selected__container,
|
|
39
|
+
.m-select__wrapper .m-select-inner div.m-select__available__container {
|
|
40
|
+
position: relative;
|
|
41
|
+
flex: 1;
|
|
42
|
+
}
|
|
43
|
+
.m-select__wrapper .m-select-inner ul.m-select__selected,
|
|
44
|
+
.m-select__wrapper .m-select-inner ul.m-select__available {
|
|
45
|
+
position: relative;
|
|
46
|
+
overflow: auto;
|
|
47
|
+
overflow-x: hidden;
|
|
48
|
+
background: #fff;
|
|
49
|
+
border: none;
|
|
50
|
+
position: relative;
|
|
51
|
+
width: 100%;
|
|
52
|
+
}
|
|
53
|
+
.m-select__wrapper .m-select-inner ul {
|
|
54
|
+
user-select: none;
|
|
55
|
+
}
|
|
56
|
+
.m-select__wrapper .m-select-inner li {
|
|
57
|
+
cursor: default;
|
|
58
|
+
position: relative;
|
|
59
|
+
font-size: 0.75rem;
|
|
60
|
+
display: flex;
|
|
61
|
+
justify-content: space-between;
|
|
62
|
+
background: #f6f6f6;
|
|
63
|
+
border-bottom: 1px solid rgb(255, 255, 255);
|
|
64
|
+
}
|
|
65
|
+
.m-select__wrapper .m-select-inner li.disabled {
|
|
66
|
+
pointer-events: none;
|
|
67
|
+
opacity: 0.4;
|
|
68
|
+
}
|
|
69
|
+
.m-select__wrapper .m-select-inner li.hide {
|
|
70
|
+
display: none;
|
|
71
|
+
}
|
|
72
|
+
.m-select__wrapper .m-select-inner li:hover {
|
|
73
|
+
opacity: 0.8;
|
|
74
|
+
}
|
|
75
|
+
.m-select__wrapper .m-select-inner li.selected {
|
|
76
|
+
background: #0b5ed7;
|
|
77
|
+
color: #fff;
|
|
78
|
+
}
|
|
79
|
+
.m-select__wrapper .m-select-inner li.selected > i svg path {
|
|
80
|
+
fill: #fff;
|
|
81
|
+
}
|
|
82
|
+
.m-select__wrapper .m-select-inner li:last-child {
|
|
83
|
+
border-bottom: none;
|
|
84
|
+
}
|
|
85
|
+
.m-select__wrapper .m-select-inner li > span {
|
|
86
|
+
padding: 0.35rem 0.75rem;
|
|
87
|
+
display: inline-block;
|
|
88
|
+
max-width: 100%;
|
|
89
|
+
overflow: hidden;
|
|
90
|
+
text-overflow: ellipsis;
|
|
91
|
+
word-break: break-all;
|
|
92
|
+
}
|
|
93
|
+
.m-select__wrapper .m-select-inner li > i {
|
|
94
|
+
display: inline-block;
|
|
95
|
+
padding: 0.35rem 0.75rem;
|
|
96
|
+
cursor: pointer;
|
|
97
|
+
}
|
|
98
|
+
.m-select__wrapper .m-select-inner li a {
|
|
99
|
+
color: #999;
|
|
100
|
+
text-decoration: none;
|
|
101
|
+
padding: 0;
|
|
102
|
+
display: block;
|
|
103
|
+
cursor: pointer;
|
|
104
|
+
}
|
|
105
|
+
.m-select__wrapper .m-select-inner li a.m-select__item-action {
|
|
106
|
+
position: absolute;
|
|
107
|
+
right: 0.5rem;
|
|
108
|
+
top: 0.5rem;
|
|
109
|
+
}
|
|
110
|
+
.m-select__wrapper .m-select-inner div.m-select__selected__container .m-select__header {
|
|
111
|
+
border-radius: 0 0.35rem 0 0;
|
|
112
|
+
}
|
|
113
|
+
.m-select__wrapper .m-select-inner div.m-select__available__container .m-select__header {
|
|
114
|
+
border-radius: 0.35rem 0 0 0;
|
|
115
|
+
}
|
|
116
|
+
.m-select__wrapper .m-select-inner .m-select__header {
|
|
117
|
+
border: none;
|
|
118
|
+
font-size: 0.75rem;
|
|
119
|
+
margin-bottom: 1px;
|
|
120
|
+
background: #dee2e6;
|
|
121
|
+
display: flex;
|
|
122
|
+
justify-content: space-between;
|
|
123
|
+
align-items: center;
|
|
124
|
+
height: 1.625rem;
|
|
125
|
+
}
|
|
126
|
+
.m-select__wrapper .m-select-inner .m-select__btn--add-all {
|
|
127
|
+
padding: 0.2rem;
|
|
128
|
+
}
|
|
129
|
+
.m-select__wrapper .m-select-inner .m-select__btn--remove-all {
|
|
130
|
+
padding: 0.2rem;
|
|
131
|
+
}
|
|
132
|
+
.m-select__wrapper .m-select-inner .m-select__count {
|
|
133
|
+
padding: 0.2rem;
|
|
134
|
+
}
|
|
135
|
+
.m-select__wrapper .m-select-inner .m-select__title {
|
|
136
|
+
padding: 0.2rem;
|
|
137
|
+
font-weight: bold;
|
|
138
|
+
}
|
|
139
|
+
.m-select__wrapper .m-select-inner input.m-select__search {
|
|
140
|
+
height: 14px;
|
|
141
|
+
padding: 0.1rem 0.5rem;
|
|
142
|
+
opacity: 0.5;
|
|
143
|
+
margin: 4px;
|
|
144
|
+
width: 100px;
|
|
145
|
+
border-radius: 25px;
|
|
146
|
+
border: none;
|
|
147
|
+
outline: none;
|
|
148
|
+
box-shadow: none;
|
|
149
|
+
}
|
|
150
|
+
.m-select__wrapper .m-select__options-contentlist {
|
|
151
|
+
position: relative;
|
|
152
|
+
width: 100%;
|
|
153
|
+
overflow: hidden;
|
|
154
|
+
overflow-y: auto;
|
|
155
|
+
max-height: calc(315px - 1.75rem);
|
|
156
|
+
}
|
|
157
|
+
.m-select__wrapper .m-select__options-contentlist::-webkit-scrollbar {
|
|
158
|
+
width: var(--m-select-scrollbar-w);
|
|
159
|
+
}
|
|
160
|
+
.m-select__wrapper .m-select__options-contentlist::-webkit-scrollbar-thumb {
|
|
161
|
+
background: var(--m-select-scrollbar-color);
|
|
162
|
+
}
|
|
163
|
+
.m-select__wrapper .m-select__options-contentlist::-webkit-scrollbar-track {
|
|
164
|
+
background: var(--m-select-scrollbar-track);
|
|
165
|
+
}
|
|
166
|
+
.m-select__wrapper .m-select__options-contentlist.dragging {
|
|
167
|
+
cursor: grab;
|
|
168
|
+
}
|
|
169
|
+
.m-select__wrapper .m-select__options-contentlist--hide {
|
|
170
|
+
overflow: hidden;
|
|
171
|
+
height: auto;
|
|
172
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface OptionConfig {
|
|
3
|
+
[propName: string]: string | number | boolean;
|
|
4
|
+
}
|
|
5
|
+
declare type MultipleSelectProps = {
|
|
6
|
+
wrapperClassName?: string;
|
|
7
|
+
availableHeaderTitle?: string;
|
|
8
|
+
selectedHeaderTitle?: string;
|
|
9
|
+
selectedHeaderNote?: string;
|
|
10
|
+
removeAllBtnLabel?: string | React.ReactNode;
|
|
11
|
+
addAllBtnLabel?: string | React.ReactNode;
|
|
12
|
+
iconAdd?: React.ReactNode | string;
|
|
13
|
+
iconRemove?: React.ReactNode | string;
|
|
14
|
+
hierarchical?: boolean;
|
|
15
|
+
indentation?: string;
|
|
16
|
+
doubleIndent?: boolean;
|
|
17
|
+
value?: string;
|
|
18
|
+
label?: React.ReactNode | string;
|
|
19
|
+
name?: string;
|
|
20
|
+
options?: OptionConfig[] | string;
|
|
21
|
+
disabled?: any;
|
|
22
|
+
required?: any;
|
|
23
|
+
/** Whether to use square brackets to save result and initialize default value */
|
|
24
|
+
extractValueByBrackets?: boolean;
|
|
25
|
+
/** Incoming data, you can set the third parameter of `onFetch` */
|
|
26
|
+
data?: any;
|
|
27
|
+
/** -- */
|
|
28
|
+
id?: string;
|
|
29
|
+
style?: React.CSSProperties;
|
|
30
|
+
[key: `data-${string}`]: string | undefined;
|
|
31
|
+
fetchFuncAsync?: any;
|
|
32
|
+
fetchFuncMethod?: string;
|
|
33
|
+
fetchFuncMethodParams?: any[];
|
|
34
|
+
fetchCallback?: (data: any) => void;
|
|
35
|
+
onFetch?: (data: any) => void;
|
|
36
|
+
onChange?: (e: any, data: any, dataStr: any) => void;
|
|
37
|
+
};
|
|
38
|
+
declare const MultipleSelect: React.ForwardRefExoticComponent<MultipleSelectProps & React.RefAttributes<unknown>>;
|
|
39
|
+
export default MultipleSelect;
|