@douyinfe/semi-ui 2.15.1 → 2.16.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/avatar/__test__/avatar.test.js +3 -3
- package/button/buttonGroup.tsx +3 -2
- package/cascader/index.tsx +5 -1
- package/dist/css/semi.css +38 -5
- package/dist/css/semi.min.css +1 -1
- package/dist/umd/semi-ui.js +330 -214
- package/dist/umd/semi-ui.js.map +1 -1
- package/dist/umd/semi-ui.min.js +1 -1
- package/dist/umd/semi-ui.min.js.map +1 -1
- package/iconButton/index.tsx +3 -0
- package/lib/cjs/button/buttonGroup.d.ts +0 -2
- package/lib/cjs/button/buttonGroup.js +4 -3
- package/lib/cjs/cascader/index.d.ts +3 -0
- package/lib/cjs/cascader/index.js +5 -3
- package/lib/cjs/iconButton/index.js +3 -0
- package/lib/cjs/slider/index.d.ts +1 -1
- package/lib/cjs/slider/index.js +84 -36
- package/lib/cjs/transfer/index.d.ts +5 -0
- package/lib/cjs/transfer/index.js +7 -17
- package/lib/es/button/buttonGroup.d.ts +0 -2
- package/lib/es/button/buttonGroup.js +4 -3
- package/lib/es/cascader/index.d.ts +3 -0
- package/lib/es/cascader/index.js +5 -3
- package/lib/es/iconButton/index.js +3 -0
- package/lib/es/slider/index.d.ts +1 -1
- package/lib/es/slider/index.js +84 -36
- package/lib/es/transfer/index.d.ts +5 -0
- package/lib/es/transfer/index.js +7 -17
- package/package.json +11 -11
- package/select/_story/select.stories.tsx +1 -1
- package/slider/_story/slider.stories.js +4 -2
- package/slider/index.tsx +63 -33
- package/transfer/_story/transfer.stories.js +29 -0
- package/transfer/index.tsx +10 -10
|
@@ -166,6 +166,35 @@ TransferDraggable.story = {
|
|
|
166
166
|
name: 'Transfer draggable',
|
|
167
167
|
};
|
|
168
168
|
|
|
169
|
+
export const TransferDraggableAndDisabled = () => {
|
|
170
|
+
const data = Array.from({ length: 30 }, (v, i) => {
|
|
171
|
+
return {
|
|
172
|
+
label: `选项名称 ${i}`,
|
|
173
|
+
value: i,
|
|
174
|
+
key: i,
|
|
175
|
+
disabled: true,
|
|
176
|
+
};
|
|
177
|
+
});
|
|
178
|
+
return (
|
|
179
|
+
<>
|
|
180
|
+
<div>Transfer设置draggable, 并且左侧面板中的选项disabled </div>
|
|
181
|
+
<div>符合预期的行为: 右侧面板hover不会出现删除按钮,因此不可以点击删除,但是可以拖拽 </div>
|
|
182
|
+
<Transfer
|
|
183
|
+
style={{ width: 568, height: 416 }}
|
|
184
|
+
dataSource={data}
|
|
185
|
+
defaultValue={[2, 4]}
|
|
186
|
+
draggable
|
|
187
|
+
onChange={(values, items) => console.log(values, items)}
|
|
188
|
+
/>
|
|
189
|
+
</>
|
|
190
|
+
);
|
|
191
|
+
};
|
|
192
|
+
|
|
193
|
+
TransferDraggableAndDisabled.story = {
|
|
194
|
+
name: 'transfer draggable and disabled',
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
|
|
169
198
|
const ControledTransfer = () => {
|
|
170
199
|
const [value, setValue] = useState([2, 3]);
|
|
171
200
|
|
package/transfer/index.tsx
CHANGED
|
@@ -102,6 +102,12 @@ export interface ResolvedDataItem extends DataItem {
|
|
|
102
102
|
_optionKey?: string | number;
|
|
103
103
|
}
|
|
104
104
|
|
|
105
|
+
export interface DraggableResolvedDataItem {
|
|
106
|
+
key?: string | number;
|
|
107
|
+
index?: number;
|
|
108
|
+
item?: ResolvedDataItem;
|
|
109
|
+
}
|
|
110
|
+
|
|
105
111
|
export type DataSource = Array<DataItem> | Array<GroupItem> | Array<TreeItem>;
|
|
106
112
|
|
|
107
113
|
interface HeaderConfig {
|
|
@@ -511,12 +517,7 @@ class Transfer extends BaseComponent<TransferProps, TransferState> {
|
|
|
511
517
|
|
|
512
518
|
renderRightItem(item: ResolvedDataItem): React.ReactNode {
|
|
513
519
|
const { renderSelectedItem, draggable, type, showPath } = this.props;
|
|
514
|
-
|
|
515
|
-
if (draggable) {
|
|
516
|
-
newItem = { ...item, key: item._optionKey };
|
|
517
|
-
delete newItem._optionKey;
|
|
518
|
-
}
|
|
519
|
-
const onRemove = () => this.foundation.handleSelectOrRemove(newItem);
|
|
520
|
+
const onRemove = () => this.foundation.handleSelectOrRemove(item);
|
|
520
521
|
const rightItemCls = cls({
|
|
521
522
|
[`${prefixcls}-item`]: true,
|
|
522
523
|
[`${prefixcls}-right-item`]: true,
|
|
@@ -536,7 +537,7 @@ class Transfer extends BaseComponent<TransferProps, TransferState> {
|
|
|
536
537
|
|
|
537
538
|
return (
|
|
538
539
|
// https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex
|
|
539
|
-
<div role="listitem" className={rightItemCls} key={
|
|
540
|
+
<div role="listitem" className={rightItemCls} key={item.key}>
|
|
540
541
|
{draggable ? <DragHandle /> : null}
|
|
541
542
|
<div className={`${prefixcls}-right-item-text`}>{label}</div>
|
|
542
543
|
<IconClose
|
|
@@ -562,14 +563,13 @@ class Transfer extends BaseComponent<TransferProps, TransferState> {
|
|
|
562
563
|
renderRightSortableList(selectedData: Array<ResolvedDataItem>) {
|
|
563
564
|
// when choose some items && draggable is true
|
|
564
565
|
const SortableItem = SortableElement((
|
|
565
|
-
(
|
|
566
|
+
(props: DraggableResolvedDataItem) => this.renderRightItem(props.item)) as React.FC<DraggableResolvedDataItem>
|
|
566
567
|
);
|
|
567
568
|
const SortableList = SortableContainer(({ items }: { items: Array<ResolvedDataItem> }) => (
|
|
568
569
|
<div className={`${prefixcls}-right-list`} role="list" aria-label="Selected list">
|
|
569
570
|
{items.map((item, index: number) => (
|
|
570
|
-
// sortableElement will take over the property 'key', so use another '_optionKey' to pass
|
|
571
571
|
// @ts-ignore skip SortableItem type check
|
|
572
|
-
<SortableItem key={item.label} index={index}
|
|
572
|
+
<SortableItem key={item.label} index={index} item={item} />
|
|
573
573
|
))}
|
|
574
574
|
</div>
|
|
575
575
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|