@rainbow-oh/yee-c 0.8.16 → 0.8.18
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/dist/cjs/Select/demo/loading.d.ts +3 -0
- package/dist/cjs/Select/demo/loading.js +61 -0
- package/dist/cjs/Select/interface.d.ts +6 -1
- package/dist/cjs/Select/select.js +3 -0
- package/dist/cjs/Selector/selector.js +10 -1
- package/dist/cjs/TableSelect/interface.d.ts +5 -0
- package/dist/cjs/TableSelect/table-select.js +3 -0
- package/dist/cjs/Tree/interface.d.ts +16 -0
- package/dist/cjs/Tree/tree-node.js +7 -2
- package/dist/cjs/Tree/tree.d.ts +2 -1
- package/dist/cjs/Tree/tree.js +6 -2
- package/dist/cjs/Tree/utils/tree-tools.d.ts +1 -0
- package/dist/cjs/Tree/utils/tree-tools.js +3 -1
- package/dist/cjs/TreeSelect/interface.d.ts +5 -0
- package/dist/cjs/TreeSelect/tree-select.js +4 -1
- package/dist/cjs/style/themes.css +1 -1
- package/dist/cjs/style/variables.css +1 -1
- package/dist/cjs/version.d.ts +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/esm/Select/demo/loading.d.ts +3 -0
- package/dist/esm/Select/demo/loading.js +32 -0
- package/dist/esm/Select/interface.d.ts +6 -1
- package/dist/esm/Select/select.js +3 -1
- package/dist/esm/Selector/selector.js +5 -1
- package/dist/esm/TableSelect/interface.d.ts +5 -0
- package/dist/esm/TableSelect/table-select.js +3 -1
- package/dist/esm/Tree/interface.d.ts +16 -0
- package/dist/esm/Tree/tree-node.js +12 -2
- package/dist/esm/Tree/tree.d.ts +2 -1
- package/dist/esm/Tree/tree.js +15 -13
- package/dist/esm/Tree/utils/tree-tools.d.ts +1 -0
- package/dist/esm/Tree/utils/tree-tools.js +4 -1
- package/dist/esm/TreeSelect/interface.d.ts +5 -0
- package/dist/esm/TreeSelect/tree-select.js +3 -1
- package/dist/esm/style/themes.css +1 -1
- package/dist/esm/style/variables.css +1 -1
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/umd/yee-c.min.js +1 -1
- package/package.json +1 -1
- package/src/Select/demo/loading.tsx +28 -0
- package/src/Select/index.en-US.md +2 -0
- package/src/Select/index.zh-CN.md +2 -0
- package/src/Select/interface.ts +10 -3
- package/src/Select/select.tsx +2 -0
- package/src/Selector/selector.tsx +10 -1
- package/src/TableSelect/index.en-US.md +1 -0
- package/src/TableSelect/index.zh-CN.md +1 -0
- package/src/TableSelect/interface.ts +5 -0
- package/src/TableSelect/table-select.tsx +2 -0
- package/src/Tree/index.en-US.md +20 -2
- package/src/Tree/index.zh-CN.md +20 -2
- package/src/Tree/interface.ts +16 -1
- package/src/Tree/tree-node.tsx +15 -2
- package/src/Tree/tree.tsx +6 -2
- package/src/Tree/utils/tree-tools.ts +4 -1
- package/src/TreeSelect/index.en-US.md +1 -0
- package/src/TreeSelect/index.zh-CN.md +1 -0
- package/src/TreeSelect/interface.ts +5 -0
- package/src/TreeSelect/tree-select.tsx +2 -0
- package/src/version.ts +1 -1
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
21
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
22
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
23
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
24
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
25
|
+
mod
|
|
26
|
+
));
|
|
27
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
28
|
+
|
|
29
|
+
// src/Select/demo/loading.tsx
|
|
30
|
+
var loading_exports = {};
|
|
31
|
+
__export(loading_exports, {
|
|
32
|
+
default: () => loading_default
|
|
33
|
+
});
|
|
34
|
+
module.exports = __toCommonJS(loading_exports);
|
|
35
|
+
var import_yee_c = require("../..");
|
|
36
|
+
var import_react = __toESM(require("react"));
|
|
37
|
+
var options = [
|
|
38
|
+
{ label: "Apple", value: "apple" },
|
|
39
|
+
{ label: "Banana", value: "banana" },
|
|
40
|
+
{ label: "Orange", value: "orange" }
|
|
41
|
+
];
|
|
42
|
+
var loading_default = () => {
|
|
43
|
+
return /* @__PURE__ */ import_react.default.createElement(import_yee_c.Space, { direction: "vertical" }, /* @__PURE__ */ import_react.default.createElement(
|
|
44
|
+
import_yee_c.Select,
|
|
45
|
+
{
|
|
46
|
+
loading: true,
|
|
47
|
+
options,
|
|
48
|
+
style: { width: 200 },
|
|
49
|
+
placeholder: "Loading"
|
|
50
|
+
}
|
|
51
|
+
), /* @__PURE__ */ import_react.default.createElement(
|
|
52
|
+
import_yee_c.Select,
|
|
53
|
+
{
|
|
54
|
+
loading: true,
|
|
55
|
+
disabled: true,
|
|
56
|
+
defaultValue: "apple",
|
|
57
|
+
options,
|
|
58
|
+
style: { width: 200 }
|
|
59
|
+
}
|
|
60
|
+
));
|
|
61
|
+
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import type { TriggerProps } from '../Trigger';
|
|
3
2
|
import type { SelectorProps } from '../Selector';
|
|
3
|
+
import type { TriggerProps } from '../Trigger';
|
|
4
4
|
import type { DataAttributeProps } from '../utils/types';
|
|
5
5
|
export type Option = {
|
|
6
6
|
/**
|
|
@@ -58,6 +58,11 @@ export interface SelectProps extends DataAttributeProps, Pick<SelectorProps, 'si
|
|
|
58
58
|
* Whether disabled
|
|
59
59
|
*/
|
|
60
60
|
disabled?: boolean;
|
|
61
|
+
/**
|
|
62
|
+
* Whether data is loading
|
|
63
|
+
* @default false
|
|
64
|
+
*/
|
|
65
|
+
loading?: boolean;
|
|
61
66
|
/**
|
|
62
67
|
* Placeholder text for the select box
|
|
63
68
|
*/
|
|
@@ -92,6 +92,7 @@ var Select = (baseprops) => {
|
|
|
92
92
|
defaultValue,
|
|
93
93
|
optionFilterProp = "label",
|
|
94
94
|
disabled,
|
|
95
|
+
loading,
|
|
95
96
|
onChange,
|
|
96
97
|
onFilter,
|
|
97
98
|
virtual,
|
|
@@ -111,6 +112,7 @@ var Select = (baseprops) => {
|
|
|
111
112
|
"defaultValue",
|
|
112
113
|
"optionFilterProp",
|
|
113
114
|
"disabled",
|
|
115
|
+
"loading",
|
|
114
116
|
"onChange",
|
|
115
117
|
"onFilter",
|
|
116
118
|
"virtual",
|
|
@@ -267,6 +269,7 @@ var Select = (baseprops) => {
|
|
|
267
269
|
value: searchValue,
|
|
268
270
|
options,
|
|
269
271
|
disabled,
|
|
272
|
+
loading,
|
|
270
273
|
selectedKeys: mergedValue,
|
|
271
274
|
onOpenChange: handleOpenChange,
|
|
272
275
|
onClear: handleClear,
|
|
@@ -265,7 +265,16 @@ var Selector = import_react.default.forwardRef(
|
|
|
265
265
|
));
|
|
266
266
|
};
|
|
267
267
|
const renderSuffix = () => {
|
|
268
|
-
return /* @__PURE__ */ import_react.default.createElement("span", { className: `${prefixCls}-arrow` }, loading ? /* @__PURE__ */ import_react.default.createElement(
|
|
268
|
+
return /* @__PURE__ */ import_react.default.createElement("span", { className: `${prefixCls}-arrow` }, loading ? /* @__PURE__ */ import_react.default.createElement(
|
|
269
|
+
import_Spin.default,
|
|
270
|
+
{
|
|
271
|
+
variant: "ring",
|
|
272
|
+
size: "small",
|
|
273
|
+
style: {
|
|
274
|
+
"--m-indicator-dot-bg-color": "var(--yee-text-color-secondary)"
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
) : suffix ? typeof suffix === "function" ? suffix() : suffix : /* @__PURE__ */ import_react.default.createElement(import_lucide_react.ChevronDown, { size: 16, strokeWidth: 1.5 }));
|
|
269
278
|
};
|
|
270
279
|
const renderClear = () => {
|
|
271
280
|
if (!allowClear || disabled) {
|
|
@@ -112,6 +112,11 @@ export interface TableSelectProps extends Omit<InternalTableProps, 'value' | 'on
|
|
|
112
112
|
* Whether disabled
|
|
113
113
|
*/
|
|
114
114
|
disabled?: boolean;
|
|
115
|
+
/**
|
|
116
|
+
* Whether data is loading
|
|
117
|
+
* @default false
|
|
118
|
+
*/
|
|
119
|
+
loading?: boolean;
|
|
115
120
|
/**
|
|
116
121
|
* Input direction (for special scenarios)
|
|
117
122
|
*/
|
|
@@ -90,6 +90,7 @@ var TableSelect = (baseprops) => {
|
|
|
90
90
|
defaultValue,
|
|
91
91
|
placement = "bottomLeft",
|
|
92
92
|
disabled,
|
|
93
|
+
loading,
|
|
93
94
|
rowSelection,
|
|
94
95
|
dataSource,
|
|
95
96
|
rowKey = "id",
|
|
@@ -108,6 +109,7 @@ var TableSelect = (baseprops) => {
|
|
|
108
109
|
"defaultValue",
|
|
109
110
|
"placement",
|
|
110
111
|
"disabled",
|
|
112
|
+
"loading",
|
|
111
113
|
"rowSelection",
|
|
112
114
|
"dataSource",
|
|
113
115
|
"rowKey",
|
|
@@ -205,6 +207,7 @@ var TableSelect = (baseprops) => {
|
|
|
205
207
|
options: selectorOptions,
|
|
206
208
|
open,
|
|
207
209
|
disabled,
|
|
210
|
+
loading,
|
|
208
211
|
value: searchValue,
|
|
209
212
|
selectedKeys: mergedValue,
|
|
210
213
|
onSearch: handleSearch,
|
|
@@ -61,6 +61,13 @@ export type TreeNode<T> = {
|
|
|
61
61
|
* All descendant uids (collected bottom-up). Used for check/uncheck propagation.
|
|
62
62
|
*/
|
|
63
63
|
childUids?: Array<string>;
|
|
64
|
+
/**
|
|
65
|
+
* Extra content rendered after the label (e.g. tags, badges, action buttons).
|
|
66
|
+
* Only takes effect when `labelRender` is NOT provided at the Tree level.
|
|
67
|
+
* When `labelRender` is present, access this value via `node.extra` in your
|
|
68
|
+
* custom render function.
|
|
69
|
+
*/
|
|
70
|
+
extra?: React.ReactNode | ((node: T) => React.ReactNode);
|
|
64
71
|
/**
|
|
65
72
|
* Original data
|
|
66
73
|
*/
|
|
@@ -157,6 +164,14 @@ export interface TreeProps<T> extends DataAttributeProps {
|
|
|
157
164
|
* @default false
|
|
158
165
|
*/
|
|
159
166
|
multiple?: boolean;
|
|
167
|
+
/**
|
|
168
|
+
* Custom render function for node label.
|
|
169
|
+
* When provided, takes full control of the label area rendering.
|
|
170
|
+
* The node's `extra` will NOT be appended automatically in this case;
|
|
171
|
+
* access it via `node.extra` if you need it in your custom render.
|
|
172
|
+
* The original `label` string is still used for `title` attribute fallback.
|
|
173
|
+
*/
|
|
174
|
+
labelRender?: (node: TreeNode<T>) => React.ReactNode;
|
|
160
175
|
/**
|
|
161
176
|
* Customize node key, title, children field names
|
|
162
177
|
*/
|
|
@@ -164,6 +179,7 @@ export interface TreeProps<T> extends DataAttributeProps {
|
|
|
164
179
|
key?: keyof T;
|
|
165
180
|
label?: keyof T;
|
|
166
181
|
children?: keyof T;
|
|
182
|
+
extra?: keyof T;
|
|
167
183
|
};
|
|
168
184
|
/**
|
|
169
185
|
* Asynchronous data loading
|
|
@@ -64,6 +64,7 @@ var Node = (props) => {
|
|
|
64
64
|
disabled,
|
|
65
65
|
depth,
|
|
66
66
|
icon,
|
|
67
|
+
extra,
|
|
67
68
|
original,
|
|
68
69
|
lines
|
|
69
70
|
} = node;
|
|
@@ -78,6 +79,7 @@ var Node = (props) => {
|
|
|
78
79
|
indeterminateUids,
|
|
79
80
|
expandedUids,
|
|
80
81
|
switcherIcon,
|
|
82
|
+
labelRender,
|
|
81
83
|
draggable,
|
|
82
84
|
draggingUid,
|
|
83
85
|
dropState,
|
|
@@ -132,6 +134,8 @@ var Node = (props) => {
|
|
|
132
134
|
const _title = title || (typeof label === "string" ? label : void 0);
|
|
133
135
|
const mergedIcon = icon || contextIcon;
|
|
134
136
|
const _icon = typeof mergedIcon === "function" ? mergedIcon(original) : mergedIcon;
|
|
137
|
+
const content = labelRender ? labelRender(node) : label;
|
|
138
|
+
const _extra = !labelRender && extra ? typeof extra === "function" ? extra(original) : extra : null;
|
|
135
139
|
return /* @__PURE__ */ import_react.default.createElement(
|
|
136
140
|
import_Button.default,
|
|
137
141
|
{
|
|
@@ -144,7 +148,8 @@ var Node = (props) => {
|
|
|
144
148
|
icon: showIcon ? _icon : void 0,
|
|
145
149
|
onClick: disabled ? void 0 : () => onSelect(uid)
|
|
146
150
|
},
|
|
147
|
-
|
|
151
|
+
content,
|
|
152
|
+
_extra && /* @__PURE__ */ import_react.default.createElement("span", { className: `${prefixCls}-node-extra` }, _extra)
|
|
148
153
|
);
|
|
149
154
|
};
|
|
150
155
|
const renderEmptyNodes = (depth2) => {
|
|
@@ -166,7 +171,7 @@ var Node = (props) => {
|
|
|
166
171
|
{
|
|
167
172
|
"aria-hidden": "true",
|
|
168
173
|
className: `${prefixCls}-node-indent`,
|
|
169
|
-
key: index
|
|
174
|
+
key: `node-empty-${index}`
|
|
170
175
|
}
|
|
171
176
|
));
|
|
172
177
|
};
|
package/dist/cjs/Tree/tree.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React, { ChangeEvent } from 'react';
|
|
2
|
-
import type { DragPosition, TreeProps } from './interface';
|
|
2
|
+
import type { DragPosition, TreeNode, TreeProps } from './interface';
|
|
3
3
|
import './style/index.less';
|
|
4
4
|
type DropState = {
|
|
5
5
|
uid: string;
|
|
@@ -12,6 +12,7 @@ export declare const TreeContext: React.Context<{
|
|
|
12
12
|
icon?: React.ReactNode | ((props: any) => React.ReactNode);
|
|
13
13
|
showLine?: boolean | undefined;
|
|
14
14
|
switcherIcon?: [React.ReactNode, React.ReactNode] | undefined;
|
|
15
|
+
labelRender?: ((node: TreeNode<any>) => React.ReactNode) | undefined;
|
|
15
16
|
selectedUids: Set<string>;
|
|
16
17
|
checkedUids: Set<string>;
|
|
17
18
|
indeterminateUids: Set<string>;
|
package/dist/cjs/Tree/tree.js
CHANGED
|
@@ -184,6 +184,7 @@ var Tree = (baseprops) => {
|
|
|
184
184
|
onSelect,
|
|
185
185
|
onCheck,
|
|
186
186
|
onExpand,
|
|
187
|
+
labelRender,
|
|
187
188
|
virtual = false,
|
|
188
189
|
height,
|
|
189
190
|
itemHeight = 28
|
|
@@ -212,6 +213,7 @@ var Tree = (baseprops) => {
|
|
|
212
213
|
"onSelect",
|
|
213
214
|
"onCheck",
|
|
214
215
|
"onExpand",
|
|
216
|
+
"labelRender",
|
|
215
217
|
"virtual",
|
|
216
218
|
"height",
|
|
217
219
|
"itemHeight"
|
|
@@ -498,6 +500,7 @@ var Tree = (baseprops) => {
|
|
|
498
500
|
icon,
|
|
499
501
|
showLine,
|
|
500
502
|
switcherIcon,
|
|
503
|
+
labelRender,
|
|
501
504
|
selectedUids: selectedUidSet,
|
|
502
505
|
checkedUids: checkedUidSet,
|
|
503
506
|
indeterminateUids: indeterminateUidSet,
|
|
@@ -520,6 +523,7 @@ var Tree = (baseprops) => {
|
|
|
520
523
|
icon,
|
|
521
524
|
showLine,
|
|
522
525
|
switcherIcon,
|
|
526
|
+
labelRender,
|
|
523
527
|
selectedUidSet,
|
|
524
528
|
checkedUidSet,
|
|
525
529
|
indeterminateUidSet,
|
|
@@ -609,14 +613,14 @@ var Tree = (baseprops) => {
|
|
|
609
613
|
role: "tree",
|
|
610
614
|
onDragEnd: handleDragEnd
|
|
611
615
|
}, dataAttrs),
|
|
612
|
-
/* @__PURE__ */ import_react2.default.createElement(TreeContext.Provider, { value: contextValue }, /* @__PURE__ */ import_react2.default.createElement(import_react.AnimatePresence, { initial: false }, segments.map((segment) => {
|
|
616
|
+
/* @__PURE__ */ import_react2.default.createElement(TreeContext.Provider, { value: contextValue }, /* @__PURE__ */ import_react2.default.createElement(import_react.AnimatePresence, { initial: false }, segments.map((segment, index) => {
|
|
613
617
|
if (segment.type === "node") {
|
|
614
618
|
return /* @__PURE__ */ import_react2.default.createElement(import_tree_node.default, { node: segment.node, key: segment.node.uid });
|
|
615
619
|
}
|
|
616
620
|
return /* @__PURE__ */ import_react2.default.createElement(
|
|
617
621
|
import_react.motion.div,
|
|
618
622
|
{
|
|
619
|
-
key: segment.pUid + "children",
|
|
623
|
+
key: segment.pUid + index + "children",
|
|
620
624
|
initial: { height: 0, opacity: 0 },
|
|
621
625
|
animate: { height: "auto", opacity: 1 },
|
|
622
626
|
exit: { height: 0, opacity: 0 },
|
|
@@ -49,6 +49,7 @@ export declare function tree2array<T extends Record<string, unknown>>(tree: T |
|
|
|
49
49
|
key: keyof T;
|
|
50
50
|
label: keyof T;
|
|
51
51
|
children: keyof T;
|
|
52
|
+
extra?: keyof T;
|
|
52
53
|
}): [TreeNode<T>[], Map<string, TreeNode<T>>];
|
|
53
54
|
/**
|
|
54
55
|
* Check whether array `a` contains every element in `b`.
|
|
@@ -135,7 +135,7 @@ function tree2array(tree, fieldNames) {
|
|
|
135
135
|
const data = Array.isArray(tree) ? tree : [tree];
|
|
136
136
|
const res = [];
|
|
137
137
|
const map = /* @__PURE__ */ new Map();
|
|
138
|
-
const { key, label, children } = fieldNames;
|
|
138
|
+
const { key, label, children, extra } = fieldNames;
|
|
139
139
|
function walk({
|
|
140
140
|
data: node,
|
|
141
141
|
pUid,
|
|
@@ -147,6 +147,7 @@ function tree2array(tree, fieldNames) {
|
|
|
147
147
|
const rawKey = node[key];
|
|
148
148
|
const _label = node[label];
|
|
149
149
|
const _children = node[children];
|
|
150
|
+
const _extra = extra ? node[extra] : node.extra;
|
|
150
151
|
const nextPath = [...path, rawKey];
|
|
151
152
|
const uid = pUid ? `${pUid}\0${String(rawKey)}` : String(rawKey);
|
|
152
153
|
const isParent = Array.isArray(_children) && _children.length > 0;
|
|
@@ -155,6 +156,7 @@ function tree2array(tree, fieldNames) {
|
|
|
155
156
|
key: rawKey,
|
|
156
157
|
label: _label,
|
|
157
158
|
title: node.title,
|
|
159
|
+
extra: _extra,
|
|
158
160
|
path,
|
|
159
161
|
pUid,
|
|
160
162
|
depth,
|
|
@@ -34,6 +34,11 @@ export interface TreeSelectProps<T = any> extends Omit<TreeProps<T>, 'onSelect'
|
|
|
34
34
|
* Whether disabled
|
|
35
35
|
*/
|
|
36
36
|
disabled?: boolean;
|
|
37
|
+
/**
|
|
38
|
+
* Whether data is loading
|
|
39
|
+
* @default false
|
|
40
|
+
*/
|
|
41
|
+
loading?: boolean;
|
|
37
42
|
/**
|
|
38
43
|
* Placeholder text for the select box
|
|
39
44
|
*/
|
|
@@ -89,7 +89,8 @@ var TreeSelect = (baseprops) => {
|
|
|
89
89
|
defaultValue,
|
|
90
90
|
checkable = false,
|
|
91
91
|
multiple = false,
|
|
92
|
-
|
|
92
|
+
loading: loading,
|
|
93
|
+
optionLabelProp = "label",
|
|
93
94
|
onChange,
|
|
94
95
|
onFilter
|
|
95
96
|
} = _a, rest = __objRest(_a, [
|
|
@@ -103,6 +104,7 @@ var TreeSelect = (baseprops) => {
|
|
|
103
104
|
"checkable",
|
|
104
105
|
"multiple",
|
|
105
106
|
// eslint-disable-line @typescript-eslint/no-unused-vars
|
|
107
|
+
"loading",
|
|
106
108
|
"optionLabelProp",
|
|
107
109
|
"onChange",
|
|
108
110
|
"onFilter"
|
|
@@ -267,6 +269,7 @@ var TreeSelect = (baseprops) => {
|
|
|
267
269
|
mode,
|
|
268
270
|
value: searchValue,
|
|
269
271
|
options: selectedOptions,
|
|
272
|
+
loading,
|
|
270
273
|
selectedKeys: mergedValue,
|
|
271
274
|
onOpenChange: handleOpenChange,
|
|
272
275
|
onClear: handleClear,
|
package/dist/cjs/version.d.ts
CHANGED
package/dist/cjs/version.js
CHANGED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Select, Space } from "../..";
|
|
2
|
+
import React from 'react';
|
|
3
|
+
var options = [{
|
|
4
|
+
label: 'Apple',
|
|
5
|
+
value: 'apple'
|
|
6
|
+
}, {
|
|
7
|
+
label: 'Banana',
|
|
8
|
+
value: 'banana'
|
|
9
|
+
}, {
|
|
10
|
+
label: 'Orange',
|
|
11
|
+
value: 'orange'
|
|
12
|
+
}];
|
|
13
|
+
export default (function () {
|
|
14
|
+
return /*#__PURE__*/React.createElement(Space, {
|
|
15
|
+
direction: "vertical"
|
|
16
|
+
}, /*#__PURE__*/React.createElement(Select, {
|
|
17
|
+
loading: true,
|
|
18
|
+
options: options,
|
|
19
|
+
style: {
|
|
20
|
+
width: 200
|
|
21
|
+
},
|
|
22
|
+
placeholder: "Loading"
|
|
23
|
+
}), /*#__PURE__*/React.createElement(Select, {
|
|
24
|
+
loading: true,
|
|
25
|
+
disabled: true,
|
|
26
|
+
defaultValue: "apple",
|
|
27
|
+
options: options,
|
|
28
|
+
style: {
|
|
29
|
+
width: 200
|
|
30
|
+
}
|
|
31
|
+
}));
|
|
32
|
+
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import type { TriggerProps } from '../Trigger';
|
|
3
2
|
import type { SelectorProps } from '../Selector';
|
|
3
|
+
import type { TriggerProps } from '../Trigger';
|
|
4
4
|
import type { DataAttributeProps } from '../utils/types';
|
|
5
5
|
export type Option = {
|
|
6
6
|
/**
|
|
@@ -58,6 +58,11 @@ export interface SelectProps extends DataAttributeProps, Pick<SelectorProps, 'si
|
|
|
58
58
|
* Whether disabled
|
|
59
59
|
*/
|
|
60
60
|
disabled?: boolean;
|
|
61
|
+
/**
|
|
62
|
+
* Whether data is loading
|
|
63
|
+
* @default false
|
|
64
|
+
*/
|
|
65
|
+
loading?: boolean;
|
|
61
66
|
/**
|
|
62
67
|
* Placeholder text for the select box
|
|
63
68
|
*/
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var _excluded = ["prefixCls", "options", "placement", "mode", "value", "defaultValue", "optionFilterProp", "disabled", "onChange", "onFilter", "virtual", "itemHeight", "listHeight", "columns", "popupWidth", "looseMatch", "orphanClassName", "orphanStyle"];
|
|
1
|
+
var _excluded = ["prefixCls", "options", "placement", "mode", "value", "defaultValue", "optionFilterProp", "disabled", "loading", "onChange", "onFilter", "virtual", "itemHeight", "listHeight", "columns", "popupWidth", "looseMatch", "orphanClassName", "orphanStyle"];
|
|
2
2
|
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); }
|
|
3
3
|
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
4
4
|
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."); }
|
|
@@ -56,6 +56,7 @@ var Select = function Select(baseprops) {
|
|
|
56
56
|
_props$optionFilterPr = props.optionFilterProp,
|
|
57
57
|
optionFilterProp = _props$optionFilterPr === void 0 ? 'label' : _props$optionFilterPr,
|
|
58
58
|
disabled = props.disabled,
|
|
59
|
+
loading = props.loading,
|
|
59
60
|
onChange = props.onChange,
|
|
60
61
|
onFilter = props.onFilter,
|
|
61
62
|
virtual = props.virtual,
|
|
@@ -232,6 +233,7 @@ var Select = function Select(baseprops) {
|
|
|
232
233
|
value: searchValue,
|
|
233
234
|
options: options,
|
|
234
235
|
disabled: disabled,
|
|
236
|
+
loading: loading,
|
|
235
237
|
selectedKeys: mergedValue,
|
|
236
238
|
onOpenChange: handleOpenChange,
|
|
237
239
|
onClear: handleClear,
|
|
@@ -177,7 +177,11 @@ var Selector = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
177
177
|
return /*#__PURE__*/React.createElement("span", {
|
|
178
178
|
className: "".concat(prefixCls, "-arrow")
|
|
179
179
|
}, loading ? /*#__PURE__*/React.createElement(Spin, {
|
|
180
|
-
|
|
180
|
+
variant: "ring",
|
|
181
|
+
size: "small",
|
|
182
|
+
style: {
|
|
183
|
+
'--m-indicator-dot-bg-color': 'var(--yee-text-color-secondary)'
|
|
184
|
+
}
|
|
181
185
|
}) : suffix ? typeof suffix === 'function' ? suffix() : suffix : /*#__PURE__*/React.createElement(ChevronDown, {
|
|
182
186
|
size: 16,
|
|
183
187
|
strokeWidth: 1.5
|
|
@@ -112,6 +112,11 @@ export interface TableSelectProps extends Omit<InternalTableProps, 'value' | 'on
|
|
|
112
112
|
* Whether disabled
|
|
113
113
|
*/
|
|
114
114
|
disabled?: boolean;
|
|
115
|
+
/**
|
|
116
|
+
* Whether data is loading
|
|
117
|
+
* @default false
|
|
118
|
+
*/
|
|
119
|
+
loading?: boolean;
|
|
115
120
|
/**
|
|
116
121
|
* Input direction (for special scenarios)
|
|
117
122
|
*/
|
|
@@ -1,5 +1,5 @@
|
|
|
1
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
|
-
var _excluded = ["prefixCls", "value", "defaultValue", "placement", "disabled", "rowSelection", "dataSource", "rowKey", "optionLabelProp", "allowClear", "closable", "searchable", "searchOnInput", "placeholder", "onChange", "onSearch", "onOpenChange"];
|
|
2
|
+
var _excluded = ["prefixCls", "value", "defaultValue", "placement", "disabled", "loading", "rowSelection", "dataSource", "rowKey", "optionLabelProp", "allowClear", "closable", "searchable", "searchOnInput", "placeholder", "onChange", "onSearch", "onOpenChange"];
|
|
3
3
|
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); }
|
|
4
4
|
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; }
|
|
5
5
|
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; }
|
|
@@ -51,6 +51,7 @@ var TableSelect = function TableSelect(baseprops) {
|
|
|
51
51
|
_props$placement = props.placement,
|
|
52
52
|
placement = _props$placement === void 0 ? 'bottomLeft' : _props$placement,
|
|
53
53
|
disabled = props.disabled,
|
|
54
|
+
loading = props.loading,
|
|
54
55
|
rowSelection = props.rowSelection,
|
|
55
56
|
dataSource = props.dataSource,
|
|
56
57
|
_props$rowKey = props.rowKey,
|
|
@@ -152,6 +153,7 @@ var TableSelect = function TableSelect(baseprops) {
|
|
|
152
153
|
options: selectorOptions,
|
|
153
154
|
open: open,
|
|
154
155
|
disabled: disabled,
|
|
156
|
+
loading: loading,
|
|
155
157
|
value: searchValue,
|
|
156
158
|
selectedKeys: mergedValue,
|
|
157
159
|
onSearch: handleSearch,
|
|
@@ -61,6 +61,13 @@ export type TreeNode<T> = {
|
|
|
61
61
|
* All descendant uids (collected bottom-up). Used for check/uncheck propagation.
|
|
62
62
|
*/
|
|
63
63
|
childUids?: Array<string>;
|
|
64
|
+
/**
|
|
65
|
+
* Extra content rendered after the label (e.g. tags, badges, action buttons).
|
|
66
|
+
* Only takes effect when `labelRender` is NOT provided at the Tree level.
|
|
67
|
+
* When `labelRender` is present, access this value via `node.extra` in your
|
|
68
|
+
* custom render function.
|
|
69
|
+
*/
|
|
70
|
+
extra?: React.ReactNode | ((node: T) => React.ReactNode);
|
|
64
71
|
/**
|
|
65
72
|
* Original data
|
|
66
73
|
*/
|
|
@@ -157,6 +164,14 @@ export interface TreeProps<T> extends DataAttributeProps {
|
|
|
157
164
|
* @default false
|
|
158
165
|
*/
|
|
159
166
|
multiple?: boolean;
|
|
167
|
+
/**
|
|
168
|
+
* Custom render function for node label.
|
|
169
|
+
* When provided, takes full control of the label area rendering.
|
|
170
|
+
* The node's `extra` will NOT be appended automatically in this case;
|
|
171
|
+
* access it via `node.extra` if you need it in your custom render.
|
|
172
|
+
* The original `label` string is still used for `title` attribute fallback.
|
|
173
|
+
*/
|
|
174
|
+
labelRender?: (node: TreeNode<T>) => React.ReactNode;
|
|
160
175
|
/**
|
|
161
176
|
* Customize node key, title, children field names
|
|
162
177
|
*/
|
|
@@ -164,6 +179,7 @@ export interface TreeProps<T> extends DataAttributeProps {
|
|
|
164
179
|
key?: keyof T;
|
|
165
180
|
label?: keyof T;
|
|
166
181
|
children?: keyof T;
|
|
182
|
+
extra?: keyof T;
|
|
167
183
|
};
|
|
168
184
|
/**
|
|
169
185
|
* Asynchronous data loading
|
|
@@ -21,6 +21,7 @@ var Node = function Node(props) {
|
|
|
21
21
|
disabled = node.disabled,
|
|
22
22
|
depth = node.depth,
|
|
23
23
|
icon = node.icon,
|
|
24
|
+
extra = node.extra,
|
|
24
25
|
original = node.original,
|
|
25
26
|
lines = node.lines;
|
|
26
27
|
var _useContext = useContext(TreeContext),
|
|
@@ -34,6 +35,7 @@ var Node = function Node(props) {
|
|
|
34
35
|
indeterminateUids = _useContext.indeterminateUids,
|
|
35
36
|
expandedUids = _useContext.expandedUids,
|
|
36
37
|
switcherIcon = _useContext.switcherIcon,
|
|
38
|
+
labelRender = _useContext.labelRender,
|
|
37
39
|
draggable = _useContext.draggable,
|
|
38
40
|
draggingUid = _useContext.draggingUid,
|
|
39
41
|
dropState = _useContext.dropState,
|
|
@@ -86,6 +88,12 @@ var Node = function Node(props) {
|
|
|
86
88
|
var _title = title || (typeof label === 'string' ? label : undefined);
|
|
87
89
|
var mergedIcon = icon || contextIcon;
|
|
88
90
|
var _icon = typeof mergedIcon === 'function' ? mergedIcon(original) : mergedIcon;
|
|
91
|
+
|
|
92
|
+
// labelRender takes full control of the label content when provided
|
|
93
|
+
var content = labelRender ? labelRender(node) : label;
|
|
94
|
+
|
|
95
|
+
// extra: appended after the label content (only when labelRender is NOT used)
|
|
96
|
+
var _extra = !labelRender && extra ? typeof extra === 'function' ? extra(original) : extra : null;
|
|
89
97
|
return /*#__PURE__*/React.createElement(Button, {
|
|
90
98
|
className: clsx("".concat(prefixCls, "-node-label"), _defineProperty({}, "".concat(prefixCls, "-node-label-selected"), selected)),
|
|
91
99
|
size: "small",
|
|
@@ -95,7 +103,9 @@ var Node = function Node(props) {
|
|
|
95
103
|
onClick: disabled ? undefined : function () {
|
|
96
104
|
return onSelect(uid);
|
|
97
105
|
}
|
|
98
|
-
},
|
|
106
|
+
}, content, _extra && /*#__PURE__*/React.createElement("span", {
|
|
107
|
+
className: "".concat(prefixCls, "-node-extra")
|
|
108
|
+
}, _extra));
|
|
99
109
|
};
|
|
100
110
|
var renderEmptyNodes = function renderEmptyNodes(depth) {
|
|
101
111
|
var temp = new Array(depth).fill(0);
|
|
@@ -111,7 +121,7 @@ var Node = function Node(props) {
|
|
|
111
121
|
return /*#__PURE__*/React.createElement("span", {
|
|
112
122
|
"aria-hidden": "true",
|
|
113
123
|
className: "".concat(prefixCls, "-node-indent"),
|
|
114
|
-
key: index
|
|
124
|
+
key: "node-empty-".concat(index)
|
|
115
125
|
});
|
|
116
126
|
});
|
|
117
127
|
};
|
package/dist/esm/Tree/tree.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React, { ChangeEvent } from 'react';
|
|
2
|
-
import type { DragPosition, TreeProps } from './interface';
|
|
2
|
+
import type { DragPosition, TreeNode, TreeProps } from './interface';
|
|
3
3
|
import './style/index.less';
|
|
4
4
|
type DropState = {
|
|
5
5
|
uid: string;
|
|
@@ -12,6 +12,7 @@ export declare const TreeContext: React.Context<{
|
|
|
12
12
|
icon?: React.ReactNode | ((props: any) => React.ReactNode);
|
|
13
13
|
showLine?: boolean | undefined;
|
|
14
14
|
switcherIcon?: [React.ReactNode, React.ReactNode] | undefined;
|
|
15
|
+
labelRender?: ((node: TreeNode<any>) => React.ReactNode) | undefined;
|
|
15
16
|
selectedUids: Set<string>;
|
|
16
17
|
checkedUids: Set<string>;
|
|
17
18
|
indeterminateUids: Set<string>;
|