From 0a23684e8099b02c5cf153dee10fee8853936fdb Mon Sep 17 00:00:00 2001 From: James Date: Fri, 22 May 2020 11:54:16 -0400 Subject: [PATCH] builds a centralized way to format fields for admin use --- .../components/elements/Table/index.scss | 2 +- .../views/collections/List/index.js | 11 +++------- src/client/utilities/formatAdminFields.js | 20 +++++++++++++++++++ 3 files changed, 24 insertions(+), 9 deletions(-) create mode 100644 src/client/utilities/formatAdminFields.js diff --git a/src/client/components/elements/Table/index.scss b/src/client/components/elements/Table/index.scss index dc396ae2b2..22209181f5 100644 --- a/src/client/components/elements/Table/index.scss +++ b/src/client/components/elements/Table/index.scss @@ -2,7 +2,7 @@ .table { margin-bottom: $baseline; - overflow-x: scroll; + overflow: auto; max-width: 100%; thead { diff --git a/src/client/components/views/collections/List/index.js b/src/client/components/views/collections/List/index.js index 5236b34bf4..372bff9a81 100644 --- a/src/client/components/views/collections/List/index.js +++ b/src/client/components/views/collections/List/index.js @@ -11,6 +11,7 @@ import Pill from '../../../elements/Pill'; import Button from '../../../elements/Button'; import SortColumn from '../../../elements/SortColumn'; import Table from '../../../elements/Table'; +import formatAdminFields from '../../../../utilities/formatAdminFields'; import './index.scss'; @@ -165,8 +166,6 @@ const ListView = (props) => { collection, collection: { slug, - fields, - timestamps, labels: { plural, }, @@ -174,11 +173,6 @@ const ListView = (props) => { } = props; const { setStepNav } = useStepNav(); - let allFields = [...fields, { name: 'id', label: 'ID' }]; - - if (timestamps) { - allFields = allFields.concat([{ name: 'createdAt', label: 'Created At' }, { name: 'updatedAt', label: 'Updated At' }]); - } useEffect(() => { setStepNav([ @@ -189,10 +183,11 @@ const ListView = (props) => { }, [setStepNav, plural]); const List = customComponents?.[slug]?.views?.List || DefaultList; + const formattedFields = formatAdminFields(collection); return ( <> - + ); }; diff --git a/src/client/utilities/formatAdminFields.js b/src/client/utilities/formatAdminFields.js new file mode 100644 index 0000000000..74aaed1e06 --- /dev/null +++ b/src/client/utilities/formatAdminFields.js @@ -0,0 +1,20 @@ +const formatAdminFields = (config) => { + let formattedFields = config.fields.reduce((formatted, field) => { + if (field.hidden === true || field?.hidden?.admin === true) { + return formatted; + } + + return [ + ...formatted, + field, + ]; + }, [{ name: 'id', label: 'ID' }]); + + if (config.timestamps) { + formattedFields = formattedFields.concat([{ name: 'createdAt', label: 'Created At' }, { name: 'updatedAt', label: 'Updated At' }]); + } + + return formattedFields; +}; + +export default formatAdminFields;