@rainbow-oh/yee-c 0.4.3 → 0.4.4

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 (96) hide show
  1. package/dist/cjs/Cascader/cascader.js +53 -62
  2. package/dist/cjs/Cascader/interface.d.ts +19 -2
  3. package/dist/cjs/Cascader/node.js +11 -6
  4. package/dist/cjs/Cascader/search-list.js +2 -1
  5. package/dist/cjs/Cascader/utils/index.d.ts +58 -14
  6. package/dist/cjs/Cascader/utils/index.js +57 -73
  7. package/dist/cjs/Input/style/index.less +19 -0
  8. package/dist/cjs/Popover/style/index.less +1 -0
  9. package/dist/cjs/Select/interface.d.ts +77 -0
  10. package/dist/cjs/Select/option.d.ts +2 -1
  11. package/dist/cjs/Select/option.js +6 -3
  12. package/dist/cjs/Select/options.d.ts +3 -2
  13. package/dist/cjs/Select/options.js +53 -47
  14. package/dist/cjs/Select/select.js +1 -1
  15. package/dist/cjs/Select/style/index.less +8 -0
  16. package/dist/cjs/Selector/interface.d.ts +4 -0
  17. package/dist/cjs/Selector/selector.js +3 -0
  18. package/dist/cjs/Selector/style/index.less +135 -116
  19. package/dist/cjs/Table/hooks/useFilter.js +1 -1
  20. package/dist/cjs/Table/interface.d.ts +4 -0
  21. package/dist/cjs/Table/style/index.less +2 -0
  22. package/dist/cjs/Table/theader/filter.js +2 -1
  23. package/dist/cjs/Tabs/demo/basic.js +8 -1
  24. package/dist/cjs/Tabs/tabs.js +3 -1
  25. package/dist/cjs/Tag/demo/checkable.js +1 -0
  26. package/dist/cjs/Tag/tag.js +1 -1
  27. package/dist/cjs/Trigger/trigger.js +1 -1
  28. package/dist/cjs/style/color.css +1 -1
  29. package/dist/cjs/style/size.css +10 -2
  30. package/dist/cjs/style/themes.css +1 -1
  31. package/dist/cjs/style/variables.css +12 -4
  32. package/dist/cjs/version.d.ts +1 -1
  33. package/dist/cjs/version.js +1 -1
  34. package/dist/esm/Cascader/cascader.js +49 -56
  35. package/dist/esm/Cascader/interface.d.ts +19 -2
  36. package/dist/esm/Cascader/node.js +8 -11
  37. package/dist/esm/Cascader/search-list.js +2 -1
  38. package/dist/esm/Cascader/utils/index.d.ts +58 -14
  39. package/dist/esm/Cascader/utils/index.js +124 -75
  40. package/dist/esm/Input/style/index.less +19 -0
  41. package/dist/esm/Popover/style/index.less +1 -0
  42. package/dist/esm/Select/interface.d.ts +77 -0
  43. package/dist/esm/Select/option.d.ts +2 -1
  44. package/dist/esm/Select/option.js +11 -2
  45. package/dist/esm/Select/options.d.ts +3 -2
  46. package/dist/esm/Select/options.js +3 -1
  47. package/dist/esm/Select/select.js +1 -3
  48. package/dist/esm/Select/style/index.less +8 -0
  49. package/dist/esm/Selector/interface.d.ts +4 -0
  50. package/dist/esm/Selector/selector.js +4 -2
  51. package/dist/esm/Selector/style/index.less +135 -116
  52. package/dist/esm/Table/hooks/useFilter.js +1 -1
  53. package/dist/esm/Table/interface.d.ts +4 -0
  54. package/dist/esm/Table/style/index.less +2 -0
  55. package/dist/esm/Table/theader/filter.js +3 -4
  56. package/dist/esm/Tabs/demo/basic.js +4 -1
  57. package/dist/esm/Tabs/tabs.js +3 -1
  58. package/dist/esm/Tag/demo/checkable.js +1 -0
  59. package/dist/esm/Tag/tag.js +1 -1
  60. package/dist/esm/Trigger/trigger.js +1 -1
  61. package/dist/esm/style/color.css +1 -1
  62. package/dist/esm/style/size.css +10 -2
  63. package/dist/esm/style/themes.css +1 -1
  64. package/dist/esm/style/variables.css +12 -4
  65. package/dist/esm/version.d.ts +1 -1
  66. package/dist/esm/version.js +1 -1
  67. package/dist/umd/yee-c.min.css +2 -2
  68. package/dist/umd/yee-c.min.js +1 -1
  69. package/package.json +1 -1
  70. package/src/Cascader/cascader.tsx +65 -62
  71. package/src/Cascader/interface.ts +19 -2
  72. package/src/Cascader/node.tsx +12 -7
  73. package/src/Cascader/search-list.tsx +1 -1
  74. package/src/Cascader/utils/index.ts +130 -68
  75. package/src/Input/style/index.less +19 -0
  76. package/src/Popover/style/index.less +1 -0
  77. package/src/Select/interface.ts +87 -0
  78. package/src/Select/option.tsx +13 -4
  79. package/src/Select/options.tsx +49 -43
  80. package/src/Select/select.tsx +5 -2
  81. package/src/Select/style/index.less +8 -0
  82. package/src/Selector/interface.ts +4 -0
  83. package/src/Selector/selector.tsx +2 -0
  84. package/src/Selector/style/index.less +135 -116
  85. package/src/Table/hooks/useFilter.ts +1 -1
  86. package/src/Table/interface.ts +4 -0
  87. package/src/Table/style/index.less +2 -0
  88. package/src/Table/theader/filter.tsx +2 -2
  89. package/src/Tabs/demo/basic.tsx +7 -1
  90. package/src/Tabs/tabs.tsx +3 -2
  91. package/src/Tag/demo/checkable.tsx +1 -0
  92. package/src/Tag/tag.tsx +1 -1
  93. package/src/Trigger/trigger.tsx +1 -1
  94. package/src/style/color.css +1 -1
  95. package/src/style/size.css +10 -2
  96. package/src/version.ts +1 -1
@@ -95,3 +95,80 @@ export interface SelectProps extends DataAttributeProps {
95
95
  */
96
96
  onFilter?: (value: string, options: Array<Option>) => Array<Option>;
97
97
  }
98
+ /**
99
+ * Props for the internal Option component (renders a single dropdown option).
100
+ */
101
+ export interface OptionProps {
102
+ /**
103
+ * Display label
104
+ */
105
+ label: string;
106
+ /**
107
+ * Value
108
+ */
109
+ value: string | number;
110
+ /**
111
+ * Whether disabled
112
+ */
113
+ disabled?: boolean;
114
+ /**
115
+ * Native title attribute
116
+ */
117
+ title?: string;
118
+ /**
119
+ * Test id forwarded to the option element
120
+ */
121
+ dataTestId?: string;
122
+ }
123
+ /**
124
+ * Context value shared between Options and each Option.
125
+ */
126
+ export interface OptionsContextValue {
127
+ prefixCls: string;
128
+ selectedKeys: Array<string | number>;
129
+ focusedKey: string | number;
130
+ multiple: boolean;
131
+ onSelect: (key: string | number, e?: React.MouseEvent | React.KeyboardEvent) => void;
132
+ }
133
+ /**
134
+ * Props for the internal Options (popup list) component.
135
+ */
136
+ export interface OptionsProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onSelect'> {
137
+ /**
138
+ * Custom class name prefix
139
+ */
140
+ prefixCls: string;
141
+ /**
142
+ * Dropdown options
143
+ */
144
+ options: Array<Option>;
145
+ /**
146
+ * Popup container class name
147
+ */
148
+ popupClassName?: string;
149
+ /**
150
+ * Popup container inline style
151
+ */
152
+ popupStyle?: React.CSSProperties;
153
+ /**
154
+ * Selected option values
155
+ */
156
+ selectedKeys: Array<string | number>;
157
+ /**
158
+ * Currently focused option value
159
+ */
160
+ focusedKey: string | number;
161
+ /**
162
+ * Test id prefix used to generate each option's test id.
163
+ * Accepts any `data-*` attribute value (see DataAttributeProps).
164
+ */
165
+ dataTestId?: string | number | boolean;
166
+ /**
167
+ * Whether multiple selection mode is active
168
+ */
169
+ multiple: boolean;
170
+ /**
171
+ * Callback when an option is selected
172
+ */
173
+ onSelect: (key: string | number, e?: React.MouseEvent | React.KeyboardEvent) => void;
174
+ }
@@ -1,3 +1,4 @@
1
1
  import React from 'react';
2
- declare const Option: (props: any) => React.JSX.Element;
2
+ import type { OptionProps } from './interface';
3
+ declare const Option: (props: OptionProps) => React.JSX.Element;
3
4
  export default Option;
@@ -33,22 +33,24 @@ __export(option_exports, {
33
33
  });
34
34
  module.exports = __toCommonJS(option_exports);
35
35
  var import_clsx = __toESM(require("clsx"));
36
+ var import_lucide_react = require("lucide-react");
36
37
  var import_react = __toESM(require("react"));
37
38
  var import_options = require("./options");
38
39
  var Option = (props) => {
39
40
  const { label, value, disabled, title, dataTestId } = props;
40
- const { prefixCls, selectedKeys, focusedKey, onSelect } = (0, import_react.useContext)(import_options.OptionsCtx);
41
+ const { prefixCls, selectedKeys, focusedKey, multiple, onSelect } = (0, import_react.useContext)(import_options.OptionsCtx);
41
42
  const handleClick = (e) => {
42
43
  if (!disabled) {
43
44
  onSelect(value, e);
44
45
  }
45
46
  };
46
47
  const htmlTitle = title ? title : typeof label === "string" ? label : void 0;
48
+ const selected = selectedKeys.includes(value);
47
49
  return /* @__PURE__ */ import_react.default.createElement(
48
50
  "div",
49
51
  {
50
52
  className: (0, import_clsx.default)(`${prefixCls}-option`, {
51
- [`${prefixCls}-option-selected`]: selectedKeys.includes(value),
53
+ [`${prefixCls}-option-selected`]: selected,
52
54
  [`${prefixCls}-option-focused`]: focusedKey === value,
53
55
  [`${prefixCls}-option-disabled`]: disabled
54
56
  }),
@@ -64,7 +66,8 @@ var Option = (props) => {
64
66
  title: htmlTitle,
65
67
  "data-testid": dataTestId
66
68
  },
67
- label
69
+ /* @__PURE__ */ import_react.default.createElement("div", { className: `${prefixCls}-option-content` }, label),
70
+ multiple && selected && /* @__PURE__ */ import_react.default.createElement("span", { className: `${prefixCls}-option-state` }, /* @__PURE__ */ import_react.default.createElement(import_lucide_react.Check, { size: 16 }))
68
71
  );
69
72
  };
70
73
  var option_default = Option;
@@ -1,4 +1,5 @@
1
1
  import React from 'react';
2
- export declare const OptionsCtx: React.Context<any>;
3
- declare const Options: React.ForwardRefExoticComponent<Omit<any, "ref"> & React.RefAttributes<HTMLDivElement>>;
2
+ import type { OptionsContextValue, OptionsProps } from './interface';
3
+ export declare const OptionsCtx: React.Context<OptionsContextValue>;
4
+ declare const Options: React.ForwardRefExoticComponent<OptionsProps & React.RefAttributes<HTMLDivElement>>;
4
5
  export default Options;
@@ -66,51 +66,57 @@ var import_clsx = __toESM(require("clsx"));
66
66
  var import_react = __toESM(require("react"));
67
67
  var import_locale = require("../locale");
68
68
  var import_option = __toESM(require("./option"));
69
- var OptionsCtx = (0, import_react.createContext)({});
70
- var Options = (0, import_react.forwardRef)((props, ref) => {
71
- const { locale } = (0, import_locale.useLocale)();
72
- const { select } = locale;
73
- const _a = props, {
74
- prefixCls,
75
- options,
76
- popupClassName,
77
- popupStyle,
78
- selectedKeys,
79
- focusedKey,
80
- dataTestId,
81
- onSelect
82
- } = _a, rest = __objRest(_a, [
83
- "prefixCls",
84
- "options",
85
- "popupClassName",
86
- "popupStyle",
87
- "selectedKeys",
88
- "focusedKey",
89
- "dataTestId",
90
- "onSelect"
91
- ]);
92
- const componentRef = ref || (0, import_react.useRef)(null);
93
- return /* @__PURE__ */ import_react.default.createElement(
94
- "div",
95
- __spreadProps(__spreadValues({}, rest), {
96
- className: (0, import_clsx.default)(`${prefixCls}-popup`, popupClassName),
97
- style: popupStyle,
98
- ref: componentRef,
99
- tabIndex: -1
100
- }),
101
- options.length === 0 ? /* @__PURE__ */ import_react.default.createElement("div", { className: `${prefixCls}-empty` }, select.noData) : /* @__PURE__ */ import_react.default.createElement(
102
- OptionsCtx.Provider,
103
- {
104
- value: { prefixCls, selectedKeys, focusedKey, onSelect }
105
- },
106
- options.map((option, index) => /* @__PURE__ */ import_react.default.createElement(
107
- import_option.default,
108
- __spreadProps(__spreadValues({}, option), {
109
- key: option.value,
110
- dataTestId: `${dataTestId}-${index}`
111
- })
112
- ))
113
- )
114
- );
115
- });
69
+ var OptionsCtx = (0, import_react.createContext)(
70
+ {}
71
+ );
72
+ var Options = (0, import_react.forwardRef)(
73
+ (props, ref) => {
74
+ const { locale } = (0, import_locale.useLocale)();
75
+ const { select } = locale;
76
+ const _a = props, {
77
+ prefixCls,
78
+ options,
79
+ popupClassName,
80
+ popupStyle,
81
+ selectedKeys,
82
+ focusedKey,
83
+ dataTestId,
84
+ multiple,
85
+ onSelect
86
+ } = _a, rest = __objRest(_a, [
87
+ "prefixCls",
88
+ "options",
89
+ "popupClassName",
90
+ "popupStyle",
91
+ "selectedKeys",
92
+ "focusedKey",
93
+ "dataTestId",
94
+ "multiple",
95
+ "onSelect"
96
+ ]);
97
+ const componentRef = ref || (0, import_react.useRef)(null);
98
+ return /* @__PURE__ */ import_react.default.createElement(
99
+ "div",
100
+ __spreadProps(__spreadValues({}, rest), {
101
+ className: (0, import_clsx.default)(`${prefixCls}-popup`, popupClassName),
102
+ style: popupStyle,
103
+ ref: componentRef,
104
+ tabIndex: -1
105
+ }),
106
+ options.length === 0 ? /* @__PURE__ */ import_react.default.createElement("div", { className: `${prefixCls}-empty` }, select.noData) : /* @__PURE__ */ import_react.default.createElement(
107
+ OptionsCtx.Provider,
108
+ {
109
+ value: { prefixCls, selectedKeys, focusedKey, multiple, onSelect }
110
+ },
111
+ options.map((option, index) => /* @__PURE__ */ import_react.default.createElement(
112
+ import_option.default,
113
+ __spreadProps(__spreadValues({}, option), {
114
+ key: option.value,
115
+ dataTestId: `${dataTestId}-${index}`
116
+ })
117
+ ))
118
+ )
119
+ );
120
+ }
121
+ );
116
122
  var options_default = Options;
@@ -190,12 +190,12 @@ var Select = (baseprops) => {
190
190
  import_options.default,
191
191
  {
192
192
  prefixCls,
193
+ multiple: mode === "multiple" || mode === "tags",
193
194
  options: filteredOpts,
194
195
  focusedKey,
195
196
  selectedKeys: mergedValue,
196
197
  dataTestId: rest["data-testid"],
197
198
  onSelect: handleSelect,
198
- onClose: () => setOpen(false),
199
199
  ref: popupRef
200
200
  }
201
201
  );
@@ -9,12 +9,20 @@
9
9
  }
10
10
 
11
11
  &-option {
12
+ display: flex;
12
13
  padding: var(--yee-select-option-padding);
13
14
  overflow: hidden;
14
15
  white-space: nowrap;
15
16
  text-overflow: ellipsis;
16
17
  cursor: pointer;
17
18
 
19
+ &-content {
20
+ flex: 1;
21
+ overflow: hidden;
22
+ white-space: nowrap;
23
+ text-overflow: ellipsis;
24
+ }
25
+
18
26
  &:not(&-disabled):hover {
19
27
  background-color: var(--yee-select-option-hover-bg-color);
20
28
  }
@@ -38,6 +38,10 @@ export interface PureSelectorProps {
38
38
  * In multiple or tags mode, the maximum number of selectable items
39
39
  */
40
40
  maxCount?: number;
41
+ /**
42
+ * size
43
+ * */
44
+ size?: 'small' | 'default' | 'large';
41
45
  /**
42
46
  * Selection mode
43
47
  */
@@ -105,6 +105,7 @@ var Selector = import_react.default.forwardRef(
105
105
  value,
106
106
  open,
107
107
  loading,
108
+ size = "default",
108
109
  onSearch,
109
110
  onRemove,
110
111
  onClear,
@@ -127,6 +128,7 @@ var Selector = import_react.default.forwardRef(
127
128
  "value",
128
129
  "open",
129
130
  "loading",
131
+ "size",
130
132
  "onSearch",
131
133
  "onRemove",
132
134
  "onClear",
@@ -165,6 +167,7 @@ var Selector = import_react.default.forwardRef(
165
167
  };
166
168
  const cls = (0, import_clsx.default)(
167
169
  prefixCls,
170
+ [`${prefixCls}-${size}`],
168
171
  [`${prefixCls}-searchable`],
169
172
  [`${prefixCls}-${mode || "single"}`],
170
173
  {
@@ -9,6 +9,14 @@
9
9
  var(--yee-selector-border-color);
10
10
  border-radius: var(--yee-selector-border-radius);
11
11
 
12
+ &-small {
13
+ padding: var(--yee-selector-small-padding);
14
+ }
15
+
16
+ &-large {
17
+ padding: var(--yee-selector-large-padding);
18
+ }
19
+
12
20
  &:focus-visible {
13
21
  outline: none;
14
22
  }
@@ -31,6 +39,13 @@
31
39
  line-height: var(--yee-selector-input-line-height);
32
40
  }
33
41
 
42
+ @{pls}-selection-item {
43
+ white-space: nowrap;
44
+ overflow: hidden;
45
+ text-overflow: ellipsis;
46
+ padding-right: 16px;
47
+ }
48
+
34
49
  &:focus-within,
35
50
  &:focus {
36
51
  @{pls}-input-wrapper {
@@ -39,6 +54,10 @@
39
54
 
40
55
  &.with-input-value {
41
56
  opacity: 1;
57
+
58
+ & + @{pls}-selection-item {
59
+ opacity: 0;
60
+ }
42
61
  }
43
62
  }
44
63
 
@@ -188,122 +207,122 @@
188
207
  }
189
208
  }
190
209
 
191
- .yee-tags-searchable {
192
- cursor: text;
193
-
194
- .yee-tags-input-wrapper {
195
- width: 100%;
196
- padding: 0;
197
- border: none;
198
- outline: none;
199
-
200
- &:focus {
201
- border: none;
202
- box-shadow: none;
203
- }
204
- }
205
-
206
- .yee-tags-icon {
207
- width: auto;
208
- }
209
- }
210
-
211
- .yee-tags-single-mode {
212
- height: var(--yee-tags-height);
213
-
214
- .yee-tags-input-container {
215
- position: absolute;
216
- z-index: -1;
217
- width: 100%;
218
- font-size: var(--yee-tags-input-font-size);
219
- line-height: var(--yee-tags-input-line-height);
220
-
221
- input {
222
- width: 100%;
223
- }
224
- }
225
-
226
- &.yee-tags-searchable {
227
- .yee-tags-single-option {
228
- width: 100%;
229
- }
230
-
231
- .yee-tags-container {
232
- &:focus-within,
233
- &:focus {
234
- .yee-tags-input-container {
235
- z-index: 1;
236
- opacity: var(--yee-tags-input-focus-opacity);
237
-
238
- &.has-value {
239
- opacity: 1;
240
-
241
- + .yee-tags-single-option {
242
- display: none;
243
- }
244
- }
245
- }
246
-
247
- .yee-tags-single-option {
248
- opacity: var(--yee-tags-single-option-focus-opacity);
249
- }
250
- }
251
- }
252
- }
253
- }
254
-
255
- .yee-tags-multi-mode {
256
- height: auto;
257
- min-height: var(--yee-tags-multi-min-height);
258
-
259
- &.yee-tags-searchable {
260
- .yee-tag {
261
- max-width: var(--yee-tags-multi-tag-max-width);
262
- height: var(--yee-tags-multi-tag-height);
263
- }
264
- }
265
-
266
- .yee-tags-container {
267
- flex-wrap: wrap;
268
- }
269
-
270
- .yee-tags-input-container {
271
- display: inline-grid;
272
- // color: var(--yee-tags-input-container-font-color);
273
- flex: 1 1 auto;
274
- grid-area: 1 / 1 / 2 / 3;
275
- grid-template-columns: 0 min-content;
276
- box-sizing: border-box;
277
- height: var(--yee-tags-multi-input-height);
278
-
279
- &::after {
280
- grid-area: 1 / 2 / auto / auto;
281
- min-width: var(--yee-tags-multi-input-after-min-width);
282
- margin: 0;
283
- padding: 0;
284
- font: inherit;
285
- white-space: pre;
286
- border: 0;
287
- outline: 0;
288
- visibility: hidden;
289
- content: attr(data-value) ' ';
290
- }
291
-
292
- & > input {
293
- grid-area: 1 / 2 / auto / auto;
294
- width: 100%;
295
- min-width: var(--yee-tags-multi-input-min-width);
296
- height: var(--yee-tags-multi-input-height);
297
- margin: 0;
298
- padding: 0;
299
- font: inherit;
300
- background-color: transparent;
301
- border: 0;
302
- outline: 0;
303
- opacity: 1;
304
- }
305
- }
306
- }
210
+ // .yee-tags-searchable {
211
+ // cursor: text;
212
+
213
+ // .yee-tags-input-wrapper {
214
+ // width: 100%;
215
+ // padding: 0;
216
+ // border: none;
217
+ // outline: none;
218
+
219
+ // &:focus {
220
+ // border: none;
221
+ // box-shadow: none;
222
+ // }
223
+ // }
224
+
225
+ // .yee-tags-icon {
226
+ // width: auto;
227
+ // }
228
+ // }
229
+
230
+ // .yee-tags-single-mode {
231
+ // height: var(--yee-tags-height);
232
+
233
+ // .yee-tags-input-container {
234
+ // position: absolute;
235
+ // z-index: -1;
236
+ // width: 100%;
237
+ // font-size: var(--yee-tags-input-font-size);
238
+ // line-height: var(--yee-tags-input-line-height);
239
+
240
+ // input {
241
+ // width: 100%;
242
+ // }
243
+ // }
244
+
245
+ // &.yee-tags-searchable {
246
+ // .yee-tags-single-option {
247
+ // width: 100%;
248
+ // }
249
+
250
+ // .yee-tags-container {
251
+ // &:focus-within,
252
+ // &:focus {
253
+ // .yee-tags-input-container {
254
+ // z-index: 1;
255
+ // opacity: var(--yee-tags-input-focus-opacity);
256
+
257
+ // &.has-value {
258
+ // opacity: 1;
259
+
260
+ // + .yee-tags-single-option {
261
+ // display: none;
262
+ // }
263
+ // }
264
+ // }
265
+
266
+ // .yee-tags-single-option {
267
+ // opacity: var(--yee-tags-single-option-focus-opacity);
268
+ // }
269
+ // }
270
+ // }
271
+ // }
272
+ // }
273
+
274
+ // .yee-tags-multi-mode {
275
+ // height: auto;
276
+ // min-height: var(--yee-tags-multi-min-height);
277
+
278
+ // &.yee-tags-searchable {
279
+ // .yee-tag {
280
+ // max-width: var(--yee-tags-multi-tag-max-width);
281
+ // height: var(--yee-tags-multi-tag-height);
282
+ // }
283
+ // }
284
+
285
+ // .yee-tags-container {
286
+ // flex-wrap: wrap;
287
+ // }
288
+
289
+ // .yee-tags-input-container {
290
+ // display: inline-grid;
291
+ // // color: var(--yee-tags-input-container-font-color);
292
+ // flex: 1 1 auto;
293
+ // grid-area: 1 / 1 / 2 / 3;
294
+ // grid-template-columns: 0 min-content;
295
+ // box-sizing: border-box;
296
+ // height: var(--yee-tags-multi-input-height);
297
+
298
+ // &::after {
299
+ // grid-area: 1 / 2 / auto / auto;
300
+ // min-width: var(--yee-tags-multi-input-after-min-width);
301
+ // margin: 0;
302
+ // padding: 0;
303
+ // font: inherit;
304
+ // white-space: pre;
305
+ // border: 0;
306
+ // outline: 0;
307
+ // visibility: hidden;
308
+ // content: attr(data-value) ' ';
309
+ // }
310
+
311
+ // & > input {
312
+ // grid-area: 1 / 2 / auto / auto;
313
+ // width: 100%;
314
+ // min-width: var(--yee-tags-multi-input-min-width);
315
+ // height: var(--yee-tags-multi-input-height);
316
+ // margin: 0;
317
+ // padding: 0;
318
+ // font: inherit;
319
+ // background-color: transparent;
320
+ // border: 0;
321
+ // outline: 0;
322
+ // opacity: 1;
323
+ // }
324
+ // }
325
+ // }
307
326
 
308
327
  // form error status
309
328
  .yee-form-item-error {
@@ -46,7 +46,7 @@ function useFilter({
46
46
  const [filterRecords, setFilterRecords] = (0, import_react.useState)([]);
47
47
  const onFilter = ({ value, dataIndex }) => {
48
48
  let newFilterMap = [...filterRecords];
49
- if (!value) {
49
+ if (!value || Array.isArray(value) && !value.length) {
50
50
  newFilterMap = newFilterMap.filter(
51
51
  (item) => item.dataIndex !== dataIndex
52
52
  );
@@ -448,6 +448,10 @@ export interface TableProps extends FooterProps, Omit<HeaderProps, 'pageData'>,
448
448
  * Row class name, unlike classNames, this prop can be set dynamically via a function
449
449
  */
450
450
  rowClassName?: (record: object) => string;
451
+ /**
452
+ * Row style, unlike styles, this prop can be set dynamically via a function
453
+ */
454
+ rowStyle?: (record: object) => React.CSSProperties;
451
455
  /**
452
456
  * Pagination config
453
457
  */
@@ -47,6 +47,8 @@
47
47
  }
48
48
 
49
49
  &-filter {
50
+ padding: var(--yee-table-filter-popup-padding);
51
+
50
52
  &-trigger {
51
53
  display: inline-flex;
52
54
  cursor: pointer;
@@ -159,7 +159,7 @@ var HeaderFilter = import_react.default.memo((props) => {
159
159
  import_Button.default,
160
160
  {
161
161
  icon: items ? /* @__PURE__ */ import_react.default.createElement(import_lucide_react.ListFilter, { size: 14, strokeWidth: 1.5 }) : /* @__PURE__ */ import_react.default.createElement(import_lucide_react.Search, { size: 14, strokeWidth: 1.5 }),
162
- color: "info",
162
+ variant: selectNodes.length ? "filled" : void 0,
163
163
  type: "text",
164
164
  size: "small"
165
165
  }
@@ -171,6 +171,7 @@ var HeaderFilter = import_react.default.memo((props) => {
171
171
  {
172
172
  trigger: "click",
173
173
  placement: "bottomRight",
174
+ className: (0, import_clsx.default)(`${prefixCls}-filter`),
174
175
  content: popup,
175
176
  arrow: true,
176
177
  open,
@@ -122,5 +122,12 @@ var basic_default = () => {
122
122
  children: "Content of Tab Pane 17"
123
123
  }
124
124
  ];
125
- return /* @__PURE__ */ import_react.default.createElement(import_yee_c.Tabs, { defaultActiveKey: "1", items });
125
+ return /* @__PURE__ */ import_react.default.createElement(
126
+ import_yee_c.Tabs,
127
+ {
128
+ defaultActiveKey: "1",
129
+ items,
130
+ onChange: (key) => console.log(key)
131
+ }
132
+ );
126
133
  };
@@ -147,7 +147,9 @@ var Tabs = (baseprops) => {
147
147
  return;
148
148
  }
149
149
  setMergedActiveKey(key);
150
- onChange == null ? void 0 : onChange(key);
150
+ if (key !== mergedActiveKey) {
151
+ onChange == null ? void 0 : onChange(key);
152
+ }
151
153
  };
152
154
  const contextValue = (0, import_react.useMemo)(
153
155
  () => ({