@afeefa/vue-app 0.0.283 → 0.0.285

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.283
1
+ 0.0.285
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@afeefa/vue-app",
3
- "version": "0.0.283",
3
+ "version": "0.0.285",
4
4
  "description": "",
5
5
  "author": "Afeefa Kollektiv <kollektiv@afeefa.de>",
6
6
  "license": "MIT",
@@ -82,11 +82,12 @@
82
82
  <script>
83
83
  import { Component, Mixins, Watch } from '@a-vue'
84
84
  import { ListFilterMixin } from '../ListFilterMixin'
85
- import { ListAction, GetAction } from '@a-vue/api-resources/ApiActions'
85
+ import { ListAction } from '@a-vue/api-resources/ApiActions'
86
+ import { ApiAction } from '@a-vue/api-resources/ApiAction'
86
87
  import { Category } from '@/models'
87
88
 
88
89
  @Component({
89
- props: ['itemTitle', 'itemValue', 'optionRequestFilters', {
90
+ props: ['itemTitle', 'itemValue', 'optionRequestFilters', 'selectedItemRequestParams', {
90
91
  selectedKey: 'id',
91
92
  getTitle: {type: Function, default: m => m.getTitle()},
92
93
  getSubtitle: {type: Function, default: m => m.getSubtitle()},
@@ -111,11 +112,13 @@ export default class ListFilterSearchSelect extends Mixins(ListFilterMixin) {
111
112
  }
112
113
 
113
114
  if (this.filter.value) {
114
- const model = await this.createGetAction()
115
- .params({
116
- [this.selectedKey]: this.filter.value
117
- })
118
- .load()
115
+ const request = this.createLoadSelectedItemRequest()
116
+ const apiAction = ApiAction.fromRequest(request)
117
+
118
+ const result = await apiAction.execute()
119
+
120
+ // list or single
121
+ const model = result.models ? result.models[0] : result
119
122
 
120
123
  if (model) {
121
124
  if (this.filter.value) {
@@ -124,7 +127,16 @@ export default class ListFilterSearchSelect extends Mixins(ListFilterMixin) {
124
127
  this.inputModel = selectedModel.getTitle()
125
128
  }
126
129
  }
130
+ } else {
131
+ // wrong id tried to load
132
+ if (request.getParams()?.id) {
133
+ this.inputModel = 'ID ' + this.filter.value
134
+ } else { // wrong filter or other param loaded
135
+ this.inputModel = this.filter.value
136
+ }
127
137
  }
138
+ } else {
139
+ this.inputModel = 'Alle'
128
140
  }
129
141
  }
130
142
 
@@ -139,9 +151,13 @@ export default class ListFilterSearchSelect extends Mixins(ListFilterMixin) {
139
151
  }
140
152
 
141
153
  get listAction () {
142
- return this.createListAction()
154
+ const request = this.filter
155
+ .createOptionsRequest()
156
+ .addFilters(this.optionRequestFilters || {})
157
+ return ListAction.fromRequest(request)
143
158
  }
144
159
 
160
+
145
161
  get specialItems () {
146
162
  // make array-typed options to proper models in order to show them
147
163
  // alongside the other list items
@@ -153,25 +169,24 @@ export default class ListFilterSearchSelect extends Mixins(ListFilterMixin) {
153
169
  })
154
170
  }
155
171
 
156
- createListAction () {
157
- const request = this.filter
158
- .createOptionsRequest()
159
- .addFilters(this.optionRequestFilters || {})
160
- return ListAction.fromRequest(request)
161
- }
162
-
163
- createGetAction () {
164
- const request = this.filter
165
- .createOptionsRequest('get')
172
+ createLoadSelectedItemRequest () {
173
+ const request = this.filter.createOptionsRequest()
166
174
 
167
175
  const getAction = this.$apiResources.getAction({
168
176
  resourceType: request.getAction().getResource().getType(),
169
- actionName: 'get'
177
+ actionName: this.selectedItemRequestParams?.actionName || 'get'
170
178
  })
171
179
 
172
180
  request.action(getAction)
173
181
 
174
- return GetAction.fromRequest(request)
182
+ if (this.selectedItemRequestParams) {
183
+ request.params(this.selectedItemRequestParams.params)
184
+ request.filters(this.selectedItemRequestParams.filters)
185
+ } else {
186
+ request.params({[this.selectedKey]: this.filter.value})
187
+ }
188
+
189
+ return request
175
190
  }
176
191
 
177
192
  itemSelected (model) {
@@ -2,6 +2,7 @@
2
2
  <v-list-item
3
3
  :to="item.to"
4
4
  :exactPath="item.exact"
5
+ :target="item.target || _self"
5
6
  >
6
7
  <v-list-item-icon
7
8
  v-if="item.iconModel"