Enhance person creation workflow: Add onPersonCreated event handling in Create, CreateModal, and AddPersons. Update type definitions and integrate event emission for streamlined person management.

This commit is contained in:
2025-09-16 13:02:17 +02:00
parent e845f8266b
commit 7d79ffa136
3 changed files with 23 additions and 6 deletions

View File

@@ -36,6 +36,7 @@
action="create"
:query="query"
ref="castPerson"
@onPersonCreated="(payload) => emit('onPersonCreated', payload)"
/>
<on-the-fly-thirdparty
@@ -55,16 +56,19 @@ import {
ONTHEFLY_CREATE_THIRDPARTY,
trans,
} from "translator";
import { CreatableEntityType } from "ChillPersonAssets/types";
import {CreatableEntityType, Person} from "ChillPersonAssets/types";
import { CreateComponentConfig } from "ChillMainAssets/types";
import PersonEdit from "ChillPersonAssets/vuejs/_components/OnTheFly/PersonEdit.vue";
const props = withDefaults(defineProps<CreateComponentConfig>(), {
allowedTypes: ["person", "thirdparty"],
allowedTypes: ["person"],
action: "create",
query: "",
});
const emit = defineEmits<{
(e: "onPersonCreated", payload: { person: Person }): void;
}>();
const type = ref<CreatableEntityType | null>(null);

View File

@@ -4,8 +4,12 @@ import Create from "ChillMainAssets/vuejs/OnTheFly/components/Create.vue";
import { CreateComponentConfig } from "ChillMainAssets/types";
import {trans, SAVE} from "translator";
import {useTemplateRef} from "vue";
import {Person} from "ChillPersonAssets/types";
const emit = defineEmits<(e: "close") => void>();
const emit = defineEmits<{
(e: "onPersonCreated", payload: { person: Person }): void;
(e: "close"): void;
}>();
const props = defineProps<CreateComponentConfig>();
const modalDialogClass = { "modal-xl": true, "modal-scrollable": true };
@@ -40,6 +44,7 @@ defineExpose({save})
:allowedTypes="props.allowedTypes"
:action="props.action"
:query="props.query"
@onPersonCreated="(payload) => emit('onPersonCreated', payload)"
></Create>
</div>
</template>

View File

@@ -26,6 +26,7 @@
:allowed-types="creatableEntityTypes"
:query="query"
@close="closeModalCreate"
@onPersonCreated="onPersonCreated"
></CreateModal>
</template>
@@ -36,7 +37,7 @@ import type {
Suggestion,
SearchOptions,
CreatableEntityType,
EntityType,
EntityType, Person,
} from "ChillPersonAssets/types";
import { marked } from "marked";
import options = marked.options;
@@ -49,14 +50,14 @@ interface AddPersonsConfig {
modalTitle: string;
options: SearchOptions;
allowCreate?: boolean;
types?: EntityType | undefined;
types?: EntityType[] | undefined;
}
const props = withDefaults(defineProps<AddPersonsConfig>(), {
suggested: () => [],
selected: () => [],
allowCreate: () => true,
types: () => undefined,
types: () => ["person"],
});
const emit =
@@ -108,6 +109,13 @@ function closeModalChoose() {
function closeModalCreate() {
showModalCreate.value = false;
}
function onPersonCreated(payload: { person: Person }) {
console.log("onPersonCreated", payload);
showModalCreate.value = false;
const suggestion = {result: payload.person, relevance: 999999, key: "person"};
emit("addNewPersons", {selected: [suggestion]});
}
</script>
<style lang="scss" scoped>