docs-v2/layouts/partials
Jason Stirnaman 4bbf1d7094 Improve DocSearch loading
1. Refactor JavaScript from search.html into a new DocSearch Component Module. The component needs to include: - Asynchronous loading of Algolia docsearch.min.js - Proper Algolia search facets:

  - Nested arrays for AND conditions: In Algolia, filters in the same array are combined with OR, while arrays in an array are combined with AND
  - Space after colon: Algolia's parser expects this specific format
2. Update Search HTML Template: refactor the search.html to use the new component:

3. Register the Component in main.js: update main.js to import and register our new DocSearch component:

Improve SearchInteractions event handler coordination with DocSearch:

- Improve SearchInteractions to dynamically detect the dropdown added by Algolia DocSearch and ensure that blur and focus event handlers are registered after the dropdown loads.

Benefits of This Approach:

Asynchronous Loading: DocSearch.js is now loaded asynchronously, improving page load performance
Search functionality is encapsulated as a component
Clean Separation: HTML template only contains configuration data, not implementation
Event Communication: Components can react to DocSearch initialization via events
SearchInteractions dynamically detects dropdown: Instead of waiting for an event or using setTimeout, we actively observe DOM changes to detect when the dropdown is created.
Nested Observation: A second observer monitors changes to the dropdown itself, allowing code to respond to style changes.
Better Event Handling: The blur handler checks if the related target is inside the search components, preventing unwanted dropdown closing.
Resource Cleanup: The cleanup function disconnects all observers, preventing memory leaks.
Additional Interaction Control: Adds an event listener to the dropdown to prevent unwanted blur events when interacting with search results.
2025-06-02 13:05:02 -05:00
..
article hotfix: included explorer in discord-preferred list 2025-05-29 17:41:12 -06:00
footer Improve DocSearch loading 2025-06-02 13:05:02 -05:00
header WIP: Refactored all scripts from footer.js into components. Removed footer.js. Exports jQuery ($) to a window global for use by other scripts. Scripts bundled into footer.js didn't reliably load after jQuery. 2025-06-02 12:51:52 -05:00
sidebar chore(hugo): Update shortcodes and templates to avoid calling isset on <nil> 2025-05-19 14:57:15 -05:00
svgs New home page layout (#3958) 2022-04-14 15:26:54 -06:00
topnav WIP: Refactored all scripts from footer.js into components. Removed footer.js. Exports jQuery ($) to a window global for use by other scripts. Scripts bundled into footer.js didn't reliably load after jQuery. 2025-06-02 12:51:52 -05:00
article.html update: start explorer docs (#6102) 2025-05-29 18:29:16 -05:00
footer.html Initial Kapa.ai chat integration. 2025-02-03 08:31:55 -06:00
header.html Initial Kapa.ai chat integration. 2025-02-03 08:31:55 -06:00
sidebar.html WIP: Refactored all scripts from footer.js into components. Removed footer.js. Exports jQuery ($) to a window global for use by other scripts. Scripts bundled into footer.js didn't reliably load after jQuery. 2025-06-02 12:51:52 -05:00
topnav.html Initial Kapa.ai chat integration. 2025-02-03 08:31:55 -06:00