linkmore-design 1.0.34 → 1.0.37

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.
Files changed (167) hide show
  1. package/dist/CardTable/utils.d.ts +1 -1
  2. package/dist/Cascader/demos/basic.d.ts +2 -0
  3. package/dist/Cascader/index.d.ts +4 -0
  4. package/dist/Cascader/style/index.d.ts +1 -0
  5. package/dist/Form/demos/basic.d.ts +2 -0
  6. package/dist/Form/demos/drawer1152-triple.d.ts +3 -0
  7. package/dist/Form/demos/drawer440-double.d.ts +3 -0
  8. package/dist/Form/demos/drawer440.d.ts +3 -0
  9. package/dist/Form/demos/drawer720-double.d.ts +3 -0
  10. package/dist/Form/demos/modal416.d.ts +3 -0
  11. package/dist/Form/demos/modal552-double.d.ts +3 -0
  12. package/dist/Form/index.d.ts +24 -0
  13. package/dist/Form/style/index.d.ts +1 -0
  14. package/dist/IconFont/font/iconfont.d.ts +0 -0
  15. package/dist/IconFont/index.d.ts +1 -1
  16. package/dist/Input/demos/after.d.ts +1 -1
  17. package/dist/Input/demos/base.d.ts +1 -1
  18. package/dist/Input/demos/basic.d.ts +1 -1
  19. package/dist/Input/demos/color.d.ts +1 -1
  20. package/dist/Input/demos/combination.d.ts +1 -1
  21. package/dist/Input/demos/import.d.ts +1 -1
  22. package/dist/Input/demos/line.d.ts +1 -1
  23. package/dist/Input/demos/password.d.ts +1 -1
  24. package/dist/Input/demos/size.d.ts +1 -1
  25. package/dist/Input/index.d.ts +10 -2
  26. package/dist/LmSelect/GhostSelect.d.ts +2 -0
  27. package/dist/LmSelect/NormalSelect.d.ts +11 -0
  28. package/dist/LmSelect/demos/basic.d.ts +2 -0
  29. package/dist/LmSelect/demos/checkbox.d.ts +2 -0
  30. package/dist/LmSelect/demos/ghost.d.ts +2 -0
  31. package/dist/LmSelect/index.d.ts +14 -0
  32. package/dist/LmSelect/style/index.d.ts +1 -0
  33. package/dist/LmSelect/useCheckboxOptions.d.ts +1 -0
  34. package/dist/LmSelect/utils.d.ts +10 -0
  35. package/dist/LmTable/demos/getData.d.ts +2 -0
  36. package/dist/Tooltip/demos/basic.d.ts +2 -0
  37. package/dist/Tooltip/index.d.ts +2 -0
  38. package/dist/Tooltip/style/index.d.ts +1 -0
  39. package/dist/Upload/demos/picture-card.d.ts +3 -0
  40. package/dist/Upload/demos/picture-style.d.ts +4 -0
  41. package/dist/Upload/index.d.ts +4 -0
  42. package/dist/VirtualList/index.d.ts +1 -1
  43. package/dist/hooks/index.d.ts +2 -0
  44. package/dist/hooks/useEvent/index.d.ts +2 -0
  45. package/dist/hooks/useFullscreen/demos/basic.d.ts +2 -0
  46. package/dist/hooks/useFullscreen/index.d.ts +15 -0
  47. package/dist/index.d.ts +5 -1
  48. package/dist/index.umd.js +1385 -278
  49. package/dist/index.umd.min.js +7 -7
  50. package/es/Cascader/index.d.ts +4 -0
  51. package/es/Cascader/index.js +37 -0
  52. package/es/Cascader/style/index.css +520 -0
  53. package/es/Cascader/style/index.d.ts +1 -0
  54. package/es/Cascader/style/index.js +1 -0
  55. package/es/CustomTableOption/columnsSort.js +42 -11
  56. package/es/CustomTableOption/filterSort.js +34 -4
  57. package/es/CustomTableOption/index.js +25 -8
  58. package/es/CustomTableOption/style/index.css +29 -0
  59. package/es/Dropdown/index.js +11 -1
  60. package/es/Dropdown/style/index.css +6 -0
  61. package/es/EditTable/EditTable.js +27 -4
  62. package/es/Form/index.d.ts +24 -0
  63. package/es/Form/index.js +56 -0
  64. package/es/Form/style/index.css +531 -0
  65. package/es/Form/style/index.d.ts +1 -0
  66. package/es/Form/style/index.js +1 -0
  67. package/es/IconFont/font/iconfont.css +1715 -0
  68. package/es/IconFont/font/iconfont.js +48 -0
  69. package/es/IconFont/font/iconfont.ttf +0 -0
  70. package/es/IconFont/font/iconfont.woff +0 -0
  71. package/es/IconFont/font/iconfont.woff2 +0 -0
  72. package/es/IconFont/index.js +2 -2
  73. package/es/Input/index.d.ts +11 -0
  74. package/es/Input/index.js +31 -37
  75. package/es/LmSelect/GhostSelect.d.ts +2 -0
  76. package/es/LmSelect/GhostSelect.js +523 -0
  77. package/es/LmSelect/NormalSelect.d.ts +11 -0
  78. package/es/LmSelect/NormalSelect.js +97 -0
  79. package/es/LmSelect/icon_placeholder.png +0 -0
  80. package/es/LmSelect/index.d.ts +14 -0
  81. package/es/LmSelect/index.js +34 -0
  82. package/es/LmSelect/style/index.css +751 -0
  83. package/es/LmSelect/style/index.d.ts +1 -0
  84. package/es/LmSelect/style/index.js +1 -0
  85. package/es/LmSelect/useCheckboxOptions.d.ts +1 -0
  86. package/es/LmSelect/useCheckboxOptions.js +120 -0
  87. package/es/LmSelect/utils.d.ts +10 -0
  88. package/es/LmSelect/utils.js +66 -0
  89. package/es/LmTable/Table.js +29 -26
  90. package/es/Radio/index.js +3 -2
  91. package/es/Radio/style/style.css +4 -0
  92. package/es/Tooltip/index.d.ts +2 -0
  93. package/es/Tooltip/index.js +3 -0
  94. package/es/Tooltip/style/index.css +505 -0
  95. package/es/Tooltip/style/index.d.ts +1 -0
  96. package/es/Tooltip/style/index.js +1 -0
  97. package/es/Upload/index.d.ts +4 -0
  98. package/es/Upload/index.js +6 -3
  99. package/es/VirtualList/index.js +2 -1
  100. package/es/hooks/index.d.ts +2 -0
  101. package/es/hooks/index.js +2 -0
  102. package/es/hooks/useEvent/index.d.ts +2 -0
  103. package/es/hooks/useEvent/index.js +16 -0
  104. package/es/hooks/useFullscreen/index.d.ts +15 -0
  105. package/es/hooks/useFullscreen/index.js +99 -0
  106. package/es/index.d.ts +5 -1
  107. package/es/index.js +5 -1
  108. package/lib/Cascader/index.d.ts +4 -0
  109. package/lib/Cascader/index.js +50 -0
  110. package/lib/Cascader/style/index.css +520 -0
  111. package/lib/Cascader/style/index.d.ts +1 -0
  112. package/lib/Cascader/style/index.js +3 -0
  113. package/lib/CustomTableOption/columnsSort.js +42 -10
  114. package/lib/CustomTableOption/filterSort.js +33 -3
  115. package/lib/CustomTableOption/index.js +24 -7
  116. package/lib/CustomTableOption/style/index.css +29 -0
  117. package/lib/Dropdown/index.js +12 -1
  118. package/lib/Dropdown/style/index.css +6 -0
  119. package/lib/EditTable/EditTable.js +27 -4
  120. package/lib/Form/index.d.ts +24 -0
  121. package/lib/Form/index.js +75 -0
  122. package/lib/Form/style/index.css +531 -0
  123. package/lib/Form/style/index.d.ts +1 -0
  124. package/lib/Form/style/index.js +3 -0
  125. package/lib/IconFont/font/iconfont.css +1715 -0
  126. package/lib/IconFont/font/iconfont.js +48 -0
  127. package/lib/IconFont/font/iconfont.ttf +0 -0
  128. package/lib/IconFont/font/iconfont.woff +0 -0
  129. package/lib/IconFont/font/iconfont.woff2 +0 -0
  130. package/lib/IconFont/index.js +2 -2
  131. package/lib/Input/index.d.ts +11 -0
  132. package/lib/Input/index.js +24 -15
  133. package/lib/LmSelect/GhostSelect.d.ts +2 -0
  134. package/lib/LmSelect/GhostSelect.js +545 -0
  135. package/lib/LmSelect/NormalSelect.d.ts +11 -0
  136. package/lib/LmSelect/NormalSelect.js +116 -0
  137. package/lib/LmSelect/icon_placeholder.png +0 -0
  138. package/lib/LmSelect/index.d.ts +14 -0
  139. package/lib/LmSelect/index.js +50 -0
  140. package/lib/LmSelect/style/index.css +751 -0
  141. package/lib/LmSelect/style/index.d.ts +1 -0
  142. package/lib/LmSelect/style/index.js +3 -0
  143. package/lib/LmSelect/useCheckboxOptions.d.ts +1 -0
  144. package/lib/LmSelect/useCheckboxOptions.js +139 -0
  145. package/lib/LmSelect/utils.d.ts +10 -0
  146. package/lib/LmSelect/utils.js +103 -0
  147. package/lib/LmTable/Table.js +29 -26
  148. package/lib/Radio/index.js +3 -2
  149. package/lib/Radio/style/style.css +4 -0
  150. package/lib/Tooltip/index.d.ts +2 -0
  151. package/lib/Tooltip/index.js +15 -0
  152. package/lib/Tooltip/style/index.css +505 -0
  153. package/lib/Tooltip/style/index.d.ts +1 -0
  154. package/lib/Tooltip/style/index.js +3 -0
  155. package/lib/Upload/index.d.ts +4 -0
  156. package/lib/Upload/index.js +6 -3
  157. package/lib/VirtualList/index.js +2 -1
  158. package/lib/hooks/index.d.ts +2 -0
  159. package/lib/hooks/index.js +23 -0
  160. package/lib/hooks/useEvent/index.d.ts +2 -0
  161. package/lib/hooks/useEvent/index.js +25 -0
  162. package/lib/hooks/useFullscreen/index.d.ts +15 -0
  163. package/lib/hooks/useFullscreen/index.js +113 -0
  164. package/lib/index.d.ts +5 -1
  165. package/lib/index.js +33 -1
  166. package/package.json +5 -4
  167. package/typings/index.d.ts +1 -1
Binary file
Binary file
Binary file
@@ -8,8 +8,8 @@ exports.default = void 0;
8
8
  var _icons = require("@ant-design/icons");
9
9
 
10
10
  var IconFont = (0, _icons.createFromIconfontCN)({
11
- scriptUrl: '//at.alicdn.com/t/font_2966019_8aij0300kjo.js' // 在 iconfont.cn 上生成
12
-
11
+ // scriptUrl: '//at.alicdn.com/t/font_2966019_8aij0300kjo.js', // 在 iconfont.cn 上生成
12
+ scriptUrl: require('./font/iconfont.js')
13
13
  });
14
14
  var _default = IconFont;
15
15
  exports.default = _default;
@@ -0,0 +1,11 @@
1
+ import { Input } from 'antd';
2
+ import type { InputProps, InputRef } from 'antd';
3
+ import React from 'react';
4
+ interface ILmInput extends React.ForwardRefExoticComponent<InputProps & React.RefAttributes<InputRef>> {
5
+ Group: typeof Input.Group;
6
+ Search: typeof Input.Search;
7
+ TextArea: typeof Input.TextArea;
8
+ Password: typeof Input.Password;
9
+ }
10
+ declare const LmInput: ILmInput;
11
+ export default LmInput;
package/es/Input/index.js CHANGED
@@ -1,47 +1,41 @@
1
- "use strict";
1
+ import "antd/es/input/style";
2
+ import _Input from "antd/es/input";
2
3
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ var __rest = this && this.__rest || function (s, e) {
5
+ var t = {};
4
6
 
5
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
7
+ for (var p in s) {
8
+ if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
9
+ }
6
10
 
7
- Object.defineProperty(exports, "__esModule", {
8
- value: true
9
- });
10
- exports.default = void 0;
11
-
12
- require("antd/es/input/style");
13
-
14
- var _input = _interopRequireDefault(require("antd/es/input"));
15
-
16
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/extends"));
17
-
18
- var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectWithoutProperties"));
19
-
20
- var _react = _interopRequireWildcard(require("react"));
21
-
22
- var _IconFont = _interopRequireDefault(require("../IconFont"));
11
+ if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
12
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
13
+ }
14
+ return t;
15
+ };
23
16
 
24
- var _excluded = ["allowClear"],
25
- _excluded2 = ["allowClear"],
26
- _excluded3 = ["allowClear"];
27
- var LmInput = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
17
+ import React, { forwardRef } from 'react';
18
+ import IconFont from '../IconFont';
19
+ var LmInput = /*#__PURE__*/forwardRef(function (props, ref) {
28
20
  var _props$allowClear = props.allowClear,
29
21
  allowClear = _props$allowClear === void 0 ? true : _props$allowClear,
30
- rest = (0, _objectWithoutProperties2.default)(props, _excluded);
31
- return /*#__PURE__*/_react.default.createElement(_input.default, (0, _extends2.default)({
22
+ rest = __rest(props, ["allowClear"]);
23
+
24
+ return /*#__PURE__*/React.createElement(_Input, Object.assign({
32
25
  ref: ref,
33
26
  className: "lm_input"
34
27
  }, rest, {
35
28
  allowClear: true
36
29
  }));
37
30
  });
38
- LmInput.Group = _input.default.Group;
39
- LmInput.Search = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
31
+ LmInput.Group = _Input.Group;
32
+ LmInput.Search = /*#__PURE__*/forwardRef(function (props, ref) {
40
33
  var _props$allowClear2 = props.allowClear,
41
34
  allowClear = _props$allowClear2 === void 0 ? true : _props$allowClear2,
42
- rest = (0, _objectWithoutProperties2.default)(props, _excluded2);
43
- return /*#__PURE__*/_react.default.createElement(_input.default.Search, (0, _extends2.default)({
44
- enterButton: /*#__PURE__*/_react.default.createElement(_IconFont.default, {
35
+ rest = __rest(props, ["allowClear"]);
36
+
37
+ return /*#__PURE__*/React.createElement(_Input.Search, Object.assign({
38
+ enterButton: /*#__PURE__*/React.createElement(IconFont, {
45
39
  type: "lmweb-search"
46
40
  })
47
41
  }, rest, {
@@ -50,18 +44,19 @@ LmInput.Search = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
50
44
  className: "lm_input_search"
51
45
  }));
52
46
  });
53
- LmInput.TextArea = _input.default.TextArea;
47
+ LmInput.TextArea = _Input.TextArea;
54
48
 
55
49
  LmInput.Password = function (props) {
56
50
  var _props$allowClear3 = props.allowClear,
57
51
  allowClear = _props$allowClear3 === void 0 ? true : _props$allowClear3,
58
- rest = (0, _objectWithoutProperties2.default)(props, _excluded3);
59
- return /*#__PURE__*/_react.default.createElement(_input.default.Password, (0, _extends2.default)({
52
+ rest = __rest(props, ["allowClear"]);
53
+
54
+ return /*#__PURE__*/React.createElement(_Input.Password, Object.assign({
60
55
  className: "lm_input_password",
61
56
  iconRender: function iconRender(visible) {
62
- return visible ? /*#__PURE__*/_react.default.createElement(_IconFont.default, {
57
+ return visible ? /*#__PURE__*/React.createElement(IconFont, {
63
58
  type: "lmweb-eye"
64
- }) : /*#__PURE__*/_react.default.createElement(_IconFont.default, {
59
+ }) : /*#__PURE__*/React.createElement(IconFont, {
65
60
  type: "lmweb-eye-close"
66
61
  });
67
62
  }
@@ -70,5 +65,4 @@ LmInput.Password = function (props) {
70
65
  }));
71
66
  };
72
67
 
73
- var _default = LmInput;
74
- exports.default = _default;
68
+ export default LmInput;
@@ -0,0 +1,2 @@
1
+ declare const Index: (props: any) => JSX.Element;
2
+ export default Index;
@@ -0,0 +1,523 @@
1
+ import "antd/es/cascader/style";
2
+ import _Cascader from "antd/es/cascader";
3
+ import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
4
+ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
5
+
6
+ var __rest = this && this.__rest || function (s, e) {
7
+ var t = {};
8
+
9
+ for (var p in s) {
10
+ if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
11
+ }
12
+
13
+ if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
14
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
15
+ }
16
+ return t;
17
+ };
18
+
19
+ import { useEvent } from '@/hooks';
20
+ import { useControllableValue } from 'ahooks';
21
+ import cn from 'classnames';
22
+ import { Button, Checkbox, Dropdown, Input } from 'linkmore-design';
23
+ import React, { useMemo, useRef, useState } from 'react';
24
+ import IconFont from '../IconFont';
25
+ import VirtualList from '../VirtualList';
26
+ import { getArray, getIsHas, onStringSearch, render } from './utils';
27
+
28
+ var imgEmpty = require('./icon_placeholder.png');
29
+
30
+ var FilterEmpty = function FilterEmpty() {
31
+ return /*#__PURE__*/React.createElement("div", {
32
+ className: "filter_empty"
33
+ }, /*#__PURE__*/React.createElement("img", {
34
+ src: imgEmpty,
35
+ alt: "empty",
36
+ width: 81
37
+ }), /*#__PURE__*/React.createElement("div", {
38
+ className: "filter_empty_text"
39
+ }, "\u6682\u65E0\u6570\u636E"));
40
+ }; // 下拉单选过滤器
41
+
42
+
43
+ var SelectFilter = function SelectFilter(_ref) {
44
+ var _ref$filters = _ref.filters,
45
+ filters = _ref$filters === void 0 ? [] : _ref$filters,
46
+ getFilterValue = _ref.getFilterValue,
47
+ setFilterValue = _ref.setFilterValue;
48
+ var inputRef = useRef(null); // 搜索后的筛选项
49
+
50
+ var _useState = useState(filters),
51
+ _useState2 = _slicedToArray(_useState, 2),
52
+ options = _useState2[0],
53
+ setOptions = _useState2[1]; // 是否存在搜索, 当数据大于8时存在搜索
54
+
55
+
56
+ var isSearch = useMemo(function () {
57
+ return filters.length > 8;
58
+ }, [filters.length]); // 搜索
59
+
60
+ var handleFilter = useEvent(function (val) {
61
+ return setOptions(filters.filter(function (v) {
62
+ return onStringSearch(val, v.label);
63
+ }));
64
+ }); // 单选事件
65
+
66
+ var onChange = function onChange(e, item) {
67
+ e.preventDefault();
68
+ setFilterValue(item.value);
69
+ };
70
+
71
+ return /*#__PURE__*/React.createElement("div", {
72
+ className: "filter_dropdown"
73
+ }, isSearch && /*#__PURE__*/React.createElement("div", {
74
+ className: "filter_header"
75
+ }, /*#__PURE__*/React.createElement(Input.Search, {
76
+ ref: inputRef,
77
+ allowClear: true,
78
+ size: "small",
79
+ placeholder: "\u8BF7\u8F93\u5165",
80
+ onSearch: handleFilter,
81
+ onChange: function onChange(e) {
82
+ return handleFilter(e.target.value);
83
+ }
84
+ })), /*#__PURE__*/React.createElement("div", {
85
+ className: "filter_body"
86
+ }, /*#__PURE__*/React.createElement(VirtualList, {
87
+ options: options,
88
+ className: "filter_list"
89
+ }, function (_a) {
90
+ var item = _a.item,
91
+ resetProps = __rest(_a, ["item"]);
92
+
93
+ return /*#__PURE__*/React.createElement("div", Object.assign({}, resetProps, {
94
+ className: cn('filter_item', {
95
+ checked: item.value === getFilterValue
96
+ }),
97
+ onClick: function onClick(e) {
98
+ return onChange(e, item);
99
+ }
100
+ }), /*#__PURE__*/React.createElement("div", {
101
+ className: "filter_item-content"
102
+ }, item.label));
103
+ }), !options.length && /*#__PURE__*/React.createElement(FilterEmpty, null)));
104
+ }; // 下拉多选过滤器: 要过滤的数据, 当前选中项, 触发过滤, 过滤前的数据
105
+
106
+
107
+ var CheckboxFilter = function CheckboxFilter(_ref2) {
108
+ var _ref2$filters = _ref2.filters,
109
+ filters = _ref2$filters === void 0 ? [] : _ref2$filters,
110
+ _ref2$getFilterValue = _ref2.getFilterValue,
111
+ getFilterValue = _ref2$getFilterValue === void 0 ? [] : _ref2$getFilterValue,
112
+ setFilterValue = _ref2.setFilterValue;
113
+ var onValuesChange = useEvent(function (checkedValues) {
114
+ return setFilterValue(checkedValues, false);
115
+ }); // 父组件和子组件同步checked状态
116
+
117
+ var _useControllableValue = useControllableValue({
118
+ value: getFilterValue,
119
+ onChange: onValuesChange
120
+ }),
121
+ _useControllableValue2 = _slicedToArray(_useControllableValue, 2),
122
+ checkedValues = _useControllableValue2[0],
123
+ setCheckedValues = _useControllableValue2[1]; // 搜索后的筛选项:[{value: '', ... }, ...]
124
+
125
+
126
+ var _useState3 = useState(filters),
127
+ _useState4 = _slicedToArray(_useState3, 2),
128
+ options = _useState4[0],
129
+ setOptions = _useState4[1]; // 是否存在搜索, 当数据大于8时存在搜索
130
+
131
+
132
+ var isSearch = useMemo(function () {
133
+ return filters.length > 8;
134
+ }, [filters.length]); // 是否全选: 选中的数据大于等于筛选后的数据 && 筛选后的数据全部存在于选中的数据中
135
+
136
+ var checkAll = useMemo(function () {
137
+ var isLen = checkedValues.length >= options.length;
138
+ return isLen && options.every(function (_ref3) {
139
+ var value = _ref3.value;
140
+ return checkedValues.includes(value);
141
+ });
142
+ }, [checkedValues.length, options]); // 是否半选: 存在选中的数据 && 未全选
143
+
144
+ var indeterminate = useMemo(function () {
145
+ return checkedValues.length && !checkAll;
146
+ }, [checkedValues.length, checkAll]); // 全选事件
147
+
148
+ var onCheckAllChange = function onCheckAllChange(e) {
149
+ var nValue = checkAll ? checkedValues.filter(function (v) {
150
+ return !options.some(function (_ref4) {
151
+ var value = _ref4.value;
152
+ return v === value;
153
+ });
154
+ }) : Array.from(new Set([].concat(_toConsumableArray(checkedValues), _toConsumableArray(options.map(function (v) {
155
+ return v.value;
156
+ })))));
157
+ setCheckedValues(nValue);
158
+ }; // 搜索
159
+
160
+
161
+ var handleFilter = useEvent(function (val) {
162
+ return setOptions(filters.filter(function (v) {
163
+ return onStringSearch(val, v.label);
164
+ }));
165
+ }); // 单选事件
166
+
167
+ var onChange = function onChange(e, item) {
168
+ e.preventDefault();
169
+ e.stopPropagation();
170
+ var arr = checkedValues.includes(item.value) ? checkedValues.filter(function (v) {
171
+ return v !== item.value;
172
+ }) : [].concat(_toConsumableArray(checkedValues), [item.value]);
173
+ setCheckedValues(arr || undefined);
174
+ };
175
+
176
+ return /*#__PURE__*/React.createElement("div", {
177
+ className: "select_dropdown"
178
+ }, /*#__PURE__*/React.createElement("div", {
179
+ className: "filter_header"
180
+ }, isSearch && /*#__PURE__*/React.createElement(Input.Search, {
181
+ allowClear: true,
182
+ size: "small",
183
+ placeholder: "\u8BF7\u8F93\u5165",
184
+ onSearch: handleFilter,
185
+ onChange: function onChange(e) {
186
+ var _a;
187
+
188
+ return handleFilter((_a = e === null || e === void 0 ? void 0 : e.target) === null || _a === void 0 ? void 0 : _a.value);
189
+ }
190
+ }), /*#__PURE__*/React.createElement("div", {
191
+ className: "filter_header_operate"
192
+ }, /*#__PURE__*/React.createElement(Checkbox, {
193
+ indeterminate: indeterminate,
194
+ onChange: onCheckAllChange,
195
+ checked: checkAll,
196
+ className: "filter_tip"
197
+ }, "\u5168\u90E8"), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("span", {
198
+ className: "filter_tip"
199
+ }, "\u5DF2\u9009: ", checkedValues.length)))), /*#__PURE__*/React.createElement(Checkbox.Group, {
200
+ value: checkedValues,
201
+ className: "filter_body"
202
+ }, /*#__PURE__*/React.createElement(VirtualList, {
203
+ options: options,
204
+ className: "filter_list"
205
+ }, function (_a) {
206
+ var item = _a.item,
207
+ resetProps = __rest(_a, ["item"]);
208
+
209
+ return /*#__PURE__*/React.createElement("div", Object.assign({}, resetProps, {
210
+ className: cn('filter_item', {
211
+ checked: checkedValues.includes(item.value)
212
+ }),
213
+ onClick: function onClick(e) {
214
+ return onChange(e, item);
215
+ }
216
+ }), /*#__PURE__*/React.createElement(Checkbox, {
217
+ value: item.value,
218
+ className: "filter_item-content"
219
+ }, item.label));
220
+ }), !options.length && /*#__PURE__*/React.createElement(FilterEmpty, null)));
221
+ }; // 级联选择器
222
+
223
+
224
+ var CascaderFilter = function CascaderFilter(props) {
225
+ var title = props.title,
226
+ filters = props.filters,
227
+ getFilterValue = props.getFilterValue,
228
+ setFilterValue = props.setFilterValue,
229
+ _props$itemProps = props.itemProps,
230
+ itemProps = _props$itemProps === void 0 ? {} : _props$itemProps,
231
+ isFiltering = props.isFiltering;
232
+
233
+ var _useState5 = useState(false),
234
+ _useState6 = _slicedToArray(_useState5, 2),
235
+ visible = _useState6[0],
236
+ setVisible = _useState6[1];
237
+
238
+ var _useState7 = useState(filters),
239
+ _useState8 = _slicedToArray(_useState7, 2),
240
+ options = _useState8[0],
241
+ setOptions = _useState8[1];
242
+
243
+ var _useState9 = useState('全部'),
244
+ _useState10 = _slicedToArray(_useState9, 2),
245
+ text = _useState10[0],
246
+ setText = _useState10[1];
247
+
248
+ var _useState11 = useState(getFilterValue || itemProps.multiple ? [] : ''),
249
+ _useState12 = _slicedToArray(_useState11, 2),
250
+ checkedValues = _useState12[0],
251
+ setCheckedValues = _useState12[1]; // const isSearch = useMemo(() => filters.length > 8, [filters.length]);
252
+
253
+
254
+ var handleFilter = useEvent(function (val) {
255
+ return setOptions(filters.filter(function (v) {
256
+ return onStringSearch(val, v.label);
257
+ }));
258
+ }); // 重置级联弹框
259
+
260
+ var dropdownRender = function dropdownRender(menus) {
261
+ var inputRef = useRef(null); // 确定
262
+
263
+ var handleSure = function handleSure() {
264
+ setFilterValue(itemProps.multiple ? checkedValues.map(function (v) {
265
+ return v[v.length - 1];
266
+ }) : checkedValues);
267
+ setVisible(false);
268
+ }; // 取消
269
+
270
+
271
+ var handleReset = function handleReset() {
272
+ if (inputRef.current) {
273
+ inputRef.current.input.value = '';
274
+ }
275
+
276
+ setFilterValue(undefined);
277
+ setCheckedValues(itemProps.multiple ? [] : '');
278
+ };
279
+
280
+ return /*#__PURE__*/React.createElement("div", {
281
+ className: "filter_cascader_container filter_dropdown"
282
+ }, /*#__PURE__*/React.createElement("div", {
283
+ className: "filter_header"
284
+ }, /*#__PURE__*/React.createElement(Input.Search, {
285
+ ref: inputRef,
286
+ allowClear: true,
287
+ size: "small",
288
+ placeholder: "\u8BF7\u8F93\u5165",
289
+ onSearch: handleFilter,
290
+ onChange: function onChange(e) {
291
+ return handleFilter(e.target.value);
292
+ }
293
+ })), menus, itemProps.multiple && /*#__PURE__*/React.createElement("div", {
294
+ className: "filter_footer"
295
+ }, /*#__PURE__*/React.createElement("div", {
296
+ className: "footer_clear",
297
+ onClick: handleReset
298
+ }, "\u53D6\u6D88"), /*#__PURE__*/React.createElement(Button, {
299
+ type: "primary",
300
+ size: "small",
301
+ onClick: handleSure
302
+ }, "\u786E\u5B9A")));
303
+ };
304
+
305
+ var onChange = function onChange(item, selectedOptions) {
306
+ if (!item.length) {
307
+ setText('全部');
308
+ setCheckedValues(itemProps.multiple ? [] : '');
309
+ setFilterValue(undefined);
310
+ return;
311
+ }
312
+
313
+ if (itemProps.multiple) {
314
+ var arr = [];
315
+ selectedOptions.map(function (vals) {
316
+ return vals.length > 1 ? arr.push(vals.map(function (v) {
317
+ return v.label;
318
+ }).join('/')) : vals[0].children.map(function (v) {
319
+ return arr.push("".concat(vals[0].label, "/").concat(v.label));
320
+ });
321
+ });
322
+ var showLabel = arr.length < 3 ? arr.join('、') : "".concat(arr[0], "\u3001+").concat(arr.length);
323
+ setText(showLabel);
324
+ setCheckedValues(item);
325
+ } else {
326
+ setText(selectedOptions.map(function (v) {
327
+ return v.label;
328
+ }).join('/'));
329
+ setFilterValue(item);
330
+ setCheckedValues(item);
331
+ }
332
+ };
333
+
334
+ var handleClear = function handleClear(e) {
335
+ if (isFiltering) {
336
+ e.stopPropagation();
337
+ setText('全部');
338
+ setCheckedValues(itemProps.multiple ? [] : '');
339
+ setFilterValue(undefined);
340
+ }
341
+ };
342
+
343
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(_Cascader, Object.assign({}, itemProps, {
344
+ options: options,
345
+ value: checkedValues,
346
+ onChange: onChange,
347
+ open: visible,
348
+ // showCheckedStrategy="Cascader.SHOW_CHILD"
349
+ dropdownRender: dropdownRender,
350
+ onDropdownVisibleChange: function onDropdownVisibleChange(v) {
351
+ return setVisible(v);
352
+ }
353
+ }), /*#__PURE__*/React.createElement("div", {
354
+ className: cn('filter_item', {
355
+ isfiltering: isFiltering || visible,
356
+ active: !isFiltering && visible
357
+ })
358
+ }, /*#__PURE__*/React.createElement("div", {
359
+ className: "filter_item_label"
360
+ }, title, ":"), /*#__PURE__*/React.createElement("div", {
361
+ className: "filter_item_value"
362
+ }, /*#__PURE__*/React.createElement("div", {
363
+ className: "checked"
364
+ }, isFiltering ? text : '全部'), /*#__PURE__*/React.createElement(IconFont, {
365
+ type: isFiltering ? 'lmweb-close-circle-fill' : 'lmweb-down',
366
+ className: "addonAfter",
367
+ onClick: handleClear
368
+ })))));
369
+ };
370
+
371
+ var FilterComp = function FilterComp(props) {
372
+ var type = props.type,
373
+ resetProps = __rest(props, ["type"]);
374
+
375
+ switch (type) {
376
+ case 'select':
377
+ return /*#__PURE__*/React.createElement(SelectFilter, Object.assign({}, resetProps));
378
+
379
+ case 'checkbox':
380
+ return /*#__PURE__*/React.createElement(CheckboxFilter, Object.assign({}, resetProps));
381
+
382
+ case 'cascader':
383
+ return /*#__PURE__*/React.createElement(CascaderFilter, Object.assign({}, resetProps));
384
+
385
+ default:
386
+ return /*#__PURE__*/React.createElement(SelectFilter, Object.assign({}, resetProps));
387
+ }
388
+ };
389
+
390
+ var Index = function Index(props) {
391
+ var className = props.className,
392
+ dropdownClassName = props.dropdownClassName,
393
+ title = props.title,
394
+ type = props.type,
395
+ options = props.options,
396
+ children = props.children,
397
+ style = props.style,
398
+ comProps = props.props;
399
+
400
+ var _useState13 = useState(false),
401
+ _useState14 = _slicedToArray(_useState13, 2),
402
+ visible = _useState14[0],
403
+ setVisible = _useState14[1];
404
+
405
+ var _useState15 = useState(),
406
+ _useState16 = _slicedToArray(_useState15, 2),
407
+ value = _useState16[0],
408
+ setValue = _useState16[1];
409
+
410
+ var data = useMemo(function () {
411
+ if (options) return options;
412
+ return getArray(children).map(function (item) {
413
+ return {
414
+ label: item.props.children,
415
+ value: item.props.value
416
+ };
417
+ });
418
+ }, [options, children]); // 判断是否正在过滤,普通过滤 && 嵌套过滤
419
+
420
+ var isFiltering = useMemo(function () {
421
+ return getIsHas(value);
422
+ }, [value]); // 设置过滤的内容 filterType: 'single' 存在时 单个勾选时触发, 默认按钮触发
423
+
424
+ var setFilterValue = useEvent(function (val) {
425
+ var close = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
426
+
427
+ var _a;
428
+
429
+ setValue(val);
430
+ (_a = props === null || props === void 0 ? void 0 : props.onChange) === null || _a === void 0 ? void 0 : _a.call(props, val);
431
+ close && setVisible(false);
432
+ }); // 展示的内容
433
+
434
+ var checkedValue = useMemo(function () {
435
+ if (!isFiltering) return '全部'; // select & checkbox
436
+
437
+ if (['select', 'checkbox'].includes(type)) {
438
+ var findItem = data.find(function (v) {
439
+ return Array.isArray(value) ? value.includes(v.value) : value === v.value;
440
+ });
441
+
442
+ if (!findItem) {
443
+ setFilterValue(type === 'checkbox' ? [] : '');
444
+ return '全部';
445
+ }
446
+
447
+ var filterLabel = findItem.label;
448
+
449
+ if (Array.isArray(value)) {
450
+ if (value.length > 1) {
451
+ return "".concat(filterLabel, "\u3001+").concat(value.length - 1, "...");
452
+ }
453
+
454
+ return filterLabel;
455
+ }
456
+
457
+ return filterLabel;
458
+ }
459
+
460
+ return value;
461
+ }, [comProps, data, isFiltering, setFilterValue, type, value]); // 下拉组件渲染
462
+
463
+ var FilterControl = function FilterControl() {
464
+ var obj = {
465
+ filters: data,
466
+ getFilterValue: value,
467
+ setFilterValue: setFilterValue
468
+ };
469
+ return render(function () {
470
+ return /*#__PURE__*/React.createElement(FilterComp, Object.assign({
471
+ type: type
472
+ }, obj));
473
+ }());
474
+ }; // 清除筛选项
475
+
476
+
477
+ var handleClear = function handleClear(e) {
478
+ if (isFiltering) {
479
+ e.stopPropagation();
480
+ setFilterValue(type === 'checkbox' ? [] : '');
481
+ }
482
+ };
483
+
484
+ if (['cascader'].includes(type)) {
485
+ return /*#__PURE__*/React.createElement(FilterComp, Object.assign({}, props, {
486
+ itemProps: comProps,
487
+ filters: data,
488
+ isFiltering: isFiltering,
489
+ getFilterValue: value,
490
+ setFilterValue: setFilterValue,
491
+ handleClear: handleClear
492
+ }));
493
+ }
494
+
495
+ return /*#__PURE__*/React.createElement("div", {
496
+ className: cn('lm_select_dropdown_base', className),
497
+ style: style
498
+ }, /*#__PURE__*/React.createElement(Dropdown, {
499
+ trigger: ['click'],
500
+ visible: visible,
501
+ placement: "bottomLeft",
502
+ overlay: FilterControl,
503
+ onVisibleChange: setVisible,
504
+ className: cn(dropdownClassName)
505
+ }, /*#__PURE__*/React.createElement("div", {
506
+ className: cn('filter_item', {
507
+ isfiltering: isFiltering || visible,
508
+ active: !isFiltering && visible
509
+ })
510
+ }, /*#__PURE__*/React.createElement("div", {
511
+ className: "filter_item_label"
512
+ }, title && "".concat(title, ":")), /*#__PURE__*/React.createElement("div", {
513
+ className: "filter_item_value"
514
+ }, /*#__PURE__*/React.createElement("span", {
515
+ className: "checked"
516
+ }, checkedValue), /*#__PURE__*/React.createElement(IconFont, {
517
+ type: isFiltering ? 'lmweb-close-circle-fill' : 'lmweb-down',
518
+ className: "addonAfter",
519
+ onClick: handleClear
520
+ })))));
521
+ };
522
+
523
+ export default Index;
@@ -0,0 +1,11 @@
1
+ import { Select, SelectProps } from 'antd';
2
+ import React from 'react';
3
+ import GhostSelect from './GhostSelect';
4
+ export interface ISelectProps extends SelectProps {
5
+ type?: 'select' | 'checkbox' | 'cascader';
6
+ Option?: typeof Select.Option;
7
+ OptGroup?: typeof Select.OptGroup;
8
+ GhostSelect?: typeof GhostSelect;
9
+ }
10
+ declare const NormalSelect: React.FC<ISelectProps>;
11
+ export default NormalSelect;