Skip to content

Définition API

TResourceFormMetadataAndData

typescript
export type TResourceFormMetadataAndData = {
  form: TResourceFormMetadata;
  resource_data: TResourceData;
};

TResourceFormMetadata

typescript
export type TResourceFormMetadata = {
  sections: TResourceFormSectionMetadata[];
  resource_name: string;
  backend_date_format: string;
  backend_datetime_format: string;
  resetable?: boolean | null;
  clearable: boolean | null;
  css_class: string | null;
  readonly: boolean | null;
};

TResourceFormSectionMetadata

typescript
export type TResourceFormSectionMetadata = {
  fields: TResourceFieldMetadata[];
  label: string | null;
  name: string | null;
  icon: string | null;
  css_class: string | null;
  readonly: boolean | null;
};

TResourceFieldMetadata

typescript
export type TResourceFieldMetadata = {
  field_name: string;
  field_type: TFormField["type"];
  field_extra_type?: TFormField["extraType"];
  label: string;
  field_association_name: string | null;
  field_association_class: string | null;
  hint: string | null;
  prefix: string | null;
  suffix: string | null;
  readonly: boolean | null;
  rules: TSubmit64Rule[];
  static_select_options: TSubmit64StaticSelectOptions[];
  css_class: string | null;
  unlinked: boolean;
  field_association_data?: {
    label: string;
    data: TRecord;
  }[];
  field_attachment_data?: {
    attachment_id: TRecord["id"];
    filename: string;
    size: number;
  }[];
};

TSubmit64AssociationData

typescript
export type TSubmit64AssociationData = {
  rows: TSubmit64AssociationRowEntry[];
  row_count: number;
};

TSubmit64AssociationRowEntry

typescript
export type TSubmit64AssociationRowEntry = {
  label: string;
  value: TRecord["id"];
  data: TRecord;
};

TSubmit64SubmitData

typescript
export type TSubmit64SubmitData = {
  success: boolean;
  errors: Record<string, string[]>;
  resource_id: TRecord["id"] | null;
  resource_data: TResourceData | null;
  form: TResourceFormMetadata | null;
};

TFormSettings

typescript
export type TFormSettings = {
  backendDateFormat: string;
  backendDatetimeFormat: string;

  /*
   * Comportement des règles, validation à chaque saisie ou à la soummission du formulaire
   */
  rulesBehaviour?: "lazy" | "ondemand" | undefined;

  /*
   * Format des dates à afficher/editer
   */
  dateFormat?: string | undefined;

  /*
   * Format des datetimes à afficher/editer
   */
  datetimeFormat?: string | undefined;

  /*
   * Affiche les indices déclarés coté serveur
   */
  renderBackendHint?: boolean | undefined;

  /*
   * Message affiché lors d'une recherche vide sur les champs d'associations
   */
  associationEmptyMessage?: string | undefined;

  /*
   * Affiche les libelles des champs requis avec un astérisque
   */
  requiredFieldsHasAsterisk?: boolean | undefined;
};

TFormStyle

typescript
export type TFormStyle = {
  fieldFilled?: boolean | undefined;
  fieldOutlined?: boolean | undefined;
  fieldStandout?: boolean | string | undefined;
  fieldBorderless?: boolean | undefined;
  fieldRounded?: boolean | undefined;
  fieldSquare?: boolean | undefined;
  fieldDense?: boolean | undefined;
  fieldHideBottomSpace?: boolean | undefined;
  fieldColor?: string | undefined;
  fieldBgColor?: string | undefined;
  fieldClass?: string | undefined;
};

TFormSection

typescript
export type TFormSection = {
  fields: TFormField[];
  name: Readonly<string>;
  label?: string;
  icon?: string;
  hidden: boolean;
  cssClass?: string;
  readonly?: boolean;
  beforeComponent?: Readonly<Component> | undefined;
  mainComponent: Readonly<Component>;
  fieldsComponent: Readonly<Component>; // late init
  afterComponent?: Readonly<Component> | undefined;
  events: Readonly<TFormSectionEvent>;
};

TFormField

typescript
export type TFormField = {
  type: Readonly<
    | "string"
    | "text"
    | "date"
    | "datetime"
    | "select"
    | "selectBelongsTo"
    | "selectHasMany"
    | "selectHasOne"
    | "selectHasAndBelongsToMany"
    | "checkbox"
    | "number"
    | "object"
    | "attachmentHasOne"
    | "attachmentHasMany"
  >;
  extraType?: Readonly<"color" | "wysiwyg"> | undefined;
  metadata: Readonly<TResourceFieldMetadata>;
  label?: string;
  hint?: string;
  suffix?: string;
  prefix?: string;
  readonly?: boolean;
  rules?: TSubmit64Rule[];
  cssClass?: string;
  clearable?: boolean;
  hidden: boolean;
  associationData?: {
    label: string;
    data: TRecord;
  }[];
  attachmentData?: {
    attachment_id: TRecord["id"];
    filename: string;
    size: number;
  }[];
  staticSelectOptions?: TSubmit64StaticSelectOptions[];
  beforeComponent?: Readonly<Component> | undefined;
  mainComponent: Readonly<Component>;
  afterComponent?: Readonly<Component> | undefined;
  events: Readonly<TFormFieldEvent>;
  componentOptions: {
    associationDisplayComponent?: Readonly<Component>;
    regularFieldType?: "textarea";
  };
};

TSubmit64FormApi

typescript
export type TSubmit64FormApi = {
  /*
   * Obtient le mode du formulaire, edition ou création
   */
  getMode: () => TSubmit64FormMode;

  /*
   * Valide le formulaire, déclenchant toutes les validations de chaque champ
   */
  validate: () => boolean;

  /*
   * Réinitialise tous les champs à leurs valeurs d’origine
   */
  reset: () => void;

  /*
   * Réinitialise tous les champs à leurs valeurs d’origine
   * Ne déclanche pas les événements, ni la réinitialisation des validations
   */
  softReset: () => void;

  /*
   * Efface tout les champs
   */
  clear: () => void;

  /*
   * Réinitialise les validations
   */
  resetValidation: () => void;

  /*
   * Soumet le formulaire
   */
  submit: () => Promise<void>;

  /*
   * Renvoi les données de la dernière soumission
   */
  getSubmitData: () => TSubmit64SubmitData["resource_data"];

  /*
   * Renvoi si le formulaire à été modifier ou non
   */
  valuesHasChanged: () => boolean;

  /*
   * Renvoi si le formulaire est valide, déclanche toutes les validations
   */
  isValid: () => boolean;

  /*
   * Renvoi si le formulaire est invalide, déclanche toutes les validations
   */
  isInvalid: () => boolean;

  /*
   * Renvoi si le formulaire est prêt
   */
  isReady: () => boolean;

  /*
   * Renvoi une section par son nom
   */
  getSectionByName: (sectionName: string) => TSubmit64SectionApi | undefined;

  /*
   * Renvoi une section par index
   */
  getSectionByIndex: (sectionIndex: number) => TSubmit64SectionApi | undefined;

  /*
   * Renvoi toutes les sections
   */
  getSections: () => Map<string, TSubmit64SectionApi>;

  /*
   * Renvoi un champ par son nom
   */
  getFieldByName: (fieldName: string) => TSubmit64FieldApi | undefined;

  /*
   * Renvoi tout les champs
   */
  getFields: () => Map<string, TSubmit64FieldApi>;

  /*
   * Renvoi la valeur désérialisée d'un champ par le nom de celui-ci (valeur avant interopérabilité)
   */
  getInitialValueByFieldName: (fieldName: string) => unknown;

  /*
   * Renvoi la fonction d'association
   */
  getAssociationDataCallback: () => (
    submit64Params: TSubmit64GetAssociationData,
  ) => Promise<TSubmit64AssociationData>;

  /*
   * Met à jour le context
   */
  setContext: (context: TContext) => void;

  /*
   * Met à jour la classe css du formulaire
   */
  setCssClass: (cssClass: string) => void;

  /*
   * Met à jour l'état de lecture seule
   */
  setReadonlyState: (state: boolean) => void;

  /*
   * Accés au données du formulaire en mode lecture seule
   */
  form: TForm;
};

TSubmit64SectionApi

typescript
export type TSubmit64SectionApi = {
  /*
   * Réinitialise les champs de la section
   */
  reset: () => void;

  /*
   * Réinitialise les champs de la section
   * Ne déclenche pas les événements, ni la réinitialisation des validations
   */
  softReset: () => void;

  /*
   * Efface les champs de la section
   */
  clear: () => void;

  /*
   * Valide les champs de la section
   */
  validate: () => boolean;

  /*
   * Renvoi si les champs de la section sont valides. Déclanche la validation
   */
  isValid: () => boolean;

  /*
   * Renvoi si les champs de la section sont invalides. Déclanche la validation
   */
  isInvalid: () => boolean;

  /*
   * Cache la section et ses champs
   */
  hide: () => void;

  /*
   * Affiche la section et ses champs
   */
  unhide: () => void;

  /*
   * Réinitialise les validations des champs de la section
   */
  resetValidation: () => void;

  /*
   * Renvoi les champs de la section
   */
  getFields: () => Map<string, TSubmit64FieldApi>;

  /*
   * Met à jour l'état de lecture seule des champs de la section
   */
  setReadonlyState: (state: boolean) => void;

  /*
   * Met à jour la classe css de la section
   */
  setCssClass: (cssClass: string) => void;

  /*
   * Met à jour l'icon de la section
   */
  setIcon: (icon: string) => void;

  /*
   * Met à jour le libelle de la section
   */
  setLabel: (label: string) => void;

  /*
   * Accés au donnée de la section en lecture seule
   */
  section: TFormSection;
};

TSubmit64FieldApi

typescript
export type TSubmit64FieldApi = {
  /*
   * Réinitialise le champ
   */
  reset: () => void;

  /*
   * Réinitialise le champ
   * Ne déclenche pas les événements, ni la réinitialisation des validations
   */
  softReset: () => void;

  /*
   * Vide le champ
   */
  clear: () => void;

  /*
   * Valide le champ
   */
  validate: () => boolean;

  /*
   * Renvoi si le champ est valide
   */
  isValid: () => boolean;

  /*
   * Renvoi si le champ est invalide
   */
  isInvalid: () => boolean;

  /*
   * Cache le champ
   */
  hide: () => void;

  /*
   * Affiche le champ
   */
  unhide: () => void;

  /*
   * Réinitialise les validations du champ
   */
  resetValidation: () => void;

  /*
   * Renvoi la valeur serialisée du champ
   */
  getValueSerialized: () => unknown;

  /*
   * Renvoi la valeur déserialisée du champ
   */
  getValueDeserialized: () => unknown;

  /*
   * Met à jour les erreurs provenant de l'intéroperabilité
   */
  setupBackendErrors: (errors: string[]) => void;

  /*
   * Met à jour l'état de lecture seule
   */
  setReadonlyState: (state: boolean) => void;

  /*
   * Met à jour l'indice du champ
   */
  setHint: (hint: string) => void;

  /*
   * Met à jour la classe css du champ
   */
  setCssClass: (cssClass: string) => void;

  /*
   * Met à jour le suffix du champ
   */
  setSuffix: (suffix: string) => void;

  /*
   * Met à jour le prefix du champ
   */
  setPrefix: (prefix: string) => void;

  /*
   * Met à jour le libelle du champ
   */
  setLabel: (label: string) => void;

  /*
   * Met à jour la valeur du champ
   */
  setValue: (value: unknown) => void;

  /*
   * Accès au données du champs en lecture seule
   */
  field: TFormField;
};

TSubmit64FormProps

typescript
export type TSubmit64FormProps = {
  resourceName: string;
  getMetadataAndData: (
    submit64Params: TSubmit64GetMetadataAndData,
  ) => Promise<TResourceFormMetadataAndData>;
  getSubmitFormData: (
    submit64Params: TSubmit64GetSubmitData,
  ) => Promise<TSubmit64SubmitData>;
  getAssociationData?: (
    submit64Params: TSubmit64GetAssociationData,
  ) => Promise<TSubmit64AssociationData>;
  resourceId?: TRecord["id"] | undefined;
  formSettings?: TFormSettingsProps | undefined;
  formStyle?: TFormStyle | undefined;
  actionComponent?: Component | undefined;
  orphanErrorsComponent?: Component | undefined;
  sectionComponent?: Component | undefined;
  wrapperResetComponent?: Component | undefined;
  associationDisplayComponent?: Component | undefined;
  associationDisplayRecord?: Record<string, Component> | undefined;
  eventManager?: (eventManager: DynamicLogicBuilder) => void;
  context?: TContext | undefined;
};

TSubmit64SectionProps

typescript
export type TSubmit64SectionProps = {
  formApi: TSubmit64FormApi;
  sectionApi: TSubmit64SectionApi;
};

TSubmit64AssociationDisplayProps

typescript
export type TSubmit64AssociationDisplayProps = {
  associationName: string;
  entry: TSubmit64AssociationRowEntry;
  itemProps: QItemProps;
};

TSubmit64OrphanErrorFormProps

typescript
export type TSubmit64OrphanErrorFormProps = {
  orphanErrors: Record<string, string[]>;
  formApi: TSubmit64FormApi;
};

TSubmit64ActionFormProps

typescript
export type TSubmit64ActionFormProps = {
  isLoadingSubmit: boolean;
  formApi: TSubmit64FormApi;
};

TSubmit64BeforeAfterSectionProps

typescript
export type TSubmit64BeforeAfterSectionProps = {
  formApi: TSubmit64FormApi;
  sectionApi: TSubmit64SectionApi;
};

TSubmit64BeforeAfterFieldProps

typescript
export type TSubmit64BeforeAfterFieldProps = {
  formApi: TSubmit64FormApi;
  fieldApi: TSubmit64FieldApi;
};

TSubmit64GetMetadataAndData

typescript
export type TSubmit64GetMetadataAndData = {
  resourceName: string;
  resourceId?: TRecord["id"];
  context?: TContext;
};

TSubmit64GetAssociationData

typescript
export type TSubmit64GetAssociationData = {
  resourceName: string;
  resourceId?: TRecord["id"];
  associationName: string;
  limit: number;
  offset: number;
  labelFilter?: string;
  context?: TContext;
};

TSubmit64GetSubmitData

typescript
export type TSubmit64GetSubmitData = {
  resourceName: string;
  resourceData: Record<string, unknown>;
  resourceId?: TRecord["id"];
  context?: TContext;
};

TSubmit64EventWhen

typescript
export type TSubmit64EventWhen = {
  "Field is updated": { fieldName: string };
  "Field is valid": { fieldName: string };
  "Field is invalid": { fieldName: string };
  "Field is validated": { fieldName: string };
  "Field is cleared": { fieldName: string };
  "Field is reseted": { fieldName: string };
  "Field is hidden": { fieldName: string };
  "Field is unhidden": { fieldName: string };
  "Field is ready": { fieldName: string };
  "Section is valid": { sectionName: string };
  "Section is invalid": { sectionName: string };
  "Section is updated": { sectionName: string };
  "Section is validated": { sectionName: string };
  "Section is hidden": { sectionName: string };
  "Section is unhidden": { sectionName: string };
  "Section is cleared": { sectionName: string };
  "Section is reseted": { sectionName: string };
  "Section is ready": { sectionName: string };
  "Form is ready": undefined;
  "Form is submited": undefined;
  "Form submit is successful": undefined;
  "Form submit is unsuccessful": undefined;
  "Form is updated": undefined;
  "Form is cleared": undefined;
  "Form is reseted": undefined;
  "Form is valid": undefined;
  "Form is invalid": undefined;
  "Form is validated": undefined;
};