@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.
@@ -2899,6 +2899,7 @@ class NgSelectComponent {
2899
2899
  this.readonly = false;
2900
2900
  this.searchWhileComposing = true;
2901
2901
  this.minTermLength = 0;
2902
+ this.editableSearchTerm = false;
2902
2903
  this.keyDownFn = (/**
2903
2904
  * @param {?} _
2904
2905
  * @return {?}
@@ -2925,6 +2926,7 @@ class NgSelectComponent {
2925
2926
  this.searchTerm = null;
2926
2927
  this.dropdownId = newId();
2927
2928
  this.escapeHTML = true;
2929
+ this.useDefaultClass = true;
2928
2930
  this._items = [];
2929
2931
  this._defaultLabel = 'label';
2930
2932
  this._pressedKeys = [];
@@ -3019,6 +3021,13 @@ class NgSelectComponent {
3019
3021
  */
3020
3022
  get filtered() { return (!!this.searchTerm && this.searchable || this._isComposing); }
3021
3023
  ;
3024
+ /**
3025
+ * @private
3026
+ * @return {?}
3027
+ */
3028
+ get _editableSearchTerm() {
3029
+ return this.editableSearchTerm && !this.multiple;
3030
+ }
3022
3031
  /**
3023
3032
  * @return {?}
3024
3033
  */
@@ -3271,7 +3280,12 @@ class NgSelectComponent {
3271
3280
  return;
3272
3281
  }
3273
3282
  this.isOpen = false;
3274
- this._clearSearch();
3283
+ if (!this._editableSearchTerm) {
3284
+ this._clearSearch();
3285
+ }
3286
+ else {
3287
+ this.itemsList.resetFilteredItems();
3288
+ }
3275
3289
  this.itemsList.unmarkItem();
3276
3290
  this._onTouched();
3277
3291
  this.closeEvent.emit();
@@ -3291,6 +3305,9 @@ class NgSelectComponent {
3291
3305
  else {
3292
3306
  this.select(item);
3293
3307
  }
3308
+ if (this._editableSearchTerm) {
3309
+ this._setSearchTermFromItems();
3310
+ }
3294
3311
  this._onSelectionChanged();
3295
3312
  }
3296
3313
  /**
@@ -3300,7 +3317,7 @@ class NgSelectComponent {
3300
3317
  select(item) {
3301
3318
  if (!item.selected) {
3302
3319
  this.itemsList.select(item);
3303
- if (this.clearSearchOnAdd) {
3320
+ if (this.clearSearchOnAdd && !this._editableSearchTerm) {
3304
3321
  this._clearSearch();
3305
3322
  }
3306
3323
  this._updateNgModel();
@@ -3465,6 +3482,9 @@ class NgSelectComponent {
3465
3482
  if (this.focused) {
3466
3483
  return;
3467
3484
  }
3485
+ if (this._editableSearchTerm) {
3486
+ this._setSearchTermFromItems();
3487
+ }
3468
3488
  this.element.classList.add('ng-select-focused');
3469
3489
  this.focusEvent.emit($event);
3470
3490
  this.focused = true;
@@ -3479,6 +3499,9 @@ class NgSelectComponent {
3479
3499
  if (!this.isOpen && !this.disabled) {
3480
3500
  this._onTouched();
3481
3501
  }
3502
+ if (this._editableSearchTerm) {
3503
+ this._setSearchTermFromItems();
3504
+ }
3482
3505
  this.focused = false;
3483
3506
  }
3484
3507
  /**
@@ -3499,6 +3522,15 @@ class NgSelectComponent {
3499
3522
  this._cd.detectChanges();
3500
3523
  }
3501
3524
  }
3525
+ /**
3526
+ * @private
3527
+ * @return {?}
3528
+ */
3529
+ _setSearchTermFromItems() {
3530
+ /** @type {?} */
3531
+ const selected = this.selectedItems && this.selectedItems[0];
3532
+ this.searchTerm = (selected && selected.label) || null;
3533
+ }
3502
3534
  /**
3503
3535
  * @private
3504
3536
  * @param {?} items
@@ -3989,7 +4021,7 @@ NgSelectComponent.decorators = [
3989
4021
  changeDetection: ChangeDetectionStrategy.OnPush,
3990
4022
  host: {
3991
4023
  'role': 'listbox',
3992
- 'class': 'ng-select',
4024
+ '[class.ng-select]': 'useDefaultClass',
3993
4025
  '[class.ng-select-single]': '!multiple',
3994
4026
  },
3995
4027
  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}"]
@@ -4039,6 +4071,7 @@ NgSelectComponent.propDecorators = {
4039
4071
  readonly: [{ type: Input }],
4040
4072
  searchWhileComposing: [{ type: Input }],
4041
4073
  minTermLength: [{ type: Input }],
4074
+ editableSearchTerm: [{ type: Input }],
4042
4075
  keyDownFn: [{ type: Input }],
4043
4076
  typeahead: [{ type: Input }, { type: HostBinding, args: ['class.ng-select-typeahead',] }],
4044
4077
  multiple: [{ type: Input }, { type: HostBinding, args: ['class.ng-select-multiple',] }],
@@ -4149,6 +4182,8 @@ if (false) {
4149
4182
  /** @type {?} */
4150
4183
  NgSelectComponent.prototype.minTermLength;
4151
4184
  /** @type {?} */
4185
+ NgSelectComponent.prototype.editableSearchTerm;
4186
+ /** @type {?} */
4152
4187
  NgSelectComponent.prototype.keyDownFn;
4153
4188
  /** @type {?} */
4154
4189
  NgSelectComponent.prototype.typeahead;
@@ -4226,6 +4261,8 @@ if (false) {
4226
4261
  NgSelectComponent.prototype.focused;
4227
4262
  /** @type {?} */
4228
4263
  NgSelectComponent.prototype.escapeHTML;
4264
+ /** @type {?} */
4265
+ NgSelectComponent.prototype.useDefaultClass;
4229
4266
  /**
4230
4267
  * @type {?}
4231
4268
  * @private