@afeefa/vue-app 0.0.77 → 0.0.80
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/.afeefa/package/release/version.txt +1 -1
- package/package.json +1 -1
- package/src/components/ADialog.vue +23 -1
- package/src/components/form/EditForm.vue +10 -0
- package/src/components/form/FormFieldMixin.js +12 -1
- package/src-admin/components/form/RemoveButton.vue +3 -2
- package/src-admin/components/pages/EditPage.vue +2 -1
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.80
|
package/package.json
CHANGED
@@ -23,10 +23,24 @@
|
|
23
23
|
{{ title }}
|
24
24
|
</v-card-title>
|
25
25
|
|
26
|
-
<v-card-text
|
26
|
+
<v-card-text
|
27
|
+
v-if="message"
|
28
|
+
>
|
27
29
|
<span v-html="message" />
|
28
30
|
</v-card-text>
|
29
31
|
|
32
|
+
<v-card-text
|
33
|
+
v-if="info"
|
34
|
+
class="dialogInfo"
|
35
|
+
>
|
36
|
+
<v-alert
|
37
|
+
dense
|
38
|
+
type="info"
|
39
|
+
>
|
40
|
+
{{ info }}
|
41
|
+
</v-alert>
|
42
|
+
</v-card-text>
|
43
|
+
|
30
44
|
<v-card-text v-if="$slots.default">
|
31
45
|
<slot :props="props" />
|
32
46
|
</v-card-text>
|
@@ -70,6 +84,7 @@ export default class ADialog extends Mixins(UsesPositionServiceMixin, CancelOnEs
|
|
70
84
|
|
71
85
|
title = null
|
72
86
|
message = null
|
87
|
+
info = null
|
73
88
|
yesButton = null
|
74
89
|
yesColor = null
|
75
90
|
cancelButton = null
|
@@ -103,6 +118,7 @@ export default class ADialog extends Mixins(UsesPositionServiceMixin, CancelOnEs
|
|
103
118
|
|
104
119
|
this.title = this.payload.title
|
105
120
|
this.message = this.payload.message
|
121
|
+
this.info = this.payload.info
|
106
122
|
this.yesButton = this.payload.yesButton
|
107
123
|
this.yesColor = this.payload.yesColor
|
108
124
|
this.cancelButton = this.payload.cancelButton
|
@@ -178,6 +194,7 @@ export default class ADialog extends Mixins(UsesPositionServiceMixin, CancelOnEs
|
|
178
194
|
|
179
195
|
this.title = dialogEvent.payload.title
|
180
196
|
this.message = dialogEvent.payload.message
|
197
|
+
this.info = dialogEvent.payload.info
|
181
198
|
this.yesButton = dialogEvent.payload.yesButton
|
182
199
|
this.yesColor = dialogEvent.payload.yesColor
|
183
200
|
this.cancelButton = dialogEvent.payload.cancelButton
|
@@ -234,4 +251,9 @@ export default class ADialog extends Mixins(UsesPositionServiceMixin, CancelOnEs
|
|
234
251
|
}
|
235
252
|
}
|
236
253
|
}
|
254
|
+
|
255
|
+
.dialogInfo {
|
256
|
+
padding-top: 0 !important;
|
257
|
+
padding-bottom: 0 !important;
|
258
|
+
}
|
237
259
|
</style>
|
@@ -9,6 +9,7 @@
|
|
9
9
|
:valid="valid"
|
10
10
|
:modelToEdit="modelToEdit"
|
11
11
|
:model="model"
|
12
|
+
:getField="getField"
|
12
13
|
/>
|
13
14
|
</v-form>
|
14
15
|
</template>
|
@@ -35,6 +36,15 @@ export default class EditForm extends Vue {
|
|
35
36
|
this.reset()
|
36
37
|
}
|
37
38
|
|
39
|
+
getField = name => {
|
40
|
+
const modelType = this.$apiResources.getType(this.model.type)
|
41
|
+
const update = !!this.model.id
|
42
|
+
const fields = update
|
43
|
+
? modelType.getUpdateFields()
|
44
|
+
: modelType.getCreateFields()
|
45
|
+
return fields[name]
|
46
|
+
}
|
47
|
+
|
38
48
|
forceUnchanged () {
|
39
49
|
this.forcedUnchange = true
|
40
50
|
this.$emit('update:changed', false)
|
@@ -69,7 +69,18 @@ export class FormFieldMixin extends Vue {
|
|
69
69
|
}
|
70
70
|
|
71
71
|
if (field.hasOptions()) {
|
72
|
-
|
72
|
+
let options = field.getOptions()
|
73
|
+
|
74
|
+
if (!Array.isArray(options)) {
|
75
|
+
options = Object.entries(options).map(([key, title]) => {
|
76
|
+
return {
|
77
|
+
itemText: title,
|
78
|
+
itemValue: key
|
79
|
+
}
|
80
|
+
})
|
81
|
+
return options
|
82
|
+
}
|
83
|
+
|
73
84
|
return options.map((value, index) => {
|
74
85
|
if (typeof value === 'object') { // object option
|
75
86
|
return {
|
@@ -41,7 +41,7 @@ import { DialogEvent } from '@a-vue/events'
|
|
41
41
|
import { randomCssClass } from '@a-vue/utils/random'
|
42
42
|
|
43
43
|
@Component({
|
44
|
-
props: ['title', 'itemTitle', 'protect']
|
44
|
+
props: ['title', 'message', 'info', 'itemTitle', 'protect']
|
45
45
|
})
|
46
46
|
export default class EditPage extends Vue {
|
47
47
|
dialogId = randomCssClass(10)
|
@@ -56,7 +56,8 @@ export default class EditPage extends Vue {
|
|
56
56
|
const result = await this.$events.dispatch(new DialogEvent(DialogEvent.SHOW, {
|
57
57
|
id: this.dialogId,
|
58
58
|
title: this.itemTitle + ' löschen?',
|
59
|
-
message: 'Soll ' + this.itemTitle + ' gelöscht werden?',
|
59
|
+
message: ['Soll ' + this.itemTitle + ' gelöscht werden?', this.message].filter(m => m).join('<br><br>'),
|
60
|
+
info: this.info,
|
60
61
|
yesButton: 'Löschen',
|
61
62
|
yesColor: 'red white--text'
|
62
63
|
}))
|
@@ -8,11 +8,12 @@
|
|
8
8
|
:createModelToEdit="createModelToEdit"
|
9
9
|
v-on="$listeners"
|
10
10
|
>
|
11
|
-
<template #form="{modelToEdit, model, changed, valid}">
|
11
|
+
<template #form="{modelToEdit, model, getField, changed, valid}">
|
12
12
|
<slot
|
13
13
|
name="form"
|
14
14
|
:modelToEdit="modelToEdit"
|
15
15
|
:model="model"
|
16
|
+
:getField="getField"
|
16
17
|
:changed="changed"
|
17
18
|
:valid="valid"
|
18
19
|
/>
|