tom-select-rails 2.4.3 → 2.5.1

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.
Files changed (148) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +4 -2
  3. data/Rakefile +0 -2
  4. data/config/importmap.rb +2 -0
  5. data/lib/tom-select-rails/engine.rb +5 -2
  6. data/lib/tom-select-rails/version.rb +1 -3
  7. data/lib/tom-select-rails.rb +0 -2
  8. data/vendor/assets/javascripts/tom-select-rails/cjs/defaults.d.ts +1 -0
  9. data/vendor/assets/javascripts/tom-select-rails/cjs/defaults.js +1 -0
  10. data/vendor/assets/javascripts/tom-select-rails/cjs/defaults.js.map +1 -1
  11. data/vendor/assets/javascripts/tom-select-rails/cjs/plugins/clear_button/plugin.js +4 -1
  12. data/vendor/assets/javascripts/tom-select-rails/cjs/plugins/clear_button/plugin.js.map +1 -1
  13. data/vendor/assets/javascripts/tom-select-rails/cjs/plugins/clear_button/types.d.ts +2 -0
  14. data/vendor/assets/javascripts/tom-select-rails/cjs/plugins/dropdown_input/plugin.js +11 -0
  15. data/vendor/assets/javascripts/tom-select-rails/cjs/plugins/dropdown_input/plugin.js.map +1 -1
  16. data/vendor/assets/javascripts/tom-select-rails/cjs/tom-select.js +36 -12
  17. data/vendor/assets/javascripts/tom-select-rails/cjs/tom-select.js.map +1 -1
  18. data/vendor/assets/javascripts/tom-select-rails/cjs/types/settings.d.ts +2 -1
  19. data/vendor/assets/javascripts/tom-select-rails/esm/defaults.d.ts +1 -0
  20. data/vendor/assets/javascripts/tom-select-rails/esm/defaults.js +1 -0
  21. data/vendor/assets/javascripts/tom-select-rails/esm/defaults.js.map +1 -1
  22. data/vendor/assets/javascripts/tom-select-rails/esm/plugins/caret_position/plugin.js +1 -1
  23. data/vendor/assets/javascripts/tom-select-rails/esm/plugins/caret_position/plugin.js.map +1 -1
  24. data/vendor/assets/javascripts/tom-select-rails/esm/plugins/change_listener/plugin.js +1 -1
  25. data/vendor/assets/javascripts/tom-select-rails/esm/plugins/change_listener/plugin.js.map +1 -1
  26. data/vendor/assets/javascripts/tom-select-rails/esm/plugins/checkbox_options/plugin.js +1 -1
  27. data/vendor/assets/javascripts/tom-select-rails/esm/plugins/checkbox_options/plugin.js.map +1 -1
  28. data/vendor/assets/javascripts/tom-select-rails/esm/plugins/clear_button/plugin.js +5 -2
  29. data/vendor/assets/javascripts/tom-select-rails/esm/plugins/clear_button/plugin.js.map +1 -1
  30. data/vendor/assets/javascripts/tom-select-rails/esm/plugins/clear_button/types.d.ts +2 -0
  31. data/vendor/assets/javascripts/tom-select-rails/esm/plugins/drag_drop/plugin.js +1 -1
  32. data/vendor/assets/javascripts/tom-select-rails/esm/plugins/drag_drop/plugin.js.map +1 -1
  33. data/vendor/assets/javascripts/tom-select-rails/esm/plugins/dropdown_header/plugin.js +1 -1
  34. data/vendor/assets/javascripts/tom-select-rails/esm/plugins/dropdown_header/plugin.js.map +1 -1
  35. data/vendor/assets/javascripts/tom-select-rails/esm/plugins/dropdown_input/plugin.js +11 -1
  36. data/vendor/assets/javascripts/tom-select-rails/esm/plugins/dropdown_input/plugin.js.map +1 -1
  37. data/vendor/assets/javascripts/tom-select-rails/esm/plugins/input_autogrow/plugin.js +1 -1
  38. data/vendor/assets/javascripts/tom-select-rails/esm/plugins/input_autogrow/plugin.js.map +1 -1
  39. data/vendor/assets/javascripts/tom-select-rails/esm/plugins/no_active_items/plugin.js +1 -1
  40. data/vendor/assets/javascripts/tom-select-rails/esm/plugins/no_active_items/plugin.js.map +1 -1
  41. data/vendor/assets/javascripts/tom-select-rails/esm/plugins/no_backspace_delete/plugin.js +1 -1
  42. data/vendor/assets/javascripts/tom-select-rails/esm/plugins/no_backspace_delete/plugin.js.map +1 -1
  43. data/vendor/assets/javascripts/tom-select-rails/esm/plugins/optgroup_columns/plugin.js +1 -1
  44. data/vendor/assets/javascripts/tom-select-rails/esm/plugins/optgroup_columns/plugin.js.map +1 -1
  45. data/vendor/assets/javascripts/tom-select-rails/esm/plugins/remove_button/plugin.js +1 -1
  46. data/vendor/assets/javascripts/tom-select-rails/esm/plugins/remove_button/plugin.js.map +1 -1
  47. data/vendor/assets/javascripts/tom-select-rails/esm/plugins/restore_on_backspace/plugin.js +1 -1
  48. data/vendor/assets/javascripts/tom-select-rails/esm/plugins/restore_on_backspace/plugin.js.map +1 -1
  49. data/vendor/assets/javascripts/tom-select-rails/esm/plugins/virtual_scroll/plugin.js +1 -1
  50. data/vendor/assets/javascripts/tom-select-rails/esm/plugins/virtual_scroll/plugin.js.map +1 -1
  51. data/vendor/assets/javascripts/tom-select-rails/esm/tom-select.js +36 -12
  52. data/vendor/assets/javascripts/tom-select-rails/esm/tom-select.js.map +1 -1
  53. data/vendor/assets/javascripts/tom-select-rails/esm/types/settings.d.ts +2 -1
  54. data/vendor/assets/javascripts/tom-select-rails/js/plugins/caret_position.js +1 -1
  55. data/vendor/assets/javascripts/tom-select-rails/js/plugins/caret_position.js.map +1 -1
  56. data/vendor/assets/javascripts/tom-select-rails/js/plugins/change_listener.js +1 -1
  57. data/vendor/assets/javascripts/tom-select-rails/js/plugins/change_listener.js.map +1 -1
  58. data/vendor/assets/javascripts/tom-select-rails/js/plugins/checkbox_options.js +1 -1
  59. data/vendor/assets/javascripts/tom-select-rails/js/plugins/checkbox_options.js.map +1 -1
  60. data/vendor/assets/javascripts/tom-select-rails/js/plugins/clear_button.js +5 -2
  61. data/vendor/assets/javascripts/tom-select-rails/js/plugins/clear_button.js.map +1 -1
  62. data/vendor/assets/javascripts/tom-select-rails/js/plugins/drag_drop.js +1 -1
  63. data/vendor/assets/javascripts/tom-select-rails/js/plugins/drag_drop.js.map +1 -1
  64. data/vendor/assets/javascripts/tom-select-rails/js/plugins/dropdown_header.js +1 -1
  65. data/vendor/assets/javascripts/tom-select-rails/js/plugins/dropdown_header.js.map +1 -1
  66. data/vendor/assets/javascripts/tom-select-rails/js/plugins/dropdown_input.js +11 -1
  67. data/vendor/assets/javascripts/tom-select-rails/js/plugins/dropdown_input.js.map +1 -1
  68. data/vendor/assets/javascripts/tom-select-rails/js/plugins/input_autogrow.js +1 -1
  69. data/vendor/assets/javascripts/tom-select-rails/js/plugins/input_autogrow.js.map +1 -1
  70. data/vendor/assets/javascripts/tom-select-rails/js/plugins/no_active_items.js +1 -1
  71. data/vendor/assets/javascripts/tom-select-rails/js/plugins/no_active_items.js.map +1 -1
  72. data/vendor/assets/javascripts/tom-select-rails/js/plugins/no_backspace_delete.js +1 -1
  73. data/vendor/assets/javascripts/tom-select-rails/js/plugins/no_backspace_delete.js.map +1 -1
  74. data/vendor/assets/javascripts/tom-select-rails/js/plugins/optgroup_columns.js +1 -1
  75. data/vendor/assets/javascripts/tom-select-rails/js/plugins/optgroup_columns.js.map +1 -1
  76. data/vendor/assets/javascripts/tom-select-rails/js/plugins/remove_button.js +1 -1
  77. data/vendor/assets/javascripts/tom-select-rails/js/plugins/remove_button.js.map +1 -1
  78. data/vendor/assets/javascripts/tom-select-rails/js/plugins/restore_on_backspace.js +1 -1
  79. data/vendor/assets/javascripts/tom-select-rails/js/plugins/restore_on_backspace.js.map +1 -1
  80. data/vendor/assets/javascripts/tom-select-rails/js/plugins/virtual_scroll.js +1 -1
  81. data/vendor/assets/javascripts/tom-select-rails/js/plugins/virtual_scroll.js.map +1 -1
  82. data/vendor/assets/javascripts/tom-select-rails/js/tom-select.base.js +38 -14
  83. data/vendor/assets/javascripts/tom-select-rails/js/tom-select.base.js.map +1 -1
  84. data/vendor/assets/javascripts/tom-select-rails/js/tom-select.base.min.js +97 -98
  85. data/vendor/assets/javascripts/tom-select-rails/js/tom-select.base.min.js.map +1 -1
  86. data/vendor/assets/javascripts/tom-select-rails/js/tom-select.complete.js +52 -15
  87. data/vendor/assets/javascripts/tom-select-rails/js/tom-select.complete.js.map +1 -1
  88. data/vendor/assets/javascripts/tom-select-rails/js/tom-select.complete.min.js +143 -141
  89. data/vendor/assets/javascripts/tom-select-rails/js/tom-select.complete.min.js.map +1 -1
  90. data/vendor/assets/javascripts/tom-select-rails/js/tom-select.popular.js +48 -14
  91. data/vendor/assets/javascripts/tom-select-rails/js/tom-select.popular.js.map +1 -1
  92. data/vendor/assets/javascripts/tom-select-rails/js/tom-select.popular.min.js +119 -117
  93. data/vendor/assets/javascripts/tom-select-rails/js/tom-select.popular.min.js.map +1 -1
  94. data/vendor/assets/javascripts/tom-select-rails/tom-select.esm.js +3 -0
  95. data/vendor/assets/stylesheets/tom-select-rails/css/tom-select.bootstrap4.css +16 -5
  96. data/vendor/assets/stylesheets/tom-select-rails/css/tom-select.bootstrap4.css.map +1 -1
  97. data/vendor/assets/stylesheets/tom-select-rails/css/tom-select.bootstrap4.min.css +1 -1
  98. data/vendor/assets/stylesheets/tom-select-rails/css/tom-select.bootstrap4.min.css.map +1 -1
  99. data/vendor/assets/stylesheets/tom-select-rails/css/tom-select.bootstrap5.css +25 -9
  100. data/vendor/assets/stylesheets/tom-select-rails/css/tom-select.bootstrap5.css.map +1 -1
  101. data/vendor/assets/stylesheets/tom-select-rails/css/tom-select.bootstrap5.min.css +1 -1
  102. data/vendor/assets/stylesheets/tom-select-rails/css/tom-select.bootstrap5.min.css.map +1 -1
  103. data/vendor/assets/stylesheets/tom-select-rails/css/tom-select.css +8 -7
  104. data/vendor/assets/stylesheets/tom-select-rails/css/tom-select.css.map +1 -1
  105. data/vendor/assets/stylesheets/tom-select-rails/css/tom-select.default.css +5 -4
  106. data/vendor/assets/stylesheets/tom-select-rails/css/tom-select.default.css.map +1 -1
  107. data/vendor/assets/stylesheets/tom-select-rails/css/tom-select.default.min.css +1 -1
  108. data/vendor/assets/stylesheets/tom-select-rails/css/tom-select.default.min.css.map +1 -1
  109. data/vendor/assets/stylesheets/tom-select-rails/css/tom-select.min.css +1 -1
  110. data/vendor/assets/stylesheets/tom-select-rails/css/tom-select.min.css.map +1 -1
  111. data/vendor/assets/stylesheets/tom-select-rails/scss/_items.scss +1 -0
  112. data/vendor/assets/stylesheets/tom-select-rails/scss/tom-select.bootstrap4.scss +5 -0
  113. data/vendor/assets/stylesheets/tom-select-rails/scss/tom-select.bootstrap5.scss +14 -2
  114. data/vendor/assets/stylesheets/tom-select-rails/scss/tom-select.default.scss +1 -1
  115. data/vendor/assets/stylesheets/tom-select-rails/scss/tom-select.scss +4 -4
  116. metadata +5 -35
  117. data/vendor/assets/javascripts/tom-select-rails/types/constants.d.ts +0 -12
  118. data/vendor/assets/javascripts/tom-select-rails/types/contrib/highlight.d.ts +0 -13
  119. data/vendor/assets/javascripts/tom-select-rails/types/contrib/microevent.d.ts +0 -20
  120. data/vendor/assets/javascripts/tom-select-rails/types/contrib/microplugin.d.ts +0 -71
  121. data/vendor/assets/javascripts/tom-select-rails/types/defaults.d.ts +0 -52
  122. data/vendor/assets/javascripts/tom-select-rails/types/getSettings.d.ts +0 -3
  123. data/vendor/assets/javascripts/tom-select-rails/types/plugins/caret_position/plugin.d.ts +0 -16
  124. data/vendor/assets/javascripts/tom-select-rails/types/plugins/change_listener/plugin.d.ts +0 -16
  125. data/vendor/assets/javascripts/tom-select-rails/types/plugins/checkbox_options/plugin.d.ts +0 -17
  126. data/vendor/assets/javascripts/tom-select-rails/types/plugins/checkbox_options/types.d.ts +0 -14
  127. data/vendor/assets/javascripts/tom-select-rails/types/plugins/clear_button/plugin.d.ts +0 -17
  128. data/vendor/assets/javascripts/tom-select-rails/types/plugins/clear_button/types.d.ts +0 -5
  129. data/vendor/assets/javascripts/tom-select-rails/types/plugins/drag_drop/plugin.d.ts +0 -16
  130. data/vendor/assets/javascripts/tom-select-rails/types/plugins/dropdown_header/plugin.d.ts +0 -17
  131. data/vendor/assets/javascripts/tom-select-rails/types/plugins/dropdown_header/types.d.ts +0 -8
  132. data/vendor/assets/javascripts/tom-select-rails/types/plugins/dropdown_input/plugin.d.ts +0 -16
  133. data/vendor/assets/javascripts/tom-select-rails/types/plugins/input_autogrow/plugin.d.ts +0 -15
  134. data/vendor/assets/javascripts/tom-select-rails/types/plugins/no_active_items/plugin.d.ts +0 -15
  135. data/vendor/assets/javascripts/tom-select-rails/types/plugins/no_backspace_delete/plugin.d.ts +0 -15
  136. data/vendor/assets/javascripts/tom-select-rails/types/plugins/optgroup_columns/plugin.d.ts +0 -16
  137. data/vendor/assets/javascripts/tom-select-rails/types/plugins/remove_button/plugin.d.ts +0 -17
  138. data/vendor/assets/javascripts/tom-select-rails/types/plugins/remove_button/types.d.ts +0 -6
  139. data/vendor/assets/javascripts/tom-select-rails/types/plugins/restore_on_backspace/plugin.d.ts +0 -21
  140. data/vendor/assets/javascripts/tom-select-rails/types/plugins/virtual_scroll/plugin.d.ts +0 -16
  141. data/vendor/assets/javascripts/tom-select-rails/types/tom-select.complete.d.ts +0 -2
  142. data/vendor/assets/javascripts/tom-select-rails/types/tom-select.d.ts +0 -594
  143. data/vendor/assets/javascripts/tom-select-rails/types/tom-select.popular.d.ts +0 -2
  144. data/vendor/assets/javascripts/tom-select-rails/types/types/core.d.ts +0 -49
  145. data/vendor/assets/javascripts/tom-select-rails/types/types/index.d.ts +0 -2
  146. data/vendor/assets/javascripts/tom-select-rails/types/types/settings.d.ts +0 -79
  147. data/vendor/assets/javascripts/tom-select-rails/types/utils.d.ts +0 -95
  148. data/vendor/assets/javascripts/tom-select-rails/types/vanilla.d.ts +0 -76
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Tom Select v2.4.3
2
+ * Tom Select v2.5.1
3
3
  * Licensed under the Apache License, Version 2.0 (the "License");
4
4
  */
5
5
 
@@ -1502,6 +1502,7 @@
1502
1502
  create: null,
1503
1503
  createOnBlur: false,
1504
1504
  createFilter: null,
1505
+ clearAfterSelect: false,
1505
1506
  highlight: true,
1506
1507
  openOnFocus: true,
1507
1508
  shouldOpen: null,
@@ -1816,7 +1817,7 @@
1816
1817
  control_input = getDom(settings.controlInput);
1817
1818
 
1818
1819
  // set attributes
1819
- var attrs = ['autocorrect', 'autocapitalize', 'autocomplete', 'spellcheck'];
1820
+ var attrs = ['autocorrect', 'autocapitalize', 'autocomplete', 'spellcheck', 'aria-label'];
1820
1821
  iterate(attrs, attr => {
1821
1822
  if (input.getAttribute(attr)) {
1822
1823
  setAttr(control_input, {
@@ -1889,6 +1890,8 @@
1889
1890
  });
1890
1891
  }
1891
1892
  wrapper.style.width = input.style.width;
1893
+ wrapper.style.minWidth = input.style.minWidth;
1894
+ wrapper.style.maxWidth = input.style.maxWidth;
1892
1895
  if (self.plugins.names.length) {
1893
1896
  const classes_plugins = 'plugin-' + self.plugins.names.join(' plugin-');
1894
1897
  addClasses([wrapper, dropdown], classes_plugins);
@@ -1985,10 +1988,19 @@
1985
1988
  self.positionDropdown();
1986
1989
  }
1987
1990
  };
1991
+ const input_invalid = () => {
1992
+ if (self.isValid) {
1993
+ self.isValid = false;
1994
+ self.isInvalid = true;
1995
+ self.refreshState();
1996
+ }
1997
+ };
1998
+ addEvent(input, 'invalid', input_invalid);
1988
1999
  addEvent(document, 'mousedown', doc_mousedown);
1989
2000
  addEvent(window, 'scroll', win_scroll, passive_event);
1990
2001
  addEvent(window, 'resize', win_scroll, passive_event);
1991
2002
  this._destroy = () => {
2003
+ input.removeEventListener('invalid', input_invalid);
1992
2004
  document.removeEventListener('mousedown', doc_mousedown);
1993
2005
  window.removeEventListener('scroll', win_scroll);
1994
2006
  window.removeEventListener('resize', win_scroll);
@@ -2007,14 +2019,6 @@
2007
2019
  settings.items = [];
2008
2020
  delete settings.optgroups;
2009
2021
  delete settings.options;
2010
- addEvent(input, 'invalid', () => {
2011
- if (self.isValid) {
2012
- self.isValid = false;
2013
- self.isInvalid = true;
2014
- self.refreshState();
2015
- }
2016
- });
2017
- self.updateOriginalInput();
2018
2022
  self.refreshItems();
2019
2023
  self.close(false);
2020
2024
  self.inputState();
@@ -2129,7 +2133,8 @@
2129
2133
  sync(get_settings = true) {
2130
2134
  const self = this;
2131
2135
  const settings = get_settings ? getSettings(self.input, {
2132
- delimiter: self.settings.delimiter
2136
+ delimiter: self.settings.delimiter,
2137
+ allowEmptyOption: self.settings.allowEmptyOption
2133
2138
  }) : self.settings;
2134
2139
  self.setupOptions(settings.options, settings.optgroups);
2135
2140
  self.setValue(settings.items || [], true); // silent prevents recursion
@@ -2316,8 +2321,7 @@
2316
2321
  // prevent default [tab] behaviour of jump to the next field
2317
2322
  // if select isFull, then the dropdown won't be open and [tab] will work normally
2318
2323
  preventDefault(e);
2319
- }
2320
- if (self.settings.create && self.createItem()) {
2324
+ } else if (self.settings.create && self.createItem()) {
2321
2325
  preventDefault(e);
2322
2326
  }
2323
2327
  }
@@ -2441,6 +2445,8 @@
2441
2445
  self.createItem(null, () => {
2442
2446
  if (self.settings.closeAfterSelect) {
2443
2447
  self.close();
2448
+ } else if (self.settings.clearAfterSelect) {
2449
+ self.setTextboxValue();
2444
2450
  }
2445
2451
  });
2446
2452
  } else {
@@ -2450,6 +2456,8 @@
2450
2456
  self.addItem(value);
2451
2457
  if (self.settings.closeAfterSelect) {
2452
2458
  self.close();
2459
+ } else if (self.settings.clearAfterSelect) {
2460
+ self.setTextboxValue();
2453
2461
  }
2454
2462
  if (!self.settings.hideSelected && evt.type && /click/.test(evt.type)) {
2455
2463
  self.setActiveOption(option);
@@ -2881,6 +2889,11 @@
2881
2889
  // perform search
2882
2890
  if (query !== self.lastQuery) {
2883
2891
  self.lastQuery = query;
2892
+ // temp fix for https://github.com/orchidjs/tom-select/issues/987
2893
+ // UI crashed when more than 30 same chars in a row, prevent search and return empt result
2894
+ if (/(.)\1{15,}/.test(query)) {
2895
+ query = '';
2896
+ }
2884
2897
  result = self.sifter.search(query, Object.assign(options, {
2885
2898
  score: calculateScore
2886
2899
  }));
@@ -3443,6 +3456,11 @@
3443
3456
  } else if (!self.isPending) {
3444
3457
  self.positionDropdown();
3445
3458
  }
3459
+
3460
+ //remove input value when enabled
3461
+ if (self.settings.clearAfterSelect) {
3462
+ self.setTextboxValue();
3463
+ }
3446
3464
  self.trigger('item_add', hashed, item);
3447
3465
  if (!self.isPending) {
3448
3466
  self.updateOriginalInput({
@@ -3513,6 +3531,12 @@
3513
3531
  var output;
3514
3532
  input = input || self.inputValue();
3515
3533
  if (!self.canCreate(input)) {
3534
+ const hash = hash_key(input);
3535
+ if (hash) {
3536
+ if (this.options[input]) {
3537
+ self.addItem(input);
3538
+ }
3539
+ }
3516
3540
  callback();
3517
3541
  return false;
3518
3542
  }
@@ -3832,7 +3856,7 @@
3832
3856
  const values = items.map(item => item.dataset.value);
3833
3857
 
3834
3858
  // allow the callback to abort
3835
- if (!values.length || typeof this.settings.onDelete === 'function' && this.settings.onDelete(values, evt) === false) {
3859
+ if (!values.length || typeof this.settings.onDelete === 'function' && this.settings.onDelete.call(this, values, evt) === false) {
3836
3860
  return false;
3837
3861
  }
3838
3862
  return true;
@@ -4210,6 +4234,7 @@
4210
4234
  self.settings.shouldOpen = true; // make sure the input is shown even if there are no options to display in the dropdown
4211
4235
 
4212
4236
  self.hook('before', 'setup', () => {
4237
+ var _self$input;
4213
4238
  self.focus_node = self.control;
4214
4239
  addClasses(self.control_input, 'dropdown-input');
4215
4240
  const div = getDom('<div class="dropdown-input-wrap">');
@@ -4220,6 +4245,15 @@
4220
4245
  const placeholder = getDom('<input class="items-placeholder" tabindex="-1" />');
4221
4246
  placeholder.placeholder = self.settings.placeholder || '';
4222
4247
  self.control.append(placeholder);
4248
+ /**
4249
+ * TomSelect renders a custom control with a focusable <input class="items-placeholder">.
4250
+ * The source <select>'s aria-label is not automatically propagated to that input,
4251
+ * which triggers "Missing form label" accessibility warnings.
4252
+ * This helper copies the label from the <select> onto the generated input.
4253
+ */
4254
+ const label = (_self$input = self.input) == null ? void 0 : _self$input.getAttribute('aria-label');
4255
+ if (!label) return;
4256
+ placeholder.setAttribute('aria-label', label);
4223
4257
  });
4224
4258
  self.on('initialize', () => {
4225
4259
  // set tabIndex on control to -1, otherwise [shift+tab] will put focus right back on control_input