diff --git a/app/javascript/dashboard/components-next/captain/pageComponents/assistant/settings/AssistantAudienceForm.vue b/app/javascript/dashboard/components-next/captain/pageComponents/assistant/settings/AssistantAudienceForm.vue index 26ce5b558..24b9c63bc 100644 --- a/app/javascript/dashboard/components-next/captain/pageComponents/assistant/settings/AssistantAudienceForm.vue +++ b/app/javascript/dashboard/components-next/captain/pageComponents/assistant/settings/AssistantAudienceForm.vue @@ -2,6 +2,7 @@ import { ref, watch, useTemplateRef } from 'vue'; import { useI18n } from 'vue-i18n'; import Button from 'dashboard/components-next/button/Button.vue'; +import RadioCard from 'dashboard/components-next/radioCard/RadioCard.vue'; import AudienceGroup from './audience/AudienceGroup.vue'; import { useAudienceFilterTypes } from './audience/useAudienceFilterTypes.js'; @@ -29,6 +30,7 @@ const hasConditions = node => const defaultRoot = () => ({ id: nextId(), operator: 'and', conditions: [] }); const root = ref(defaultRoot()); +const mode = ref('everyone'); const findOption = (filterType, value) => filterType?.options?.find(option => String(option.id) === String(value)); @@ -106,11 +108,13 @@ const serializeNode = node => { const groupRef = useTemplateRef('groupRef'); const handleSubmit = () => { - if (!groupRef.value.validate()) return; + const isSpecific = mode.value === 'specific'; + if (isSpecific && !groupRef.value.validate()) return; - const audience = root.value.conditions.length - ? serializeNode(root.value) - : null; + const audience = + isSpecific && root.value.conditions.length + ? serializeNode(root.value) + : null; emit('submit', { config: { @@ -123,20 +127,42 @@ const handleSubmit = () => { watch( () => props.assistant, newAssistant => { - if (newAssistant) root.value = hydrateRoot(newAssistant.config?.audience); + if (!newAssistant) return; + const audience = newAssistant.config?.audience; + root.value = hydrateRoot(audience); + mode.value = audience ? 'specific' : 'everyone'; }, { immediate: true } );