@phoenix-cg/v-filters 0.1.16 → 0.2.0-beta.10

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.
@@ -539,39 +539,6 @@ $({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') },
539
539
  });
540
540
 
541
541
 
542
- /***/ }),
543
-
544
- /***/ "25f0":
545
- /***/ (function(module, exports, __webpack_require__) {
546
-
547
- "use strict";
548
-
549
- var redefine = __webpack_require__("6eeb");
550
- var anObject = __webpack_require__("825a");
551
- var fails = __webpack_require__("d039");
552
- var flags = __webpack_require__("ad6d");
553
-
554
- var TO_STRING = 'toString';
555
- var RegExpPrototype = RegExp.prototype;
556
- var nativeToString = RegExpPrototype[TO_STRING];
557
-
558
- var NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });
559
- // FF44- RegExp#toString has a wrong name
560
- var INCORRECT_NAME = nativeToString.name != TO_STRING;
561
-
562
- // `RegExp.prototype.toString` method
563
- // https://tc39.es/ecma262/#sec-regexp.prototype.tostring
564
- if (NOT_GENERIC || INCORRECT_NAME) {
565
- redefine(RegExp.prototype, TO_STRING, function toString() {
566
- var R = anObject(this);
567
- var p = String(R.source);
568
- var rf = R.flags;
569
- var f = String(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype) ? flags.call(R) : rf);
570
- return '/' + p + '/' + f;
571
- }, { unsafe: true });
572
- }
573
-
574
-
575
542
  /***/ }),
576
543
 
577
544
  /***/ "2a62":
@@ -1908,6 +1875,35 @@ module.exports = Object.create || function create(O, Properties) {
1908
1875
  };
1909
1876
 
1910
1877
 
1878
+ /***/ }),
1879
+
1880
+ /***/ "7db0":
1881
+ /***/ (function(module, exports, __webpack_require__) {
1882
+
1883
+ "use strict";
1884
+
1885
+ var $ = __webpack_require__("23e7");
1886
+ var $find = __webpack_require__("b727").find;
1887
+ var addToUnscopables = __webpack_require__("44d2");
1888
+
1889
+ var FIND = 'find';
1890
+ var SKIPS_HOLES = true;
1891
+
1892
+ // Shouldn't skip holes
1893
+ if (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });
1894
+
1895
+ // `Array.prototype.find` method
1896
+ // https://tc39.es/ecma262/#sec-array.prototype.find
1897
+ $({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {
1898
+ find: function find(callbackfn /* , that = undefined */) {
1899
+ return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
1900
+ }
1901
+ });
1902
+
1903
+ // https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
1904
+ addToUnscopables(FIND);
1905
+
1906
+
1911
1907
  /***/ }),
1912
1908
 
1913
1909
  /***/ "7dd0":
@@ -4378,7 +4374,7 @@ if (typeof window !== 'undefined') {
4378
4374
  // Indicate to webpack that this file can be concatenated
4379
4375
  /* harmony default export */ var setPublicPath = (null);
4380
4376
 
4381
- // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"1743846e-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/VFilters.vue?vue&type=template&id=134a7b01&
4377
+ // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"690fa3be-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/VFilters.vue?vue&type=template&id=09b8e269&
4382
4378
  var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"v-filters"},[_c('div',{staticClass:"v-filters_fields"},[_vm._t("before-fields"),_vm._l((_vm.fields),function(field){return _c(_vm.fieldComponentName,{key:field._name,tag:"component",attrs:{"title":field.title}},[_c(_vm.componentsMap[field._type],_vm._b({key:_vm.fieldKey,tag:"component",on:{"input":function($event){return _vm.handleFieldChange(field._name)}},model:{value:(_vm.filters[field._name]),callback:function ($$v) {_vm.$set(_vm.filters, field._name, $$v)},expression:"filters[field._name]"}},'component',field._fieldProps || {},false))],1)}),_vm._t("after-fields"),_vm._t("actions",[_c(_vm.fieldComponentName,{tag:"component"},[(!_vm.immediate)?_c('button',{staticClass:"v-button v-filters_button",on:{"click":_vm.showResult}},[_vm._v(" "+_vm._s(_vm.actionTitle)+" ")]):_vm._e(),(_vm.edited)?_c('button',{staticClass:"v-button v-filters_button __reset",on:{"click":_vm.resetFilters}},[_vm._v(" Сбросить параметры ")]):_vm._e()])],null,{
4383
4379
  showResult: _vm.showResult,
4384
4380
  resetFilters: _vm.resetFilters,
@@ -4395,7 +4391,7 @@ var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._sel
4395
4391
  var staticRenderFns = []
4396
4392
 
4397
4393
 
4398
- // CONCATENATED MODULE: ./src/components/VFilters.vue?vue&type=template&id=134a7b01&
4394
+ // CONCATENATED MODULE: ./src/components/VFilters.vue?vue&type=template&id=09b8e269&
4399
4395
 
4400
4396
  // EXTERNAL MODULE: ./node_modules/core-js/modules/es.object.keys.js
4401
4397
  var es_object_keys = __webpack_require__("b64b");
@@ -4574,6 +4570,35 @@ function _nonIterableRest() {
4574
4570
  function _slicedToArray(arr, i) {
4575
4571
  return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
4576
4572
  }
4573
+ // CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js
4574
+
4575
+ function _arrayWithoutHoles(arr) {
4576
+ if (Array.isArray(arr)) return _arrayLikeToArray(arr);
4577
+ }
4578
+ // CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/iterableToArray.js
4579
+
4580
+
4581
+
4582
+
4583
+
4584
+
4585
+
4586
+
4587
+ function _iterableToArray(iter) {
4588
+ if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter);
4589
+ }
4590
+ // CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js
4591
+ function _nonIterableSpread() {
4592
+ throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
4593
+ }
4594
+ // CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js
4595
+
4596
+
4597
+
4598
+
4599
+ function _toConsumableArray(arr) {
4600
+ return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
4601
+ }
4577
4602
  // EXTERNAL MODULE: ./node_modules/core-js/modules/es.number.constructor.js
4578
4603
  var es_number_constructor = __webpack_require__("a9e3");
4579
4604
 
@@ -4589,12 +4614,12 @@ var es_string_includes = __webpack_require__("2532");
4589
4614
  // EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.map.js
4590
4615
  var es_array_map = __webpack_require__("d81d");
4591
4616
 
4592
- // EXTERNAL MODULE: ./node_modules/core-js/modules/es.regexp.to-string.js
4593
- var es_regexp_to_string = __webpack_require__("25f0");
4594
-
4595
4617
  // EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.reduce.js
4596
4618
  var es_array_reduce = __webpack_require__("13d5");
4597
4619
 
4620
+ // EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.find.js
4621
+ var es_array_find = __webpack_require__("7db0");
4622
+
4598
4623
  // EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.search.js
4599
4624
  var es_string_search = __webpack_require__("841c");
4600
4625
 
@@ -5099,6 +5124,7 @@ _curry2(function equals(a, b) {
5099
5124
 
5100
5125
 
5101
5126
 
5127
+
5102
5128
  //
5103
5129
  //
5104
5130
  //
@@ -5220,7 +5246,7 @@ var VFiltersvue_type_script_lang_js_unserialize = function unserialize(input) {
5220
5246
  default: false
5221
5247
  },
5222
5248
  humanLink: {
5223
- type: String
5249
+ type: Object
5224
5250
  },
5225
5251
  editedOutside: {
5226
5252
  type: Boolean,
@@ -5233,12 +5259,23 @@ var VFiltersvue_type_script_lang_js_unserialize = function unserialize(input) {
5233
5259
  fieldKey: {
5234
5260
  type: [String, Number],
5235
5261
  default: '1'
5262
+ },
5263
+ alwaysSendFields: {
5264
+ type: Array,
5265
+ default: function _default() {
5266
+ return [];
5267
+ }
5268
+ },
5269
+ paramsToInclude: {
5270
+ type: Object,
5271
+ default: function _default() {
5272
+ return {};
5273
+ }
5236
5274
  }
5237
5275
  },
5238
5276
  data: function data() {
5239
5277
  return {
5240
5278
  filters: {},
5241
- editedInside: false,
5242
5279
  editedFields: []
5243
5280
  };
5244
5281
  },
@@ -5246,6 +5283,9 @@ var VFiltersvue_type_script_lang_js_unserialize = function unserialize(input) {
5246
5283
  edited: function edited() {
5247
5284
  return this.editedInside || this.editedOutside;
5248
5285
  },
5286
+ editedInside: function editedInside() {
5287
+ return this.editedFields.length > 0;
5288
+ },
5249
5289
  actionTitle: function actionTitle() {
5250
5290
  var title = this.notFoundTitle;
5251
5291
 
@@ -5261,27 +5301,38 @@ var VFiltersvue_type_script_lang_js_unserialize = function unserialize(input) {
5261
5301
  var _this = this;
5262
5302
 
5263
5303
  var filters = {};
5304
+ var fieldsToInclude = [].concat(_toConsumableArray(this.editedFields), _toConsumableArray(this.alwaysSendFields));
5264
5305
  Object.keys(this.filters).forEach(function (name) {
5265
- if (_this.editedFields.includes(name)) {
5306
+ if (fieldsToInclude.includes(name)) {
5266
5307
  var filtersValue = _this.filters[name];
5267
5308
  var wrappedValue = getType(filtersValue) === 'Object' ? [filtersValue] : filtersValue;
5268
5309
  filters[name] = wrappedValue.map(function (value) {
5269
- return value._id && value._id.toString() || value;
5310
+ return value._id || value;
5270
5311
  });
5271
5312
  }
5272
5313
  });
5273
5314
  return filters;
5274
5315
  }
5275
5316
  },
5317
+ watch: {
5318
+ fields: {
5319
+ deep: true,
5320
+ handler: function handler() {
5321
+ this.setFilters(true);
5322
+ }
5323
+ },
5324
+ paramsToInclude: function paramsToInclude() {
5325
+ this.setUrlParams();
5326
+ }
5327
+ },
5276
5328
  created: function created() {
5277
5329
  this.setFilters();
5278
5330
  },
5279
5331
  methods: {
5280
- setFilters: function setFilters(isReset, query) {
5332
+ setFilters: function setFilters(isUpdate) {
5281
5333
  var _this2 = this;
5282
5334
 
5283
- var params = query || this.getUrlParams();
5284
- var editedInside = false;
5335
+ var params = this.getUrlParams();
5285
5336
  this.fields.forEach(function (field) {
5286
5337
  var value = field._type === 'range' ? field.value : [];
5287
5338
  var valueNotArray = ['select', 'tab'].includes(field._type);
@@ -5292,7 +5343,7 @@ var VFiltersvue_type_script_lang_js_unserialize = function unserialize(input) {
5292
5343
  value = _field$value[0];
5293
5344
  }
5294
5345
 
5295
- if (params[field._name] && !isReset) {
5346
+ if (params[field._name] && !isUpdate) {
5296
5347
  var paramsValue = params[field._name];
5297
5348
 
5298
5349
  if (field._type !== 'range') {
@@ -5310,11 +5361,33 @@ var VFiltersvue_type_script_lang_js_unserialize = function unserialize(input) {
5310
5361
  }
5311
5362
 
5312
5363
  _this2.addEditedField(field._name);
5313
- } else if ((!params[field._name] || isReset) && valueNotArray) {
5364
+ } else if (params[field._name] && isUpdate && field._type !== 'range') {
5365
+ if (valueNotArray) {
5366
+ var isValueInData = field.data.some(function (dataValue) {
5367
+ return dataValue._id === value._id || dataValue._id === value;
5368
+ });
5369
+
5370
+ if (!isValueInData) {
5371
+ value = field.data[0];
5372
+ }
5373
+ } else {
5374
+ value = field.value.reduce(function (acc, currentValue) {
5375
+ var isValueInData = field.data.some(function (dataValue) {
5376
+ return dataValue._id === currentValue._id || dataValue._id === currentValue;
5377
+ });
5378
+
5379
+ if (isValueInData) {
5380
+ acc.push(currentValue);
5381
+ }
5382
+
5383
+ return acc;
5384
+ }, []);
5385
+ }
5386
+ } else if ((!params[field._name] || isUpdate) && valueNotArray) {
5314
5387
  var _field$value2 = _slicedToArray(field.value, 1);
5315
5388
 
5316
5389
  value = _field$value2[0];
5317
- } else if (!params[field._name] || isReset) {
5390
+ } else if (!params[field._name] || isUpdate) {
5318
5391
  value = field.value;
5319
5392
  } // Detect changed fields
5320
5393
 
@@ -5344,24 +5417,44 @@ var VFiltersvue_type_script_lang_js_unserialize = function unserialize(input) {
5344
5417
 
5345
5418
  _this2.$set(_this2.filters, field._name, value);
5346
5419
  });
5347
- this.setUrlParams(isReset);
5348
- this.editedInside = editedInside;
5349
- this.doAction();
5420
+ this.setUrlParams(isUpdate);
5421
+ !isUpdate && this.doAction(true);
5350
5422
  },
5351
- resetFilters: function resetFilters(isOutside) {
5352
- this.$emit('reset-filters', isOutside);
5353
- this.setFilters(true);
5423
+ resetFilters: function resetFilters() {
5354
5424
  this.editedFields = [];
5355
- this.editedInside = false;
5356
- this.doAction();
5425
+ this.setUrlParams(true, {});
5426
+ this.$emit('reset-filters', this.flatFilters);
5357
5427
  },
5358
5428
  addEditedField: function addEditedField(name) {
5359
5429
  if (!this.editedFields.includes(name)) {
5360
5430
  this.editedFields.push(name);
5361
5431
  }
5362
5432
  },
5433
+ removeDependentFieldsFromEdited: function removeDependentFieldsFromEdited(name) {
5434
+ var field = this.fields.find(function (field) {
5435
+ return field._name === name;
5436
+ });
5437
+
5438
+ if (field.reset) {
5439
+ var dependentFields = this.fields.filter(function (field) {
5440
+ return !field.reset;
5441
+ }).map(function (field) {
5442
+ return field._name;
5443
+ });
5444
+ this.editedFields = this.editedFields.filter(function (fieldName) {
5445
+ return !dependentFields.includes(fieldName);
5446
+ });
5447
+ }
5448
+ },
5363
5449
  doAction: function doAction() {
5364
- this.immediate ? this.showResult() : this.requestCount();
5450
+ var both = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
5451
+
5452
+ if (both) {
5453
+ this.requestCount();
5454
+ this.showResult();
5455
+ } else {
5456
+ this.immediate ? this.showResult() : this.requestCount();
5457
+ }
5365
5458
  },
5366
5459
  requestCount: function requestCount() {
5367
5460
  this.$emit('request-count', this.flatFilters);
@@ -5372,31 +5465,14 @@ var VFiltersvue_type_script_lang_js_unserialize = function unserialize(input) {
5372
5465
  getUrlParams: function getUrlParams() {
5373
5466
  return VFiltersvue_type_script_lang_js_unserialize(window.location.search);
5374
5467
  },
5375
- setUrlParams: function setUrlParams(reset) {
5468
+ setUrlParams: function setUrlParams(isUpdate, rewriteParams) {
5376
5469
  if (this.showParams) {
5377
- var params = this.getUrlParams();
5378
-
5379
- for (var name in this.filters) {
5380
- var filterValue = this.filters[name];
5381
-
5382
- if (this.editedFields.includes(name)) {
5383
- if (Array.isArray(filterValue) && filterValue.length > 0) {
5384
- params[name] = filterValue.map(function (val) {
5385
- return val._id || val;
5386
- });
5387
- } else if (filterValue instanceof Object) {
5388
- filterValue = _objectSpread2({}, filterValue);
5389
- params[name] = [filterValue._id];
5390
- }
5391
- } else {
5392
- delete params[name];
5393
- }
5394
- }
5470
+ var params = rewriteParams || _objectSpread2(_objectSpread2({}, this.flatFilters), this.paramsToInclude);
5395
5471
 
5396
5472
  var currentParams = this.getUrlParams();
5397
5473
  var newParamsLength = Object.keys(params).length;
5398
5474
 
5399
- if ((newParamsLength && !es_equals(params, currentParams) || reset) && !this.humanLink) {
5475
+ if ((newParamsLength && !es_equals(params, currentParams) || isUpdate || rewriteParams) && !this.humanLink) {
5400
5476
  var query = VFiltersvue_type_script_lang_js_serialize(params);
5401
5477
  var url = window.location.origin + window.location.pathname + "".concat(newParamsLength ? '?' : '').concat(query);
5402
5478
  history.replaceState({
@@ -5407,7 +5483,7 @@ var VFiltersvue_type_script_lang_js_unserialize = function unserialize(input) {
5407
5483
  },
5408
5484
  handleFieldChange: function handleFieldChange(name) {
5409
5485
  this.addEditedField(name);
5410
- this.editedInside = true;
5486
+ this.removeDependentFieldsFromEdited(name);
5411
5487
  this.setUrlParams();
5412
5488
  this.doAction();
5413
5489
  }