Merge commit 'cd3a32e55503dc1e6b9873d812dd401bf7d51045' into context-menu-vertical
This commit is contained in:
@ -1,3 +1,3 @@
|
||||
import { createContext } from 'react';
|
||||
|
||||
export const EntityUpdateMutationHookContext = createContext<any | null>(null);
|
||||
export const EntityUpdateMutationContext = createContext<any | null>(null);
|
||||
|
||||
@ -2,13 +2,13 @@ import { selector } from 'recoil';
|
||||
|
||||
import { AllRowsSelectedStatus } from '../types/AllRowSelectedStatus';
|
||||
|
||||
import { numberOfTableRowsSelectorState } from './numberOfTableRowsSelectorState';
|
||||
import { numberOfTableRowsState } from './numberOfTableRowsState';
|
||||
import { selectedRowIdsSelector } from './selectedRowIdsSelector';
|
||||
|
||||
export const allRowsSelectedStatusSelector = selector<AllRowsSelectedStatus>({
|
||||
key: 'allRowsSelectedStatusSelector',
|
||||
get: ({ get }) => {
|
||||
const numberOfRows = get(numberOfTableRowsSelectorState);
|
||||
const numberOfRows = get(numberOfTableRowsState);
|
||||
|
||||
const selectedRowIds = get(selectedRowIdsSelector);
|
||||
|
||||
|
||||
@ -1,11 +0,0 @@
|
||||
import { atom } from 'recoil';
|
||||
|
||||
import { TableDimensions } from '../hooks/useInitializeEntityTable';
|
||||
|
||||
export const entityTableDimensionsState = atom<TableDimensions>({
|
||||
key: 'entityTableDimensionsState',
|
||||
default: {
|
||||
numberOfRows: 0,
|
||||
numberOfColumns: 0,
|
||||
},
|
||||
});
|
||||
@ -1,12 +0,0 @@
|
||||
import { selector } from 'recoil';
|
||||
|
||||
import { entityTableDimensionsState } from './entityTableDimensionsState';
|
||||
|
||||
export const numberOfTableColumnsSelectorState = selector<number>({
|
||||
key: 'numberOfTableColumnsState',
|
||||
get: ({ get }) => {
|
||||
const { numberOfColumns } = get(entityTableDimensionsState);
|
||||
|
||||
return numberOfColumns;
|
||||
},
|
||||
});
|
||||
@ -1,12 +0,0 @@
|
||||
import { selector } from 'recoil';
|
||||
|
||||
import { entityTableDimensionsState } from './entityTableDimensionsState';
|
||||
|
||||
export const numberOfTableRowsSelectorState = selector<number>({
|
||||
key: 'numberOfTableRowsState',
|
||||
get: ({ get }) => {
|
||||
const { numberOfRows } = get(entityTableDimensionsState);
|
||||
|
||||
return numberOfRows;
|
||||
},
|
||||
});
|
||||
@ -0,0 +1,6 @@
|
||||
import { atom } from 'recoil';
|
||||
|
||||
export const numberOfTableRowsState = atom<number>({
|
||||
key: 'numberOfTableRowsState',
|
||||
default: 0,
|
||||
});
|
||||
37
front/src/modules/ui/table/states/tableColumnsState.ts
Normal file
37
front/src/modules/ui/table/states/tableColumnsState.ts
Normal file
@ -0,0 +1,37 @@
|
||||
import { atom, selector } from 'recoil';
|
||||
|
||||
import type {
|
||||
ViewFieldDefinition,
|
||||
ViewFieldMetadata,
|
||||
} from '@/ui/editable-field/types/ViewField';
|
||||
|
||||
export const tableColumnsState = atom<ViewFieldDefinition<ViewFieldMetadata>[]>(
|
||||
{
|
||||
key: 'tableColumnsState',
|
||||
default: [],
|
||||
},
|
||||
);
|
||||
|
||||
export const tableColumnsByIdState = selector({
|
||||
key: 'tableColumnsByIdState',
|
||||
get: ({ get }) =>
|
||||
get(tableColumnsState).reduce<
|
||||
Record<string, ViewFieldDefinition<ViewFieldMetadata>>
|
||||
>((result, column) => ({ ...result, [column.id]: column }), {}),
|
||||
});
|
||||
|
||||
export const numberOfTableColumnsState = selector<number>({
|
||||
key: 'numberOfTableColumnsState',
|
||||
get: ({ get }) => get(tableColumnsState).length,
|
||||
});
|
||||
|
||||
export const visibleTableColumnsState = selector({
|
||||
key: 'visibleTableColumnsState',
|
||||
get: ({ get }) => get(tableColumnsState).filter((column) => column.isVisible),
|
||||
});
|
||||
|
||||
export const hiddenTableColumnsState = selector({
|
||||
key: 'hiddenTableColumnsState',
|
||||
get: ({ get }) =>
|
||||
get(tableColumnsState).filter((column) => !column.isVisible),
|
||||
});
|
||||
@ -1,61 +0,0 @@
|
||||
import { atom, selector } from 'recoil';
|
||||
|
||||
import { companyViewFields } from '@/companies/constants/companyViewFields';
|
||||
import { peopleViewFields } from '@/people/constants/peopleViewFields';
|
||||
|
||||
import type {
|
||||
ViewFieldDefinition,
|
||||
ViewFieldMetadata,
|
||||
} from '../../editable-field/types/ViewField';
|
||||
|
||||
export const viewFieldsState = atom<{
|
||||
objectName: 'company' | 'person' | '';
|
||||
viewFields: ViewFieldDefinition<ViewFieldMetadata>[];
|
||||
}>({
|
||||
key: 'viewFieldsState',
|
||||
default: { objectName: '', viewFields: [] },
|
||||
});
|
||||
|
||||
export const columnWidthByViewFieldIdState = selector({
|
||||
key: 'columnWidthByViewFieldIdState',
|
||||
get: ({ get }) =>
|
||||
get(viewFieldsState).viewFields.reduce<Record<string, number>>(
|
||||
(result, viewField) => ({
|
||||
...result,
|
||||
[viewField.id]: viewField.columnSize,
|
||||
}),
|
||||
{},
|
||||
),
|
||||
});
|
||||
|
||||
export const addableViewFieldDefinitionsState = selector({
|
||||
key: 'addableViewFieldDefinitionsState',
|
||||
get: ({ get }) => {
|
||||
const { objectName, viewFields } = get(viewFieldsState);
|
||||
|
||||
if (!objectName) return [];
|
||||
|
||||
const existingColumnLabels = viewFields.map(
|
||||
(viewField) => viewField.columnLabel,
|
||||
);
|
||||
const viewFieldDefinitions =
|
||||
objectName === 'company' ? companyViewFields : peopleViewFields;
|
||||
|
||||
return viewFieldDefinitions.filter(
|
||||
(viewFieldDefinition) =>
|
||||
!existingColumnLabels.includes(viewFieldDefinition.columnLabel),
|
||||
);
|
||||
},
|
||||
});
|
||||
|
||||
export const visibleViewFieldsState = selector({
|
||||
key: 'visibleViewFieldsState',
|
||||
get: ({ get }) =>
|
||||
get(viewFieldsState).viewFields.filter((viewField) => viewField.isVisible),
|
||||
});
|
||||
|
||||
export const hiddenViewFieldsState = selector({
|
||||
key: 'hiddenViewFieldsState',
|
||||
get: ({ get }) =>
|
||||
get(viewFieldsState).viewFields.filter((viewField) => !viewField.isVisible),
|
||||
});
|
||||
Reference in New Issue
Block a user