@drax/crud-vue 0.5.20 → 0.6.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.
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "0.5.20",
6
+ "version": "0.6.0",
7
7
  "type": "module",
8
8
  "main": "./src/index.ts",
9
9
  "module": "./src/index.ts",
@@ -24,9 +24,9 @@
24
24
  "format": "prettier --write src/"
25
25
  },
26
26
  "dependencies": {
27
- "@drax/common-front": "^0.5.11",
28
- "@drax/crud-front": "^0.5.20",
29
- "@drax/crud-share": "^0.5.17"
27
+ "@drax/common-front": "^0.6.0",
28
+ "@drax/crud-front": "^0.6.0",
29
+ "@drax/crud-share": "^0.6.0"
30
30
  },
31
31
  "peerDependencies": {
32
32
  "pinia": "^2.2.2",
@@ -63,5 +63,5 @@
63
63
  "vue-tsc": "^2.0.11",
64
64
  "vuetify": "^3.7.1"
65
65
  },
66
- "gitHead": "0f55c328d87019aafcf55402d7d182945f034982"
66
+ "gitHead": "66fb4189c54d3c3f12efa89ad1476ecb96b63d38"
67
67
  }
package/src/EntityCrud.ts CHANGED
@@ -24,6 +24,19 @@ class EntityCrud implements IEntityCrud{
24
24
  ]
25
25
  }
26
26
 
27
+ get actionHeaders():IEntityCrudHeader[]{
28
+ return [
29
+ {
30
+ title: 'action.actions',
31
+ key: 'actions',
32
+ sortable: false,
33
+ align: 'center',
34
+ minWidth: '190px'
35
+ },
36
+ ]
37
+ }
38
+
39
+
27
40
  get permissions(): IEntityCrudPermissions {
28
41
  return {
29
42
  manage: 'manage', view: 'view', create: 'create', update: 'update', delete: 'delete'
@@ -48,6 +61,14 @@ class EntityCrud implements IEntityCrud{
48
61
  return this.fields
49
62
  }
50
63
 
64
+ get deleteFields(){
65
+ return this.fields
66
+ }
67
+
68
+ get viewFields(){
69
+ return this.fields
70
+ }
71
+
51
72
  get filters():IEntityCrudFilter[]{
52
73
  return [
53
74
  {name: '_id', type: 'string', label: 'ID', default: '', operator: 'eq' },
@@ -1,6 +1,5 @@
1
1
  <script setup lang="ts">
2
2
  import type {PropType} from "vue";
3
- import {ref} from "vue";
4
3
  import CrudFormField from "./CrudFormField.vue";
5
4
  import type {IEntityCrud} from "@drax/crud-share";
6
5
  import {useI18n} from "vue-i18n";
@@ -1,13 +1,14 @@
1
1
  <script setup lang="ts">
2
2
  import {useI18n} from "vue-i18n";
3
- import type {IEntityCrud, IEntityCrudOperation} from "@drax/crud-share";
3
+ import type {IEntityCrud, IEntityCrudField, IEntityCrudOperation} from "@drax/crud-share";
4
4
  import {useFormUtils} from "../composables/UseFormUtils";
5
5
  import CrudFormField from "./CrudFormField.vue";
6
6
  import {computed, defineEmits, defineModel, defineProps, ref} from "vue";
7
7
  import type { PropType} from "vue";
8
8
  import {useCrudStore} from "../stores/UseCrudStore";
9
+ import {useAuth} from '@drax/identity-vue'
9
10
 
10
-
11
+ const {hasPermission} = useAuth()
11
12
  const {t, te} = useI18n()
12
13
 
13
14
  const valueModel = defineModel({type: [Object]})
@@ -32,14 +33,26 @@ const fields = computed(() => {
32
33
  }else if(operation === 'edit') {
33
34
  return entity.updateFields
34
35
  }else if(operation === 'delete') {
35
- return entity.updateFields
36
+ return entity.deleteFields
36
37
  }else if(operation === 'view') {
37
- return entity.updateFields
38
+ return entity.viewFields
38
39
  }
40
+ return []
41
+ })
42
+
43
+
44
+ const aFields = computed(() => {
45
+ return fields.value.filter((field:IEntityCrudField) => !field.permission || hasPermission(field.permission))
39
46
  })
40
47
 
41
48
  async function submit() {
42
49
  store.resetErrors()
50
+
51
+ if(operation === 'delete') {
52
+ emit('submit',valueModel.value)
53
+ return
54
+ }
55
+
43
56
  await formRef.value.validate()
44
57
  if(valid.value) {
45
58
  emit('submit',valueModel.value)
@@ -70,7 +83,7 @@ const {
70
83
  </v-card-text>
71
84
 
72
85
  <v-card-text>
73
- <template v-for="field in fields" :key="field.name">
86
+ <template v-for="field in aFields" :key="field.name">
74
87
  <crud-form-field
75
88
  :field="field"
76
89
  :entity="entity"
@@ -57,7 +57,7 @@ const rules = computed(() => {
57
57
  const inputErrors = computed(() => {
58
58
  let sIndex = (index != null && index >= 0) ? `${index}.` : ''
59
59
  let name = parentField ? `${parentField}.${sIndex}${field.name}` : field.name
60
- console.log("inputErrors name",name, index, sIndex)
60
+ //console.log("inputErrors name",name, index, sIndex)
61
61
  return store.getInputErrors(name).map((error: string) => t(te(error) ? t(error) : error))
62
62
  }
63
63
  )
@@ -28,18 +28,18 @@ const {
28
28
  doPaginate, filters
29
29
  } = useCrud(entity)
30
30
 
31
- const actions: IEntityCrudHeader[] = [{
32
- title: t('action.actions'),
33
- key: 'actions',
34
- sortable: false,
35
- align: 'center',
36
- minWidth: '190px'
37
- }]
38
- const tHeaders: IEntityCrudHeader[] = entity.headers.map(header => ({
31
+ const actions: IEntityCrudHeader[] = entity.actionHeaders.map(header => ({
39
32
  ...header,
40
- title: te(`${entity.name.toLowerCase()}.field.${header.title}`) ? t(`${entity.name.toLowerCase()}.field.${header.title}`) : header.title
33
+ title: te(header.title) ? t(header.title) : header.title,
41
34
  }))
42
35
 
36
+ const tHeaders: IEntityCrudHeader[] = entity.headers
37
+ .filter(header => !header.permission || hasPermission(header.permission))
38
+ .map(header => ({
39
+ ...header,
40
+ title: te(`${entity.name.toLowerCase()}.field.${header.title}`) ? t(`${entity.name.toLowerCase()}.field.${header.title}`) : header.title
41
+ }))
42
+
43
43
  const headers: IEntityCrudHeader[] = [...tHeaders, ...actions]
44
44
 
45
45
 
@@ -70,7 +70,9 @@ defineEmits(['import', 'export', 'create', 'update', 'delete', 'view', 'edit'])
70
70
  >
71
71
  <template v-slot:top>
72
72
  <v-toolbar density="compact">
73
- <v-toolbar-title>{{ te(`${entity.name.toLowerCase()}.crud`) ? t(`${entity.name.toLowerCase()}.crud`) : entity.name }}</v-toolbar-title>
73
+ <v-toolbar-title>
74
+ {{ te(`${entity.name.toLowerCase()}.crud`) ? t(`${entity.name.toLowerCase()}.crud`) : entity.name }}
75
+ </v-toolbar-title>
74
76
  <v-spacer></v-spacer>
75
77
 
76
78
  <crud-import-button
@@ -291,7 +291,7 @@ export function useCrud(entity: IEntityCrud) {
291
291
  closeDialog()
292
292
  store.showMessage("Entity updated successfully!")
293
293
  } catch (e: any) {
294
- console.log("inputErrors", e.inputErrors)
294
+ //console.log("inputErrors", e.inputErrors)
295
295
  if (e.inputErrors) {
296
296
  store.setInputErrors(e.inputErrors)
297
297
  }