@afeefa/vue-app 0.0.68 → 0.0.71
Sign up to get free protection for your applications and to get access to all the features.
- package/.afeefa/package/release/version.txt +1 -1
- package/package.json +1 -1
- package/src/components/ADatePicker.vue +18 -3
- package/src/components/ATableHeader.vue +4 -0
- package/src/components/ATableRow.vue +4 -0
- package/src-admin/components/App.vue +3 -3
- package/src-admin/components/FlyingContext.vue +7 -2
- package/src-admin/components/FlyingContextContainer.vue +30 -12
- package/src-admin/components/app/AppBarButton.vue +8 -1
- package/src-admin/components/app/AppBarTitle.vue +2 -2
- package/src-admin/components/form/RemoveButton.vue +2 -5
- package/src-admin/components/list/ListColumnHeader.vue +26 -1
- package/src-admin/components/list/ListView.vue +10 -1
- package/src-admin/components/model/ModelIcon.vue +8 -3
- package/src-admin/config/vuetify.js +3 -9
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.71
|
package/package.json
CHANGED
@@ -16,6 +16,7 @@
|
|
16
16
|
v-bind="{...$attrs, ...attrs}"
|
17
17
|
:rules="validationRules"
|
18
18
|
v-on="on"
|
19
|
+
@click:clear="clearDate"
|
19
20
|
@click.native="on.click"
|
20
21
|
/>
|
21
22
|
</template>
|
@@ -24,6 +25,8 @@
|
|
24
25
|
v-if="menu"
|
25
26
|
:value="date"
|
26
27
|
no-title
|
28
|
+
:type="type"
|
29
|
+
v-bind="$attrs"
|
27
30
|
@input="dateChanged"
|
28
31
|
/>
|
29
32
|
</v-menu>
|
@@ -36,7 +39,7 @@ import { formatDate } from '@a-vue/utils/format-date'
|
|
36
39
|
import { ComponentWidthMixin } from './mixins/ComponentWidthMixin'
|
37
40
|
|
38
41
|
@Component({
|
39
|
-
props: ['value', 'validator']
|
42
|
+
props: ['value', 'validator', 'type']
|
40
43
|
})
|
41
44
|
export default class ADatePicker extends Mixins(ComponentWidthMixin) {
|
42
45
|
value_ = null
|
@@ -62,7 +65,7 @@ export default class ADatePicker extends Mixins(ComponentWidthMixin) {
|
|
62
65
|
|
63
66
|
get date () {
|
64
67
|
return this.value_
|
65
|
-
? this.value_.toISOString().substr(0, 10)
|
68
|
+
? this.value_.toISOString().substr(0, this.type === 'month' ? 7 : 10)
|
66
69
|
: null
|
67
70
|
}
|
68
71
|
|
@@ -70,6 +73,11 @@ export default class ADatePicker extends Mixins(ComponentWidthMixin) {
|
|
70
73
|
return this.$attrs.label
|
71
74
|
}
|
72
75
|
|
76
|
+
clearDate () {
|
77
|
+
this.value_ = null
|
78
|
+
this.$emit('input', this.value_)
|
79
|
+
}
|
80
|
+
|
73
81
|
dateChanged (date) {
|
74
82
|
this.menu = false
|
75
83
|
this.value_ = new Date(date)
|
@@ -78,7 +86,14 @@ export default class ADatePicker extends Mixins(ComponentWidthMixin) {
|
|
78
86
|
|
79
87
|
get formattedDate () {
|
80
88
|
const date = this.value_
|
81
|
-
|
89
|
+
if (!date) {
|
90
|
+
return null
|
91
|
+
}
|
92
|
+
if (this.type === 'month') {
|
93
|
+
const monthName = date.toLocaleString('default', { month: 'long' })
|
94
|
+
return monthName + ' ' + date.getFullYear()
|
95
|
+
}
|
96
|
+
return formatDate(new Date(date))
|
82
97
|
}
|
83
98
|
|
84
99
|
get validationRules () {
|
@@ -88,7 +88,7 @@
|
|
88
88
|
class="topbar"
|
89
89
|
>
|
90
90
|
<v-app-bar-nav-icon
|
91
|
-
class="sidebarToggleButton mr-2 ml-
|
91
|
+
class="sidebarToggleButton mr-2 ml-3"
|
92
92
|
@click="toggleDrawer"
|
93
93
|
/>
|
94
94
|
|
@@ -97,7 +97,7 @@
|
|
97
97
|
|
98
98
|
<v-container
|
99
99
|
fluid
|
100
|
-
class="pa-8 pt-
|
100
|
+
class="pa-8 pt-2"
|
101
101
|
>
|
102
102
|
<sticky-header />
|
103
103
|
|
@@ -229,7 +229,7 @@ export default class App extends Vue {
|
|
229
229
|
width: 100%;
|
230
230
|
left: 0;
|
231
231
|
top: 0;
|
232
|
-
padding: .2rem 1rem;
|
232
|
+
padding: .2rem 1.1rem;
|
233
233
|
}
|
234
234
|
|
235
235
|
.a-breadcrumbs {
|
@@ -35,12 +35,17 @@ export default class FlyingContext extends Vue {
|
|
35
35
|
}
|
36
36
|
|
37
37
|
this.isVisible = this.show
|
38
|
+
const el = this.getContent()
|
39
|
+
|
40
|
+
if (!el) {
|
41
|
+
return // hmr reload removes dom element but keeps this instance
|
42
|
+
}
|
38
43
|
|
39
44
|
if (this.isVisible) {
|
40
45
|
const container = this.getSidebarContainer()
|
41
|
-
container.appendChild(
|
46
|
+
container.appendChild(el)
|
42
47
|
} else {
|
43
|
-
this.$el.appendChild(
|
48
|
+
this.$el.appendChild(el)
|
44
49
|
}
|
45
50
|
}
|
46
51
|
|
@@ -3,15 +3,24 @@
|
|
3
3
|
id="flyingContextContainer"
|
4
4
|
:class="{visible}"
|
5
5
|
>
|
6
|
-
<
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
6
|
+
<div class="closeButton">
|
7
|
+
<v-btn
|
8
|
+
fab
|
9
|
+
x-small
|
10
|
+
color="gray"
|
11
|
+
target="_blank"
|
12
|
+
title="Schließen"
|
13
|
+
@click.prevent="hide"
|
14
|
+
>
|
15
|
+
<v-icon>
|
16
|
+
$closeIcon
|
17
|
+
</v-icon>
|
18
|
+
</v-btn>
|
19
|
+
</div>
|
13
20
|
|
14
21
|
<div id="flyingContextContainer__children" />
|
22
|
+
|
23
|
+
<div class="v-navigation-drawer__border" />
|
15
24
|
</div>
|
16
25
|
</template>
|
17
26
|
|
@@ -71,15 +80,24 @@ export default class FlyingContextContainer extends Vue {
|
|
71
80
|
position: fixed;
|
72
81
|
z-index: 200;
|
73
82
|
right: 0;
|
74
|
-
width:
|
75
|
-
height:
|
76
|
-
top:
|
77
|
-
background:
|
78
|
-
border: 1px solid black;
|
83
|
+
width: 50vw;
|
84
|
+
height: 100%;
|
85
|
+
top: 0;
|
86
|
+
background: white;
|
79
87
|
transition: right .2s;
|
88
|
+
padding: 2rem;
|
80
89
|
|
81
90
|
&:not(.visible) {
|
82
91
|
right: -80vw;
|
83
92
|
}
|
93
|
+
|
94
|
+
.v-navigation-drawer__border {
|
95
|
+
background-color: rgba(0, 0, 0, .12);
|
96
|
+
left: 0;
|
97
|
+
}
|
98
|
+
|
99
|
+
.closeButton {
|
100
|
+
margin: -1rem 0 2rem -1rem;
|
101
|
+
}
|
84
102
|
}
|
85
103
|
</style>
|
@@ -1,5 +1,5 @@
|
|
1
1
|
<template>
|
2
|
-
<div>
|
2
|
+
<div class="project-buttons gap-3">
|
3
3
|
<slot />
|
4
4
|
</div>
|
5
5
|
</template>
|
@@ -39,3 +39,10 @@ export default class AppBarButton extends Vue {
|
|
39
39
|
}
|
40
40
|
}
|
41
41
|
</script>
|
42
|
+
|
43
|
+
<style scoped>
|
44
|
+
.project-buttons {
|
45
|
+
display: flex;
|
46
|
+
align-items: center;
|
47
|
+
}
|
48
|
+
</style>
|
@@ -4,15 +4,12 @@
|
|
4
4
|
<v-btn
|
5
5
|
:class="'removeButton-' + dialogId"
|
6
6
|
fab
|
7
|
-
small
|
7
|
+
x-small
|
8
8
|
:color="(hover ? 'red' : 'grey lighten-3')"
|
9
9
|
title="Löschen"
|
10
10
|
@click="remove"
|
11
11
|
>
|
12
|
-
<v-icon
|
13
|
-
:color="hover ? 'white' : '#999999'"
|
14
|
-
size="1.4rem"
|
15
|
-
>
|
12
|
+
<v-icon :color="hover ? 'white' : '#999999'">
|
16
13
|
$trashCanIcon
|
17
14
|
</v-icon>
|
18
15
|
</v-btn>
|
@@ -5,10 +5,27 @@
|
|
5
5
|
@click="toggleSort"
|
6
6
|
>
|
7
7
|
<div
|
8
|
+
v-if="!icon"
|
8
9
|
:class="['text', {active}]"
|
9
10
|
v-html="text"
|
10
11
|
/>
|
11
12
|
|
13
|
+
<v-tooltip
|
14
|
+
v-else
|
15
|
+
bottom
|
16
|
+
>
|
17
|
+
<template #activator="{ on, attrs }">
|
18
|
+
<v-icon
|
19
|
+
:class="['mt-n1', {active}]"
|
20
|
+
v-bind="attrs"
|
21
|
+
v-on="on"
|
22
|
+
>
|
23
|
+
{{ icon }}
|
24
|
+
</v-icon>
|
25
|
+
</template>
|
26
|
+
<span>{{ text }}</span>
|
27
|
+
</v-tooltip>
|
28
|
+
|
12
29
|
<svg
|
13
30
|
v-if="order"
|
14
31
|
:class="['sortIcon', direction, {active}]"
|
@@ -25,7 +42,7 @@
|
|
25
42
|
import { Component, Vue } from '@a-vue'
|
26
43
|
|
27
44
|
@Component({
|
28
|
-
props: ['text', 'order']
|
45
|
+
props: ['text', 'icon', 'order']
|
29
46
|
})
|
30
47
|
export default class ListColumnHeader extends Vue {
|
31
48
|
get orderValue () {
|
@@ -92,6 +109,14 @@ export default class ListColumnHeader extends Vue {
|
|
92
109
|
}
|
93
110
|
}
|
94
111
|
|
112
|
+
::v-deep .v-icon {
|
113
|
+
color: #AAAAAA !important;
|
114
|
+
|
115
|
+
&.active {
|
116
|
+
color: #666666 !important;
|
117
|
+
}
|
118
|
+
}
|
119
|
+
|
95
120
|
.text.active {
|
96
121
|
color: #333333;
|
97
122
|
}
|
@@ -36,7 +36,7 @@
|
|
36
36
|
:class="{selectable: hasFlyingContext}"
|
37
37
|
v-bind="getRowAttributes(model)"
|
38
38
|
v-on="getRowListeners(model)"
|
39
|
-
@click="
|
39
|
+
@click="emitFlyingContext(model)"
|
40
40
|
>
|
41
41
|
<v-icon
|
42
42
|
v-if="$has.icon"
|
@@ -113,6 +113,14 @@ export default class ListView extends Mixins(ListViewMixin) {
|
|
113
113
|
get hasFlyingContext () {
|
114
114
|
return !!this.$listeners.flyingContext
|
115
115
|
}
|
116
|
+
|
117
|
+
emitFlyingContext (model) {
|
118
|
+
if (window.getSelection().toString()) { // do not open if text selected
|
119
|
+
console.log(window.getSelection().toString())
|
120
|
+
return
|
121
|
+
}
|
122
|
+
this.$emit('flyingContext', model)
|
123
|
+
}
|
116
124
|
}
|
117
125
|
</script>
|
118
126
|
|
@@ -120,6 +128,7 @@ export default class ListView extends Mixins(ListViewMixin) {
|
|
120
128
|
<style lang="scss" scoped>
|
121
129
|
.listView {
|
122
130
|
max-width: 100%;
|
131
|
+
padding-top: .2rem; // unless, floating input labels might be cut
|
123
132
|
overflow-x: auto;
|
124
133
|
overflow-y: hidden;
|
125
134
|
}
|
@@ -1,8 +1,9 @@
|
|
1
1
|
<template>
|
2
2
|
<v-icon
|
3
3
|
class="modelIcon"
|
4
|
-
:color="
|
4
|
+
:color="_color"
|
5
5
|
v-bind="$attrs"
|
6
|
+
v-on="$listeners"
|
6
7
|
v-text="icon"
|
7
8
|
/>
|
8
9
|
</template>
|
@@ -11,7 +12,7 @@
|
|
11
12
|
import { Component, Vue } from '@a-vue'
|
12
13
|
|
13
14
|
@Component({
|
14
|
-
props: ['model', 'modelClass']
|
15
|
+
props: ['model', 'modelClass', 'color']
|
15
16
|
})
|
16
17
|
export default class ModelIcon extends Vue {
|
17
18
|
get icon () {
|
@@ -22,7 +23,11 @@ export default class ModelIcon extends Vue {
|
|
22
23
|
}
|
23
24
|
}
|
24
25
|
|
25
|
-
get
|
26
|
+
get _color () {
|
27
|
+
if (this.color) {
|
28
|
+
return this.color
|
29
|
+
}
|
30
|
+
|
26
31
|
if (this.model) {
|
27
32
|
return this.model.getIcon().color
|
28
33
|
} else {
|
@@ -17,11 +17,8 @@ import {
|
|
17
17
|
mdiMenuUp,
|
18
18
|
mdiPencil,
|
19
19
|
mdiPlus,
|
20
|
-
|
21
|
-
|
22
|
-
mdiShopping,
|
23
|
-
mdiMessage,
|
24
|
-
mdiPencilBoxMultiple
|
20
|
+
mdiPrinter,
|
21
|
+
mdiThumbUpOutline
|
25
22
|
} from '@mdi/js'
|
26
23
|
import Vue from 'vue'
|
27
24
|
import Vuetify from 'vuetify/lib'
|
@@ -51,10 +48,7 @@ export default new Vuetify({
|
|
51
48
|
arrowLeftIcon: mdiArrowLeft,
|
52
49
|
caretDownIcon: mdiMenuDown,
|
53
50
|
caretUpIcon: mdiMenuUp,
|
54
|
-
|
55
|
-
shop: mdiShopping,
|
56
|
-
annotation: mdiMessage,
|
57
|
-
duplicates: mdiPencilBoxMultiple
|
51
|
+
printerIcon: mdiPrinter
|
58
52
|
}
|
59
53
|
},
|
60
54
|
breakpoint: {
|