Make slug optional in admin create forms

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-05-24 15:58:58 +03:30
co-authored by Cursor
parent cca999baf9
commit 4c99389f5c
5 changed files with 43 additions and 30 deletions
+5 -5
View File
@@ -80,8 +80,7 @@
v-model="form.slug"
label="اسلاگ (انگلیسی)"
ltr
placeholder="haircut"
required
placeholder="اختیاری — از عنوان ساخته می‌شود"
/>
<AppTextarea id="tplDesc" v-model="form.description" label="توضیحات" rows="2" />
<AppInput
@@ -125,7 +124,7 @@ import SearchInput from '@/components/ui/SearchInput.vue';
import AdminLayout from '@/layouts/AdminLayout.vue';
import { activeLabel } from '@/utils/format';
import { filterBySearch } from '@/utils/search';
import { isValidSlug, slugify } from '@/utils/slug';
import { isValidSlug, optionalSlug, slugify } from '@/utils/slug';
const categories = ref<BusinessCategory[]>([]);
const templates = ref<ServiceTemplate[]>([]);
@@ -222,7 +221,8 @@ function maybeSlug() {
async function onSave() {
if (!selectedCategoryId.value) return;
if (!isValidSlug(form.value.slug)) {
const slug = optionalSlug(form.value.slug);
if (slug && !isValidSlug(slug)) {
error.value = 'اسلاگ فقط حروف کوچک انگلیسی و خط تیره باشد.';
return;
}
@@ -236,7 +236,7 @@ async function onSave() {
try {
const payload = {
title: form.value.title.trim(),
slug: form.value.slug.trim(),
...(slug ? { slug } : {}),
description: form.value.description.trim() || undefined,
defaultDurationMinutes: duration,
isActive: form.value.isActive,