| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | import React from 'react'; |
| | import { Modal, Button, Checkbox } from '@douyinfe/semi-ui'; |
| | import { getChannelsColumns } from '../ChannelsColumnDefs'; |
| |
|
| | const ColumnSelectorModal = ({ |
| | showColumnSelector, |
| | setShowColumnSelector, |
| | visibleColumns, |
| | handleColumnVisibilityChange, |
| | handleSelectAll, |
| | initDefaultColumns, |
| | COLUMN_KEYS, |
| | t, |
| | // Props needed for getChannelsColumns |
| | updateChannelBalance, |
| | manageChannel, |
| | manageTag, |
| | submitTagEdit, |
| | testChannel, |
| | setCurrentTestChannel, |
| | setShowModelTestModal, |
| | setEditingChannel, |
| | setShowEdit, |
| | setShowEditTag, |
| | setEditingTag, |
| | copySelectedChannel, |
| | refresh, |
| | activePage, |
| | channels, |
| | }) => { |
| | |
| | const allColumns = getChannelsColumns({ |
| | t, |
| | COLUMN_KEYS, |
| | updateChannelBalance, |
| | manageChannel, |
| | manageTag, |
| | submitTagEdit, |
| | testChannel, |
| | setCurrentTestChannel, |
| | setShowModelTestModal, |
| | setEditingChannel, |
| | setShowEdit, |
| | setShowEditTag, |
| | setEditingTag, |
| | copySelectedChannel, |
| | refresh, |
| | activePage, |
| | channels, |
| | }); |
| |
|
| | return ( |
| | <Modal |
| | title={t('列设置')} |
| | visible={showColumnSelector} |
| | onCancel={() => setShowColumnSelector(false)} |
| | footer={ |
| | <div className='flex justify-end'> |
| | <Button onClick={() => initDefaultColumns()}>{t('重置')}</Button> |
| | <Button onClick={() => setShowColumnSelector(false)}> |
| | {t('取消')} |
| | </Button> |
| | <Button onClick={() => setShowColumnSelector(false)}> |
| | {t('确定')} |
| | </Button> |
| | </div> |
| | } |
| | > |
| | <div style={{ marginBottom: 20 }}> |
| | <Checkbox |
| | checked={Object.values(visibleColumns).every((v) => v === true)} |
| | indeterminate={ |
| | Object.values(visibleColumns).some((v) => v === true) && |
| | !Object.values(visibleColumns).every((v) => v === true) |
| | } |
| | onChange={(e) => handleSelectAll(e.target.checked)} |
| | > |
| | {t('全选')} |
| | </Checkbox> |
| | </div> |
| | <div |
| | className='flex flex-wrap max-h-96 overflow-y-auto rounded-lg p-4' |
| | style={{ border: '1px solid var(--semi-color-border)' }} |
| | > |
| | {allColumns.map((column) => { |
| | // Skip columns without title |
| | if (!column.title) { |
| | return null; |
| | } |
| | |
| | return ( |
| | <div key={column.key} className='w-1/2 mb-4 pr-2'> |
| | <Checkbox |
| | checked={!!visibleColumns[column.key]} |
| | onChange={(e) => |
| | handleColumnVisibilityChange(column.key, e.target.checked) |
| | } |
| | > |
| | {column.title} |
| | </Checkbox> |
| | </div> |
| | ); |
| | })} |
| | </div> |
| | </Modal> |
| | ); |
| | }; |
| |
|
| | export default ColumnSelectorModal; |
| |
|