slim-select 2.2.2 → 2.3.0

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.
@@ -68,7 +68,7 @@ var SlimSelect = (function () {
68
68
  this.id = 'ss-' + generateID();
69
69
  this.style = settings.style || '';
70
70
  this.class = settings.class || [];
71
- this.isEnabled = settings.isEnabled !== undefined ? settings.isEnabled : true;
71
+ this.disabled = settings.disabled !== undefined ? settings.disabled : false;
72
72
  this.alwaysOpen = settings.alwaysOpen !== undefined ? settings.alwaysOpen : false;
73
73
  this.showSearch = settings.showSearch !== undefined ? settings.showSearch : true;
74
74
  this.searchPlaceholder = settings.searchPlaceholder || 'Search';
@@ -86,6 +86,8 @@ var SlimSelect = (function () {
86
86
  this.minSelected = settings.minSelected || 0;
87
87
  this.maxSelected = settings.maxSelected || 1000;
88
88
  this.timeoutDelay = settings.timeoutDelay || 200;
89
+ this.maxValuesShown = settings.maxValuesShown || 20;
90
+ this.maxValuesMessage = settings.maxValuesMessage || '{number} selected';
89
91
  }
90
92
  }
91
93
 
@@ -268,23 +270,21 @@ var SlimSelect = (function () {
268
270
  const dataSearch = [];
269
271
  this.data.forEach((dataObj) => {
270
272
  if (dataObj instanceof Optgroup) {
271
- if (!includeOptgroup) {
272
- dataObj.options.forEach((option) => {
273
- if (filter && filter(option)) {
274
- dataSearch.push(option);
273
+ let optOptions = [];
274
+ dataObj.options.forEach((option) => {
275
+ if (!filter || filter(option)) {
276
+ if (!includeOptgroup) {
277
+ dataSearch.push(new Option(option));
275
278
  }
276
- });
277
- }
278
- else {
279
- let optOptions = [];
280
- dataObj.options.forEach((option) => {
281
- if (!filter || filter(option)) {
279
+ else {
282
280
  optOptions.push(new Option(option));
283
281
  }
284
- });
285
- if (optOptions.length > 0) {
286
- dataSearch.push(new Optgroup(dataObj));
287
282
  }
283
+ });
284
+ if (optOptions.length > 0) {
285
+ let optgroup = new Optgroup(dataObj);
286
+ optgroup.options = optOptions;
287
+ dataSearch.push(optgroup);
288
288
  }
289
289
  }
290
290
  if (dataObj instanceof Option) {
@@ -304,6 +304,7 @@ var SlimSelect = (function () {
304
304
  placeholder: 'ss-placeholder',
305
305
  values: 'ss-values',
306
306
  single: 'ss-single',
307
+ max: 'ss-max',
307
308
  value: 'ss-value',
308
309
  valueText: 'ss-value-text',
309
310
  valueDelete: 'ss-value-delete',
@@ -360,23 +361,7 @@ var SlimSelect = (function () {
360
361
  this.main.main.classList.add(this.settings.openPosition === 'up' ? this.classes.openAbove : this.classes.openBelow);
361
362
  this.moveContent();
362
363
  this.renderOptions(this.store.getData());
363
- if (this.settings.contentPosition === 'relative') {
364
- this.moveContentBelow();
365
- }
366
- else if (this.settings.openPosition.toLowerCase() === 'up') {
367
- this.moveContentAbove();
368
- }
369
- else if (this.settings.openPosition.toLowerCase() === 'down') {
370
- this.moveContentBelow();
371
- }
372
- else {
373
- if (this.putContent(this.content.main, this.settings.isOpen) === 'up') {
374
- this.moveContentAbove();
375
- }
376
- else {
377
- this.moveContentBelow();
378
- }
379
- }
364
+ this.moveContent();
380
365
  const selectedOptions = this.store.getSelectedOptions();
381
366
  if (selectedOptions.length) {
382
367
  const selectedId = selectedOptions[selectedOptions.length - 1].id;
@@ -434,7 +419,7 @@ var SlimSelect = (function () {
434
419
  }
435
420
  };
436
421
  main.onclick = (e) => {
437
- if (!this.settings.isEnabled) {
422
+ if (this.settings.disabled) {
438
423
  return;
439
424
  }
440
425
  this.settings.isOpen ? this.callbacks.close() : this.callbacks.open();
@@ -449,7 +434,7 @@ var SlimSelect = (function () {
449
434
  }
450
435
  deselect.onclick = (e) => {
451
436
  e.stopPropagation();
452
- if (!this.settings.isEnabled) {
437
+ if (this.settings.disabled) {
453
438
  return;
454
439
  }
455
440
  let shouldDelete = true;
@@ -565,6 +550,19 @@ var SlimSelect = (function () {
565
550
  placeholder.remove();
566
551
  }
567
552
  }
553
+ if (selectedOptions.length > this.settings.maxValuesShown) {
554
+ const singleValue = document.createElement('div');
555
+ singleValue.classList.add(this.classes.max);
556
+ singleValue.textContent = this.settings.maxValuesMessage.replace('{number}', selectedOptions.length.toString());
557
+ this.main.values.innerHTML = singleValue.outerHTML;
558
+ return;
559
+ }
560
+ else {
561
+ const maxValuesMessage = this.main.values.querySelector('.' + this.classes.max);
562
+ if (maxValuesMessage) {
563
+ maxValuesMessage.remove();
564
+ }
565
+ }
568
566
  let removeNodes = [];
569
567
  for (let i = 0; i < currentNodes.length; i++) {
570
568
  const node = currentNodes[i];
@@ -619,6 +617,9 @@ var SlimSelect = (function () {
619
617
  deleteDiv.onclick = (e) => {
620
618
  e.preventDefault();
621
619
  e.stopPropagation();
620
+ if (this.settings.disabled) {
621
+ return;
622
+ }
622
623
  let shouldDelete = true;
623
624
  const before = this.store.getSelectedOptions();
624
625
  const after = before.filter((o) => {
@@ -690,12 +691,23 @@ var SlimSelect = (function () {
690
691
  }
691
692
  moveContent() {
692
693
  if (this.settings.contentPosition === 'relative') {
694
+ this.moveContentBelow();
693
695
  return;
694
696
  }
695
- const containerRect = this.main.main.getBoundingClientRect();
696
- this.content.main.style.top = containerRect.top + containerRect.height + window.scrollY + 'px';
697
- this.content.main.style.left = containerRect.left + window.scrollX + 'px';
698
- this.content.main.style.width = containerRect.width + 'px';
697
+ if (this.settings.openPosition === 'down') {
698
+ this.moveContentBelow();
699
+ return;
700
+ }
701
+ else if (this.settings.openPosition === 'up') {
702
+ this.moveContentAbove();
703
+ return;
704
+ }
705
+ if (this.putContent() === 'up') {
706
+ this.moveContentAbove();
707
+ }
708
+ else {
709
+ this.moveContentBelow();
710
+ }
699
711
  }
700
712
  searchDiv() {
701
713
  const main = document.createElement('div');
@@ -906,8 +918,7 @@ var SlimSelect = (function () {
906
918
  this.content.list.innerHTML = '';
907
919
  if (data.length === 0) {
908
920
  const noResults = document.createElement('div');
909
- noResults.classList.add(this.classes.option);
910
- noResults.classList.add(this.classes.disabled);
921
+ noResults.classList.add(this.classes.search);
911
922
  noResults.innerHTML = this.settings.searchText;
912
923
  this.content.list.appendChild(noResults);
913
924
  return;
@@ -983,7 +994,7 @@ var SlimSelect = (function () {
983
994
  optgroupClosable.appendChild(optgroupClosableSvg);
984
995
  const optgroupClosableArrow = document.createElementNS('http://www.w3.org/2000/svg', 'path');
985
996
  optgroupClosableSvg.appendChild(optgroupClosableArrow);
986
- if (d.options.some((o) => o.selected)) {
997
+ if (d.options.some((o) => o.selected) || this.content.search.input.value.trim() !== '') {
987
998
  optgroupClosable.classList.add(this.classes.open);
988
999
  optgroupClosableArrow.setAttribute('d', this.classes.arrowOpen);
989
1000
  }
@@ -1042,8 +1053,7 @@ var SlimSelect = (function () {
1042
1053
  optionEl.style.cssText = option.style;
1043
1054
  }
1044
1055
  if (this.settings.searchHighlight && this.content.search.input.value.trim() !== '') {
1045
- const textOrHtml = option.html !== '' ? option.html : option.text;
1046
- optionEl.innerHTML = this.highlightText(textOrHtml, this.content.search.input.value, this.classes.searchHighlighter);
1056
+ optionEl.innerHTML = this.highlightText(option.html !== '' ? option.html : option.text, this.content.search.input.value, this.classes.searchHighlighter);
1047
1057
  }
1048
1058
  else if (option.html !== '') {
1049
1059
  optionEl.innerHTML = option.html;
@@ -1054,7 +1064,7 @@ var SlimSelect = (function () {
1054
1064
  if (this.settings.showOptionTooltips && optionEl.textContent) {
1055
1065
  optionEl.setAttribute('title', optionEl.textContent);
1056
1066
  }
1057
- if ((option.selected && !this.settings.allowDeselect) || (option.disabled && !this.settings.allowDeselect)) {
1067
+ if (option.disabled) {
1058
1068
  optionEl.classList.add(this.classes.disabled);
1059
1069
  }
1060
1070
  if (option.selected && this.settings.hideSelected) {
@@ -1075,9 +1085,8 @@ var SlimSelect = (function () {
1075
1085
  if (option.disabled || (option.selected && !this.settings.allowDeselect)) {
1076
1086
  return;
1077
1087
  }
1078
- if (this.settings.isMultiple &&
1079
- Array.isArray(selectedOptions) &&
1080
- this.settings.maxSelected <= selectedOptions.length) {
1088
+ if ((this.settings.isMultiple && this.settings.maxSelected <= selectedOptions.length && !option.selected) ||
1089
+ (this.settings.isMultiple && this.settings.minSelected >= selectedOptions.length && option.selected)) {
1081
1090
  return;
1082
1091
  }
1083
1092
  let shouldUpdate = false;
@@ -1142,23 +1151,30 @@ var SlimSelect = (function () {
1142
1151
  return completedString;
1143
1152
  }
1144
1153
  moveContentAbove() {
1145
- let mainHeight = this.main.main.offsetHeight;
1154
+ const mainHeight = this.main.main.offsetHeight;
1146
1155
  const contentHeight = this.content.main.offsetHeight;
1147
- const height = mainHeight + contentHeight - 1;
1148
- this.content.main.style.margin = '-' + height + 'px 0px 0px 0px';
1149
- this.content.main.style.transformOrigin = 'center bottom';
1150
1156
  this.main.main.classList.remove(this.classes.openBelow);
1151
1157
  this.main.main.classList.add(this.classes.openAbove);
1152
1158
  this.content.main.classList.remove(this.classes.openBelow);
1153
1159
  this.content.main.classList.add(this.classes.openAbove);
1160
+ const containerRect = this.main.main.getBoundingClientRect();
1161
+ this.content.main.style.margin = '-' + (mainHeight + contentHeight - 1) + 'px 0px 0px 0px';
1162
+ this.content.main.style.top = containerRect.top + containerRect.height + window.scrollY + 'px';
1163
+ this.content.main.style.left = containerRect.left + window.scrollX + 'px';
1164
+ this.content.main.style.width = containerRect.width + 'px';
1154
1165
  }
1155
1166
  moveContentBelow() {
1156
- this.content.main.style.margin = '-1px 0px 0px 0px';
1157
- this.content.main.style.transformOrigin = 'center top';
1158
1167
  this.main.main.classList.remove(this.classes.openAbove);
1159
1168
  this.main.main.classList.add(this.classes.openBelow);
1160
1169
  this.content.main.classList.remove(this.classes.openAbove);
1161
1170
  this.content.main.classList.add(this.classes.openBelow);
1171
+ const containerRect = this.main.main.getBoundingClientRect();
1172
+ this.content.main.style.margin = '-1px 0px 0px 0px';
1173
+ if (this.settings.contentPosition !== 'relative') {
1174
+ this.content.main.style.top = containerRect.top + containerRect.height + window.scrollY + 'px';
1175
+ this.content.main.style.left = containerRect.left + window.scrollX + 'px';
1176
+ this.content.main.style.width = containerRect.width + 'px';
1177
+ }
1162
1178
  }
1163
1179
  ensureElementInView(container, element) {
1164
1180
  const cTop = container.scrollTop + container.offsetTop;
@@ -1172,16 +1188,18 @@ var SlimSelect = (function () {
1172
1188
  container.scrollTop += eBottom - cBottom;
1173
1189
  }
1174
1190
  }
1175
- putContent(el, isOpen) {
1176
- const height = el.offsetHeight;
1177
- const rect = el.getBoundingClientRect();
1178
- const elemTop = isOpen ? rect.top : rect.top - height;
1179
- const elemBottom = isOpen ? rect.bottom : rect.bottom + height;
1180
- if (elemTop <= 0) {
1181
- return 'down';
1182
- }
1183
- if (elemBottom >= window.innerHeight) {
1184
- return 'up';
1191
+ putContent() {
1192
+ const mainHeight = this.main.main.offsetHeight;
1193
+ const mainRect = this.main.main.getBoundingClientRect();
1194
+ const contentHeight = this.content.main.offsetHeight;
1195
+ const spaceBelow = window.innerHeight - (mainRect.top + mainHeight);
1196
+ if (spaceBelow <= contentHeight) {
1197
+ if (mainRect.top > contentHeight) {
1198
+ return 'up';
1199
+ }
1200
+ else {
1201
+ return 'down';
1202
+ }
1185
1203
  }
1186
1204
  return 'down';
1187
1205
  }
@@ -1192,16 +1210,17 @@ var SlimSelect = (function () {
1192
1210
  this.listen = false;
1193
1211
  this.observer = null;
1194
1212
  this.select = select;
1213
+ this.select.addEventListener('change', this.valueChange.bind(this), {
1214
+ passive: true,
1215
+ });
1216
+ this.observer = new MutationObserver(this.observeCall.bind(this));
1217
+ this.changeListen(true);
1195
1218
  }
1196
1219
  enable() {
1197
- this.disconnectObserver();
1198
1220
  this.select.disabled = false;
1199
- this.connectObserver();
1200
1221
  }
1201
1222
  disable() {
1202
- this.disconnectObserver();
1203
1223
  this.select.disabled = true;
1204
- this.connectObserver();
1205
1224
  }
1206
1225
  hideUI() {
1207
1226
  this.select.tabIndex = -1;
@@ -1213,65 +1232,54 @@ var SlimSelect = (function () {
1213
1232
  this.select.style.display = '';
1214
1233
  this.select.removeAttribute('aria-hidden');
1215
1234
  }
1216
- changeListen(on) {
1217
- this.listen = on;
1218
- if (this.listen) {
1219
- this.connectObserver();
1235
+ changeListen(listen) {
1236
+ this.listen = listen;
1237
+ if (listen) {
1238
+ if (this.observer) {
1239
+ this.observer.observe(this.select, {
1240
+ subtree: true,
1241
+ childList: true,
1242
+ attributes: true,
1243
+ });
1244
+ }
1220
1245
  }
1221
- else {
1222
- this.disconnectObserver();
1246
+ if (!listen) {
1247
+ if (this.observer) {
1248
+ this.observer.disconnect();
1249
+ }
1223
1250
  }
1224
1251
  }
1225
- addSelectChangeListener(func) {
1226
- this.onSelectChange = func;
1227
- this.addObserver();
1228
- this.connectObserver();
1229
- this.changeListen(true);
1230
- }
1231
- removeSelectChangeListener() {
1232
- this.changeListen(false);
1233
- this.onSelectChange = undefined;
1234
- }
1235
- addValueChangeListener(func) {
1236
- this.onValueChange = func;
1237
- this.select.addEventListener('change', this.valueChange.bind(this), {
1238
- passive: true,
1239
- });
1240
- }
1241
- removeValueChangeListener() {
1242
- this.onValueChange = undefined;
1243
- this.select.removeEventListener('change', this.valueChange.bind(this));
1244
- }
1245
1252
  valueChange(ev) {
1246
1253
  if (this.listen && this.onValueChange) {
1247
1254
  this.onValueChange(this.getSelectedValues());
1248
1255
  }
1249
1256
  return true;
1250
1257
  }
1251
- observeWrapper(mutations) {
1252
- if (this.onSelectChange) {
1253
- this.changeListen(false);
1254
- this.onSelectChange(this.getData());
1255
- this.changeListen(true);
1258
+ observeCall(mutations) {
1259
+ if (!this.listen) {
1260
+ return;
1256
1261
  }
1257
- }
1258
- addObserver() {
1259
- if (this.observer) {
1260
- this.disconnectObserver();
1261
- this.observer = null;
1262
+ let disabledChanged = false;
1263
+ let optgroupOptionChanged = false;
1264
+ for (const m of mutations) {
1265
+ if (m.target === this.select) {
1266
+ if (m.attributeName === 'disabled') {
1267
+ disabledChanged = true;
1268
+ }
1269
+ }
1270
+ if (m.target.nodeName === 'OPTGROUP' || m.target.nodeName === 'OPTION') {
1271
+ optgroupOptionChanged = true;
1272
+ }
1262
1273
  }
1263
- this.observer = new MutationObserver(this.observeWrapper.bind(this));
1264
- }
1265
- connectObserver() {
1266
- if (this.observer) {
1267
- this.observer.observe(this.select, {
1268
- childList: true,
1269
- });
1274
+ if (disabledChanged && this.onDisabledChange) {
1275
+ this.changeListen(false);
1276
+ this.onDisabledChange(this.select.disabled);
1277
+ this.changeListen(true);
1270
1278
  }
1271
- }
1272
- disconnectObserver() {
1273
- if (this.observer) {
1274
- this.observer.disconnect();
1279
+ if (optgroupOptionChanged && this.onOptionsChange) {
1280
+ this.changeListen(false);
1281
+ this.onOptionsChange(this.getData());
1282
+ this.changeListen(true);
1275
1283
  }
1276
1284
  }
1277
1285
  getData() {
@@ -1289,7 +1297,7 @@ var SlimSelect = (function () {
1289
1297
  }
1290
1298
  getDataFromOptgroup(optgroup) {
1291
1299
  let data = {
1292
- id: (optgroup.dataset ? optgroup.dataset.id : false) || '',
1300
+ id: optgroup.id,
1293
1301
  label: optgroup.label,
1294
1302
  selectAll: optgroup.dataset ? optgroup.dataset.selectall === 'true' : false,
1295
1303
  closable: optgroup.dataset ? optgroup.dataset.closable : 'off',
@@ -1305,10 +1313,10 @@ var SlimSelect = (function () {
1305
1313
  }
1306
1314
  getDataFromOption(option) {
1307
1315
  return {
1308
- id: (option.dataset ? option.dataset.id : false) || '',
1316
+ id: option.id,
1309
1317
  value: option.value,
1310
1318
  text: option.text,
1311
- html: option.innerHTML,
1319
+ html: option.dataset && option.dataset.html ? option.dataset.html : '',
1312
1320
  selected: option.selected,
1313
1321
  display: option.style.display === 'none' ? false : true,
1314
1322
  disabled: option.disabled,
@@ -1344,6 +1352,7 @@ var SlimSelect = (function () {
1344
1352
  return values;
1345
1353
  }
1346
1354
  setSelected(value) {
1355
+ this.changeListen(false);
1347
1356
  const options = this.select.childNodes;
1348
1357
  for (const o of options) {
1349
1358
  if (o.nodeName === 'OPTGROUP') {
@@ -1361,6 +1370,7 @@ var SlimSelect = (function () {
1361
1370
  option.selected = value.includes(option.value);
1362
1371
  }
1363
1372
  }
1373
+ this.changeListen(true);
1364
1374
  }
1365
1375
  updateSelect(id, style, classes) {
1366
1376
  this.changeListen(false);
@@ -1413,8 +1423,12 @@ var SlimSelect = (function () {
1413
1423
  }
1414
1424
  createOption(info) {
1415
1425
  const optionEl = document.createElement('option');
1416
- optionEl.value = info.value !== '' ? info.value : info.text;
1417
- optionEl.innerHTML = info.html || info.text;
1426
+ optionEl.id = info.id;
1427
+ optionEl.value = info.value;
1428
+ optionEl.innerHTML = info.text;
1429
+ if (info.html !== '') {
1430
+ optionEl.setAttribute('data-html', info.html);
1431
+ }
1418
1432
  if (info.selected) {
1419
1433
  optionEl.selected = info.selected;
1420
1434
  }
@@ -1444,15 +1458,18 @@ var SlimSelect = (function () {
1444
1458
  }
1445
1459
  destroy() {
1446
1460
  this.changeListen(false);
1447
- this.disconnectObserver();
1448
- this.removeSelectChangeListener();
1449
- this.removeValueChangeListener();
1461
+ this.select.removeEventListener('change', this.valueChange.bind(this));
1462
+ if (this.observer) {
1463
+ this.observer.disconnect();
1464
+ this.observer = null;
1465
+ }
1450
1466
  this.showUI();
1451
1467
  }
1452
1468
  }
1453
1469
 
1454
1470
  class SlimSelect {
1455
1471
  constructor(config) {
1472
+ var _a;
1456
1473
  this.events = {
1457
1474
  search: undefined,
1458
1475
  searchFilter: (opt, search) => {
@@ -1476,23 +1493,7 @@ var SlimSelect = (function () {
1476
1493
  if (!this.settings.isOpen) {
1477
1494
  return;
1478
1495
  }
1479
- if (this.settings.openPosition === 'down') {
1480
- this.render.moveContentBelow();
1481
- return;
1482
- }
1483
- else if (this.settings.openPosition === 'up') {
1484
- this.render.moveContentAbove();
1485
- return;
1486
- }
1487
- if (this.settings.contentPosition === 'relative') {
1488
- this.render.moveContentBelow();
1489
- }
1490
- else if (this.render.putContent(this.render.content.main, this.settings.isOpen) === 'up') {
1491
- this.render.moveContentAbove();
1492
- }
1493
- else {
1494
- this.render.moveContentBelow();
1495
- }
1496
+ this.render.moveContent();
1496
1497
  });
1497
1498
  this.documentClick = (e) => {
1498
1499
  if (!this.settings.isOpen) {
@@ -1524,18 +1525,27 @@ var SlimSelect = (function () {
1524
1525
  this.events[key] = config.events[key];
1525
1526
  }
1526
1527
  }
1528
+ this.settings.disabled = ((_a = config.settings) === null || _a === void 0 ? void 0 : _a.disabled) ? config.settings.disabled : this.selectEl.disabled;
1527
1529
  this.settings.isMultiple = this.selectEl.multiple;
1528
1530
  this.settings.style = this.selectEl.style.cssText;
1529
1531
  this.settings.class = this.selectEl.className.split(' ');
1530
1532
  this.select = new Select(this.selectEl);
1531
1533
  this.select.updateSelect(this.settings.id, this.settings.style, this.settings.class);
1532
1534
  this.select.hideUI();
1533
- this.select.addSelectChangeListener((data) => {
1534
- this.setData(data);
1535
- });
1536
- this.select.addValueChangeListener((values) => {
1535
+ this.select.onValueChange = (values) => {
1537
1536
  this.setSelected(values);
1538
- });
1537
+ };
1538
+ this.select.onDisabledChange = (disabled) => {
1539
+ if (disabled) {
1540
+ this.disable();
1541
+ }
1542
+ else {
1543
+ this.enable();
1544
+ }
1545
+ };
1546
+ this.select.onOptionsChange = (data) => {
1547
+ this.setData(data);
1548
+ };
1539
1549
  this.store = new Store(this.settings.isMultiple ? 'multiple' : 'single', config.data ? config.data : this.select.getData());
1540
1550
  if (config.data) {
1541
1551
  this.select.updateOptions(this.store.getData());
@@ -1561,7 +1571,7 @@ var SlimSelect = (function () {
1561
1571
  if (this.settings.openPosition === 'auto') {
1562
1572
  window.addEventListener('scroll', this.windowScroll, false);
1563
1573
  }
1564
- if (!this.settings.isEnabled) {
1574
+ if (this.settings.disabled) {
1565
1575
  this.disable();
1566
1576
  }
1567
1577
  if (this.settings.alwaysOpen) {
@@ -1570,12 +1580,12 @@ var SlimSelect = (function () {
1570
1580
  this.selectEl.slim = this;
1571
1581
  }
1572
1582
  enable() {
1573
- this.settings.isEnabled = true;
1583
+ this.settings.disabled = false;
1574
1584
  this.select.enable();
1575
1585
  this.render.enable();
1576
1586
  }
1577
1587
  disable() {
1578
- this.settings.isEnabled = false;
1588
+ this.settings.disabled = true;
1579
1589
  this.select.disable();
1580
1590
  this.render.disable();
1581
1591
  }
@@ -1609,7 +1619,12 @@ var SlimSelect = (function () {
1609
1619
  const data = this.store.getData();
1610
1620
  this.select.updateOptions(data);
1611
1621
  this.render.renderValues();
1612
- this.render.renderOptions(data);
1622
+ if (this.render.content.search.input.value !== '') {
1623
+ this.search(this.render.content.search.input.value);
1624
+ }
1625
+ else {
1626
+ this.render.renderOptions(data);
1627
+ }
1613
1628
  if (this.events.afterChange && !isEqual(selected, this.store.getSelected())) {
1614
1629
  this.events.afterChange(this.store.getSelectedOptions());
1615
1630
  }
@@ -1626,7 +1641,7 @@ var SlimSelect = (function () {
1626
1641
  }
1627
1642
  }
1628
1643
  open() {
1629
- if (!this.settings.isEnabled || this.settings.isOpen) {
1644
+ if (this.settings.disabled || this.settings.isOpen) {
1630
1645
  return;
1631
1646
  }
1632
1647
  if (this.events.beforeOpen) {
@@ -1642,10 +1657,12 @@ var SlimSelect = (function () {
1642
1657
  }
1643
1658
  this.settings.isOpen = true;
1644
1659
  }, this.settings.timeoutDelay);
1645
- if (this.settings.intervalMove) {
1646
- clearInterval(this.settings.intervalMove);
1660
+ if (this.settings.contentPosition === 'absolute') {
1661
+ if (this.settings.intervalMove) {
1662
+ clearInterval(this.settings.intervalMove);
1663
+ }
1664
+ this.settings.intervalMove = setInterval(this.render.moveContent.bind(this.render), 500);
1647
1665
  }
1648
- this.settings.intervalMove = setInterval(this.render.moveContent.bind(this.render), 500);
1649
1666
  }
1650
1667
  close() {
1651
1668
  if (!this.settings.isOpen || this.settings.alwaysOpen) {