@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 }