Saisissez des informations complémentaires (facultatif).
@@ -81,6 +83,7 @@
v-model="componentStructure"
:allow-subcomponents="allowComponentSubcomponents"
:max-subcomponent-depth="componentSubcomponentMaxDepth"
+ :restricted-mode="restrictedMode"
/>
@@ -92,7 +95,7 @@
Aperçu :
{{ productStructurePreview }}
-
+
+ (), {
initialData: null,
saving: false,
@@ -170,6 +185,8 @@ const props = withDefaults(defineProps<{
componentSubcomponentMaxDepth: 1,
disableSubmit: false,
disableSubmitMessage: '',
+ restrictedMode: false,
+ restrictedModeMessage: '',
})
const emit = defineEmits<{
@@ -192,6 +209,12 @@ const disableSubmitMessage = computed(() =>
? props.disableSubmitMessage
: 'Cette catégorie ne peut pas être modifiée car des éléments y sont déjà liés.',
)
+const restrictedMode = computed(() => props.restrictedMode === true)
+const restrictedModeMessage = computed(() =>
+ (props.restrictedModeMessage && props.restrictedModeMessage.trim())
+ ? props.restrictedModeMessage
+ : '',
+)
const form = reactive
({
name: '',
diff --git a/app/composables/useCategoryEditGuard.ts b/app/composables/useCategoryEditGuard.ts
index 2cfbf1e..74cb23d 100644
--- a/app/composables/useCategoryEditGuard.ts
+++ b/app/composables/useCategoryEditGuard.ts
@@ -32,7 +32,7 @@ const extractTotal = (payload: any, fallbackLength: number) => {
export function useCategoryEditGuard (config: GuardConfig) {
const { get } = useApi()
- const { showError } = useToast()
+ const { showInfo } = useToast()
const linkedCount = ref(0)
const linkedLoading = ref(false)
@@ -64,11 +64,15 @@ export function useCategoryEditGuard (config: GuardConfig) {
}
}
- const isSubmitBlocked = computed(
- () => linkedLoading.value || linkedCount.value > 0,
+ const isRestrictedMode = computed(
+ () => !linkedLoading.value && linkedCount.value > 0,
)
- const submitBlockMessage = computed(() => {
+ const isSubmitBlocked = computed(
+ () => linkedLoading.value,
+ )
+
+ const restrictedModeMessage = computed(() => {
if (linkedLoading.value) {
return config.labels.verifying
}
@@ -76,23 +80,32 @@ export function useCategoryEditGuard (config: GuardConfig) {
return ''
}
if (linkedCount.value === 1) {
- return `Modification bloquée : 1 ${config.labels.singular} est déjà lié à cette catégorie.`
+ return `Mode restreint : 1 ${config.labels.singular} est déjà lié à cette catégorie. Vous pouvez ajouter de nouveaux champs personnalisés, mais pas modifier ou supprimer les existants.`
}
- return `Modification bloquée : ${linkedCount.value} ${config.labels.plural} sont déjà liés à cette catégorie.`
+ return `Mode restreint : ${linkedCount.value} ${config.labels.plural} sont déjà liés à cette catégorie. Vous pouvez ajouter de nouveaux champs personnalisés, mais pas modifier ou supprimer les existants.`
+ })
+
+ const submitBlockMessage = computed(() => {
+ if (linkedLoading.value) {
+ return config.labels.verifying
+ }
+ return ''
})
const guardSubmitOrNotify = () => {
if (!isSubmitBlocked.value) {
return false
}
- showError(submitBlockMessage.value || 'Modification bloquée pour cette catégorie.')
+ showInfo(submitBlockMessage.value || 'Veuillez patienter...')
return true
}
return {
linkedCount,
linkedLoading,
+ isRestrictedMode,
isSubmitBlocked,
+ restrictedModeMessage,
submitBlockMessage,
loadLinkedCount,
guardSubmitOrNotify,
diff --git a/app/pages/component-category/[id]/edit.vue b/app/pages/component-category/[id]/edit.vue
index 567390b..4e0f5af 100644
--- a/app/pages/component-category/[id]/edit.vue
+++ b/app/pages/component-category/[id]/edit.vue
@@ -28,6 +28,8 @@
:saving="saving"
:disable-submit="isSubmitBlocked"
:disable-submit-message="submitBlockMessage"
+ :restricted-mode="isRestrictedMode"
+ :restricted-mode-message="restrictedModeMessage"
@submit="handleSubmit"
@cancel="handleCancel"
/>
@@ -52,7 +54,9 @@ const saving = ref(false)
const initialData = ref | null>(null)
const {
+ isRestrictedMode,
isSubmitBlocked,
+ restrictedModeMessage,
submitBlockMessage,
loadLinkedCount,
guardSubmitOrNotify,
diff --git a/app/pages/piece-category/[id]/edit.vue b/app/pages/piece-category/[id]/edit.vue
index f816c8d..7b17bbc 100644
--- a/app/pages/piece-category/[id]/edit.vue
+++ b/app/pages/piece-category/[id]/edit.vue
@@ -28,6 +28,8 @@
:saving="saving"
:disable-submit="isSubmitBlocked"
:disable-submit-message="submitBlockMessage"
+ :restricted-mode="isRestrictedMode"
+ :restricted-mode-message="restrictedModeMessage"
@submit="handleSubmit"
@cancel="handleCancel"
/>
@@ -52,7 +54,9 @@ const saving = ref(false)
const initialData = ref | null>(null)
const {
+ isRestrictedMode,
isSubmitBlocked,
+ restrictedModeMessage,
submitBlockMessage,
loadLinkedCount,
guardSubmitOrNotify,
diff --git a/app/pages/product-category/[id]/edit.vue b/app/pages/product-category/[id]/edit.vue
index 3707006..687d16d 100644
--- a/app/pages/product-category/[id]/edit.vue
+++ b/app/pages/product-category/[id]/edit.vue
@@ -28,6 +28,8 @@
:saving="saving"
:disable-submit="isSubmitBlocked"
:disable-submit-message="submitBlockMessage"
+ :restricted-mode="isRestrictedMode"
+ :restricted-mode-message="restrictedModeMessage"
@submit="handleSubmit"
@cancel="handleCancel"
/>
@@ -52,7 +54,9 @@ const saving = ref(false)
const initialData = ref | null>(null)
const {
+ isRestrictedMode,
isSubmitBlocked,
+ restrictedModeMessage,
submitBlockMessage,
loadLinkedCount,
guardSubmitOrNotify,