@penn-libraries/web 1.1.0-dev.1 → 1.1.0-dev.2

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 (25) hide show
  1. package/dist/cjs/loader.cjs.js +1 -1
  2. package/dist/cjs/pennlibs-allow-tracking.pennlibs-autocomplete.pennlibs-footer.pennlibs-header.entry.cjs.js.map +1 -1
  3. package/dist/cjs/pennlibs-allow-tracking_4.cjs.entry.js +14 -10
  4. package/dist/cjs/pennlibs-allow-tracking_4.cjs.entry.js.map +1 -1
  5. package/dist/cjs/web.cjs.js +1 -1
  6. package/dist/collection/components/pennlibs-autocomplete/pennlibs-autocomplete.js +37 -10
  7. package/dist/collection/components/pennlibs-autocomplete/pennlibs-autocomplete.js.map +1 -1
  8. package/dist/components/pennlibs-autocomplete.js +15 -10
  9. package/dist/components/pennlibs-autocomplete.js.map +1 -1
  10. package/dist/docs.json +26 -2
  11. package/dist/esm/loader.js +1 -1
  12. package/dist/esm/pennlibs-allow-tracking.pennlibs-autocomplete.pennlibs-footer.pennlibs-header.entry.js.map +1 -1
  13. package/dist/esm/pennlibs-allow-tracking_4.entry.js +14 -10
  14. package/dist/esm/pennlibs-allow-tracking_4.entry.js.map +1 -1
  15. package/dist/esm/web.js +1 -1
  16. package/dist/types/components/pennlibs-autocomplete/pennlibs-autocomplete.d.ts +4 -0
  17. package/dist/types/components.d.ts +8 -0
  18. package/dist/web/{p-36195ae1.entry.js → p-270fd846.entry.js} +15 -11
  19. package/dist/web/p-270fd846.entry.js.map +1 -0
  20. package/dist/web/pennlibs-allow-tracking.pennlibs-autocomplete.pennlibs-footer.pennlibs-header.entry.esm.js.map +1 -1
  21. package/dist/web/web.esm.js +1 -1
  22. package/hydrate/index.js +15 -10
  23. package/hydrate/index.mjs +15 -10
  24. package/package.json +1 -1
  25. package/dist/web/p-36195ae1.entry.js.map +0 -1
@@ -94,32 +94,36 @@ const Autocomplete = class {
94
94
  return {
95
95
  id: element.id || `option-${index}`,
96
96
  html: element.innerHTML,
97
- value: element.getAttribute('data-value') || ((_a = element.textContent) === null || _a === void 0 ? void 0 : _a.trim()) || ''
97
+ value: element.getAttribute('data-pl-value') || ((_a = element.textContent) === null || _a === void 0 ? void 0 : _a.trim()) || ''
98
98
  };
99
99
  }
100
100
  getInput() {
101
- var _a, _b;
101
+ var _a;
102
+ if (!this.for)
103
+ return null;
102
104
  const slot = (_a = this.el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('slot[name="start"]');
103
- return ((_b = slot === null || slot === void 0 ? void 0 : slot.assignedElements()[0]) === null || _b === void 0 ? void 0 : _b.querySelector('input')) || null;
105
+ const input = slot.assignedElements()[0].querySelector(`input#${this.for}`);
106
+ return input || null;
104
107
  }
105
108
  isInputFocused() {
106
109
  return this.getInput() === document.activeElement;
107
110
  }
108
111
  isTrackedInput(input) {
109
- return (input === null || input === void 0 ? void 0 : input.getAttribute('data-pl-autocomplete-input')) === 'true' &&
112
+ return (input === null || input === void 0 ? void 0 : input.getAttribute('data-pl-autocomplete-connected')) === 'true' &&
110
113
  this.el.contains(input);
111
114
  }
112
115
  setupInput() {
116
+ if (!this.for) {
117
+ console.warn('<pennlibs-autocomplete> Missing "for" attribute. Please add for="input-id" to specify which input to attach to.');
118
+ return;
119
+ }
113
120
  const input = this.getInput();
114
121
  if (!input) {
115
- console.warn('<pennlibs-autocomplete> No input element found. Ensure your input has the data-pl-autocomplete-input attribute.');
122
+ console.warn(`<pennlibs-autocomplete> No input element found with id="${this.for}". Ensure an input with this id exists.`);
116
123
  return;
117
124
  }
118
- if (!input.hasAttribute('data-pl-autocomplete-input')) {
119
- console.warn('<pennlibs-autocomplete> Input element is missing the data-pl-autocomplete-input attribute. Please add it to your input element.');
120
- }
121
125
  this.setComboboxAttributes(input);
122
- input.setAttribute('data-pl-autocomplete-input', 'true');
126
+ input.setAttribute('data-pl-autocomplete-connected', 'true');
123
127
  }
124
128
  setComboboxAttributes(input) {
125
129
  input.setAttribute('role', 'combobox');
@@ -283,7 +287,7 @@ const Autocomplete = class {
283
287
  return this.showSuggestions && this.options.length > 0 && this.isInputFocused();
284
288
  }
285
289
  render() {
286
- return (index.h("div", { key: '64bcd2b815b654072ea9b515307d21542168496e' }, index.h("slot", { key: '56eb649dfbbb6677533b968bb6530651ceb645c7', name: "start" }), this.shouldShowListbox() && (index.h("ol", { key: '1f7de6b579ac890907c43f2e96b41078d6ad1278', role: "listbox", id: "listbox" }, this.options.map((option, index$1) => (index.h("li", { role: "option", id: option.id, "aria-selected": this.currentIndex === index$1 ? 'true' : 'false', tabindex: "-1", onClick: () => this.handleOptionClick(index$1), innerHTML: option.html })))))));
290
+ return (index.h("div", { key: '2091f8acacac10714c4d607e294248f3bd7e5fd7' }, index.h("slot", { key: '628a216ce90ee693a354a74f91bcce2fe61b74a5', name: "start" }), this.shouldShowListbox() && (index.h("ol", { key: '916eba0f4b2148616fac4cc96cac4c7506a9bd0e', role: "listbox", id: "listbox" }, this.options.map((option, index$1) => (index.h("li", { role: "option", id: option.id, "aria-selected": this.currentIndex === index$1 ? 'true' : 'false', tabindex: "-1", onClick: () => this.handleOptionClick(index$1), innerHTML: option.html })))))));
287
291
  }
288
292
  get el() { return index.getElement(this); }
289
293
  };