Surcharge
Il est possible de surcharger certains élements de Submit64 :
- Les options d’affichage et de comportement (format pour les dates, etc..)
- Le style des champs
- Le composant de section
- Le composant d’action
- Le composant d’affichage dans la liste des associations
- Les champs de saisie
Il existe deux types possibles de surcharge :
- Surcharge globale : effective dans toute l’application, concerne tout les formulaires de Submit64
- Surcharge locale : effective uniquement sur un formulaire ciblé
Surcharge des options du formulaire
Options disponibles :
type TFormSettings = {
/*
* Comportement des règles, validation à chaque saisie ou à la soummission du formulaire
*/
rulesBehaviour?: "lazy" | "ondemand";
/*
* Format des dates à afficher/editer
*/
dateFormat?: string;
/*
* Format des datetimes à afficher/editer
*/
datetimeFormat?: string;
/*
* Affiche les indices déclarés coté serveur
*/
renderBackendHint?: boolean;
};
Surcharge globale :
import { Submit64 } from "submit64-vue";
Submit64.registerGlobalFormSetting({
dateFormat: "DD-MM-YYYY",
datetimeFormat: "DD-MM-YYYY HH:mm",
});
Surcharge locale :
<script setup lang="ts">
import { Submit64Form } from "submit64-vue";
import type { TFormSettings } from "submit64-vue";
const formSettings: TFormSettings = {
dateFormat: "DD-MM-YYYY",
datetimeFormat: "DD-MM-YYYY HH:mm",
};
</script>
<template>
<Submit64Form :formSettings="formSettings" />
</template>
Surcharge du style des champs
Styles disponibles :
/*
* Style provenant de Quasar
*/
type TFormStyle = {
fieldFilled?: boolean;
fieldOutlined?: boolean;
fieldStandout?: boolean;
fieldBorderless?: boolean;
fieldRounded?: boolean;
fieldSquare?: boolean;
fieldDense?: boolean;
fieldHideBottomSpace?: boolean;
fieldColor?: string;
fieldBgColor?: string;
fieldClass?: string;
};
Surcharge globale :
import { Submit64 } from 'submit64-vue';
Submit64.registerGlobalFormStyle({
fieldRounded: true,
fieldColor: "secondary"
});
Surcharge locale :
<script setup lang="ts">
import { Submit64Form } from "submit64-vue";
import type { TFormStyle } from "submit64-vue";
const formStyle: TFormStyle = {
fieldRounded: true,
fieldColor: "secondary",
};
</script>
<template>
<Submit64Form :formStyle="formStyle" />
</template>
Surcharge du composant de section
Surcharge globale :
import { Submit64 } from 'submit64-vue';
import MyCustomSection from './MyCustomSection.vue'
Submit64.registerGlobalSectionComponent(MyCustomSection);
Surcharge locale :
<script setup lang="ts">
import { Submit64Form } from "submit64-vue";
import MyCustomSection from './MyCustomSection.vue'
</script>
<template>
<Submit64Form :sectionComponent="MyCustomSection" />
</template>
Exemple de composant :
<script setup lang="ts">
import type { TSubmit64SectionFormProps } from 'submit64-vue';
const propsComponent = defineProps<TSubmit64SectionFormProps>()
</script>
<template>
<div :class="propsComponent.section.cssClass">
<div class="flex row items-center">
<div class="text-body1 text-weight-medium">
My custom section ->
</div>
</div>
<div class="flex column items-start">
<slot></slot> <!-- Render all fields -->
</div>
</div>
</template>
Props disponibles :
type TSubmit64SectionFormProps = {
section: TFormSection;
};
type TFormSection = {
fields: TFormFieldDef[];
label?: string;
icon?: string;
cssClass?: string;
};
Slots disponibles :
defaultSlot // Slot par défaut, affiche les champs
Surcharge du composant d’action
Surcharge globale :
import { Submit64 } from 'submit64-vue';
import MyCustomAction from './MyCustomAction.vue'
Submit64.registerGlobalActionComponent(MyCustomAction);
Surcharge locale :
<script setup lang="ts">
import { Submit64Form } from "submit64-vue";
import MyCustomAction from './MyCustomAction.vue'
</script>
<template>
<Submit64Form :actionComponent="MyCustomAction" />
</template>
Exemple de composant :
<script setup lang="ts">
import { UiBindUtils } from 'src/utils/ui-bind';
import type { TSubmit64ActionFormProps } from 'submit64-vue';
const propsComponent = defineProps<TSubmit64ActionFormProps>();
</script>
<template>
<div class="flex row items-center no-wrap q-pt-md q-gutter-x-sm">
<q-btn
:loading="propsComponent.isLoadingSubmit"
color="amber"
label="Submit but its custom"
@click="propsComponent.submit"
/>
</div>
</template>
Props disponibles :
type TSubmit64ActionFormProps = {
/*
* Déduis si le formulaire est en procéssus de soummission. Cela prend en compte l'interopérabilité.
*/
isLoadingSubmit: boolean;
/*
* Réinitialise tous les champs à leurs valeurs d’origine
*/
reset?: () => void;
/*
* Efface tout les champs
*/
clear?: () => void;
/*
* Soumet le formulaire
*/
submit: () => Promise<void> | void;
};
Surcharge du composant d’affichage dans la liste des associations
Surcharge globale :
import { Submit64 } from 'submit64-vue';
import AssociationDisplay from './AssociationDisplay.vue'
Submit64.registerGlobalAssociationDisplayComponent(AssociationDisplay);
Surcharge locale :
<script setup lang="ts">
import { Submit64Form } from "submit64-vue";
import AssociationDisplay from './AssociationDisplay.vue'
</script>
<template>
<Submit64Form :associationDisplayRecord="AssociationDisplay" />
</template>
Exemple de composant :
<script setup lang="ts">
import type { TSubmit64AssociationDisplayPropsSlot } from "../models";
const propsComponent = defineProps<TSubmit64AssociationDisplayPropsSlot>();
</script>
<template>
<q-item v-bind="propsComponent.itemProps" class="bg-teal">
<q-item-section>
<q-item-label></q-item-label>
</q-item-section>
</q-item>
</template>
Props disponibles :
type TSubmit64AssociationDisplayPropsSlot = {
index: number;
label: string;
selected: boolean;
focused: boolean;
opt: TSubmit64AssociationRowEntry;
itemProps: QItemProps;
};
Surcharge de composant d’affichage dans la liste des associations par association
Feature en développement