1 line
63 KiB
JSON
1 line
63 KiB
JSON
{"ast":null,"code":"import _asyncToGenerator from \"D:/MobileDev/WRB/WrenchBoard2023a/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js\";\n\n/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nimport { r as registerInstance, h, H as Host, i as getElement, e as createEvent } from './index-1a99aeb7.js';\nimport { l as chevronDown } from './index-45ecc7ca.js';\nimport { c as config, b as getIonMode } from './ionic-global-04e268e7.js';\nimport { r as raf, t as transitionEndAsync, a as addEventListener, b as removeEventListener, g as getElementRoot } from './helpers-4d272360.js';\nconst accordionIosCss = \":host{display:block;position:relative;width:100%;background-color:var(--ion-background-color, #ffffff);overflow:hidden;z-index:0}:host(.accordion-expanding) ::slotted(ion-item[slot=header]),:host(.accordion-expanded) ::slotted(ion-item[slot=header]){--border-width:0px}:host(.accordion-animated){-webkit-transition:all 300ms cubic-bezier(0.25, 0.8, 0.5, 1);transition:all 300ms cubic-bezier(0.25, 0.8, 0.5, 1)}:host(.accordion-animated) #content{-webkit-transition:max-height 300ms cubic-bezier(0.25, 0.8, 0.5, 1);transition:max-height 300ms cubic-bezier(0.25, 0.8, 0.5, 1)}#content{overflow:hidden;will-change:max-height}:host(.accordion-collapsing) #content{max-height:0 !important}:host(.accordion-collapsed) #content{display:none}:host(.accordion-expanding) #content{max-height:0}:host(.accordion-disabled) #header,:host(.accordion-readonly) #header,:host(.accordion-disabled) #content,:host(.accordion-readonly) #content{pointer-events:none}:host(.accordion-disabled) #header,:host(.accordion-disabled) #content{opacity:0.4}@media (prefers-reduced-motion: reduce){:host,#content{-webkit-transition:none !important;transition:none !important}}:host(.accordion-next) ::slotted(ion-item[slot=header]){--border-width:0.55px 0px 0.55px 0px}\";\nconst accordionMdCss = \":host{display:block;position:relative;width:100%;background-color:var(--ion-background-color, #ffffff);overflow:hidden;z-index:0}:host(.accordion-expanding) ::slotted(ion-item[slot=header]),:host(.accordion-expanded) ::slotted(ion-item[slot=header]){--border-width:0px}:host(.accordion-animated){-webkit-transition:all 300ms cubic-bezier(0.25, 0.8, 0.5, 1);transition:all 300ms cubic-bezier(0.25, 0.8, 0.5, 1)}:host(.accordion-animated) #content{-webkit-transition:max-height 300ms cubic-bezier(0.25, 0.8, 0.5, 1);transition:max-height 300ms cubic-bezier(0.25, 0.8, 0.5, 1)}#content{overflow:hidden;will-change:max-height}:host(.accordion-collapsing) #content{max-height:0 !important}:host(.accordion-collapsed) #content{display:none}:host(.accordion-expanding) #content{max-height:0}:host(.accordion-disabled) #header,:host(.accordion-readonly) #header,:host(.accordion-disabled) #content,:host(.accordion-readonly) #content{pointer-events:none}:host(.accordion-disabled) #header,:host(.accordion-disabled) #content{opacity:0.4}@media (prefers-reduced-motion: reduce){:host,#content{-webkit-transition:none !important;transition:none !important}}\";\nconst Accordion = class {\n constructor(hostRef) {\n var _this = this;\n\n registerInstance(this, hostRef);\n\n this.updateListener = () => this.updateState(false);\n\n this.state = 1\n /* Collapsed */\n ;\n this.isNext = false;\n this.isPrevious = false;\n /**\n * The value of the accordion. Defaults to an autogenerated\n * value.\n */\n\n this.value = `ion-accordion-${accordionIds++}`;\n /**\n * If `true`, the accordion cannot be interacted with.\n */\n\n this.disabled = false;\n /**\n * If `true`, the accordion cannot be interacted with,\n * but does not alter the opacity.\n */\n\n this.readonly = false;\n /**\n * The toggle icon to use. This icon will be\n * rotated when the accordion is expanded\n * or collapsed.\n */\n\n this.toggleIcon = chevronDown;\n /**\n * The slot inside of `ion-item` to\n * place the toggle icon. Defaults to `'end'`.\n */\n\n this.toggleIconSlot = 'end';\n\n this.setItemDefaults = () => {\n const ionItem = this.getSlottedHeaderIonItem();\n\n if (!ionItem) {\n return;\n }\n /**\n * For a11y purposes, we make\n * the ion-item a button so users\n * can tab to it and use keyboard\n * navigation to get around.\n */\n\n\n ionItem.button = true;\n ionItem.detail = false;\n /**\n * By default, the lines in an\n * item should be full here, but\n * only do that if a user has\n * not explicitly overridden them\n */\n\n if (ionItem.lines === undefined) {\n ionItem.lines = 'full';\n }\n };\n\n this.getSlottedHeaderIonItem = () => {\n const {\n headerEl\n } = this;\n\n if (!headerEl) {\n return;\n }\n /**\n * Get the first ion-item\n * slotted in the header slot\n */\n\n\n const slot = headerEl.querySelector('slot');\n\n if (!slot) {\n return;\n } // This is not defined in unit tests\n\n\n const ionItem = slot.assignedElements && slot.assignedElements().find(el => el.tagName === 'ION-ITEM');\n return ionItem;\n };\n\n this.setAria = (expanded = false) => {\n const ionItem = this.getSlottedHeaderIonItem();\n\n if (!ionItem) {\n return;\n }\n /**\n * Get the native <button> element inside of\n * ion-item because that is what will be focused\n */\n\n\n const root = getElementRoot(ionItem);\n const button = root.querySelector('button');\n\n if (!button) {\n return;\n }\n\n button.setAttribute('aria-expanded', `${expanded}`);\n };\n\n this.slotToggleIcon = () => {\n const ionItem = this.getSlottedHeaderIonItem();\n\n if (!ionItem) {\n return;\n }\n\n const {\n toggleIconSlot,\n toggleIcon\n } = this;\n /**\n * Check if there already is a toggle icon.\n * If so, do not add another one.\n */\n\n const existingToggleIcon = ionItem.querySelector('.ion-accordion-toggle-icon');\n\n if (existingToggleIcon) {\n return;\n }\n\n const iconEl = document.createElement('ion-icon');\n iconEl.slot = toggleIconSlot;\n iconEl.lazy = false;\n iconEl.classList.add('ion-accordion-toggle-icon');\n iconEl.icon = toggleIcon;\n iconEl.setAttribute('aria-hidden', 'true');\n ionItem.appendChild(iconEl);\n };\n\n this.expandAccordion = (initialUpdate = false) => {\n const {\n contentEl,\n contentElWrapper\n } = this;\n\n if (initialUpdate || contentEl === undefined || contentElWrapper === undefined) {\n this.state = 4\n /* Expanded */\n ;\n return;\n }\n\n if (this.state === 4\n /* Expanded */\n ) {\n return;\n }\n\n if (this.currentRaf !== undefined) {\n cancelAnimationFrame(this.currentRaf);\n }\n\n if (this.shouldAnimate()) {\n raf(() => {\n this.state = 8\n /* Expanding */\n ;\n this.currentRaf = raf( /*#__PURE__*/_asyncToGenerator(function* () {\n const contentHeight = contentElWrapper.offsetHeight;\n const waitForTransition = transitionEndAsync(contentEl, 2000);\n contentEl.style.setProperty('max-height', `${contentHeight}px`);\n yield waitForTransition;\n _this.state = 4\n /* Expanded */\n ;\n contentEl.style.removeProperty('max-height');\n }));\n });\n } else {\n this.state = 4\n /* Expanded */\n ;\n }\n };\n\n this.collapseAccordion = (initialUpdate = false) => {\n const {\n contentEl\n } = this;\n\n if (initialUpdate || contentEl === undefined) {\n this.state = 1\n /* Collapsed */\n ;\n return;\n }\n\n if (this.state === 1\n /* Collapsed */\n ) {\n return;\n }\n\n if (this.currentRaf !== undefined) {\n cancelAnimationFrame(this.currentRaf);\n }\n\n if (this.shouldAnimate()) {\n this.currentRaf = raf( /*#__PURE__*/_asyncToGenerator(function* () {\n const contentHeight = contentEl.offsetHeight;\n contentEl.style.setProperty('max-height', `${contentHeight}px`);\n raf( /*#__PURE__*/_asyncToGenerator(function* () {\n const waitForTransition = transitionEndAsync(contentEl, 2000);\n _this.state = 2\n /* Collapsing */\n ;\n yield waitForTransition;\n _this.state = 1\n /* Collapsed */\n ;\n contentEl.style.removeProperty('max-height');\n }));\n }));\n } else {\n this.state = 1\n /* Collapsed */\n ;\n }\n };\n /**\n * Helper function to determine if\n * something should animate.\n * If prefers-reduced-motion is set\n * then we should not animate, regardless\n * of what is set in the config.\n */\n\n\n this.shouldAnimate = () => {\n if (typeof window === 'undefined') {\n return false;\n }\n\n const prefersReducedMotion = matchMedia('(prefers-reduced-motion: reduce)').matches;\n\n if (prefersReducedMotion) {\n return false;\n }\n\n const animated = config.get('animated', true);\n\n if (!animated) {\n return false;\n }\n\n if (this.accordionGroupEl && !this.accordionGroupEl.animated) {\n return false;\n }\n\n return true;\n };\n\n this.updateState = /*#__PURE__*/_asyncToGenerator(function* (initialUpdate = false) {\n const accordionGroup = _this.accordionGroupEl;\n const accordionValue = _this.value;\n\n if (!accordionGroup) {\n return;\n }\n\n const value = accordionGroup.value;\n const shouldExpand = Array.isArray(value) ? value.includes(accordionValue) : value === accordionValue;\n\n if (shouldExpand) {\n _this.expandAccordion(initialUpdate);\n\n _this.isNext = _this.isPrevious = false;\n } else {\n _this.collapseAccordion(initialUpdate);\n /**\n * When using popout or inset,\n * the collapsed accordion items\n * may need additional border radius\n * applied. Check to see if the\n * next or previous accordion is selected.\n */\n\n\n const nextAccordion = _this.getNextSibling();\n\n const nextAccordionValue = nextAccordion === null || nextAccordion === void 0 ? void 0 : nextAccordion.value;\n\n if (nextAccordionValue !== undefined) {\n _this.isPrevious = Array.isArray(value) ? value.includes(nextAccordionValue) : value === nextAccordionValue;\n }\n\n const previousAccordion = _this.getPreviousSibling();\n\n const previousAccordionValue = previousAccordion === null || previousAccordion === void 0 ? void 0 : previousAccordion.value;\n\n if (previousAccordionValue !== undefined) {\n _this.isNext = Array.isArray(value) ? value.includes(previousAccordionValue) : value === previousAccordionValue;\n }\n }\n });\n\n this.getNextSibling = () => {\n if (!this.el) {\n return;\n }\n\n const nextSibling = this.el.nextElementSibling;\n\n if ((nextSibling === null || nextSibling === void 0 ? void 0 : nextSibling.tagName) !== 'ION-ACCORDION') {\n return;\n }\n\n return nextSibling;\n };\n\n this.getPreviousSibling = () => {\n if (!this.el) {\n return;\n }\n\n const previousSibling = this.el.previousElementSibling;\n\n if ((previousSibling === null || previousSibling === void 0 ? void 0 : previousSibling.tagName) !== 'ION-ACCORDION') {\n return;\n }\n\n return previousSibling;\n };\n }\n\n connectedCallback() {\n var _a;\n\n const accordionGroupEl = this.accordionGroupEl = (_a = this.el) === null || _a === void 0 ? void 0 : _a.closest('ion-accordion-group');\n\n if (accordionGroupEl) {\n this.updateState(true);\n addEventListener(accordionGroupEl, 'ionChange', this.updateListener);\n }\n }\n\n disconnectedCallback() {\n const accordionGroupEl = this.accordionGroupEl;\n\n if (accordionGroupEl) {\n removeEventListener(accordionGroupEl, 'ionChange', this.updateListener);\n }\n }\n\n componentDidLoad() {\n this.setItemDefaults();\n this.slotToggleIcon();\n /**\n * We need to wait a tick because we\n * just set ionItem.button = true and\n * the button has not have been rendered yet.\n */\n\n raf(() => {\n /**\n * Set aria label on button inside of ion-item\n * once the inner content has been rendered.\n */\n const expanded = this.state === 4\n /* Expanded */\n || this.state === 8\n /* Expanding */\n ;\n this.setAria(expanded);\n });\n }\n\n toggleExpanded() {\n const {\n accordionGroupEl,\n value,\n state\n } = this;\n\n if (accordionGroupEl) {\n /**\n * Because the accordion group may or may\n * not allow multiple accordions open, we\n * need to request the toggling of this\n * accordion and the accordion group will\n * make the decision on whether or not\n * to allow it.\n */\n const expand = state === 1\n /* Collapsed */\n || state === 2\n /* Collapsing */\n ;\n accordionGroupEl.requestAccordionToggle(value, expand);\n }\n }\n\n render() {\n const {\n disabled,\n readonly\n } = this;\n const mode = getIonMode(this);\n const expanded = this.state === 4\n /* Expanded */\n || this.state === 8\n /* Expanding */\n ;\n const headerPart = expanded ? 'header expanded' : 'header';\n const contentPart = expanded ? 'content expanded' : 'content';\n this.setAria(expanded);\n return h(Host, {\n class: {\n [mode]: true,\n 'accordion-expanding': this.state === 8\n /* Expanding */\n ,\n 'accordion-expanded': this.state === 4\n /* Expanded */\n ,\n 'accordion-collapsing': this.state === 2\n /* Collapsing */\n ,\n 'accordion-collapsed': this.state === 1\n /* Collapsed */\n ,\n 'accordion-next': this.isNext,\n 'accordion-previous': this.isPrevious,\n 'accordion-disabled': disabled,\n 'accordion-readonly': readonly,\n 'accordion-animated': config.getBoolean('animated', true)\n }\n }, h(\"div\", {\n onClick: () => this.toggleExpanded(),\n id: \"header\",\n part: headerPart,\n \"aria-controls\": \"content\",\n ref: headerEl => this.headerEl = headerEl\n }, h(\"slot\", {\n name: \"header\"\n })), h(\"div\", {\n id: \"content\",\n part: contentPart,\n role: \"region\",\n \"aria-labelledby\": \"header\",\n ref: contentEl => this.contentEl = contentEl\n }, h(\"div\", {\n id: \"content-wrapper\",\n ref: contentElWrapper => this.contentElWrapper = contentElWrapper\n }, h(\"slot\", {\n name: \"content\"\n }))));\n }\n\n static get delegatesFocus() {\n return true;\n }\n\n get el() {\n return getElement(this);\n }\n\n};\nlet accordionIds = 0;\nAccordion.style = {\n ios: accordionIosCss,\n md: accordionMdCss\n};\nconst accordionGroupIosCss = \":host{display:block}:host(.accordion-group-expand-inset){margin-left:16px;margin-right:16px;margin-top:16px;margin-bottom:16px}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){:host(.accordion-group-expand-inset){margin-left:unset;margin-right:unset;-webkit-margin-start:16px;margin-inline-start:16px;-webkit-margin-end:16px;margin-inline-end:16px}}:host(.accordion-group-expand-inset) ::slotted(ion-accordion.accordion-expanding),:host(.accordion-group-expand-inset) ::slotted(ion-accordion.accordion-expanded){border-bottom:none}\";\nconst accordionGroupMdCss = \":host{display:block}:host(.accordion-group-expand-inset){margin-left:16px;margin-right:16px;margin-top:16px;margin-bottom:16px}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){:host(.accordion-group-expand-inset){margin-left:unset;margin-right:unset;-webkit-margin-start:16px;margin-inline-start:16px;-webkit-margin-end:16px;margin-inline-end:16px}}:host(.accordion-group-expand-inset) ::slotted(ion-accordion){-webkit-box-shadow:0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);box-shadow:0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12)}:host(.accordion-group-expand-inset) ::slotted(ion-accordion.accordion-expanding),:host(.accordion-group-expand-inset) ::slotted(ion-accordion.accordion-expanded){margin-left:0;margin-right:0;margin-top:16px;margin-bottom:16px;border-radius:6px}:host(.accordion-group-expand-inset) ::slotted(ion-accordion.accordion-previous){border-bottom-right-radius:6px;border-bottom-left-radius:6px}:host-context([dir=rtl]):host(.accordion-group-expand-inset) ::slotted(ion-accordion.accordion-previous),:host-context([dir=rtl]).accordion-group-expand-inset ::slotted(ion-accordion.accordion-previous){border-bottom-right-radius:6px;border-bottom-left-radius:6px}:host(.accordion-group-expand-inset) ::slotted(ion-accordion.accordion-next){border-top-left-radius:6px;border-top-right-radius:6px}:host-context([dir=rtl]):host(.accordion-group-expand-inset) ::slotted(ion-accordion.accordion-next),:host-context([dir=rtl]).accordion-group-expand-inset ::slotted(ion-accordion.accordion-next){border-top-left-radius:6px;border-top-right-radius:6px}:host(.accordion-group-expand-inset) ::slotted(ion-accordion):first-of-type{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}\";\nconst AccordionGroup = class {\n constructor(hostRef) {\n registerInstance(this, hostRef);\n this.ionChange = createEvent(this, \"ionChange\", 7);\n /**\n * If `true`, all accordions inside of the\n * accordion group will animate when expanding\n * or collapsing.\n */\n\n this.animated = true;\n /**\n * If `true`, the accordion group cannot be interacted with.\n */\n\n this.disabled = false;\n /**\n * If `true`, the accordion group cannot be interacted with,\n * but does not alter the opacity.\n */\n\n this.readonly = false;\n /**\n * Describes the expansion behavior for each accordion.\n * Possible values are `\"compact\"` and `\"inset\"`.\n * Defaults to `\"compact\"`.\n */\n\n this.expand = 'compact';\n }\n\n valueChanged() {\n const {\n value,\n multiple\n } = this;\n /**\n * If accordion group does not\n * let multiple accordions be open\n * at once, but user passes an array\n * just grab the first value.\n */\n\n if (!multiple && Array.isArray(value)) {\n this.value = value[0];\n } else {\n this.ionChange.emit({\n value: this.value\n });\n }\n }\n\n disabledChanged() {\n var _this2 = this;\n\n return _asyncToGenerator(function* () {\n const {\n disabled\n } = _this2;\n const accordions = yield _this2.getAccordions();\n\n for (const accordion of accordions) {\n accordion.disabled = disabled;\n }\n })();\n }\n\n readonlyChanged() {\n var _this3 = this;\n\n return _asyncToGenerator(function* () {\n const {\n readonly\n } = _this3;\n const accordions = yield _this3.getAccordions();\n\n for (const accordion of accordions) {\n accordion.readonly = readonly;\n }\n })();\n }\n\n onKeydown(ev) {\n var _this4 = this;\n\n return _asyncToGenerator(function* () {\n const activeElement = document.activeElement;\n\n if (!activeElement) {\n return;\n }\n /**\n * Make sure focus is in the header, not the body, of the accordion. This ensures\n * that if there are any interactable elements in the body, their keyboard\n * interaction doesn't get stolen by the accordion. Example: using up/down keys\n * in ion-textarea.\n */\n\n\n const activeAccordionHeader = activeElement.closest('ion-accordion [slot=\"header\"]');\n\n if (!activeAccordionHeader) {\n return;\n }\n\n const accordionEl = activeElement.tagName === 'ION-ACCORDION' ? activeElement : activeElement.closest('ion-accordion');\n\n if (!accordionEl) {\n return;\n }\n\n const closestGroup = accordionEl.closest('ion-accordion-group');\n\n if (closestGroup !== _this4.el) {\n return;\n } // If the active accordion is not in the current array of accordions, do not do anything\n\n\n const accordions = yield _this4.getAccordions();\n const startingIndex = accordions.findIndex(a => a === accordionEl);\n\n if (startingIndex === -1) {\n return;\n }\n\n let accordion;\n\n if (ev.key === 'ArrowDown') {\n accordion = _this4.findNextAccordion(accordions, startingIndex);\n } else if (ev.key === 'ArrowUp') {\n accordion = _this4.findPreviousAccordion(accordions, startingIndex);\n } else if (ev.key === 'Home') {\n accordion = accordions[0];\n } else if (ev.key === 'End') {\n accordion = accordions[accordions.length - 1];\n }\n\n if (accordion !== undefined && accordion !== activeElement) {\n accordion.focus();\n }\n })();\n }\n\n componentDidLoad() {\n var _this5 = this;\n\n return _asyncToGenerator(function* () {\n if (_this5.disabled) {\n _this5.disabledChanged();\n }\n\n if (_this5.readonly) {\n _this5.readonlyChanged();\n }\n })();\n }\n /**\n * @internal\n */\n\n\n requestAccordionToggle(accordionValue, accordionExpand) {\n var _this6 = this;\n\n return _asyncToGenerator(function* () {\n const {\n multiple,\n value,\n readonly,\n disabled\n } = _this6;\n\n if (readonly || disabled) {\n return;\n }\n\n if (accordionExpand) {\n /**\n * If group accepts multiple values\n * check to see if value is already in\n * in values array. If not, add it\n * to the array.\n */\n if (multiple) {\n const groupValue = value || [];\n const processedValue = Array.isArray(groupValue) ? groupValue : [groupValue];\n const valueExists = processedValue.find(v => v === accordionValue);\n\n if (valueExists === undefined && accordionValue !== undefined) {\n _this6.value = [...processedValue, accordionValue];\n }\n } else {\n _this6.value = accordionValue;\n }\n } else {\n /**\n * If collapsing accordion, either filter the value\n * out of the values array or unset the value.\n */\n if (multiple) {\n const groupValue = value || [];\n const processedValue = Array.isArray(groupValue) ? groupValue : [groupValue];\n _this6.value = processedValue.filter(v => v !== accordionValue);\n } else {\n _this6.value = undefined;\n }\n }\n })();\n }\n\n findNextAccordion(accordions, startingIndex) {\n const nextAccordion = accordions[startingIndex + 1];\n\n if (nextAccordion === undefined) {\n return accordions[0];\n }\n\n return nextAccordion;\n }\n\n findPreviousAccordion(accordions, startingIndex) {\n const prevAccordion = accordions[startingIndex - 1];\n\n if (prevAccordion === undefined) {\n return accordions[accordions.length - 1];\n }\n\n return prevAccordion;\n }\n /**\n * @internal\n */\n\n\n getAccordions() {\n var _this7 = this;\n\n return _asyncToGenerator(function* () {\n return Array.from(_this7.el.querySelectorAll(':scope > ion-accordion'));\n })();\n }\n\n render() {\n const {\n disabled,\n readonly,\n expand\n } = this;\n const mode = getIonMode(this);\n return h(Host, {\n class: {\n [mode]: true,\n 'accordion-group-disabled': disabled,\n 'accordion-group-readonly': readonly,\n [`accordion-group-expand-${expand}`]: true\n },\n role: \"presentation\"\n }, h(\"slot\", null));\n }\n\n get el() {\n return getElement(this);\n }\n\n static get watchers() {\n return {\n \"value\": [\"valueChanged\"],\n \"disabled\": [\"disabledChanged\"],\n \"readonly\": [\"readonlyChanged\"]\n };\n }\n\n};\nAccordionGroup.style = {\n ios: accordionGroupIosCss,\n md: accordionGroupMdCss\n};\nexport { Accordion as ion_accordion, AccordionGroup as ion_accordion_group };","map":{"version":3,"names":["r","registerInstance","h","H","Host","i","getElement","e","createEvent","l","chevronDown","c","config","b","getIonMode","raf","t","transitionEndAsync","a","addEventListener","removeEventListener","g","getElementRoot","accordionIosCss","accordionMdCss","Accordion","constructor","hostRef","updateListener","updateState","state","isNext","isPrevious","value","accordionIds","disabled","readonly","toggleIcon","toggleIconSlot","setItemDefaults","ionItem","getSlottedHeaderIonItem","button","detail","lines","undefined","headerEl","slot","querySelector","assignedElements","find","el","tagName","setAria","expanded","root","setAttribute","slotToggleIcon","existingToggleIcon","iconEl","document","createElement","lazy","classList","add","icon","appendChild","expandAccordion","initialUpdate","contentEl","contentElWrapper","currentRaf","cancelAnimationFrame","shouldAnimate","contentHeight","offsetHeight","waitForTransition","style","setProperty","removeProperty","collapseAccordion","window","prefersReducedMotion","matchMedia","matches","animated","get","accordionGroupEl","accordionGroup","accordionValue","shouldExpand","Array","isArray","includes","nextAccordion","getNextSibling","nextAccordionValue","previousAccordion","getPreviousSibling","previousAccordionValue","nextSibling","nextElementSibling","previousSibling","previousElementSibling","connectedCallback","_a","closest","disconnectedCallback","componentDidLoad","toggleExpanded","expand","requestAccordionToggle","render","mode","headerPart","contentPart","class","getBoolean","onClick","id","part","ref","name","role","delegatesFocus","ios","md","accordionGroupIosCss","accordionGroupMdCss","AccordionGroup","ionChange","valueChanged","multiple","emit","disabledChanged","accordions","getAccordions","accordion","readonlyChanged","onKeydown","ev","activeElement","activeAccordionHeader","accordionEl","closestGroup","startingIndex","findIndex","key","findNextAccordion","findPreviousAccordion","length","focus","accordionExpand","groupValue","processedValue","valueExists","v","filter","prevAccordion","from","querySelectorAll","watchers","ion_accordion","ion_accordion_group"],"sources":["D:/MobileDev/WRB/WrenchBoard2023a/node_modules/@ionic/core/dist/esm/ion-accordion_2.entry.js"],"sourcesContent":["/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nimport { r as registerInstance, h, H as Host, i as getElement, e as createEvent } from './index-1a99aeb7.js';\nimport { l as chevronDown } from './index-45ecc7ca.js';\nimport { c as config, b as getIonMode } from './ionic-global-04e268e7.js';\nimport { r as raf, t as transitionEndAsync, a as addEventListener, b as removeEventListener, g as getElementRoot } from './helpers-4d272360.js';\n\nconst accordionIosCss = \":host{display:block;position:relative;width:100%;background-color:var(--ion-background-color, #ffffff);overflow:hidden;z-index:0}:host(.accordion-expanding) ::slotted(ion-item[slot=header]),:host(.accordion-expanded) ::slotted(ion-item[slot=header]){--border-width:0px}:host(.accordion-animated){-webkit-transition:all 300ms cubic-bezier(0.25, 0.8, 0.5, 1);transition:all 300ms cubic-bezier(0.25, 0.8, 0.5, 1)}:host(.accordion-animated) #content{-webkit-transition:max-height 300ms cubic-bezier(0.25, 0.8, 0.5, 1);transition:max-height 300ms cubic-bezier(0.25, 0.8, 0.5, 1)}#content{overflow:hidden;will-change:max-height}:host(.accordion-collapsing) #content{max-height:0 !important}:host(.accordion-collapsed) #content{display:none}:host(.accordion-expanding) #content{max-height:0}:host(.accordion-disabled) #header,:host(.accordion-readonly) #header,:host(.accordion-disabled) #content,:host(.accordion-readonly) #content{pointer-events:none}:host(.accordion-disabled) #header,:host(.accordion-disabled) #content{opacity:0.4}@media (prefers-reduced-motion: reduce){:host,#content{-webkit-transition:none !important;transition:none !important}}:host(.accordion-next) ::slotted(ion-item[slot=header]){--border-width:0.55px 0px 0.55px 0px}\";\n\nconst accordionMdCss = \":host{display:block;position:relative;width:100%;background-color:var(--ion-background-color, #ffffff);overflow:hidden;z-index:0}:host(.accordion-expanding) ::slotted(ion-item[slot=header]),:host(.accordion-expanded) ::slotted(ion-item[slot=header]){--border-width:0px}:host(.accordion-animated){-webkit-transition:all 300ms cubic-bezier(0.25, 0.8, 0.5, 1);transition:all 300ms cubic-bezier(0.25, 0.8, 0.5, 1)}:host(.accordion-animated) #content{-webkit-transition:max-height 300ms cubic-bezier(0.25, 0.8, 0.5, 1);transition:max-height 300ms cubic-bezier(0.25, 0.8, 0.5, 1)}#content{overflow:hidden;will-change:max-height}:host(.accordion-collapsing) #content{max-height:0 !important}:host(.accordion-collapsed) #content{display:none}:host(.accordion-expanding) #content{max-height:0}:host(.accordion-disabled) #header,:host(.accordion-readonly) #header,:host(.accordion-disabled) #content,:host(.accordion-readonly) #content{pointer-events:none}:host(.accordion-disabled) #header,:host(.accordion-disabled) #content{opacity:0.4}@media (prefers-reduced-motion: reduce){:host,#content{-webkit-transition:none !important;transition:none !important}}\";\n\nconst Accordion = class {\n constructor(hostRef) {\n registerInstance(this, hostRef);\n this.updateListener = () => this.updateState(false);\n this.state = 1 /* Collapsed */;\n this.isNext = false;\n this.isPrevious = false;\n /**\n * The value of the accordion. Defaults to an autogenerated\n * value.\n */\n this.value = `ion-accordion-${accordionIds++}`;\n /**\n * If `true`, the accordion cannot be interacted with.\n */\n this.disabled = false;\n /**\n * If `true`, the accordion cannot be interacted with,\n * but does not alter the opacity.\n */\n this.readonly = false;\n /**\n * The toggle icon to use. This icon will be\n * rotated when the accordion is expanded\n * or collapsed.\n */\n this.toggleIcon = chevronDown;\n /**\n * The slot inside of `ion-item` to\n * place the toggle icon. Defaults to `'end'`.\n */\n this.toggleIconSlot = 'end';\n this.setItemDefaults = () => {\n const ionItem = this.getSlottedHeaderIonItem();\n if (!ionItem) {\n return;\n }\n /**\n * For a11y purposes, we make\n * the ion-item a button so users\n * can tab to it and use keyboard\n * navigation to get around.\n */\n ionItem.button = true;\n ionItem.detail = false;\n /**\n * By default, the lines in an\n * item should be full here, but\n * only do that if a user has\n * not explicitly overridden them\n */\n if (ionItem.lines === undefined) {\n ionItem.lines = 'full';\n }\n };\n this.getSlottedHeaderIonItem = () => {\n const { headerEl } = this;\n if (!headerEl) {\n return;\n }\n /**\n * Get the first ion-item\n * slotted in the header slot\n */\n const slot = headerEl.querySelector('slot');\n if (!slot) {\n return;\n }\n // This is not defined in unit tests\n const ionItem = slot.assignedElements &&\n slot.assignedElements().find((el) => el.tagName === 'ION-ITEM');\n return ionItem;\n };\n this.setAria = (expanded = false) => {\n const ionItem = this.getSlottedHeaderIonItem();\n if (!ionItem) {\n return;\n }\n /**\n * Get the native <button> element inside of\n * ion-item because that is what will be focused\n */\n const root = getElementRoot(ionItem);\n const button = root.querySelector('button');\n if (!button) {\n return;\n }\n button.setAttribute('aria-expanded', `${expanded}`);\n };\n this.slotToggleIcon = () => {\n const ionItem = this.getSlottedHeaderIonItem();\n if (!ionItem) {\n return;\n }\n const { toggleIconSlot, toggleIcon } = this;\n /**\n * Check if there already is a toggle icon.\n * If so, do not add another one.\n */\n const existingToggleIcon = ionItem.querySelector('.ion-accordion-toggle-icon');\n if (existingToggleIcon) {\n return;\n }\n const iconEl = document.createElement('ion-icon');\n iconEl.slot = toggleIconSlot;\n iconEl.lazy = false;\n iconEl.classList.add('ion-accordion-toggle-icon');\n iconEl.icon = toggleIcon;\n iconEl.setAttribute('aria-hidden', 'true');\n ionItem.appendChild(iconEl);\n };\n this.expandAccordion = (initialUpdate = false) => {\n const { contentEl, contentElWrapper } = this;\n if (initialUpdate || contentEl === undefined || contentElWrapper === undefined) {\n this.state = 4 /* Expanded */;\n return;\n }\n if (this.state === 4 /* Expanded */) {\n return;\n }\n if (this.currentRaf !== undefined) {\n cancelAnimationFrame(this.currentRaf);\n }\n if (this.shouldAnimate()) {\n raf(() => {\n this.state = 8 /* Expanding */;\n this.currentRaf = raf(async () => {\n const contentHeight = contentElWrapper.offsetHeight;\n const waitForTransition = transitionEndAsync(contentEl, 2000);\n contentEl.style.setProperty('max-height', `${contentHeight}px`);\n await waitForTransition;\n this.state = 4 /* Expanded */;\n contentEl.style.removeProperty('max-height');\n });\n });\n }\n else {\n this.state = 4 /* Expanded */;\n }\n };\n this.collapseAccordion = (initialUpdate = false) => {\n const { contentEl } = this;\n if (initialUpdate || contentEl === undefined) {\n this.state = 1 /* Collapsed */;\n return;\n }\n if (this.state === 1 /* Collapsed */) {\n return;\n }\n if (this.currentRaf !== undefined) {\n cancelAnimationFrame(this.currentRaf);\n }\n if (this.shouldAnimate()) {\n this.currentRaf = raf(async () => {\n const contentHeight = contentEl.offsetHeight;\n contentEl.style.setProperty('max-height', `${contentHeight}px`);\n raf(async () => {\n const waitForTransition = transitionEndAsync(contentEl, 2000);\n this.state = 2 /* Collapsing */;\n await waitForTransition;\n this.state = 1 /* Collapsed */;\n contentEl.style.removeProperty('max-height');\n });\n });\n }\n else {\n this.state = 1 /* Collapsed */;\n }\n };\n /**\n * Helper function to determine if\n * something should animate.\n * If prefers-reduced-motion is set\n * then we should not animate, regardless\n * of what is set in the config.\n */\n this.shouldAnimate = () => {\n if (typeof window === 'undefined') {\n return false;\n }\n const prefersReducedMotion = matchMedia('(prefers-reduced-motion: reduce)').matches;\n if (prefersReducedMotion) {\n return false;\n }\n const animated = config.get('animated', true);\n if (!animated) {\n return false;\n }\n if (this.accordionGroupEl && !this.accordionGroupEl.animated) {\n return false;\n }\n return true;\n };\n this.updateState = async (initialUpdate = false) => {\n const accordionGroup = this.accordionGroupEl;\n const accordionValue = this.value;\n if (!accordionGroup) {\n return;\n }\n const value = accordionGroup.value;\n const shouldExpand = Array.isArray(value) ? value.includes(accordionValue) : value === accordionValue;\n if (shouldExpand) {\n this.expandAccordion(initialUpdate);\n this.isNext = this.isPrevious = false;\n }\n else {\n this.collapseAccordion(initialUpdate);\n /**\n * When using popout or inset,\n * the collapsed accordion items\n * may need additional border radius\n * applied. Check to see if the\n * next or previous accordion is selected.\n */\n const nextAccordion = this.getNextSibling();\n const nextAccordionValue = nextAccordion === null || nextAccordion === void 0 ? void 0 : nextAccordion.value;\n if (nextAccordionValue !== undefined) {\n this.isPrevious = Array.isArray(value) ? value.includes(nextAccordionValue) : value === nextAccordionValue;\n }\n const previousAccordion = this.getPreviousSibling();\n const previousAccordionValue = previousAccordion === null || previousAccordion === void 0 ? void 0 : previousAccordion.value;\n if (previousAccordionValue !== undefined) {\n this.isNext = Array.isArray(value) ? value.includes(previousAccordionValue) : value === previousAccordionValue;\n }\n }\n };\n this.getNextSibling = () => {\n if (!this.el) {\n return;\n }\n const nextSibling = this.el.nextElementSibling;\n if ((nextSibling === null || nextSibling === void 0 ? void 0 : nextSibling.tagName) !== 'ION-ACCORDION') {\n return;\n }\n return nextSibling;\n };\n this.getPreviousSibling = () => {\n if (!this.el) {\n return;\n }\n const previousSibling = this.el.previousElementSibling;\n if ((previousSibling === null || previousSibling === void 0 ? void 0 : previousSibling.tagName) !== 'ION-ACCORDION') {\n return;\n }\n return previousSibling;\n };\n }\n connectedCallback() {\n var _a;\n const accordionGroupEl = (this.accordionGroupEl = (_a = this.el) === null || _a === void 0 ? void 0 : _a.closest('ion-accordion-group'));\n if (accordionGroupEl) {\n this.updateState(true);\n addEventListener(accordionGroupEl, 'ionChange', this.updateListener);\n }\n }\n disconnectedCallback() {\n const accordionGroupEl = this.accordionGroupEl;\n if (accordionGroupEl) {\n removeEventListener(accordionGroupEl, 'ionChange', this.updateListener);\n }\n }\n componentDidLoad() {\n this.setItemDefaults();\n this.slotToggleIcon();\n /**\n * We need to wait a tick because we\n * just set ionItem.button = true and\n * the button has not have been rendered yet.\n */\n raf(() => {\n /**\n * Set aria label on button inside of ion-item\n * once the inner content has been rendered.\n */\n const expanded = this.state === 4 /* Expanded */ || this.state === 8 /* Expanding */;\n this.setAria(expanded);\n });\n }\n toggleExpanded() {\n const { accordionGroupEl, value, state } = this;\n if (accordionGroupEl) {\n /**\n * Because the accordion group may or may\n * not allow multiple accordions open, we\n * need to request the toggling of this\n * accordion and the accordion group will\n * make the decision on whether or not\n * to allow it.\n */\n const expand = state === 1 /* Collapsed */ || state === 2 /* Collapsing */;\n accordionGroupEl.requestAccordionToggle(value, expand);\n }\n }\n render() {\n const { disabled, readonly } = this;\n const mode = getIonMode(this);\n const expanded = this.state === 4 /* Expanded */ || this.state === 8 /* Expanding */;\n const headerPart = expanded ? 'header expanded' : 'header';\n const contentPart = expanded ? 'content expanded' : 'content';\n this.setAria(expanded);\n return (h(Host, { class: {\n [mode]: true,\n 'accordion-expanding': this.state === 8 /* Expanding */,\n 'accordion-expanded': this.state === 4 /* Expanded */,\n 'accordion-collapsing': this.state === 2 /* Collapsing */,\n 'accordion-collapsed': this.state === 1 /* Collapsed */,\n 'accordion-next': this.isNext,\n 'accordion-previous': this.isPrevious,\n 'accordion-disabled': disabled,\n 'accordion-readonly': readonly,\n 'accordion-animated': config.getBoolean('animated', true),\n } }, h(\"div\", { onClick: () => this.toggleExpanded(), id: \"header\", part: headerPart, \"aria-controls\": \"content\", ref: (headerEl) => (this.headerEl = headerEl) }, h(\"slot\", { name: \"header\" })), h(\"div\", { id: \"content\", part: contentPart, role: \"region\", \"aria-labelledby\": \"header\", ref: (contentEl) => (this.contentEl = contentEl) }, h(\"div\", { id: \"content-wrapper\", ref: (contentElWrapper) => (this.contentElWrapper = contentElWrapper) }, h(\"slot\", { name: \"content\" })))));\n }\n static get delegatesFocus() { return true; }\n get el() { return getElement(this); }\n};\nlet accordionIds = 0;\nAccordion.style = {\n ios: accordionIosCss,\n md: accordionMdCss\n};\n\nconst accordionGroupIosCss = \":host{display:block}:host(.accordion-group-expand-inset){margin-left:16px;margin-right:16px;margin-top:16px;margin-bottom:16px}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){:host(.accordion-group-expand-inset){margin-left:unset;margin-right:unset;-webkit-margin-start:16px;margin-inline-start:16px;-webkit-margin-end:16px;margin-inline-end:16px}}:host(.accordion-group-expand-inset) ::slotted(ion-accordion.accordion-expanding),:host(.accordion-group-expand-inset) ::slotted(ion-accordion.accordion-expanded){border-bottom:none}\";\n\nconst accordionGroupMdCss = \":host{display:block}:host(.accordion-group-expand-inset){margin-left:16px;margin-right:16px;margin-top:16px;margin-bottom:16px}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){:host(.accordion-group-expand-inset){margin-left:unset;margin-right:unset;-webkit-margin-start:16px;margin-inline-start:16px;-webkit-margin-end:16px;margin-inline-end:16px}}:host(.accordion-group-expand-inset) ::slotted(ion-accordion){-webkit-box-shadow:0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);box-shadow:0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12)}:host(.accordion-group-expand-inset) ::slotted(ion-accordion.accordion-expanding),:host(.accordion-group-expand-inset) ::slotted(ion-accordion.accordion-expanded){margin-left:0;margin-right:0;margin-top:16px;margin-bottom:16px;border-radius:6px}:host(.accordion-group-expand-inset) ::slotted(ion-accordion.accordion-previous){border-bottom-right-radius:6px;border-bottom-left-radius:6px}:host-context([dir=rtl]):host(.accordion-group-expand-inset) ::slotted(ion-accordion.accordion-previous),:host-context([dir=rtl]).accordion-group-expand-inset ::slotted(ion-accordion.accordion-previous){border-bottom-right-radius:6px;border-bottom-left-radius:6px}:host(.accordion-group-expand-inset) ::slotted(ion-accordion.accordion-next){border-top-left-radius:6px;border-top-right-radius:6px}:host-context([dir=rtl]):host(.accordion-group-expand-inset) ::slotted(ion-accordion.accordion-next),:host-context([dir=rtl]).accordion-group-expand-inset ::slotted(ion-accordion.accordion-next){border-top-left-radius:6px;border-top-right-radius:6px}:host(.accordion-group-expand-inset) ::slotted(ion-accordion):first-of-type{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}\";\n\nconst AccordionGroup = class {\n constructor(hostRef) {\n registerInstance(this, hostRef);\n this.ionChange = createEvent(this, \"ionChange\", 7);\n /**\n * If `true`, all accordions inside of the\n * accordion group will animate when expanding\n * or collapsing.\n */\n this.animated = true;\n /**\n * If `true`, the accordion group cannot be interacted with.\n */\n this.disabled = false;\n /**\n * If `true`, the accordion group cannot be interacted with,\n * but does not alter the opacity.\n */\n this.readonly = false;\n /**\n * Describes the expansion behavior for each accordion.\n * Possible values are `\"compact\"` and `\"inset\"`.\n * Defaults to `\"compact\"`.\n */\n this.expand = 'compact';\n }\n valueChanged() {\n const { value, multiple } = this;\n /**\n * If accordion group does not\n * let multiple accordions be open\n * at once, but user passes an array\n * just grab the first value.\n */\n if (!multiple && Array.isArray(value)) {\n this.value = value[0];\n }\n else {\n this.ionChange.emit({ value: this.value });\n }\n }\n async disabledChanged() {\n const { disabled } = this;\n const accordions = await this.getAccordions();\n for (const accordion of accordions) {\n accordion.disabled = disabled;\n }\n }\n async readonlyChanged() {\n const { readonly } = this;\n const accordions = await this.getAccordions();\n for (const accordion of accordions) {\n accordion.readonly = readonly;\n }\n }\n async onKeydown(ev) {\n const activeElement = document.activeElement;\n if (!activeElement) {\n return;\n }\n /**\n * Make sure focus is in the header, not the body, of the accordion. This ensures\n * that if there are any interactable elements in the body, their keyboard\n * interaction doesn't get stolen by the accordion. Example: using up/down keys\n * in ion-textarea.\n */\n const activeAccordionHeader = activeElement.closest('ion-accordion [slot=\"header\"]');\n if (!activeAccordionHeader) {\n return;\n }\n const accordionEl = activeElement.tagName === 'ION-ACCORDION' ? activeElement : activeElement.closest('ion-accordion');\n if (!accordionEl) {\n return;\n }\n const closestGroup = accordionEl.closest('ion-accordion-group');\n if (closestGroup !== this.el) {\n return;\n }\n // If the active accordion is not in the current array of accordions, do not do anything\n const accordions = await this.getAccordions();\n const startingIndex = accordions.findIndex((a) => a === accordionEl);\n if (startingIndex === -1) {\n return;\n }\n let accordion;\n if (ev.key === 'ArrowDown') {\n accordion = this.findNextAccordion(accordions, startingIndex);\n }\n else if (ev.key === 'ArrowUp') {\n accordion = this.findPreviousAccordion(accordions, startingIndex);\n }\n else if (ev.key === 'Home') {\n accordion = accordions[0];\n }\n else if (ev.key === 'End') {\n accordion = accordions[accordions.length - 1];\n }\n if (accordion !== undefined && accordion !== activeElement) {\n accordion.focus();\n }\n }\n async componentDidLoad() {\n if (this.disabled) {\n this.disabledChanged();\n }\n if (this.readonly) {\n this.readonlyChanged();\n }\n }\n /**\n * @internal\n */\n async requestAccordionToggle(accordionValue, accordionExpand) {\n const { multiple, value, readonly, disabled } = this;\n if (readonly || disabled) {\n return;\n }\n if (accordionExpand) {\n /**\n * If group accepts multiple values\n * check to see if value is already in\n * in values array. If not, add it\n * to the array.\n */\n if (multiple) {\n const groupValue = value || [];\n const processedValue = Array.isArray(groupValue) ? groupValue : [groupValue];\n const valueExists = processedValue.find((v) => v === accordionValue);\n if (valueExists === undefined && accordionValue !== undefined) {\n this.value = [...processedValue, accordionValue];\n }\n }\n else {\n this.value = accordionValue;\n }\n }\n else {\n /**\n * If collapsing accordion, either filter the value\n * out of the values array or unset the value.\n */\n if (multiple) {\n const groupValue = value || [];\n const processedValue = Array.isArray(groupValue) ? groupValue : [groupValue];\n this.value = processedValue.filter((v) => v !== accordionValue);\n }\n else {\n this.value = undefined;\n }\n }\n }\n findNextAccordion(accordions, startingIndex) {\n const nextAccordion = accordions[startingIndex + 1];\n if (nextAccordion === undefined) {\n return accordions[0];\n }\n return nextAccordion;\n }\n findPreviousAccordion(accordions, startingIndex) {\n const prevAccordion = accordions[startingIndex - 1];\n if (prevAccordion === undefined) {\n return accordions[accordions.length - 1];\n }\n return prevAccordion;\n }\n /**\n * @internal\n */\n async getAccordions() {\n return Array.from(this.el.querySelectorAll(':scope > ion-accordion'));\n }\n render() {\n const { disabled, readonly, expand } = this;\n const mode = getIonMode(this);\n return (h(Host, { class: {\n [mode]: true,\n 'accordion-group-disabled': disabled,\n 'accordion-group-readonly': readonly,\n [`accordion-group-expand-${expand}`]: true,\n }, role: \"presentation\" }, h(\"slot\", null)));\n }\n get el() { return getElement(this); }\n static get watchers() { return {\n \"value\": [\"valueChanged\"],\n \"disabled\": [\"disabledChanged\"],\n \"readonly\": [\"readonlyChanged\"]\n }; }\n};\nAccordionGroup.style = {\n ios: accordionGroupIosCss,\n md: accordionGroupMdCss\n};\n\nexport { Accordion as ion_accordion, AccordionGroup as ion_accordion_group };\n"],"mappings":"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"},"metadata":{},"sourceType":"module"} |