@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/dist/v-filters.common.js +29 -79
- package/dist/v-filters.common.js.map +1 -1
- package/dist/v-filters.umd.js +29 -79
- package/dist/v-filters.umd.js.map +1 -1
- package/dist/v-filters.umd.min.js +1 -1
- package/dist/v-filters.umd.min.js.map +1 -1
- package/package.json +1 -1
- package/src/components/VFilters.vue +28 -44
package/package.json
CHANGED
|
@@ -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 (
|
|
163
|
-
let params =
|
|
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
|
-
|
|
175
|
+
const valueNotArray = ['select', 'tab'].includes(field._type)
|
|
176
|
+
if (valueNotArray) {
|
|
169
177
|
[value] = field.value
|
|
170
178
|
}
|
|
171
|
-
if (params[field._name] && !
|
|
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] ||
|
|
193
|
+
} else if ((!params[field._name] || isUpdate) && valueNotArray) {
|
|
186
194
|
[value] = field.value
|
|
187
|
-
} else if (!params[field._name] ||
|
|
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
|
-
|
|
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(
|
|
206
|
-
this.
|
|
207
|
-
this.doAction()
|
|
216
|
+
this.setUrlParams(isUpdate)
|
|
217
|
+
!isUpdate && this.doAction()
|
|
208
218
|
},
|
|
209
|
-
resetFilters (
|
|
210
|
-
this.$emit('reset-filters', isOutside)
|
|
211
|
-
this.setFilters(true)
|
|
219
|
+
resetFilters () {
|
|
212
220
|
this.editedFields = []
|
|
213
|
-
this
|
|
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
|
-
|
|
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
|
}
|