@txstate-mws/svelte-components 1.5.9 → 1.5.11

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.
@@ -62,6 +62,7 @@ export let menuItemHilitedClass = '';
62
62
  export let menuItemSelectedClass = '';
63
63
  export let menuDividerClass = '';
64
64
  export let hideSelectedIndicator = false;
65
+ export let hideEmptyText = false;
65
66
  export let usemenurole = false;
66
67
  let menuelement;
67
68
  const itemelements = [];
@@ -76,8 +77,6 @@ async function reactToItems(..._) {
76
77
  lastactive = items.length - [...items].reverse().findIndex(itm => 'value' in itm && !itm.disabled && !hiddenItem(itm)) - 1;
77
78
  if (hilited && items[hilited]?.disabled)
78
79
  hilited = firstactive;
79
- if (document.activeElement === buttonelement && hasMeaningfulItems && !loading)
80
- menushown = true;
81
80
  }
82
81
  $: void reactToItems(items, value);
83
82
  async function reactToMenuShown(_) {
@@ -120,7 +119,7 @@ function isSelectable(itm) {
120
119
  return 'value' in itm && !itm.disabled && !hiddenItem(itm);
121
120
  }
122
121
  function onkeydown(e) {
123
- if (modifierKey(e) || loading)
122
+ if (modifierKey(e))
124
123
  return;
125
124
  if (e.key === 'ArrowDown') {
126
125
  e.preventDefault();
@@ -209,8 +208,7 @@ let blurTimer;
209
208
  function onbuttonclick(e) {
210
209
  e.preventDefault();
211
210
  cancelAnimationFrame(blurTimer);
212
- if (!loading)
213
- menushown = !menushown;
211
+ menushown = !menushown;
214
212
  }
215
213
  function onblur(e) {
216
214
  // tabindex=-1 on our menu elements means e.relatedTarget will be set
@@ -219,6 +217,10 @@ function onblur(e) {
219
217
  menushown = false; });
220
218
  }
221
219
  }
220
+ function oninput(e) {
221
+ if (document.activeElement === buttonelement)
222
+ menushown = true;
223
+ }
222
224
  function cleanup(element) {
223
225
  for (const observer of observers)
224
226
  observer.disconnect();
@@ -227,6 +229,7 @@ function cleanup(element) {
227
229
  element.removeEventListener('click', onbuttonclick);
228
230
  element.removeEventListener('keydown', onkeydown);
229
231
  element.removeEventListener('blur', onblur);
232
+ element.removeEventListener('input', oninput);
230
233
  element.removeAttribute('aria-disabled');
231
234
  element.removeAttribute('aria-haspopup');
232
235
  element.removeAttribute('aria-expanded');
@@ -273,7 +276,7 @@ const onclick = (item) => (e) => {
273
276
  $: hasSelected = showSelected && !hideSelectedIndicator && items.some(itm => 'value' in itm && itm.value === value);
274
277
  </script>
275
278
 
276
- {#if menushown}
279
+ {#if menushown && !loading && (hasMeaningfulItems || !hideEmptyText)}
277
280
  <div use:portal={usePortal === true ? undefined : (usePortal || null)}
278
281
  use:glue={{ target: buttonelement, align, cover, gap, adjustparentheight, store: computedalign }}
279
282
  class={menuContainerClass}>
@@ -43,6 +43,7 @@ declare const __propDef: {
43
43
  menuItemSelectedClass?: string | undefined;
44
44
  menuDividerClass?: string | undefined;
45
45
  hideSelectedIndicator?: boolean | undefined;
46
+ hideEmptyText?: boolean | undefined;
46
47
  usemenurole?: boolean | undefined;
47
48
  };
48
49
  events: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@txstate-mws/svelte-components",
3
- "version": "1.5.9",
3
+ "version": "1.5.11",
4
4
  "description": "Svelte components that are generically useful.",
5
5
  "scripts": {
6
6
  "prepublishOnly": "svelte-package",