@lemon-fe/components 1.2.17 → 1.2.18-alpha.0

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.
@@ -0,0 +1,24 @@
1
+ import React from 'react';
2
+ import type { FilterItemType, FilterView } from './typings';
3
+ declare type FieldValue = FilterView<any>['fields'][0];
4
+ export declare type Value = FieldValue & {
5
+ label?: string;
6
+ /**
7
+ * 禁止设置是否可见
8
+ */
9
+ lockVisible?: boolean;
10
+ /**
11
+ * 在设置内是否可见
12
+ */
13
+ hiddenInFields: boolean;
14
+ };
15
+ interface Props {
16
+ originData: FilterItemType<any>[];
17
+ value: Value[];
18
+ onChange: (value: FieldValue[]) => void;
19
+ onSave: () => void;
20
+ classNamePrefix: (value?: string) => string;
21
+ }
22
+ declare function FieldsConfig(props: Props): JSX.Element;
23
+ declare const _default: React.MemoExoticComponent<typeof FieldsConfig>;
24
+ export default _default;
@@ -0,0 +1,261 @@
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
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
18
+ import { Button, Checkbox, Input, message, Popover } from 'antd';
19
+ import React, { memo, useRef, useState } from 'react';
20
+ import Empty from "../empty";
21
+ import Icons from "../icons";
22
+ import { useLocaleReceiver } from "../locale-receiver";
23
+ import { DndContext, DragOverlay, closestCenter, useDraggable, useDroppable } from '@dnd-kit/core';
24
+ import { useDebounce } from '@lemon-fe/hooks';
25
+ import classNames from 'classnames';
26
+ function SortItem(props) {
27
+ var item = props.data,
28
+ index = props.index,
29
+ prefix = props.classNamePrefix,
30
+ dragActive = props.dragActive,
31
+ onHiddenChange = props.onHiddenChange;
32
+ var _useDraggable = useDraggable({
33
+ id: item.key,
34
+ data: {
35
+ index: index,
36
+ data: item
37
+ }
38
+ }),
39
+ attributes = _useDraggable.attributes,
40
+ listeners = _useDraggable.listeners,
41
+ setDragRef = _useDraggable.setNodeRef;
42
+ var _useDroppable = useDroppable({
43
+ id: item.key,
44
+ data: {
45
+ index: index,
46
+ data: item
47
+ }
48
+ }),
49
+ setDropRef = _useDroppable.setNodeRef;
50
+ return /*#__PURE__*/React.createElement("div", {
51
+ key: item.key,
52
+ className: classNames(prefix('item'), dragActive ? prefix("item-active-".concat(dragActive)) : undefined),
53
+ ref: setDropRef
54
+ }, /*#__PURE__*/React.createElement("div", _extends({
55
+ ref: setDragRef
56
+ }, listeners, attributes), /*#__PURE__*/React.createElement(Icons.Drag, null)), /*#__PURE__*/React.createElement(Checkbox, {
57
+ disabled: item.lockVisible,
58
+ checked: !item.hidden,
59
+ onChange: function onChange(e) {
60
+ onHiddenChange(!e.target.checked);
61
+ }
62
+ }), /*#__PURE__*/React.createElement("span", null, item.label));
63
+ }
64
+ function FieldsConfig(props) {
65
+ var prefix = props.classNamePrefix;
66
+ var items = props.value;
67
+ var _useLocaleReceiver = useLocaleReceiver('Filter'),
68
+ _useLocaleReceiver2 = _slicedToArray(_useLocaleReceiver, 1),
69
+ filterLocale = _useLocaleReceiver2[0];
70
+ var _useState = useState(''),
71
+ _useState2 = _slicedToArray(_useState, 2),
72
+ keywords = _useState2[0],
73
+ setKeywords = _useState2[1];
74
+ var _useState3 = useState(''),
75
+ _useState4 = _slicedToArray(_useState3, 2),
76
+ overlay = _useState4[0],
77
+ setOverlay = _useState4[1];
78
+ var _useState5 = useState(),
79
+ _useState6 = _slicedToArray(_useState5, 2),
80
+ dragActive = _useState6[0],
81
+ setDragActive = _useState6[1];
82
+ var _useState7 = useState(false),
83
+ _useState8 = _slicedToArray(_useState7, 2),
84
+ open = _useState8[0],
85
+ setOpen = _useState8[1];
86
+ var prevValue = useRef(props.value);
87
+ var handleChangeKeywords = useDebounce(setKeywords, 300);
88
+ var handleHiddenChange = function handleHiddenChange(index, hidden) {
89
+ var newValue = _toConsumableArray(props.value);
90
+ newValue[index] = _objectSpread(_objectSpread({}, newValue[index]), {}, {
91
+ hidden: hidden
92
+ });
93
+ var visibleCount = newValue.reduce(function (prev, item) {
94
+ return prev + (item.hidden ? 0 : 1);
95
+ }, 0);
96
+ if (visibleCount) {
97
+ props.onChange(newValue);
98
+ } else {
99
+ message.warning(filterLocale.hideOptionKeepOne);
100
+ }
101
+ };
102
+ return /*#__PURE__*/React.createElement(Popover, {
103
+ trigger: "click",
104
+ overlayClassName: prefix('popover'),
105
+ destroyTooltipOnHide: true,
106
+ open: open,
107
+ onOpenChange: function onOpenChange(openStatus) {
108
+ if (openStatus) {
109
+ prevValue.current = props.value;
110
+ }
111
+ setOpen(openStatus);
112
+ },
113
+ content: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
114
+ className: prefix('items-search')
115
+ }, /*#__PURE__*/React.createElement(Input, {
116
+ placeholder: filterLocale.searchOptionText,
117
+ allowClear: true,
118
+ prefix: /*#__PURE__*/React.createElement(Icons.Search, null),
119
+ onChange: function onChange(e) {
120
+ return handleChangeKeywords(e.currentTarget.value);
121
+ }
122
+ })), /*#__PURE__*/React.createElement(DndContext, {
123
+ onDragStart: function onDragStart(e) {
124
+ var _e$active$data$curren;
125
+ setOverlay((_e$active$data$curren = e.active.data.current) === null || _e$active$data$curren === void 0 ? void 0 : _e$active$data$curren.data.label);
126
+ },
127
+ collisionDetection: closestCenter,
128
+ onDragMove: function onDragMove(e) {
129
+ var active = e.active,
130
+ over = e.over;
131
+ var drop;
132
+ if (active.rect.current.translated && over && !over.disabled) {
133
+ var overlayRect = active.rect.current.translated;
134
+ var targetRect = over.rect;
135
+ var overlayCenter = {
136
+ x: overlayRect.left + overlayRect.width / 2,
137
+ y: overlayRect.top + overlayRect.height / 2
138
+ };
139
+ var node = over.data.current;
140
+ var dragIndex = active.data.current.index;
141
+ var targetIndex = node.index;
142
+ if (dragIndex !== targetIndex) {
143
+ var targetCenter = {
144
+ x: targetRect.left + targetRect.width / 2,
145
+ y: targetRect.top + targetRect.height / 2
146
+ };
147
+ if (overlayCenter.y >= targetCenter.y) {
148
+ if (dragIndex >= targetIndex) {
149
+ drop = {
150
+ indicator: 'bottom',
151
+ index: targetIndex + 1,
152
+ node: node
153
+ };
154
+ } else {
155
+ drop = {
156
+ indicator: 'bottom',
157
+ index: targetIndex,
158
+ node: node
159
+ };
160
+ }
161
+ } else {
162
+ if (dragIndex >= targetIndex) {
163
+ drop = {
164
+ indicator: 'top',
165
+ index: targetIndex,
166
+ node: node
167
+ };
168
+ } else {
169
+ drop = {
170
+ indicator: 'top',
171
+ index: targetIndex - 1,
172
+ node: node
173
+ };
174
+ }
175
+ }
176
+ }
177
+ }
178
+ setDragActive(drop);
179
+ },
180
+ onDragEnd: function onDragEnd(e) {
181
+ if (dragActive) {
182
+ var dragIndex = e.active.data.current.index;
183
+ var dropIndex = dragActive.index;
184
+ if (dragIndex !== dropIndex) {
185
+ var newItems = _toConsumableArray(props.value);
186
+ var target = newItems[dragIndex];
187
+ newItems.splice(dragIndex, 1);
188
+ newItems.splice(dropIndex, 0, target);
189
+ props.onChange(newItems);
190
+ }
191
+ }
192
+ setOverlay('');
193
+ setDragActive(undefined);
194
+ },
195
+ onDragCancel: function onDragCancel() {
196
+ setOverlay('');
197
+ setDragActive(undefined);
198
+ }
199
+ }, /*#__PURE__*/React.createElement("div", {
200
+ className: prefix('items')
201
+ }, items.length > 0 ? items.map(function (item, index) {
202
+ var str = keywords.trim();
203
+ if (!item.label || str && !item.label.includes(str) || item.hiddenInFields) {
204
+ return;
205
+ }
206
+ return /*#__PURE__*/React.createElement(SortItem, {
207
+ key: item.key,
208
+ data: item,
209
+ index: index,
210
+ classNamePrefix: prefix,
211
+ onHiddenChange: function onHiddenChange(hidden) {
212
+ handleHiddenChange(index, hidden);
213
+ },
214
+ dragActive: (dragActive === null || dragActive === void 0 ? void 0 : dragActive.node.data.key) === item.key ? dragActive.indicator : undefined
215
+ });
216
+ }) : /*#__PURE__*/React.createElement(Empty, {
217
+ image: Empty.PRESENTED_IMAGE_SIMPLE
218
+ })), /*#__PURE__*/React.createElement(DragOverlay, {
219
+ dropAnimation: null
220
+ }, overlay ? /*#__PURE__*/React.createElement("div", {
221
+ className: prefix('drag-item')
222
+ }, overlay) : null)), /*#__PURE__*/React.createElement("div", {
223
+ className: prefix('popover-footer')
224
+ }, /*#__PURE__*/React.createElement(Button, {
225
+ onClick: function onClick() {
226
+ props.onChange(props.originData.map(function (item) {
227
+ return {
228
+ key: item.key,
229
+ hidden: false
230
+ };
231
+ }));
232
+ },
233
+ size: "small"
234
+ }, filterLocale.resetText), /*#__PURE__*/React.createElement(Button, {
235
+ style: {
236
+ marginLeft: 'auto'
237
+ },
238
+ size: "small",
239
+ onClick: function onClick() {
240
+ props.onChange(prevValue.current);
241
+ setOpen(false);
242
+ }
243
+ }, filterLocale.cancel), /*#__PURE__*/React.createElement(Button, {
244
+ size: "small",
245
+ type: "primary",
246
+ onClick: function onClick() {
247
+ prevValue.current = props.value;
248
+ setOpen(false);
249
+ props.onSave();
250
+ }
251
+ }, filterLocale.save))),
252
+ placement: "bottomRight"
253
+ }, /*#__PURE__*/React.createElement(Button, {
254
+ className: prefix('btn'),
255
+ onClick: function onClick() {
256
+ setKeywords('');
257
+ },
258
+ icon: /*#__PURE__*/React.createElement(Icons.LookUp, null)
259
+ }));
260
+ }
261
+ export default /*#__PURE__*/memo(FieldsConfig);
@@ -1,5 +1,5 @@
1
1
  /// <reference types="react" />
2
- import type { ComponentOption, FilterProps } from './typings';
2
+ import type { ComponentOption, FilterProps } from './typings.d';
3
3
  declare function Filter<T extends Record<string, any> = Record<string, any>>(originalProps: FilterProps<T>): JSX.Element;
4
4
  declare namespace Filter {
5
5
  var setComponents: (items: ComponentOption[]) => void;