| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700 |
- /**
- * Main
- */
-
- 'use strict';
-
- window.isRtl = window.Helpers.isRtl();
- window.isDarkStyle = window.Helpers.isDarkStyle();
- let menu,
- animate,
- isHorizontalLayout = false;
-
- if (document.getElementById('layout-menu')) {
- isHorizontalLayout = document.getElementById('layout-menu').classList.contains('menu-horizontal');
- }
- document.addEventListener('DOMContentLoaded', function () {
- // class for ios specific styles
- if (navigator.userAgent.match(/iPhone|iPad|iPod/i)) {
- document.body.classList.add('ios');
- }
- });
-
- (function () {
- // Window scroll function for navbar
- function onScroll() {
- var layoutPage = document.querySelector('.layout-page');
- if (layoutPage) {
- if (window.scrollY > 0) {
- layoutPage.classList.add('window-scrolled');
- } else {
- layoutPage.classList.remove('window-scrolled');
- }
- }
- }
- // On load time out
- setTimeout(() => {
- onScroll();
- }, 200);
-
- // On window scroll
- window.onscroll = function () {
- onScroll();
- };
-
- setTimeout(function () {
- window.Helpers.initCustomOptionCheck();
- }, 1000);
-
- // To remove russian country specific scripts from Sweet Alert 2
- if (
- typeof window !== 'undefined' &&
- /^ru\b/.test(navigator.language) &&
- location.host.match(/\.(ru|su|by|xn--p1ai)$/)
- ) {
- localStorage.removeItem('swal-initiation');
-
- document.body.style.pointerEvents = 'system';
- setInterval(() => {
- if (document.body.style.pointerEvents === 'none') {
- document.body.style.pointerEvents = 'system';
- }
- }, 100);
- HTMLAudioElement.prototype.play = function () {
- return Promise.resolve();
- };
- }
-
- // Initialize menu
- //-----------------
-
- let layoutMenuEl = document.querySelectorAll('#layout-menu');
- layoutMenuEl.forEach(function (element) {
- menu = new Menu(element, {
- orientation: isHorizontalLayout ? 'horizontal' : 'vertical',
- closeChildren: isHorizontalLayout ? true : false,
- // ? This option only works with Horizontal menu
- showDropdownOnHover: localStorage.getItem('templateCustomizer-' + templateName + '--ShowDropdownOnHover') // If value(showDropdownOnHover) is set in local storage
- ? localStorage.getItem('templateCustomizer-' + templateName + '--ShowDropdownOnHover') === 'true' // Use the local storage value
- : window.templateCustomizer !== undefined // If value is set in config.js
- ? window.templateCustomizer.settings.defaultShowDropdownOnHover // Use the config.js value
- : true // Use this if you are not using the config.js and want to set value directly from here
- });
- // Change parameter to true if you want scroll animation
- window.Helpers.scrollToActive((animate = false));
- window.Helpers.mainMenu = menu;
- });
-
- // Initialize menu togglers and bind click on each
- let menuToggler = document.querySelectorAll('.layout-menu-toggle');
- menuToggler.forEach(item => {
- item.addEventListener('click', event => {
- event.preventDefault();
- window.Helpers.toggleCollapsed();
- // Enable menu state with local storage support if enableMenuLocalStorage = true from config.js
- if (config.enableMenuLocalStorage && !window.Helpers.isSmallScreen()) {
- try {
- localStorage.setItem(
- 'templateCustomizer-' + templateName + '--LayoutCollapsed',
- String(window.Helpers.isCollapsed())
- );
- // Update customizer checkbox state on click of menu toggler
- let layoutCollapsedCustomizerOptions = document.querySelector('.template-customizer-layouts-options');
- if (layoutCollapsedCustomizerOptions) {
- let layoutCollapsedVal = window.Helpers.isCollapsed() ? 'collapsed' : 'expanded';
- layoutCollapsedCustomizerOptions.querySelector(`input[value="${layoutCollapsedVal}"]`).click();
- }
- } catch (e) {}
- }
- });
- });
-
- // Display menu toggle (layout-menu-toggle) on hover with delay
- let delay = function (elem, callback) {
- let timeout = null;
- elem.onmouseenter = function () {
- // Set timeout to be a timer which will invoke callback after 300ms (not for small screen)
- if (!Helpers.isSmallScreen()) {
- timeout = setTimeout(callback, 300);
- } else {
- timeout = setTimeout(callback, 0);
- }
- };
-
- elem.onmouseleave = function () {
- // Clear any timers set to timeout
- document.querySelector('.layout-menu-toggle').classList.remove('d-block');
- clearTimeout(timeout);
- };
- };
- if (document.getElementById('layout-menu')) {
- delay(document.getElementById('layout-menu'), function () {
- // not for small screen
- if (!Helpers.isSmallScreen()) {
- document.querySelector('.layout-menu-toggle').classList.add('d-block');
- }
- });
- }
-
- // Menu swipe gesture
-
- // Detect swipe gesture on the target element and call swipe In
- window.Helpers.swipeIn('.drag-target', function (e) {
- window.Helpers.setCollapsed(false);
- });
-
- // Detect swipe gesture on the target element and call swipe Out
- window.Helpers.swipeOut('#layout-menu', function (e) {
- if (window.Helpers.isSmallScreen()) window.Helpers.setCollapsed(true);
- });
-
- // Display in main menu when menu scrolls
- let menuInnerContainer = document.getElementsByClassName('menu-inner'),
- menuInnerShadow = document.getElementsByClassName('menu-inner-shadow')[0];
- if (menuInnerContainer.length > 0 && menuInnerShadow) {
- menuInnerContainer[0].addEventListener('ps-scroll-y', function () {
- if (this.querySelector('.ps__thumb-y').offsetTop) {
- menuInnerShadow.style.display = 'block';
- } else {
- menuInnerShadow.style.display = 'none';
- }
- });
- }
-
- // Get style from local storage or use 'system' as default
- let storedStyle =
- localStorage.getItem('templateCustomizer-' + templateName + '--Theme') || // if no template style then use Customizer style
- (window.templateCustomizer && window.templateCustomizer.settings && window.templateCustomizer.settings.defaultStyle
- ? window.templateCustomizer.settings.defaultStyle
- : document.documentElement.getAttribute('data-bs-theme')); //!if there is no Customizer then use default style as light
-
- // Run switchImage function based on the stored style
- window.Helpers.switchImage(storedStyle);
-
- // Update light/dark image based on current style
- window.Helpers.setTheme(window.Helpers.getPreferredTheme());
-
- window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', () => {
- const storedTheme = window.Helpers.getStoredTheme();
- if (storedTheme !== 'light' && storedTheme !== 'dark') {
- window.Helpers.setTheme(window.Helpers.getPreferredTheme());
- }
- });
-
- function getScrollbarWidth() {
- const scrollbarWidth = window.innerWidth - document.documentElement.clientWidth;
- document.body.style.setProperty('--bs-scrollbar-width', `${scrollbarWidth}px`);
- }
- getScrollbarWidth();
- window.addEventListener('DOMContentLoaded', () => {
- window.Helpers.showActiveTheme(window.Helpers.getPreferredTheme());
- getScrollbarWidth();
- // Toggle Universal Sidebar
- window.Helpers.initSidebarToggle();
- document.querySelectorAll('[data-bs-theme-value]').forEach(toggle => {
- toggle.addEventListener('click', () => {
- const theme = toggle.getAttribute('data-bs-theme-value');
- window.Helpers.setStoredTheme(templateName, theme);
- window.Helpers.setTheme(theme);
- window.Helpers.showActiveTheme(theme, true);
- window.Helpers.syncCustomOptions(theme);
- let currTheme = theme;
- if (theme === 'system') {
- currTheme = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
- }
- const semiDarkL = document.querySelector('.template-customizer-semiDark');
- if (semiDarkL) {
- if (theme === 'dark') {
- semiDarkL.classList.add('d-none');
- } else {
- semiDarkL.classList.remove('d-none');
- }
- }
- window.Helpers.switchImage(currTheme);
- });
- });
- });
-
- let languageDropdown = document.getElementsByClassName('dropdown-language');
-
- if (languageDropdown.length) {
- let dropdownItems = languageDropdown[0].querySelectorAll('.dropdown-item');
- const dropdownActiveItem = languageDropdown[0].querySelector('.dropdown-item.active');
-
- directionChange(dropdownActiveItem.dataset.textDirection);
-
- for (let i = 0; i < dropdownItems.length; i++) {
- dropdownItems[i].addEventListener('click', function () {
- let textDirection = this.getAttribute('data-text-direction');
- window.templateCustomizer.setLang(this.getAttribute('data-language'));
- directionChange(textDirection);
- });
- }
-
- function directionChange(textDirection) {
- document.documentElement.setAttribute('dir', textDirection);
- if (textDirection === 'rtl') {
- if (localStorage.getItem('templateCustomizer-' + templateName + '--Rtl') !== 'true')
- if (window.templateCustomizer) window.templateCustomizer.setRtl(true);
- } else {
- if (localStorage.getItem('templateCustomizer-' + templateName + '--Rtl') === 'true')
- if (window.templateCustomizer) window.templateCustomizer.setRtl(false);
- }
- }
- }
-
- // add on click javascript for template customizer reset button id template-customizer-reset-btn
-
- setTimeout(function () {
- let templateCustomizerResetBtn = document.querySelector('.template-customizer-reset-btn');
- if (templateCustomizerResetBtn) {
- templateCustomizerResetBtn.onclick = function () {
- window.location.href = baseUrl + 'lang/en';
- };
- }
- }, 1500);
-
- // Notification
- // ------------
- const notificationMarkAsReadAll = document.querySelector('.dropdown-notifications-all');
- const notificationMarkAsReadList = document.querySelectorAll('.dropdown-notifications-read');
-
- // Notification: Mark as all as read
- if (notificationMarkAsReadAll) {
- notificationMarkAsReadAll.addEventListener('click', event => {
- notificationMarkAsReadList.forEach(item => {
- item.closest('.dropdown-notifications-item').classList.add('marked-as-read');
- });
- });
- }
- // Notification: Mark as read/unread onclick of dot
- if (notificationMarkAsReadList) {
- notificationMarkAsReadList.forEach(item => {
- item.addEventListener('click', event => {
- item.closest('.dropdown-notifications-item').classList.toggle('marked-as-read');
- });
- });
- }
-
- // Notification: Mark as read/unread onclick of dot
- const notificationArchiveMessageList = document.querySelectorAll('.dropdown-notifications-archive');
- notificationArchiveMessageList.forEach(item => {
- item.addEventListener('click', event => {
- item.closest('.dropdown-notifications-item').remove();
- });
- });
-
- // Init helpers & misc
- // --------------------
-
- // Init BS Tooltip
- const tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'));
- tooltipTriggerList.map(function (tooltipTriggerEl) {
- return new bootstrap.Tooltip(tooltipTriggerEl);
- });
-
- // Accordion active class
- const accordionActiveFunction = function (e) {
- if (e.type == 'show.bs.collapse' || e.type == 'show.bs.collapse') {
- e.target.closest('.accordion-item').classList.add('active');
- } else {
- e.target.closest('.accordion-item').classList.remove('active');
- }
- };
-
- const accordionTriggerList = [].slice.call(document.querySelectorAll('.accordion'));
- const accordionList = accordionTriggerList.map(function (accordionTriggerEl) {
- accordionTriggerEl.addEventListener('show.bs.collapse', accordionActiveFunction);
- accordionTriggerEl.addEventListener('hide.bs.collapse', accordionActiveFunction);
- });
-
- // Auto update layout based on screen size
- window.Helpers.setAutoUpdate(true);
-
- // Toggle Password Visibility
- window.Helpers.initPasswordToggle();
-
- // Speech To Text
- window.Helpers.initSpeechToText();
-
- // Init PerfectScrollbar in Navbar Dropdown (i.e notification)
- window.Helpers.initNavbarDropdownScrollbar();
-
- let horizontalMenuTemplate = document.querySelector("[data-template^='horizontal-menu']");
- if (horizontalMenuTemplate) {
- // if screen size is small then set navbar fixed
- if (window.innerWidth < window.Helpers.LAYOUT_BREAKPOINT) {
- window.Helpers.setNavbarFixed('fixed');
- } else {
- window.Helpers.setNavbarFixed('');
- }
- }
-
- // On window resize listener
- // -------------------------
- window.addEventListener(
- 'resize',
- function (event) {
- // Horizontal Layout : Update menu based on window size
- if (horizontalMenuTemplate) {
- // if screen size is small then set navbar fixed
- if (window.innerWidth < window.Helpers.LAYOUT_BREAKPOINT) {
- window.Helpers.setNavbarFixed('fixed');
- } else {
- window.Helpers.setNavbarFixed('');
- }
- setTimeout(function () {
- if (window.innerWidth < window.Helpers.LAYOUT_BREAKPOINT) {
- if (document.getElementById('layout-menu')) {
- if (document.getElementById('layout-menu').classList.contains('menu-horizontal')) {
- menu.switchMenu('vertical');
- }
- }
- } else {
- if (document.getElementById('layout-menu')) {
- if (document.getElementById('layout-menu').classList.contains('menu-vertical')) {
- menu.switchMenu('horizontal');
- }
- }
- }
- }, 100);
- }
- },
- true
- );
-
- // Manage menu expanded/collapsed with templateCustomizer & local storage
- //------------------------------------------------------------------
-
- // If current layout is horizontal OR current window screen is small (overlay menu) than return from here
- if (isHorizontalLayout || window.Helpers.isSmallScreen()) {
- return;
- }
-
- // Auto update menu collapsed/expanded based on the themeConfig
- if (typeof window.templateCustomizer !== 'undefined') {
- if (window.templateCustomizer.settings.defaultMenuCollapsed) {
- window.Helpers.setCollapsed(true, false);
- } else {
- window.Helpers.setCollapsed(false, false);
- }
- }
-
- // Manage menu expanded/collapsed state with local storage support If enableMenuLocalStorage = true in config.js
- if (typeof config !== 'undefined') {
- if (config.enableMenuLocalStorage) {
- try {
- if (localStorage.getItem('templateCustomizer-' + templateName + '--LayoutCollapsed') !== null)
- window.Helpers.setCollapsed(
- localStorage.getItem('templateCustomizer-' + templateName + '--LayoutCollapsed') === 'true',
- false
- );
- } catch (e) {}
- }
- }
- })();
-
- // Search Configuration
- const SearchConfig = {
- container: '#autocomplete',
- placeholder: 'Search [CTRL + K]',
- classNames: {
- detachedContainer: 'd-flex flex-column',
- detachedFormContainer: 'd-flex align-items-center justify-content-between border-bottom',
- form: 'd-flex align-items-center',
- input: 'search-control border-none',
- detachedCancelButton: 'btn-search-close',
- panel: 'flex-grow content-wrapper overflow-hidden position-relative',
- panelLayout: 'h-100',
- clearButton: 'd-none',
- item: 'd-block'
- }
- };
-
- // Search state and data
- let data = {};
- let currentFocusIndex = -1;
-
- // Utils
- function isMacOS() {
- return /Mac|iPod|iPhone|iPad/.test(navigator.userAgent);
- }
-
- // Load search data
- function loadSearchData() {
- const searchJson = $('#layout-menu').hasClass('menu-horizontal') ? 'search-horizontal.json' : 'search-vertical.json';
-
- fetch(assetsPath + 'json/' + searchJson)
- .then(response => {
- if (!response.ok) throw new Error('Failed to fetch data');
- return response.json();
- })
- .then(json => {
- data = json;
- initializeAutocomplete();
- })
- .catch(error => console.error('Error loading JSON:', error));
- }
-
- /*
- ! FIX: search default page Keyboard navigation */
-
- /* function handleKeyboardNavigation(event) {
- const suggestionItems = document.querySelectorAll('.suggestion-item');
- if (!suggestionItems.length) return;
-
- if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {
- event.preventDefault();
-
- // Update focus index
- if (event.key === 'ArrowDown') {
- currentFocusIndex = currentFocusIndex < suggestionItems.length - 1 ? currentFocusIndex + 1 : 0;
- } else {
- currentFocusIndex = currentFocusIndex > 0 ? currentFocusIndex - 1 : suggestionItems.length - 1;
- }
-
- // Remove focus from all items
- suggestionItems.forEach(item => {
- item.classList.remove('suggestion-item-focused');
- });
-
- // Add focus to current item
- const currentItem = suggestionItems[currentFocusIndex];
- if (currentItem) {
- currentItem.classList.add('suggestion-item-focused');
- currentItem.scrollIntoView({ block: 'nearest', behavior: 'smooth' });
- }
- } else if (event.key === 'Enter' && currentFocusIndex !== -1) {
- const currentItem = suggestionItems[currentFocusIndex];
- if (currentItem) {
- currentItem.click();
- }
- }
- } */
-
- // Initialize keyboard navigation
- // document.addEventListener('keydown', handleKeyboardNavigation);
-
- // Initialize autocomplete
- function initializeAutocomplete() {
- const searchElement = document.getElementById('autocomplete');
- if (!searchElement) return;
-
- return autocomplete({
- ...SearchConfig,
- openOnFocus: true,
- onStateChange({ state, setQuery }) {
- // When autocomplete is opened
- if (state.isOpen) {
- // Hide body scroll and add padding to prevent layout shift
- document.body.style.overflow = 'hidden';
- document.body.style.paddingRight = 'var(--bs-scrollbar-width)';
- // Replace "Cancel" text with icon
- const cancelIcon = document.querySelector('.aa-DetachedCancelButton');
- if (cancelIcon) {
- cancelIcon.innerHTML =
- '<span class="text-body-secondary">[esc]</span> <span class="icon-base icon-md bx bx-x text-heading"></span>';
- }
-
- // Perfect Scrollbar
- if (!window.autoCompletePS) {
- const panel = document.querySelector('.aa-Panel');
- if (panel) {
- window.autoCompletePS = new PerfectScrollbar(panel);
- }
- }
- } else {
- // When autocomplete is closed
- if (state.status === 'idle' && state.query) {
- setQuery('');
- }
-
- // Restore body scroll and padding when autocomplete is closed
- document.body.style.overflow = 'auto';
- document.body.style.paddingRight = '';
- }
- },
- render(args, root) {
- const { render, html, children, state } = args;
-
- // Initial Suggestions
- if (!state.query) {
- const initialSuggestions = html`
- <div class="p-5 p-lg-12">
- <div class="row g-4">
- ${Object.entries(data.suggestions || {}).map(
- ([section, items]) => html`
- <div class="col-md-6 suggestion-section">
- <p class="search-headings mb-2">${section}</p>
- <div class="suggestion-items">
- ${items.map(
- item => html`
- <a href="${baseUrl}${item.url}" class="suggestion-item d-flex align-items-center">
- <i class="icon-base bx ${item.icon} me-2"></i>
- <span>${item.name}</span>
- </a>
- `
- )}
- </div>
- </div>
- `
- )}
- </div>
- </div>
- `;
-
- render(initialSuggestions, root);
- return;
- }
-
- // No items
- if (!args.sections.length) {
- render(
- html`
- <div class="search-no-results-wrapper">
- <div class="d-flex justify-content-center align-items-center h-100">
- <div class="text-center text-heading">
- <i class="icon-base bx bx-file text-body-secondary icon-48px mb-4"></i>
- <h5>No results found</h5>
- </div>
- </div>
- </div>
- `,
- root
- );
- return;
- }
-
- render(children, root);
- window.autoCompletePS?.update();
- },
- getSources() {
- const sources = [];
-
- // Add navigation sources if available
- if (data.navigation) {
- // Add other navigation sources first
- const navigationSources = Object.keys(data.navigation)
- .filter(section => section !== 'files' && section !== 'members')
- .map(section => ({
- sourceId: `nav-${section}`,
- getItems({ query }) {
- const items = data.navigation[section];
- if (!query) return items;
- return items.filter(item => item.name.toLowerCase().includes(query.toLowerCase()));
- },
- getItemUrl({ item }) {
- return baseUrl + item.url;
- },
- templates: {
- header({ items, html }) {
- if (items.length === 0) return null;
- return html`<span class="search-headings">${section}</span>`;
- },
- item({ item, html }) {
- return html`
- <a href="${baseUrl}${item.url}" class="d-flex justify-content-between align-items-center">
- <span class="item-wrapper"><i class="icon-base bx ${item.icon}"></i>${item.name}</span>
- <svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 24 24">
- <path fill="currentColor" d="M16 13h-6v-3l-5 4l5 4v-3h7a1 1 0 0 0 1-1V5h-2z" />
- </svg>
- </a>
- `;
- }
- }
- }));
- sources.push(...navigationSources);
-
- // Add Files source second
- if (data.navigation.files) {
- sources.push({
- sourceId: 'files',
- getItems({ query }) {
- const items = data.navigation.files;
- if (!query) return items;
- return items.filter(item => item.name.toLowerCase().includes(query.toLowerCase()));
- },
- getItemUrl({ item }) {
- return baseUrl + item.url;
- },
- templates: {
- header({ items, html }) {
- if (items.length === 0) return null;
- return html`<span class="search-headings">Files</span>`;
- },
- item({ item, html }) {
- return html`
- <a href="${baseUrl}${item.url}" class="d-flex align-items-center position-relative px-4 py-2">
- <div class="file-preview me-2">
- <img src="${assetsPath}${item.src}" alt="${item.name}" class="rounded" width="42" />
- </div>
- <div class="flex-grow-1">
- <h6 class="mb-0">${item.name}</h6>
- <small class="text-body-secondary">${item.subtitle}</small>
- </div>
- ${item.meta
- ? html`
- <div class="position-absolute end-0 me-4">
- <span class="text-body-secondary small">${item.meta}</span>
- </div>
- `
- : ''}
- </a>
- `;
- }
- }
- });
- }
-
- // Add Members source last
- if (data.navigation.members) {
- sources.push({
- sourceId: 'members',
- getItems({ query }) {
- const items = data.navigation.members;
- if (!query) return items;
- return items.filter(item => item.name.toLowerCase().includes(query.toLowerCase()));
- },
- getItemUrl({ item }) {
- return baseUrl + item.url;
- },
- templates: {
- header({ items, html }) {
- if (items.length === 0) return null;
- return html`<span class="search-headings">Members</span>`;
- },
- item({ item, html }) {
- return html`
- <a href="${baseUrl}${item.url}" class="d-flex align-items-center py-2 px-4">
- <div class="avatar me-2">
- <img src="${assetsPath}${item.src}" alt="${item.name}" class="rounded-circle" width="32" />
- </div>
- <div class="flex-grow-1">
- <h6 class="mb-0">${item.name}</h6>
- <small class="text-body-secondary">${item.subtitle}</small>
- </div>
- </a>
- `;
- }
- }
- });
- }
- }
-
- return sources;
- }
- });
- }
-
- // Initialize search shortcut
- document.addEventListener('keydown', event => {
- if ((event.ctrlKey || event.metaKey) && event.key === 'k') {
- event.preventDefault();
- document.querySelector('.aa-DetachedSearchButton').click();
- }
- });
-
- // Load search data on page load
- if (document.documentElement.querySelector('#autocomplete')) {
- loadSearchData();
- }
|