@afeefa/vue-app 0.0.264 → 0.0.266

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.
@@ -1 +1 @@
1
- 0.0.264
1
+ 0.0.266
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@afeefa/vue-app",
3
- "version": "0.0.264",
3
+ "version": "0.0.266",
4
4
  "description": "",
5
5
  "author": "Afeefa Kollektiv <kollektiv@afeefa.de>",
6
6
  "license": "MIT",
@@ -2,6 +2,7 @@
2
2
  <div class="contextEditor">
3
3
  <!-- click.stop prevents possible surrounding v-input to focus -->
4
4
  <div
5
+ v-if="!customAnchor"
5
6
  class="activator"
6
7
  @click.stop="open"
7
8
  >
@@ -32,7 +33,7 @@ import { Positions, PositionConfig } from '../services/PositionService'
32
33
  import { randomCssClass } from '../utils/random'
33
34
 
34
35
  @Component({
35
- props: ['contentHeight', 'repositionWatchKey', 'triggerIcon']
36
+ props: ['contentHeight', 'repositionWatchKey', 'triggerIcon', 'customAnchor']
36
37
  })
37
38
  export default class AContextMenu extends Mixins(UsesPositionServiceMixin) {
38
39
  CONTEXT_MENU = true
@@ -44,9 +45,27 @@ export default class AContextMenu extends Mixins(UsesPositionServiceMixin) {
44
45
  return 'popUp-' + this.menuId
45
46
  }
46
47
 
48
+ mounted () {
49
+ if (this.customAnchor) {
50
+ this.open()
51
+ }
52
+ }
53
+
47
54
  positionize () {
55
+ let anchor = this.customAnchor || [this, '.activator']
56
+
57
+ if (!Array.isArray(anchor)) {
58
+ if (typeof anchor === 'string') {
59
+ anchor = [document.documentElement, anchor]
60
+ } else if (typeof anchor === 'object') { // dom element or vue ref
61
+ anchor = [anchor]
62
+ } else {
63
+ anchor = [document.documentElement]
64
+ }
65
+ }
66
+
48
67
  const position = new PositionConfig()
49
- .setAnchor(this, '.activator')
68
+ .setAnchor(...anchor)
50
69
  .setTarget(
51
70
  document.documentElement,
52
71
  '.' + this.popUpCssClass + ' .popUpContent'
@@ -104,6 +123,13 @@ export default class AContextMenu extends Mixins(UsesPositionServiceMixin) {
104
123
  this.urp_update()
105
124
  }
106
125
 
126
+ @Watch('customAnchor')
127
+ customAnchorChanged () {
128
+ if (this.customAnchor && !this.isOpen) {
129
+ this.open()
130
+ }
131
+ }
132
+
107
133
  getContainer () {
108
134
  return document.querySelector('.v-application')
109
135
  }
@@ -33,7 +33,7 @@
33
33
  import { Component, Vue } from '@a-vue'
34
34
 
35
35
  @Component({
36
- props: [{first: false}]
36
+ props: ['beforeChange', {first: false}]
37
37
  })
38
38
  export default class ATabs extends Vue {
39
39
  titles = []
@@ -47,7 +47,14 @@ export default class ATabs extends Vue {
47
47
  this.$children[this.currentIndex].show()
48
48
  }
49
49
 
50
- setTab (index) {
50
+ async setTab (index) {
51
+ if (this.beforeChange) {
52
+ const result = await this.beforeChange(index, this.currentIndex)
53
+ if (!result) {
54
+ return
55
+ }
56
+ }
57
+
51
58
  this.currentIndex = index
52
59
  const tabs = this.$slots.default.map(s => s.componentInstance)
53
60
  tabs.forEach((tab, i) => {
@@ -159,7 +159,6 @@
159
159
  <script>
160
160
  import { Component, Watch, Mixins } from '@a-vue'
161
161
  import { ListViewMixin } from '@a-vue/components/list/ListViewMixin'
162
- import { LoadingEvent } from '@a-vue/events'
163
162
 
164
163
  @Component({
165
164
  props: [
@@ -235,13 +234,6 @@ export default class ListView extends Mixins(ListViewMixin) {
235
234
 
236
235
  @Watch('isLoading')
237
236
  isLoadingChanged () {
238
- if (this.events) {
239
- if (this.isLoading) {
240
- this.$events.dispatch(new LoadingEvent(LoadingEvent.START_LOADING))
241
- } else {
242
- this.$events.dispatch(new LoadingEvent(LoadingEvent.STOP_LOADING))
243
- }
244
- }
245
237
  this.$emit('update:isLoading', this.isLoading)
246
238
  }
247
239