@rainbow-oh/yee-c 0.14.7 → 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/Form/index.d.ts +1 -1
- package/dist/cjs/Input/style/index.less +1 -0
- package/dist/cjs/InputNumber/style/index.less +1 -0
- package/dist/cjs/Select/hooks/useSelectKeyboard.js +5 -2
- package/dist/cjs/Selector/selector.js +6 -3
- package/dist/cjs/TableSelect/hooks/useTableSelectKeyboard.d.ts +27 -0
- package/dist/cjs/TableSelect/hooks/useTableSelectKeyboard.js +128 -0
- package/dist/cjs/TableSelect/interface.d.ts +9 -4
- package/dist/cjs/TableSelect/internal-table.js +27 -14
- package/dist/cjs/TableSelect/style/index.less +3 -11
- package/dist/cjs/TableSelect/table-select.js +40 -3
- package/dist/cjs/style/size.css +1 -1
- package/dist/cjs/style/themes.css +1 -1
- package/dist/cjs/style/variables.css +2 -2
- package/dist/cjs/version.d.ts +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/esm/Form/index.d.ts +1 -1
- package/dist/esm/Input/style/index.less +1 -0
- package/dist/esm/InputNumber/style/index.less +1 -0
- package/dist/esm/Select/hooks/useSelectKeyboard.js +7 -2
- package/dist/esm/Selector/selector.js +10 -5
- package/dist/esm/TableSelect/hooks/useTableSelectKeyboard.d.ts +27 -0
- package/dist/esm/TableSelect/hooks/useTableSelectKeyboard.js +132 -0
- package/dist/esm/TableSelect/interface.d.ts +9 -4
- package/dist/esm/TableSelect/internal-table.js +6 -2
- package/dist/esm/TableSelect/style/index.less +3 -11
- package/dist/esm/TableSelect/table-select.js +36 -3
- package/dist/esm/style/size.css +1 -1
- package/dist/esm/style/themes.css +1 -1
- package/dist/esm/style/variables.css +2 -2
- 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/index.ts +4 -0
- package/src/Input/style/index.less +1 -0
- package/src/InputNumber/style/index.less +1 -0
- package/src/Select/hooks/useSelectKeyboard.ts +7 -2
- package/src/Selector/selector.tsx +10 -5
- package/src/TableSelect/hooks/useTableSelectKeyboard.ts +141 -0
- package/src/TableSelect/index.en-US.md +47 -44
- package/src/TableSelect/index.zh-CN.md +47 -44
- package/src/TableSelect/interface.ts +9 -4
- package/src/TableSelect/internal-table.tsx +14 -6
- package/src/TableSelect/style/index.less +3 -11
- package/src/TableSelect/table-select.tsx +45 -3
- package/src/style/size.css +1 -1
- package/src/version.ts +1 -1
|
@@ -9,6 +9,7 @@ import Trigger from '../Trigger';
|
|
|
9
9
|
import mergeContextToProps from '../utils/mergeContextToProps';
|
|
10
10
|
import omit from '../utils/omit';
|
|
11
11
|
import pick from '../utils/pick';
|
|
12
|
+
import useTableSelectKeyboard from './hooks/useTableSelectKeyboard';
|
|
12
13
|
import type { InternalTableProps, TableSelectProps } from './interface';
|
|
13
14
|
import InternalTable from './internal-table';
|
|
14
15
|
import './style/index.less';
|
|
@@ -16,7 +17,10 @@ import './style/index.less';
|
|
|
16
17
|
const handleState = (
|
|
17
18
|
value: SelectionKeyType | SelectionKeyType[] | undefined,
|
|
18
19
|
) => {
|
|
19
|
-
|
|
20
|
+
// '' is the empty-value convention for radio; it must not become a key.
|
|
21
|
+
if (value === '') {
|
|
22
|
+
return [];
|
|
23
|
+
} else if (typeof value === 'string' || typeof value === 'number') {
|
|
20
24
|
return [value];
|
|
21
25
|
} else if (Array.isArray(value)) {
|
|
22
26
|
return value;
|
|
@@ -144,10 +148,35 @@ const TableSelect = (baseprops: TableSelectProps) => {
|
|
|
144
148
|
onChange?.(renderKeys, undefined);
|
|
145
149
|
};
|
|
146
150
|
|
|
151
|
+
const {
|
|
152
|
+
popupRef,
|
|
153
|
+
activeRow,
|
|
154
|
+
handleKeyDown: handleSelectorKeyDown,
|
|
155
|
+
} = useTableSelectKeyboard({
|
|
156
|
+
open,
|
|
157
|
+
disabled,
|
|
158
|
+
dataSource,
|
|
159
|
+
rowKey,
|
|
160
|
+
selectionType,
|
|
161
|
+
selectedRowKeys: mergedValue as SelectionKeyType[],
|
|
162
|
+
searchValue,
|
|
163
|
+
onSelect: onSelectChange,
|
|
164
|
+
onClose: () => onVisibleChange(false),
|
|
165
|
+
});
|
|
166
|
+
|
|
167
|
+
const userHighlight = (rest as { highlight?: 'odd' | 'even' | Array<number> })
|
|
168
|
+
.highlight;
|
|
169
|
+
|
|
147
170
|
const tableProps = omit(
|
|
148
171
|
{
|
|
149
172
|
...rest,
|
|
150
173
|
prefixCls,
|
|
174
|
+
// Keyboard navigation reuses the row highlight; it takes precedence over
|
|
175
|
+
// a user-supplied index list while active.
|
|
176
|
+
highlight:
|
|
177
|
+
activeRow > 0
|
|
178
|
+
? [activeRow, ...(Array.isArray(userHighlight) ? userHighlight : [])]
|
|
179
|
+
: userHighlight,
|
|
151
180
|
rowSelection: {
|
|
152
181
|
...props.rowSelection,
|
|
153
182
|
onChange: onSelectChange,
|
|
@@ -181,8 +210,15 @@ const TableSelect = (baseprops: TableSelectProps) => {
|
|
|
181
210
|
selectedKeys: mergedValue,
|
|
182
211
|
onSearch: handleSearch,
|
|
183
212
|
onRemove: onTagRemove,
|
|
213
|
+
onClear: () => {
|
|
214
|
+
setMergedValue([]);
|
|
215
|
+
onChange?.(selectionType === 'radio' ? '' : [], undefined);
|
|
216
|
+
},
|
|
217
|
+
onKeyDown: handleSelectorKeyDown,
|
|
184
218
|
onOpenChange: (open: boolean) => {
|
|
185
|
-
if (
|
|
219
|
+
if (open) {
|
|
220
|
+
onVisibleChange(true);
|
|
221
|
+
} else {
|
|
186
222
|
clearSearchValue();
|
|
187
223
|
}
|
|
188
224
|
},
|
|
@@ -193,13 +229,19 @@ const TableSelect = (baseprops: TableSelectProps) => {
|
|
|
193
229
|
};
|
|
194
230
|
|
|
195
231
|
const renderPopup = () => (
|
|
196
|
-
<InternalTable
|
|
232
|
+
<InternalTable
|
|
233
|
+
{...tableProps}
|
|
234
|
+
value={value}
|
|
235
|
+
rowKey={rowKey}
|
|
236
|
+
popupRef={popupRef}
|
|
237
|
+
/>
|
|
197
238
|
);
|
|
198
239
|
|
|
199
240
|
return (
|
|
200
241
|
<Trigger
|
|
201
242
|
{...rest}
|
|
202
243
|
trigger="click"
|
|
244
|
+
open={open}
|
|
203
245
|
popupClassName={`${prefixCls}-popup`}
|
|
204
246
|
popup={renderPopup()}
|
|
205
247
|
placement={placement}
|
package/src/style/size.css
CHANGED
|
@@ -587,7 +587,7 @@
|
|
|
587
587
|
--yee-select-popup-max-height: 200px;
|
|
588
588
|
|
|
589
589
|
/* --Selector-- */
|
|
590
|
-
--yee-selector-padding:
|
|
590
|
+
--yee-selector-padding: 3px 6px;
|
|
591
591
|
--yee-selector-border-width: 1px;
|
|
592
592
|
--yee-selector-border-radius: 4px;
|
|
593
593
|
--yee-selector-height: var(--yee-input-height);
|