@trionesdev/antd-taro-react 0.0.2-beta.15 → 0.0.2-beta.17
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/LICENSE +21 -21
- package/dist/ActionSheet/style.scss +52 -52
- package/dist/Button/button.d.ts +2 -2
- package/dist/Button/button.js +2 -3
- package/dist/Button/style.scss +246 -235
- package/dist/Calendar/style.scss +88 -88
- package/dist/Calendar/touchable-calendar-grid.js +9 -9
- package/dist/CalendarDatetimePicker/style.scss +62 -62
- package/dist/CalendarDatetimePickerCell/CalendarDatetimePickerCell.d.ts +2 -2
- package/dist/CalendarDatetimePickerCell/CalendarDatetimePickerCell.js +3 -3
- package/dist/CalendarPicker/style.scss +32 -32
- package/dist/CalendarPickerCell/CalendarPickerCell.d.ts +2 -2
- package/dist/CalendarPickerCell/CalendarPickerCell.js +3 -3
- package/dist/CalendarPickerCell/CalendarRangePickerCell.d.ts +2 -2
- package/dist/CalendarPickerCell/CalendarRangePickerCell.js +3 -3
- package/dist/CascaderPicker/style.scss +45 -45
- package/dist/CascaderPickerCell/CascaderPickerCell.d.ts +2 -2
- package/dist/CascaderPickerCell/CascaderPickerCell.js +3 -3
- package/dist/DatePicker/style.scss +41 -41
- package/dist/FetchPicker/FetchPicker.d.ts +113 -0
- package/dist/FetchPicker/FetchPicker.js +322 -0
- package/dist/FetchPicker/index.d.ts +4 -0
- package/dist/FetchPicker/index.js +3 -0
- package/dist/FetchPicker/styles.scss +118 -0
- package/dist/FloatButton/style.scss +126 -126
- package/dist/Form/FormItem/{form-item-input.d.ts → form-item-content.d.ts} +3 -1
- package/dist/Form/FormItem/{form-item-input.js → form-item-content.js} +2 -2
- package/dist/Form/FormItem/form-item-label.js +2 -8
- package/dist/Form/FormItem/form-item.d.ts +3 -2
- package/dist/Form/FormItem/form-item.js +23 -19
- package/dist/Form/index.d.ts +2 -2
- package/dist/Form/style.scss +100 -78
- package/dist/FormCell/index.d.ts +3 -0
- package/dist/FormCell/index.js +2 -0
- package/dist/ImagesPreview/style.scss +34 -34
- package/dist/ImagesWall/style.scss +70 -70
- package/dist/Input/index.scss +282 -267
- package/dist/Input/input-affix-wrapper.js +1 -1
- package/dist/Input/taro-input.js +16 -3
- package/dist/Input/types.d.ts +3 -3
- package/dist/Loading/index.d.ts +4 -0
- package/dist/Loading/index.js +3 -0
- package/dist/Overlay/style.scss +20 -20
- package/dist/Picker/Picker.d.ts +8 -0
- package/dist/Picker/Picker.js +6 -7
- package/dist/Picker/style.scss +41 -41
- package/dist/PickerView/style.scss +13 -13
- package/dist/PickerView/types.d.ts +2 -2
- package/dist/Popup/style.scss +126 -124
- package/dist/SideBar/side-bar.js +6 -6
- package/dist/SideBar/style.scss +85 -85
- package/dist/Stepper/index.d.ts +3 -0
- package/dist/Stepper/index.js +2 -0
- package/dist/Toast/style.scss +63 -63
- package/dist/VerificationCodeInput/style.scss +20 -20
- package/dist/index.d.ts +10 -3
- package/dist/index.js +4 -1
- package/dist/style/variable.scss +34 -20
- package/package.json +20 -24
- package/readme.md +23 -23
- package/dist/SpinLoading/index.d.ts +0 -3
- package/dist/SpinLoading/index.js +0 -2
|
@@ -1,41 +1,41 @@
|
|
|
1
|
-
@use "../style/variable" as variable;
|
|
2
|
-
|
|
3
|
-
$datePickerCls: 'triones-antm-date-picker';
|
|
4
|
-
|
|
5
|
-
.#{$datePickerCls} {
|
|
6
|
-
border-top-left-radius: variable.$trionesBorderRadius;
|
|
7
|
-
border-top-right-radius: variable.$trionesBorderRadius;
|
|
8
|
-
|
|
9
|
-
&-header {
|
|
10
|
-
display: flex;
|
|
11
|
-
justify-content: space-between;
|
|
12
|
-
align-items: center;
|
|
13
|
-
padding: 4Px;
|
|
14
|
-
border-bottom: 1Px solid variable.$trionesBorderColor;
|
|
15
|
-
&-title {
|
|
16
|
-
font-size: 16Px;
|
|
17
|
-
padding: 8Px;
|
|
18
|
-
text-align: center;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
&-button {
|
|
22
|
-
padding: 8Px 12Px;
|
|
23
|
-
cursor: pointer;
|
|
24
|
-
&-cancel{
|
|
25
|
-
color: variable.$trionesColorTextSecondary;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
&-body {
|
|
31
|
-
.time-picker {
|
|
32
|
-
.time-item {
|
|
33
|
-
flex-shrink: 0;
|
|
34
|
-
display: flex;
|
|
35
|
-
align-items: center;
|
|
36
|
-
justify-content: center;
|
|
37
|
-
height: 32Px;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
}
|
|
1
|
+
@use "../style/variable" as variable;
|
|
2
|
+
|
|
3
|
+
$datePickerCls: 'triones-antm-date-picker';
|
|
4
|
+
|
|
5
|
+
.#{$datePickerCls} {
|
|
6
|
+
border-top-left-radius: variable.$trionesBorderRadius;
|
|
7
|
+
border-top-right-radius: variable.$trionesBorderRadius;
|
|
8
|
+
|
|
9
|
+
&-header {
|
|
10
|
+
display: flex;
|
|
11
|
+
justify-content: space-between;
|
|
12
|
+
align-items: center;
|
|
13
|
+
padding: 4Px;
|
|
14
|
+
border-bottom: 1Px solid variable.$trionesBorderColor;
|
|
15
|
+
&-title {
|
|
16
|
+
font-size: 16Px;
|
|
17
|
+
padding: 8Px;
|
|
18
|
+
text-align: center;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
&-button {
|
|
22
|
+
padding: 8Px 12Px;
|
|
23
|
+
cursor: pointer;
|
|
24
|
+
&-cancel{
|
|
25
|
+
color: variable.$trionesColorTextSecondary;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
&-body {
|
|
31
|
+
.time-picker {
|
|
32
|
+
.time-item {
|
|
33
|
+
flex-shrink: 0;
|
|
34
|
+
display: flex;
|
|
35
|
+
align-items: center;
|
|
36
|
+
justify-content: center;
|
|
37
|
+
height: 32Px;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
type LabeledValue = {
|
|
3
|
+
label?: string;
|
|
4
|
+
value?: string | number;
|
|
5
|
+
};
|
|
6
|
+
type PickerValue = string | string[] | number | number[] | LabeledValue | LabeledValue[];
|
|
7
|
+
export type FetchPickerProps = {
|
|
8
|
+
open?: boolean;
|
|
9
|
+
/**
|
|
10
|
+
* @description 是否全屏
|
|
11
|
+
* @default false
|
|
12
|
+
*/
|
|
13
|
+
fullScreen?: boolean;
|
|
14
|
+
/**
|
|
15
|
+
* @description 搜索框
|
|
16
|
+
* @default false
|
|
17
|
+
*/
|
|
18
|
+
showSearch?: boolean;
|
|
19
|
+
/**
|
|
20
|
+
* @description 搜索框占位符
|
|
21
|
+
* @default 搜索
|
|
22
|
+
*/
|
|
23
|
+
searchPlaceholder?: string;
|
|
24
|
+
height?: number | string;
|
|
25
|
+
value?: PickerValue;
|
|
26
|
+
/**
|
|
27
|
+
* @description 是否可返回,fullScreen 为 true 时生效
|
|
28
|
+
* @default true
|
|
29
|
+
*/
|
|
30
|
+
backable?: boolean;
|
|
31
|
+
/**
|
|
32
|
+
* @description 返回按钮图标,fullScreen 为 true 时生效
|
|
33
|
+
* @default
|
|
34
|
+
*/
|
|
35
|
+
backIcon?: React.ReactNode;
|
|
36
|
+
/**
|
|
37
|
+
* @description 是否可关闭,fullScreen 为 true 时生效
|
|
38
|
+
* @default true
|
|
39
|
+
*/
|
|
40
|
+
closable?: boolean;
|
|
41
|
+
/**
|
|
42
|
+
* @description 关闭按钮图标,fullScreen 为 true 时生效
|
|
43
|
+
* @default
|
|
44
|
+
*/
|
|
45
|
+
closeIcon?: React.ReactNode;
|
|
46
|
+
/**
|
|
47
|
+
* @description 是否多选
|
|
48
|
+
* @default false
|
|
49
|
+
*/
|
|
50
|
+
multiple?: boolean;
|
|
51
|
+
labelInValue?: boolean;
|
|
52
|
+
/**
|
|
53
|
+
* @description 弹窗标题
|
|
54
|
+
*/
|
|
55
|
+
title?: React.ReactNode;
|
|
56
|
+
/**
|
|
57
|
+
* @description 取消按钮文字,fullScreen 为 false 时生效
|
|
58
|
+
* @default 取消
|
|
59
|
+
*/
|
|
60
|
+
cancelText?: string;
|
|
61
|
+
/**
|
|
62
|
+
* @description 确定按钮文字,fullScreen 为 false 时生效
|
|
63
|
+
* @default 确定
|
|
64
|
+
*/
|
|
65
|
+
okText?: string;
|
|
66
|
+
/**
|
|
67
|
+
* @description 是否圆角,fullScreen 为 false 时生效
|
|
68
|
+
* @default true
|
|
69
|
+
*/
|
|
70
|
+
round?: boolean;
|
|
71
|
+
/**
|
|
72
|
+
* @description 关闭回调
|
|
73
|
+
* @default
|
|
74
|
+
*/
|
|
75
|
+
onClose?: () => void;
|
|
76
|
+
/**
|
|
77
|
+
* @description 回退回调
|
|
78
|
+
* @default
|
|
79
|
+
*/
|
|
80
|
+
onBack?: () => void;
|
|
81
|
+
onOk?: (value?: PickerValue, option?: any | any[]) => void;
|
|
82
|
+
/**
|
|
83
|
+
* @description 请求
|
|
84
|
+
* @default
|
|
85
|
+
*/
|
|
86
|
+
fetch?: (params: {
|
|
87
|
+
page?: number;
|
|
88
|
+
size?: number;
|
|
89
|
+
wd?: string;
|
|
90
|
+
}) => Promise<any[]>;
|
|
91
|
+
fieldNames?: {
|
|
92
|
+
label?: string;
|
|
93
|
+
value?: string;
|
|
94
|
+
};
|
|
95
|
+
/**
|
|
96
|
+
* @description 空状态
|
|
97
|
+
* @default 暂无数据
|
|
98
|
+
*/
|
|
99
|
+
empty?: React.ReactNode;
|
|
100
|
+
/**
|
|
101
|
+
* @description 是否分页
|
|
102
|
+
* @default false
|
|
103
|
+
*/
|
|
104
|
+
pageable?: boolean;
|
|
105
|
+
/**
|
|
106
|
+
* @description 每页大小,pageable 为 true 时生效
|
|
107
|
+
* @default 20
|
|
108
|
+
*/
|
|
109
|
+
pageSize?: number;
|
|
110
|
+
optionRender?: (option: any) => React.ReactNode;
|
|
111
|
+
};
|
|
112
|
+
export declare const FetchPicker: React.FC<FetchPickerProps>;
|
|
113
|
+
export {};
|
|
@@ -0,0 +1,322 @@
|
|
|
1
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
2
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
3
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
4
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
5
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
6
|
+
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
7
|
+
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
8
|
+
function _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."); }
|
|
9
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
10
|
+
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
11
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
12
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
13
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
14
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
15
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
16
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
17
|
+
import React, { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
18
|
+
import Popup from "../Popup";
|
|
19
|
+
import { Button, DotLoading, SafeArea, SpinLoading } from "../index";
|
|
20
|
+
import { CheckOutline, CloseOutline, LeftOutline, SearchOutline } from "@trionesdev/antd-mobile-icons-react";
|
|
21
|
+
import Space from "../Space";
|
|
22
|
+
import { ScrollView } from "@tarojs/components";
|
|
23
|
+
import Input from "../Input";
|
|
24
|
+
import { debounce, get, isEmpty, isEqual, some } from "lodash-es";
|
|
25
|
+
import classNames from "classnames";
|
|
26
|
+
var cls = "triones-antm-fetch-picker";
|
|
27
|
+
export var FetchPicker = function FetchPicker(_ref) {
|
|
28
|
+
var _ref$open = _ref.open,
|
|
29
|
+
open = _ref$open === void 0 ? false : _ref$open,
|
|
30
|
+
_ref$fullScreen = _ref.fullScreen,
|
|
31
|
+
fullScreen = _ref$fullScreen === void 0 ? false : _ref$fullScreen,
|
|
32
|
+
height = _ref.height,
|
|
33
|
+
_ref$showSearch = _ref.showSearch,
|
|
34
|
+
showSearch = _ref$showSearch === void 0 ? false : _ref$showSearch,
|
|
35
|
+
_ref$searchPlaceholde = _ref.searchPlaceholder,
|
|
36
|
+
searchPlaceholder = _ref$searchPlaceholde === void 0 ? '搜索' : _ref$searchPlaceholde,
|
|
37
|
+
value = _ref.value,
|
|
38
|
+
_ref$backable = _ref.backable,
|
|
39
|
+
backable = _ref$backable === void 0 ? true : _ref$backable,
|
|
40
|
+
backIcon = _ref.backIcon,
|
|
41
|
+
_ref$closable = _ref.closable,
|
|
42
|
+
closable = _ref$closable === void 0 ? true : _ref$closable,
|
|
43
|
+
closeIcon = _ref.closeIcon,
|
|
44
|
+
_ref$multiple = _ref.multiple,
|
|
45
|
+
multiple = _ref$multiple === void 0 ? false : _ref$multiple,
|
|
46
|
+
_ref$labelInValue = _ref.labelInValue,
|
|
47
|
+
labelInValue = _ref$labelInValue === void 0 ? true : _ref$labelInValue,
|
|
48
|
+
title = _ref.title,
|
|
49
|
+
_ref$cancelText = _ref.cancelText,
|
|
50
|
+
cancelText = _ref$cancelText === void 0 ? '取消' : _ref$cancelText,
|
|
51
|
+
_ref$okText = _ref.okText,
|
|
52
|
+
okText = _ref$okText === void 0 ? '确定' : _ref$okText,
|
|
53
|
+
_ref$round = _ref.round,
|
|
54
|
+
round = _ref$round === void 0 ? true : _ref$round,
|
|
55
|
+
onClose = _ref.onClose,
|
|
56
|
+
onBack = _ref.onBack,
|
|
57
|
+
onOk = _ref.onOk,
|
|
58
|
+
fetch = _ref.fetch,
|
|
59
|
+
fieldNames = _ref.fieldNames,
|
|
60
|
+
empty = _ref.empty,
|
|
61
|
+
pageable = _ref.pageable,
|
|
62
|
+
_ref$pageSize = _ref.pageSize,
|
|
63
|
+
pageSize = _ref$pageSize === void 0 ? 20 : _ref$pageSize,
|
|
64
|
+
optionRender = _ref.optionRender;
|
|
65
|
+
var _ref2 = fieldNames || {},
|
|
66
|
+
_ref2$label = _ref2.label,
|
|
67
|
+
labelFieldName = _ref2$label === void 0 ? 'label' : _ref2$label,
|
|
68
|
+
_ref2$value = _ref2.value,
|
|
69
|
+
valueFieldName = _ref2$value === void 0 ? 'value' : _ref2$value;
|
|
70
|
+
var _useState = useState([]),
|
|
71
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
72
|
+
options = _useState2[0],
|
|
73
|
+
setOptions = _useState2[1];
|
|
74
|
+
var _useState3 = useState({
|
|
75
|
+
page: 1,
|
|
76
|
+
size: pageSize
|
|
77
|
+
}),
|
|
78
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
79
|
+
queryParams = _useState4[0],
|
|
80
|
+
setQueryParams = _useState4[1];
|
|
81
|
+
var _useState5 = useState(true),
|
|
82
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
83
|
+
hasMore = _useState6[0],
|
|
84
|
+
setHasMore = _useState6[1];
|
|
85
|
+
var _useState7 = useState(false),
|
|
86
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
87
|
+
loading = _useState8[0],
|
|
88
|
+
setLoading = _useState8[1];
|
|
89
|
+
var _useState9 = useState(value || (multiple ? [] : undefined)),
|
|
90
|
+
_useState10 = _slicedToArray(_useState9, 2),
|
|
91
|
+
internalValue = _useState10[0],
|
|
92
|
+
setInternalValue = _useState10[1];
|
|
93
|
+
var requestIdRef = useRef(0);
|
|
94
|
+
var handleGetOptions = useCallback(function (value) {
|
|
95
|
+
if (!value) return null;
|
|
96
|
+
if (multiple) {
|
|
97
|
+
if (labelInValue) {
|
|
98
|
+
return options.filter(function (option) {
|
|
99
|
+
return some(value, function (v) {
|
|
100
|
+
return get(option, valueFieldName) === get(v, "value");
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
} else {
|
|
104
|
+
return options.filter(function (option) {
|
|
105
|
+
return some(value, function (v) {
|
|
106
|
+
return get(option, valueFieldName) === v;
|
|
107
|
+
});
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
} else {
|
|
111
|
+
if (labelInValue) {
|
|
112
|
+
return options.find(function (option) {
|
|
113
|
+
return isEqual(get(option, valueFieldName), get(value, "value"));
|
|
114
|
+
});
|
|
115
|
+
} else {
|
|
116
|
+
return options.find(function (option) {
|
|
117
|
+
return get(option, valueFieldName) === value;
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}, [labelInValue, options]);
|
|
122
|
+
var handleItemClick = useCallback(function (item) {
|
|
123
|
+
var itemValue = get(item, valueFieldName);
|
|
124
|
+
var itemLabel = get(item, labelFieldName);
|
|
125
|
+
var newValue;
|
|
126
|
+
if (multiple) {
|
|
127
|
+
var prevList = Array.isArray(internalValue) ? internalValue : [];
|
|
128
|
+
if (labelInValue) {
|
|
129
|
+
var values = prevList;
|
|
130
|
+
var exists = some(values, function (v) {
|
|
131
|
+
return get(v, "value") === itemValue;
|
|
132
|
+
});
|
|
133
|
+
newValue = exists ? values.filter(function (v) {
|
|
134
|
+
return get(v, "value") !== itemValue;
|
|
135
|
+
}) : [].concat(_toConsumableArray(values), [{
|
|
136
|
+
value: itemValue,
|
|
137
|
+
label: itemLabel
|
|
138
|
+
}]);
|
|
139
|
+
} else {
|
|
140
|
+
var _values = prevList;
|
|
141
|
+
var _exists = _values.includes(itemValue);
|
|
142
|
+
newValue = _exists ? _values.filter(function (v) {
|
|
143
|
+
return v !== itemValue;
|
|
144
|
+
}) : [].concat(_toConsumableArray(_values), [itemValue]);
|
|
145
|
+
}
|
|
146
|
+
} else {
|
|
147
|
+
newValue = labelInValue ? {
|
|
148
|
+
value: itemValue,
|
|
149
|
+
label: itemLabel
|
|
150
|
+
} : itemValue;
|
|
151
|
+
}
|
|
152
|
+
setInternalValue(newValue);
|
|
153
|
+
if (!multiple) {
|
|
154
|
+
var _option = handleGetOptions(newValue);
|
|
155
|
+
onOk === null || onOk === void 0 || onOk(newValue, _option);
|
|
156
|
+
onClose === null || onClose === void 0 || onClose();
|
|
157
|
+
}
|
|
158
|
+
}, [internalValue, labelFieldName, labelInValue, multiple, onClose, onOk, valueFieldName, options]);
|
|
159
|
+
var handleSelected = useCallback(function (item) {
|
|
160
|
+
if (!internalValue || isEmpty(internalValue)) {
|
|
161
|
+
return false;
|
|
162
|
+
}
|
|
163
|
+
if (multiple) {
|
|
164
|
+
if (labelInValue) {
|
|
165
|
+
return some(internalValue, function (v) {
|
|
166
|
+
return get(v, "value") === get(item, valueFieldName);
|
|
167
|
+
});
|
|
168
|
+
} else {
|
|
169
|
+
return internalValue === null || internalValue === void 0 ? void 0 : internalValue.includes(get(item, valueFieldName));
|
|
170
|
+
}
|
|
171
|
+
} else {
|
|
172
|
+
if (labelInValue) {
|
|
173
|
+
return get(internalValue, "value") === get(item, valueFieldName);
|
|
174
|
+
} else {
|
|
175
|
+
return internalValue === get(item, valueFieldName);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}, [internalValue, labelInValue, multiple, valueFieldName]);
|
|
179
|
+
var handleFetch = useCallback(function (params) {
|
|
180
|
+
if (!fetch) {
|
|
181
|
+
setOptions([]);
|
|
182
|
+
setHasMore(false);
|
|
183
|
+
return;
|
|
184
|
+
}
|
|
185
|
+
var requestId = ++requestIdRef.current;
|
|
186
|
+
setLoading(true);
|
|
187
|
+
fetch(params).then(function (res) {
|
|
188
|
+
if (requestId !== requestIdRef.current) {
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
var nextOptions = res || [];
|
|
192
|
+
setOptions(function (prev) {
|
|
193
|
+
return params.page === 1 ? nextOptions : [].concat(_toConsumableArray(prev), _toConsumableArray(nextOptions));
|
|
194
|
+
});
|
|
195
|
+
setHasMore(pageable ? nextOptions.length >= params.size : false);
|
|
196
|
+
}).finally(function () {
|
|
197
|
+
if (requestId === requestIdRef.current) {
|
|
198
|
+
setLoading(false);
|
|
199
|
+
}
|
|
200
|
+
});
|
|
201
|
+
}, [fetch, pageable]);
|
|
202
|
+
var handleOnOk = function handleOnOk() {
|
|
203
|
+
onOk === null || onOk === void 0 || onOk(internalValue, handleGetOptions(internalValue));
|
|
204
|
+
onClose === null || onClose === void 0 || onClose();
|
|
205
|
+
};
|
|
206
|
+
useEffect(function () {
|
|
207
|
+
if (!open) {
|
|
208
|
+
setInternalValue(multiple ? [] : undefined);
|
|
209
|
+
return;
|
|
210
|
+
}
|
|
211
|
+
handleFetch(queryParams);
|
|
212
|
+
}, [handleFetch, open, queryParams]);
|
|
213
|
+
useEffect(function () {
|
|
214
|
+
if (!open) {
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
217
|
+
if (value == undefined) {
|
|
218
|
+
return;
|
|
219
|
+
}
|
|
220
|
+
setInternalValue(function (prev) {
|
|
221
|
+
return isEqual(value, prev) ? prev : value;
|
|
222
|
+
});
|
|
223
|
+
}, [open, value]);
|
|
224
|
+
var handleSearchChange = useMemo(function () {
|
|
225
|
+
return debounce(function (v) {
|
|
226
|
+
setQueryParams(function (prev) {
|
|
227
|
+
return _objectSpread(_objectSpread({}, prev), {}, {
|
|
228
|
+
page: 1,
|
|
229
|
+
wd: v
|
|
230
|
+
});
|
|
231
|
+
});
|
|
232
|
+
}, 500);
|
|
233
|
+
}, []);
|
|
234
|
+
useEffect(function () {
|
|
235
|
+
return function () {
|
|
236
|
+
return handleSearchChange.cancel();
|
|
237
|
+
};
|
|
238
|
+
}, [handleSearchChange]);
|
|
239
|
+
var header = fullScreen ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Space, null, backable && /*#__PURE__*/React.createElement("div", {
|
|
240
|
+
className: "".concat(cls, "-head-icon"),
|
|
241
|
+
onClick: onBack
|
|
242
|
+
}, backIcon || /*#__PURE__*/React.createElement(LeftOutline, null)), closable && /*#__PURE__*/React.createElement("div", {
|
|
243
|
+
className: "".concat(cls, "-head-icon"),
|
|
244
|
+
onClick: onClose
|
|
245
|
+
}, closeIcon || /*#__PURE__*/React.createElement(CloseOutline, null))), /*#__PURE__*/React.createElement("div", {
|
|
246
|
+
className: "".concat(cls, "-head-title")
|
|
247
|
+
}, title)) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
|
|
248
|
+
className: "".concat(cls, "-head-button"),
|
|
249
|
+
onClick: onClose
|
|
250
|
+
}, cancelText), /*#__PURE__*/React.createElement("div", {
|
|
251
|
+
className: "".concat(cls, "-head-title")
|
|
252
|
+
}, title), /*#__PURE__*/React.createElement("div", {
|
|
253
|
+
className: "".concat(cls, "-head-button"),
|
|
254
|
+
onClick: handleOnOk
|
|
255
|
+
}, okText));
|
|
256
|
+
return /*#__PURE__*/React.createElement(Popup, {
|
|
257
|
+
open: open,
|
|
258
|
+
onClose: onClose,
|
|
259
|
+
onBack: onBack,
|
|
260
|
+
height: fullScreen ? '100%' : height !== null && height !== void 0 ? height : 'auto',
|
|
261
|
+
round: fullScreen ? false : round
|
|
262
|
+
}, /*#__PURE__*/React.createElement(SafeArea, null, /*#__PURE__*/React.createElement("div", {
|
|
263
|
+
className: cls
|
|
264
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
265
|
+
className: "".concat(cls, "-head")
|
|
266
|
+
}, header), showSearch && /*#__PURE__*/React.createElement("div", {
|
|
267
|
+
className: "".concat(cls, "-search-bar")
|
|
268
|
+
}, /*#__PURE__*/React.createElement(Input, {
|
|
269
|
+
className: "".concat(cls, "-search-bar-input"),
|
|
270
|
+
prefix: /*#__PURE__*/React.createElement("div", {
|
|
271
|
+
style: {
|
|
272
|
+
paddingInline: 8
|
|
273
|
+
}
|
|
274
|
+
}, /*#__PURE__*/React.createElement(SearchOutline, null)),
|
|
275
|
+
variant: "outlined",
|
|
276
|
+
placeholder: searchPlaceholder,
|
|
277
|
+
value: queryParams.wd,
|
|
278
|
+
onChange: handleSearchChange
|
|
279
|
+
})), /*#__PURE__*/React.createElement(ScrollView, {
|
|
280
|
+
className: "".concat(cls, "-body"),
|
|
281
|
+
scrollY: true,
|
|
282
|
+
onScrollToLower: function onScrollToLower() {
|
|
283
|
+
if (!hasMore || !pageable) {
|
|
284
|
+
return;
|
|
285
|
+
}
|
|
286
|
+
setQueryParams(function (prev) {
|
|
287
|
+
return _objectSpread(_objectSpread({}, prev), {}, {
|
|
288
|
+
page: prev.page + 1
|
|
289
|
+
});
|
|
290
|
+
});
|
|
291
|
+
}
|
|
292
|
+
}, isEmpty(options) && loading && /*#__PURE__*/React.createElement("div", {
|
|
293
|
+
className: "".concat(cls, "-loading")
|
|
294
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
295
|
+
className: "".concat(cls, "-loading-content")
|
|
296
|
+
}, /*#__PURE__*/React.createElement(SpinLoading, null), /*#__PURE__*/React.createElement("div", null, "\u52A0\u8F7D\u4E2D..."))), isEmpty(options) && !loading && (empty || /*#__PURE__*/React.createElement("div", {
|
|
297
|
+
className: "".concat(cls, "-empty")
|
|
298
|
+
}, "\u6682\u65E0\u6570\u636E")), options === null || options === void 0 ? void 0 : options.map(function (item, index) {
|
|
299
|
+
var _get;
|
|
300
|
+
var selected = handleSelected(item);
|
|
301
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
302
|
+
className: classNames("".concat(cls, "-item"), "".concat(cls, "-item-option"), _defineProperty({}, "".concat(cls, "-item-option-selected"), selected)),
|
|
303
|
+
key: "".concat((_get = get(item, valueFieldName)) !== null && _get !== void 0 ? _get : index),
|
|
304
|
+
onClick: function onClick() {
|
|
305
|
+
handleItemClick(item);
|
|
306
|
+
}
|
|
307
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
308
|
+
className: "".concat(cls, "-item-option-content")
|
|
309
|
+
}, (optionRender === null || optionRender === void 0 ? void 0 : optionRender(item)) || get(item, labelFieldName)), multiple && selected && /*#__PURE__*/React.createElement("div", {
|
|
310
|
+
className: "".concat(cls, "-item-option-state")
|
|
311
|
+
}, /*#__PURE__*/React.createElement(CheckOutline, null)));
|
|
312
|
+
}), !isEmpty(options) && loading && /*#__PURE__*/React.createElement("div", {
|
|
313
|
+
className: "".concat(cls, "-loading-more")
|
|
314
|
+
}, "\u52A0\u8F7D\u66F4\u591A", /*#__PURE__*/React.createElement(DotLoading, null))), fullScreen && multiple && /*#__PURE__*/React.createElement("div", {
|
|
315
|
+
className: "".concat(cls, "-footer")
|
|
316
|
+
}, /*#__PURE__*/React.createElement(Button, {
|
|
317
|
+
type: 'primary',
|
|
318
|
+
block: true,
|
|
319
|
+
size: 'large',
|
|
320
|
+
onClick: handleOnOk
|
|
321
|
+
}, okText)))));
|
|
322
|
+
};
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
@use "../style/variable" as variable;
|
|
2
|
+
|
|
3
|
+
$cls: 'triones-antm-fetch-picker';
|
|
4
|
+
|
|
5
|
+
.#{$cls} {
|
|
6
|
+
height: 100%;
|
|
7
|
+
display: flex;
|
|
8
|
+
flex-direction: column;
|
|
9
|
+
background-color: #f5f5f5;
|
|
10
|
+
|
|
11
|
+
&-head {
|
|
12
|
+
padding: variable.$trionesPaddingXxs;
|
|
13
|
+
background-color: white;
|
|
14
|
+
display: flex;
|
|
15
|
+
flex-direction: row;
|
|
16
|
+
justify-content: space-between;
|
|
17
|
+
border-bottom: 1Px solid variable.$trionesBorderColor;
|
|
18
|
+
|
|
19
|
+
&-icon {
|
|
20
|
+
padding: 8Px;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
&-title {
|
|
24
|
+
flex: 1 auto;
|
|
25
|
+
display: flex;
|
|
26
|
+
justify-content: center;
|
|
27
|
+
align-items: center;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
&-button {
|
|
31
|
+
color: variable.$trionesColorPrimaryText;
|
|
32
|
+
display: inline-block;
|
|
33
|
+
padding: 8Px;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
&-search-bar {
|
|
39
|
+
padding: variable.$trionesPaddingXxs;
|
|
40
|
+
background-color: white;
|
|
41
|
+
|
|
42
|
+
&-input {
|
|
43
|
+
background-color: #f5f5f5;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
&-empty {
|
|
48
|
+
height: 100%;
|
|
49
|
+
display: flex;
|
|
50
|
+
justify-content: center;
|
|
51
|
+
align-items: center;
|
|
52
|
+
min-height: 100Px;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
&-loading {
|
|
56
|
+
height: 100%;
|
|
57
|
+
display: flex;
|
|
58
|
+
justify-content: center;
|
|
59
|
+
align-items: center;
|
|
60
|
+
|
|
61
|
+
&-content {
|
|
62
|
+
display: flex;
|
|
63
|
+
flex-direction: column;
|
|
64
|
+
justify-content: center;
|
|
65
|
+
align-items: center;
|
|
66
|
+
gap: 8Px;
|
|
67
|
+
font-size: 12Px;
|
|
68
|
+
color: #8c8c8c;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
&-loading-more {
|
|
73
|
+
padding: variable.$trionesPaddingXxs;
|
|
74
|
+
display: flex;
|
|
75
|
+
justify-content: center;
|
|
76
|
+
align-items: center;
|
|
77
|
+
color: #8c8c8c;
|
|
78
|
+
font-size: 12Px;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
&-body {
|
|
82
|
+
flex: 1 auto;
|
|
83
|
+
|
|
84
|
+
.#{$cls} {
|
|
85
|
+
&-item {
|
|
86
|
+
padding-block: variable.$trionesPaddingSm;
|
|
87
|
+
padding-inline: variable.$trionesPadding;
|
|
88
|
+
background-color: white;
|
|
89
|
+
border-bottom: 1Px solid #f0f0f0;
|
|
90
|
+
&-option{
|
|
91
|
+
display: flex;
|
|
92
|
+
&-selected{
|
|
93
|
+
background-color: #e6f4ff;
|
|
94
|
+
}
|
|
95
|
+
&-content{
|
|
96
|
+
flex: auto;
|
|
97
|
+
overflow: hidden;
|
|
98
|
+
white-space: nowrap;
|
|
99
|
+
text-overflow: ellipsis;
|
|
100
|
+
}
|
|
101
|
+
&-state{
|
|
102
|
+
.triones-antm-icon{
|
|
103
|
+
color: variable.$trionesColorPrimaryText;
|
|
104
|
+
font-size: variable.$trionesFontSize;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
&-footer {
|
|
113
|
+
flex-shrink: 0;
|
|
114
|
+
border-top: 1Px solid variable.$trionesBorderColor;
|
|
115
|
+
padding: variable.$trionesPaddingXxs;
|
|
116
|
+
background-color: white;
|
|
117
|
+
}
|
|
118
|
+
}
|