@cainiaofe/cn-ui-m
Version:
162 lines (161 loc) • 4.97 kB
JavaScript
import { __assign } from "tslib";
import React from 'react';
import { findInArray, getDataSourceFromChildren, isUndef, isValidArray, } from "../../utils/func";
import SelectValue from './section/select-value';
export function removeItemFromArray(arr, val) {
if (arr === void 0) { arr = []; }
if (val === void 0) { val = ''; }
return arr.filter(function (v) { return v.value !== val; });
}
export function getInitValues(props) {
var defaultValue = props.defaultValue, value = props.value;
var initValues;
if ('value' in props) {
initValues = value;
}
else if (!isUndef(defaultValue)) {
initValues = defaultValue;
}
if (!Array.isArray(initValues)) {
if (!isUndef(initValues)) {
initValues = [initValues];
}
else {
initValues = [];
}
}
return initValues;
}
export function findValueItem(arr, value) {
for (var i = 0; i < arr.length; i++) {
if (arr[i].value === value) {
return arr[i];
}
if (arr[i].children) {
var valueItem = findValueItem(arr[i].children, value);
if (valueItem) {
return valueItem;
}
}
}
return null;
}
export function getPreviewValue(props) {
var useDetailValue = props.useDetailValue, children = props.children, dataSource = props.dataSource, mode = props.mode;
var initValues = getInitValues(props);
var ds = dataSource || [];
var arr = [];
if (!dataSource && React.Children.count(children) > 0) {
ds = getDataSourceFromChildren(children);
}
if (useDetailValue && isValidArray(initValues)) {
arr = initValues;
}
else if (isValidArray(initValues)) {
arr = initValues.map(function (v) {
var rs = findValueItem(ds, v);
return (rs || {
label: v,
value: v,
});
});
}
// 如果是单选项, 返回单个值
if (mode === 'single') {
return isValidArray(arr) ? arr[0] : '';
}
return arr;
}
/**
* get scrollview height
*/
export function getScrollHeight() {
return "".concat((screen.availHeight - 200) / (screen.width / 750), "rpx");
}
/**
* build-in renderSelection
*/
export function innerRenderSelection(items, values) {
var labels = !Array.isArray(items) && items.label
? [items.label]
: items.map(function (item) { return item.label; });
if (labels.length === 0) {
return null;
}
return React.createElement(SelectValue, __assign(__assign({}, values), { items: labels }));
}
export function isSelected(curItems, value) {
var rs = findInArray(curItems, function (item) { return item.value === value; });
return !!rs;
}
export function isEqualItems(arr1, arr2, strictMode) {
if (arr1 === void 0) { arr1 = []; }
if (arr2 === void 0) { arr2 = []; }
if (strictMode === void 0) { strictMode = false; }
if (!Array.isArray(arr1) ||
!Array.isArray(arr2) ||
arr1.length !== arr2.length) {
return false;
}
var filterFn = function (item) { return item.value; };
if (strictMode) {
filterFn = function (item) { return item.label + item.value; };
}
return (arr1.map(filterFn).sort().toString() ===
arr2.map(filterFn).sort().toString());
}
/**
* 获取用于展示的事件返回值
* @param selectedItems
* @param useDetailValue
* @param isSingle
*/
export function getValidEvtValues(_a) {
var selectedItems = _a.selectedItems, useDetailValue = _a.useDetailValue, isSingle = _a.isSingle;
var value = isSingle ? null : [];
var items = isSingle ? {} : [];
if (isValidArray(selectedItems)) {
value = selectedItems[0].value;
if (useDetailValue) {
value = isSingle ? selectedItems[0] : selectedItems;
}
else if (!isSingle) {
value = selectedItems.map(function (item) { return item.value; });
}
items = isSingle ? selectedItems[0] : selectedItems;
}
return {
value: value,
items: items,
};
}
/**
* default search filter
* @param searchText
* @param item
*/
export function defaultLocalFilter(searchText, item) {
try {
return new RegExp(searchText).test(item.label);
}
catch (e) {
return item.label.includes(searchText);
}
}
/**
* 与pc保持一致,搜索的key不区分大小写,搜索项不区分label和value
*/
export function defaultLocalFilterLowerCase(searchText, item) {
try {
var searchTextLowerCase = searchText.toLowerCase();
var newItem = {
label: item.label.toLowerCase(),
value: item.value.toLowerCase(),
};
return (new RegExp(searchTextLowerCase).test(newItem.label) ||
new RegExp(searchTextLowerCase).test(newItem.value));
}
catch (e) {
return item.label.includes(searchText);
}
}