@phoenix-cg/v-filters 0.2.12 → 0.2.14

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@phoenix-cg/v-filters",
3
- "version": "0.2.12",
3
+ "version": "0.2.14",
4
4
  "private": false,
5
5
  "scripts": {
6
6
  "serve": "vue-cli-service serve",
@@ -153,13 +153,18 @@ export default {
153
153
  },
154
154
  noDefaultValueForEmptyFields: {
155
155
  type: Boolean
156
+ },
157
+ fieldDeps: {
158
+ type: Array,
159
+ default: () => []
156
160
  }
157
161
  },
158
162
  data () {
159
163
  return {
160
164
  filters: {},
161
165
  editedFields: [],
162
- inited: false
166
+ inited: false,
167
+ initializedEmitted: false
163
168
  }
164
169
  },
165
170
  computed: {
@@ -178,6 +183,18 @@ export default {
178
183
  }
179
184
  return title
180
185
  },
186
+ fieldDepsMap () {
187
+ const deps = this.fieldDeps
188
+ if (deps.length) {
189
+ return deps.reduce((acc, item) => {
190
+ Object.entries(item).forEach(([child, parentVal]) => {
191
+ acc[child] = Object.values(parentVal)[0]
192
+ })
193
+ return acc
194
+ }, {})
195
+ }
196
+ return deps
197
+ },
181
198
  flatFilters () {
182
199
  const filters = { ...this.filterParamsToInclude }
183
200
  const fieldsToInclude = [...this.editedFields, ...this.alwaysSendFields]
@@ -276,8 +293,24 @@ export default {
276
293
  this.$set(this.filters, field._name, value)
277
294
  })
278
295
  this.inited = true
279
- !isUpdate && this.setUrlParams()
280
- !isUpdate && this.doAction(true)
296
+ if (!isUpdate && this.initializedEmitted ) {
297
+ this.setUrlParams()
298
+ this.doAction(true)
299
+ }
300
+ if (!this.initializedEmitted ) {
301
+ this.setUrlParams(false, this.getInitialFlatFilters())
302
+ this.$emit('fields-initialized', this.getInitialFlatFilters())
303
+ this.initializedEmitted = true
304
+ }
305
+ },
306
+ getInitialFlatFilters () {
307
+ const filters = { ...this.filterParamsToInclude }
308
+ this.fields.forEach(field => {
309
+ const value = this.filters[field._name]
310
+ if (!value || !value._id) { return }
311
+ filters[field._name] = [value._id]
312
+ })
313
+ return filters
281
314
  },
282
315
  async resetFilters () {
283
316
  this.editedFields = []
@@ -294,11 +327,10 @@ export default {
294
327
  this.editedFields = this.editedFields.filter(fieldName => fieldName !== name)
295
328
  },
296
329
  removeDependentFieldsFromEdited (name) {
297
- const field = this.fields.find(field => field._name === name)
298
- if (field.reset) {
299
- const dependentFields = this.fields.filter(field => !field.reset).map(field => field._name)
300
- this.editedFields = this.editedFields.filter(fieldName => !dependentFields.includes(fieldName))
301
- }
330
+ const map = this.fieldDepsMap
331
+ if (!map) return
332
+ const toRemove = Object.keys(map).filter(child => map[child] === name)
333
+ this.editedFields = this.editedFields.filter(field => !toRemove.includes(field))
302
334
  },
303
335
  doAction (showResult = false) {
304
336
  if (showResult) {