@drax/crud-vue 0.5.21 → 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.
|
|
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.
|
|
28
|
-
"@drax/crud-front": "^0.
|
|
29
|
-
"@drax/crud-share": "^0.
|
|
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": "
|
|
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,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.
|
|
36
|
+
return entity.deleteFields
|
|
36
37
|
}else if(operation === 'view') {
|
|
37
|
-
return entity.
|
|
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
|
|
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(
|
|
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>
|
|
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
|
}
|