{"version":3,"sources":["webpack:///./Src/Components/Drawer/Drawer.ts","webpack:///./Src/Components/Navigation/AccessibleMegaMenu.ts","webpack:///./Src/Components/Toggle/Toggle.ts","webpack:///./Src/Components/ToggleClass/ToggleClass.ts","webpack:///./Src/Components/Utilities/GuardedDisable.ts"],"names":["createSelectors","elements","map","element","join","toggleInitialDrawers","$drawers","$","length","each","i","el","LsDrawer","toggle","initialized","$document","document","on","this","buttonSelectors","e","noActivation","noTransition","noDisabling","preventDefault","$handle","currentTarget","data","extend","trigger","undefined","call","$context","closest","context","get","name","attr","find","filter","opening","checked","target","$input","isChecked","prop","fieldSelectors","open","selector","toArray","$drawer","hasClass","close","$handles","removeAttr","handle","handleOpening","toggleClass","$target","drawerOpening","$inputs","addBack","isSupported","removeClass","height","scrollHeight","duration","Math","round","pow","css","enable","activateContent","currentHeight","offsetHeight","addClass","forceRedraw","disable","onTransitionEnd","$focused","off","navSelector","navTriggerSelector","menuSelector","menuTriggerSelector","menuPanelSelector","openClass","openOnMouseover","openDelay","closeDelay","options","mouseFocused","justFocused","mouseHovered","addAccessibilityAttributes","navId","addUniqueId","$nav","$navTriggers","$menus","$menu","$menuTrigger","settings","triggerId","$menuPanel","panelId","not","addEventListeners","onFocusIn","onFocusOut","onKeyDown","onMouseOver","onMouseOut","onMouseDown","onClick","onNavTriggerClick","$activeElement","AccessibleMegaMenus","activeElement","window","clearTimeout","focusTimeoutId","$closestPanel","$menuPanels","openMenu","$closestMenu","cvox","Api","getCurrentNode","setTimeout","node","has","hideAllMenus","relatedTarget","which","Key","Escape","$tabbables","insidePanel","found","UpArrow","DownArrow","LeftArrow","RightArrow","indexOf","$setFocus","index","getNewIndex","eq","first","Tab","shiftKey","toggleTriggersAndPanels","last","Space","Enter","stopPropagation","mouseTimeoutId","$focusable","$panels","isTouch","state","String","addClickOutsideEventListener","onOutsideClick","removeClickOutsideEventListener","pageScrollPosition","documentElement","scrollTop","openMenuTopPosition","offset","top","type","is","keyCode","$ancestors","$triggers","$el","id","uniqueId","defaults","AccessibleMegaMenuPseudos","Boolean","$elements","$element","forward","AccessibleMegaMenu","amm","_window","_document","_$document","_isTouch","navigator","msMaxTouchPoints","AccessibleMegaMenuDefaults","expr","pseudos","createPseudo","dataName","focusable","tabIndex","getAttribute","isTabIndexNaN","isNaN","NaN","tabbable","Number","visible","parents","canBeDisabled","disabled","HTMLAnchorElement","href","HTMLInputElement","HTMLSelectElement","HTMLTextAreaElement","HTMLButtonElement","some","T","selectors","push","onEvent","tab","LsToggle","toggleElement","callback","callbackParameters","cssClass","disableContent","$form","submit","print","refresh","value","val","isPlainObject","Object","keys","values","v","d","toggleProperty","property","location","reload","checkSelectors","textSelectors","$wrapper","compareValue","trim","condition","LsToggleClass","caller","callers","split","disabledBy","LsGuardedDisable"],"mappings":"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","file":"20250325-e800252bc3c64a375113.js","sourcesContent":["import $ = require(\"jquery\");\r\n\r\nimport LsCallback from \"~/Src/Components/Callback/Callback\";\r\nimport LsGuardedDisable from \"~/Src/Components/Utilities/GuardedDisable\";\r\nimport LsToggle from \"~/Src/Components/Toggle/Toggle\";\r\nimport LsTransition from \"~/Src/Components/Transition/Transition\";\r\nimport { forceRedraw } from \"~/Src/Components/Utilities/Utilities\";\r\n\r\nimport \"./Drawer.scss\";\r\n\r\ninterface IEventData {\r\n noActivation?: boolean;\r\n noTransition?: boolean;\r\n noDisabling?: boolean;\r\n}\r\n\r\ninterface IToggleData extends IEventData {\r\n opening?: boolean;\r\n}\r\n\r\nexport class LsDrawer {\r\n protected static initialized = false;\r\n protected static buttonSelectors = ['a[role=\"button\"]:not([aria-disabled=\"true\"])', \"button\", 'input[type=\"button\"]', 'input[type=\"submit\"]'];\r\n protected static fieldSelectors = ['input:not([type=\"hidden\"])', \"textarea\", \"select\"];\r\n\r\n public constructor() {\r\n if (!LsDrawer.initialized) {\r\n const $document = $(document);\r\n\r\n $(() => {\r\n this.toggleInitialDrawers();\r\n });\r\n $document.on(\"ajaxPageLoad\", () => {\r\n this.toggleInitialDrawers();\r\n });\r\n\r\n $document.on(\"click\", this.createSelectors(LsDrawer.buttonSelectors), (e: LsJQueryEvent, { noActivation, noTransition, noDisabling }: IEventData = {}) => {\r\n e.preventDefault();\r\n const $handle = $(e.currentTarget);\r\n const data: LsJQueryData = $handle.data();\r\n LsDrawer.toggle(data[\"target\"], $.extend({ noActivation, noTransition, noDisabling }, data));\r\n $handle.trigger(\"blur\");\r\n\r\n if ((data !== undefined) && (\"callback\" in data)) {\r\n LsCallback.call(data[\"callback\"], data[\"callbackParameters\"], e.currentTarget);\r\n }\r\n });\r\n\r\n $document.on(\"change\", this.createSelectors(['input[type=\"checkbox\"]']), (e: LsJQueryEvent, { noActivation, noTransition, noDisabling }: IEventData = {}) => {\r\n const $handle = $(e.currentTarget);\r\n const data: LsJQueryData = $handle.data();\r\n LsDrawer.toggle(data[\"target\"], $.extend({ noActivation, noTransition, noDisabling }, data));\r\n\r\n if ((data !== undefined) && (\"callback\" in data)) {\r\n LsCallback.call(data[\"callback\"], data[\"callbackParameters\"], e.currentTarget);\r\n }\r\n });\r\n\r\n $document.on(\"change\", this.createSelectors(['input[type=\"radio\"]']), (e, { noActivation, noTransition, noDisabling }: IEventData = {}) => {\r\n const $handle = $(e.currentTarget);\r\n const $context: JQuery = $handle.closest(\"form, body\");\r\n const context = $context.get(0);\r\n const name = $handle.attr(\"name\");\r\n const $radios = $context.find(`input[type=\"radio\"][name=\"${name}\"]`);\r\n const $radioSet = $radios.filter((i, el: Element): boolean => {\r\n return ($(el) as JQuery).closest(\"form, body\").get(0) === context;\r\n });\r\n $radioSet.each((i, el: HTMLInputElement) => {\r\n const $radio = $(el);\r\n const data: LsJQueryData = $radio.data();\r\n LsDrawer.toggle(data[\"target\"], $.extend({ opening: el.checked, noActivation, noTransition, noDisabling }, data));\r\n\r\n if ((data !== undefined) && (\"callback\" in data)) {\r\n LsCallback.call(data[\"callback\"], data[\"callbackParameters\"], el);\r\n }\r\n });\r\n });\r\n\r\n // don't set focus on label\r\n $document.on(\"mousedown\", \"[data-drawer-checkbox-label]\", e => {\r\n e.preventDefault();\r\n });\r\n\r\n // don't set focus on checkbox\r\n $document.on(\"click\", \"[data-drawer-checkbox-label]\", e => {\r\n if (e.target === e.currentTarget) {\r\n e.preventDefault();\r\n\r\n const $input = $(e.currentTarget).find(\"input\");\r\n const isChecked = $input.prop(\"checked\");\r\n $input.prop(\"checked\", !isChecked);\r\n $input.trigger(\"change\");\r\n }\r\n });\r\n\r\n LsDrawer.initialized = true;\r\n }\r\n }\r\n\r\n public static open = (selector: LsJQuerySelector): void => {\r\n const $drawers = $(selector);\r\n for (const el of $drawers.toArray()) {\r\n const $drawer = $(el);\r\n if (!$drawer.hasClass(\"lsc-open\")) {\r\n LsDrawer.toggle($drawer, { opening: true });\r\n }\r\n }\r\n }\r\n\r\n public static close = (selector: LsJQuerySelector): void => {\r\n const $drawers = $(selector) as JQuery;\r\n for (const el of $drawers.toArray()) {\r\n const $drawer = $(el);\r\n if ($drawer.hasClass(\"lsc-open\")) {\r\n LsDrawer.toggle($drawer, { opening: false });\r\n }\r\n }\r\n }\r\n\r\n public static toggle = (selector: LsJQuerySelector, { opening, noActivation, noTransition, noDisabling }: IToggleData = {}): void => {\r\n const $drawers = $(selector);\r\n\r\n $drawers.removeAttr(\"data-toggle-on-load\");\r\n\r\n let $handles: JQuery;\r\n if (typeof selector === \"string\") {\r\n $handles = $(`[data-toggle=\"drawer\"][data-target=\"${selector}\"]`);\r\n }\r\n if (!$handles || ($handles.length === 0)) {\r\n $handles = $('[data-toggle=\"drawer\"]').filter((i, handle): boolean => {\r\n const data: LsJQueryData = $(handle).data();\r\n if (data.target) {\r\n const $targets = $(data.target);\r\n for (const target of $targets.toArray()) {\r\n for (const drawer of $drawers.toArray()) {\r\n if (drawer === target) {\r\n return true;\r\n }\r\n }\r\n }\r\n }\r\n return false;\r\n });\r\n }\r\n if ($handles && ($handles.length > 0)) {\r\n for (const el of $handles.toArray()) {\r\n const $handle = $(el);\r\n const handleOpening = opening === undefined ? !$handle.hasClass(\"lsc-open\") : opening;\r\n $handle.toggleClass(\"lsc-open\", handleOpening);\r\n }\r\n }\r\n\r\n for (const target of $drawers.toArray()) {\r\n const $target = $(target);\r\n if ((opening === undefined) || (!opening === $target.hasClass(\"lsc-open\"))) {\r\n const drawerOpening = opening === undefined ? !$target.hasClass(\"lsc-open\") : opening;\r\n const selector = [...LsDrawer.buttonSelectors, ...LsDrawer.fieldSelectors].join(\", \");\r\n const $inputs = $target.find(selector).addBack(selector);\r\n if (!noTransition && LsTransition.isSupported) {\r\n $target.removeClass(\"lsc-closed\");\r\n const height = target.scrollHeight;\r\n const duration = Math.round(39 * Math.pow(height, .44));\r\n $target.css(\"transition-duration\", `${duration}ms`);\r\n\r\n if (drawerOpening) {\r\n $target.css(\"height\", height);\r\n if (!noDisabling) {\r\n LsGuardedDisable.enable($inputs, \"drawer\");\r\n }\r\n // do not by default set focus on field when drawer opens because mobile keyboard can cover field - per Alonna 2019-10-01\r\n // noActivation can be undefined\r\n if (noActivation === false) {\r\n LsToggle.activateContent($target);\r\n }\r\n $target.trigger(\"drawerOpen\");\r\n } else {\r\n const currentHeight = target.offsetHeight;\r\n $target.addClass(\"no-transition lsu-tsn-no\");\r\n $target.css(\"height\", currentHeight);\r\n forceRedraw(target);\r\n $target.removeClass(\"no-transition lsu-tsn-no\");\r\n $target.css(\"height\", 0);\r\n if (!noDisabling) {\r\n LsGuardedDisable.disable($inputs, \"drawer\");\r\n }\r\n $target.trigger(\"drawerClose\");\r\n }\r\n\r\n $target.on(\"transitionend\", { opening: drawerOpening } as any, LsDrawer.onTransitionEnd);\r\n } else {\r\n $target.toggleClass(\"lsc-closed\", !drawerOpening);\r\n if (drawerOpening) {\r\n if (!noDisabling) {\r\n LsGuardedDisable.enable($inputs, \"drawer\");\r\n }\r\n // do not by default set focus on field when drawer opens because mobile keyboard can cover field - per Alonna 2019-10-01\r\n // noActivation can be undefined\r\n if (noActivation === false) {\r\n LsToggle.activateContent($target);\r\n }\r\n } else {\r\n const $focused = $target.find(\":focus\");\r\n if ($focused.length > 0) {\r\n $focused.trigger(\"blur\");\r\n }\r\n if (!noDisabling) {\r\n LsGuardedDisable.disable($inputs, \"drawer\");\r\n }\r\n }\r\n }\r\n\r\n $target.toggleClass(\"no-transition lsu-tsn-no\", !!noTransition); // noTransition can be undefined\r\n $target.toggleClass(\"lsc-open\", drawerOpening);\r\n forceRedraw(target);\r\n $target.removeClass(\"no-transition lsu-tsn-no\");\r\n }\r\n }\r\n }\r\n\r\n protected createSelectors = (elements: Array<string>): string => {\r\n const selectors = elements.map(element => `${element}[data-toggle=\"drawer\"]`);\r\n return selectors.join(\", \");\r\n }\r\n\r\n protected static onTransitionEnd = (e: LsJQueryEvent<Element, { opening: boolean }>) => {\r\n if (e.target === e.currentTarget) {\r\n const $target = $(e.currentTarget);\r\n $target.addClass(\"no-transition lsu-tsn-no\");\r\n $target.css(\"height\", \"\");\r\n $target.toggleClass(\"lsc-closed\", !e.data || !e.data.opening);\r\n forceRedraw(e.currentTarget);\r\n $target.removeClass(\"no-transition lsu-tsn-no\");\r\n $target.off(\"transitionend\", LsDrawer.onTransitionEnd);\r\n }\r\n }\r\n\r\n protected toggleInitialDrawers = (): void => {\r\n const $drawers = $(\"[data-drawer][data-toggle-on-load]\");\r\n if ($drawers.length > 0) {\r\n $drawers.each((i, el: Element) => {\r\n LsDrawer.toggle(el);\r\n });\r\n }\r\n }\r\n}\r\n\r\nexport default LsDrawer;","/*\r\nCopyright © 2013 Adobe Systems Incorporated.\r\n\r\nLicensed under the Apache License, Version 2.0 (the “Licenseâ€);\r\nyou may not use this file except in compliance with the License.\r\nYou may obtain a copy of the License at\r\n\r\nhttp://www.apache.org/licenses/LICENSE-2.0\r\n\r\nUnless required by applicable law or agreed to in writing, software\r\ndistributed under the License is distributed on an “AS IS†BASIS,\r\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\nSee the License for the specific language governing permissions and\r\nlimitations under the License.\r\n*/\r\n\r\nimport { Key } from \"ts-keycode-enum\";\r\n\r\nimport { uniqueId } from \"~/Src/Components/Utilities/Utilities\";\r\n\r\nimport \"./AccessibleMegaMenu.scss\";\r\n\r\ninterface IAccessibleMegaMenuOptions {\r\n navSelector: string; // CSS selector for topmost wrapper of navigation\r\n navTriggerSelector: string; // CSS selector for button-like element to toggle entire navigation\r\n menuSelector: string; // CSS selector for wrapper of individual menu within navigation\r\n menuTriggerSelector: string; // CSS selector for link/button element to toggle individual content\r\n menuPanelSelector: string; // CSS selector for individual menu content\r\n openClass: string; // CSS class for the open state\r\n openOnMouseover: boolean | (() => boolean); // whether menu should open on mouseover\r\n openDelay: number; // open delay when opening menu via mouseover\r\n closeDelay: number; // open delay when opening menu via mouseover\r\n //hoverClass: string; // CSS class for the hover state\r\n //focusClass: string; // CSS class for the focus state\r\n}\r\n\r\nclass AccessibleMegaMenuDefaults implements IAccessibleMegaMenuOptions {\r\n public navSelector = \"[data-amm-nav]\";\r\n public navTriggerSelector = \"[data-amm-nav-trigger]\";\r\n public menuSelector = \"[data-amm-menu]\";\r\n public menuTriggerSelector = \"[data-amm-menu-trigger]\";\r\n public menuPanelSelector = \"[data-amm-menu-panel]\";\r\n public openClass = \"lsc-amm--open\"; // default css class for the open state\r\n public openOnMouseover = false; // default setting for whether menu should open on mouseover\r\n public openDelay = 150; // default open delay when opening menu via mouseover\r\n public closeDelay = 300; // default open delay when opening menu via mouseover\r\n //public hoverClass = \"lsc-amm--hover\"; // default css class for the hover state\r\n //public focusClass = \"lsc-amm--focus\"; // default css class for the focus state\r\n}\r\n\r\nexport class AccessibleMegaMenu {\r\n protected get openOnMouseover() {\r\n if (typeof this.settings?.openOnMouseover === \"function\") {\r\n return this.settings.openOnMouseover();\r\n }\r\n return Boolean(this.settings?.openOnMouseover || false);\r\n }\r\n\r\n protected $nav: JQuery;\r\n protected $navTriggers: JQuery;\r\n protected $menus: JQuery;\r\n protected $menuPanels: JQuery;\r\n\r\n protected settings: IAccessibleMegaMenuOptions;\r\n\r\n protected focusTimeoutId: ReturnType<typeof window.setTimeout>;\r\n protected mouseTimeoutId: ReturnType<typeof window.setTimeout>;\r\n\r\n protected mouseFocused = false;\r\n protected justFocused = false;\r\n\r\n protected mouseHovered = false;\r\n\r\n public constructor(el: HTMLElement, options?: Partial<IAccessibleMegaMenuOptions>) {\r\n this.$nav = $(el);\r\n const initialized = !!this.$nav.data(\"amm\");\r\n if (!initialized) {\r\n this.settings = $.extend({}, AccessibleMegaMenus.defaults, options, this.$nav.data(), this.$nav.data(\"options\"));\r\n this.$nav.data(\"amm\", this);\r\n\r\n this.$navTriggers = $(this.settings.navTriggerSelector);\r\n this.$menus = this.$nav.find(this.settings.menuSelector);\r\n this.$menuPanels = this.$nav.find(this.settings.menuPanelSelector);\r\n\r\n const ammp = new AccessibleMegaMenuPseudos();\r\n this.addAccessibilityAttributes();\r\n this.addEventListeners();\r\n }\r\n }\r\n\r\n protected addAccessibilityAttributes = () => {\r\n const navId = this.addUniqueId(this.$nav);\r\n\r\n this.$navTriggers.attr({ \r\n \"aria-expanded\": false,\r\n \"aria-pressed\": false,\r\n \"aria-controls\": navId,\r\n });\r\n\r\n for (const el of this.$menus.toArray()) {\r\n const $menu = $(el);\r\n\r\n const $menuTrigger = $menu.find(this.settings.menuTriggerSelector);\r\n const triggerId = this.addUniqueId($menuTrigger);\r\n\r\n const $menuPanel = $menu.find(this.settings.menuPanelSelector);\r\n if ($menuPanel.length > 0) {\r\n const panelId = this.addUniqueId($menuPanel);\r\n\r\n $menuTrigger.attr({\r\n \"role\": \"button\",\r\n \"aria-controls\": panelId,\r\n \"aria-expanded\": false,\r\n \"tabindex\": 0,\r\n });\r\n\r\n $menuPanel.attr({\r\n \"role\": \"region\",\r\n \"aria-expanded\": false,\r\n \"aria-hidden\": true,\r\n });\r\n\r\n $menuPanel.not(\"[aria-labelledby]\").attr(\"aria-labelledby\", triggerId);\r\n }\r\n }\r\n }\r\n\r\n protected addEventListeners = () => {\r\n this.$nav.on(\"focusin\", `:focusable, ${this.settings.menuPanelSelector}`, this.onFocusIn);\r\n this.$nav.on(\"focusout\", `:focusable, ${this.settings.menuPanelSelector}`, this.onFocusOut);\r\n this.$nav.on(\"keydown\", this.onKeyDown);\r\n this.$nav.on(\"mouseover\", this.onMouseOver);\r\n this.$nav.on(\"mouseout\", this.onMouseOut);\r\n this.$nav.on(\"mousedown\", this.onMouseDown);\r\n this.$nav.on(\"click\", this.onClick);\r\n\r\n this.$navTriggers.on(\"click\", this.onNavTriggerClick);\r\n\r\n //if (AccessibleMegaMenus.isTouch) {\r\n // this.$nav.on(\"touchmove\", this.touchmoveHandler);\r\n //}\r\n\r\n const $activeElement = $(AccessibleMegaMenus.document.activeElement);\r\n const $closestNav = $activeElement.closest(this.$nav);\r\n if ($closestNav.length > 0) {\r\n $activeElement.trigger(\"focusin\");\r\n }\r\n }\r\n\r\n protected onFocusIn = (e: LsJQueryEvent) => {\r\n AccessibleMegaMenus.window.clearTimeout(this.focusTimeoutId);\r\n const $closestPanel = $(e.target).closest(this.settings.menuPanelSelector) as JQuery;\r\n this.justFocused = !this.mouseFocused || (!this.openOnMouseover && this.mouseFocused);\r\n this.mouseFocused = false;\r\n if (this.justFocused) {\r\n const $panels = this.$menuPanels.not($closestPanel).filter(`.${this.settings.openClass}`);\r\n if ($panels.length > 0) {\r\n this.openMenu(e);\r\n }\r\n }\r\n }\r\n\r\n protected onFocusOut = (e: LsJQueryEvent) => {\r\n this.justFocused = false;\r\n const $closestMenu = $(e.target).closest(this.settings.menuSelector);\r\n\r\n if (typeof (AccessibleMegaMenus.window as any).cvox?.Api?.getCurrentNode === \"function\") { // if ChromeVox is running\r\n this.focusTimeoutId = AccessibleMegaMenus.window.setTimeout(() => {\r\n (window as any).cvox.Api.getCurrentNode((node: Element) => {\r\n if ($closestMenu.has(node).length > 0) { // the current node being voiced is in the menu\r\n // keep the panel open\r\n AccessibleMegaMenus.window.clearTimeout(this.focusTimeoutId);\r\n } else {\r\n this.focusTimeoutId = AccessibleMegaMenus.window.setTimeout(() => {\r\n this.hideAllMenus(e);\r\n }, 275); // TODO: what is this for? should it be moved to settings?\r\n }\r\n });\r\n }, 25); // TODO: what is this for? should it be moved to settings?\r\n } else {\r\n this.focusTimeoutId = AccessibleMegaMenus.window.setTimeout(() => {\r\n if (!this.mouseFocused || (e as JQuery.EventBase).relatedTarget) {\r\n this.hideAllMenus(e);\r\n }\r\n }, 300); // TODO: what is this for? should it be moved to settings?\r\n }\r\n }\r\n\r\n protected onKeyDown = (e: LsJQueryEvent) => {\r\n const $target = $(e.target) as JQuery;\r\n\r\n // TODO: handle arrow keys on form elements in a menu\r\n\r\n if (e.which === Key.Escape) {\r\n this.mouseFocused = false;\r\n this.hideAllMenus(e);\r\n } else {\r\n const $closestMenu = $target.closest(this.settings.menuSelector);\r\n const $closestPanel = $target.closest(this.settings.menuPanelSelector);\r\n const $tabbables = this.$nav.find(\":tabbable\");\r\n const insidePanel = ($closestMenu.length === 1) && ($closestPanel.length === 1);\r\n let found = false;\r\n\r\n if ([Key.UpArrow, Key.DownArrow, Key.LeftArrow, Key.RightArrow].indexOf(e.which) >= 0) {\r\n e.preventDefault();\r\n this.mouseFocused = false;\r\n\r\n let $setFocus: JQuery;\r\n if ((e.which === Key.UpArrow) || (e.which === Key.DownArrow)) {\r\n if (insidePanel) {\r\n const $tabbables = $closestMenu.find(\":tabbable\");\r\n const index = this.getNewIndex($tabbables, $target, e.which === Key.DownArrow);\r\n if (index >= 0) {\r\n $setFocus = $tabbables.eq(index);\r\n }\r\n } else if (e.which === Key.UpArrow) {\r\n this.hideAllMenus(e);\r\n } else {\r\n this.openMenu(e);\r\n const $panels = $closestMenu.find(this.settings.menuPanelSelector);\r\n $setFocus = $panels.find(\":tabbable\").first();\r\n }\r\n } else if ((e.which === Key.LeftArrow) || (e.which === Key.RightArrow)) {\r\n const $menus = this.$menus.filter(\":visible\");\r\n const index = this.getNewIndex($menus, $closestMenu, e.which === Key.RightArrow);\r\n if (index >= 0) {\r\n const $newMenu = $menus.eq(index);\r\n $setFocus = $newMenu.find(this.settings.menuTriggerSelector);\r\n }\r\n }\r\n if ($setFocus?.length === 1) {\r\n $setFocus.trigger(\"focus\");\r\n found = true;\r\n }\r\n } else if (e.which === Key.Tab) {\r\n this.mouseFocused = false;\r\n let $setFocus: JQuery;\r\n if (e.shiftKey && !insidePanel && $target.hasClass(this.settings.openClass)) {\r\n this.hideAllMenus(e);\r\n const $menus = this.$menus.filter(\":visible\");\r\n const index = this.getNewIndex($menus, $closestMenu, !e.shiftKey);\r\n if (index >= 0) {\r\n const $menu = $menus.eq(index);\r\n const $panels = $menu.find(this.settings.menuPanelSelector);\r\n if ($panels.length > 0) {\r\n this.toggleTriggersAndPanels($menu, true);\r\n $setFocus = $menu.find(\":tabbable\").last();\r\n }\r\n }\r\n } else {\r\n const index = this.getNewIndex($tabbables, $target, !e.shiftKey)\r\n if (index >= 0) {\r\n $setFocus = $tabbables.eq(index);\r\n }\r\n }\r\n if ($setFocus?.length === 1) {\r\n $setFocus.trigger(\"focus\");\r\n found = true;\r\n }\r\n if (found) {\r\n e.preventDefault();\r\n }\r\n } else if ((e.which === Key.Space) || (e.which === Key.Enter)) {\r\n if (!insidePanel) {\r\n const $panels = $closestMenu.find(this.settings.menuPanelSelector);\r\n if ($panels.length === 1) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n if ($target.hasClass(this.settings.openClass)) {\r\n this.hideAllMenus(e);\r\n } else {\r\n this.openMenu(e);\r\n this.justFocused = false;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n this.justFocused = false;\r\n }\r\n\r\n protected onMouseOver = (e: LsJQueryEvent) => {\r\n AccessibleMegaMenus.window.clearTimeout(this.mouseTimeoutId);\r\n this.mouseHovered = true;\r\n\r\n if (this.openOnMouseover) {\r\n this.mouseTimeoutId = AccessibleMegaMenus.window.setTimeout(() => {\r\n const $target = $(e.target);\r\n this.openMenu(e);\r\n }, this.settings.openDelay);\r\n }\r\n }\r\n\r\n protected onMouseOut = (e: LsJQueryEvent) => {\r\n AccessibleMegaMenus.window.clearTimeout(this.mouseTimeoutId);\r\n this.mouseHovered = false;\r\n\r\n if (this.openOnMouseover) {\r\n this.mouseTimeoutId = AccessibleMegaMenus.window.setTimeout(() => {\r\n this.hideAllMenus(e);\r\n }, this.settings.closeDelay);\r\n }\r\n }\r\n\r\n protected onMouseDown = (e: LsJQueryEvent) => {\r\n const $target = $(e.target);\r\n const $closestPanel = $target.closest(this.settings.menuPanelSelector);\r\n const $focusable = $target.closest(\":focusable\");\r\n\r\n if (($closestPanel.length > 0) || ($focusable.length > 0)) {\r\n this.mouseFocused = true;\r\n }\r\n\r\n AccessibleMegaMenus.window.clearTimeout(this.mouseTimeoutId);\r\n this.mouseTimeoutId = AccessibleMegaMenus.window.setTimeout(() => {\r\n AccessibleMegaMenus.window.clearTimeout(this.focusTimeoutId);\r\n }, 1);\r\n }\r\n\r\n protected onClick = (e: LsJQueryEvent) => {\r\n const $target = $(e.target).closest(\":tabbable\");\r\n\r\n const $closestMenu = $target.closest(this.settings.menuSelector);\r\n const $closestPanel = $target.closest(this.settings.menuPanelSelector);\r\n const $panels = $closestMenu.find(this.settings.menuPanelSelector);\r\n const insidePanel = ($closestMenu.length === 1) && ($closestPanel.length === 1);\r\n\r\n // TODO: fix bug original in plugin - window losing and regaining focus triggers focusin which sets justfocused back to true\r\n if (!insidePanel && ($panels.length === 1) && (!this.mouseHovered || AccessibleMegaMenus.isTouch || !this.openOnMouseover)) {\r\n if (!$target.hasClass(this.settings.openClass)) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.openMenu(e);\r\n this.justFocused = false;\r\n } else if (this.justFocused) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.justFocused = false;\r\n } else if (!this.mouseHovered || (!AccessibleMegaMenus.isTouch && !this.openOnMouseover)) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.hideAllMenus(e);\r\n }\r\n }\r\n }\r\n\r\n protected onNavTriggerClick = () => {\r\n // TODO: handle multiple nav triggers\r\n const state = this.$navTriggers.attr(\"aria-expanded\") !== \"true\";\r\n this.$navTriggers.attr({\r\n \"aria-expanded\": String(state),\r\n \"aria-pressed\": String(state),\r\n });\r\n this.$nav.toggleClass(\"lsc-amm--open\", state);\r\n }\r\n\r\n protected addClickOutsideEventListener = () => {\r\n AccessibleMegaMenus.$document.on(\"mouseup touchend mspointerup pointerup\", null, this.onOutsideClick); // null selector to satisfy jQuery type definitions\r\n }\r\n\r\n protected removeClickOutsideEventListener = () => {\r\n AccessibleMegaMenus.$document.off(\"mouseup touchend mspointerup pointerup\", this.onOutsideClick);\r\n }\r\n\r\n protected onOutsideClick = (e: LsJQueryEvent) => {\r\n const $closestMenu = $(e.target).closest(this.settings.menuSelector);\r\n if ($closestMenu.length === 0) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.hideAllMenus(e);\r\n }\r\n }\r\n\r\n // TODO: replace with MutationObserver for performance\r\n //protected addDomAttributeModifiedEventListener = () => {\r\n // // Narrator in Windows 8 automatically toggles the aria-expanded property on double tap or click.\r\n // // To respond to the change to collapse the panel, we must add a listener for a DOMAttrModified event.\r\n // const $panels = this.$menuPanels.filter('[aria-expanded=\"true\"]');\r\n // $panels.on(\"DOMAttrModified\", this.onDomAttributeModified);\r\n //}\r\n //\r\n //protected removeDomAttributeModifiedEventListener = () => {\r\n // this.$menuPanels.off(\"DOMAttrModified\", this.onDomAttributeModified);\r\n //}\r\n //\r\n //// handle Windows 8 Narrator ExpandCollapse pattern\r\n //protected onDomAttributeModified = (e: LsJQueryEvent) => {\r\n // const originalEvent: { [name: string]: any } = e.originalEvent;\r\n // if ((originalEvent.attrName === \"aria-expanded\") && (originalEvent.newValue === \"false\") && $(e.target).hasClass(this.settings.openClass)) {\r\n // e.preventDefault();\r\n // e.stopPropagation();\r\n // this.hideAllMenus(e);\r\n // }\r\n //}\r\n\r\n protected openMenu = (e: LsJQueryEvent) => {\r\n this.removeClickOutsideEventListener();\r\n //this.removeDomAttributeModifiedEventListener();\r\n AccessibleMegaMenus.window.clearTimeout(this.focusTimeoutId);\r\n\r\n const $target = $(e.target) as JQuery;\r\n const $closestMenu = $target.closest(this.settings.menuSelector);\r\n if ($closestMenu.length > 0) {\r\n const $menus = $(this.settings.menuSelector).not($closestMenu);\r\n this.toggleTriggersAndPanels($menus, false);\r\n\r\n this.toggleTriggersAndPanels($closestMenu, true);\r\n\r\n const pageScrollPosition = AccessibleMegaMenus.document.documentElement.scrollTop;\r\n const openMenuTopPosition = $closestMenu.offset().top;\r\n if (pageScrollPosition > openMenuTopPosition) {\r\n AccessibleMegaMenus.document.documentElement.scrollTop = openMenuTopPosition;\r\n }\r\n\r\n if ((e.type === \"mouseover\") && ($closestMenu.length === 1)) {\r\n const $closestPanel = $target.closest(this.settings.menuPanelSelector);\r\n if ($closestPanel.length === 0) {\r\n const $activeElement = this.$nav.find(AccessibleMegaMenus.document.activeElement);\r\n if (($activeElement.length > 0) && $target.is(\":tabbable\")) {\r\n $target.trigger(\"focus\");\r\n this.justFocused = false;\r\n }\r\n }\r\n }\r\n\r\n this.addClickOutsideEventListener();\r\n //this.addDomAttributeModifiedEventListener();\r\n } else {\r\n this.toggleTriggersAndPanels(this.$nav, false);\r\n }\r\n }\r\n\r\n protected hideAllMenus = (e: LsJQueryEvent) => {\r\n this.removeClickOutsideEventListener();\r\n //this.removeDomAttributeModifiedEventListener();\r\n\r\n const $menus = this.$menus.has(`.${this.settings.openClass}`);\r\n if (!(e as JQuery.EventBase).relatedTarget || !($menus.is((e as JQuery.EventBase).relatedTarget) || $menus.has((e as JQuery.EventBase).relatedTarget).length > 0)) {\r\n if (((e.type === \"mouseout\") || (e.type === \"focusout\")) && ($menus.has(AccessibleMegaMenus.document.activeElement).length > 0)) {\r\n return;\r\n }\r\n\r\n this.toggleTriggersAndPanels($menus, false);\r\n\r\n //if (((e.type === \"keydown\") && (e.keyCode === Key.Escape)) || (e.type === \"DOMAttrModified\")) {\r\n if ((e.type === \"keydown\") && (e.keyCode === Key.Escape)) {\r\n AccessibleMegaMenus.window.setTimeout(() => {\r\n //this.$nav.find(this.settings.menuPanelSelector).off(\"DOMAttrModified\", this.onDomAttributeModified);\r\n const $trigger = $menus.find(this.settings.menuTriggerSelector).first();\r\n $trigger.trigger(\"focus\");\r\n this.justFocused = false;\r\n }, 99); // TODO: what is this for? should it be moved to settings?\r\n }\r\n } else if ($menus.length === 0) {\r\n this.toggleTriggersAndPanels(this.$nav, false);\r\n }\r\n }\r\n\r\n // TODO: what is the precedent for this variable name in other components?\r\n protected toggleTriggersAndPanels = ($ancestors: JQuery, opening: boolean) => {\r\n const $panels = $ancestors.find(this.settings.menuPanelSelector);\r\n if (!opening || ($panels.length > 0)) {\r\n const $triggers = $ancestors.find(this.settings.menuTriggerSelector);\r\n $triggers.toggleClass(this.settings.openClass, opening);\r\n $panels.toggleClass(this.settings.openClass, opening);\r\n $triggers.attr({ \"aria-expanded\": String(opening) });\r\n $panels.attr({ \"aria-expanded\": String(opening), \"aria-hidden\": String(!opening) });\r\n }\r\n }\r\n\r\n protected getNewIndex($elements: JQuery, $element: JQuery, forward: boolean) {\r\n const index = $elements.index($element);\r\n if ((!forward && (index > 0)) || (forward && (index < $elements.length - 1))) {\r\n return index + (forward ? 1 : -1);\r\n }\r\n return -1;\r\n }\r\n\r\n protected addUniqueId = ($el: JQuery) => {\r\n const el = $el.get(0);\r\n const id = uniqueId(el);\r\n el.id = id;\r\n return id;\r\n }\r\n}\r\n\r\nexport class AccessibleMegaMenus {\r\n protected static _window: Window;\r\n public static get window() {\r\n return AccessibleMegaMenus._window || (AccessibleMegaMenus._window = window);\r\n }\r\n\r\n protected static _document: Document;\r\n public static get document() {\r\n return AccessibleMegaMenus._document || (AccessibleMegaMenus._document = document);\r\n }\r\n\r\n protected static _$document: JQuery<Document>;\r\n public static get $document() {\r\n return AccessibleMegaMenus._$document || (AccessibleMegaMenus._$document = $(AccessibleMegaMenus.document));\r\n }\r\n\r\n protected static _isTouch: boolean;\r\n public static get isTouch() {\r\n if (AccessibleMegaMenus._isTouch === undefined) {\r\n AccessibleMegaMenus._isTouch = AccessibleMegaMenus._isTouch = \"ontouchstart\" in window || !!(window.navigator as any).msMaxTouchPoints;\r\n }\r\n return AccessibleMegaMenus._isTouch;\r\n }\r\n\r\n public static readonly defaults = new AccessibleMegaMenuDefaults();\r\n\r\n public constructor() {\r\n $(() => {\r\n const $navs = $(AccessibleMegaMenus.defaults.navSelector);\r\n for (const el of $navs.toArray()) {\r\n const data = $(el).data();\r\n if (!data?.amm) {\r\n const amm = new AccessibleMegaMenu(el);\r\n }\r\n }\r\n });\r\n }\r\n\r\n // Handle touch move event on menu\r\n //protected touchmoveHandler = () => {\r\n // this.justMoved = true;\r\n //}\r\n}\r\n\r\nclass AccessibleMegaMenuPseudos {\r\n protected static initialized = false;\r\n\r\n public constructor() {\r\n if (!AccessibleMegaMenuPseudos.initialized) {\r\n /* :focusable and :tabbable selectors originally from\r\n https://raw.github.com/jquery/jquery-ui/master/ui/jquery.ui.core.js */\r\n\r\n $.extend($.expr.pseudos, {\r\n data: $.expr.createPseudo((dataName: string) => el => !!$.data(el, dataName)),\r\n\r\n focusable: (el: Element) => {\r\n const tabIndex = el.getAttribute(\"tabindex\");\r\n const isTabIndexNaN = isNaN(tabIndex as any ?? NaN);\r\n return AccessibleMegaMenuPseudos.focusable(el, isTabIndexNaN);\r\n },\r\n\r\n tabbable: (el: Element) => {\r\n const tabIndex = el.getAttribute(\"tabindex\");\r\n const isTabIndexNaN = isNaN(tabIndex as any ?? NaN);\r\n return (isTabIndexNaN || (Number(tabIndex) >= 0)) && AccessibleMegaMenuPseudos.focusable(el, isTabIndexNaN);\r\n },\r\n });\r\n }\r\n }\r\n\r\n public static visible(el: Element) {\r\n if ($.expr.pseudos.visible(el)) {\r\n const $hidden = $(el).parents().addBack().filter((i, el) => $(el).css(\"visibility\") === \"hidden\");\r\n return $hidden.length === 0;\r\n }\r\n return false;\r\n }\r\n\r\n public static focusable(el: Element, isTabIndexNaN: boolean) {\r\n if (AccessibleMegaMenuPseudos.visible(el)) {\r\n if (AccessibleMegaMenuPseudos.canBeDisabled(el)) {\r\n return !el.disabled;\r\n } else if (el instanceof HTMLAnchorElement && el.href) {\r\n return true;\r\n }\r\n return !isTabIndexNaN;\r\n }\r\n return false;\r\n }\r\n\r\n protected static canBeDisabled(el: Element): el is HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement | HTMLButtonElement {\r\n return [HTMLInputElement, HTMLSelectElement, HTMLTextAreaElement, HTMLButtonElement].some(T => el instanceof T);\r\n }\r\n}\r\n\r\nexport default AccessibleMegaMenus;","import $ = require(\"jquery\");\r\n\r\nimport LsCallback from \"~/Src/Components/Callback/Callback\";\r\nimport LsGuardedDisable from \"~/Src/Components/Utilities/GuardedDisable\";\r\nimport { forceRedraw } from \"~/Src/Components/Utilities/Utilities\";\r\n\r\ninterface IOnEvent {\r\n (el: Element, data: { toggle: \"tab\", tab: LsJQuerySelector, target: LsJQuerySelector, state?: boolean, callback?: string }): void;\r\n (el: Element, data: { toggle: \"class\", target: LsJQuerySelector, cssClass: string, state?: boolean, callback?: string }): void;\r\n (el: Element, data: { toggle: \"element\", target: LsJQuerySelector, state?: boolean, callback?: string } & IEventData): void;\r\n (el: Element, data: { toggle: \"submit\", target?: LsJQuerySelector, callback?: string }): void;\r\n (el: Element, data: { toggle: \"print\" }): void;\r\n (el: Element, data: { toggle: \"refresh\" }): void;\r\n}\r\n\r\ninterface IEventData {\r\n noActivation?: boolean;\r\n}\r\n\r\nexport class LsToggle {\r\n protected static initialized = false;\r\n protected $document: JQuery<Document>;\r\n\r\n protected static buttonSelectors = ['a[role=\"button\"]:not([aria-disabled=\"true\"])', \"button\", 'input[type=\"button\"]', 'input[type=\"submit\"]'];\r\n protected static checkSelectors = ['input[type=\"checkbox\"]', 'input[type=\"radio\"]'];\r\n protected static textSelectors = ['input[type=\"date\"]', 'input[type=\"datetime-local\"]', 'input[type=\"email\"]', 'input[type=\"password\"]', 'input[type=\"tel\"]', 'input[type=\"text\"]', 'input[type=\"time\"]', \"textarea\"];\r\n protected static fieldSelectors = ['input:not([type=\"hidden\"])', \"textarea\", \"select\"];\r\n\r\n public constructor() {\r\n if (!LsToggle.initialized) {\r\n this.$document = $(document);\r\n\r\n this.$document.on(\"click\", this.createSelectors(LsToggle.buttonSelectors), (e, { noActivation }: IEventData = {}) => {\r\n e.preventDefault();\r\n const $el = $(e.currentTarget);\r\n const data = $el.data();\r\n if (noActivation !== undefined) {\r\n data.noActivation = noActivation;\r\n }\r\n this.onEvent(e.currentTarget, data as any);\r\n });\r\n this.$document.on(\"change\", this.createSelectors(['input[type=\"checkbox\"]']), (e, { noActivation }: IEventData = {}) => {\r\n const $el = $(e.currentTarget);\r\n const data = $el.data();\r\n if (noActivation !== undefined) {\r\n data.noActivation = noActivation;\r\n }\r\n this.onEvent(e.currentTarget, data as any);\r\n });\r\n this.$document.on(\"change\", this.createSelectors(['input[type=\"radio\"]']), (e: LsJQueryEvent<HTMLInputElement>, { noActivation }: IEventData = {}) => {\r\n const $el = $(e.currentTarget);\r\n const $context = $el.closest(\"form, body\");\r\n const context = $context.get(0);\r\n const name = e.currentTarget.name;\r\n const $radios = $context.find(`input[type=\"radio\"][name=\"${name}\"]`);\r\n const $radioSet = $radios.filter((i, el) => {\r\n return $(el).closest(\"form, body\").get(0) === context;\r\n });\r\n $radioSet.each((i, el: HTMLInputElement) => {\r\n const $radio = $(el);\r\n const data: LsJQueryData = $radio.data();\r\n data.state = el.checked;\r\n if (noActivation !== undefined) {\r\n data.noActivation = noActivation;\r\n }\r\n this.onEvent(e.currentTarget, data as any);\r\n });\r\n });\r\n\r\n this.$document.on(\"change\", this.createSelectors([\"select\"]), (e, { noActivation }: IEventData = {}) => {\r\n const $el = $(e.currentTarget);\r\n const data: LsJQueryData = $el.data();\r\n if (noActivation !== undefined) {\r\n data.noActivation = noActivation;\r\n }\r\n const value = $el.val();\r\n if ($.isPlainObject(data.target)) {\r\n for (const selector of Object.keys(data.target)) {\r\n const values = data.target[selector].map(v => String(v));\r\n const d = {\r\n ...data,\r\n target: selector,\r\n state: values.indexOf(value) >= 0,\r\n };\r\n this.onEvent(e.currentTarget, d as any);\r\n }\r\n }\r\n $el.data(\"prevValue\", value);\r\n });\r\n\r\n this.$document.on(\"change\", 'input[type=\"radio\"][data-toggle=\"tab\"]', (e: LsJQueryEvent<HTMLInputElement>, { noActivation }: IEventData = {}) => {\r\n e.preventDefault();\r\n const $tabs = $(`input[type=\"radio\"][data-toggle=\"tab\"][name=\"${e.currentTarget.name}\"]`);\r\n $tabs.each((i, el: HTMLElement) => {\r\n const $tab = $(el);\r\n const data: LsJQueryData = $tab.data();\r\n data.tab = el;\r\n data.state = el === e.currentTarget;\r\n if (noActivation !== undefined) {\r\n data.noActivation = noActivation;\r\n }\r\n this.onEvent(e.currentTarget, data as any);\r\n });\r\n });\r\n\r\n LsToggle.initialized = true;\r\n }\r\n }\r\n\r\n protected createSelectors = (elements: Array<string>): string => {\r\n let selectors: Array<string> = [];\r\n for (let element of elements) {\r\n for (let toggle of [\"class\", \"element\", \"submit\", \"print\", \"refresh\"]) {\r\n selectors.push(`${element}[data-toggle=\"${toggle}\"]`);\r\n }\r\n }\r\n return selectors.join(\", \");\r\n }\r\n\r\n protected onEvent: IOnEvent = (el: Element, data): void => {\r\n switch (data.toggle) {\r\n case \"tab\":\r\n if ((data.tab !== undefined) && (data.target !== undefined)) {\r\n $(data.tab).each((i, el) => LsToggle.toggleClass($(el).closest(\"[data-tab]\"), \"lsc-active\", data.state));\r\n $(data.target).each((i, el) => LsToggle.toggleElement($(el), data.state));\r\n //$(data.target).find(this.fieldSelectors.join(\", \")).each((i, el) => this.toggleProperty($(el), \"disabled\", !data.state));\r\n if ((data.callback !== undefined) && data.state) {\r\n LsCallback.call(data.callback, data.callbackParameters, el);\r\n }\r\n }\r\n break;\r\n case \"class\":\r\n $(data.target).each((i, el) => LsToggle.toggleClass($(el), data.cssClass, data.state));\r\n if ((data.callback !== undefined) && data.state) {\r\n LsCallback.call(data.callback, data.callbackParameters, el);\r\n }\r\n break;\r\n case \"element\":\r\n if (data.target !== undefined) {\r\n $(data.target).each((i, el) => {\r\n const $target = $(el);\r\n LsToggle.toggleElement($target, data.state);\r\n LsToggle.disableContent($target, data.state === undefined ? undefined : !data.state);\r\n if (!data.noActivation) {\r\n LsToggle.activateContent($target);\r\n }\r\n });\r\n if ((data.callback !== undefined) && (data.state !== false)) {\r\n LsCallback.call(data.callback, data.callbackParameters, el);\r\n }\r\n }\r\n break;\r\n case \"submit\":\r\n $(data.target || el).each((i, el) => {\r\n const $target = $(el);\r\n\r\n let $form = $target.closest(\"form\");\r\n\r\n if ($form.length === 0) {\r\n const id = $target.attr(\"form\");\r\n $form = $(`#${id}`);\r\n }\r\n\r\n if ($form.length > 0) {\r\n LsToggle.submit($form);\r\n }\r\n });\r\n if (data.callback !== undefined) {\r\n LsCallback.call(data.callback, data.callbackParameters, el);\r\n }\r\n break;\r\n case \"print\":\r\n LsToggle.print();\r\n break;\r\n case \"refresh\":\r\n LsToggle.refresh();\r\n break;\r\n }\r\n }\r\n\r\n public static toggleClass($target: JQuery, cssClass: string, state?: boolean) {\r\n $target.toggleClass(cssClass, state);\r\n }\r\n\r\n public static toggleElement($target: JQuery, state?: boolean) {\r\n if (state === undefined) {\r\n state = $target.prop(\"hidden\");\r\n }\r\n $target.prop(\"hidden\", !state);\r\n }\r\n\r\n public static toggleProperty($target: JQuery, property: string, state?: boolean) {\r\n if (state === undefined) {\r\n state = !$target.prop(property);\r\n }\r\n $target.prop(property, state);\r\n }\r\n\r\n public static submit($target: JQuery) {\r\n $target.trigger(\"submit\");\r\n }\r\n\r\n public static print() {\r\n window.print();\r\n }\r\n\r\n public static refresh() {\r\n window.location.reload(true);\r\n }\r\n\r\n public static activateContent($target: JQuery) {\r\n const $input = $target.not(\"[data-no-activation]\").find(LsToggle.fieldSelectors.join(\", \")).addBack(LsToggle.fieldSelectors.join(\", \")).not(\"[data-no-activation]\");\r\n if (($input.length !== 1) || !$target.is(\":visible\") || $input.is(\":disabled\")) {\r\n return;\r\n }\r\n const tabindex = $input.attr(\"tabindex\");\r\n if (tabindex === \"-1\") {\r\n return;\r\n }\r\n if ($input.is(LsToggle.checkSelectors.join(\", \"))) {\r\n $input.prop(\"checked\", true);\r\n $input.trigger(\"focus\");\r\n $input.trigger(\"change\");\r\n } else if ($input.is(LsToggle.textSelectors.join(\", \"))) {\r\n const $wrapper = $input.closest(\".ls-field-wrapper\");\r\n $wrapper.addClass(\"no-transition lsu-tsn-no\");\r\n // focus event causes drawer to slide open rather than reveal in Chrome due to scrolling the element into view\r\n //$input.trigger(\"focus\");\r\n $input.trigger(\"select\");\r\n forceRedraw($input.get(0));\r\n $wrapper.removeClass(\"no-transition lsu-tsn-no\");\r\n }\r\n }\r\n\r\n protected static disableContent($target: JQuery, state?: boolean) {\r\n if (state === undefined) {\r\n const $hidden = $target.closest(\"[hidden]\");\r\n state = $hidden.length > 0;\r\n }\r\n const selector = [...LsToggle.buttonSelectors, ...LsToggle.fieldSelectors].join(\", \");\r\n const $inputs = $target.find(selector).addBack(selector);\r\n if (state) {\r\n LsGuardedDisable.disable($inputs, \"ToggleElement\");\r\n } else {\r\n LsGuardedDisable.enable($inputs, \"ToggleElement\");\r\n }\r\n }\r\n}\r\n\r\nexport default LsToggle;","import $ = require(\"jquery\");\r\n\r\nexport class LsToggleClass {\r\n protected static initialized = false;\r\n\r\n public constructor() {\r\n if (!LsToggleClass.initialized) {\r\n this.toggleClass(\"[data-toggle-class]\");\r\n\r\n $(() => {\r\n this.toggleClass(\"[data-toggle-class]\");\r\n });\r\n\r\n $(document).on(\"input blur\", \"[data-toggle-class]\", e => {\r\n this.toggleClass(e.target);\r\n });\r\n\r\n LsToggleClass.initialized = true;\r\n }\r\n }\r\n\r\n protected toggleClass = (selector: LsJQuerySelector) => {\r\n const $elements = $(selector);\r\n for (const el of $elements.toArray()) {\r\n const $el = $(el);\r\n $el.toggleClass($el.data(\"toggleClass\"), this.compareValue($el));\r\n }\r\n }\r\n\r\n protected compareValue = ($input: JQuery) => {\r\n var value = ($input.val() as string).trim();\r\n var condition = $input.data(\"toggleOn\");\r\n switch (condition) {\r\n case \"empty\":\r\n case \"\":\r\n return value === \"\";\r\n case \"filled\":\r\n case \"!empty\":\r\n return value !== \"\";\r\n default:\r\n return value === condition;\r\n }\r\n }\r\n}\r\n\r\nexport default LsToggleClass;","import $ = require(\"jquery\");\r\n\r\nexport class LsGuardedDisable {\r\n public static enable(selector: LsJQuerySelector, caller: string) {\r\n let $elements = $(selector);\r\n $elements = $elements.filter(`[data-disabled-by~=\"${caller}\"]`);\r\n if ($elements.length > 0) {\r\n for (const el of $elements.toArray()) {\r\n const $el = $(el);\r\n\r\n const disabledBy = $el.attr(\"data-disabled-by\");\r\n let callers = disabledBy.split(/\\s+/);\r\n callers = callers.filter(v => v && (v !== caller));\r\n if (callers.length > 0) {\r\n $el.attr(\"data-disabled-by\", callers.join(\" \"));\r\n } else {\r\n $el.removeAttr(\"data-disabled-by\");\r\n\r\n if (el.disabled === true) {\r\n el.disabled = false;\r\n } else if (el.disabled === false) {\r\n // do nothing\r\n } else {\r\n $el.attr(\"aria-disabled\", \"false\");\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n public static disable(selector: LsJQuerySelector, caller: string) {\r\n const $elements = $(selector);\r\n if ($elements.length > 0) {\r\n for (const el of $elements.toArray()) {\r\n const $el = $(el);\r\n\r\n const disabledBy = $el.attr(\"data-disabled-by\");\r\n $el.attr(\"data-disabled-by\", disabledBy ? `${disabledBy} ${caller}` : caller);\r\n\r\n if (el.disabled === false) {\r\n el.disabled = true;\r\n } else if (el.disabled === true) {\r\n // do nothing\r\n } else {\r\n $el.attr(\"aria-disabled\", \"false\");\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default LsGuardedDisable;"],"sourceRoot":""}