@lemon-fe/components 0.1.90 → 0.1.91

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.
@@ -3,5 +3,6 @@ declare function Filter<T extends Record<string, any> = Record<string, any>>(pro
3
3
  declare namespace Filter {
4
4
  var setComponents: (items: ComponentOption[]) => void;
5
5
  var setStorage: <T>(getData: (storageKey: string) => T | Promise<T>, setData: <T_1>(storageKey: string, data: T_1) => void | Promise<void>) => void;
6
+ var defaultProps: Partial<FilterProps<Record<string, any>>>;
6
7
  }
7
8
  export default Filter;
@@ -111,7 +111,9 @@ function Filter(props) {
111
111
  storageKey = props.storageKey,
112
112
  onValuesChange = props.onValuesChange,
113
113
  style = props.style,
114
- simple = props.simple;
114
+ simple = props.simple,
115
+ _props$defaultCollaps = props.defaultCollapsed,
116
+ defaultCollapsed = _props$defaultCollaps === void 0 ? true : _props$defaultCollaps;
115
117
  var prefixCls = "".concat(PREFIX_CLS, "-filter");
116
118
  var defaultValue = useMemo(function () {
117
119
  return defaultValueProp || value;
@@ -172,7 +174,7 @@ function Filter(props) {
172
174
  width = _useState12[0],
173
175
  setWidth = _useState12[1];
174
176
 
175
- var _useState13 = useState(true),
177
+ var _useState13 = useState(defaultCollapsed),
176
178
  _useState14 = _slicedToArray(_useState13, 2),
177
179
  collapsed = _useState14[0],
178
180
  setCollapsed = _useState14[1];
@@ -621,4 +623,5 @@ function Filter(props) {
621
623
 
622
624
  Filter.setComponents = setComponents;
623
625
  Filter.setStorage = setStorage;
626
+ Filter.defaultProps = {};
624
627
  export default Filter;
@@ -20,6 +20,7 @@ export interface FilterProps<T extends Record<string, any> = Record<string, any>
20
20
  defaultActiveKeys?: string[];
21
21
  storageKey?: string;
22
22
  style?: CSSProperties;
23
+ defaultCollapsed?: boolean;
23
24
  /**
24
25
  * @description 是否简化筛选器,简化版不包含标签以及选项保存
25
26
  */
@@ -1,12 +1,17 @@
1
- import type { ReactNode } from 'react';
2
- declare type ContentType = ReactNode | null;
1
+ import type { ReactElement } from 'react';
2
+ declare type ContentType = ReactElement | null;
3
3
  declare function PortalHost(props: {
4
4
  children: ContentType;
5
5
  }): JSX.Element;
6
+ declare function PortalSlot(props: {
7
+ slot: string;
8
+ }): ContentType;
6
9
  declare function Portal(props: {
7
- children?: ContentType;
8
- }): JSX.Element | null;
10
+ children: ContentType;
11
+ slot: string;
12
+ }): null;
9
13
  declare namespace Portal {
10
14
  var Host: typeof PortalHost;
15
+ var Slot: typeof PortalSlot;
11
16
  }
12
17
  export default Portal;
@@ -10,63 +10,132 @@ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Sy
10
10
 
11
11
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
12
12
 
13
- import React from 'react';
14
- import { createContext, memo, useContext, useEffect, useMemo, useState } from 'react';
15
- import { uniqueId } from 'lodash';
13
+ import React, { createContext, memo, useContext, useEffect, useMemo, useState } from 'react';
16
14
  var Slot = /*#__PURE__*/memo(function Content(props) {
17
- return /*#__PURE__*/React.createElement(React.Fragment, null, props.children);
15
+ return props.children;
18
16
  });
19
- var Context = /*#__PURE__*/createContext(null);
17
+ var Context = /*#__PURE__*/createContext({
18
+ set: function set() {},
19
+ delete: function _delete() {},
20
+ observable: {
21
+ subscribe: function subscribe() {
22
+ return {
23
+ unsubscribe: function unsubscribe() {}
24
+ };
25
+ },
26
+ get: function get() {
27
+ return new Map();
28
+ }
29
+ }
30
+ });
31
+
32
+ function Subject(initialData) {
33
+ var observers = [];
34
+ var data = initialData;
35
+ return {
36
+ get: function get() {
37
+ return data;
38
+ },
39
+ next: function next(state) {
40
+ data = state;
41
+ observers.forEach(function (item) {
42
+ return item.next(state);
43
+ });
44
+ },
45
+ subscribe: function subscribe(observer) {
46
+ observers.push(observer);
47
+ return {
48
+ unsubscribe: function unsubscribe() {
49
+ var index = observers.findIndex(function (item) {
50
+ return item === observer;
51
+ });
52
+
53
+ if (index >= 0) {
54
+ observers.splice(index, 1);
55
+ }
56
+ }
57
+ };
58
+ }
59
+ };
60
+ }
20
61
 
21
62
  function PortalHost(props) {
22
63
  var children = props.children;
23
64
 
24
- var _useState = useState(null),
65
+ var _useState = useState(new Map()),
25
66
  _useState2 = _slicedToArray(_useState, 2),
26
- content = _useState2[0],
27
- setContent = _useState2[1];
67
+ nodes = _useState2[0],
68
+ setNodes = _useState2[1];
28
69
 
70
+ var observable = useMemo(function () {
71
+ return Subject(nodes);
72
+ }, []);
29
73
  var portal = useMemo(function () {
30
74
  return {
31
- add: function add(key, node) {
32
- setContent({
33
- key: key,
34
- node: node
75
+ set: function set(key, node) {
76
+ setNodes(function (prev) {
77
+ var next = new Map(prev);
78
+ next.set(key, node);
79
+ return next;
35
80
  });
36
81
  },
37
- clear: function clear(key) {
38
- setContent(function (prev) {
39
- if ((prev === null || prev === void 0 ? void 0 : prev.key) === key) {
40
- return null;
41
- }
42
-
43
- return prev;
82
+ delete: function _delete(key) {
83
+ setNodes(function (prev) {
84
+ var next = new Map(prev);
85
+ next.delete(key);
86
+ return next;
44
87
  });
45
- }
88
+ },
89
+ observable: observable
46
90
  };
47
91
  }, []);
92
+ useEffect(function () {
93
+ observable.next(nodes);
94
+ }, [nodes]);
48
95
  return /*#__PURE__*/React.createElement(Context.Provider, {
49
96
  value: portal
50
- }, /*#__PURE__*/React.createElement(Slot, null, content ? content.node : null), /*#__PURE__*/React.createElement(Slot, null, children));
97
+ }, /*#__PURE__*/React.createElement(Slot, null, children));
98
+ }
99
+
100
+ function PortalSlot(props) {
101
+ var slot = props.slot;
102
+
103
+ var _useContext = useContext(Context),
104
+ observable = _useContext.observable;
105
+
106
+ var _useState3 = useState(observable.get().get(slot) || null),
107
+ _useState4 = _slicedToArray(_useState3, 2),
108
+ node = _useState4[0],
109
+ setNode = _useState4[1];
110
+
111
+ useEffect(function () {
112
+ var _observable$subscribe = observable.subscribe({
113
+ next: function next(state) {
114
+ setNode(state.get(slot) || null);
115
+ }
116
+ }),
117
+ unsubscribe = _observable$subscribe.unsubscribe;
118
+
119
+ return unsubscribe;
120
+ }, [slot]);
121
+ return node;
51
122
  }
52
123
 
53
124
  function Portal(props) {
54
- var _props$children = props.children,
55
- children = _props$children === void 0 ? null : _props$children;
125
+ var slot = props.slot,
126
+ children = props.children;
56
127
  var portal = useContext(Context);
57
- var key = useMemo(function () {
58
- return uniqueId('portal-');
59
- }, []);
60
128
  useEffect(function () {
61
- if (portal !== null) {
62
- portal.add(key, children);
63
- return function () {
64
- portal.clear(key);
65
- };
66
- }
67
- }, [portal, key, children]);
68
- return portal ? null : /*#__PURE__*/React.createElement(React.Fragment, null, children);
129
+ return function () {
130
+ portal.delete(slot);
131
+ };
132
+ }, [slot]);
133
+ useEffect(function () {
134
+ portal.set(slot, children);
135
+ }, [slot, children]);
136
+ return null;
69
137
  }
70
138
 
71
139
  Portal.Host = PortalHost;
140
+ Portal.Slot = PortalSlot;
72
141
  export default Portal;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lemon-fe/components",
3
- "version": "0.1.90",
3
+ "version": "0.1.91",
4
4
  "description": "> TODO: description",
5
5
  "author": "鲁盛杰 <lusj@cnlemon.net>",
6
6
  "homepage": "",
@@ -39,5 +39,5 @@
39
39
  "react": "^17.0.2",
40
40
  "react-dom": "^17.0.2"
41
41
  },
42
- "gitHead": "a663b35b1cddf3fde745eaa0750d98758c08bd64"
42
+ "gitHead": "407f33c49a0de8ae9b3fc07002ee9eace8dbd179"
43
43
  }