diff --git a/src/components/Extensibility/ExtensibilityCustomUIList.js b/src/components/Extensibility/ExtensibilityCustomUIList.js deleted file mode 100644 index 4e28af81c3..0000000000 --- a/src/components/Extensibility/ExtensibilityCustomUIList.js +++ /dev/null @@ -1,181 +0,0 @@ -import pluralize from 'pluralize'; -import { useTranslation } from 'react-i18next'; - -import { ResourcesList } from 'shared/components/ResourcesList/ResourcesList'; -import { usePrepareListProps } from 'resources/helpers'; -import { prettifyKind } from 'shared/utils/helpers'; -import { ExtensibilityErrBoundary } from 'components/Extensibility/ExtensibilityErrBoundary'; -import { useGetSchema } from 'hooks/useGetSchema'; -import { getExtensibilityPath } from 'components/Extensibility/helpers/getExtensibilityPath'; - -import { useGetCRbyPath } from './useGetCRbyPath'; -import ExtensibilityCreate from './ExtensibilityCreate'; -import { - useCreateResourceDescription, - TranslationBundleContext, - useGetTranslation, - applyFormula, - getTextSearchProperties, - getResourceDescAndUrl, -} from './helpers'; -import { sortBy } from './helpers/sortBy'; -import { Widget } from './components/Widget'; -import { DataSourcesContextProvider } from './contexts/DataSources'; -import { useJsonata } from './hooks/useJsonata'; - -export const ExtensibilityCustomUIListCore = ({ - resMetaData, - filterFunction, - ...props -}) => { - const { t, widgetT, exists } = useGetTranslation(); - const { t: tBusola } = useTranslation(); - const jsonata = useJsonata({}); - - const { - resource, - backendUrls, - description, - features, - filter: generalFilter, - } = resMetaData?.general ?? {}; - - const { disableCreate, disableEdit, disableDelete } = features?.actions ?? { - disableCreate: props.disableCreate, - disableEdit: props.disableEdit, - disableDelete: props.disableDelete, - }; - - const disableDefaultColumns = - features?.disableDefaultColumns ?? props.disableDefaultColumns; - - const dataSources = resMetaData?.dataSources || {}; - const { schema } = useGetSchema({ - resource, - }); - - const listProps = usePrepareListProps({ - resourceCustomType: getExtensibilityPath(resMetaData?.general), - resourceI18Key: 'name', - apiGroup: resource?.group, - apiVersion: resource?.version, - hasDetailsView: !!resMetaData?.details, - }); - - listProps.customUIUrl = { - host: backendUrls?.host, - url: backendUrls?.url, - query: backendUrls?.query, - }; - const resourceTitle = resMetaData?.general?.name; - listProps.resourceTitle = exists('name') - ? t('name') - : resourceTitle || pluralize(prettifyKind(resource?.kind || '')); - - if (resource?.kind && !backendUrls?.get) { - listProps.resourceUrl = listProps.resourceUrl?.replace( - /[a-z0-9-]+\/?$/, - pluralize(resource.kind).toLowerCase(), - ); - } - listProps.createFormProps = { resourceSchema: resMetaData }; - - listProps.description = useCreateResourceDescription(description); - const columns = Array.isArray(resMetaData?.list) - ? resMetaData?.list.map((column, i) => ({ - header: widgetT(column), - value: resource => ( - - ), - })) - : []; - - if (disableDefaultColumns) { - listProps.columns = columns; - } else { - listProps.customColumns = columns; - } - - const isFilterAString = - typeof resMetaData?.resource?.filter === 'string' || - typeof generalFilter === 'string'; - - const filterFn = value => - applyFormula( - value, - resMetaData?.resource?.filter || generalFilter, - tBusola, - ); - - listProps.filter = isFilterAString ? filterFn : filterFunction; - - const sortOptions = (resMetaData?.list || []).filter(element => element.sort); - const searchOptions = (resMetaData?.list || []).filter( - element => element.search, - ); - - const textSearchProperties = getTextSearchProperties({ - searchOptions, - defaultSearch: true, - }); - - const { - description: subtitleText, - url: emptyListUrl, - } = getResourceDescAndUrl(description); - - return ( - - sortBy(jsonata, sortOptions, t, defaultSortOptions) - } - searchSettings={{ - textSearchProperties: defaultSearchProperties => - textSearchProperties(defaultSearchProperties), - }} - emptyListProps={{ - subtitleText: subtitleText, - url: emptyListUrl, - }} - /> - ); -}; - -const ExtensibilityCustomUIList = ({ overrideResMetadata, ...props }) => { - const defaultResMetadata = useGetCRbyPath(); - const resMetaData = overrideResMetadata || defaultResMetadata; - const { urlPath, defaultPlaceholder } = resMetaData?.general ?? {}; - - return ( - - - - - - - - ); -}; - -export default ExtensibilityCustomUIList;