@phoenix-cg/v-filters 0.1.12 → 0.2.0-beta.1

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.1.12",
3
+ "version": "0.2.0-beta.1",
4
4
  "private": false,
5
5
  "scripts": {
6
6
  "serve": "vue-cli-service serve",
@@ -126,9 +126,7 @@ export default {
126
126
  },
127
127
  data () {
128
128
  return {
129
- inited: false,
130
129
  filters: {},
131
- editedInside: false,
132
130
  editedFields: []
133
131
  }
134
132
  },
@@ -136,6 +134,9 @@ export default {
136
134
  edited () {
137
135
  return this.editedInside || this.editedOutside
138
136
  },
137
+ editedInside () {
138
+ return this.editedFields.length > 0
139
+ },
139
140
  actionTitle () {
140
141
  let title = this.notFoundTitle
141
142
  if (this.count > 0) {
@@ -155,20 +156,27 @@ export default {
155
156
  return filters
156
157
  }
157
158
  },
159
+ watch: {
160
+ fields: {
161
+ deep: true,
162
+ handler () {
163
+ this.setFilters(true)
164
+ }
165
+ }
166
+ },
158
167
  created () {
159
168
  this.setFilters()
160
169
  },
161
170
  methods: {
162
- setFilters (isReset, query) {
163
- let params = query || this.getUrlParams()
164
- let editedInside = false
165
-
171
+ setFilters (isUpdate) {
172
+ let params = this.getUrlParams()
166
173
  this.fields.forEach(field => {
167
174
  let value = field._type === 'range' ? field.value : []
168
- if (field._type === 'select') {
175
+ const valueNotArray = ['select', 'tab'].includes(field._type)
176
+ if (valueNotArray) {
169
177
  [value] = field.value
170
178
  }
171
- if (params[field._name] && !isReset) {
179
+ if (params[field._name] && !isUpdate) {
172
180
  let paramsValue = params[field._name]
173
181
  if (field._type !== 'range') {
174
182
  value = field.data.reduce((acc, item) => {
@@ -182,9 +190,9 @@ export default {
182
190
  value = paramsValue
183
191
  }
184
192
  this.addEditedField(field._name)
185
- } else if ((!params[field._name] || isReset) && field._type === 'select') {
193
+ } else if ((!params[field._name] || isUpdate) && valueNotArray) {
186
194
  [value] = field.value
187
- } else if (!params[field._name] || isReset) {
195
+ } else if (!params[field._name] || isUpdate) {
188
196
  value = field.value
189
197
  }
190
198
  // Detect changed fields
@@ -192,26 +200,25 @@ export default {
192
200
  switch (field._type) {
193
201
  case 'range':
194
202
  fieldIsEdited = field.data.map((dataValue, index) => field.value[index] === dataValue)
195
- .some(checkedValue => !checkedValue)
203
+ .some(checkedValue => !checkedValue)
196
204
  break
197
205
  case 'select':
206
+ case 'tab':
207
+ fieldIsEdited = field.value.length > 0 && field.value[0]._id !== field.data[0]._id
208
+ break
198
209
  case 'checkbox':
199
210
  fieldIsEdited = field.value.length > 0
200
- break
211
+ break
201
212
  }
202
213
  fieldIsEdited && this.addEditedField(field._name)
203
214
  this.$set(this.filters, field._name, value)
204
215
  })
205
- this.setUrlParams(isReset)
206
- this.editedInside = editedInside
207
- this.doAction()
216
+ this.setUrlParams(isUpdate)
217
+ !isUpdate && this.doAction()
208
218
  },
209
- resetFilters (isOutside) {
210
- this.$emit('reset-filters', isOutside)
211
- this.setFilters(true)
219
+ resetFilters () {
212
220
  this.editedFields = []
213
- this.editedInside = false
214
- this.doAction()
221
+ this.$emit('reset-filters')
215
222
  },
216
223
  addEditedField (name) {
217
224
  if (!this.editedFields.includes(name)) {
@@ -219,29 +226,7 @@ export default {
219
226
  }
220
227
  },
221
228
  doAction () {
222
- if (this.immediate) {
223
- this.showResult()
224
- } else {
225
- this.requestCount()
226
- if (!this.inited && !this.hideResult) {
227
- this.showResult()
228
- }
229
- this.inited = true
230
- }
231
- },
232
- isFieldsEqual (arr1, arr2) {
233
- let equal = true
234
- arr1.forEach(item => {
235
- let arr2Item = arr2.find(arr2Item => {
236
- let val = item._id || item
237
- let val2 = arr2Item._id || arr2Item
238
- return val === val2
239
- })
240
- if (!arr2Item) {
241
- equal = false
242
- }
243
- })
244
- return equal
229
+ this.immediate ? this.showResult() : this.requestCount()
245
230
  },
246
231
  requestCount () {
247
232
  this.$emit('request-count', this.flatFilters)
@@ -279,7 +264,6 @@ export default {
279
264
  },
280
265
  handleFieldChange (name) {
281
266
  this.addEditedField(name)
282
- this.editedInside = true
283
267
  this.setUrlParams()
284
268
  this.doAction()
285
269
  }