@afeefa/vue-app 0.0.83 → 0.0.85

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.83
1
+ 0.0.85
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@afeefa/vue-app",
3
- "version": "0.0.83",
3
+ "version": "0.0.85",
4
4
  "description": "",
5
5
  "author": "Afeefa Kollektiv <kollektiv@afeefa.de>",
6
6
  "license": "MIT",
@@ -85,3 +85,7 @@ export class ApiAction extends ApiResourcesApiAction {
85
85
 
86
86
  export class BulkAction extends ApiAction {
87
87
  }
88
+
89
+ export class SequentialBulkAction extends ApiAction {
90
+ _bulkIsSequential = true
91
+ }
@@ -1,4 +1,4 @@
1
- import { BulkAction } from './ApiAction'
1
+ import { BulkAction, SequentialBulkAction } from './ApiAction'
2
2
  import { DeleteAction } from './DeleteAction'
3
3
  import { GetAction } from './GetAction'
4
4
  import { ListAction } from './ListAction'
@@ -6,6 +6,7 @@ import { SaveAction } from './SaveAction'
6
6
 
7
7
  export {
8
8
  BulkAction,
9
+ SequentialBulkAction,
9
10
  ListAction,
10
11
  GetAction,
11
12
  SaveAction,
@@ -19,7 +19,7 @@ import { debounce } from '@a-vue/utils/debounce'
19
19
  import { ComponentWidthMixin } from './mixins/ComponentWidthMixin'
20
20
 
21
21
  @Component({
22
- props: ['focus', 'debounce', 'validator', {password: false, number: false}]
22
+ props: ['debounce', 'validator', {focus: false, password: false, number: false}]
23
23
  })
24
24
  export default class ATextField extends Mixins(ComponentWidthMixin) {
25
25
  $hasOptions = ['counter']
@@ -9,6 +9,8 @@
9
9
  <slot name="activator" />
10
10
  </template>
11
11
 
12
+ <slot name="before-form" />
13
+
12
14
  <edit-form
13
15
  v-if="show_"
14
16
  ref="form"
@@ -23,8 +25,10 @@
23
25
  :valid="valid"
24
26
  />
25
27
 
28
+ <slot name="after-form-fields" />
29
+
26
30
  <a-row
27
- class="mt-8 mb-1 pb-1 gap-4"
31
+ class="mt-8 mb-1 pb-1 gap-2"
28
32
  right
29
33
  >
30
34
  <v-btn
@@ -38,6 +42,7 @@
38
42
  :changed="changed"
39
43
  :valid="valid"
40
44
  small
45
+ angular
41
46
  :has="{reset: !!modelToEdit.id}"
42
47
  @save="$emit('save', modelToEdit, ignoreChangesOnClose)"
43
48
  @reset="$refs.form.reset()"
@@ -45,6 +50,8 @@
45
50
  </a-row>
46
51
  </template>
47
52
  </edit-form>
53
+
54
+ <slot name="after-form" />
48
55
  </a-modal>
49
56
  </template>
50
57
 
@@ -112,12 +119,13 @@ export default class EditModal extends Vue {
112
119
  return true
113
120
  }
114
121
 
115
- async close () {
116
- const result = await this.beforeClose()
117
- if (!result) {
118
- return
122
+ async close (force = false) {
123
+ if (!force) {
124
+ const result = await this.beforeClose()
125
+ if (!result) {
126
+ return
127
+ }
119
128
  }
120
-
121
129
  this.show_ = false
122
130
  }
123
131
 
@@ -2,7 +2,7 @@ import { Component, Vue } from '@a-vue'
2
2
  import { ListAction } from '@a-vue/api-resources/ApiActions'
3
3
 
4
4
  @Component({
5
- props: ['name', 'label', 'additionalRules']
5
+ props: ['name', 'label', 'additionalRules', 'optionRequestParams']
6
6
  })
7
7
  export class FormFieldMixin extends Vue {
8
8
  get model () {
@@ -55,6 +55,7 @@ export class FormFieldMixin extends Vue {
55
55
  if (field.hasOptionsRequest()) {
56
56
  const request = field
57
57
  .getOptionsRequest()
58
+ .addParams(this.optionRequestParams || {})
58
59
  .addFilters(filters)
59
60
 
60
61
  const {models} = await new ListAction()
@@ -15,6 +15,11 @@
15
15
  </v-avatar>
16
16
 
17
17
  <label :class="['label', {'label--withIcon': !!_icon}]">{{ label }}</label>
18
+ <div class="pl-2">
19
+ <slot
20
+ name="actionButton"
21
+ />
22
+ </div>
18
23
  </div>
19
24
 
20
25
  <div :class="['content', {'content--withIcon': !!_icon}]">
@@ -7,16 +7,23 @@
7
7
  <template #activator="{ on }">
8
8
  <div v-on="disabled ? on : null">
9
9
  <v-btn
10
- fab
10
+ :fab="!angular"
11
11
  small
12
12
  :disabled="disabled"
13
13
  color="green white--text"
14
14
  title="Speichern"
15
15
  @click="$emit('save')"
16
16
  >
17
- <v-icon>
17
+ <v-icon
18
+ :left="angular"
19
+ :class="{['mr-1']: angular}"
20
+ >
18
21
  $checkIcon
19
22
  </v-icon>
23
+
24
+ <template v-if="angular">
25
+ Speichern
26
+ </template>
20
27
  </v-btn>
21
28
  </div>
22
29
  </template>
@@ -56,7 +63,7 @@ import { mdiRotateLeft} from '@mdi/js'
56
63
  props: [
57
64
  'changed',
58
65
  'valid',
59
- {small: false}
66
+ {angular: false, small: false}
60
67
  ]
61
68
  })
62
69
  export default class EditFormButtons extends Vue {
@@ -129,6 +129,7 @@ export default class ListView extends Mixins(ListViewMixin) {
129
129
  } // else { a: true, b: true, c: true }
130
130
 
131
131
  classes = {
132
+ clickable: this.hasClickListener,
132
133
  selectable: this.hasFlyingContext,
133
134
  ...classes
134
135
  }
@@ -144,6 +145,10 @@ export default class ListView extends Mixins(ListViewMixin) {
144
145
  return !!this.$listeners.flyingContext
145
146
  }
146
147
 
148
+ get hasClickListener () {
149
+ return !!this.getRowListeners().click
150
+ }
151
+
147
152
  emitFlyingContext (model) {
148
153
  if (window.getSelection().toString()) { // do not open if text selected
149
154
  // console.log(window.getSelection().toString())
@@ -171,4 +176,8 @@ export default class ListView extends Mixins(ListViewMixin) {
171
176
  .a-table-row > :last-child {
172
177
  width: 100%;
173
178
  }
179
+
180
+ .a-table-row.clickable {
181
+ cursor: pointer;
182
+ }
174
183
  </style>
@@ -1,6 +1,7 @@
1
1
  import {
2
2
  mdiAlarmLightOutline,
3
3
  mdiArrowLeft,
4
+ mdiAlert,
4
5
  mdiCalendar,
5
6
  mdiCheck,
6
7
  mdiCheckBold,
@@ -33,6 +34,7 @@ export default new Vuetify({
33
34
  chevronRightIcon: mdiChevronRight,
34
35
  thumbsUpIcon: mdiThumbUpOutline,
35
36
  alarmIcon: mdiAlarmLightOutline,
37
+ alertIcon: mdiAlert,
36
38
  closeIcon: mdiClose,
37
39
  closeBoldIcon: mdiCloseThick,
38
40
  dotsVerticalIcon: mdiDotsVertical,