@drax/dynamic-vue 0.8.5
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
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@drax/dynamic-vue",
|
|
3
|
+
"publishConfig": {
|
|
4
|
+
"access": "public"
|
|
5
|
+
},
|
|
6
|
+
"version": "0.8.5",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"main": "./src/index.ts",
|
|
9
|
+
"module": "./src/index.ts",
|
|
10
|
+
"types": "./src/index.ts",
|
|
11
|
+
"files": [
|
|
12
|
+
"src"
|
|
13
|
+
],
|
|
14
|
+
"scripts": {
|
|
15
|
+
"dev": "vite",
|
|
16
|
+
"build": "run-p type-check \"build-only {@}\" --",
|
|
17
|
+
"preview": "vite preview",
|
|
18
|
+
"test:unit": "vitest",
|
|
19
|
+
"test:e2e": "start-server-and-test preview http://localhost:4173 'cypress run --e2e'",
|
|
20
|
+
"test:e2e:dev": "start-server-and-test 'vite dev --port 4173' http://localhost:4173 'cypress open --e2e'",
|
|
21
|
+
"build-only": "vite build",
|
|
22
|
+
"type-check": "vue-tsc --build --force",
|
|
23
|
+
"lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --ignore-path .gitignore",
|
|
24
|
+
"format": "prettier --write src/"
|
|
25
|
+
},
|
|
26
|
+
"dependencies": {
|
|
27
|
+
"@drax/common-front": "^0.8.3",
|
|
28
|
+
"@drax/crud-front": "^0.8.3",
|
|
29
|
+
"@drax/crud-share": "^0.8.5",
|
|
30
|
+
"@drax/media-vue": "^0.8.3"
|
|
31
|
+
},
|
|
32
|
+
"peerDependencies": {
|
|
33
|
+
"pinia": "^2.2.2",
|
|
34
|
+
"vue": "^3.5.7",
|
|
35
|
+
"vue-i18n": "^9.14.0",
|
|
36
|
+
"vuetify": "^3.7.2"
|
|
37
|
+
},
|
|
38
|
+
"devDependencies": {
|
|
39
|
+
"@rushstack/eslint-patch": "^1.8.0",
|
|
40
|
+
"@tsconfig/node20": "^20.1.4",
|
|
41
|
+
"@types/jsdom": "^21.1.7",
|
|
42
|
+
"@types/node": "^20.12.5",
|
|
43
|
+
"@vitejs/plugin-vue": "^5.0.4",
|
|
44
|
+
"@vue/eslint-config-prettier": "^9.0.0",
|
|
45
|
+
"@vue/eslint-config-typescript": "^13.0.0",
|
|
46
|
+
"@vue/test-utils": "^2.4.5",
|
|
47
|
+
"@vue/tsconfig": "^0.5.1",
|
|
48
|
+
"cypress": "^13.7.2",
|
|
49
|
+
"eslint": "^8.57.0",
|
|
50
|
+
"eslint-plugin-cypress": "^2.15.1",
|
|
51
|
+
"eslint-plugin-vue": "^9.23.0",
|
|
52
|
+
"jsdom": "^24.0.0",
|
|
53
|
+
"npm-run-all2": "^6.1.2",
|
|
54
|
+
"pinia": "^2.1.7",
|
|
55
|
+
"pinia-plugin-persistedstate": "^3.2.1",
|
|
56
|
+
"prettier": "^3.2.5",
|
|
57
|
+
"start-server-and-test": "^2.0.3",
|
|
58
|
+
"typescript": "~5.4.0",
|
|
59
|
+
"vite": "^5.4.3",
|
|
60
|
+
"vite-plugin-css-injected-by-js": "^3.5.1",
|
|
61
|
+
"vite-plugin-dts": "^3.9.1",
|
|
62
|
+
"vitest": "^1.4.0",
|
|
63
|
+
"vue": "^3.5.3",
|
|
64
|
+
"vue-tsc": "^2.0.11",
|
|
65
|
+
"vuetify": "^3.7.1"
|
|
66
|
+
},
|
|
67
|
+
"gitHead": "df40172e28cb654c26d622d16d6aef53e2db8a78"
|
|
68
|
+
}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import {EntityCrud} from "@drax/crud-vue";
|
|
2
|
+
|
|
3
|
+
import type {
|
|
4
|
+
IDraxCrudProvider,
|
|
5
|
+
IEntityCrud,
|
|
6
|
+
IEntityCrudField,
|
|
7
|
+
IEntityCrudFilter,
|
|
8
|
+
IEntityCrudHeader,
|
|
9
|
+
IEntityCrudPermissions,
|
|
10
|
+
IEntityCrudRefs,
|
|
11
|
+
IEntityCrudRules
|
|
12
|
+
} from "@drax/crud-share";
|
|
13
|
+
|
|
14
|
+
import {DynamicFormProvider} from "@drax/dynamic-front";
|
|
15
|
+
|
|
16
|
+
//Import EntityCrud Refs
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class DynamicFormCrud extends EntityCrud implements IEntityCrud {
|
|
20
|
+
|
|
21
|
+
static singleton: DynamicFormCrud
|
|
22
|
+
|
|
23
|
+
constructor() {
|
|
24
|
+
super();
|
|
25
|
+
this.name = 'DynamicForm'
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
static get instance(): DynamicFormCrud {
|
|
29
|
+
if (!DynamicFormCrud.singleton) {
|
|
30
|
+
DynamicFormCrud.singleton = new DynamicFormCrud()
|
|
31
|
+
}
|
|
32
|
+
return DynamicFormCrud.singleton
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
get permissions(): IEntityCrudPermissions {
|
|
36
|
+
return {
|
|
37
|
+
manage: 'dynamicform:manage',
|
|
38
|
+
view: 'dynamicform:view',
|
|
39
|
+
create: 'dynamicform:create',
|
|
40
|
+
update: 'dynamicform:update',
|
|
41
|
+
delete: 'dynamicform:delete'
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
get headers(): IEntityCrudHeader[] {
|
|
46
|
+
return [
|
|
47
|
+
{title: 'identifier', key: 'identifier', align: 'start'}
|
|
48
|
+
]
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
get actionHeaders(): IEntityCrudHeader[] {
|
|
52
|
+
return [
|
|
53
|
+
{
|
|
54
|
+
title: 'action.actions',
|
|
55
|
+
key: 'actions',
|
|
56
|
+
sortable: false,
|
|
57
|
+
align: 'center',
|
|
58
|
+
minWidth: '190px'
|
|
59
|
+
},
|
|
60
|
+
]
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
get provider(): IDraxCrudProvider<any, any, any> {
|
|
64
|
+
return DynamicFormProvider.instance
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
get refs(): IEntityCrudRefs {
|
|
68
|
+
return {}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
get rules(): IEntityCrudRules {
|
|
72
|
+
return {
|
|
73
|
+
identifier: [(v: any) => !!v || 'validation.required'],
|
|
74
|
+
fields: []
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
get fields(): IEntityCrudField[] {
|
|
79
|
+
return [
|
|
80
|
+
{name: 'identifier', type: 'string', label: 'identifier', default: ''},
|
|
81
|
+
{
|
|
82
|
+
name: 'fields', type: 'array.object', label: 'fields', default: [],
|
|
83
|
+
objectFields: [
|
|
84
|
+
{name: 'name', type: 'string', label: 'name', default: ''},
|
|
85
|
+
{
|
|
86
|
+
name: 'type',
|
|
87
|
+
type: 'enum',
|
|
88
|
+
enum: ['string', 'longString', 'number', 'boolean', 'date', 'object', 'ref', 'enum', 'password', 'file', 'array.string', 'array.number', 'array.object', 'array.ref', 'array.enum', 'array.file'],
|
|
89
|
+
label: 'type',
|
|
90
|
+
default: null
|
|
91
|
+
},
|
|
92
|
+
{name: 'required', type: 'boolean', label: 'required', default: false},
|
|
93
|
+
{name: 'default', type: 'string', label: 'default', default: ''},
|
|
94
|
+
{name: 'validationRegex', type: 'string', label: 'validationRegex', default: ''},
|
|
95
|
+
{name: 'options', type: 'array.string', label: 'options', default: []},
|
|
96
|
+
]
|
|
97
|
+
}
|
|
98
|
+
]
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
get filters(): IEntityCrudFilter[] {
|
|
102
|
+
return [
|
|
103
|
+
//{name: '_id', type: 'string', label: 'ID', default: '', operator: 'eq' },
|
|
104
|
+
]
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
get isViewable() {
|
|
108
|
+
return true
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
get isEditable() {
|
|
112
|
+
return true
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
get isCreatable() {
|
|
116
|
+
return true
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
get isDeletable() {
|
|
120
|
+
return true
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
get isExportable() {
|
|
124
|
+
return true
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
get exportFormats() {
|
|
128
|
+
return ['CSV', 'JSON']
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
get exportHeaders() {
|
|
132
|
+
return ['_id']
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
get isImportable() {
|
|
136
|
+
return true
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
get importFormats() {
|
|
140
|
+
return ['CSV', 'JSON']
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
get dialogFullscreen() {
|
|
144
|
+
return false
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
export default DynamicFormCrud
|
|
150
|
+
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
const messages = {
|
|
2
|
+
en: {
|
|
3
|
+
|
|
4
|
+
dynamicform: {
|
|
5
|
+
entity: 'DynamicForm',
|
|
6
|
+
menu: 'DynamicForm',
|
|
7
|
+
crud: 'Manage DynamicForm',
|
|
8
|
+
field: {
|
|
9
|
+
identifier: 'identifier',
|
|
10
|
+
fields: 'fields',
|
|
11
|
+
type: 'type',
|
|
12
|
+
name: 'name',
|
|
13
|
+
default: 'default',
|
|
14
|
+
required: 'required',
|
|
15
|
+
validationRegex: 'validationRegex',
|
|
16
|
+
options: 'enum',
|
|
17
|
+
schema: 'schema'
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
permission: {
|
|
21
|
+
'dynamicform:view': 'View DynamicForm',
|
|
22
|
+
'dynamicform:create': 'Create DynamicForm',
|
|
23
|
+
'dynamicform:update': 'Edit DynamicForm',
|
|
24
|
+
'dynamicform:delete': 'Delete DynamicForm',
|
|
25
|
+
'dynamicform:manage': 'Manage DynamicForm',
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
es: {
|
|
29
|
+
dynamicform: {
|
|
30
|
+
entity: 'DynamicForm',
|
|
31
|
+
menu: 'DynamicForm',
|
|
32
|
+
crud: 'Gestionar DynamicForm',
|
|
33
|
+
field: {
|
|
34
|
+
identifier: 'identifier',
|
|
35
|
+
fields: 'fields',
|
|
36
|
+
type: 'type',
|
|
37
|
+
name: 'name',
|
|
38
|
+
default: 'default',
|
|
39
|
+
required: 'required',
|
|
40
|
+
validationRegex: 'validationRegex',
|
|
41
|
+
options: 'enum',
|
|
42
|
+
schema: 'schema'
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
permission: {
|
|
46
|
+
'dynamicform:view': 'Ver DynamicForm',
|
|
47
|
+
'dynamicform:create': 'Crear DynamicForm',
|
|
48
|
+
'dynamicform:update': 'Editar DynamicForm',
|
|
49
|
+
'dynamicform:delete': 'Eliminar DynamicForm',
|
|
50
|
+
'dynamicform:manage': 'Gestionar DynamicForm',
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export default messages;
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import {DynamicFormCrudRoute} from "./routes/DynamicFormCrudRoute";
|
|
2
|
+
import DynamicFormCrudPage from "./pages/crud/DynamicFormCrudPage.vue";
|
|
3
|
+
import DynamicFormCrud from "./cruds/DynamicFormCrud";
|
|
4
|
+
import DynamicFormI18n from "./i18n/DynamicForm-i18n";
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
export {
|
|
8
|
+
DynamicFormCrudRoute,
|
|
9
|
+
DynamicFormCrudPage,
|
|
10
|
+
DynamicFormCrud,
|
|
11
|
+
DynamicFormI18n
|
|
12
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
|
|
2
|
+
<script setup lang="ts">
|
|
3
|
+
import DynamicFormCrud from '../../cruds/DynamicFormCrud'
|
|
4
|
+
import {Crud} from "@drax/crud-vue";
|
|
5
|
+
import {formatDate} from "@drax/common-front"
|
|
6
|
+
|
|
7
|
+
</script>
|
|
8
|
+
|
|
9
|
+
<template>
|
|
10
|
+
<crud :entity="DynamicFormCrud.instance">
|
|
11
|
+
|
|
12
|
+
</crud>
|
|
13
|
+
</template>
|
|
14
|
+
|
|
15
|
+
<style scoped>
|
|
16
|
+
|
|
17
|
+
</style>
|
|
18
|
+
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
|
|
2
|
+
import DynamicFormCrudPage from "../pages/crud/DynamicFormCrudPage.vue";
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
const DynamicFormCrudRoute = [
|
|
6
|
+
{
|
|
7
|
+
name: 'DynamicFormCrudPage',
|
|
8
|
+
path: '/crud/dynamicform',
|
|
9
|
+
component: DynamicFormCrudPage,
|
|
10
|
+
meta: {
|
|
11
|
+
auth: true,
|
|
12
|
+
permission: 'dynamicform:manage',
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
]
|
|
16
|
+
|
|
17
|
+
export default DynamicFormCrudRoute
|
|
18
|
+
export { DynamicFormCrudRoute }
|