diff --git a/src/components/label-selector/wrapper.tsx b/src/components/label-selector/wrapper.tsx index 3a0de2f7..8066d58b 100644 --- a/src/components/label-selector/wrapper.tsx +++ b/src/components/label-selector/wrapper.tsx @@ -6,6 +6,7 @@ import React from 'react'; import styled from 'styled-components'; interface WrapperProps { + required?: boolean; label?: React.ReactNode; description?: React.ReactNode; labelExtra?: React.ReactNode; @@ -45,6 +46,7 @@ const ButtonWrapper = styled.div` `; const Wrapper: React.FC = ({ + required, children, label, description, @@ -61,6 +63,7 @@ const Wrapper: React.FC = ({ {label && ( void; onBlur?: (e: any, index: number) => void; onDelete?: (index: number) => void; @@ -36,6 +41,8 @@ const ListInput: React.FC = (props) => { options, labelExtra, trim = true, + styles, + required, renderItem } = props; const [list, setList] = React.useState<{ value: string; uid: number }[]>([]); @@ -86,9 +93,17 @@ const ListInput: React.FC = (props) => { } }, [dataList]); + useEffect(() => { + if (required && list.length === 0) { + handleOnAdd(); + } + }, [required]); + return ( = (props) => { {_.map(list, (item: any, index: number) => { return ( = (props) => { @@ -33,6 +34,7 @@ const ListItem: React.FC = (props) => { options, trim = true, data, + required, renderItem } = props; @@ -58,14 +60,16 @@ const ListItem: React.FC = (props) => { placeholder={props.placeholder} /> )} - ); @@ -73,8 +73,12 @@ const SupportedModels = () => {
( <> @@ -45,54 +44,25 @@ const useProviderColumns = ( dataIndex: 'provider', sorter: tableSorter(2), span: 4, + minWidth: 160, render: (value: string) => ( - <> - +
+ {maasProviderLabelMap[value] ? intl.formatMessage({ id: maasProviderLabelMap[value] }) : value} - +
) }, { - title: intl.formatMessage({ id: 'providers.table.modelsCounts' }), + title: intl.formatMessage({ id: 'providers.table.models' }), dataIndex: 'models', span: 3, + minWidth: 200, sorter: tableSorter(3), - render: (value: number) => {value} - }, - { - title: intl.formatMessage({ id: 'providers.table.proxy' }), - dataIndex: 'proxy_url', - span: 3, - render: (value: number) => ( - - {value ? ( - - ) : ( - '-' - )} - - ) - }, - { - title: 'Token Settings', - dataIndex: 'api_tokens', - span: 3, - render: (value: string, record: MaasProviderItem) => ( - 0 ? StatusMaps.success : StatusMaps.inactive, - text: value?.length > 0 ? 'Configured' : 'Unconfigured', - message: '' - }} - /> - ) + render: (value: number) => }, { title: intl.formatMessage({ id: 'common.table.createTime' }), @@ -109,6 +79,7 @@ const useProviderColumns = ( title: intl.formatMessage({ id: 'common.table.operation' }), dataIndex: 'operations', span: 3, + minWidth: 120, render: (value: string, record: MaasProviderItem) => ( { ); }; + const renderEmpty = (type?: string) => { + if (type !== 'Table') return; + return ( + } + filters={_.omit(queryParams, ['sort_by'])} + noFoundText={intl.formatMessage({ + id: 'noresult.providers.nofound' + })} + title={intl.formatMessage({ id: 'noresult.providers.title' })} + subTitle={intl.formatMessage({ + id: 'noresult.providers.subTitle' + })} + onClick={handleClickDropdown} + buttonText={intl.formatMessage({ id: 'noresult.button.add' })} + > + ); + }; + const columns = useProviderColumns(handleSelect); return ( @@ -183,13 +203,10 @@ const MaasProvider: React.FC = () => { ) }))} > - - + { rowSelection={rowSelection} columns={columns} childParentKey="provider_id" + scroll={{ x: true }} expandable={true} - empty={ - } - filters={_.omit(queryParams, ['sort_by'])} - noFoundText={intl.formatMessage({ - id: 'noresult.providers.nofound' - })} - title={intl.formatMessage({ id: 'noresult.providers.title' })} - subTitle={intl.formatMessage({ - id: 'noresult.providers.subTitle' - })} - onClick={handleClickDropdown} - buttonText={intl.formatMessage({ id: 'noresult.button.add' })} - > - } pagination={{ showSizeChanger: true, pageSize: queryParams.perPage, @@ -231,8 +231,8 @@ const MaasProvider: React.FC = () => { hideOnSinglePage: queryParams.perPage === 10, onChange: handlePageChange }} - > - + >
+