@afeefa/vue-app 0.0.227 → 0.0.228
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/ARadioGroup.vue +4 -1
- package/src-admin/components/index.js +2 -8
- package/src-admin/components/list/ListConfig.vue +93 -0
- package/src-admin/components/list/ListView.vue +33 -6
- package/src-admin/components/list/ListCard.vue +0 -12
- package/src-admin/components/list/ListContent.vue +0 -13
- package/src-admin/components/list/ListMeta.vue +0 -13
- package/src-admin/components/list/ListTitle.vue +0 -24
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.228
|
package/package.json
CHANGED
@@ -7,8 +7,11 @@
|
|
7
7
|
v-bind="$attrs"
|
8
8
|
@change="$emit('input', $event)"
|
9
9
|
>
|
10
|
-
<
|
10
|
+
<slot v-if="$slots.default" />
|
11
|
+
|
12
|
+
<template v-else>
|
11
13
|
<v-radio
|
14
|
+
v-for="option in options_"
|
12
15
|
:key="option.itemText"
|
13
16
|
:value="option.itemValue"
|
14
17
|
>
|
@@ -15,12 +15,9 @@ import EditFormButtons from './form/EditFormButtons'
|
|
15
15
|
import RemoveButton from './form/RemoveButton'
|
16
16
|
import RemoveDialog from './form/RemoveDialog'
|
17
17
|
import HSeparator from './HSeparator'
|
18
|
-
import ListCard from './list/ListCard'
|
19
18
|
import ListColumnHeader from './list/ListColumnHeader'
|
20
19
|
import ListColumnSelector from './list/ListColumnSelector'
|
21
|
-
import
|
22
|
-
import ListMeta from './list/ListMeta'
|
23
|
-
import ListTitle from './list/ListTitle'
|
20
|
+
import ListConfig from './list/ListConfig'
|
24
21
|
import ListView from './list/ListView'
|
25
22
|
import ModelCount from './model/ModelCount'
|
26
23
|
import ModelIcon from './model/ModelIcon'
|
@@ -30,11 +27,8 @@ import Start from './Start'
|
|
30
27
|
import StickyFooter from './StickyFooter'
|
31
28
|
import CollapseTransition from './transitions/CollapseTransition'
|
32
29
|
|
33
|
-
Vue.component('ListCard', ListCard)
|
34
30
|
Vue.component('ListColumnHeader', ListColumnHeader)
|
35
|
-
Vue.component('
|
36
|
-
Vue.component('ListMeta', ListMeta)
|
37
|
-
Vue.component('ListTitle', ListTitle)
|
31
|
+
Vue.component('ListConfig', ListConfig)
|
38
32
|
Vue.component('ListView', ListView)
|
39
33
|
Vue.component('ListColumnSelector', ListColumnSelector)
|
40
34
|
|
@@ -0,0 +1,93 @@
|
|
1
|
+
<template>
|
2
|
+
<div>
|
3
|
+
<div
|
4
|
+
v-if="bulkSelection"
|
5
|
+
class="mb-4"
|
6
|
+
>
|
7
|
+
<label>Mehrfachauswahl</label>
|
8
|
+
<a-checkbox
|
9
|
+
v-model="bulkSelection_"
|
10
|
+
hide-details
|
11
|
+
label="Mehrere auswählen"
|
12
|
+
@input="updateList"
|
13
|
+
/>
|
14
|
+
</div>
|
15
|
+
|
16
|
+
<label>Auswahlmodus</label>
|
17
|
+
<a-radio-group
|
18
|
+
v-model="dragMode"
|
19
|
+
@input="updateList"
|
20
|
+
>
|
21
|
+
<template #default>
|
22
|
+
<v-radio value="grab">
|
23
|
+
<template #label>
|
24
|
+
<a-icon
|
25
|
+
:icon="{icon: grabIcon}"
|
26
|
+
class="mr-2"
|
27
|
+
/> Liste verschieben
|
28
|
+
</template>
|
29
|
+
</v-radio>
|
30
|
+
<v-radio value="select">
|
31
|
+
<template #label>
|
32
|
+
<a-icon
|
33
|
+
:icon="{icon: selectIcon}"
|
34
|
+
class="mr-2"
|
35
|
+
/> Text auswählen
|
36
|
+
</template>
|
37
|
+
</v-radio>
|
38
|
+
</template>
|
39
|
+
</a-radio-group>
|
40
|
+
</div>
|
41
|
+
</template>
|
42
|
+
|
43
|
+
<script>
|
44
|
+
import { Component, Vue } from '@a-vue'
|
45
|
+
import { mdiTextRecognition, mdiHandBackRight } from '@mdi/js'
|
46
|
+
|
47
|
+
@Component({
|
48
|
+
props: [{
|
49
|
+
bulkSelection: false,
|
50
|
+
columns: false
|
51
|
+
}]
|
52
|
+
})
|
53
|
+
export default class ListConfig extends Vue {
|
54
|
+
bulkSelection_ = false
|
55
|
+
dragMode = 'grab'
|
56
|
+
|
57
|
+
grabIcon = mdiHandBackRight
|
58
|
+
selectIcon = mdiTextRecognition
|
59
|
+
|
60
|
+
created () {
|
61
|
+
this.bulkSelection_ = this.listView._bulkSelection
|
62
|
+
this.dragMode = this.listView._dragMode
|
63
|
+
}
|
64
|
+
|
65
|
+
get listView () {
|
66
|
+
let parent = this.$parent
|
67
|
+
while (parent) {
|
68
|
+
if (parent.LIST_VIEW) {
|
69
|
+
return parent
|
70
|
+
}
|
71
|
+
parent = parent.$parent
|
72
|
+
}
|
73
|
+
return null
|
74
|
+
}
|
75
|
+
|
76
|
+
updateList () {
|
77
|
+
this.listView.setBulkSelection(this.bulkSelection_)
|
78
|
+
this.listView.setDragMode(this.dragMode)
|
79
|
+
}
|
80
|
+
}
|
81
|
+
</script>
|
82
|
+
|
83
|
+
|
84
|
+
<style lang="scss" scoped>
|
85
|
+
.contextButton {
|
86
|
+
font-size: .7rem;
|
87
|
+
cursor: pointer;
|
88
|
+
}
|
89
|
+
|
90
|
+
label {
|
91
|
+
color: gray;
|
92
|
+
}
|
93
|
+
</style>
|
@@ -29,10 +29,10 @@
|
|
29
29
|
</template>
|
30
30
|
|
31
31
|
<template v-else-if="$scopedSlots['model-table']">
|
32
|
-
<div class="a-table-wrapper">
|
32
|
+
<div :class="['a-table-wrapper', _dragMode]">
|
33
33
|
<a-table>
|
34
34
|
<a-table-header>
|
35
|
-
<div v-if="
|
35
|
+
<div v-if="_bulkSelection" />
|
36
36
|
|
37
37
|
<div v-if="$has.icon">
|
38
38
|
<slot name="header-icon" />
|
@@ -54,7 +54,7 @@
|
|
54
54
|
@click="emitFlyingContext(model)"
|
55
55
|
>
|
56
56
|
<div
|
57
|
-
v-if="
|
57
|
+
v-if="_bulkSelection"
|
58
58
|
class="pr-2"
|
59
59
|
>
|
60
60
|
<a-checkbox
|
@@ -90,7 +90,7 @@
|
|
90
90
|
subModel: true
|
91
91
|
}"
|
92
92
|
>
|
93
|
-
<div v-if="
|
93
|
+
<div v-if="_bulkSelection" />
|
94
94
|
|
95
95
|
<div v-if="$has.icon" />
|
96
96
|
|
@@ -167,7 +167,8 @@ import { LoadingEvent } from '@a-vue/events'
|
|
167
167
|
'rowClasses',
|
168
168
|
'rowListeners',
|
169
169
|
{
|
170
|
-
|
170
|
+
bulkSelection: false,
|
171
|
+
dragMode: 'grab',
|
171
172
|
getSubModels: {
|
172
173
|
default: () => model => []
|
173
174
|
}
|
@@ -186,6 +187,25 @@ export default class ListView extends Mixins(ListViewMixin) {
|
|
186
187
|
|
187
188
|
selectedModels = []
|
188
189
|
|
190
|
+
dragMode_ = null
|
191
|
+
bulkSelection_ = null
|
192
|
+
|
193
|
+
setDragMode (mode) {
|
194
|
+
this.dragMode_ = mode
|
195
|
+
}
|
196
|
+
|
197
|
+
get _dragMode () {
|
198
|
+
return this.dragMode_ || this.dragMode
|
199
|
+
}
|
200
|
+
|
201
|
+
setBulkSelection (mode) {
|
202
|
+
this.bulkSelection_ = mode
|
203
|
+
}
|
204
|
+
|
205
|
+
get _bulkSelection () {
|
206
|
+
return this.bulkSelection_ || this.bulkSelection
|
207
|
+
}
|
208
|
+
|
189
209
|
isSelected (model) {
|
190
210
|
return this.selectedModels.includes(model)
|
191
211
|
}
|
@@ -269,6 +289,10 @@ export default class ListView extends Mixins(ListViewMixin) {
|
|
269
289
|
}
|
270
290
|
|
271
291
|
startShifting (event) {
|
292
|
+
if (this._dragMode !== 'grab') {
|
293
|
+
return
|
294
|
+
}
|
295
|
+
|
272
296
|
this.scrollContainerX = this.getScrollParent(this.$el.querySelector('.a-table-wrapper'), 'h')
|
273
297
|
this.scrollContainerY = this.getScrollParent(this.$el.querySelector('.a-table-wrapper'), 'v')
|
274
298
|
|
@@ -352,7 +376,10 @@ export default class ListView extends Mixins(ListViewMixin) {
|
|
352
376
|
overflow-x: auto;
|
353
377
|
overflow-y: hidden;
|
354
378
|
padding-bottom: 1rem;
|
355
|
-
|
379
|
+
|
380
|
+
&.grab {
|
381
|
+
cursor: grab;
|
382
|
+
}
|
356
383
|
}
|
357
384
|
|
358
385
|
.filters:not(:empty) {
|
@@ -1,24 +0,0 @@
|
|
1
|
-
<template>
|
2
|
-
<router-link
|
3
|
-
v-if="link"
|
4
|
-
:to="link"
|
5
|
-
>
|
6
|
-
<h3>
|
7
|
-
<slot />
|
8
|
-
</h3>
|
9
|
-
</router-link>
|
10
|
-
|
11
|
-
<h3 v-else>
|
12
|
-
<slot />
|
13
|
-
</h3>
|
14
|
-
</template>
|
15
|
-
|
16
|
-
<script>
|
17
|
-
import { Component, Vue } from '@a-vue'
|
18
|
-
|
19
|
-
@Component({
|
20
|
-
props: ['link']
|
21
|
-
})
|
22
|
-
export default class ListTitle extends Vue {
|
23
|
-
}
|
24
|
-
</script>
|