From 062167d8a00086ae5a21fa60430d4576947e5118 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Fastr=C3=A9?= Date: Fri, 12 Sep 2025 15:05:48 +0200 Subject: [PATCH] Enhance entity creation: Add `CreateModal` and integrate with `AddPersons` workflow. --- .../ChillMainBundle/Resources/public/types.ts | 14 +++++- .../vuejs/OnTheFly/components/Create.vue | 50 +++++++++---------- .../vuejs/OnTheFly/components/CreateModal.vue | 32 ++++++++++++ .../Resources/public/types.ts | 18 +++++-- .../public/vuejs/_components/AddPersons.vue | 39 ++++++++++++--- .../AddPersons/PersonChooseModal.vue | 26 +++++----- 6 files changed, 127 insertions(+), 52 deletions(-) create mode 100644 src/Bundle/ChillMainBundle/Resources/public/vuejs/OnTheFly/components/CreateModal.vue diff --git a/src/Bundle/ChillMainBundle/Resources/public/types.ts b/src/Bundle/ChillMainBundle/Resources/public/types.ts index fecb9a578..26ff73266 100644 --- a/src/Bundle/ChillMainBundle/Resources/public/types.ts +++ b/src/Bundle/ChillMainBundle/Resources/public/types.ts @@ -1,5 +1,6 @@ -import { GenericDoc } from "ChillDocStoreAssets/types/generic_doc"; -import { StoredObject, StoredObjectStatus } from "ChillDocStoreAssets/types"; +import {GenericDoc} from "ChillDocStoreAssets/types/generic_doc"; +import {StoredObject, StoredObjectStatus} from "ChillDocStoreAssets/types"; +import {CreatableEntityType} from "ChillPersonAssets/types"; export interface DateTime { datetime: string; @@ -278,3 +279,12 @@ export interface addNewEntities { selected: Selected[]; modal: Modal; } + +/** + * Configuration for the CreateModal and Create component + */ +export interface CreateComponentConfig { + action?: string; + allowedTypes: CreatableEntityType[]; + query?: string; +} diff --git a/src/Bundle/ChillMainBundle/Resources/public/vuejs/OnTheFly/components/Create.vue b/src/Bundle/ChillMainBundle/Resources/public/vuejs/OnTheFly/components/Create.vue index b4f972b2c..a33215b3a 100644 --- a/src/Bundle/ChillMainBundle/Resources/public/vuejs/OnTheFly/components/Create.vue +++ b/src/Bundle/ChillMainBundle/Resources/public/vuejs/OnTheFly/components/Create.vue @@ -46,34 +46,29 @@ /> - + + + + diff --git a/src/Bundle/ChillPersonBundle/Resources/public/types.ts b/src/Bundle/ChillPersonBundle/Resources/public/types.ts index a4c07e85a..848f92763 100644 --- a/src/Bundle/ChillPersonBundle/Resources/public/types.ts +++ b/src/Bundle/ChillPersonBundle/Resources/public/types.ts @@ -328,11 +328,20 @@ export interface AccompanyingPeriodWorkEvaluationDocument { workflows: object[]; } -export type EntityType = +/** + * Entity types that a user can create + */ +export type CreatableEntityType = + | "person" + | "thirdparty"; + + +/** + * Entities that can be search and selected by a user + */ +export type EntityType = CreatableEntityType | "user_group" | "user" - | "person" - | "thirdparty" | "household"; export type Entities = (UserGroup | User | Person | Thirdparty | Household) & { @@ -370,7 +379,8 @@ export interface Search { export interface SearchOptions { uniq: boolean; - type: string[]; + /** @deprecated */ + type: EntityType[]; priority: number | null; button: { size: string; diff --git a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/_components/AddPersons.vue b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/_components/AddPersons.vue index 35a674033..18adee87d 100644 --- a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/_components/AddPersons.vue +++ b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/_components/AddPersons.vue @@ -9,22 +9,31 @@ + + diff --git a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/_components/AddPersons/PersonChooseModal.vue b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/_components/AddPersons/PersonChooseModal.vue index 4c0021fc9..ea6854a8a 100644 --- a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/_components/AddPersons/PersonChooseModal.vue +++ b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/_components/AddPersons/PersonChooseModal.vue @@ -1,10 +1,8 @@