@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.
@@ -548,39 +548,6 @@ $({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') },
548
548
  });
549
549
 
550
550
 
551
- /***/ }),
552
-
553
- /***/ "25f0":
554
- /***/ (function(module, exports, __webpack_require__) {
555
-
556
- "use strict";
557
-
558
- var redefine = __webpack_require__("6eeb");
559
- var anObject = __webpack_require__("825a");
560
- var fails = __webpack_require__("d039");
561
- var flags = __webpack_require__("ad6d");
562
-
563
- var TO_STRING = 'toString';
564
- var RegExpPrototype = RegExp.prototype;
565
- var nativeToString = RegExpPrototype[TO_STRING];
566
-
567
- var NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });
568
- // FF44- RegExp#toString has a wrong name
569
- var INCORRECT_NAME = nativeToString.name != TO_STRING;
570
-
571
- // `RegExp.prototype.toString` method
572
- // https://tc39.es/ecma262/#sec-regexp.prototype.tostring
573
- if (NOT_GENERIC || INCORRECT_NAME) {
574
- redefine(RegExp.prototype, TO_STRING, function toString() {
575
- var R = anObject(this);
576
- var p = String(R.source);
577
- var rf = R.flags;
578
- var f = String(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype) ? flags.call(R) : rf);
579
- return '/' + p + '/' + f;
580
- }, { unsafe: true });
581
- }
582
-
583
-
584
551
  /***/ }),
585
552
 
586
553
  /***/ "2a62":
@@ -1917,6 +1884,35 @@ module.exports = Object.create || function create(O, Properties) {
1917
1884
  };
1918
1885
 
1919
1886
 
1887
+ /***/ }),
1888
+
1889
+ /***/ "7db0":
1890
+ /***/ (function(module, exports, __webpack_require__) {
1891
+
1892
+ "use strict";
1893
+
1894
+ var $ = __webpack_require__("23e7");
1895
+ var $find = __webpack_require__("b727").find;
1896
+ var addToUnscopables = __webpack_require__("44d2");
1897
+
1898
+ var FIND = 'find';
1899
+ var SKIPS_HOLES = true;
1900
+
1901
+ // Shouldn't skip holes
1902
+ if (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });
1903
+
1904
+ // `Array.prototype.find` method
1905
+ // https://tc39.es/ecma262/#sec-array.prototype.find
1906
+ $({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {
1907
+ find: function find(callbackfn /* , that = undefined */) {
1908
+ return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
1909
+ }
1910
+ });
1911
+
1912
+ // https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
1913
+ addToUnscopables(FIND);
1914
+
1915
+
1920
1916
  /***/ }),
1921
1917
 
1922
1918
  /***/ "7dd0":
@@ -4387,7 +4383,7 @@ if (typeof window !== 'undefined') {
4387
4383
  // Indicate to webpack that this file can be concatenated
4388
4384
  /* harmony default export */ var setPublicPath = (null);
4389
4385
 
4390
- // 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&
4386
+ // 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&
4391
4387
  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,{
4392
4388
  showResult: _vm.showResult,
4393
4389
  resetFilters: _vm.resetFilters,
@@ -4404,7 +4400,7 @@ var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._sel
4404
4400
  var staticRenderFns = []
4405
4401
 
4406
4402
 
4407
- // CONCATENATED MODULE: ./src/components/VFilters.vue?vue&type=template&id=134a7b01&
4403
+ // CONCATENATED MODULE: ./src/components/VFilters.vue?vue&type=template&id=09b8e269&
4408
4404
 
4409
4405
  // EXTERNAL MODULE: ./node_modules/core-js/modules/es.object.keys.js
4410
4406
  var es_object_keys = __webpack_require__("b64b");
@@ -4583,6 +4579,35 @@ function _nonIterableRest() {
4583
4579
  function _slicedToArray(arr, i) {
4584
4580
  return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
4585
4581
  }
4582
+ // CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js
4583
+
4584
+ function _arrayWithoutHoles(arr) {
4585
+ if (Array.isArray(arr)) return _arrayLikeToArray(arr);
4586
+ }
4587
+ // CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/iterableToArray.js
4588
+
4589
+
4590
+
4591
+
4592
+
4593
+
4594
+
4595
+
4596
+ function _iterableToArray(iter) {
4597
+ if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter);
4598
+ }
4599
+ // CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js
4600
+ function _nonIterableSpread() {
4601
+ throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
4602
+ }
4603
+ // CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js
4604
+
4605
+
4606
+
4607
+
4608
+ function _toConsumableArray(arr) {
4609
+ return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
4610
+ }
4586
4611
  // EXTERNAL MODULE: ./node_modules/core-js/modules/es.number.constructor.js
4587
4612
  var es_number_constructor = __webpack_require__("a9e3");
4588
4613
 
@@ -4598,12 +4623,12 @@ var es_string_includes = __webpack_require__("2532");
4598
4623
  // EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.map.js
4599
4624
  var es_array_map = __webpack_require__("d81d");
4600
4625
 
4601
- // EXTERNAL MODULE: ./node_modules/core-js/modules/es.regexp.to-string.js
4602
- var es_regexp_to_string = __webpack_require__("25f0");
4603
-
4604
4626
  // EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.reduce.js
4605
4627
  var es_array_reduce = __webpack_require__("13d5");
4606
4628
 
4629
+ // EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.find.js
4630
+ var es_array_find = __webpack_require__("7db0");
4631
+
4607
4632
  // EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.search.js
4608
4633
  var es_string_search = __webpack_require__("841c");
4609
4634
 
@@ -5108,6 +5133,7 @@ _curry2(function equals(a, b) {
5108
5133
 
5109
5134
 
5110
5135
 
5136
+
5111
5137
  //
5112
5138
  //
5113
5139
  //
@@ -5229,7 +5255,7 @@ var VFiltersvue_type_script_lang_js_unserialize = function unserialize(input) {
5229
5255
  default: false
5230
5256
  },
5231
5257
  humanLink: {
5232
- type: String
5258
+ type: Object
5233
5259
  },
5234
5260
  editedOutside: {
5235
5261
  type: Boolean,
@@ -5242,12 +5268,23 @@ var VFiltersvue_type_script_lang_js_unserialize = function unserialize(input) {
5242
5268
  fieldKey: {
5243
5269
  type: [String, Number],
5244
5270
  default: '1'
5271
+ },
5272
+ alwaysSendFields: {
5273
+ type: Array,
5274
+ default: function _default() {
5275
+ return [];
5276
+ }
5277
+ },
5278
+ paramsToInclude: {
5279
+ type: Object,
5280
+ default: function _default() {
5281
+ return {};
5282
+ }
5245
5283
  }
5246
5284
  },
5247
5285
  data: function data() {
5248
5286
  return {
5249
5287
  filters: {},
5250
- editedInside: false,
5251
5288
  editedFields: []
5252
5289
  };
5253
5290
  },
@@ -5255,6 +5292,9 @@ var VFiltersvue_type_script_lang_js_unserialize = function unserialize(input) {
5255
5292
  edited: function edited() {
5256
5293
  return this.editedInside || this.editedOutside;
5257
5294
  },
5295
+ editedInside: function editedInside() {
5296
+ return this.editedFields.length > 0;
5297
+ },
5258
5298
  actionTitle: function actionTitle() {
5259
5299
  var title = this.notFoundTitle;
5260
5300
 
@@ -5270,27 +5310,38 @@ var VFiltersvue_type_script_lang_js_unserialize = function unserialize(input) {
5270
5310
  var _this = this;
5271
5311
 
5272
5312
  var filters = {};
5313
+ var fieldsToInclude = [].concat(_toConsumableArray(this.editedFields), _toConsumableArray(this.alwaysSendFields));
5273
5314
  Object.keys(this.filters).forEach(function (name) {
5274
- if (_this.editedFields.includes(name)) {
5315
+ if (fieldsToInclude.includes(name)) {
5275
5316
  var filtersValue = _this.filters[name];
5276
5317
  var wrappedValue = getType(filtersValue) === 'Object' ? [filtersValue] : filtersValue;
5277
5318
  filters[name] = wrappedValue.map(function (value) {
5278
- return value._id && value._id.toString() || value;
5319
+ return value._id || value;
5279
5320
  });
5280
5321
  }
5281
5322
  });
5282
5323
  return filters;
5283
5324
  }
5284
5325
  },
5326
+ watch: {
5327
+ fields: {
5328
+ deep: true,
5329
+ handler: function handler() {
5330
+ this.setFilters(true);
5331
+ }
5332
+ },
5333
+ paramsToInclude: function paramsToInclude() {
5334
+ this.setUrlParams();
5335
+ }
5336
+ },
5285
5337
  created: function created() {
5286
5338
  this.setFilters();
5287
5339
  },
5288
5340
  methods: {
5289
- setFilters: function setFilters(isReset, query) {
5341
+ setFilters: function setFilters(isUpdate) {
5290
5342
  var _this2 = this;
5291
5343
 
5292
- var params = query || this.getUrlParams();
5293
- var editedInside = false;
5344
+ var params = this.getUrlParams();
5294
5345
  this.fields.forEach(function (field) {
5295
5346
  var value = field._type === 'range' ? field.value : [];
5296
5347
  var valueNotArray = ['select', 'tab'].includes(field._type);
@@ -5301,7 +5352,7 @@ var VFiltersvue_type_script_lang_js_unserialize = function unserialize(input) {
5301
5352
  value = _field$value[0];
5302
5353
  }
5303
5354
 
5304
- if (params[field._name] && !isReset) {
5355
+ if (params[field._name] && !isUpdate) {
5305
5356
  var paramsValue = params[field._name];
5306
5357
 
5307
5358
  if (field._type !== 'range') {
@@ -5319,11 +5370,33 @@ var VFiltersvue_type_script_lang_js_unserialize = function unserialize(input) {
5319
5370
  }
5320
5371
 
5321
5372
  _this2.addEditedField(field._name);
5322
- } else if ((!params[field._name] || isReset) && valueNotArray) {
5373
+ } else if (params[field._name] && isUpdate && field._type !== 'range') {
5374
+ if (valueNotArray) {
5375
+ var isValueInData = field.data.some(function (dataValue) {
5376
+ return dataValue._id === value._id || dataValue._id === value;
5377
+ });
5378
+
5379
+ if (!isValueInData) {
5380
+ value = field.data[0];
5381
+ }
5382
+ } else {
5383
+ value = field.value.reduce(function (acc, currentValue) {
5384
+ var isValueInData = field.data.some(function (dataValue) {
5385
+ return dataValue._id === currentValue._id || dataValue._id === currentValue;
5386
+ });
5387
+
5388
+ if (isValueInData) {
5389
+ acc.push(currentValue);
5390
+ }
5391
+
5392
+ return acc;
5393
+ }, []);
5394
+ }
5395
+ } else if ((!params[field._name] || isUpdate) && valueNotArray) {
5323
5396
  var _field$value2 = _slicedToArray(field.value, 1);
5324
5397
 
5325
5398
  value = _field$value2[0];
5326
- } else if (!params[field._name] || isReset) {
5399
+ } else if (!params[field._name] || isUpdate) {
5327
5400
  value = field.value;
5328
5401
  } // Detect changed fields
5329
5402
 
@@ -5353,24 +5426,44 @@ var VFiltersvue_type_script_lang_js_unserialize = function unserialize(input) {
5353
5426
 
5354
5427
  _this2.$set(_this2.filters, field._name, value);
5355
5428
  });
5356
- this.setUrlParams(isReset);
5357
- this.editedInside = editedInside;
5358
- this.doAction();
5429
+ this.setUrlParams(isUpdate);
5430
+ !isUpdate && this.doAction(true);
5359
5431
  },
5360
- resetFilters: function resetFilters(isOutside) {
5361
- this.$emit('reset-filters', isOutside);
5362
- this.setFilters(true);
5432
+ resetFilters: function resetFilters() {
5363
5433
  this.editedFields = [];
5364
- this.editedInside = false;
5365
- this.doAction();
5434
+ this.setUrlParams(true, {});
5435
+ this.$emit('reset-filters', this.flatFilters);
5366
5436
  },
5367
5437
  addEditedField: function addEditedField(name) {
5368
5438
  if (!this.editedFields.includes(name)) {
5369
5439
  this.editedFields.push(name);
5370
5440
  }
5371
5441
  },
5442
+ removeDependentFieldsFromEdited: function removeDependentFieldsFromEdited(name) {
5443
+ var field = this.fields.find(function (field) {
5444
+ return field._name === name;
5445
+ });
5446
+
5447
+ if (field.reset) {
5448
+ var dependentFields = this.fields.filter(function (field) {
5449
+ return !field.reset;
5450
+ }).map(function (field) {
5451
+ return field._name;
5452
+ });
5453
+ this.editedFields = this.editedFields.filter(function (fieldName) {
5454
+ return !dependentFields.includes(fieldName);
5455
+ });
5456
+ }
5457
+ },
5372
5458
  doAction: function doAction() {
5373
- this.immediate ? this.showResult() : this.requestCount();
5459
+ var both = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
5460
+
5461
+ if (both) {
5462
+ this.requestCount();
5463
+ this.showResult();
5464
+ } else {
5465
+ this.immediate ? this.showResult() : this.requestCount();
5466
+ }
5374
5467
  },
5375
5468
  requestCount: function requestCount() {
5376
5469
  this.$emit('request-count', this.flatFilters);
@@ -5381,31 +5474,14 @@ var VFiltersvue_type_script_lang_js_unserialize = function unserialize(input) {
5381
5474
  getUrlParams: function getUrlParams() {
5382
5475
  return VFiltersvue_type_script_lang_js_unserialize(window.location.search);
5383
5476
  },
5384
- setUrlParams: function setUrlParams(reset) {
5477
+ setUrlParams: function setUrlParams(isUpdate, rewriteParams) {
5385
5478
  if (this.showParams) {
5386
- var params = this.getUrlParams();
5387
-
5388
- for (var name in this.filters) {
5389
- var filterValue = this.filters[name];
5390
-
5391
- if (this.editedFields.includes(name)) {
5392
- if (Array.isArray(filterValue) && filterValue.length > 0) {
5393
- params[name] = filterValue.map(function (val) {
5394
- return val._id || val;
5395
- });
5396
- } else if (filterValue instanceof Object) {
5397
- filterValue = _objectSpread2({}, filterValue);
5398
- params[name] = [filterValue._id];
5399
- }
5400
- } else {
5401
- delete params[name];
5402
- }
5403
- }
5479
+ var params = rewriteParams || _objectSpread2(_objectSpread2({}, this.flatFilters), this.paramsToInclude);
5404
5480
 
5405
5481
  var currentParams = this.getUrlParams();
5406
5482
  var newParamsLength = Object.keys(params).length;
5407
5483
 
5408
- if ((newParamsLength && !es_equals(params, currentParams) || reset) && !this.humanLink) {
5484
+ if ((newParamsLength && !es_equals(params, currentParams) || isUpdate || rewriteParams) && !this.humanLink) {
5409
5485
  var query = VFiltersvue_type_script_lang_js_serialize(params);
5410
5486
  var url = window.location.origin + window.location.pathname + "".concat(newParamsLength ? '?' : '').concat(query);
5411
5487
  history.replaceState({
@@ -5416,7 +5492,7 @@ var VFiltersvue_type_script_lang_js_unserialize = function unserialize(input) {
5416
5492
  },
5417
5493
  handleFieldChange: function handleFieldChange(name) {
5418
5494
  this.addEditedField(name);
5419
- this.editedInside = true;
5495
+ this.removeDependentFieldsFromEdited(name);
5420
5496
  this.setUrlParams();
5421
5497
  this.doAction();
5422
5498
  }