UNPKG

4.68 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
5Object.defineProperty(exports, "__esModule", {
6 value: true
7});
8exports.getDisplayLabel = exports.getFilterdOptions = void 0;
9
10require("core-js/modules/es7.array.includes");
11
12require("core-js/modules/es6.string.includes");
13
14require("core-js/modules/es6.array.find");
15
16require("core-js/modules/es6.regexp.split");
17
18require("core-js/modules/es6.regexp.replace");
19
20var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
21
22require("core-js/modules/es6.regexp.match");
23
24require("core-js/modules/es7.symbol.async-iterator");
25
26require("core-js/modules/es6.symbol");
27
28require("core-js/modules/web.dom.iterable");
29
30require("core-js/modules/es6.regexp.constructor");
31
32// 通过搜索关键筛选复合体条件的选项
33var getFilterdOptions = function getFilterdOptions(selectType, options, word, caseSensitive) {
34 if (selectType == 'group') {
35 var _ret = function () {
36 var reg = caseSensitive ? word : new RegExp(word, 'i');
37 var tmpResults = [];
38 var _iteratorNormalCompletion = true;
39 var _didIteratorError = false;
40 var _iteratorError = undefined;
41
42 try {
43 for (var _iterator = options[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
44 var item = _step.value;
45 var arr = item.children.filter(function (child) {
46 return child.label.match(reg);
47 });
48
49 if (arr.length) {
50 tmpResults.push({
51 label: item.label,
52 children: arr
53 });
54 }
55 }
56 } catch (err) {
57 _didIteratorError = true;
58 _iteratorError = err;
59 } finally {
60 try {
61 if (!_iteratorNormalCompletion && _iterator.return != null) {
62 _iterator.return();
63 }
64 } finally {
65 if (_didIteratorError) {
66 throw _iteratorError;
67 }
68 }
69 }
70
71 return {
72 v: tmpResults
73 };
74 }();
75
76 if ((0, _typeof2.default)(_ret) === "object") return _ret.v;
77 } //需要对特殊字符进行处理,不然正则匹配不正确
78
79
80 var rexp = /\*|\?|\$|\^|\(|\)|\+|\\|\[|\]/gi;
81
82 if (word && rexp.test(word)) {
83 word = word.replace(rexp, function (item) {
84 return '\\' + item;
85 });
86 }
87
88 var reg = caseSensitive ? word : new RegExp(word, 'i');
89 return options.filter(function (item) {
90 return item.label.match(reg);
91 });
92}; // 根据选中的值计算需要显示的label 新增displayLabel解决禁用没有数据源时,无法指定选中值的问题
93
94
95exports.getFilterdOptions = getFilterdOptions;
96
97var getDisplayLabel = function getDisplayLabel(options, selectType, selectedValue, displayLabel) {
98 var splitKey = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : ',';
99
100 if (displayLabel) {
101 if (selectType == 'multiple') {
102 var values = displayLabel.split(splitKey) || [];
103 return values.map(function (item) {
104 return {
105 label: item
106 };
107 });
108 }
109
110 return displayLabel;
111 }
112
113 if (selectedValue || selectedValue === 0) {
114 if (selectType == 'group') {
115 var child;
116 var _iteratorNormalCompletion2 = true;
117 var _didIteratorError2 = false;
118 var _iteratorError2 = undefined;
119
120 try {
121 for (var _iterator2 = options[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
122 var item = _step2.value;
123 child = item.children.find(function (child) {
124 return child.value == selectedValue;
125 });
126 if (child) break;
127 }
128 } catch (err) {
129 _didIteratorError2 = true;
130 _iteratorError2 = err;
131 } finally {
132 try {
133 if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
134 _iterator2.return();
135 }
136 } finally {
137 if (_didIteratorError2) {
138 throw _iteratorError2;
139 }
140 }
141 }
142
143 return child ? child.label : '';
144 } else {
145 var _values = options.filter(function (item) {
146 if (selectType == 'multiple') {
147 return selectedValue && item && selectedValue.split(splitKey).includes("".concat(item.value));
148 } else {
149 return item.value === selectedValue;
150 }
151 });
152
153 if (selectType == 'multiple') {
154 return _values;
155 }
156
157 return _values.map(function (item) {
158 return item.label;
159 }).join('');
160 }
161 }
162
163 return '';
164};
165
166exports.getDisplayLabel = getDisplayLabel;
\No newline at end of file