diff --git a/src/components/v-form/types.ts b/src/components/v-form/types.ts index 3ad5f6dbde..7a371f6078 100644 --- a/src/components/v-form/types.ts +++ b/src/components/v-form/types.ts @@ -4,4 +4,5 @@ import { TranslateResult } from 'vue-i18n'; export type FormField = Partial & { field: string; name: string | TranslateResult; + hideLabel?: boolean; }; diff --git a/src/components/v-form/v-form.vue b/src/components/v-form/v-form.vue index b7a89e6b51..58196563ef 100644 --- a/src/components/v-form/v-form.vue +++ b/src/components/v-form/v-form.vue @@ -2,6 +2,7 @@
{ let formFields = [...fields.value]; + /** + * @NOTE + * + * This can be optimized by combining a bunch of these maps and filters + */ + // Filter out the fields that are marked hidden on detail formFields = formFields.filter((field) => { const hiddenDetail = field.hidden_detail; @@ -203,14 +210,20 @@ export default defineComponent({ // Make sure all used interfaces actually exist, default to text-input if not formFields = formFields.map((field) => { - const interfaceExists = - interfaces.find((int) => int.id === field.interface) !== undefined; + const interfaceUsed = interfaces.find((int) => int.id === field.interface); + const interfaceExists = interfaceUsed !== undefined; if (interfaceExists === false) { - return { - ...field, - interface: 'text-input', - }; + /** + * @NOTE + * Can be optimized by making the default smarter based on type used for the + * field + */ + field.interface = 'text-input'; + } + + if (interfaceUsed?.hideLabel === true) { + (field as FormField).hideLabel = true; } return field; diff --git a/src/interfaces/divider/index.ts b/src/interfaces/divider/index.ts index d2a7384224..a5a714beb2 100644 --- a/src/interfaces/divider/index.ts +++ b/src/interfaces/divider/index.ts @@ -6,6 +6,7 @@ export default defineInterface(({ i18n }) => ({ name: i18n.t('divider'), icon: 'remove', component: InterfaceDivider, + hideLabel: true, options: [ { field: 'color', diff --git a/src/interfaces/types.ts b/src/interfaces/types.ts index 7ddc670682..b1de3d943d 100644 --- a/src/interfaces/types.ts +++ b/src/interfaces/types.ts @@ -8,6 +8,7 @@ export type InterfaceConfig = { name: string | VueI18n.TranslateResult; component: Component; options: Partial[] | Component; + hideLabel?: boolean; }; export type InterfaceContext = { i18n: VueI18n };