@ng-select/ng-select 3.7.2 → 3.7.3

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/README.md CHANGED
@@ -1,10 +1,7 @@
1
1
  [![npm version](https://badge.fury.io/js/%40ng-select%2Fng-select.svg)](https://badge.fury.io/js/%40ng-select%2Fng-select)
2
- [![Build Status][travis-badge]][travis-badge-url]
3
2
  [![Coverage Status][coveralls-image]][coveralls-url]
4
3
  [![gzip bundle size](http://img.badgesize.io/https://unpkg.com/@ng-select/ng-select@latest/bundles/ng-select-ng-select.umd.min.js?compression=gzip&style=flat-square)][ng-select-url]
5
4
 
6
- [travis-badge]: https://travis-ci.org/ng-select/ng-select.svg?branch=master
7
- [travis-badge-url]: https://travis-ci.org/ng-select/ng-select
8
5
  [coveralls-image]: https://coveralls.io/repos/github/ng-select/ng-select/badge.svg?branch=master
9
6
  [coveralls-url]: https://coveralls.io/github/ng-select/ng-select?branch=master
10
7
  [ng-select-url]: https://unpkg.com/@ng-select/ng-select@latest
@@ -156,6 +153,7 @@ map: {
156
153
  | [searchWhileComposing] | `boolean` | `true` | no | Whether items should be filtered while composition started |
157
154
  | [trackByFn] | `(item: any) => any` | `null` | no | Provide custom trackBy function |
158
155
  | [clearSearchOnAdd] | `boolean` | `true` | no | Clears search input when item is selected. Default `true`. Default `false` when **closeOnSelect** is `false` |
156
+ | [editableSearchTerm] | `boolean` | `false` | no | Allow to edit search query if option selected. Default `false`. Works only if multiple is `false`. |
159
157
  | [selectOnTab] | `boolean` | `false` | no | Select marked dropdown item using tab. Default `false`|
160
158
  | [openOnEnter] | `boolean` | `true` | no | Open dropdown using enter. Default `true`|
161
159
  | [typeahead] | `Subject` | `-` | no | Custom autocomplete or advanced filter. |
@@ -72,10 +72,11 @@
72
72
  }
73
73
 
74
74
  function __awaiter(thisArg, _arguments, P, generator) {
75
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
75
76
  return new (P || (P = Promise))(function (resolve, reject) {
76
77
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
77
78
  function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
78
- function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
79
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
79
80
  step((generator = generator.apply(thisArg, _arguments || [])).next());
80
81
  });
81
82
  }
@@ -113,14 +114,15 @@
113
114
  }
114
115
 
115
116
  function __values(o) {
116
- var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0;
117
+ var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
117
118
  if (m) return m.call(o);
118
- return {
119
+ if (o && typeof o.length === "number") return {
119
120
  next: function () {
120
121
  if (o && i >= o.length) o = void 0;
121
122
  return { value: o && o[i++], done: !o };
122
123
  }
123
124
  };
125
+ throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
124
126
  }
125
127
 
126
128
  function __read(o, n) {
@@ -199,6 +201,21 @@
199
201
 
200
202
  function __importDefault(mod) {
201
203
  return (mod && mod.__esModule) ? mod : { default: mod };
204
+ }
205
+
206
+ function __classPrivateFieldGet(receiver, privateMap) {
207
+ if (!privateMap.has(receiver)) {
208
+ throw new TypeError("attempted to get private field on non-instance");
209
+ }
210
+ return privateMap.get(receiver);
211
+ }
212
+
213
+ function __classPrivateFieldSet(receiver, privateMap, value) {
214
+ if (!privateMap.has(receiver)) {
215
+ throw new TypeError("attempted to set private field on non-instance");
216
+ }
217
+ privateMap.set(receiver, value);
218
+ return value;
202
219
  }
203
220
 
204
221
  /**
@@ -3452,6 +3469,7 @@
3452
3469
  this.readonly = false;
3453
3470
  this.searchWhileComposing = true;
3454
3471
  this.minTermLength = 0;
3472
+ this.editableSearchTerm = false;
3455
3473
  this.keyDownFn = (/**
3456
3474
  * @param {?} _
3457
3475
  * @return {?}
@@ -3478,6 +3496,7 @@
3478
3496
  this.searchTerm = null;
3479
3497
  this.dropdownId = newId();
3480
3498
  this.escapeHTML = true;
3499
+ this.useDefaultClass = true;
3481
3500
  this._items = [];
3482
3501
  this._defaultLabel = 'label';
3483
3502
  this._pressedKeys = [];
@@ -3592,6 +3611,17 @@
3592
3611
  configurable: true
3593
3612
  });
3594
3613
  ;
3614
+ Object.defineProperty(NgSelectComponent.prototype, "_editableSearchTerm", {
3615
+ get: /**
3616
+ * @private
3617
+ * @return {?}
3618
+ */
3619
+ function () {
3620
+ return this.editableSearchTerm && !this.multiple;
3621
+ },
3622
+ enumerable: true,
3623
+ configurable: true
3624
+ });
3595
3625
  Object.defineProperty(NgSelectComponent.prototype, "selectedItems", {
3596
3626
  get: /**
3597
3627
  * @return {?}
@@ -3919,7 +3949,12 @@
3919
3949
  return;
3920
3950
  }
3921
3951
  this.isOpen = false;
3922
- this._clearSearch();
3952
+ if (!this._editableSearchTerm) {
3953
+ this._clearSearch();
3954
+ }
3955
+ else {
3956
+ this.itemsList.resetFilteredItems();
3957
+ }
3923
3958
  this.itemsList.unmarkItem();
3924
3959
  this._onTouched();
3925
3960
  this.closeEvent.emit();
@@ -3943,6 +3978,9 @@
3943
3978
  else {
3944
3979
  this.select(item);
3945
3980
  }
3981
+ if (this._editableSearchTerm) {
3982
+ this._setSearchTermFromItems();
3983
+ }
3946
3984
  this._onSelectionChanged();
3947
3985
  };
3948
3986
  /**
@@ -3956,7 +3994,7 @@
3956
3994
  function (item) {
3957
3995
  if (!item.selected) {
3958
3996
  this.itemsList.select(item);
3959
- if (this.clearSearchOnAdd) {
3997
+ if (this.clearSearchOnAdd && !this._editableSearchTerm) {
3960
3998
  this._clearSearch();
3961
3999
  }
3962
4000
  this._updateNgModel();
@@ -4164,6 +4202,9 @@
4164
4202
  if (this.focused) {
4165
4203
  return;
4166
4204
  }
4205
+ if (this._editableSearchTerm) {
4206
+ this._setSearchTermFromItems();
4207
+ }
4167
4208
  this.element.classList.add('ng-select-focused');
4168
4209
  this.focusEvent.emit($event);
4169
4210
  this.focused = true;
@@ -4182,6 +4223,9 @@
4182
4223
  if (!this.isOpen && !this.disabled) {
4183
4224
  this._onTouched();
4184
4225
  }
4226
+ if (this._editableSearchTerm) {
4227
+ this._setSearchTermFromItems();
4228
+ }
4185
4229
  this.focused = false;
4186
4230
  };
4187
4231
  /**
@@ -4209,6 +4253,19 @@
4209
4253
  this._cd.detectChanges();
4210
4254
  }
4211
4255
  };
4256
+ /**
4257
+ * @private
4258
+ * @return {?}
4259
+ */
4260
+ NgSelectComponent.prototype._setSearchTermFromItems = /**
4261
+ * @private
4262
+ * @return {?}
4263
+ */
4264
+ function () {
4265
+ /** @type {?} */
4266
+ var selected = this.selectedItems && this.selectedItems[0];
4267
+ this.searchTerm = (selected && selected.label) || null;
4268
+ };
4212
4269
  /**
4213
4270
  * @private
4214
4271
  * @param {?} items
@@ -4823,7 +4880,7 @@
4823
4880
  changeDetection: core.ChangeDetectionStrategy.OnPush,
4824
4881
  host: {
4825
4882
  'role': 'listbox',
4826
- 'class': 'ng-select',
4883
+ '[class.ng-select]': 'useDefaultClass',
4827
4884
  '[class.ng-select-single]': '!multiple',
4828
4885
  },
4829
4886
  styles: [".ng-select{position:relative;display:block;box-sizing:border-box}.ng-select div,.ng-select input,.ng-select span{box-sizing:border-box}.ng-select [hidden]{display:none}.ng-select.ng-select-searchable .ng-select-container .ng-value-container .ng-input{opacity:1}.ng-select.ng-select-opened .ng-select-container{z-index:1001}.ng-select.ng-select-disabled .ng-select-container .ng-value-container .ng-placeholder,.ng-select.ng-select-disabled .ng-select-container .ng-value-container .ng-value{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.ng-select.ng-select-disabled .ng-arrow-wrapper{cursor:default}.ng-select.ng-select-filtered .ng-placeholder{display:none}.ng-select .ng-select-container{cursor:default;display:-webkit-box;display:flex;outline:0;overflow:hidden;position:relative;width:100%}.ng-select .ng-select-container .ng-value-container{display:-webkit-box;display:flex;-webkit-box-flex:1;flex:1}.ng-select .ng-select-container .ng-value-container .ng-input{opacity:0}.ng-select .ng-select-container .ng-value-container .ng-input>input{box-sizing:content-box;background:none;border:0;box-shadow:none;outline:0;cursor:default;width:100%}.ng-select .ng-select-container .ng-value-container .ng-input>input::-ms-clear{display:none}.ng-select .ng-select-container .ng-value-container .ng-input>input[readonly]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:0;padding:0}.ng-select.ng-select-single.ng-select-filtered .ng-select-container .ng-value-container .ng-value{visibility:hidden}.ng-select.ng-select-single .ng-select-container .ng-value-container,.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-value{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-value .ng-value-icon{display:none}.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input{position:absolute;left:0;width:100%}.ng-select.ng-select-multiple.ng-select-disabled>.ng-select-container .ng-value-container .ng-value .ng-value-icon{display:none}.ng-select.ng-select-multiple .ng-select-container .ng-value-container{flex-wrap:wrap}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{white-space:nowrap}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled .ng-value-icon{display:none}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon{cursor:pointer}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input{-webkit-box-flex:1;flex:1;z-index:2}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{position:absolute;z-index:1}.ng-select .ng-clear-wrapper{cursor:pointer;position:relative;width:17px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ng-select .ng-clear-wrapper .ng-clear{display:inline-block;font-size:18px;line-height:1;pointer-events:none}.ng-select .ng-spinner-loader{border-radius:50%;width:17px;height:17px;margin-right:5px;font-size:10px;position:relative;text-indent:-9999em;border-top:2px solid rgba(66,66,66,.2);border-right:2px solid rgba(66,66,66,.2);border-bottom:2px solid rgba(66,66,66,.2);border-left:2px solid #424242;-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-animation:.8s linear infinite load8;animation:.8s linear infinite load8}.ng-select .ng-spinner-loader:after{border-radius:50%;width:17px;height:17px}@-webkit-keyframes load8{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes load8{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.ng-select .ng-arrow-wrapper{cursor:pointer;position:relative;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ng-select .ng-arrow-wrapper .ng-arrow{pointer-events:none;display:inline-block;height:0;width:0;position:relative}.ng-dropdown-panel{box-sizing:border-box;position:absolute;opacity:0;width:100%;z-index:1050;-webkit-overflow-scrolling:touch}.ng-dropdown-panel .ng-dropdown-panel-items{display:block;height:auto;box-sizing:border-box;max-height:240px;overflow-y:auto}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option{box-sizing:border-box;cursor:pointer;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .highlighted{font-weight:700;text-decoration:underline}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.disabled{cursor:default}.ng-dropdown-panel .scroll-host{overflow:hidden;overflow-y:auto;position:relative;display:block;-webkit-overflow-scrolling:touch}.ng-dropdown-panel .scrollable-content{top:0;left:0;width:100%;height:100%;position:absolute}.ng-dropdown-panel .total-padding{width:1px;opacity:0}"]
@@ -4873,6 +4930,7 @@
4873
4930
  readonly: [{ type: core.Input }],
4874
4931
  searchWhileComposing: [{ type: core.Input }],
4875
4932
  minTermLength: [{ type: core.Input }],
4933
+ editableSearchTerm: [{ type: core.Input }],
4876
4934
  keyDownFn: [{ type: core.Input }],
4877
4935
  typeahead: [{ type: core.Input }, { type: core.HostBinding, args: ['class.ng-select-typeahead',] }],
4878
4936
  multiple: [{ type: core.Input }, { type: core.HostBinding, args: ['class.ng-select-multiple',] }],
@@ -4985,6 +5043,8 @@
4985
5043
  /** @type {?} */
4986
5044
  NgSelectComponent.prototype.minTermLength;
4987
5045
  /** @type {?} */
5046
+ NgSelectComponent.prototype.editableSearchTerm;
5047
+ /** @type {?} */
4988
5048
  NgSelectComponent.prototype.keyDownFn;
4989
5049
  /** @type {?} */
4990
5050
  NgSelectComponent.prototype.typeahead;
@@ -5062,6 +5122,8 @@
5062
5122
  NgSelectComponent.prototype.focused;
5063
5123
  /** @type {?} */
5064
5124
  NgSelectComponent.prototype.escapeHTML;
5125
+ /** @type {?} */
5126
+ NgSelectComponent.prototype.useDefaultClass;
5065
5127
  /**
5066
5128
  * @type {?}
5067
5129
  * @private