@motor-cms/ui-admin 1.6.0 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/app/components/dashboard/DashboardActivityItem.vue +3 -3
  2. package/app/components/dashboard/DashboardAnnouncements.vue +3 -3
  3. package/app/lang/de/motor-admin/ai_system_prompts.json +1 -0
  4. package/app/lang/de/motor-admin/categories.json +1 -0
  5. package/app/lang/de/motor-admin/category_trees.json +1 -0
  6. package/app/lang/de/motor-admin/clients.json +1 -0
  7. package/app/lang/de/motor-admin/config_variables.json +1 -0
  8. package/app/lang/de/motor-admin/domains.json +1 -0
  9. package/app/lang/de/motor-admin/email_templates.json +1 -0
  10. package/app/lang/de/motor-admin/languages.json +1 -0
  11. package/app/lang/de/motor-admin/permissions.json +1 -0
  12. package/app/lang/de/motor-admin/roles.json +1 -0
  13. package/app/lang/de/motor-admin/users.json +1 -0
  14. package/app/lang/en/motor-admin/ai_system_prompts.json +1 -0
  15. package/app/lang/en/motor-admin/categories.json +1 -0
  16. package/app/lang/en/motor-admin/category_trees.json +1 -0
  17. package/app/lang/en/motor-admin/clients.json +1 -0
  18. package/app/lang/en/motor-admin/config_variables.json +1 -0
  19. package/app/lang/en/motor-admin/domains.json +1 -0
  20. package/app/lang/en/motor-admin/email_templates.json +1 -0
  21. package/app/lang/en/motor-admin/languages.json +1 -0
  22. package/app/lang/en/motor-admin/permissions.json +1 -0
  23. package/app/lang/en/motor-admin/roles.json +1 -0
  24. package/app/lang/en/motor-admin/users.json +1 -0
  25. package/app/pages/motor-admin/ai-system-prompts/[id]/edit.vue +4 -4
  26. package/app/pages/motor-admin/category-trees/[id]/categories/[categoryId]/edit.vue +4 -3
  27. package/app/pages/motor-admin/category-trees/[id]/edit.vue +4 -4
  28. package/app/pages/motor-admin/clients/[id]/edit.vue +4 -4
  29. package/app/pages/motor-admin/config-variables/[id]/edit.vue +4 -4
  30. package/app/pages/motor-admin/domains/[id]/edit.vue +4 -4
  31. package/app/pages/motor-admin/email-templates/[id]/edit.vue +4 -4
  32. package/app/pages/motor-admin/languages/[id]/edit.vue +4 -4
  33. package/app/pages/motor-admin/permission-groups/[id]/edit.vue +4 -4
  34. package/app/pages/motor-admin/roles/[id]/edit.vue +4 -4
  35. package/app/pages/motor-admin/users/[id]/edit.vue +4 -3
  36. package/app/pages/search.vue +5 -0
  37. package/package.json +2 -2
@@ -1,8 +1,8 @@
1
1
  <script setup lang="ts">
2
- import { formatTimeAgo } from '@vueuse/core'
2
+ import { formatTimeAgoIntl } from '@vueuse/core'
3
3
  import type { ActivityItem } from '../../composables/useDashboardData'
4
4
 
5
- const { t } = useI18n()
5
+ const { t, locale } = useI18n()
6
6
 
7
7
  const props = defineProps<{
8
8
  item: ActivityItem
@@ -82,7 +82,7 @@ const timestamp = computed(() => new Date(props.item.created_at))
82
82
  <strong>{{ item.subject_name ?? t('motor-admin.dashboard.activity.unknown') }}</strong> {{ verb }}
83
83
  </div>
84
84
  <div class="text-xs text-dimmed mt-0.5">
85
- {{ item.causer_name ?? t('motor-admin.dashboard.activity.system') }} &middot; {{ formatTimeAgo(timestamp) }}
85
+ {{ item.causer_name ?? t('motor-admin.dashboard.activity.system') }} &middot; {{ formatTimeAgoIntl(timestamp, { locale }) }}
86
86
  </div>
87
87
  </div>
88
88
  <UBadge
@@ -1,5 +1,5 @@
1
1
  <script setup lang="ts">
2
- import { formatTimeAgo } from '@vueuse/core'
2
+ import { formatTimeAgoIntl } from '@vueuse/core'
3
3
  import type { AnnouncementItem } from '../../composables/useDashboardData'
4
4
 
5
5
  const props = defineProps<{
@@ -13,7 +13,7 @@ const emit = defineEmits<{
13
13
  create: []
14
14
  }>()
15
15
 
16
- const { t } = useI18n()
16
+ const { t, locale } = useI18n()
17
17
 
18
18
  const borderColors: Record<string, string> = {
19
19
  info: 'border-l-info',
@@ -80,7 +80,7 @@ const borderColors: Record<string, string> = {
80
80
  {{ item.linkable_name }}
81
81
  </NuxtLink>
82
82
  <div class="text-xs text-dimmed mt-2">
83
- {{ item.created_by_name }} &middot; {{ formatTimeAgo(new Date(item.starts_at ?? item.created_at)) }}
83
+ {{ item.created_by_name }} &middot; {{ formatTimeAgoIntl(new Date(item.starts_at ?? item.created_at), { locale }) }}
84
84
  </div>
85
85
  </div>
86
86
  </div>
@@ -7,6 +7,7 @@
7
7
  "prompt_description": "Der System-Prompt-Text, der an das KI-Modell gesendet wird",
8
8
  "create_title": "KI-System-Prompt erstellen",
9
9
  "edit_title": "KI-System-Prompt bearbeiten",
10
+ "view_title": "KI-System-Prompt ansehen",
10
11
  "created_success": "KI-System-Prompt erfolgreich erstellt.",
11
12
  "updated_success": "KI-System-Prompt erfolgreich aktualisiert."
12
13
  }
@@ -5,6 +5,7 @@
5
5
  "add": "Kategorie hinzufügen",
6
6
  "create_title": "Kategorie erstellen",
7
7
  "edit_title": "Kategorie bearbeiten",
8
+ "view_title": "Kategorie ansehen",
8
9
  "created_success": "Kategorie wurde erfolgreich erstellt",
9
10
  "updated_success": "Kategorie wurde erfolgreich aktualisiert",
10
11
  "parent": "Übergeordnete Kategorie",
@@ -6,6 +6,7 @@
6
6
  "add": "Kategoriebaum hinzufügen",
7
7
  "create_title": "Kategoriebaum erstellen",
8
8
  "edit_title": "Kategoriebaum bearbeiten",
9
+ "view_title": "Kategoriebaum ansehen",
9
10
  "created_success": "Kategoriebaum wurde erfolgreich erstellt",
10
11
  "updated_success": "Kategoriebaum wurde erfolgreich aktualisiert",
11
12
  "children": "Kinder",
@@ -6,6 +6,7 @@
6
6
  "add": "Mandant hinzufügen",
7
7
  "create_title": "Mandant erstellen",
8
8
  "edit_title": "Mandant bearbeiten",
9
+ "view_title": "Mandant ansehen",
9
10
  "created_success": "Mandant erfolgreich erstellt.",
10
11
  "updated_success": "Mandant erfolgreich aktualisiert.",
11
12
  "slug": "Slug",
@@ -9,6 +9,7 @@
9
9
  "is_invisible": "Versteckt",
10
10
  "create_title": "Konfigurationsvariable erstellen",
11
11
  "edit_title": "Konfigurationsvariable bearbeiten",
12
+ "view_title": "Konfigurationsvariable ansehen",
12
13
  "created_success": "Konfigurationsvariable erfolgreich erstellt.",
13
14
  "updated_success": "Konfigurationsvariable erfolgreich aktualisiert."
14
15
  }
@@ -6,6 +6,7 @@
6
6
  "add": "Domain hinzufügen",
7
7
  "create_title": "Domain erstellen",
8
8
  "edit_title": "Domain bearbeiten",
9
+ "view_title": "Domain ansehen",
9
10
  "created_success": "Domain erfolgreich erstellt.",
10
11
  "updated_success": "Domain erfolgreich aktualisiert.",
11
12
  "host": "Host",
@@ -5,6 +5,7 @@
5
5
  "add": "E-Mail-Vorlage hinzufügen",
6
6
  "create_title": "E-Mail-Vorlage erstellen",
7
7
  "edit_title": "E-Mail-Vorlage bearbeiten",
8
+ "view_title": "E-Mail-Vorlage ansehen",
8
9
  "slug": "Slug",
9
10
  "slug_description": "URL-freundlicher Bezeichner, automatisch aus dem Namen generiert",
10
11
  "subject": "Betreff",
@@ -9,6 +9,7 @@
9
9
  "native_name": "Eigenname",
10
10
  "create_title": "Sprache erstellen",
11
11
  "edit_title": "Sprache bearbeiten",
12
+ "view_title": "Sprache ansehen",
12
13
  "created_success": "Sprache erfolgreich erstellt.",
13
14
  "updated_success": "Sprache erfolgreich aktualisiert.",
14
15
  "iso_639_1": "ISO 639-1 Code",
@@ -8,6 +8,7 @@
8
8
  "position": "Position",
9
9
  "create_title": "Berechtigungsgruppe erstellen",
10
10
  "edit_title": "Berechtigungsgruppe bearbeiten",
11
+ "view_title": "Berechtigungsgruppe ansehen",
11
12
  "created_success": "Berechtigungsgruppe erfolgreich erstellt.",
12
13
  "updated_success": "Berechtigungsgruppe erfolgreich aktualisiert.",
13
14
  "group_permissions": "Berechtigungen"
@@ -8,6 +8,7 @@
8
8
  "permissions": "Berechtigungen",
9
9
  "create_title": "Rolle erstellen",
10
10
  "edit_title": "Rolle bearbeiten",
11
+ "view_title": "Rolle ansehen",
11
12
  "created_success": "Rolle erfolgreich erstellt.",
12
13
  "updated_success": "Rolle erfolgreich aktualisiert.",
13
14
  "guard_name": "Guard-Name",
@@ -10,6 +10,7 @@
10
10
  "permissions": "Berechtigungen",
11
11
  "create_title": "Benutzer erstellen",
12
12
  "edit_title": "Benutzer bearbeiten",
13
+ "view_title": "Benutzer ansehen",
13
14
  "created_success": "Benutzer wurde erfolgreich erstellt",
14
15
  "updated_success": "Benutzer wurde erfolgreich aktualisiert",
15
16
  "password": "Passwort",
@@ -7,6 +7,7 @@
7
7
  "prompt_description": "The system prompt text sent to the AI model",
8
8
  "create_title": "Create AI System Prompt",
9
9
  "edit_title": "Edit AI System Prompt",
10
+ "view_title": "View AI System Prompt",
10
11
  "created_success": "AI system prompt created successfully.",
11
12
  "updated_success": "AI system prompt updated successfully."
12
13
  }
@@ -5,6 +5,7 @@
5
5
  "add": "Add Category",
6
6
  "create_title": "Create Category",
7
7
  "edit_title": "Edit Category",
8
+ "view_title": "View Category",
8
9
  "created_success": "Category was created successfully",
9
10
  "updated_success": "Category was updated successfully",
10
11
  "parent": "Parent Category",
@@ -6,6 +6,7 @@
6
6
  "add": "Add Category Tree",
7
7
  "create_title": "Create Category Tree",
8
8
  "edit_title": "Edit Category Tree",
9
+ "view_title": "View Category Tree",
9
10
  "created_success": "Category tree was created successfully",
10
11
  "updated_success": "Category tree was updated successfully",
11
12
  "children": "Children",
@@ -6,6 +6,7 @@
6
6
  "add": "Add Client",
7
7
  "create_title": "Create Client",
8
8
  "edit_title": "Edit Client",
9
+ "view_title": "View Client",
9
10
  "created_success": "Client successfully created.",
10
11
  "updated_success": "Client successfully updated.",
11
12
  "slug": "Slug",
@@ -9,6 +9,7 @@
9
9
  "is_invisible": "Hidden",
10
10
  "create_title": "Create Config Variable",
11
11
  "edit_title": "Edit Config Variable",
12
+ "view_title": "View Config Variable",
12
13
  "created_success": "Config variable created successfully.",
13
14
  "updated_success": "Config variable updated successfully."
14
15
  }
@@ -5,6 +5,7 @@
5
5
  "add": "Add Domain",
6
6
  "create_title": "Create Domain",
7
7
  "edit_title": "Edit Domain",
8
+ "view_title": "View Domain",
8
9
  "created_success": "Domain successfully created.",
9
10
  "updated_success": "Domain successfully updated.",
10
11
  "host": "Host",
@@ -5,6 +5,7 @@
5
5
  "add": "Add Email Template",
6
6
  "create_title": "Create Email Template",
7
7
  "edit_title": "Edit Email Template",
8
+ "view_title": "View Email Template",
8
9
  "slug": "Slug",
9
10
  "slug_description": "URL-friendly identifier, auto-generated from name",
10
11
  "subject": "Subject",
@@ -9,6 +9,7 @@
9
9
  "native_name": "Native Name",
10
10
  "create_title": "Create Language",
11
11
  "edit_title": "Edit Language",
12
+ "view_title": "View Language",
12
13
  "created_success": "Language created successfully.",
13
14
  "updated_success": "Language updated successfully.",
14
15
  "iso_639_1": "ISO 639-1 Code",
@@ -8,6 +8,7 @@
8
8
  "position": "Position",
9
9
  "create_title": "Create Permission Group",
10
10
  "edit_title": "Edit Permission Group",
11
+ "view_title": "View Permission Group",
11
12
  "created_success": "Permission group created successfully.",
12
13
  "updated_success": "Permission group updated successfully.",
13
14
  "group_permissions": "Permissions"
@@ -8,6 +8,7 @@
8
8
  "permissions": "Permissions",
9
9
  "create_title": "Create Role",
10
10
  "edit_title": "Edit Role",
11
+ "view_title": "View Role",
11
12
  "created_success": "Role created successfully.",
12
13
  "updated_success": "Role updated successfully.",
13
14
  "guard_name": "Guard Name",
@@ -10,6 +10,7 @@
10
10
  "permissions": "Permissions",
11
11
  "create_title": "Create User",
12
12
  "edit_title": "Edit User",
13
+ "view_title": "View User",
13
14
  "created_success": "User was created successfully",
14
15
  "updated_success": "User was updated successfully",
15
16
  "password": "Password",
@@ -3,11 +3,10 @@
3
3
  import { aISystemPromptFormMeta } from '../../../../types/generated/form-meta'
4
4
  import { aiSystemPromptFormConfig, aiSystemPromptSelectOptionConfigs } from '@motor-cms/ui-core/app/types/config/ai-system-prompt'
5
5
 
6
- definePageMeta({ layout: 'default', permission: 'ai-system-prompts.write' })
6
+ definePageMeta({ layout: 'default', permission: 'ai-system-prompts.read' })
7
7
 
8
8
  const route = useRoute()
9
- const { t } = useI18n()
10
- const { fields, schema, groups, state, loading, fetching, fetchError, formRef, selectOptions, selectOptionsLoading, onSubmit, onSaveAndContinue, onSaveAndNew, deleteRecord, deleting } = await useEntityForm({
9
+ const { fields, schema, groups, state, loading, fetching, fetchError, canWrite, pageTitle, formRef, selectOptions, selectOptionsLoading, onSubmit, onSaveAndContinue, onSaveAndNew, deleteRecord, deleting } = await useEntityForm({
11
10
  apiEndpoint: '/api/v2/ai-system-prompts',
12
11
  routePrefix: '/motor-admin/ai-system-prompts',
13
12
  translationPrefix: 'motor-admin.ai_system_prompts',
@@ -21,13 +20,14 @@ const { fields, schema, groups, state, loading, fetching, fetchError, formRef, s
21
20
 
22
21
  <template>
23
22
  <FormPage
24
- :title="t('motor-admin.ai_system_prompts.edit_title')"
23
+ :title="pageTitle"
25
24
  back-route="/motor-admin/ai-system-prompts"
26
25
  :loading="fetching"
27
26
  :error="fetchError"
28
27
  >
29
28
  <FormBase
30
29
  ref="formRef"
30
+ :disabled="!canWrite"
31
31
  v-model:state="state"
32
32
  :fields="fields"
33
33
  :schema="schema"
@@ -3,14 +3,14 @@
3
3
  import { categoryFormMeta } from '@motor-cms/ui-core/app/types/generated/form-meta'
4
4
  import { categoryFormConfig } from '@motor-cms/ui-core/app/types/config/category'
5
5
 
6
- definePageMeta({ layout: 'default', permission: 'categories.write' })
6
+ definePageMeta({ layout: 'default', permission: 'categories.read' })
7
7
 
8
8
  const route = useRoute()
9
9
  const { t } = useI18n()
10
10
  const treeId = route.params.id as string
11
11
  const categoryId = route.params.categoryId as string
12
12
 
13
- const { fields, schema, groups, state, loading, fetching, fetchError, formRef, selectOptions, selectOptionsLoading, onSubmit, onSaveAndContinue, onSaveAndNew, deleteRecord, deleting } = await useEntityForm({
13
+ const { fields, schema, groups, state, loading, fetching, fetchError, canWrite, pageTitle, formRef, selectOptions, selectOptionsLoading, onSubmit, onSaveAndContinue, onSaveAndNew, deleteRecord, deleting } = await useEntityForm({
14
14
  apiEndpoint: `/api/v2/category-trees/${treeId}/categories`,
15
15
  routePrefix: `/motor-admin/category-trees/${treeId}`,
16
16
  translationPrefix: 'motor-admin.categories',
@@ -26,13 +26,14 @@ const { fields, schema, groups, state, loading, fetching, fetchError, formRef, s
26
26
 
27
27
  <template>
28
28
  <FormPage
29
- :title="t('motor-admin.categories.edit_title')"
29
+ :title="pageTitle"
30
30
  :back-route="`/motor-admin/category-trees/${treeId}`"
31
31
  :loading="fetching"
32
32
  :error="fetchError"
33
33
  >
34
34
  <FormBase
35
35
  ref="formRef"
36
+ :disabled="!canWrite"
36
37
  v-model:state="state"
37
38
  :fields="fields"
38
39
  :schema="schema"
@@ -3,11 +3,10 @@
3
3
  import { categoryTreeFormMeta } from '@motor-cms/ui-core/app/types/generated/form-meta'
4
4
  import { categoryTreeEditFormConfig } from '@motor-cms/ui-core/app/types/config/category-tree'
5
5
 
6
- definePageMeta({ layout: 'default', permission: 'category-trees.write' })
6
+ definePageMeta({ layout: 'default', permission: 'category-trees.read' })
7
7
 
8
8
  const route = useRoute()
9
- const { t } = useI18n()
10
- const { fields, schema, groups, state, loading, fetching, fetchError, formRef, onSubmit, onSaveAndContinue, onSaveAndNew, deleteRecord, deleting } = await useEntityForm({
9
+ const { fields, schema, groups, state, loading, fetching, fetchError, canWrite, pageTitle, formRef, onSubmit, onSaveAndContinue, onSaveAndNew, deleteRecord, deleting } = await useEntityForm({
11
10
  apiEndpoint: '/api/v2/category-trees',
12
11
  routePrefix: '/motor-admin/category-trees',
13
12
  translationPrefix: 'motor-admin.category_trees',
@@ -20,13 +19,14 @@ const { fields, schema, groups, state, loading, fetching, fetchError, formRef, o
20
19
 
21
20
  <template>
22
21
  <FormPage
23
- :title="t('motor-admin.category_trees.edit_title')"
22
+ :title="pageTitle"
24
23
  back-route="/motor-admin/category-trees"
25
24
  :loading="fetching"
26
25
  :error="fetchError"
27
26
  >
28
27
  <FormBase
29
28
  ref="formRef"
29
+ :disabled="!canWrite"
30
30
  v-model:state="state"
31
31
  :fields="fields"
32
32
  :schema="schema"
@@ -3,11 +3,10 @@
3
3
  import { clientFormMeta } from '../../../../types/generated/form-meta'
4
4
  import { clientFormConfig } from '@motor-cms/ui-core/app/types/config/client'
5
5
 
6
- definePageMeta({ layout: 'default', permission: 'clients.write' })
6
+ definePageMeta({ layout: 'default', permission: 'clients.read' })
7
7
 
8
8
  const route = useRoute()
9
- const { t } = useI18n()
10
- const { fields, schema, groups, state, loading, fetching, fetchError, formRef, onSubmit, onSaveAndContinue, onSaveAndNew, deleteRecord, deleting } = await useEntityForm({
9
+ const { fields, schema, groups, state, loading, fetching, fetchError, canWrite, pageTitle, formRef, onSubmit, onSaveAndContinue, onSaveAndNew, deleteRecord, deleting } = await useEntityForm({
11
10
  apiEndpoint: '/api/v2/clients',
12
11
  routePrefix: '/motor-admin/clients',
13
12
  translationPrefix: 'motor-admin.clients',
@@ -20,13 +19,14 @@ const { fields, schema, groups, state, loading, fetching, fetchError, formRef, o
20
19
 
21
20
  <template>
22
21
  <FormPage
23
- :title="t('motor-admin.clients.edit_title')"
22
+ :title="pageTitle"
24
23
  back-route="/motor-admin/clients"
25
24
  :loading="fetching"
26
25
  :error="fetchError"
27
26
  >
28
27
  <FormBase
29
28
  ref="formRef"
29
+ :disabled="!canWrite"
30
30
  v-model:state="state"
31
31
  :fields="fields"
32
32
  :schema="schema"
@@ -2,11 +2,10 @@
2
2
  import { configVariableFormMeta } from '../../../../types/generated/form-meta'
3
3
  import { configVariableFormConfig } from '@motor-cms/ui-core/app/types/config/config-variable'
4
4
 
5
- definePageMeta({ layout: 'default', permission: 'config-variables.write' })
5
+ definePageMeta({ layout: 'default', permission: 'config-variables.read' })
6
6
 
7
7
  const route = useRoute()
8
- const { t } = useI18n()
9
- const { fields, schema, groups, state, loading, fetching, fetchError, formRef, onSubmit, onSaveAndContinue, onSaveAndNew, deleteRecord, deleting } = await useEntityForm({
8
+ const { fields, schema, groups, state, loading, fetching, fetchError, canWrite, pageTitle, formRef, onSubmit, onSaveAndContinue, onSaveAndNew, deleteRecord, deleting } = await useEntityForm({
10
9
  apiEndpoint: '/api/v2/config-variables',
11
10
  routePrefix: '/motor-admin/config-variables',
12
11
  translationPrefix: 'motor-admin.config_variables',
@@ -19,13 +18,14 @@ const { fields, schema, groups, state, loading, fetching, fetchError, formRef, o
19
18
 
20
19
  <template>
21
20
  <FormPage
22
- :title="t('motor-admin.config_variables.edit_title')"
21
+ :title="pageTitle"
23
22
  back-route="/motor-admin/config-variables"
24
23
  :loading="fetching"
25
24
  :error="fetchError"
26
25
  >
27
26
  <FormBase
28
27
  ref="formRef"
28
+ :disabled="!canWrite"
29
29
  v-model:state="state"
30
30
  :fields="fields"
31
31
  :schema="schema"
@@ -3,12 +3,11 @@
3
3
  import { domainFormMeta } from '../../../../types/generated/form-meta'
4
4
  import { domainFormConfig, domainSelectOptionConfigs, domainProtocolOptions } from '@motor-cms/ui-core/app/types/config/domain'
5
5
 
6
- definePageMeta({ layout: 'default', permission: 'domains.write' })
6
+ definePageMeta({ layout: 'default', permission: 'domains.read' })
7
7
 
8
8
  const route = useRoute()
9
- const { t } = useI18n()
10
9
 
11
- const { fields, schema, groups, state, loading, fetching, fetchError, formRef, selectOptions, selectOptionsLoading, onSubmit, onSaveAndContinue, onSaveAndNew, deleteRecord, deleting } = await useEntityForm({
10
+ const { fields, schema, groups, state, loading, fetching, fetchError, canWrite, pageTitle, formRef, selectOptions, selectOptionsLoading, onSubmit, onSaveAndContinue, onSaveAndNew, deleteRecord, deleting } = await useEntityForm({
12
11
  apiEndpoint: '/api/v2/domains',
13
12
  routePrefix: '/motor-admin/domains',
14
13
  translationPrefix: 'motor-admin.domains',
@@ -27,13 +26,14 @@ const mergedSelectOptions = computed(() => ({
27
26
 
28
27
  <template>
29
28
  <FormPage
30
- :title="t('motor-admin.domains.edit_title')"
29
+ :title="pageTitle"
31
30
  back-route="/motor-admin/domains"
32
31
  :loading="fetching"
33
32
  :error="fetchError"
34
33
  >
35
34
  <FormBase
36
35
  ref="formRef"
36
+ :disabled="!canWrite"
37
37
  v-model:state="state"
38
38
  :fields="fields"
39
39
  :schema="schema"
@@ -3,11 +3,10 @@
3
3
  import { emailTemplateFormMeta } from '../../../../types/generated/form-meta'
4
4
  import { emailTemplateFormConfig, emailTemplateSelectOptionConfigs } from '@motor-cms/ui-core/app/types/config/email-template'
5
5
 
6
- definePageMeta({ layout: 'default', permission: 'email-templates.write' })
6
+ definePageMeta({ layout: 'default', permission: 'email-templates.read' })
7
7
 
8
8
  const route = useRoute()
9
- const { t } = useI18n()
10
- const { fields: rawFields, schema, groups, state, loading, fetching, fetchError, formRef, selectOptions, selectOptionsLoading, onSubmit, onSaveAndContinue, onSaveAndNew, deleteRecord, deleting } = await useEntityForm({
9
+ const { fields: rawFields, schema, groups, state, loading, fetching, fetchError, canWrite, pageTitle, formRef, selectOptions, selectOptionsLoading, onSubmit, onSaveAndContinue, onSaveAndNew, deleteRecord, deleting } = await useEntityForm({
11
10
  apiEndpoint: '/api/v2/email-templates',
12
11
  routePrefix: '/motor-admin/email-templates',
13
12
  translationPrefix: 'motor-admin.email_templates',
@@ -29,13 +28,14 @@ if (bodyHtmlField) {
29
28
 
30
29
  <template>
31
30
  <FormPage
32
- :title="t('motor-admin.email_templates.edit_title')"
31
+ :title="pageTitle"
33
32
  back-route="/motor-admin/email-templates"
34
33
  :loading="fetching"
35
34
  :error="fetchError"
36
35
  >
37
36
  <FormBase
38
37
  ref="formRef"
38
+ :disabled="!canWrite"
39
39
  v-model:state="state"
40
40
  :fields="fields"
41
41
  :schema="schema"
@@ -2,11 +2,10 @@
2
2
  import { languageFormMeta } from '../../../../types/generated/form-meta'
3
3
  import { languageFormConfig } from '@motor-cms/ui-core/app/types/config/language'
4
4
 
5
- definePageMeta({ layout: 'default', permission: 'languages.write' })
5
+ definePageMeta({ layout: 'default', permission: 'languages.read' })
6
6
 
7
7
  const route = useRoute()
8
- const { t } = useI18n()
9
- const { fields, schema, groups, state, loading, fetching, fetchError, formRef, onSubmit, onSaveAndContinue, onSaveAndNew, deleteRecord, deleting } = await useEntityForm({
8
+ const { fields, schema, groups, state, loading, fetching, fetchError, canWrite, pageTitle, formRef, onSubmit, onSaveAndContinue, onSaveAndNew, deleteRecord, deleting } = await useEntityForm({
10
9
  apiEndpoint: '/api/v2/languages',
11
10
  routePrefix: '/motor-admin/languages',
12
11
  translationPrefix: 'motor-admin.languages',
@@ -19,13 +18,14 @@ const { fields, schema, groups, state, loading, fetching, fetchError, formRef, o
19
18
 
20
19
  <template>
21
20
  <FormPage
22
- :title="t('motor-admin.languages.edit_title')"
21
+ :title="pageTitle"
23
22
  back-route="/motor-admin/languages"
24
23
  :loading="fetching"
25
24
  :error="fetchError"
26
25
  >
27
26
  <FormBase
28
27
  ref="formRef"
28
+ :disabled="!canWrite"
29
29
  v-model:state="state"
30
30
  :fields="fields"
31
31
  :schema="schema"
@@ -2,11 +2,10 @@
2
2
  import { permissionGroupFormMeta } from '../../../../types/generated/form-meta'
3
3
  import { permissionGroupFormConfig, permissionGroupSelectOptionConfigs, permissionGroupExtraFields } from '@motor-cms/ui-core/app/types/config/permission-group'
4
4
 
5
- definePageMeta({ layout: 'default', permission: 'permission-groups.write' })
5
+ definePageMeta({ layout: 'default', permission: 'permission-groups.read' })
6
6
 
7
7
  const route = useRoute()
8
- const { t } = useI18n()
9
- const { fields, schema, groups, state, loading, fetching, fetchError, formRef, selectOptions, selectOptionsLoading, onSubmit, onSaveAndContinue, onSaveAndNew, deleteRecord, deleting } = await useEntityForm({
8
+ const { fields, schema, groups, state, loading, fetching, fetchError, canWrite, pageTitle, formRef, selectOptions, selectOptionsLoading, onSubmit, onSaveAndContinue, onSaveAndNew, deleteRecord, deleting } = await useEntityForm({
10
9
  apiEndpoint: '/api/v2/permission-groups',
11
10
  routePrefix: '/motor-admin/permission-groups',
12
11
  translationPrefix: 'motor-admin.permissions',
@@ -22,13 +21,14 @@ const { fields, schema, groups, state, loading, fetching, fetchError, formRef, s
22
21
 
23
22
  <template>
24
23
  <FormPage
25
- :title="t('motor-admin.permissions.edit_title')"
24
+ :title="pageTitle"
26
25
  back-route="/motor-admin/permission-groups"
27
26
  :loading="fetching"
28
27
  :error="fetchError"
29
28
  >
30
29
  <FormBase
31
30
  ref="formRef"
31
+ :disabled="!canWrite"
32
32
  v-model:state="state"
33
33
  :fields="fields"
34
34
  :schema="schema"
@@ -2,11 +2,10 @@
2
2
  import { roleFormMeta } from '../../../../types/generated/form-meta'
3
3
  import { roleFormConfig, roleSelectOptionConfigs } from '@motor-cms/ui-core/app/types/config/role'
4
4
 
5
- definePageMeta({ layout: 'default', permission: 'roles.write' })
5
+ definePageMeta({ layout: 'default', permission: 'roles.read' })
6
6
 
7
7
  const route = useRoute()
8
- const { t } = useI18n()
9
- const { fields, schema, groups, state, loading, fetching, fetchError, formRef, selectOptions, selectOptionsLoading, onSubmit, onSaveAndContinue, onSaveAndNew, deleteRecord, deleting } = await useEntityForm({
8
+ const { fields, schema, groups, state, loading, fetching, fetchError, canWrite, pageTitle, formRef, selectOptions, selectOptionsLoading, onSubmit, onSaveAndContinue, onSaveAndNew, deleteRecord, deleting } = await useEntityForm({
10
9
  apiEndpoint: '/api/v2/roles',
11
10
  routePrefix: '/motor-admin/roles',
12
11
  translationPrefix: 'motor-admin.roles',
@@ -20,13 +19,14 @@ const { fields, schema, groups, state, loading, fetching, fetchError, formRef, s
20
19
 
21
20
  <template>
22
21
  <FormPage
23
- :title="t('motor-admin.roles.edit_title')"
22
+ :title="pageTitle"
24
23
  back-route="/motor-admin/roles"
25
24
  :loading="fetching"
26
25
  :error="fetchError"
27
26
  >
28
27
  <FormBase
29
28
  ref="formRef"
29
+ :disabled="!canWrite"
30
30
  v-model:state="state"
31
31
  :fields="fields"
32
32
  :schema="schema"
@@ -3,12 +3,12 @@
3
3
  import { userFormMeta } from '../../../../types/generated/form-meta'
4
4
  import { userEditFormConfig, userSelectOptionConfigs, userEditExtraFields } from '@motor-cms/ui-core/app/types/config/user'
5
5
 
6
- definePageMeta({ layout: 'default', permission: 'users.write' })
6
+ definePageMeta({ layout: 'default', permission: 'users.read' })
7
7
 
8
8
  const route = useRoute()
9
9
  const { t } = useI18n()
10
10
 
11
- const { fields: rawFields, schema, groups, state, loading, fetching, fetchError, formRef, selectOptions, selectOptionsLoading, onSubmit, onSaveAndContinue, onSaveAndNew, deleteRecord, deleting } = await useEntityForm({
11
+ const { fields: rawFields, schema, groups, state, loading, fetching, fetchError, canWrite, pageTitle, formRef, selectOptions, selectOptionsLoading, onSubmit, onSaveAndContinue, onSaveAndNew, deleteRecord, deleting } = await useEntityForm({
12
12
  apiEndpoint: '/api/v2/users',
13
13
  routePrefix: '/motor-admin/users',
14
14
  translationPrefix: 'motor-admin.users',
@@ -56,13 +56,14 @@ watchEffect(() => {
56
56
 
57
57
  <template>
58
58
  <FormPage
59
- :title="t('motor-admin.users.edit_title')"
59
+ :title="pageTitle"
60
60
  back-route="/motor-admin/users"
61
61
  :loading="fetching"
62
62
  :error="fetchError"
63
63
  >
64
64
  <FormBase
65
65
  ref="formRef"
66
+ :disabled="!canWrite"
66
67
  v-model:state="state"
67
68
  :fields="fields"
68
69
  :schema="refinedSchema"
@@ -4,6 +4,11 @@ import type { SearchGridRow } from '@motor-cms/ui-core/app/types/search'
4
4
  import type { PaginatedResponse, PaginationMeta } from '@motor-cms/ui-core/app/types/grid'
5
5
  import { watchDebounced } from '@vueuse/core'
6
6
 
7
+ definePageMeta({
8
+ layout: 'default',
9
+ permission: 'search.read'
10
+ })
11
+
7
12
  const { t } = useI18n()
8
13
  const route = useRoute()
9
14
  const router = useRouter()
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@motor-cms/ui-admin",
3
- "version": "1.6.0",
3
+ "version": "1.7.0",
4
4
  "type": "module",
5
5
  "main": "./nuxt.config.ts",
6
6
  "files": [
@@ -17,7 +17,7 @@
17
17
  "@vueuse/core": "^14.0.0",
18
18
  "sortablejs": "^1.15.0",
19
19
  "zod": "^4.0.0",
20
- "@motor-cms/ui-core": "1.6.0"
20
+ "@motor-cms/ui-core": "1.7.0"
21
21
  },
22
22
  "peerDependencies": {
23
23
  "nuxt": "^4.0.0",