@afeefa/vue-app 0.0.64 → 0.0.67
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/ABreadcrumbs.vue +75 -18
- package/src/components/ADatePicker.vue +1 -1
- package/src/components/AIcon.vue +3 -6
- package/src/components/AIconButton.vue +1 -2
- package/src/components/ARichTextArea.vue +95 -85
- package/src/components/ARow.vue +0 -7
- package/src/components/form/EditForm.vue +9 -0
- package/src/components/form/EditModal.vue +2 -0
- package/src/components/form/FormFieldMixin.js +13 -4
- package/src/components/form/fields/FormFieldRichTextArea.vue +5 -3
- package/src/components/list/ListViewMixin.js +25 -2
- package/src/components/mixins/ClickOutsideMixin.js +5 -1
- package/src/components/search-select/SearchSelectList.vue +0 -1
- package/src/components/vue/Component.js +9 -2
- package/src/events.js +1 -0
- package/src-admin/components/App.vue +56 -61
- package/src-admin/components/Sidebar.vue +66 -0
- package/src-admin/components/SidebarItem.vue +59 -0
- package/src-admin/components/StickyFooter.vue +42 -0
- package/src-admin/components/StickyFooterContainer.vue +66 -0
- package/src-admin/components/StickyHeader.vue +73 -0
- package/src-admin/components/app/AppBarButtons.vue +0 -7
- package/src-admin/components/app/AppBarTitle.vue +55 -11
- package/src-admin/components/app/AppBarTitleContainer.vue +2 -3
- package/src-admin/components/controls/SearchSelectFormField.vue +1 -0
- package/src-admin/components/detail/DetailProperty.vue +20 -16
- package/src-admin/components/form/EditFormButtons.vue +21 -4
- package/src-admin/components/form/RemoveButton.vue +17 -8
- package/src-admin/components/index.js +4 -0
- package/src-admin/components/list/ListView.vue +5 -6
- package/src-admin/components/pages/EditPage.vue +11 -7
- package/src-admin/components/routes/DataRouteMixin.js +1 -1
- package/src-admin/config/vuetify.js +22 -2
- package/src-admin/styles.scss +21 -4
@@ -1,17 +1,27 @@
|
|
1
1
|
<template>
|
2
|
-
<a-row
|
2
|
+
<a-row
|
3
|
+
gap="1"
|
4
|
+
v-bind="$attrs"
|
5
|
+
>
|
3
6
|
<v-btn
|
4
|
-
|
7
|
+
fab
|
8
|
+
small
|
5
9
|
:disabled="($has.reset && !changed) || !valid"
|
6
10
|
color="green white--text"
|
11
|
+
title="Speichern"
|
7
12
|
@click="$emit('save')"
|
8
13
|
>
|
9
|
-
|
14
|
+
<v-icon>
|
15
|
+
$checkIcon
|
16
|
+
</v-icon>
|
10
17
|
</v-btn>
|
11
18
|
|
12
19
|
<v-icon
|
13
20
|
v-if="$has.reset && changed"
|
14
21
|
:small="small"
|
22
|
+
:class="{disabled: !changed}"
|
23
|
+
:disabled="!changed"
|
24
|
+
color="#999999"
|
15
25
|
text
|
16
26
|
title="Formular zurücksetzen"
|
17
27
|
@click="$emit('reset')"
|
@@ -29,7 +39,7 @@ import { mdiRotateLeft} from '@mdi/js'
|
|
29
39
|
props: [
|
30
40
|
'changed',
|
31
41
|
'valid',
|
32
|
-
|
42
|
+
{small: false}
|
33
43
|
]
|
34
44
|
})
|
35
45
|
export default class EditFormButtons extends Vue {
|
@@ -38,3 +48,10 @@ export default class EditFormButtons extends Vue {
|
|
38
48
|
undoIcon = mdiRotateLeft
|
39
49
|
}
|
40
50
|
</script>
|
51
|
+
|
52
|
+
|
53
|
+
<style lang="scss" scoped>
|
54
|
+
.v-icon--disabled {
|
55
|
+
opacity: .3;
|
56
|
+
}
|
57
|
+
</style>
|
@@ -1,13 +1,22 @@
|
|
1
1
|
<template>
|
2
2
|
<div>
|
3
|
-
<
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
3
|
+
<v-hover v-slot="{ hover }">
|
4
|
+
<v-btn
|
5
|
+
:class="'removeButton-' + dialogId"
|
6
|
+
fab
|
7
|
+
small
|
8
|
+
:color="(hover ? 'red' : 'grey lighten-3')"
|
9
|
+
title="Löschen"
|
10
|
+
@click="remove"
|
11
|
+
>
|
12
|
+
<v-icon
|
13
|
+
:color="hover ? 'white' : '#999999'"
|
14
|
+
size="1.4rem"
|
15
|
+
>
|
16
|
+
$trashCanIcon
|
17
|
+
</v-icon>
|
18
|
+
</v-btn>
|
19
|
+
</v-hover>
|
11
20
|
|
12
21
|
<a-dialog
|
13
22
|
:id="dialogId"
|
@@ -19,7 +19,9 @@ import ListView from './list/ListView'
|
|
19
19
|
import ModelCount from './model/ModelCount'
|
20
20
|
import ModelIcon from './model/ModelIcon'
|
21
21
|
import EditPage from './pages/EditPage'
|
22
|
+
import SidebarItem from './SidebarItem.vue'
|
22
23
|
import Start from './Start.vue'
|
24
|
+
import StickyFooter from './StickyFooter.vue'
|
23
25
|
|
24
26
|
Vue.component('ListCard', ListCard)
|
25
27
|
Vue.component('ListColumnHeader', ListColumnHeader)
|
@@ -46,3 +48,5 @@ Vue.component('AppBarTitle', AppBarTitle)
|
|
46
48
|
|
47
49
|
Vue.component('Start', Start)
|
48
50
|
Vue.component('FlyingContext', FlyingContext)
|
51
|
+
Vue.component('StickyFooter', StickyFooter)
|
52
|
+
Vue.component('SidebarItem', SidebarItem)
|
@@ -8,12 +8,16 @@
|
|
8
8
|
/>
|
9
9
|
</div>
|
10
10
|
|
11
|
+
<slot
|
12
|
+
v-if="$scopedSlots.models"
|
13
|
+
name="before-models"
|
14
|
+
/>
|
15
|
+
|
11
16
|
<template v-if="models_.length">
|
12
17
|
<template v-if="$scopedSlots.models">
|
13
18
|
<slot
|
14
19
|
name="models"
|
15
20
|
:models="models_"
|
16
|
-
:setFilter="setFilter"
|
17
21
|
/>
|
18
22
|
</template>
|
19
23
|
|
@@ -44,7 +48,6 @@
|
|
44
48
|
<slot
|
45
49
|
name="model-table"
|
46
50
|
:model="model"
|
47
|
-
:setFilter="setFilter"
|
48
51
|
/>
|
49
52
|
</a-table-row>
|
50
53
|
</a-table>
|
@@ -110,10 +113,6 @@ export default class ListView extends Mixins(ListViewMixin) {
|
|
110
113
|
get hasFlyingContext () {
|
111
114
|
return !!this.$listeners.flyingContext
|
112
115
|
}
|
113
|
-
|
114
|
-
setFilter (name, value) {
|
115
|
-
this.filters[name].value = value
|
116
|
-
}
|
117
116
|
}
|
118
117
|
</script>
|
119
118
|
|
@@ -12,13 +12,15 @@
|
|
12
12
|
:valid="valid"
|
13
13
|
/>
|
14
14
|
|
15
|
-
<
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
15
|
+
<app-bar-button>
|
16
|
+
<edit-form-buttons
|
17
|
+
:changed="changed"
|
18
|
+
:valid="valid"
|
19
|
+
:has="{reset: !!modelToEdit.id}"
|
20
|
+
@save="$emit('save', modelToEdit, ignoreChangesOnRouteChange)"
|
21
|
+
@reset="$refs.form.reset()"
|
22
|
+
/>
|
23
|
+
</app-bar-button>
|
22
24
|
</template>
|
23
25
|
</edit-form>
|
24
26
|
</template>
|
@@ -59,6 +61,8 @@ export default class EditPage extends Vue {
|
|
59
61
|
* hook to allow to leave a just created (saved) model
|
60
62
|
*/
|
61
63
|
ignoreChangesOnRouteChange () {
|
64
|
+
// this.$refs.form.forceUnchanged()
|
65
|
+
console.info('TODO switch form to forceUnchanged')
|
62
66
|
this.ignoreChangesOnRouteChange_ = true
|
63
67
|
}
|
64
68
|
}
|
@@ -1,17 +1,27 @@
|
|
1
1
|
import {
|
2
2
|
mdiAlarmLightOutline,
|
3
|
+
mdiArrowLeft,
|
3
4
|
mdiCalendar,
|
5
|
+
mdiCheck,
|
6
|
+
mdiCheckBold,
|
4
7
|
mdiChevronRight,
|
5
8
|
mdiClose,
|
9
|
+
mdiCloseThick,
|
6
10
|
mdiDelete,
|
7
11
|
mdiDotsHorizontal,
|
8
12
|
mdiDotsVertical,
|
9
13
|
mdiLock,
|
10
14
|
mdiLogoutVariant,
|
11
15
|
mdiMagnify,
|
16
|
+
mdiMenuDown,
|
17
|
+
mdiMenuUp,
|
12
18
|
mdiPencil,
|
13
19
|
mdiPlus,
|
14
|
-
mdiThumbUpOutline
|
20
|
+
mdiThumbUpOutline,
|
21
|
+
mdiAccountGroup,
|
22
|
+
mdiShopping,
|
23
|
+
mdiMessage,
|
24
|
+
mdiPencilBoxMultiple
|
15
25
|
} from '@mdi/js'
|
16
26
|
import Vue from 'vue'
|
17
27
|
import Vuetify from 'vuetify/lib'
|
@@ -26,6 +36,7 @@ export default new Vuetify({
|
|
26
36
|
thumbsUpIcon: mdiThumbUpOutline,
|
27
37
|
alarmIcon: mdiAlarmLightOutline,
|
28
38
|
closeIcon: mdiClose,
|
39
|
+
closeBoldIcon: mdiCloseThick,
|
29
40
|
dotsVerticalIcon: mdiDotsVertical,
|
30
41
|
dotsHorizontalIcon: mdiDotsHorizontal,
|
31
42
|
logoutIcon: mdiLogoutVariant,
|
@@ -34,7 +45,16 @@ export default new Vuetify({
|
|
34
45
|
trashCanIcon: mdiDelete,
|
35
46
|
calendarIcon: mdiCalendar,
|
36
47
|
searchIcon: mdiMagnify,
|
37
|
-
lockIcon: mdiLock
|
48
|
+
lockIcon: mdiLock,
|
49
|
+
checkIcon: mdiCheck,
|
50
|
+
checkBoldIcon: mdiCheckBold,
|
51
|
+
arrowLeftIcon: mdiArrowLeft,
|
52
|
+
caretDownIcon: mdiMenuDown,
|
53
|
+
caretUpIcon: mdiMenuUp,
|
54
|
+
householdMembers: mdiAccountGroup,
|
55
|
+
shop: mdiShopping,
|
56
|
+
annotation: mdiMessage,
|
57
|
+
duplicates: mdiPencilBoxMultiple
|
38
58
|
}
|
39
59
|
},
|
40
60
|
breakpoint: {
|
package/src-admin/styles.scss
CHANGED
@@ -15,6 +15,7 @@
|
|
15
15
|
.contextButton {
|
16
16
|
color: #AAAAAA !important;
|
17
17
|
cursor: pointer;
|
18
|
+
|
18
19
|
&:hover {
|
19
20
|
color: #333333 !important;
|
20
21
|
}
|
@@ -27,14 +28,30 @@
|
|
27
28
|
}
|
28
29
|
}
|
29
30
|
|
30
|
-
.v-main {
|
31
|
-
margin-bottom: 2rem;
|
32
|
-
}
|
33
|
-
|
34
31
|
.theme--light.v-btn.v-btn--has-bg {
|
35
32
|
background-color: #E9E9E9;
|
36
33
|
}
|
37
34
|
|
35
|
+
.theme--light.v-btn.v-btn--disabled,
|
36
|
+
.theme--light.v-btn.v-btn--disabled .v-icon,
|
37
|
+
.theme--light.v-btn.v-btn--disabled .v-btn__loading {
|
38
|
+
color: white !important;
|
39
|
+
}
|
40
|
+
|
41
|
+
.theme--light.v-btn.v-btn--disabled.v-btn--has-bg {
|
42
|
+
background-color: #EEEEEE !important;
|
43
|
+
}
|
44
|
+
|
45
|
+
.v-btn {
|
46
|
+
box-shadow: none !important;
|
47
|
+
}
|
48
|
+
|
49
|
+
// @for $i from 1 through 10 {
|
50
|
+
// .gap-{$i} {
|
51
|
+
// gap: 0.25rem * $i;
|
52
|
+
// }
|
53
|
+
// }
|
54
|
+
|
38
55
|
.gap-0 {
|
39
56
|
gap: 0;
|
40
57
|
}
|