diff --git a/src/features/badge/components/LinkedBadges.vue b/src/features/badge/components/LinkedBadges.vue index eaea95d0a54a71953dab2d0e092be1a654e36fd5..13a5e91aa26098301b4d2dc80936e151ac289967 100644 --- a/src/features/badge/components/LinkedBadges.vue +++ b/src/features/badge/components/LinkedBadges.vue @@ -23,7 +23,7 @@ function openBadge(badgeId: string) { <template> <template v-if="connectedBadges.length > 0"> - <h3 class="field-title">Badges connectés</h3> + <h3 class="field-title">Badges associés</h3> <hr class="separator"> <div class="badges"> <BadgeItem diff --git a/src/features/forms/FormPanel.vue b/src/features/forms/FormPanel.vue index ba9e8905bb2e355e157ca5ca258b795abe1b71cb..f62616e1e54db78cffd5d7a55aa485061727c17f 100644 --- a/src/features/forms/FormPanel.vue +++ b/src/features/forms/FormPanel.vue @@ -3,7 +3,7 @@ import { useEditorStore } from '../../shared/stores'; import FormButton from './components/FormButton.vue'; import GenericField from './components/GenericField.vue'; import { Input } from '@/src/shared/interfaces'; -import { deleteBadge, editorService } from '@/src/shared/services'; +import { addNewBadge, deleteBadge, editorService } from '@/src/shared/services'; import { createToaster } from '@meforma/vue-toaster'; import { confirmDelete, @@ -36,7 +36,7 @@ function actionOnForm(action: string) { case 'back-to-page': editorStore.openPage(); break; - + case 'duplicate-element': duplicateContent(); break; @@ -63,6 +63,9 @@ function actionOnForm(action: string) { editorStore.openEpoc(); break; + case 'add-badge': + addNewBadge(); + break; } } diff --git a/src/features/forms/components/inputs/badges/BadgesInput.vue b/src/features/forms/components/inputs/badges/BadgesInput.vue index 2cac7fb404efb9ed35df40dde93d5ae9583ad759..7be85dac087b807826ebffcd7d0f2a09c2ec8345 100644 --- a/src/features/forms/components/inputs/badges/BadgesInput.vue +++ b/src/features/forms/components/inputs/badges/BadgesInput.vue @@ -1,22 +1,14 @@ <script setup lang="ts"> import BadgeItem from '@/src/features/badge/components/BadgeItem.vue'; import AddBadge from './components/AddBadge.vue'; -import { useEditorStore } from '@/src/shared/stores/editorStore'; import { computed, ComputedRef } from 'vue'; -import { generateContentId } from '@/src/shared/services'; import { Badge } from '@/src/shared/interfaces'; -import { saveState } from '@/src/shared/services/undoRedo.service'; - -const editorStore = useEditorStore(); +import { addNewBadge, openBadge } from '@/src/shared/services'; const props = defineProps<{ inputValue: string[]; }>(); -function openBadge(badgeId: string) { - editorStore.openBadgeFormPanel(badgeId, 'custom'); -} - const badges: ComputedRef<Badge[]> = computed(() => { const res: Badge[] = []; for(let value in props.inputValue) { @@ -33,24 +25,6 @@ const badges: ComputedRef<Badge[]> = computed(() => { return res; }); -function addNewBadge() { - saveState(true); - - const epocNode = editorStore.getEpocNode; - if(!epocNode.data.formValues['badges']) epocNode.data.formValues['badges'] = {}; - - const id = generateContentId(); - epocNode.data.formValues['badges'][id] = { - title: '', - icon: '', - description: '', - rule: { - 'and': [] - } - }; - openBadge(id); -} - </script> <template> diff --git a/src/shared/data/forms/formButtons.data.ts b/src/shared/data/forms/formButtons.data.ts index 5a82e880a0324b3ebd469eeebb1dbf499d43dbb8..04eace3440dec7ac9631c1113909b5cdcdfcbca0 100644 --- a/src/shared/data/forms/formButtons.data.ts +++ b/src/shared/data/forms/formButtons.data.ts @@ -1,7 +1,7 @@ import { FormButton } from '@/src/shared/interfaces'; import env from '@/src/shared/utils/env'; -export const baseButtons = [{ label: 'Supprimer', icon: 'icon-supprimer', action: 'delete' }]; +export const baseButtons = [{ label: 'Supprimer', icon: 'icon-supprimer', action: 'delete' }, { label: 'Ajouter un badge', icon: 'icon-plus', action: 'add-badge'}]; export const pageButtons: FormButton[] = env.isDev ? [ ...baseButtons, diff --git a/src/shared/services/badge.service.ts b/src/shared/services/badge.service.ts index a504598ef1595ede51d1265c58086e89d1a9fb3e..25dd5946ae6fdc9a3efbb1b62648f1f049e8cdc3 100644 --- a/src/shared/services/badge.service.ts +++ b/src/shared/services/badge.service.ts @@ -4,6 +4,7 @@ import { useEditorStore } from '@/src/shared/stores'; import { useVueFlow} from '@vue-flow/core'; import { saveState } from '@/src/shared/services/undoRedo.service'; import { elementVerbs, verbs } from '@/src/shared/data'; +import { generateContentId } from '@/src/shared/services'; const { findNode } = useVueFlow({id: 'main'}); @@ -170,4 +171,31 @@ export function deleteBadge(id: string) { const epocNode = findNode('1'); delete epocNode.data.formValues.badges[id]; +} + +export function openBadge(badgeId: string) { + const editorStore = useEditorStore(); + + editorStore.openBadgeFormPanel(badgeId, 'custom'); +} + +export function addNewBadge() { + const editorStore = useEditorStore(); + + saveState(true); + + const epocNode = editorStore.getEpocNode; + if(!epocNode.data.formValues['badges']) epocNode.data.formValues['badges'] = {}; + + const id = generateContentId(); + epocNode.data.formValues['badges'][id] = { + title: '', + icon: '', + description: '', + rule: { + 'and': [] + } + }; + + openBadge(id); } \ No newline at end of file