@rainbow-oh/yee-c 0.6.1 → 0.6.3
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/Form/demo/layout.js +4 -14
- package/dist/cjs/Form/style/index.less +32 -8
- package/dist/cjs/Grid/item.js +2 -1
- package/dist/cjs/Select/demo/orphan.d.ts +3 -0
- package/dist/cjs/Select/demo/orphan.js +78 -0
- package/dist/cjs/Select/interface.d.ts +11 -0
- package/dist/cjs/Select/select.js +18 -5
- package/dist/cjs/Selector/interface.d.ts +11 -0
- package/dist/cjs/Selector/selector.js +51 -16
- package/dist/cjs/Table/tbody/index.js +2 -2
- package/dist/cjs/Tabs/demo/type.js +23 -1
- package/dist/cjs/Tabs/hooks/useActiveBar.d.ts +2 -1
- package/dist/cjs/Tabs/hooks/useActiveBar.js +7 -3
- package/dist/cjs/Tabs/style/index.less +24 -14
- package/dist/cjs/Tabs/tab-header/index.js +2 -1
- package/dist/cjs/Tabs/tab-header/tab-header-title.js +1 -0
- package/dist/cjs/Tag/style/index.less +9 -9
- package/dist/cjs/style/color.css +1 -0
- package/dist/cjs/style/mobile.css +5 -0
- package/dist/cjs/style/size.css +6 -3
- package/dist/cjs/style/themes.css +1 -1
- package/dist/cjs/style/variables.css +8 -4
- package/dist/cjs/version.d.ts +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/esm/Form/demo/layout.js +10 -10
- package/dist/esm/Form/style/index.less +32 -8
- package/dist/esm/Grid/item.js +2 -1
- package/dist/esm/Select/demo/orphan.d.ts +3 -0
- package/dist/esm/Select/demo/orphan.js +77 -0
- package/dist/esm/Select/interface.d.ts +11 -0
- package/dist/esm/Select/select.js +22 -6
- package/dist/esm/Selector/interface.d.ts +11 -0
- package/dist/esm/Selector/selector.js +34 -10
- package/dist/esm/Table/tbody/index.js +3 -2
- package/dist/esm/Tabs/demo/type.js +15 -4
- package/dist/esm/Tabs/hooks/useActiveBar.d.ts +2 -1
- package/dist/esm/Tabs/hooks/useActiveBar.js +7 -3
- package/dist/esm/Tabs/style/index.less +24 -14
- package/dist/esm/Tabs/tab-header/index.js +2 -1
- package/dist/esm/Tabs/tab-header/tab-header-title.js +1 -0
- package/dist/esm/Tag/style/index.less +9 -9
- package/dist/esm/style/color.css +1 -0
- package/dist/esm/style/mobile.css +5 -0
- package/dist/esm/style/size.css +6 -3
- package/dist/esm/style/themes.css +1 -1
- package/dist/esm/style/variables.css +8 -4
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/umd/yee-c.min.css +2 -2
- package/dist/umd/yee-c.min.js +1 -1
- package/package.json +1 -1
- package/src/Form/demo/layout.tsx +7 -12
- package/src/Form/style/index.less +32 -8
- package/src/Grid/item.tsx +2 -1
- package/src/Select/demo/orphan.tsx +61 -0
- package/src/Select/index.en-US.md +3 -0
- package/src/Select/index.zh-CN.md +3 -0
- package/src/Select/interface.ts +11 -0
- package/src/Select/select.tsx +19 -3
- package/src/Selector/interface.ts +11 -0
- package/src/Selector/selector.tsx +56 -25
- package/src/Table/tbody/index.tsx +5 -3
- package/src/Tabs/demo/type.tsx +21 -2
- package/src/Tabs/hooks/useActiveBar.ts +8 -4
- package/src/Tabs/style/index.less +24 -14
- package/src/Tabs/tab-header/index.tsx +2 -1
- package/src/Tabs/tab-header/tab-header-title.tsx +1 -0
- package/src/Tag/style/index.less +9 -9
- package/src/style/color.css +1 -0
- package/src/style/mobile.css +5 -0
- package/src/style/size.css +6 -3
- package/src/version.ts +1 -1
|
@@ -36,26 +36,16 @@ var import_yee_c = require("../..");
|
|
|
36
36
|
var import_react = __toESM(require("react"));
|
|
37
37
|
var layout_default = () => {
|
|
38
38
|
const [form] = import_yee_c.Form.useForm();
|
|
39
|
+
const [layout, setLayout] = (0, import_react.useState)("vertical");
|
|
39
40
|
return /* @__PURE__ */ import_react.default.createElement("div", null, /* @__PURE__ */ import_react.default.createElement(
|
|
40
41
|
import_yee_c.Radio.Group,
|
|
41
42
|
{
|
|
42
|
-
|
|
43
|
-
onChange: (value) =>
|
|
44
|
-
form.setFieldsValue({ layout: value });
|
|
45
|
-
},
|
|
43
|
+
value: layout,
|
|
44
|
+
onChange: (value) => setLayout(value),
|
|
46
45
|
options: [
|
|
47
46
|
{ value: "vertical", label: "Vertical" },
|
|
48
47
|
{ value: "horizontal", label: "Horizontal" }
|
|
49
48
|
]
|
|
50
49
|
}
|
|
51
|
-
), /* @__PURE__ */ import_react.default.createElement("br", null), /* @__PURE__ */ import_react.default.createElement("br", null), /* @__PURE__ */ import_react.default.createElement(
|
|
52
|
-
import_yee_c.Form,
|
|
53
|
-
{
|
|
54
|
-
form,
|
|
55
|
-
initialValues: { layout: "vertical" },
|
|
56
|
-
layout: "vertical"
|
|
57
|
-
},
|
|
58
|
-
/* @__PURE__ */ import_react.default.createElement(import_yee_c.Grid, { cols: 1 }, /* @__PURE__ */ import_react.default.createElement(import_yee_c.Form.Field, { name: "name", label: "Name", required: true }, /* @__PURE__ */ import_react.default.createElement(import_yee_c.Input, { placeholder: "Please input your name" })), /* @__PURE__ */ import_react.default.createElement(import_yee_c.Form.Field, { name: "email", label: "Email", required: true }, /* @__PURE__ */ import_react.default.createElement(import_yee_c.Input, { placeholder: "Please input your email" })), /* @__PURE__ */ import_react.default.createElement(import_yee_c.Form.Field, { name: "phone", label: "Phone" }, /* @__PURE__ */ import_react.default.createElement(import_yee_c.Input, { placeholder: "Please input your phone" }))),
|
|
59
|
-
/* @__PURE__ */ import_react.default.createElement(import_yee_c.Space, { style: { marginTop: 16 } }, /* @__PURE__ */ import_react.default.createElement(import_yee_c.Button, { type: "primary", htmlType: "submit" }, "Submit"))
|
|
60
|
-
));
|
|
50
|
+
), /* @__PURE__ */ import_react.default.createElement("br", null), /* @__PURE__ */ import_react.default.createElement("br", null), /* @__PURE__ */ import_react.default.createElement(import_yee_c.Form, { form, initialValues: {}, layout }, /* @__PURE__ */ import_react.default.createElement(import_yee_c.Grid, { cols: 2 }, /* @__PURE__ */ import_react.default.createElement(import_yee_c.Form.Field, { name: "name", label: "Name", required: true }, /* @__PURE__ */ import_react.default.createElement(import_yee_c.Input, { placeholder: "Please input your name" })), /* @__PURE__ */ import_react.default.createElement(import_yee_c.Form.Field, { name: "email", label: "Email", required: true }, /* @__PURE__ */ import_react.default.createElement(import_yee_c.Input, { placeholder: "Please input your email" })), /* @__PURE__ */ import_react.default.createElement(import_yee_c.Form.Field, { name: "phone", label: "Phone" }, /* @__PURE__ */ import_react.default.createElement(import_yee_c.Input, { placeholder: "Please input your phone" }))), /* @__PURE__ */ import_react.default.createElement(import_yee_c.Space, { style: { marginTop: 16 } }, /* @__PURE__ */ import_react.default.createElement(import_yee_c.Button, { type: "primary", htmlType: "submit" }, "Submit"))));
|
|
61
51
|
};
|
|
@@ -1,16 +1,40 @@
|
|
|
1
1
|
@pls: .yee-form;
|
|
2
2
|
|
|
3
|
+
// Horizontal form-item layout: label pinned left at a fixed width (right-
|
|
4
|
+
// aligned), control fills the remaining space. Shared by Form-level layout
|
|
5
|
+
// (ancestor .yee-form-horizontal cascades onto every item, including
|
|
6
|
+
// Field.Group) and Field-level layout (the item carries .yee-form-item-
|
|
7
|
+
// horizontal itself). Uses descendant selectors (not &) so the mixin expands
|
|
8
|
+
// correctly under either anchor.
|
|
9
|
+
.horizontal-layout() {
|
|
10
|
+
@{pls}-item-row {
|
|
11
|
+
display: flex;
|
|
12
|
+
align-items: flex-start;
|
|
13
|
+
gap: var(--yee-form-item-horizontal-label-gap, 12px);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
@{pls}-item-label {
|
|
17
|
+
width: var(--yee-form-item-horizontal-label-width, 120px);
|
|
18
|
+
flex-shrink: 0;
|
|
19
|
+
margin-bottom: 0;
|
|
20
|
+
justify-content: flex-end;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
@{pls}-item-control {
|
|
24
|
+
flex: 1;
|
|
25
|
+
min-width: 0;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
3
29
|
@{pls} {
|
|
30
|
+
// Form-level horizontal: cascades onto every descendant item.
|
|
4
31
|
&-horizontal {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
display: flex;
|
|
8
|
-
}
|
|
32
|
+
.horizontal-layout();
|
|
33
|
+
}
|
|
9
34
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
}
|
|
35
|
+
// Field-level horizontal: a single item opts in via layout="horizontal".
|
|
36
|
+
&-item-horizontal {
|
|
37
|
+
.horizontal-layout();
|
|
14
38
|
}
|
|
15
39
|
|
|
16
40
|
&-item {
|
package/dist/cjs/Grid/item.js
CHANGED
|
@@ -60,6 +60,7 @@ __export(item_exports, {
|
|
|
60
60
|
module.exports = __toCommonJS(item_exports);
|
|
61
61
|
var import_clsx = __toESM(require("clsx"));
|
|
62
62
|
var import_react = __toESM(require("react"));
|
|
63
|
+
var import_omit = __toESM(require("../utils/omit"));
|
|
63
64
|
var Item = (props) => {
|
|
64
65
|
const _a = props, {
|
|
65
66
|
prefixCls = "yee-grid",
|
|
@@ -79,7 +80,7 @@ var Item = (props) => {
|
|
|
79
80
|
__spreadValues({
|
|
80
81
|
className: (0, import_clsx.default)(`${prefixCls}-item`, className),
|
|
81
82
|
style: __spreadValues(__spreadValues({}, spanStyle), style)
|
|
82
|
-
}, rest),
|
|
83
|
+
}, (0, import_omit.default)(rest, ["colspan"])),
|
|
83
84
|
children
|
|
84
85
|
);
|
|
85
86
|
};
|
|
@@ -0,0 +1,78 @@
|
|
|
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/orphan.tsx
|
|
30
|
+
var orphan_exports = {};
|
|
31
|
+
__export(orphan_exports, {
|
|
32
|
+
default: () => orphan_default
|
|
33
|
+
});
|
|
34
|
+
module.exports = __toCommonJS(orphan_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
|
+
{ label: "Pineapple", value: "pineapple" }
|
|
42
|
+
];
|
|
43
|
+
var orphanStyle = {
|
|
44
|
+
color: "#fa8c16",
|
|
45
|
+
fontStyle: "italic",
|
|
46
|
+
textDecoration: "underline dotted"
|
|
47
|
+
};
|
|
48
|
+
var orphan_default = () => {
|
|
49
|
+
const [single, setSingle] = (0, import_react.useState)("mangox");
|
|
50
|
+
const [multi, setMulti] = (0, import_react.useState)(["apple", "durian", "banana"]);
|
|
51
|
+
return /* @__PURE__ */ import_react.default.createElement(import_yee_c.Space, { direction: "vertical", style: { width: "100%" } }, /* @__PURE__ */ import_react.default.createElement("div", null, /* @__PURE__ */ import_react.default.createElement("div", { style: { marginBottom: 8 } }, "Single — orphan value styled via ", /* @__PURE__ */ import_react.default.createElement("code", null, "orphanStyle")), /* @__PURE__ */ import_react.default.createElement(
|
|
52
|
+
import_yee_c.Select,
|
|
53
|
+
{
|
|
54
|
+
value: single,
|
|
55
|
+
onChange: (val) => setSingle(val),
|
|
56
|
+
options,
|
|
57
|
+
orphanStyle,
|
|
58
|
+
style: { width: 300 },
|
|
59
|
+
placeholder: "Please select"
|
|
60
|
+
}
|
|
61
|
+
)), /* @__PURE__ */ import_react.default.createElement("div", null, /* @__PURE__ */ import_react.default.createElement("div", { style: { marginBottom: 8 } }, "Multiple — orphan tag styled via ", /* @__PURE__ */ import_react.default.createElement("code", null, "orphanClassName")), /* @__PURE__ */ import_react.default.createElement(
|
|
62
|
+
import_yee_c.Select,
|
|
63
|
+
{
|
|
64
|
+
mode: "multiple",
|
|
65
|
+
value: multi,
|
|
66
|
+
onChange: (val) => setMulti(val),
|
|
67
|
+
options,
|
|
68
|
+
orphanClassName: "demo-orphan-tag",
|
|
69
|
+
style: { width: 300 },
|
|
70
|
+
placeholder: "Please select"
|
|
71
|
+
}
|
|
72
|
+
)), /* @__PURE__ */ import_react.default.createElement("style", null, `
|
|
73
|
+
.demo-orphan-tag {
|
|
74
|
+
color: #fa541c;
|
|
75
|
+
font-style: italic;
|
|
76
|
+
}
|
|
77
|
+
`));
|
|
78
|
+
};
|
|
@@ -87,6 +87,17 @@ export interface SelectProps extends DataAttributeProps, Pick<SelectorProps, 'si
|
|
|
87
87
|
* Property to backfill into the select box
|
|
88
88
|
*/
|
|
89
89
|
optionLabelProp?: 'string' | (() => string);
|
|
90
|
+
/**
|
|
91
|
+
* Extra class name applied to the displayed value when it is not found
|
|
92
|
+
* in `options` (an "orphan" value). An orphan value is shown as the raw
|
|
93
|
+
* value itself; this lets you style it differently (e.g. to flag stale data).
|
|
94
|
+
*/
|
|
95
|
+
orphanClassName?: string;
|
|
96
|
+
/**
|
|
97
|
+
* Extra inline style applied to the displayed value when it is not found
|
|
98
|
+
* in `options` (an "orphan" value).
|
|
99
|
+
*/
|
|
100
|
+
orphanStyle?: React.CSSProperties;
|
|
90
101
|
/**
|
|
91
102
|
* Callback when value changes
|
|
92
103
|
*/
|
|
@@ -86,7 +86,9 @@ var Select = (baseprops) => {
|
|
|
86
86
|
onFilter,
|
|
87
87
|
virtual,
|
|
88
88
|
itemHeight,
|
|
89
|
-
listHeight
|
|
89
|
+
listHeight,
|
|
90
|
+
orphanClassName,
|
|
91
|
+
orphanStyle
|
|
90
92
|
} = _a, rest = __objRest(_a, [
|
|
91
93
|
"prefixCls",
|
|
92
94
|
"options",
|
|
@@ -100,7 +102,9 @@ var Select = (baseprops) => {
|
|
|
100
102
|
"onFilter",
|
|
101
103
|
"virtual",
|
|
102
104
|
"itemHeight",
|
|
103
|
-
"listHeight"
|
|
105
|
+
"listHeight",
|
|
106
|
+
"orphanClassName",
|
|
107
|
+
"orphanStyle"
|
|
104
108
|
]);
|
|
105
109
|
const single = mode !== "multiple" && mode !== "tags" ? true : false;
|
|
106
110
|
const handleState = (value2) => {
|
|
@@ -126,6 +130,7 @@ var Select = (baseprops) => {
|
|
|
126
130
|
(_a2 = virtualApiRef.current) == null ? void 0 : _a2.scrollToIndex(index);
|
|
127
131
|
}, []);
|
|
128
132
|
const getOptions = (keys) => {
|
|
133
|
+
var _a2;
|
|
129
134
|
if (keys === "" || keys === null) {
|
|
130
135
|
return void 0;
|
|
131
136
|
}
|
|
@@ -133,9 +138,15 @@ var Select = (baseprops) => {
|
|
|
133
138
|
if (keys.length === 0) {
|
|
134
139
|
return [];
|
|
135
140
|
}
|
|
136
|
-
return
|
|
141
|
+
return keys.map((key) => {
|
|
142
|
+
const opt = options.find((o) => o.value === key);
|
|
143
|
+
return opt != null ? opt : { value: key, label: String(key) };
|
|
144
|
+
});
|
|
137
145
|
}
|
|
138
|
-
return options.find((opt) => opt.value === keys)
|
|
146
|
+
return (_a2 = options.find((opt) => opt.value === keys)) != null ? _a2 : {
|
|
147
|
+
value: keys,
|
|
148
|
+
label: String(keys)
|
|
149
|
+
};
|
|
139
150
|
};
|
|
140
151
|
const handleSelect = (key, e) => {
|
|
141
152
|
let keys;
|
|
@@ -236,7 +247,9 @@ var Select = (baseprops) => {
|
|
|
236
247
|
onClear: handleClear,
|
|
237
248
|
onRemove: handleRemove,
|
|
238
249
|
onSearch: handleSearch,
|
|
239
|
-
onKeyDown
|
|
250
|
+
onKeyDown,
|
|
251
|
+
orphanClassName,
|
|
252
|
+
orphanStyle
|
|
240
253
|
})
|
|
241
254
|
)
|
|
242
255
|
);
|
|
@@ -78,6 +78,17 @@ export interface PureSelectorProps {
|
|
|
78
78
|
* Custom text displayed in the input
|
|
79
79
|
*/
|
|
80
80
|
optionLabelProp?: string | ((option: TagType) => string);
|
|
81
|
+
/**
|
|
82
|
+
* Extra class name applied to the displayed value/tag when its key is not
|
|
83
|
+
* found in `options` (an "orphan" value). The orphan value is shown as the
|
|
84
|
+
* raw key itself; this lets you style it differently (e.g. to flag stale data).
|
|
85
|
+
*/
|
|
86
|
+
orphanClassName?: string;
|
|
87
|
+
/**
|
|
88
|
+
* Extra inline style applied to the displayed value/tag when its key is not
|
|
89
|
+
* found in `options` (an "orphan" value).
|
|
90
|
+
*/
|
|
91
|
+
orphanStyle?: React.CSSProperties;
|
|
81
92
|
/**
|
|
82
93
|
* Control the open state
|
|
83
94
|
* */
|
|
@@ -98,6 +98,8 @@ var Selector = import_react.default.forwardRef(
|
|
|
98
98
|
disabled,
|
|
99
99
|
options = [],
|
|
100
100
|
selectedKeys,
|
|
101
|
+
orphanClassName,
|
|
102
|
+
orphanStyle,
|
|
101
103
|
allowClear = true,
|
|
102
104
|
placeholder,
|
|
103
105
|
closable = true,
|
|
@@ -121,6 +123,8 @@ var Selector = import_react.default.forwardRef(
|
|
|
121
123
|
"disabled",
|
|
122
124
|
"options",
|
|
123
125
|
"selectedKeys",
|
|
126
|
+
"orphanClassName",
|
|
127
|
+
"orphanStyle",
|
|
124
128
|
"allowClear",
|
|
125
129
|
"placeholder",
|
|
126
130
|
"closable",
|
|
@@ -141,9 +145,24 @@ var Selector = import_react.default.forwardRef(
|
|
|
141
145
|
value
|
|
142
146
|
});
|
|
143
147
|
const tags = (0, import_react.useMemo)(() => {
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
}
|
|
148
|
+
if (!Array.isArray(options)) {
|
|
149
|
+
return [];
|
|
150
|
+
}
|
|
151
|
+
return selectedKeys.map((key) => {
|
|
152
|
+
const opt = options.find((o) => o.value === key);
|
|
153
|
+
if (opt) {
|
|
154
|
+
return __spreadProps(__spreadValues({}, opt), {
|
|
155
|
+
children: typeof optionLabelProp === "function" ? optionLabelProp(opt) : opt[optionLabelProp],
|
|
156
|
+
_orphan: false
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
return {
|
|
160
|
+
value: key,
|
|
161
|
+
label: String(key),
|
|
162
|
+
children: String(key),
|
|
163
|
+
_orphan: true
|
|
164
|
+
};
|
|
165
|
+
});
|
|
147
166
|
}, [options, selectedKeys, optionLabelProp]);
|
|
148
167
|
const handleClick = () => {
|
|
149
168
|
if (inputRef.current && !disabled) {
|
|
@@ -210,22 +229,38 @@ var Selector = import_react.default.forwardRef(
|
|
|
210
229
|
};
|
|
211
230
|
const renderContent = () => {
|
|
212
231
|
if (multi) {
|
|
213
|
-
return tags.map(
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
232
|
+
return tags.map(
|
|
233
|
+
(item, index) => {
|
|
234
|
+
const _a2 = item, { _orphan } = _a2, tagRest = __objRest(_a2, ["_orphan"]);
|
|
235
|
+
const _closable = typeof closable === "function" ? closable(item) : closable;
|
|
236
|
+
return /* @__PURE__ */ import_react.default.createElement(
|
|
237
|
+
import_Tag.default,
|
|
238
|
+
__spreadProps(__spreadValues({}, tagRest), {
|
|
239
|
+
className: _orphan ? orphanClassName : void 0,
|
|
240
|
+
style: _orphan ? orphanStyle : void 0,
|
|
241
|
+
closable: _closable,
|
|
242
|
+
onClose: (e) => handleRemove(item, e),
|
|
243
|
+
key: item.value || index
|
|
244
|
+
})
|
|
245
|
+
);
|
|
246
|
+
}
|
|
247
|
+
);
|
|
224
248
|
}
|
|
225
249
|
const key = selectedKeys.length ? selectedKeys[0] : "";
|
|
226
250
|
const opt = Array.isArray(options) ? options.find((opt2) => opt2.value === key) : null;
|
|
227
|
-
const
|
|
228
|
-
|
|
251
|
+
const isOrphan = !opt && key !== "";
|
|
252
|
+
const label = opt ? typeof optionLabelProp === "function" ? optionLabelProp(opt) : opt[optionLabelProp] : isOrphan ? String(key) : null;
|
|
253
|
+
return /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, renderSearch(), label && /* @__PURE__ */ import_react.default.createElement(
|
|
254
|
+
"div",
|
|
255
|
+
{
|
|
256
|
+
className: (0, import_clsx.default)(
|
|
257
|
+
`${prefixCls}-selection-item`,
|
|
258
|
+
isOrphan && orphanClassName
|
|
259
|
+
),
|
|
260
|
+
style: isOrphan ? orphanStyle : void 0
|
|
261
|
+
},
|
|
262
|
+
label
|
|
263
|
+
));
|
|
229
264
|
};
|
|
230
265
|
const renderSuffix = () => {
|
|
231
266
|
return /* @__PURE__ */ import_react.default.createElement("span", { className: `${prefixCls}-arrow` }, loading ? /* @__PURE__ */ import_react.default.createElement(import_Spin.default, { size: "small" }) : suffix ? typeof suffix === "function" ? suffix() : suffix : /* @__PURE__ */ import_react.default.createElement(import_lucide_react.ChevronDown, { size: 16, strokeWidth: 1.5 }));
|
|
@@ -68,11 +68,11 @@ var import_lazy_row = __toESM(require("./lazy-row"));
|
|
|
68
68
|
var import_row = __toESM(require("./row"));
|
|
69
69
|
var TableBody = (props) => {
|
|
70
70
|
var _b, _c, _d;
|
|
71
|
-
const _a = props, { columns, pageData, lazyLoad } = _a, rest = __objRest(_a, ["columns", "pageData", "lazyLoad"]);
|
|
71
|
+
const _a = props, { columns, pageData, lazyLoad, noData } = _a, rest = __objRest(_a, ["columns", "pageData", "lazyLoad", "noData"]);
|
|
72
72
|
const { prefixCls, components, rowKey } = import_react.default.useContext(import_table.TableCtx);
|
|
73
73
|
const { locale } = (0, import_locale.useLocale)();
|
|
74
74
|
const { table: tableLocale } = locale;
|
|
75
|
-
const empty = /* @__PURE__ */ import_react.default.createElement("tbody", { className: `${prefixCls}-tbody` }, /* @__PURE__ */ import_react.default.createElement("tr", { className: `${prefixCls}-no-record` }, /* @__PURE__ */ import_react.default.createElement("td", { colSpan: 999 }, tableLocale.emptyText)));
|
|
75
|
+
const empty = /* @__PURE__ */ import_react.default.createElement("tbody", { className: `${prefixCls}-tbody` }, /* @__PURE__ */ import_react.default.createElement("tr", { className: `${prefixCls}-no-record` }, /* @__PURE__ */ import_react.default.createElement("td", { colSpan: 999 }, noData != null ? noData : tableLocale.emptyText)));
|
|
76
76
|
const dataLength = pageData.length;
|
|
77
77
|
if (dataLength === 0)
|
|
78
78
|
return empty;
|
|
@@ -52,5 +52,27 @@ var type_default = () => {
|
|
|
52
52
|
children: "Content of Tab Pane 3"
|
|
53
53
|
}
|
|
54
54
|
];
|
|
55
|
-
return /* @__PURE__ */ import_react.default.createElement(
|
|
55
|
+
return /* @__PURE__ */ import_react.default.createElement(
|
|
56
|
+
import_yee_c.Box,
|
|
57
|
+
{
|
|
58
|
+
style: {
|
|
59
|
+
padding: 16,
|
|
60
|
+
backgroundColor: "#efefef"
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
/* @__PURE__ */ import_react.default.createElement(
|
|
64
|
+
import_yee_c.Tabs,
|
|
65
|
+
{
|
|
66
|
+
defaultActiveKey: "1",
|
|
67
|
+
items,
|
|
68
|
+
type: "card",
|
|
69
|
+
styles: {
|
|
70
|
+
content: {
|
|
71
|
+
padding: 24,
|
|
72
|
+
height: 120
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
)
|
|
77
|
+
);
|
|
56
78
|
};
|
|
@@ -4,7 +4,8 @@ interface UseActiveBarOptions {
|
|
|
4
4
|
activeKey: string | number;
|
|
5
5
|
activetab: React.RefObject<HTMLElement | null>;
|
|
6
6
|
activebar: React.RefObject<HTMLDivElement | null>;
|
|
7
|
+
listEle: React.RefObject<HTMLDivElement | null>;
|
|
7
8
|
enabled: boolean;
|
|
8
9
|
}
|
|
9
|
-
export declare function useActiveBar({ direction, activeKey, activetab, activebar, enabled, }: UseActiveBarOptions): () => void;
|
|
10
|
+
export declare function useActiveBar({ direction, activeKey, activetab, activebar, listEle, enabled, }: UseActiveBarOptions): () => void;
|
|
10
11
|
export {};
|
|
@@ -28,22 +28,26 @@ function useActiveBar({
|
|
|
28
28
|
activeKey,
|
|
29
29
|
activetab,
|
|
30
30
|
activebar,
|
|
31
|
+
listEle,
|
|
31
32
|
enabled
|
|
32
33
|
}) {
|
|
33
34
|
const rafIdRef = (0, import_react.useRef)(0);
|
|
34
35
|
const moveActiveBar = (0, import_react.useCallback)(() => {
|
|
35
36
|
const bar = activebar.current;
|
|
36
37
|
const tab = activetab.current;
|
|
37
|
-
|
|
38
|
+
const nav = listEle.current;
|
|
39
|
+
if (!bar || !tab || !enabled || !nav)
|
|
38
40
|
return;
|
|
39
41
|
const rect = tab.getBoundingClientRect();
|
|
42
|
+
const listPaddingLeft = parseFloat(getComputedStyle(nav).paddingLeft) || 0;
|
|
43
|
+
const listPaddingTop = parseFloat(getComputedStyle(nav).paddingTop) || 0;
|
|
40
44
|
const isHorizontal = direction === "horizontal";
|
|
41
45
|
if (isHorizontal) {
|
|
42
46
|
bar.style.width = `${rect.width}px`;
|
|
43
|
-
bar.style.transform = `translateX(${tab.offsetLeft}px)`;
|
|
47
|
+
bar.style.transform = `translateX(${tab.offsetLeft - listPaddingLeft}px)`;
|
|
44
48
|
} else {
|
|
45
49
|
bar.style.height = `${rect.height}px`;
|
|
46
|
-
bar.style.transform = `translateY(${tab.offsetTop}px)`;
|
|
50
|
+
bar.style.transform = `translateY(${tab.offsetTop - listPaddingTop}px)`;
|
|
47
51
|
}
|
|
48
52
|
}, [direction, activetab, activebar, enabled]);
|
|
49
53
|
(0, import_react.useEffect)(() => {
|
|
@@ -51,9 +51,9 @@
|
|
|
51
51
|
padding: var(--yee-tabs-vertical-padding);
|
|
52
52
|
overflow: hidden;
|
|
53
53
|
|
|
54
|
-
@{pls}-nav-
|
|
54
|
+
@{pls}-nav-track {
|
|
55
55
|
height: 100%;
|
|
56
|
-
padding: var(--yee-tabs-vertical-nav-
|
|
56
|
+
padding: var(--yee-tabs-vertical-nav-track-padding);
|
|
57
57
|
overflow-y: auto;
|
|
58
58
|
scrollbar-width: none;
|
|
59
59
|
-ms-overflow-style: none;
|
|
@@ -109,9 +109,9 @@
|
|
|
109
109
|
overflow: hidden;
|
|
110
110
|
transition: transform 3s ease-in-out;
|
|
111
111
|
|
|
112
|
-
&:not(@{pls}-card) {
|
|
113
|
-
|
|
114
|
-
}
|
|
112
|
+
// &:not(@{pls}-card) {
|
|
113
|
+
// background-color: var(--yee-tabs-bg-color);
|
|
114
|
+
// }
|
|
115
115
|
|
|
116
116
|
&@{pls}-nav-wrapper-left,
|
|
117
117
|
&@{pls}-nav-wrapper-right {
|
|
@@ -141,7 +141,7 @@
|
|
|
141
141
|
}
|
|
142
142
|
|
|
143
143
|
&.center {
|
|
144
|
-
@{pls}-nav-
|
|
144
|
+
@{pls}-nav-track {
|
|
145
145
|
justify-content: center;
|
|
146
146
|
}
|
|
147
147
|
}
|
|
@@ -261,7 +261,7 @@
|
|
|
261
261
|
display: none;
|
|
262
262
|
}
|
|
263
263
|
|
|
264
|
-
@{pls}-nav-
|
|
264
|
+
@{pls}-nav-track {
|
|
265
265
|
padding: 0;
|
|
266
266
|
}
|
|
267
267
|
|
|
@@ -276,6 +276,16 @@
|
|
|
276
276
|
background-color: var(--yee-tabs-card-bg-color);
|
|
277
277
|
}
|
|
278
278
|
|
|
279
|
+
&@{pls}-top {
|
|
280
|
+
@{pls}-nav-wrapper {
|
|
281
|
+
border-bottom: none;
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
@{pls}-container {
|
|
286
|
+
background-color: var(--yee-tabs-conatiner-bg-color);
|
|
287
|
+
}
|
|
288
|
+
|
|
279
289
|
&@{pls}-border-card {
|
|
280
290
|
> @{pls}-nav-wrapper {
|
|
281
291
|
bottom: var(--yee-tabs-card-border-bottom);
|
|
@@ -313,7 +323,7 @@
|
|
|
313
323
|
|
|
314
324
|
@{pls}-editable-card,
|
|
315
325
|
@{pls}-card {
|
|
316
|
-
@{pls}-nav-
|
|
326
|
+
@{pls}-nav-track {
|
|
317
327
|
padding: 0;
|
|
318
328
|
}
|
|
319
329
|
|
|
@@ -344,16 +354,16 @@
|
|
|
344
354
|
}
|
|
345
355
|
}
|
|
346
356
|
|
|
347
|
-
@{pls}-nav-
|
|
357
|
+
@{pls}-nav-track {
|
|
348
358
|
position: relative;
|
|
349
359
|
width: 100%;
|
|
350
360
|
overflow: hidden;
|
|
351
361
|
white-space: nowrap;
|
|
352
362
|
|
|
353
|
-
&.is-scroll {
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
}
|
|
363
|
+
// &.is-scroll {
|
|
364
|
+
// width: var(--yee-tabs-nav-track-scroll-width);
|
|
365
|
+
// margin-left: var(--yee-tabs-nav-track-scroll-margin-left);
|
|
366
|
+
// }
|
|
357
367
|
|
|
358
368
|
&::-webkit-scrollbar {
|
|
359
369
|
display: none;
|
|
@@ -513,7 +523,7 @@
|
|
|
513
523
|
}
|
|
514
524
|
}
|
|
515
525
|
|
|
516
|
-
@{pls}-nav-
|
|
526
|
+
@{pls}-nav-track {
|
|
517
527
|
padding: 0;
|
|
518
528
|
}
|
|
519
529
|
}
|
|
@@ -95,6 +95,7 @@ var TabHeader = (props) => {
|
|
|
95
95
|
activeKey,
|
|
96
96
|
activetab,
|
|
97
97
|
activebar,
|
|
98
|
+
listEle: navList,
|
|
98
99
|
enabled: !type
|
|
99
100
|
// Only show active bar for non-card types
|
|
100
101
|
});
|
|
@@ -147,7 +148,7 @@ var TabHeader = (props) => {
|
|
|
147
148
|
return /* @__PURE__ */ import_react.default.createElement("div", { className: cls, style: styles == null ? void 0 : styles.header }, renderPrefixExtra(), /* @__PURE__ */ import_react.default.createElement(TabHeaderCtx.Provider, { value: contextValue }, /* @__PURE__ */ import_react.default.createElement(
|
|
148
149
|
"div",
|
|
149
150
|
{
|
|
150
|
-
className: (0, import_clsx.default)(`${prefixCls}-nav-
|
|
151
|
+
className: (0, import_clsx.default)(`${prefixCls}-nav-track`, classNames == null ? void 0 : classNames.track),
|
|
151
152
|
style: styles == null ? void 0 : styles.track,
|
|
152
153
|
ref: navContainer
|
|
153
154
|
},
|
|
@@ -237,6 +237,7 @@ var TabHeaderTitle = (props) => {
|
|
|
237
237
|
{
|
|
238
238
|
type: "text",
|
|
239
239
|
size: "small",
|
|
240
|
+
className: `${prefixCls}-close`,
|
|
240
241
|
icon: /* @__PURE__ */ import_react.default.createElement(import_lucide_react.X, { size: 14 }),
|
|
241
242
|
onClick: handleEdit,
|
|
242
243
|
"aria-label": `Close ${label}`
|
|
@@ -149,15 +149,6 @@
|
|
|
149
149
|
line-height: var(--yee-tag-large-height);
|
|
150
150
|
}
|
|
151
151
|
|
|
152
|
-
&-close {
|
|
153
|
-
display: inline-flex;
|
|
154
|
-
padding: 0;
|
|
155
|
-
width: 16px;
|
|
156
|
-
height: 16px;
|
|
157
|
-
margin-left: var(--yee-tag-close-margin-left);
|
|
158
|
-
cursor: pointer;
|
|
159
|
-
}
|
|
160
|
-
|
|
161
152
|
&-checkable {
|
|
162
153
|
margin: var(--yee-tag-checkable-margin);
|
|
163
154
|
color: var(--yee-tag-item-not-check-color);
|
|
@@ -177,4 +168,13 @@
|
|
|
177
168
|
background-color: var(--yee-tag-item-check-active-bg-color);
|
|
178
169
|
border-color: var(--yee-tag-item-check-active-border-color);
|
|
179
170
|
}
|
|
171
|
+
|
|
172
|
+
& &-close {
|
|
173
|
+
display: inline-flex;
|
|
174
|
+
padding: 0;
|
|
175
|
+
width: 16px;
|
|
176
|
+
height: 16px;
|
|
177
|
+
margin-left: var(--yee-tag-close-margin-left);
|
|
178
|
+
cursor: pointer;
|
|
179
|
+
}
|
|
180
180
|
}
|
package/dist/cjs/style/color.css
CHANGED
|
@@ -903,6 +903,7 @@
|
|
|
903
903
|
--yee-tabs-card-border-bg-color: var(--yee-color-bg-head);
|
|
904
904
|
--yee-tabs-card-active-bg-color: var(--yee-color-bg-container);
|
|
905
905
|
--yee-tabs-card-bg-color: transparent;
|
|
906
|
+
--yee-tabs-conatiner-bg-color: var(--yee-color-bg-container);
|
|
906
907
|
--yee-tabs-header-custom-btn-text-color: var(--yee-text-color);
|
|
907
908
|
--yee-tabs-header-custom-btn-text-hover-color: var(--yee-primary-color);
|
|
908
909
|
--yee-tabs-header-custom-btn-text-active-color: var(--yee-primary-color);
|
|
@@ -202,6 +202,11 @@
|
|
|
202
202
|
flex-direction: column;
|
|
203
203
|
}
|
|
204
204
|
|
|
205
|
+
/* Field-level horizontal collapses too on narrow screens */
|
|
206
|
+
.yee-form-item-horizontal .yee-form-item-row {
|
|
207
|
+
flex-direction: column;
|
|
208
|
+
}
|
|
209
|
+
|
|
205
210
|
/* ── Table: ensure horizontal scroll ── */
|
|
206
211
|
.yee-table-wrapper {
|
|
207
212
|
-webkit-overflow-scrolling: touch;
|