Просмотр исходного кода

Feat: Alter TransferList props #3221 (#6226)

### What problem does this PR solve?

Feat: Alter TransferList props #3221

### Type of change


- [x] New Feature (non-breaking change which adds functionality)
tags/v0.18.0
balibabu 7 месяцев назад
Родитель
Сommit
6e5cbd0196
Аккаунт пользователя с таким Email не найден
2 измененных файлов: 16 добавлений и 5 удалений
  1. 15
    5
      web/src/components/ui/transfer-list.tsx
  2. 1
    0
      web/src/interfaces/database/user-setting.ts

+ 15
- 5
web/src/components/ui/transfer-list.tsx Просмотреть файл

selected?: boolean; selected?: boolean;
}; };


type TransferListProps = {
export enum TransferListMoveDirection {
Left = 'left',
Right = 'right',
}

export type TransferListProps = {
items: TransferListItemType[]; items: TransferListItemType[];
targetKeys?: string[]; targetKeys?: string[];
onChange?(targetKeys: string[], direction: 'left' | 'right'): void;
onChange?(
targetKeys: string[],
direction: TransferListMoveDirection,
moveKeys: string[],
): void;
}; };


export const TransferList = memo(function ({ export const TransferList = memo(function ({
setLeftList(leftList.filter((item) => !item.selected)); setLeftList(leftList.filter((item) => !item.selected));
onChange?.( onChange?.(
rightItems.map((x) => x.key), rightItems.map((x) => x.key),
'right',
TransferListMoveDirection.Right,
selectedItems.map((x) => x.key),
); );
}, [leftList, onChange, rightList]); }, [leftList, onChange, rightList]);


setRightList(rightItems); setRightList(rightItems);
onChange?.( onChange?.(
rightItems.map((x) => x.key), rightItems.map((x) => x.key),
'left',
TransferListMoveDirection.Left,
selectedItems.map((x) => x.key),
); );
}, [onChange, rightList]); }, [onChange, rightList]);


const leftItems = items.filter( const leftItems = items.filter(
(x) => !targetKeys?.some((y) => y === x.key), (x) => !targetKeys?.some((y) => y === x.key),
); );
console.log('🚀 ~ useEffect ~ leftItems:', leftItems);
setLeftList(leftItems); setLeftList(leftItems);
const rightItems = items.filter((x) => const rightItems = items.filter((x) =>
targetKeys?.some((y) => y === x.key), targetKeys?.some((y) => y === x.key),

+ 1
- 0
web/src/interfaces/database/user-setting.ts Просмотреть файл

} }


export interface ITenantUser { export interface ITenantUser {
id: string;
avatar: string; avatar: string;
delta_seconds: number; delta_seconds: number;
email: string; email: string;

Загрузка…
Отмена
Сохранить