From 26f673011cf43c63552785605f7b3582bdfe7a4e Mon Sep 17 00:00:00 2001 From: rijkvanzanten Date: Wed, 22 Jul 2020 13:49:05 -0400 Subject: [PATCH] Setup field setup modal as nested route --- src/components/v-button/v-button.vue | 8 - .../use-field-tree/use-field-tree.ts | 4 +- .../use-form-fields/use-form-fields.ts | 2 +- src/lang/en-US/index.json | 6 +- src/layouts/cards/cards.vue | 2 +- src/layouts/tabular/tabular.vue | 2 +- src/modules/settings/index.ts | 17 +- .../data-model/collections/collections.vue | 8 +- .../new-collection/new-collection.vue | 18 +- .../data-model/field-detail/field-detail.vue | 41 +++ .../routes/data-model/field-detail/index.ts | 4 + .../components/field-select/field-select.vue | 4 +- .../field-setup/field-setup-display.vue | 91 ------ .../field-setup/field-setup-field.vue | 100 ------ .../field-setup/field-setup-interface.vue | 113 ------- .../field-setup-relationship-m2m.vue | 210 ------------ .../field-setup-relationship-m2o.vue | 141 -------- .../field-setup-relationship-o2m.vue | 163 ---------- .../field-setup/field-setup-relationship.vue | 119 ------- .../field-setup/field-setup-schema.vue | 196 ----------- .../components/field-setup/field-setup.vue | 305 ------------------ .../fields/components/field-setup/index.ts | 24 -- .../components/field-setup/setup-actions.vue | 130 -------- .../components/field-setup/setup-tabs.vue | 73 ----- .../fields/components/field-setup/types.ts | 8 - .../components/field-setup/use-validation.ts | 34 -- .../fields-management/fields-management.vue | 167 +++++----- .../routes/data-model/fields/fields.vue | 12 + .../settings/routes/data-model/index.ts | 7 +- src/stores/fields/fields.ts | 6 +- src/stores/fields/types.ts | 21 +- .../get-default-interface-for-type.ts | 8 +- .../filter-drawer-detail.vue | 4 +- 33 files changed, 202 insertions(+), 1846 deletions(-) create mode 100644 src/modules/settings/routes/data-model/field-detail/field-detail.vue create mode 100644 src/modules/settings/routes/data-model/field-detail/index.ts delete mode 100644 src/modules/settings/routes/data-model/fields/components/field-setup/field-setup-display.vue delete mode 100644 src/modules/settings/routes/data-model/fields/components/field-setup/field-setup-field.vue delete mode 100644 src/modules/settings/routes/data-model/fields/components/field-setup/field-setup-interface.vue delete mode 100644 src/modules/settings/routes/data-model/fields/components/field-setup/field-setup-relationship-m2m.vue delete mode 100644 src/modules/settings/routes/data-model/fields/components/field-setup/field-setup-relationship-m2o.vue delete mode 100644 src/modules/settings/routes/data-model/fields/components/field-setup/field-setup-relationship-o2m.vue delete mode 100644 src/modules/settings/routes/data-model/fields/components/field-setup/field-setup-relationship.vue delete mode 100644 src/modules/settings/routes/data-model/fields/components/field-setup/field-setup-schema.vue delete mode 100644 src/modules/settings/routes/data-model/fields/components/field-setup/field-setup.vue delete mode 100644 src/modules/settings/routes/data-model/fields/components/field-setup/index.ts delete mode 100644 src/modules/settings/routes/data-model/fields/components/field-setup/setup-actions.vue delete mode 100644 src/modules/settings/routes/data-model/fields/components/field-setup/setup-tabs.vue delete mode 100644 src/modules/settings/routes/data-model/fields/components/field-setup/types.ts delete mode 100644 src/modules/settings/routes/data-model/fields/components/field-setup/use-validation.ts diff --git a/src/components/v-button/v-button.vue b/src/components/v-button/v-button.vue index c949d6929f..ab43956ade 100644 --- a/src/components/v-button/v-button.vue +++ b/src/components/v-button/v-button.vue @@ -216,10 +216,6 @@ body { justify-content: flex-end; } - &:active { - transform: scale(0.98); - } - &:focus { outline: 0; } @@ -229,10 +225,6 @@ body { background-color: var(--v-button-background-color-disabled); border: var(--border-width) solid var(--v-button-background-color-disabled); cursor: not-allowed; - - &:active { - transform: scale(1); - } } &.rounded { diff --git a/src/composables/use-field-tree/use-field-tree.ts b/src/composables/use-field-tree/use-field-tree.ts index 91b9ec00cc..cc0f41e4e9 100644 --- a/src/composables/use-field-tree/use-field-tree.ts +++ b/src/composables/use-field-tree/use-field-tree.ts @@ -14,7 +14,7 @@ export default function useFieldTree(collection: Ref) { .getFieldsForCollection(collection.value) .filter( (field: Field) => - field.system?.hidden_browse === false && field.system?.special?.toLowerCase() !== 'alias' + field.system?.hidden === false && field.system?.special?.toLowerCase() !== 'alias' ) .map((field: Field) => parseField(field, [])); @@ -44,7 +44,7 @@ export default function useFieldTree(collection: Ref) { .getFieldsForCollection(relatedCollection) .filter( (field: Field) => - field.system?.hidden_browse === false && + field.system?.hidden === false && field.system?.special?.toLowerCase() !== 'alias' ); }) diff --git a/src/composables/use-form-fields/use-form-fields.ts b/src/composables/use-form-fields/use-form-fields.ts index 5b2c5c84b4..943e277bc6 100644 --- a/src/composables/use-form-fields/use-form-fields.ts +++ b/src/composables/use-form-fields/use-form-fields.ts @@ -18,7 +18,7 @@ export default function useFormFields(fields: Ref) { */ // Filter out the fields that are marked hidden on detail formFields = formFields.filter((field) => { - const hiddenDetail = field.system?.hidden_detail; + const hiddenDetail = field.system?.hidden; if (isEmpty(hiddenDetail)) return true; return hiddenDetail === false; }); diff --git a/src/lang/en-US/index.json b/src/lang/en-US/index.json index 101ab943b0..9f64ec532a 100644 --- a/src/lang/en-US/index.json +++ b/src/lang/en-US/index.json @@ -33,10 +33,14 @@ "schema_options_title": "All set! Below are some optional configuration options...", "creating_field": "Creating New Field", "enter_field_name": "Enter a field name...", + "standard_field": "Standard Field", - "relational_field": "Relational Field", "single_file": "Single File", "multiple_files": "Multiple Files", + "m2o_relationship": "Many to One Relationship", + "o2m_relationship": "One to Many Relationship", + "m2m_relationship": "Many to Many Relationship", + "next": "Next", "previous": "Previous", "add_field": "Add Field", diff --git a/src/layouts/cards/cards.vue b/src/layouts/cards/cards.vue index 318f39041a..6dc171e635 100644 --- a/src/layouts/cards/cards.vue +++ b/src/layouts/cards/cards.vue @@ -222,7 +222,7 @@ export default defineComponent({ const { info, primaryKeyField, fields: fieldsInCollection } = useCollection(collection); const availableFields = computed(() => - fieldsInCollection.value.filter((field) => field.system.hidden_browse !== true) + fieldsInCollection.value.filter((field) => field.system.hidden !== true) ); const fileFields = computed(() => { diff --git a/src/layouts/tabular/tabular.vue b/src/layouts/tabular/tabular.vue index 3ba7644d0b..d5d101c734 100644 --- a/src/layouts/tabular/tabular.vue +++ b/src/layouts/tabular/tabular.vue @@ -235,7 +235,7 @@ export default defineComponent({ const { info, primaryKeyField, fields: fieldsInCollection, sortField } = useCollection(collection); const availableFields = computed(() => - fieldsInCollection.value.filter((field) => field.system?.hidden_browse === false) + fieldsInCollection.value.filter((field) => field.system?.hidden === false) ); const { sort, limit, page, fields, fieldsWithRelational } = useItemOptions(); diff --git a/src/modules/settings/index.ts b/src/modules/settings/index.ts index e81f2f1dc0..631e921c8b 100644 --- a/src/modules/settings/index.ts +++ b/src/modules/settings/index.ts @@ -1,6 +1,6 @@ import { defineModule } from '@/modules/define'; import SettingsProject from './routes/project'; -import { SettingsCollections, SettingsFields } from './routes/data-model/'; +import { SettingsCollections, SettingsFields, SettingsFieldDetail } from './routes/data-model/'; import { SettingsRolesBrowse, SettingsRolesDetail } from './routes/roles'; import { SettingsWebhooksBrowse, SettingsWebhooksDetail } from './routes/webhooks'; import { SettingsPresetsBrowse, SettingsPresetsDetail } from './routes/presets'; @@ -30,7 +30,20 @@ export default defineModule(({ i18n }) => ({ name: 'settings-fields', path: '/data-model/:collection', component: SettingsFields, - props: true, + props: (route) => ({ + collection: route.params.collection, + field: route.params.field, + type: route.query.type, + }), + children: [ + { + path: ':field', + name: 'settings-fields-field', + components: { + field: SettingsFieldDetail, + }, + }, + ], }, { name: 'settings-roles-browse', diff --git a/src/modules/settings/routes/data-model/collections/collections.vue b/src/modules/settings/routes/data-model/collections/collections.vue index c40cab2a4f..2d8ef0bd5b 100644 --- a/src/modules/settings/routes/data-model/collections/collections.vue +++ b/src/modules/settings/routes/data-model/collections/collections.vue @@ -147,9 +147,7 @@ export default defineComponent({ return sortBy( collectionsStore.state.collections.filter( (collection) => - collection.collection.startsWith('directus_') === false && - collection.managed === true && - collection.hidden === false + collection.collection.startsWith('directus_') === false && collection.hidden === false ), 'collection' ); @@ -160,9 +158,7 @@ export default defineComponent({ collectionsStore.state.collections .filter( (collection) => - collection.collection.startsWith('directus_') === false && - collection.managed === true && - collection.hidden === true + collection.collection.startsWith('directus_') === false && collection.hidden === true ) .map((collection) => ({ ...collection, icon: 'visibility_off' })), 'collection' diff --git a/src/modules/settings/routes/data-model/collections/components/new-collection/new-collection.vue b/src/modules/settings/routes/data-model/collections/components/new-collection/new-collection.vue index 0a59ecf608..8104a60a54 100644 --- a/src/modules/settings/routes/data-model/collections/components/new-collection/new-collection.vue +++ b/src/modules/settings/routes/data-model/collections/components/new-collection/new-collection.vue @@ -220,8 +220,7 @@ export default defineComponent({ const field: DeepPartial = { field: primaryKeyFieldName.value, system: { - hidden_browse: false, - hidden_detail: false, + hidden: false, interface: 'numeric', readonly: true, }, @@ -318,8 +317,7 @@ export default defineComponent({ field: systemFields[1].name, system: { interface: 'sort', - hidden_detail: true, - hidden_browse: true, + hidden: true, width: 'full', special: 'sort', }, @@ -340,8 +338,7 @@ export default defineComponent({ display: 'both', }, readonly: true, - hidden_detail: true, - hidden_browse: true, + hidden: true, width: 'full', }, database: { @@ -357,8 +354,7 @@ export default defineComponent({ special: 'datetime_created', interface: 'datetime-created', readonly: true, - hidden_detail: true, - hidden_browse: true, + hidden: true, width: 'full', }, database: { @@ -378,8 +374,7 @@ export default defineComponent({ display: 'both', }, readonly: true, - hidden_detail: true, - hidden_browse: true, + hidden: true, width: 'full', }, database: { @@ -395,8 +390,7 @@ export default defineComponent({ special: 'datetime_updated', interface: 'datetime-updated', readonly: true, - hidden_detail: true, - hidden_browse: true, + hidden: true, width: 'full', }, database: { diff --git a/src/modules/settings/routes/data-model/field-detail/field-detail.vue b/src/modules/settings/routes/data-model/field-detail/field-detail.vue new file mode 100644 index 0000000000..b15b82865b --- /dev/null +++ b/src/modules/settings/routes/data-model/field-detail/field-detail.vue @@ -0,0 +1,41 @@ + + + + + diff --git a/src/modules/settings/routes/data-model/field-detail/index.ts b/src/modules/settings/routes/data-model/field-detail/index.ts new file mode 100644 index 0000000000..60e485506b --- /dev/null +++ b/src/modules/settings/routes/data-model/field-detail/index.ts @@ -0,0 +1,4 @@ +import SettingsFieldDetail from './field-detail.vue'; + +export { SettingsFieldDetail }; +export default SettingsFieldDetail; diff --git a/src/modules/settings/routes/data-model/fields/components/field-select/field-select.vue b/src/modules/settings/routes/data-model/fields/components/field-select/field-select.vue index ca05d20853..54eb3283cc 100644 --- a/src/modules/settings/routes/data-model/fields/components/field-select/field-select.vue +++ b/src/modules/settings/routes/data-model/fields/components/field-select/field-select.vue @@ -21,7 +21,7 @@ - + {{ $t('edit_field') }} @@ -49,7 +49,7 @@ -