lucos_search_component 1.0.13 → 1.0.15

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/dist/index.js CHANGED
@@ -1472,6 +1472,7 @@ var defaults = {
1472
1472
  create: null,
1473
1473
  createOnBlur: false,
1474
1474
  createFilter: null,
1475
+ clearAfterSelect: false,
1475
1476
  highlight: true,
1476
1477
  openOnFocus: true,
1477
1478
  shouldOpen: null,
@@ -1843,6 +1844,8 @@ class TomSelect extends MicroPlugin(MicroEvent) {
1843
1844
  setAttr$1(dropdown_content, { 'aria-labelledby': label_id });
1844
1845
  }
1845
1846
  wrapper.style.width = input.style.width;
1847
+ wrapper.style.minWidth = input.style.minWidth;
1848
+ wrapper.style.maxWidth = input.style.maxWidth;
1846
1849
  if (self.plugins.names.length) {
1847
1850
  const classes_plugins = 'plugin-' + self.plugins.names.join(' plugin-');
1848
1851
  addClasses$2([wrapper, dropdown], classes_plugins);
@@ -1927,10 +1930,19 @@ class TomSelect extends MicroPlugin(MicroEvent) {
1927
1930
  self.positionDropdown();
1928
1931
  }
1929
1932
  };
1933
+ const input_invalid = () => {
1934
+ if (self.isValid) {
1935
+ self.isValid = false;
1936
+ self.isInvalid = true;
1937
+ self.refreshState();
1938
+ }
1939
+ };
1940
+ addEvent$5(input, 'invalid', input_invalid);
1930
1941
  addEvent$5(document, 'mousedown', doc_mousedown);
1931
1942
  addEvent$5(window, 'scroll', win_scroll, passive_event);
1932
1943
  addEvent$5(window, 'resize', win_scroll, passive_event);
1933
1944
  this._destroy = () => {
1945
+ input.removeEventListener('invalid', input_invalid);
1934
1946
  document.removeEventListener('mousedown', doc_mousedown);
1935
1947
  window.removeEventListener('scroll', win_scroll);
1936
1948
  window.removeEventListener('resize', win_scroll);
@@ -1949,13 +1961,6 @@ class TomSelect extends MicroPlugin(MicroEvent) {
1949
1961
  settings.items = [];
1950
1962
  delete settings.optgroups;
1951
1963
  delete settings.options;
1952
- addEvent$5(input, 'invalid', () => {
1953
- if (self.isValid) {
1954
- self.isValid = false;
1955
- self.isInvalid = true;
1956
- self.refreshState();
1957
- }
1958
- });
1959
1964
  self.refreshItems();
1960
1965
  self.close(false);
1961
1966
  self.inputState();
@@ -2066,7 +2071,7 @@ class TomSelect extends MicroPlugin(MicroEvent) {
2066
2071
  */
2067
2072
  sync(get_settings = true) {
2068
2073
  const self = this;
2069
- const settings = get_settings ? getSettings(self.input, { delimiter: self.settings.delimiter }) : self.settings;
2074
+ const settings = get_settings ? getSettings(self.input, { delimiter: self.settings.delimiter, allowEmptyOption: self.settings.allowEmptyOption }) : self.settings;
2070
2075
  self.setupOptions(settings.options, settings.optgroups);
2071
2076
  self.setValue(settings.items || [], true); // silent prevents recursion
2072
2077
  self.lastQuery = null; // so updated options will be displayed in dropdown
@@ -2241,7 +2246,7 @@ class TomSelect extends MicroPlugin(MicroEvent) {
2241
2246
  // if select isFull, then the dropdown won't be open and [tab] will work normally
2242
2247
  preventDefault$5(e);
2243
2248
  }
2244
- if (self.settings.create && self.createItem()) {
2249
+ else if (self.settings.create && self.createItem()) {
2245
2250
  preventDefault$5(e);
2246
2251
  }
2247
2252
  }
@@ -2365,6 +2370,9 @@ class TomSelect extends MicroPlugin(MicroEvent) {
2365
2370
  if (self.settings.closeAfterSelect) {
2366
2371
  self.close();
2367
2372
  }
2373
+ else if (self.settings.clearAfterSelect) {
2374
+ self.setTextboxValue();
2375
+ }
2368
2376
  });
2369
2377
  }
2370
2378
  else {
@@ -2375,6 +2383,9 @@ class TomSelect extends MicroPlugin(MicroEvent) {
2375
2383
  if (self.settings.closeAfterSelect) {
2376
2384
  self.close();
2377
2385
  }
2386
+ else if (self.settings.clearAfterSelect) {
2387
+ self.setTextboxValue();
2388
+ }
2378
2389
  if (!self.settings.hideSelected && evt.type && /click/.test(evt.type)) {
2379
2390
  self.setActiveOption(option);
2380
2391
  }
@@ -2781,6 +2792,11 @@ class TomSelect extends MicroPlugin(MicroEvent) {
2781
2792
  // perform search
2782
2793
  if (query !== self.lastQuery) {
2783
2794
  self.lastQuery = query;
2795
+ // temp fix for https://github.com/orchidjs/tom-select/issues/987
2796
+ // UI crashed when more than 30 same chars in a row, prevent search and return empt result
2797
+ if (/(.)\1{15,}/.test(query)) {
2798
+ query = '';
2799
+ }
2784
2800
  result = self.sifter.search(query, Object.assign(options, { score: calculateScore }));
2785
2801
  self.currentResults = result;
2786
2802
  }
@@ -2791,7 +2807,7 @@ class TomSelect extends MicroPlugin(MicroEvent) {
2791
2807
  if (self.settings.hideSelected) {
2792
2808
  result.items = result.items.filter((item) => {
2793
2809
  let hashed = hash_key$1(item.id);
2794
- return !(hashed && self.items.indexOf(hashed) !== -1);
2810
+ return !(hashed !== null && self.items.indexOf(hashed) !== -1);
2795
2811
  });
2796
2812
  }
2797
2813
  return result;
@@ -2863,6 +2879,13 @@ class TomSelect extends MicroPlugin(MicroEvent) {
2863
2879
  optgroup = optgroups[j];
2864
2880
  let order = option.$order;
2865
2881
  let self_optgroup = self.optgroups[optgroup];
2882
+ if (self_optgroup === undefined && typeof self.settings.optionGroupRegister === 'function') {
2883
+ var regGroup;
2884
+ if (regGroup = self.settings.optionGroupRegister.apply(self, [optgroup])) {
2885
+ self.registerOptionGroup(regGroup);
2886
+ }
2887
+ }
2888
+ self_optgroup = self.optgroups[optgroup];
2866
2889
  if (self_optgroup === undefined) {
2867
2890
  optgroup = '';
2868
2891
  }
@@ -3296,6 +3319,10 @@ class TomSelect extends MicroPlugin(MicroEvent) {
3296
3319
  self.setActiveOption(next);
3297
3320
  }
3298
3321
  }
3322
+ //remove input value when enabled
3323
+ if (self.settings.clearAfterSelect) {
3324
+ self.setTextboxValue();
3325
+ }
3299
3326
  // refreshOptions after setActiveOption(),
3300
3327
  // otherwise setActiveOption() will be called by refreshOptions() with the wrong value
3301
3328
  if (!self.isPending && !self.settings.closeAfterSelect) {
@@ -3373,6 +3400,12 @@ class TomSelect extends MicroPlugin(MicroEvent) {
3373
3400
  var output;
3374
3401
  input = input || self.inputValue();
3375
3402
  if (!self.canCreate(input)) {
3403
+ const hash = hash_key$1(input);
3404
+ if (hash) {
3405
+ if (this.options[input]) {
3406
+ self.addItem(input);
3407
+ }
3408
+ }
3376
3409
  callback();
3377
3410
  return false;
3378
3411
  }
@@ -3671,7 +3704,7 @@ class TomSelect extends MicroPlugin(MicroEvent) {
3671
3704
  shouldDelete(items, evt) {
3672
3705
  const values = items.map(item => item.dataset.value);
3673
3706
  // allow the callback to abort
3674
- if (!values.length || (typeof this.settings.onDelete === 'function' && this.settings.onDelete(values, evt) === false)) {
3707
+ if (!values.length || (typeof this.settings.onDelete === 'function' && this.settings.onDelete.call(this, values, evt) === false)) {
3675
3708
  return false;
3676
3709
  }
3677
3710
  return true;
@@ -3942,7 +3975,7 @@ class TomSelect extends MicroPlugin(MicroEvent) {
3942
3975
  }
3943
3976
 
3944
3977
  /**
3945
- * Tom Select v2.4.4
3978
+ * Tom Select v2.5.2
3946
3979
  * Licensed under the Apache License, Version 2.0 (the "License");
3947
3980
  */
3948
3981
 
@@ -3991,7 +4024,7 @@ function plugin$d () {
3991
4024
  }
3992
4025
 
3993
4026
  /**
3994
- * Tom Select v2.4.4
4027
+ * Tom Select v2.5.2
3995
4028
  * Licensed under the Apache License, Version 2.0 (the "License");
3996
4029
  */
3997
4030
 
@@ -4168,7 +4201,7 @@ function plugin$c (userOptions) {
4168
4201
  }
4169
4202
 
4170
4203
  /**
4171
- * Tom Select v2.4.4
4204
+ * Tom Select v2.5.2
4172
4205
  * Licensed under the Apache License, Version 2.0 (the "License");
4173
4206
  */
4174
4207
 
@@ -4222,7 +4255,7 @@ function plugin$b (userOptions) {
4222
4255
  role: 'button',
4223
4256
  tabindex: 0,
4224
4257
  html: data => {
4225
- return `<div class="${data.className}" title="${data.title}" role="${data.role}" tabindex="${data.tabindex}">&#10799;</div>`;
4258
+ return `<div class="${data.className}" title="${data.title}" role="${data.role}" tabindex="${data.tabindex}">&times;</div>`;
4226
4259
  }
4227
4260
  }, userOptions);
4228
4261
  self.on('initialize', () => {
@@ -4233,6 +4266,7 @@ function plugin$b (userOptions) {
4233
4266
  if (self.settings.mode === 'single' && self.settings.allowEmptyOption) {
4234
4267
  self.addItem('');
4235
4268
  }
4269
+ self.refreshOptions(false);
4236
4270
  evt.preventDefault();
4237
4271
  evt.stopPropagation();
4238
4272
  });
@@ -4241,7 +4275,7 @@ function plugin$b (userOptions) {
4241
4275
  }
4242
4276
 
4243
4277
  /**
4244
- * Tom Select v2.4.4
4278
+ * Tom Select v2.5.2
4245
4279
  * Licensed under the Apache License, Version 2.0 (the "License");
4246
4280
  */
4247
4281
 
@@ -4370,7 +4404,7 @@ const insertBefore = (referenceNode, newNode) => {
4370
4404
  const isBefore = (referenceNode, newNode) => {
4371
4405
  do {
4372
4406
  var _newNode;
4373
- newNode = (_newNode = newNode) == null ? undefined : _newNode.previousElementSibling;
4407
+ newNode = (_newNode = newNode) == null ? void 0 : _newNode.previousElementSibling;
4374
4408
  if (referenceNode == newNode) {
4375
4409
  return true;
4376
4410
  }
@@ -4459,7 +4493,7 @@ function plugin$a () {
4459
4493
  }
4460
4494
 
4461
4495
  /**
4462
- * Tom Select v2.4.4
4496
+ * Tom Select v2.5.2
4463
4497
  * Licensed under the Apache License, Version 2.0 (the "License");
4464
4498
  */
4465
4499
 
@@ -4559,7 +4593,7 @@ function plugin$9 (userOptions) {
4559
4593
  }
4560
4594
 
4561
4595
  /**
4562
- * Tom Select v2.4.4
4596
+ * Tom Select v2.5.2
4563
4597
  * Licensed under the Apache License, Version 2.0 (the "License");
4564
4598
  */
4565
4599
 
@@ -4720,7 +4754,7 @@ function plugin$8 () {
4720
4754
  }
4721
4755
 
4722
4756
  /**
4723
- * Tom Select v2.4.4
4757
+ * Tom Select v2.5.2
4724
4758
  * Licensed under the Apache License, Version 2.0 (the "License");
4725
4759
  */
4726
4760
 
@@ -4875,6 +4909,7 @@ function plugin$7 () {
4875
4909
  self.settings.shouldOpen = true; // make sure the input is shown even if there are no options to display in the dropdown
4876
4910
 
4877
4911
  self.hook('before', 'setup', () => {
4912
+ var _self$input;
4878
4913
  self.focus_node = self.control;
4879
4914
  addClasses$1(self.control_input, 'dropdown-input');
4880
4915
  const div = getDom$1('<div class="dropdown-input-wrap">');
@@ -4885,6 +4920,15 @@ function plugin$7 () {
4885
4920
  const placeholder = getDom$1('<input class="items-placeholder" tabindex="-1" />');
4886
4921
  placeholder.placeholder = self.settings.placeholder || '';
4887
4922
  self.control.append(placeholder);
4923
+ /**
4924
+ * TomSelect renders a custom control with a focusable <input class="items-placeholder">.
4925
+ * The source <select>'s aria-label is not automatically propagated to that input,
4926
+ * which triggers "Missing form label" accessibility warnings.
4927
+ * This helper copies the label from the <select> onto the generated input.
4928
+ */
4929
+ const label = (_self$input = self.input) == null ? void 0 : _self$input.getAttribute('aria-label');
4930
+ if (!label) return;
4931
+ placeholder.setAttribute('aria-label', label);
4888
4932
  });
4889
4933
  self.on('initialize', () => {
4890
4934
  // set tabIndex on control to -1, otherwise [shift+tab] will put focus right back on control_input
@@ -4932,7 +4976,7 @@ function plugin$7 () {
4932
4976
  }
4933
4977
 
4934
4978
  /**
4935
- * Tom Select v2.4.4
4979
+ * Tom Select v2.5.2
4936
4980
  * Licensed under the Apache License, Version 2.0 (the "License");
4937
4981
  */
4938
4982
 
@@ -5004,7 +5048,7 @@ function plugin$6 () {
5004
5048
  }
5005
5049
 
5006
5050
  /**
5007
- * Tom Select v2.4.4
5051
+ * Tom Select v2.5.2
5008
5052
  * Licensed under the Apache License, Version 2.0 (the "License");
5009
5053
  */
5010
5054
 
@@ -5034,7 +5078,7 @@ function plugin$5 () {
5034
5078
  }
5035
5079
 
5036
5080
  /**
5037
- * Tom Select v2.4.4
5081
+ * Tom Select v2.5.2
5038
5082
  * Licensed under the Apache License, Version 2.0 (the "License");
5039
5083
  */
5040
5084
 
@@ -5058,7 +5102,7 @@ function plugin$4 () {
5058
5102
  }
5059
5103
 
5060
5104
  /**
5061
- * Tom Select v2.4.4
5105
+ * Tom Select v2.5.2
5062
5106
  * Licensed under the Apache License, Version 2.0 (the "License");
5063
5107
  */
5064
5108
 
@@ -5142,7 +5186,7 @@ function plugin$3 () {
5142
5186
  }
5143
5187
 
5144
5188
  /**
5145
- * Tom Select v2.4.4
5189
+ * Tom Select v2.5.2
5146
5190
  * Licensed under the Apache License, Version 2.0 (the "License");
5147
5191
  */
5148
5192
 
@@ -5274,7 +5318,7 @@ function plugin$2 (userOptions) {
5274
5318
  }
5275
5319
 
5276
5320
  /**
5277
- * Tom Select v2.4.4
5321
+ * Tom Select v2.5.2
5278
5322
  * Licensed under the Apache License, Version 2.0 (the "License");
5279
5323
  */
5280
5324
 
@@ -5314,7 +5358,7 @@ function plugin$1 (userOptions) {
5314
5358
  }
5315
5359
 
5316
5360
  /**
5317
- * Tom Select v2.4.4
5361
+ * Tom Select v2.5.2
5318
5362
  * Licensed under the Apache License, Version 2.0 (the "License");
5319
5363
  */
5320
5364
 
@@ -5598,7 +5642,7 @@ TomSelect.define('remove_button', plugin$2);
5598
5642
  TomSelect.define('restore_on_backspace', plugin$1);
5599
5643
  TomSelect.define('virtual_scroll', plugin);
5600
5644
 
5601
- var tomSelectStylesheet = "/**\n * tom-select.css (v2.4.4)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n.ts-control {\n border: 1px solid #d0d0d0;\n padding: 8px 8px;\n width: 100%;\n overflow: hidden;\n position: relative;\n z-index: 1;\n box-sizing: border-box;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.1);\n border-radius: 3px;\n display: flex;\n flex-wrap: wrap;\n}\n.ts-wrapper.multi.has-items .ts-control {\n padding: calc(8px - 2px - 1px) 8px calc(8px - 2px - 3px - 1px);\n}\n.full .ts-control {\n background-color: #fff;\n}\n.disabled .ts-control, .disabled .ts-control * {\n cursor: default !important;\n}\n.focus .ts-control {\n box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.15);\n}\n.ts-control > * {\n vertical-align: baseline;\n display: inline-block;\n}\n.ts-wrapper.multi .ts-control > div {\n cursor: pointer;\n margin: 0 3px 3px 0;\n padding: 2px 6px;\n background: #1da7ee;\n color: #fff;\n border: 1px solid #0073bb;\n}\n.ts-wrapper.multi .ts-control > div.active {\n background: #92c836;\n color: #fff;\n border: 1px solid #00578d;\n}\n.ts-wrapper.multi.disabled .ts-control > div, .ts-wrapper.multi.disabled .ts-control > div.active {\n color: white;\n background: #d2d2d2;\n border: 1px solid #aaaaaa;\n}\n.ts-control > input {\n flex: 1 1 auto;\n min-width: 7rem;\n display: inline-block !important;\n padding: 0 !important;\n min-height: 0 !important;\n max-height: none !important;\n max-width: 100% !important;\n margin: 0 !important;\n text-indent: 0 !important;\n border: 0 none !important;\n background: none !important;\n line-height: inherit !important;\n -webkit-user-select: auto !important;\n -moz-user-select: auto !important;\n -ms-user-select: auto !important;\n user-select: auto !important;\n box-shadow: none !important;\n}\n.ts-control > input::-ms-clear {\n display: none;\n}\n.ts-control > input:focus {\n outline: none !important;\n}\n.has-items .ts-control > input {\n margin: 0 4px !important;\n}\n.ts-control.rtl {\n text-align: right;\n}\n.ts-control.rtl.single .ts-control:after {\n left: 15px;\n right: auto;\n}\n.ts-control.rtl .ts-control > input {\n margin: 0 4px 0 -2px !important;\n}\n.disabled .ts-control {\n opacity: 0.5;\n background-color: #fafafa;\n}\n.input-hidden .ts-control > input {\n opacity: 0;\n position: absolute;\n left: -10000px;\n}\n\n.ts-dropdown {\n position: absolute;\n top: 100%;\n left: 0;\n width: 100%;\n z-index: 10;\n border: 1px solid #d0d0d0;\n background: #fff;\n margin: 0.25rem 0 0;\n border-top: 0 none;\n box-sizing: border-box;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n border-radius: 0 0 3px 3px;\n}\n.ts-dropdown [data-selectable] {\n cursor: pointer;\n overflow: hidden;\n}\n.ts-dropdown [data-selectable] .highlight {\n background: rgba(125, 168, 208, 0.2);\n border-radius: 1px;\n}\n.ts-dropdown .option,\n.ts-dropdown .optgroup-header,\n.ts-dropdown .no-results,\n.ts-dropdown .create {\n padding: 5px 8px;\n}\n.ts-dropdown .option, .ts-dropdown [data-disabled], .ts-dropdown [data-disabled] [data-selectable].option {\n cursor: inherit;\n opacity: 0.5;\n}\n.ts-dropdown [data-selectable].option {\n opacity: 1;\n cursor: pointer;\n}\n.ts-dropdown .optgroup:first-child .optgroup-header {\n border-top: 0 none;\n}\n.ts-dropdown .optgroup-header {\n color: #303030;\n background: #fff;\n cursor: default;\n}\n.ts-dropdown .active {\n background-color: #f5fafd;\n color: #495c68;\n}\n.ts-dropdown .active.create {\n color: #495c68;\n}\n.ts-dropdown .create {\n color: rgba(48, 48, 48, 0.5);\n}\n.ts-dropdown .spinner {\n display: inline-block;\n width: 30px;\n height: 30px;\n margin: 5px 8px;\n}\n.ts-dropdown .spinner::after {\n content: \" \";\n display: block;\n width: 24px;\n height: 24px;\n margin: 3px;\n border-radius: 50%;\n border: 5px solid #d0d0d0;\n border-color: #d0d0d0 transparent #d0d0d0 transparent;\n animation: lds-dual-ring 1.2s linear infinite;\n}\n@keyframes lds-dual-ring {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n\n.ts-dropdown-content {\n overflow: hidden auto;\n max-height: 200px;\n scroll-behavior: smooth;\n}\n\n.ts-wrapper.plugin-drag_drop .ts-dragging {\n color: transparent !important;\n}\n.ts-wrapper.plugin-drag_drop .ts-dragging > * {\n visibility: hidden !important;\n}\n\n.plugin-checkbox_options:not(.rtl) .option input {\n margin-right: 0.5rem;\n}\n\n.plugin-checkbox_options.rtl .option input {\n margin-left: 0.5rem;\n}\n\n/* stylelint-disable function-name-case */\n.plugin-clear_button {\n --ts-pr-clear-button: 1em;\n}\n.plugin-clear_button .clear-button {\n opacity: 0;\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n right: calc(8px - 6px);\n margin-right: 0 !important;\n background: transparent !important;\n transition: opacity 0.5s;\n cursor: pointer;\n}\n.plugin-clear_button.form-select .clear-button, .plugin-clear_button.single .clear-button {\n right: max(var(--ts-pr-caret), 8px);\n}\n.plugin-clear_button.focus.has-items .clear-button, .plugin-clear_button:not(.disabled):hover.has-items .clear-button {\n opacity: 1;\n}\n\n.ts-wrapper .dropdown-header {\n position: relative;\n padding: 10px 8px;\n border-bottom: 1px solid #d0d0d0;\n background: color-mix(#fff, #d0d0d0, 85%);\n border-radius: 3px 3px 0 0;\n}\n.ts-wrapper .dropdown-header-close {\n position: absolute;\n right: 8px;\n top: 50%;\n color: #303030;\n opacity: 0.4;\n margin-top: -12px;\n line-height: 20px;\n font-size: 20px !important;\n}\n.ts-wrapper .dropdown-header-close:hover {\n color: black;\n}\n\n.plugin-dropdown_input.focus.dropdown-active .ts-control {\n box-shadow: none;\n border: 1px solid #d0d0d0;\n}\n.plugin-dropdown_input .dropdown-input {\n border: 1px solid #d0d0d0;\n border-width: 0 0 1px;\n display: block;\n padding: 8px 8px;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.1);\n width: 100%;\n background: transparent;\n}\n.plugin-dropdown_input .items-placeholder {\n border: 0 none !important;\n box-shadow: none !important;\n width: 100%;\n}\n.plugin-dropdown_input.has-items .items-placeholder, .plugin-dropdown_input.dropdown-active .items-placeholder {\n display: none !important;\n}\n\n.ts-wrapper.plugin-input_autogrow.has-items .ts-control > input {\n min-width: 0;\n}\n.ts-wrapper.plugin-input_autogrow.has-items.focus .ts-control > input {\n flex: none;\n min-width: 4px;\n}\n.ts-wrapper.plugin-input_autogrow.has-items.focus .ts-control > input::-ms-input-placeholder {\n color: transparent;\n}\n.ts-wrapper.plugin-input_autogrow.has-items.focus .ts-control > input::placeholder {\n color: transparent;\n}\n\n.ts-dropdown.plugin-optgroup_columns .ts-dropdown-content {\n display: flex;\n}\n.ts-dropdown.plugin-optgroup_columns .optgroup {\n border-right: 1px solid #f2f2f2;\n border-top: 0 none;\n flex-grow: 1;\n flex-basis: 0;\n min-width: 0;\n}\n.ts-dropdown.plugin-optgroup_columns .optgroup:last-child {\n border-right: 0 none;\n}\n.ts-dropdown.plugin-optgroup_columns .optgroup::before {\n display: none;\n}\n.ts-dropdown.plugin-optgroup_columns .optgroup-header {\n border-top: 0 none;\n}\n\n.ts-wrapper.plugin-remove_button .item {\n display: inline-flex;\n align-items: center;\n}\n.ts-wrapper.plugin-remove_button .item .remove {\n color: inherit;\n text-decoration: none;\n vertical-align: middle;\n display: inline-block;\n padding: 0 6px;\n border-radius: 0 2px 2px 0;\n box-sizing: border-box;\n}\n.ts-wrapper.plugin-remove_button .item .remove:hover {\n background: rgba(0, 0, 0, 0.05);\n}\n.ts-wrapper.plugin-remove_button.disabled .item .remove:hover {\n background: none;\n}\n.ts-wrapper.plugin-remove_button .remove-single {\n position: absolute;\n right: 0;\n top: 0;\n font-size: 23px;\n}\n\n.ts-wrapper.plugin-remove_button:not(.rtl) .item {\n padding-right: 0 !important;\n}\n.ts-wrapper.plugin-remove_button:not(.rtl) .item .remove {\n border-left: 1px solid #0073bb;\n margin-left: 6px;\n}\n.ts-wrapper.plugin-remove_button:not(.rtl) .item.active .remove {\n border-left-color: #00578d;\n}\n.ts-wrapper.plugin-remove_button:not(.rtl).disabled .item .remove {\n border-left-color: #aaaaaa;\n}\n\n.ts-wrapper.plugin-remove_button.rtl .item {\n padding-left: 0 !important;\n}\n.ts-wrapper.plugin-remove_button.rtl .item .remove {\n border-right: 1px solid #0073bb;\n margin-right: 6px;\n}\n.ts-wrapper.plugin-remove_button.rtl .item.active .remove {\n border-right-color: #00578d;\n}\n.ts-wrapper.plugin-remove_button.rtl.disabled .item .remove {\n border-right-color: #aaaaaa;\n}\n\n:root {\n --ts-pr-clear-button: 0px;\n --ts-pr-caret: 0px;\n --ts-pr-min: .75rem;\n}\n\n.ts-wrapper.single .ts-control, .ts-wrapper.single .ts-control input {\n cursor: pointer;\n}\n\n.ts-control:not(.rtl) {\n padding-right: max(var(--ts-pr-min), var(--ts-pr-clear-button) + var(--ts-pr-caret)) !important;\n}\n\n.ts-control.rtl {\n padding-left: max(var(--ts-pr-min), var(--ts-pr-clear-button) + var(--ts-pr-caret)) !important;\n}\n\n.ts-wrapper {\n position: relative;\n}\n\n.ts-dropdown,\n.ts-control,\n.ts-control input {\n color: #303030;\n font-family: inherit;\n font-size: 13px;\n line-height: 18px;\n}\n\n.ts-control,\n.ts-wrapper.single.input-active .ts-control {\n background: #fff;\n cursor: text;\n}\n\n.ts-hidden-accessible {\n border: 0 !important;\n clip: rect(0 0 0 0) !important;\n -webkit-clip-path: inset(50%) !important;\n clip-path: inset(50%) !important;\n overflow: hidden !important;\n padding: 0 !important;\n position: absolute !important;\n width: 1px !important;\n white-space: nowrap !important;\n}\n\n.ts-wrapper.single .ts-control {\n --ts-pr-caret: 2rem;\n}\n.ts-wrapper.single .ts-control::after {\n content: \" \";\n display: block;\n position: absolute;\n top: 50%;\n margin-top: -3px;\n width: 0;\n height: 0;\n border-style: solid;\n border-width: 5px 5px 0 5px;\n border-color: #808080 transparent transparent transparent;\n}\n.ts-wrapper.single .ts-control:not(.rtl)::after {\n right: 15px;\n}\n.ts-wrapper.single .ts-control.rtl::after {\n left: 15px;\n}\n.ts-wrapper.single.dropdown-active .ts-control::after {\n margin-top: -4px;\n border-width: 0 5px 5px 5px;\n border-color: transparent transparent #808080 transparent;\n}\n.ts-wrapper.single.input-active .ts-control, .ts-wrapper.single.input-active .ts-control input {\n cursor: text;\n}\n\n.ts-wrapper {\n display: flex;\n min-height: 36px;\n}\n.ts-wrapper.multi.has-items .ts-control {\n padding-left: 5px;\n --ts-pr-min: $padding-x;\n}\n.ts-wrapper.multi .ts-control [data-value] {\n text-shadow: 0 1px 0 rgba(0, 51, 83, 0.3);\n border-radius: 3px;\n background-color: color-mix(#1da7ee, #178ee9, 60%);\n background-image: linear-gradient(to bottom, #1da7ee, #178ee9);\n background-repeat: repeat-x;\n box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2), inset 0 1px rgba(255, 255, 255, 0.03);\n}\n.ts-wrapper.multi .ts-control [data-value].active {\n background-color: color-mix(#008fd8, #0075cf, 60%);\n background-image: linear-gradient(to bottom, #008fd8, #0075cf);\n background-repeat: repeat-x;\n}\n.ts-wrapper.multi.disabled .ts-control [data-value] {\n color: #999;\n text-shadow: none;\n background: none;\n box-shadow: none;\n}\n.ts-wrapper.multi.disabled .ts-control [data-value], .ts-wrapper.multi.disabled .ts-control [data-value] .remove {\n border-color: #e6e6e6;\n}\n.ts-wrapper.multi.disabled .ts-control [data-value] .remove {\n background: none;\n}\n.ts-wrapper.single .ts-control {\n box-shadow: 0 1px 0 rgba(0, 0, 0, 0.05), inset 0 1px 0 rgba(255, 255, 255, 0.8);\n background-color: color-mix(#fefefe, #f2f2f2, 60%);\n background-image: linear-gradient(to bottom, #fefefe, #f2f2f2);\n background-repeat: repeat-x;\n}\n\n.ts-wrapper.single .ts-control, .ts-dropdown.single {\n border-color: #b8b8b8;\n}\n\n.dropdown-active .ts-control {\n border-radius: 3px 3px 0 0;\n}\n\n.ts-dropdown .optgroup-header {\n padding-top: 7px;\n font-weight: bold;\n font-size: 0.85em;\n}\n.ts-dropdown .optgroup {\n border-top: 1px solid #f0f0f0;\n}\n.ts-dropdown .optgroup:first-child {\n border-top: 0 none;\n}\n/*# sourceMappingURL=tom-select.default.css.map */";
5645
+ var tomSelectStylesheet = "/**\n * tom-select.css (v2.5.2)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n.ts-control {\n border: 1px solid #d0d0d0;\n padding: 8px 8px;\n width: 100%;\n overflow: hidden;\n position: relative;\n z-index: 1;\n box-sizing: border-box;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.1);\n border-radius: 3px;\n display: flex;\n flex-wrap: wrap;\n}\n.ts-wrapper.multi.has-items .ts-control {\n padding: calc(8px - 2px - 1px) 8px calc(8px - 2px - 3px - 1px);\n}\n.full .ts-control {\n background-color: #fff;\n}\n.disabled .ts-control, .disabled .ts-control * {\n cursor: default !important;\n}\n.focus .ts-control {\n box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.15);\n}\n.ts-control > * {\n vertical-align: baseline;\n display: inline-block;\n}\n.ts-wrapper.multi .ts-control > div {\n cursor: pointer;\n margin: 0 3px 3px 0;\n padding: 2px 6px;\n background: #1da7ee;\n color: #fff;\n border: 1px solid #0073bb;\n overflow: auto;\n}\n.ts-wrapper.multi .ts-control > div.active {\n background: #92c836;\n color: #fff;\n border: 1px solid #00578d;\n}\n.ts-wrapper.multi.disabled .ts-control > div, .ts-wrapper.multi.disabled .ts-control > div.active {\n color: white;\n background: #d2d2d2;\n border: 1px solid #aaaaaa;\n}\n.ts-control > input {\n flex: 1 1 auto;\n min-width: 7rem;\n display: inline-block !important;\n padding: 0 !important;\n min-height: 0 !important;\n max-height: none !important;\n max-width: 100% !important;\n margin: 0 !important;\n text-indent: 0 !important;\n border: 0 none !important;\n background: none !important;\n line-height: inherit !important;\n -webkit-user-select: auto !important;\n -moz-user-select: auto !important;\n -ms-user-select: auto !important;\n user-select: auto !important;\n box-shadow: none !important;\n}\n.ts-control > input::-ms-clear {\n display: none;\n}\n.ts-control > input:focus {\n outline: none !important;\n}\n.has-items .ts-control > input {\n margin: 0px 4px !important;\n}\n.ts-control.rtl {\n text-align: right;\n}\n.ts-control.rtl.single .ts-control:after {\n left: 15px;\n right: auto;\n}\n.ts-control.rtl .ts-control > input {\n margin: 0px 4px 0px -2px !important;\n}\n.disabled .ts-control {\n opacity: 0.5;\n background-color: #fafafa;\n}\n.input-hidden .ts-control > input {\n opacity: 0;\n position: absolute;\n left: -10000px;\n}\n\n.ts-dropdown {\n position: absolute;\n top: 100%;\n left: 0;\n width: 100%;\n z-index: 10;\n border: 1px solid #d0d0d0;\n background: #fff;\n margin: 0.25rem 0 0;\n border-top: 0 none;\n box-sizing: border-box;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n border-radius: 0 0 3px 3px;\n}\n.ts-dropdown [data-selectable] {\n cursor: pointer;\n overflow: hidden;\n}\n.ts-dropdown [data-selectable] .highlight {\n background: rgba(125, 168, 208, 0.2);\n border-radius: 1px;\n}\n.ts-dropdown .option,\n.ts-dropdown .optgroup-header,\n.ts-dropdown .no-results,\n.ts-dropdown .create {\n padding: 5px 8px;\n}\n.ts-dropdown .option, .ts-dropdown [data-disabled], .ts-dropdown [data-disabled] [data-selectable].option {\n cursor: inherit;\n opacity: 0.5;\n}\n.ts-dropdown [data-selectable].option {\n opacity: 1;\n cursor: pointer;\n}\n.ts-dropdown .optgroup:first-child .optgroup-header {\n border-top: 0 none;\n}\n.ts-dropdown .optgroup-header {\n color: #303030;\n background: #fff;\n cursor: default;\n}\n.ts-dropdown .active {\n background-color: #f5fafd;\n color: #495c68;\n}\n.ts-dropdown .active.create {\n color: #495c68;\n}\n.ts-dropdown .create {\n color: rgba(48, 48, 48, 0.5);\n}\n.ts-dropdown .spinner {\n display: inline-block;\n width: 30px;\n height: 30px;\n margin: 5px 8px;\n}\n.ts-dropdown .spinner::after {\n content: \" \";\n display: block;\n width: 24px;\n height: 24px;\n margin: 3px;\n border-radius: 50%;\n border: 5px solid #d0d0d0;\n border-color: #d0d0d0 transparent #d0d0d0 transparent;\n animation: lds-dual-ring 1.2s linear infinite;\n}\n@keyframes lds-dual-ring {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n\n.ts-dropdown-content {\n overflow: hidden auto;\n max-height: 200px;\n scroll-behavior: smooth;\n}\n\n.ts-wrapper.plugin-drag_drop .ts-dragging {\n color: transparent !important;\n}\n.ts-wrapper.plugin-drag_drop .ts-dragging > * {\n visibility: hidden !important;\n}\n\n.plugin-checkbox_options:not(.rtl) .option input {\n margin-right: 0.5rem;\n}\n\n.plugin-checkbox_options.rtl .option input {\n margin-left: 0.5rem;\n}\n\n/* stylelint-disable function-name-case */\n.plugin-clear_button {\n --ts-pr-clear-button: 1em;\n}\n.plugin-clear_button .clear-button {\n opacity: 0;\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n right: calc(8px - 6px);\n margin-right: 0 !important;\n background: transparent !important;\n transition: opacity 0.5s;\n cursor: pointer;\n}\n.plugin-clear_button.form-select .clear-button, .plugin-clear_button.single .clear-button {\n right: max(var(--ts-pr-caret), 8px);\n}\n.plugin-clear_button.focus.has-items .clear-button, .plugin-clear_button:not(.disabled):hover.has-items .clear-button {\n opacity: 1;\n}\n\n.ts-wrapper .dropdown-header {\n position: relative;\n padding: 10px 8px;\n border-bottom: 1px solid #d0d0d0;\n background: color-mix(#fff, #d0d0d0, 85%);\n border-radius: 3px 3px 0 0;\n}\n.ts-wrapper .dropdown-header-close {\n position: absolute;\n right: 8px;\n top: 50%;\n color: #303030;\n opacity: 0.4;\n margin-top: -12px;\n line-height: 20px;\n font-size: 20px !important;\n}\n.ts-wrapper .dropdown-header-close:hover {\n color: black;\n}\n\n.plugin-dropdown_input.focus.dropdown-active .ts-control {\n box-shadow: none;\n border: 1px solid #d0d0d0;\n}\n.plugin-dropdown_input .dropdown-input {\n border: 1px solid #d0d0d0;\n border-width: 0 0 1px;\n display: block;\n padding: 8px 8px;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.1);\n width: 100%;\n background: transparent;\n}\n.plugin-dropdown_input .items-placeholder {\n border: 0 none !important;\n box-shadow: none !important;\n width: 100%;\n}\n.plugin-dropdown_input.has-items .items-placeholder, .plugin-dropdown_input.dropdown-active .items-placeholder {\n display: none !important;\n}\n\n.ts-wrapper.plugin-input_autogrow.has-items .ts-control > input {\n min-width: 0;\n}\n.ts-wrapper.plugin-input_autogrow.has-items.focus .ts-control > input {\n flex: none;\n min-width: 4px;\n}\n.ts-wrapper.plugin-input_autogrow.has-items.focus .ts-control > input::-ms-input-placeholder {\n color: transparent;\n}\n.ts-wrapper.plugin-input_autogrow.has-items.focus .ts-control > input::placeholder {\n color: transparent;\n}\n\n.ts-dropdown.plugin-optgroup_columns .ts-dropdown-content {\n display: flex;\n}\n.ts-dropdown.plugin-optgroup_columns .optgroup {\n border-right: 1px solid #f2f2f2;\n border-top: 0 none;\n flex-grow: 1;\n flex-basis: 0;\n min-width: 0;\n}\n.ts-dropdown.plugin-optgroup_columns .optgroup:last-child {\n border-right: 0 none;\n}\n.ts-dropdown.plugin-optgroup_columns .optgroup::before {\n display: none;\n}\n.ts-dropdown.plugin-optgroup_columns .optgroup-header {\n border-top: 0 none;\n}\n\n.ts-wrapper.plugin-remove_button .item {\n display: inline-flex;\n align-items: center;\n}\n.ts-wrapper.plugin-remove_button .item .remove {\n color: inherit;\n text-decoration: none;\n vertical-align: middle;\n display: inline-block;\n padding: 0 6px;\n border-radius: 0 2px 2px 0;\n box-sizing: border-box;\n}\n.ts-wrapper.plugin-remove_button .item .remove:hover {\n background: rgba(0, 0, 0, 0.05);\n}\n.ts-wrapper.plugin-remove_button.disabled .item .remove:hover {\n background: none;\n}\n.ts-wrapper.plugin-remove_button .remove-single {\n position: absolute;\n right: 0;\n top: 0;\n font-size: 23px;\n}\n\n.ts-wrapper.plugin-remove_button:not(.rtl) .item {\n padding-right: 0 !important;\n}\n.ts-wrapper.plugin-remove_button:not(.rtl) .item .remove {\n border-left: 1px solid #0073bb;\n margin-left: 6px;\n}\n.ts-wrapper.plugin-remove_button:not(.rtl) .item.active .remove {\n border-left-color: #00578d;\n}\n.ts-wrapper.plugin-remove_button:not(.rtl).disabled .item .remove {\n border-left-color: #aaaaaa;\n}\n\n.ts-wrapper.plugin-remove_button.rtl .item {\n padding-left: 0 !important;\n}\n.ts-wrapper.plugin-remove_button.rtl .item .remove {\n border-right: 1px solid #0073bb;\n margin-right: 6px;\n}\n.ts-wrapper.plugin-remove_button.rtl .item.active .remove {\n border-right-color: #00578d;\n}\n.ts-wrapper.plugin-remove_button.rtl.disabled .item .remove {\n border-right-color: #aaaaaa;\n}\n\n:root {\n --ts-pr-clear-button: 0px;\n --ts-pr-caret: 0px;\n --ts-pr-min: .75rem;\n}\n\n.ts-wrapper.single .ts-control, .ts-wrapper.single .ts-control input {\n cursor: pointer;\n}\n\n.ts-control:not(.rtl) {\n padding-right: max(var(--ts-pr-min), var(--ts-pr-clear-button) + var(--ts-pr-caret)) !important;\n}\n\n.ts-control.rtl {\n padding-left: max(var(--ts-pr-min), var(--ts-pr-clear-button) + var(--ts-pr-caret)) !important;\n}\n\n.ts-wrapper {\n position: relative;\n}\n\n.ts-dropdown,\n.ts-control,\n.ts-control input {\n color: #303030;\n font-family: inherit;\n font-size: 13px;\n line-height: 18px;\n}\n\n.ts-control,\n.ts-wrapper.single.input-active .ts-control {\n background: #fff;\n cursor: text;\n}\n\n.ts-hidden-accessible {\n border: 0 !important;\n clip: rect(0 0 0 0) !important;\n -webkit-clip-path: inset(50%) !important;\n clip-path: inset(50%) !important;\n overflow: hidden !important;\n padding: 0 !important;\n position: absolute !important;\n width: 1px !important;\n white-space: nowrap !important;\n}\n\n.ts-wrapper.single .ts-control {\n --ts-pr-caret: 2rem;\n}\n.ts-wrapper.single .ts-control::after {\n content: \" \";\n display: block;\n position: absolute;\n top: 50%;\n margin-top: -3px;\n width: 0;\n height: 0;\n border-style: solid;\n border-width: 5px 5px 0 5px;\n border-color: #808080 transparent transparent transparent;\n}\n.ts-wrapper.single .ts-control:not(.rtl)::after {\n right: 15px;\n}\n.ts-wrapper.single .ts-control.rtl::after {\n left: 15px;\n}\n.ts-wrapper.single.dropdown-active .ts-control::after {\n margin-top: -4px;\n border-width: 0 5px 5px 5px;\n border-color: transparent transparent #808080 transparent;\n}\n.ts-wrapper.single.input-active .ts-control, .ts-wrapper.single.input-active .ts-control input {\n cursor: text;\n}\n\n.ts-wrapper {\n display: flex;\n min-height: 36px;\n}\n.ts-wrapper.multi.has-items .ts-control {\n padding-left: 5px;\n --ts-pr-min: 5px;\n}\n.ts-wrapper.multi .ts-control [data-value] {\n text-shadow: 0 1px 0 rgba(0, 51, 83, 0.3);\n border-radius: 3px;\n background-color: color-mix(#1da7ee, #178ee9, 60%);\n background-image: linear-gradient(to bottom, #1da7ee, #178ee9);\n background-repeat: repeat-x;\n box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2), inset 0 1px rgba(255, 255, 255, 0.03);\n}\n.ts-wrapper.multi .ts-control [data-value].active {\n background-color: color-mix(#008fd8, #0075cf, 60%);\n background-image: linear-gradient(to bottom, #008fd8, #0075cf);\n background-repeat: repeat-x;\n}\n.ts-wrapper.multi.disabled .ts-control [data-value] {\n color: #999;\n text-shadow: none;\n background: none;\n box-shadow: none;\n}\n.ts-wrapper.multi.disabled .ts-control [data-value], .ts-wrapper.multi.disabled .ts-control [data-value] .remove {\n border-color: #e6e6e6;\n}\n.ts-wrapper.multi.disabled .ts-control [data-value] .remove {\n background: none;\n}\n.ts-wrapper.single .ts-control {\n box-shadow: 0 1px 0 rgba(0, 0, 0, 0.05), inset 0 1px 0 rgba(255, 255, 255, 0.8);\n background-color: color-mix(#fefefe, #f2f2f2, 60%);\n background-image: linear-gradient(to bottom, #fefefe, #f2f2f2);\n background-repeat: repeat-x;\n}\n\n.ts-wrapper.single .ts-control, .ts-dropdown.single {\n border-color: #b8b8b8;\n}\n\n.dropdown-active .ts-control {\n border-radius: 3px 3px 0 0;\n}\n\n.ts-dropdown .optgroup-header {\n padding-top: 7px;\n font-weight: bold;\n font-size: 0.85em;\n}\n.ts-dropdown .optgroup {\n border-top: 1px solid #f0f0f0;\n}\n.ts-dropdown .optgroup:first-child {\n border-top: 0 none;\n}\n/*# sourceMappingURL=tom-select.default.css.map */";
5602
5646
 
5603
5647
  class LucosSearchComponent extends HTMLSpanElement {
5604
5648
  static get observedAttributes() {
@@ -5703,6 +5747,16 @@ class LucosSearchComponent extends HTMLSpanElement {
5703
5747
  --lozenge-border: #333;
5704
5748
  --lozenge-text: #000;
5705
5749
  }
5750
+ .lozenge[data-category="Literary"] {
5751
+ --lozenge-background: #a22400;
5752
+ --lozenge-border: #5e1500;
5753
+ --lozenge-text: #fff;
5754
+ }
5755
+ .lozenge[data-category="Dramaturgical"] {
5756
+ --lozenge-background: #5f0086;
5757
+ --lozenge-border: #59007d;
5758
+ --lozenge-text: #fff;
5759
+ }
5706
5760
 
5707
5761
  .lozenge.active {
5708
5762
  --lozenge-border: #b00;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lucos_search_component",
3
- "version": "1.0.13",
3
+ "version": "1.0.15",
4
4
  "description": "Web Components for searching lucOS data",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -28,5 +28,8 @@
28
28
  "rollup-plugin-import-css": "^4.1.2",
29
29
  "tom-select": "^2.4.3",
30
30
  "webpack-cli": "^6.0.1"
31
+ },
32
+ "overrides": {
33
+ "serialize-javascript": ">=7.0.3"
31
34
  }
32
35
  }
@@ -104,6 +104,16 @@ class LucosSearchComponent extends HTMLSpanElement {
104
104
  --lozenge-border: #333;
105
105
  --lozenge-text: #000;
106
106
  }
107
+ .lozenge[data-category="Literary"] {
108
+ --lozenge-background: #a22400;
109
+ --lozenge-border: #5e1500;
110
+ --lozenge-text: #fff;
111
+ }
112
+ .lozenge[data-category="Dramaturgical"] {
113
+ --lozenge-background: #5f0086;
114
+ --lozenge-border: #59007d;
115
+ --lozenge-text: #fff;
116
+ }
107
117
 
108
118
  .lozenge.active {
109
119
  --lozenge-border: #b00;