@ -1,5 +1,4 @@
|
||||
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
|
||||
|
||||
import { settingsObjectIndexesFamilyState } from '@/settings/data-model/object-details/states/settingsObjectIndexesFamilyState';
|
||||
import { TextInput } from '@/ui/input/components/TextInput';
|
||||
import { SortableTableHeader } from '@/ui/layout/table/components/SortableTableHeader';
|
||||
@ -10,6 +9,7 @@ import { TableRow } from '@/ui/layout/table/components/TableRow';
|
||||
import { useSortedArray } from '@/ui/layout/table/hooks/useSortedArray';
|
||||
import { TableMetadata } from '@/ui/layout/table/types/TableMetadata';
|
||||
import styled from '@emotion/styled';
|
||||
import { useLingui } from '@lingui/react/macro';
|
||||
import { isNonEmptyArray } from '@sniptt/guards';
|
||||
import { useEffect, useMemo, useState } from 'react';
|
||||
import { useRecoilState } from 'recoil';
|
||||
@ -20,12 +20,26 @@ export const StyledObjectIndexTableRow = styled(TableRow)`
|
||||
grid-template-columns: 350px 70px 80px;
|
||||
`;
|
||||
|
||||
const SETTINGS_OBJECT_DETAIL_TABLE_METADATA_STANDARD: TableMetadata<SettingsObjectIndexesTableItem> =
|
||||
{
|
||||
const StyledSearchInput = styled(TextInput)`
|
||||
padding-bottom: ${({ theme }) => theme.spacing(2)};
|
||||
width: 100%;
|
||||
`;
|
||||
|
||||
export type SettingsObjectIndexTableProps = {
|
||||
objectMetadataItem: ObjectMetadataItem;
|
||||
};
|
||||
|
||||
export const SettingsObjectIndexTable = ({
|
||||
objectMetadataItem,
|
||||
}: SettingsObjectIndexTableProps) => {
|
||||
const { t } = useLingui();
|
||||
const [searchTerm, setSearchTerm] = useState('');
|
||||
|
||||
const tableMetadata: TableMetadata<SettingsObjectIndexesTableItem> = {
|
||||
tableId: 'settingsObjectIndexs',
|
||||
fields: [
|
||||
{
|
||||
fieldLabel: 'Fields',
|
||||
fieldLabel: t`Fields`,
|
||||
fieldName: 'indexFields',
|
||||
fieldType: 'string',
|
||||
align: 'left',
|
||||
@ -38,7 +52,7 @@ const SETTINGS_OBJECT_DETAIL_TABLE_METADATA_STANDARD: TableMetadata<SettingsObje
|
||||
align: 'left',
|
||||
},
|
||||
{
|
||||
fieldLabel: 'Type',
|
||||
fieldLabel: t`Type`,
|
||||
fieldName: 'indexType',
|
||||
fieldType: 'string',
|
||||
align: 'right',
|
||||
@ -50,19 +64,6 @@ const SETTINGS_OBJECT_DETAIL_TABLE_METADATA_STANDARD: TableMetadata<SettingsObje
|
||||
},
|
||||
};
|
||||
|
||||
const StyledSearchInput = styled(TextInput)`
|
||||
padding-bottom: ${({ theme }) => theme.spacing(2)};
|
||||
width: 100%;
|
||||
`;
|
||||
export type SettingsObjectIndexTableProps = {
|
||||
objectMetadataItem: ObjectMetadataItem;
|
||||
};
|
||||
|
||||
export const SettingsObjectIndexTable = ({
|
||||
objectMetadataItem,
|
||||
}: SettingsObjectIndexTableProps) => {
|
||||
const [searchTerm, setSearchTerm] = useState('');
|
||||
|
||||
const [settingsObjectIndexes, setSettingsObjectIndexes] = useRecoilState(
|
||||
settingsObjectIndexesFamilyState({
|
||||
objectMetadataItemId: objectMetadataItem.id,
|
||||
@ -95,7 +96,7 @@ export const SettingsObjectIndexTable = ({
|
||||
|
||||
const sortedActiveObjectSettingsDetailItems = useSortedArray(
|
||||
objectSettingsDetailItems,
|
||||
SETTINGS_OBJECT_DETAIL_TABLE_METADATA_STANDARD,
|
||||
tableMetadata,
|
||||
);
|
||||
|
||||
const filteredActiveItems = useMemo(
|
||||
@ -112,22 +113,20 @@ export const SettingsObjectIndexTable = ({
|
||||
<>
|
||||
<StyledSearchInput
|
||||
LeftIcon={IconSearch}
|
||||
placeholder="Search an index..."
|
||||
placeholder={t`Search an index...`}
|
||||
value={searchTerm}
|
||||
onChange={setSearchTerm}
|
||||
/>
|
||||
<Table>
|
||||
<StyledObjectIndexTableRow>
|
||||
{SETTINGS_OBJECT_DETAIL_TABLE_METADATA_STANDARD.fields.map((item) => (
|
||||
{tableMetadata.fields.map((item) => (
|
||||
<SortableTableHeader
|
||||
key={item.fieldName}
|
||||
fieldName={item.fieldName}
|
||||
label={item.fieldLabel}
|
||||
Icon={item.FieldIcon}
|
||||
tableId={SETTINGS_OBJECT_DETAIL_TABLE_METADATA_STANDARD.tableId}
|
||||
initialSort={
|
||||
SETTINGS_OBJECT_DETAIL_TABLE_METADATA_STANDARD.initialSort
|
||||
}
|
||||
tableId={tableMetadata.tableId}
|
||||
initialSort={tableMetadata.initialSort}
|
||||
/>
|
||||
))}
|
||||
<TableHeader></TableHeader>
|
||||
|
||||
Reference in New Issue
Block a user