diff --git a/elements/pfe-accordion/dist/pfe-accordion-header.css.map b/elements/pfe-accordion/dist/pfe-accordion-header.css.map
new file mode 100644
index 0000000000..92b0f275b4
--- /dev/null
+++ b/elements/pfe-accordion/dist/pfe-accordion-header.css.map
@@ -0,0 +1 @@
+{"version":3,"sources":["pfe-accordion-header.scss","../../pfe-sass/functions/_custom-properties.scss","pfe-accordion-header.css","../../pfe-sass/mixins/_mixins.scss","../../pfe-sass/mixins/_custom-properties.scss","../../pfe-sass/mixins/_components.scss","../../pfe-sass/maps/_general.scss","../../../node_modules/@patternfly/patternfly/sass-utilities/colors.scss"],"names":[],"mappings":"AAKA;EAGE,mFC6BkC;ED7BlC,2EC6BkC;ED7BlC,mEC6BkC;ED7BlC,oIC6BkC;ED7BlC,uHC6BkC;ED7BlC,+GC6BkC;ED7BlC,uGC6BkC;ED7BlC,4MC6BkC;ED5BlC,cAAc;AENhB;;AC+EU;EACN,aAAa;AD5EjB;;AFFA;EAQI,SAAS;AEFb;;AFNA;EI+FM,qCAA8C;EAA9C,0BAA8C;EAJ5C,6RAA8C;ECRpD,SAAS;EACT,WJVkC;EIUlC,wCJVkC;EIWlC,2BAAgE;EAAhE,2EAAgE;EAChE,YAAY;EACZ,kBAAkB;EAGlB,6BJhBkC;EIgBlC,oEJhBkC;EIiBlC,cJjBkC;EIiBlC,yEJjBkC;EIoBlC,eAAe;EACf,mBJ/DkC;EI+DlC,4DJ/DkC;EIgElC,qBJtBkC;EIsBlC,kGJtBkC;EIuBlC,qBJvBkC;EIuBlC,oGJvBkC;EIwBlC,qBJxBkC;EIwBlC,6DJxBkC;EIyBlC,wBJzBkC;EIyBlC,0GJzBkC;EI0BlC,sBJ1BkC;EI0BlC,6GJ1BkC;EIoClC,8BJpCkC;EIoClC,yEJpCkC;EIsClC,mDJtCkC;UIsClC,2CJtCkC;EIuClC,qCJvCkC;EIqElC,eAAe;EAEf,oBAAoB;EACpB,2BJxEkC;EIwElC,gGJxEkC;EIyElC,gBJnHkC;EImHlC,qDJnHkC;EIoHlC,gBJ1EkC;EI0ElC,iDJ1EkC;EI2ElC,gBJrHkC;EIqHlC,+CJrHkC;EIsHlC,+CJ5EkC;ACtCpC;;ACtCM;EHEN;IGF4F,UAAA;IEyGxF,qBCxFgC;IDyFhC,qBAAuB;IACvB,wBC1FgC;ID2FhC,sBC1FgC;EJ6BlC;AACF;;AF9CA;EI+FM,4GAA8C;AF7CpD;;ACpDM;EHEN;IGF4F,UAAA;IE4HtF,uBE9G+B;EL4CnC;AACF;;AFzDA;EKyJI,aAAa;EACb,sBJ1HgC;EI0HhC,sEJ1HgC;AC8BpC;;AF9DA;EK8JM,aAAa;EACb,0BAA0B;AH5FhC;;AFnEA;EKmKM,SAAS;AH5Ff;;AC/DqC;EHRrC;IGQwC,qCAAA;IHQlC,gBAAgB;EE6DpB;AACF;;AChFM;EHEN;IGF4F,UAAA;IHsBtF,kBAAkB;EEgEtB;EFpFF;IAsBQ,uBOV6B;EL2EnC;AACF;;AFxFA;EI+FM,+EAA8C;EAA9C,+EAA8C;EAA9C,qFAA8C;EAA9C,uCAA8C;EAA9C,8DAA8C;EAA9C,4GAA8C;EAA9C,+GAA8C;EAA9C,0BAA8C;AFIpD;;ACrGM;EHEN;IGF4F,UAAA;IHgCpF,sBAAsB;IACtB,uBOnB6B;IPoB7B,2BOjCgC;EL4GtC;AACF;;AFtEA;EK0KE,WAAW;EACX,kBAAkB;EAClB,uBAAoD;EAApD,2DAAoD;EAEpD,cAAc;EACd,mBJrLkC;EIqLlC,4DJrLkC;EIsLlC,aAR4D;EAS5D,YAT4D;EAU5D,2CAA2B;EAA3B,mCAA2B;EAA3B,2BAA2B;EAA3B,oDAA2B;EAgBzB,2BAA2B;EAC3B,gCAAwB;UAAxB,wBAAwB;EAMtB,0BAAkD;EAAlD,8DAAkD;AHrHxD;;AFpFA;EAKI,kCAA0B;UAA1B,0BAA0B;AEmF9B;;AF9EA;EI+CM,gFAA8C;AFmCpD;;AF9EA;EACE,qCAAmC;AEiFrC;;AF5EE;EIqCI,0DAA8C;EAA9C,6DAA8C;EAA9C,0FAA8C;EAA9C,gCAA8C;AF8CpD;;AF9EE;EIgCI,oDAA8C;EAA9C,6DAA8C;EAA9C,4FAA8C;EAA9C,gCAA8C;AFqDpD;;AF3EA;EAEI,4BAA4D;EAA5D,qGAA4D;AE6EhE;;AC1JM;EH2EN;IG3E4F,UAAA;IH+EtF,4BAA4B;IAC5B,2BO/EkC;IPgFlC,0BOhFkC;IPiFlC,sBMjE8B;EJkJlC;AACF;;AFzFA;EKuIE,WAAW;EACX,kBAAkB;EAClB,wBAAoD;EAApD,4DAAoD;EAEpD,cAAc;EACd,mBJrLkC;EIqLlC,4DJrLkC;EIsLlC,aAR4D;EAS5D,YAT4D;EAU5D,2CAA2B;EAA3B,mCAA2B;EAA3B,2BAA2B;EAA3B,oDAA2B;EAgBzB,2BAA2B;EAC3B,gCAAwB;UAAxB,wBAAwB;EAEtB,yBAAiD;EAAjD,6DAAiD;EACjD,iCAAyB;UAAzB,yBAAyB;AH3D/B;;AFxGA;EAeM,gCAAwB;UAAxB,wBAAwB;AE6F9B;;AF5GA;EAoBM,wCAA2I;EAA3I,0MAA2I;AE4FjJ;;AFhHA;EAsBQ,mCAAsG;EAAtG,4HAAsG;AE8F9G","file":"pfe-accordion-header.css","sourcesContent":["@import \"shared-assets\";\n\n/// ===========================================================================\n/// ACCORDION HEADER\n/// ===========================================================================\n:host {\n @include pfe-hidden;\n \n transition: transform 0.3s pfe-var(animation-timing);\n display: block;\n\n // Shadow template styles\n > * {\n margin: 0;\n }\n\n button {\n @include pfe-trigger;\n\n // @TODO workaround, can we get the variables working?\n @include browser-query(edge) {\n text-align: left;\n }\n\n @include browser-query(ie11) {\n padding: 16px 24px;\n &:hover {\n border-left-color: pfe-fetch(ui-accent);\n }\n }\n\n &[aria-expanded=\"true\"] {\n $accordion: pfe-accordion-variables($state: expanded);\n @include pfe-print-local($accordion);\n @include browser-query(ie11) {\n border-bottom-width: 0;\n border-left-color: pfe-fetch(ui-accent);\n border-right-color: pfe-fetch(surface--border);\n }\n }\n }\n}\n\n:host(:not([disclosure=\"true\"])) {\n button::after {\n @include pfe-chevron($state: closed);\n }\n button[aria-expanded=\"true\"]::after {\n transform: rotate(-135deg);\n }\n}\n\n// Add border bottom to the last button in an accordion set.\n:host(:last-of-type) button:not([aria-expanded=\"true\"]) {\n @include pfe-trigger-last;\n}\n\n:host(:last-of-type.animating) button {\n --pfe-accordion--BorderBottomWidth: 0;\n}\n\n// Styles based on background color\nbutton[aria-expanded=\"true\"] {\n :host([on=\"dark\"]) & {\n $accordion: pfe-accordion-variables($state: expanded, $context: dark);\n @include pfe-print-local($accordion);\n }\n\n :host([on=\"saturated\"]) & {\n $accordion: pfe-accordion-variables($state: expanded, $context: saturated);\n @include pfe-print-local($accordion);\n }\n}\n\n/// ===========================================================================\n/// DISCLOSURE STYLES\n/// ===========================================================================\n\n:host([disclosure=\"true\"]) {\n button {\n padding-left: calc(#{pfe-local(Padding, $region: base)} * 3);\n @include browser-query(ie11) {\n padding: 16px 24px 16px 47px;\n border-right-color: pfe-fetch(surface--border);\n border-left-color: pfe-fetch(surface--border);\n border-left-width: pfe-fetch(surface--border-width);\n }\n\n &::before {\n @include pfe-chevron($state: closed, $position: before, $offset: .55em);\n }\n \n &[aria-expanded=\"true\"]::before {\n transform: rotate(45deg);\n }\n \n &[aria-expanded=\"true\"],\n &:not([aria-expanded=\"true\"]):hover {\n padding-left: calc(#{pfe-local(Padding, $region: base)} * 3 - #{pfe-var(surface--border-width--heavy)} + #{pfe-var(surface--border-width)});\n &::before {\n margin-left: calc((#{pfe-var(surface--border-width--heavy)} - #{pfe-var(surface--border-width)}) * -1);\n }\n }\n }\n}\n","////\n/// Tools for leveraging custom property stacks\n/// @group custom-properties\n/// @author castastrophe\n////\n\n/// Get full theme stack with a fallback from the provided map - used by pfe-var and pfe-zindex\n/// @param {String} $category - Category name to be appended to variables within the map/system\n/// @param {String} $key - Variable name to be used and prepended with --pfe-theme\n/// @param {Map} $map - Sass map of variables\n/// @param {String} $fallback [null] - Optional fallback override\n/// @param {Boolean} $use-fallback [true] - Optional hook to return a stack with no fallback value\n/// @requires $custom-prop-prefix\n/// @return {String} theme stack with fallback value from a sass map\n@function pfe-get-from-map($category, $key, $map, $fallback: null, $prefix: \"#{$custom-prop-prefix}-theme\", $use-fallback: true) {\n // Start building the variable declaration\n $var-declaration: \"--#{$prefix}--\";\n @if $prefix == \"pf-c\" {\n $var-declaration: \"--#{$prefix}-\"; // one dash at the end\n }\n // If the category exists, inject that into the string\n @if $category != \"\" {\n $var-declaration: \"#{$var-declaration}#{$category}--\";\n }\n // Append the key to the string\n $var-declaration: \"#{$var-declaration}#{$key}\";\n\n // If the fallback is not provided but use-fallback is set to true\n @if $fallback == null and $use-fallback and map-get($map, $key) != null {\n $fallback: map-get($map, $key);\n }\n @if $fallback != null {\n // Create the variable declaration\n $var-declaration: \"#{$var-declaration}, #{$fallback}\";\n }\n\n // Return the variable declaration string\n @return var(#{$var-declaration}); \n}\n\n\n\n/// Returns CSS Var for the local component-scoped variable\n/// @param {String} $cssvar - Variable identifiers which are postfixed and combined using '--'\n/// @param {String} $region - Identifies the region or slot to which this is assigned\n/// @see $custom-prop-prefix\n/// @see $LOCAL\n/// @example\n/// :host {\n/// padding-top: #{pfe-local(paddingTop)};\n/// padding-bottom: #{pfe-local(paddingBottom)};\n/// }\n@function pfe-local($cssvar, $fallback: null, $region: null) {\n // If a fallback is not defined, use the global variables map\n @if $fallback == null and length($LOCAL-VARIABLES) > 0 {\n @if $region == null {\n $fallback: map-get($LOCAL-VARIABLES, $cssvar);\n }\n @else {\n $submap: map-get($LOCAL-VARIABLES, $region);\n @if type-of($submap) == \"map\" {\n $fallback: map-deep-get($LOCAL-VARIABLES, $region, $cssvar);\n }\n }\n }\n\n // If a region value exists, build the region string\n @if $region != null {\n $region: \"__#{$region}\";\n }\n\n // Start building the variable declaration\n $var-declaration: \"--#{$custom-prop-prefix}-#{$LOCAL}#{$region}--#{to-string($cssvar, '--')}\";\n \n @if $fallback != null {\n $var-declaration: \"#{$var-declaration}, #{$fallback}\";\n }\n\n // Return the variable declaration string\n @return var(#{$var-declaration});\n}\n\n/// Fetches a CSS variable stack for broadcasted variables, providing a hook for context\n/// to influence the styles of children elements such as p tags or links.\n/// @param {String} $broadcast - name of the broadcast variable to apply\n/// @requires {String} $custom-prop-prefix - Name of repo, which is \"pfe\"\n/// @example - scss\n/// :host {\n/// color: pfe-broadcasted(link);\n/// }\n/// @example - css\n/// :host {\n/// color: var(--pfe-broadcasted--link, #06c);\n/// }\n@function pfe-broadcasted($broadcast, $use-fallback: true) {\n $fallback: \"\";\n @if $use-fallback {\n $fallback: \", #{map-get($pfe-broadcasted, #{to-string($broadcast,'--')})}\";\t\n }\n @if not index($BROADCAST-VARS, first(str-split($broadcast, '--'))) {\n @error \"--#{$custom-prop-prefix}-broadcasted--#{$broadcast} variable is not currently supported.\";\n }\n @else {\n @return var(--#{$custom-prop-prefix}-broadcasted--#{to-string($broadcast,'--')}#{unquote($fallback)});\n }\n}\n\n/// Returns CSS variable stack with exposed theme variable and respective fallback\n/// @param {String} $cssvar - Variable name to be used and prepended with --pfe-theme--zindex\n/// @requires {Map} $pfe-zindex - SASS Map of z-index values\n/// @see $pfe-zindex\n/// @example - scss - In your component styles\n/// .my-element {\n/// z-index: pfe-zindex( content );\n/// }\n\n@function pfe-zindex($cssvar) {\n $var-name: to-string($cssvar, \"--\");\n @if map-get($pfe-zindex, $var-name) != null {\n @return pfe-get-from-map(\"zindex\", $var-name, $pfe-zindex);\n }\n @else {\n @error \"The key for #{$var-name} could not be found in the $pfe-zindex map.\";\n }\n}\n\n/// Returns the value (only) of a property from the respective maps\n/// Similar to pfe-var, but does not include css variable in the compiled CSS\n/// @param {String} $name - Name of the key for the map\n/// @see $pfe-vars\n/// @see $pfe-colors\n/// @see $pfe-broadcasted\n/// @example - scss - In your component styles\n/// .my-element {\n/// background-color: pfe-fetch( ui-base );\n/// }\n@function pfe-fetch($name) {\n $var-name: to-string($name, \"--\");\n @if map-get($LOCAL-VARIABLES, $var-name) != null {\n @return map-get($LOCAL-VARIABLES, $var-name);\n }\n @if map-get($pfe-vars, $var-name) != null {\n @return map-get($pfe-vars, $var-name);\n }\n @else if map-get($pfe-colors, $var-name) != null {\n @return map-get($pfe-colors, $var-name);\n }\n @else if map-get($pfe-broadcasted, $var-name) != null {\n @return map-get($pfe-broadcasted, $var-name);\n }\n @else if map-get($pfe-typography-base, $var-name) != null {\n @return map-get($pfe-typography-base, $var-name);\n }\n\n // PATTERNFLY CORE\n @else if map-get($pf-type-sizing, $var-name) != null {\n @return map-get($pf-type-sizing, $var-name);\n }\n @else if map-get($pf-type-sizing--component, $var-name) != null {\n @return map-get($pf-type-sizing--component, $var-name);\n }\n @else if map-get($pf-type-sizing--modifers, $var-name) != null {\n @return map-get($pf-type-sizing--modifers, $var-name);\n }\n @else if map-get($pf-type-sizing--content, $var-name) != null {\n @return map-get($pf-type-sizing--content, $var-name);\n }\n // DEPRECATED\n @else if map-get($pfe-typography-base-deprecated, $var-name) != null {\n @return map-get($pfe-typography-base-deprecated, $var-name);\n }\n @else if map-get($pfe-typography-deprecated, $var-name) != null {\n @return map-get($pfe-typography-deprecated, $var-name);\n }\n @else {\n @error \"#{$var-name} could not be found.\";\n }\n}\n\n/// Returns CSS variable stack with exposed theme variable and respective fallback\n/// @param {String} $cssvar - Variable name to be used and prepended with --pfe-theme\n/// @param {String} $fallback [null] - Optional custom fallback\n/// @see $pfe-vars\n/// @see $pfe-colors\n/// @see $pfe-broadcasted\n/// @example scss - In your component styles\n/// .my-element {\n/// padding: pfe-var( container-spacer );\n/// font-size: pfe-var( font-size );\n/// }\n/// @example - css Rendered output\n/// .my-element {\n/// padding: var(--pfe-theme--container-spacer, 16px);\n/// font-size: var(--pfe-theme--font-size, 16px);\n/// }\n@function pfe-var($cssvar, $fallback: null) {\n $var-name: to-string($cssvar, \"--\");\n @if map-get($pfe-vars, $var-name) != null {\n @return pfe-get-from-map(\"\", $var-name, $pfe-vars, $fallback);\n }\n @else if map-get($pfe-colors, $var-name) != null {\n @return pfe-get-from-map(\"color\", $var-name, $pfe-colors, $fallback);\n }\n @else if map-get($pfe-broadcasted, $var-name) != null {\n @return pfe-get-from-map(\"\", $var-name, $pfe-broadcasted);\n }\n @else if map-get($pfe-typography-base, $var-name) != null {\n @return pfe-get-from-map(\"\", $var-name, $pfe-typography-base, $fallback);\n }\n // PATTERNFLY CORE:\n @else if map-get($pf-type-sizing, $var-name) != null {\n @return pfe-get-from-map(\"\", $var-name, $pf-type-sizing, $fallback, $prefix: \"pf-global\");\n }\n @else if map-get($pf-type-sizing--modifers, $var-name) != null {\n @return pfe-get-from-map(\"\", $var-name, $pf-type-sizing--modifers, $fallback, $prefix: \"pf-c\");\n }\n @else if map-get($pf-type-sizing--content, $var-name) != null {\n @return pfe-get-from-map(\"\", $var-name, $pf-type-sizing--content, $fallback, $prefix: \"pf-c\");\n }\n // PFE components (must be below core)\n @else if map-get($pf-type-sizing--component, $var-name) != null {\n @return pfe-get-from-map(\"\", $var-name, $pf-type-sizing--component, $fallback);\n }\n\n // DEPRECATED:\n @else if map-get($pfe-typography-base-deprecated, $var-name) != null {\n @return pfe-get-from-map(\"\", $var-name, $pfe-typography-base-deprecated, $fallback);\n }\n @else if map-get($pfe-typography-deprecated, $var-name) != null {\n @return pfe-get-from-map(\"\", $var-name, $pfe-typography-deprecated, $fallback);\n }\n\n @else {\n @error \"#{$var-name} could not be found.\";\n }\n}",":host {\n transition: transform 0.3s var(--pfe-theme--animation-timing, cubic-bezier(0.465, 0.183, 0.153, 0.946));\n display: block;\n}\n\n:host([hidden]) {\n display: none;\n}\n\n:host > * {\n margin: 0;\n}\n\n:host button {\n --pfe-accordion--BorderBottomWidth: 0;\n --pfe-accordion--ZIndex: 3;\n --pfe-accordion__trigger--Padding: var(--pfe-accordion__base--Padding, var(--pfe-theme--container-spacer, 1rem)) 50px var(--pfe-accordion__base--Padding, var(--pfe-theme--container-spacer, 1rem)) calc(var(--pfe-accordion__base--Padding, var(--pfe-theme--container-spacer, 1rem)) * 1.5);\n margin: 0;\n width: var(--pfe-accordion--Width, 100%);\n max-width: calc(100% - var(--pfe-theme--surface--border-width--heavy, 4px));\n height: auto;\n position: relative;\n background-color: var(--pfe-accordion--BackgroundColor, transparent);\n color: var(--pfe-accordion--Color, var(--pfe-broadcasted--text, #3c3f42));\n border-width: 0;\n border-style: var(--pfe-theme--surface--border-style, solid);\n border-color: var(--pfe-accordion--BorderColor, var(--pfe-theme--color--surface--border, #d2d2d2));\n border-top-width: var(--pfe-accordion--BorderTopWidth, var(--pfe-theme--surface--border-width, 1px));\n border-right-width: var(--pfe-accordion--BorderRightWidth, 0);\n border-bottom-width: var(--pfe-accordion--BorderBottomWidth, var(--pfe-theme--surface--border-width, 1px));\n border-left-width: var(--pfe-accordion--BorderLeftWidth, var(--pfe-theme--surface--border-width--heavy, 4px));\n border-left-color: var(--pfe-accordion--BorderColor--accent, transparent);\n box-shadow: var(--pfe-accordion--BoxShadow);\n z-index: var(--pfe-accordion--ZIndex);\n cursor: pointer;\n font-family: inherit;\n font-size: var(--pfe-accordion--FontSize--header, calc(var(--pfe-theme--font-size, 1rem) * 1.1));\n font-weight: var(--pfe-theme--font-weight--bold, 700);\n text-align: var(--pfe-accordion--TextAlign, left);\n line-height: var(--pfe-theme--line-height, 1.5);\n padding: var(--pfe-accordion__trigger--Padding);\n}\n\n@media screen and (-ms-high-contrast: active), screen and (-ms-high-contrast: none) {\n :host button {\n /* IE10+ */\n border-top-width: 1px;\n border-right-width: 0;\n border-bottom-width: 1px;\n border-left-width: 4px;\n }\n}\n\n:host button:hover, :host button:focus {\n --pfe-accordion--BorderColor--accent: var(--pfe-accordion--accent, var(--pfe-theme--color--ui-accent, #06c));\n}\n\n@media screen and (-ms-high-contrast: active), screen and (-ms-high-contrast: none) {\n :host button:hover, :host button:focus {\n /* IE10+ */\n border-left-color: #06c;\n }\n}\n\n:host button:hover {\n outline: none;\n border-left-width: var(--pfe-theme--surface--border-width--heavy, 4px);\n}\n\n:host button:focus {\n outline: none;\n text-decoration: underline;\n}\n\n:host button::-moz-focus-inner {\n border: 0;\n}\n\n@supports (-ms-ime-align: auto) {\n :host button {\n /* Microsoft Edge Browser 16+ (All) */\n text-align: left;\n }\n}\n\n@media screen and (-ms-high-contrast: active), screen and (-ms-high-contrast: none) {\n :host button {\n /* IE10+ */\n padding: 16px 24px;\n }\n :host button:hover {\n border-left-color: #06c;\n }\n}\n\n:host button[aria-expanded=\"true\"] {\n --pfe-accordion--BorderColor: var(--pfe-theme--color--surface--border, #d2d2d2);\n --pfe-accordion--BorderRightWidth: var(--pfe-theme--surface--border-width, 1px);\n --pfe-accordion--BorderLeftWidth: var(--pfe-theme--surface--border-width--heavy, 4px);\n --pfe-accordion--BackgroundColor: white;\n --pfe-accordion--Color: var(--pfe-theme--color--text, #151515);\n --pfe-accordion--BorderColor--accent: var(--pfe-accordion--accent, var(--pfe-theme--color--ui-accent, #06c));\n --pfe-accordion--BoxShadow: 0 5px var(--pfe-theme--surface--border-width--heavy, 4px) rgba(140, 140, 140, 0.35);\n --pfe-accordion--ZIndex: 3;\n}\n\n@media screen and (-ms-high-contrast: active), screen and (-ms-high-contrast: none) {\n :host button[aria-expanded=\"true\"] {\n /* IE10+ */\n border-bottom-width: 0;\n border-left-color: #06c;\n border-right-color: #d2d2d2;\n }\n}\n\n:host(:not([disclosure=\"true\"])) button::after {\n content: \"\";\n position: absolute;\n top: calc(var(--pfe-theme--container-spacer, 1rem) + 0.4em);\n display: block;\n border-style: var(--pfe-theme--surface--border-style, solid);\n height: 0.4em;\n width: 0.4em;\n transition: transform 0.15s;\n border-width: 0 .1em .1em 0;\n transform: rotate(45deg);\n right: calc(var(--pfe-theme--container-spacer, 1rem) * 1.3125);\n}\n\n:host(:not([disclosure=\"true\"])) button[aria-expanded=\"true\"]::after {\n transform: rotate(-135deg);\n}\n\n:host(:last-of-type) button:not([aria-expanded=\"true\"]) {\n --pfe-accordion--BorderBottomWidth: var(--pfe-theme--surface--border-width, 1px);\n}\n\n:host(:last-of-type.animating) button {\n --pfe-accordion--BorderBottomWidth: 0;\n}\n\n:host([on=\"dark\"]) button[aria-expanded=\"true\"] {\n --pfe-accordion--BackgroundColor: rgba(247, 247, 249, 0.1);\n --pfe-accordion--Color: var(--pfe-broadcasted--text, #3c3f42);\n --pfe-accordion--BorderColor--accent: var(--pfe-theme--color--ui-accent--on-dark, #73bcf7);\n --pfe-accordion--BoxShadow: none;\n}\n\n:host([on=\"saturated\"]) button[aria-expanded=\"true\"] {\n --pfe-accordion--BackgroundColor: rgba(0, 0, 0, 0.2);\n --pfe-accordion--Color: var(--pfe-broadcasted--text, #3c3f42);\n --pfe-accordion--BorderColor--accent: var(--pfe-theme--color--ui-accent--on-saturated, #fff);\n --pfe-accordion--BoxShadow: none;\n}\n\n:host([disclosure=\"true\"]) button {\n padding-left: calc(var(--pfe-accordion__base--Padding, var(--pfe-theme--container-spacer, 1rem)) * 3);\n}\n\n@media screen and (-ms-high-contrast: active), screen and (-ms-high-contrast: none) {\n :host([disclosure=\"true\"]) button {\n /* IE10+ */\n padding: 16px 24px 16px 47px;\n border-right-color: #d2d2d2;\n border-left-color: #d2d2d2;\n border-left-width: 1px;\n }\n}\n\n:host([disclosure=\"true\"]) button::before {\n content: \"\";\n position: absolute;\n top: calc(var(--pfe-theme--container-spacer, 1rem) + 0.55em);\n display: block;\n border-style: var(--pfe-theme--surface--border-style, solid);\n height: 0.4em;\n width: 0.4em;\n transition: transform 0.15s;\n border-width: 0 .1em .1em 0;\n transform: rotate(45deg);\n left: calc(var(--pfe-theme--container-spacer, 1rem) * 1.3125);\n transform: rotate(-45deg);\n}\n\n:host([disclosure=\"true\"]) button[aria-expanded=\"true\"]::before {\n transform: rotate(45deg);\n}\n\n:host([disclosure=\"true\"]) button[aria-expanded=\"true\"], :host([disclosure=\"true\"]) button:not([aria-expanded=\"true\"]):hover {\n padding-left: calc(var(--pfe-accordion__base--Padding, var(--pfe-theme--container-spacer, 1rem)) * 3 - var(--pfe-theme--surface--border-width--heavy, 4px) + var(--pfe-theme--surface--border-width, 1px));\n}\n\n:host([disclosure=\"true\"]) button[aria-expanded=\"true\"]::before, :host([disclosure=\"true\"]) button:not([aria-expanded=\"true\"]):hover::before {\n margin-left: calc((var(--pfe-theme--surface--border-width--heavy, 4px) - var(--pfe-theme--surface--border-width, 1px)) * -1);\n}\n","@mixin browser-query($browser-list) {\n @each $browser in $browser-list {\n @if $browser == ie11 {\n @media screen and (-ms-high-contrast: active), screen and (-ms-high-contrast: none) { /* IE10+ */\n @content;\n }\n }\n @if $browser == edge12 {\n @supports (-ms-accelerator: true) { /* Microsoft Edge Browser 12+ */\n @content;\n }\n }\n @if $browser == edge {\n @supports (-ms-ime-align: auto) { /* Microsoft Edge Browser 16+ (All) */\n @content;\n }\n }\n @if $browser == firefox {\n @media all and (min--moz-device-pixel-ratio:0) { /* Mozilla Firefox (All) */\n @content;\n }\n }\n }\n}\n\n@mixin pfe-transition($properties...) {\n $return: null;\n @each $property in $properties {\n @if length($property) == 1 {\n $return: append($return, #{$property} 250ms $pfe-global--animation-timing, comma);\n }\n @else if length($property) == 2 {\n $return: append($return, nth($property, 1) nth($property, 2), comma);\n }\n }\n transition: $return;\n}\n\n// Make a CSS arrow\n@mixin pfe-arrow($type, $color, $width: 8px, $height: 5px, $pseudo: false) {\n $direction: (\n up: 180deg,\n down: 0deg,\n right: -90deg,\n left: 90deg,\n );\n border-style: pfe-var(surface--border-style);\n border-width: $width $height 0;\n border-color: transparent;\n border-top-color: $color;\n transform: rotate(map-get($direction, $type));\n @if $pseudo {\n display: inline-block;\n content: \"\";\n @content;\n }\n}\n\n@mixin pfe-arrow-color($color) {\n border-top-color: $color;\n}\n\n@mixin pfe-print-media {\n @media print {\n @content;\n }\n}\n\n@mixin pfe-print-background {\n -webkit-print-color-adjust: exact;\n color-adjust: exact;\n}\n\n@mixin pfe-no-print-background {\n @include pfe-print-media {\n background-color: white !important;\n background-image: none !important;\n box-shadow: none !important;\n }\n}\n\n@mixin pfe-hidden {\n @at-root #{&}([hidden]) {\n display: none;\n }\n}\n\n@mixin pfe-pipe( $position: right, $padding: 0, $margin: 0, $color: $border-color) {\n border: pfe-var(surface--border-width) pfe-var(surface--border-style) transparent;\n border-#{$position}-color: $color;\n @if $position == right {\n padding-left: $padding;\n margin-right: $margin;\n }\n @else if $position == left {\n padding-right: $padding;\n margin-left: $margin;\n }\n}\n\n@mixin pfe-retina {\n @media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {\n @content;\n }\n}\n\n@mixin pfe-icon($path, $display: flex, $size: 1em) {\n display: #{$display};\n @if $path {\n background: #{$path} no-repeat;\n background-size: contain;\n background-position: center;\n }\n width: #{$size};\n height: #{$size};\n @content;\n}\n\n@mixin pfe-local-debug($map: $LOCAL-VARIABLES) {\n :root {\n @include pfe-print-local($map);\n }\n} ","////\n/// Tools for leveraging custom property stacks\n/// @group custom-properties\n/// @author castastrophe\n////\n\n/// This will print all the broadcast variables, and set the value to the context of your choosing, like on-dark or on-saturated.\n/// @param {String} $context - Look up values from contexts, i.e. \"light\" or \"saturated\"\n/// @param {List | String} $broadcast [$BROADCAST-VARS] - Optionally specify only one broadcast variable instead of the whole set, i.e. \"text\"\n/// @see $custom-prop-prefix\n/// @see $BROADCAST-VARS\n/// @example - scss - Usage in a container component, i.e. pfe-card\n/// :host {\n/// @include pfe-set-broadcast-context(dark);\n/// }\n/// @example - css - Rendered output\n/// :host {\n/// --pfe-broadcasted--text: var(--pfe-theme--color--text--on-dark, #fff);\n/// --pfe-broadcasted--link: var(--pfe-theme--color--link--on-dark, #99ccff);\n/// --pfe-broadcasted--link--hover: var(--pfe-theme--color--link--hover--on-dark, #cce6ff);\n/// --pfe-broadcasted--link--focus: var(--pfe-theme--color--link--focus--on-dark, #cce6ff);\n/// --pfe-broadcasted--link--visited: var(--pfe-theme--color--link--visited--on-dark, #b38cd9);\n/// --pfe-broadcasted--link-decoration: none;\n/// --pfe-broadcasted--link-decoration--hover: underline;\n/// --pfe-broadcasted--link-decoration--focus: underline;\n/// --pfe-broadcasted--link-decoration--visited: none;\n/// }\n///\n@mixin pfe-set-broadcast-context($context, $broadcast: $BROADCAST-VARS) {\n @each $type in $broadcast {\n $list: ();\n $string: \"\";\n $context_string: \"\";\n $state: \"\";\n\n @if str-starts-with($type, \"link\") {\n $list: append($list, \"#{$type}\");\n\n @each $s in (hover, focus, visited) {\n $state: \"--#{$s}\";\n $string: \"#{$type}#{$state}\";\n\n @if not index($list, $string) {\n $list: append($list, \"#{$type}#{$state}\");\n }\n }\n } @else {\n @if not index($list, $string) {\n $list: append($list, \"#{$type}\");\n }\n }\n\n @if index($CONTEXTS, $context) != null {\n @if $context != \"light\" {\n $context_string: \"--on-#{$context}\";\n }\n }\n\n @each $item in $list {\n @if not index($BROADCAST-VARS, $type) {\n @warn \"--#{$custom-prop-prefix}-broadcasted--#{$item} variable is not in the $BROADCAST-VARS list.\";\n } @else if not pfe-broadcasted(#{$item}#{$context_string}) {\n @warn \"#{$item}#{$context_string} value does not currently exist.\";\n } @else {\n @if index($CONTEXTS, $context) != null {\n --#{$custom-prop-prefix}-broadcasted--#{$item}: #{pfe-var(#{$item}#{$context_string})};\n } @else {\n @error \"The #{$context} context does not appear to be part of a supported context.\";\n }\n }\n }\n }\n}\n\n/// Returns CSS Variable for the local component-scoped variable\n/// @param {String} $cssvar - Variable identifiers which are postfixed and combined using '--'\n/// @param {String} $value - The value of the css variable being defined\n/// @param {String} $region - Identifies the region or slot to which this is assigned\n/// @see $custom-prop-prefix\n/// @see $LOCAL\n/// @example - scss\n/// :host {\n/// padding-top: pfe-local(paddingTop);\n/// padding-bottom: pfe-local(paddingBottom);\n/// }\n@mixin pfe-print-local($map: $LOCAL-VARIABLES) {\n @each $property, $value in $map {\n $name: \"--#{$property}\";\n $styles: $value;\n\n @if type-of($value) == \"map\" {\n @each $prop, $v in $value {\n $name: \"__#{$property}--#{$prop}\";\n $styles: $v;\n\n // Print the variable definition\n --#{$custom-prop-prefix}-#{$LOCAL}#{$name}: #{$styles};\n }\n } @else {\n // Print the variable definition\n --#{$custom-prop-prefix}-#{$LOCAL}#{$name}: #{$styles};\n }\n }\n}\n\n/// Surface properties\n/// This mixin creates an attribute for all the surface colors, then prints the local background color variable for the component, with the correct context colors.\n/// @param {List | String} $surfaces [$SURFACES] - defaults to the global $SURFACES list of all supported colors\n/// @param {String} $attr-name [pfe-var] - defaults to pfe-var, optionally pass in a custom name for the data attribute\n/// @example - scss - In your component stylesheet\n/// $LOCAL: band;\n/// @include pfe-surfaces;\n/// @example - css - Rendered result\n/// :host([color=\"darker\"]) {\n/// --pfe-band--BackgroundColor: var(--pfe-theme--color--surface--darker, #464646);\n/// --context: dark;\n/// }\n/// :host([color=\"darkest\"]) {\n/// --pfe-band--BackgroundColor: var(--pfe-theme--color--surface--darkest, #131313);\n/// --context: dark;\n/// }\n/// :host([color=\"base\"]) {\n/// --pfe-band--BackgroundColor: var(--pfe-theme--color--surface--base, #dfdfdf);\n/// --context: light;\n/// }\n/// :host([color=\"lighter\"]) {\n/// --pfe-band--BackgroundColor: var(--pfe-theme--color--surface--lighter, #ececec);\n/// --context: light;\n/// }\n/// :host([color=\"lightest\"]) {\n/// --pfe-band--BackgroundColor: var(--pfe-theme--color--surface--lightest, #fff);\n/// --context: light;\n/// }\n/// :host([color=\"accent\"]) {\n/// --pfe-band--BackgroundColor: var(--pfe-theme--color--surface--accent, #ee0000);\n/// --context: saturated;\n/// }\n/// :host([color=\"complement\"]) {\n/// --pfe-band--BackgroundColor: var(--pfe-theme--color--surface--complement, #0477a4);\n/// --context: saturated;\n/// }\n@mixin pfe-surfaces($surfaces: $SURFACE, $attr-name: color) {\n @each $color in $surfaces {\n $context: #{pfe-get-context(surface--#{$color}--context)};\n :host([#{$attr-name}=\"#{$color}\"]) {\n @include pfe-print-local(\n (\n BackgroundColor: pfe-var(surface--#{$color}),\n context: pfe-var(surface--#{$color}--context, #{$context})\n )\n );\n @extend %fallback-surface;\n }\n }\n}\n\n/// Prints the `on` attribute with IE11 fallbacks\n/// @param {List} contexts [$CONTEXTS] - defaults to the global $CONTEXTS list of all supported contexts\n/// @param {Boolean} ie-fallback [true] - defaults to true, prints IE11 fallbacks\n/// @example - scss - In your component styles\n/// @include pfe-contexts; // imports on=\"light\" etc support\n/// @example - css - Rendered outputs\n/// :host([on=\"dark\"]) {\n/// --pfe-broadcasted--text: var(--pfe-theme--color--text--on-dark, #fff);\n/// --pfe-broadcasted--link: var(--pfe-theme--color--link--on-dark, #99ccff);\n/// --pfe-broadcasted--link--hover: var(--pfe-theme--color--link--hover--on-dark, #cce6ff);\n/// --pfe-broadcasted--link--focus: var(--pfe-theme--color--link--focus--on-dark, #cce6ff);\n/// --pfe-broadcasted--link--visited: var(--pfe-theme--color--link--visited--on-dark, #b38cd9);\n/// --pfe-broadcasted--link-decoration: none;\n/// --pfe-broadcasted--link-decoration--hover: underline;\n/// --pfe-broadcasted--link-decoration--focus: underline;\n/// --pfe-broadcasted--link-decoration--visited: none;\n/// }\n/// @media screen and (-ms-high-contrast: active), screen and (-ms-high-contrast: none) { /* IE10+ */\n/// :host([on=\"dark\"]) {\n/// color: #fff;\n/// color: var(--pfe-theme--color--text--on-dark, #fff);\n/// }\n/// }\n/// // ...as well as all the values for :host([on=\"saturated\"]) and :host([on=\"light\"])\n@mixin pfe-contexts($contexts: $CONTEXTS, $ie-fallback: true) {\n // Helper attributes to aid in theming\n @each $context in $contexts {\n :host([on=\"#{$context}\"]) {\n @include pfe-set-broadcast-context($context);\n }\n }\n @if $ie-fallback {\n :host {\n @extend %fallback-text;\n }\n }\n}\n","////\n/// Accordion-specific SASS Vars\n/// @group accordion\n////\n\n@function pfe-accordion-variables($state: default, $context: default, $variant: default) {\n // Shared variables for all contexts\n $accordion-styles: ();\n\n @if $state != expanded { // Default state\n // Shared variables for all contexts\n $accordion-styles: (\n BorderColor--accent: transparent,\n BorderColor: pfe-var(surface--border),\n BorderTopWidth: pfe-var(surface--border-width),\n BorderRightWidth: 0,\n BorderBottomWidth: pfe-var(surface--border-width),\n BorderLeftWidth: pfe-var(surface--border-width--heavy),\n Color: pfe-broadcasted(text),\n TextAlign: left,\n accent: pfe-var(ui-accent),\n base: (\n Padding: pfe-var(container-spacer)\n )\n );\n\n @if $context == dark { // Dark context\n $accordion-styles: (\n accent: pfe-var(ui-accent--on-dark)\n );\n }\n @else if $context == saturated { // Saturated context\n $accordion-styles: (\n accent: pfe-var(ui-accent--on-saturated)\n );\n }\n\n @if $variant == disclosure {\n $accordion-styles: (\n BorderRightWidth: pfe-var(surface--border-width),\n BorderLeftWidth: pfe-var(surface--border-width),\n BorderColor--accent: pfe-var(surface--border)\n );\n }\n }\n @else { // Expanded state\n // Shared variables for all contexts\n $accordion-styles: (\n BorderColor: pfe-var(surface--border),\n BorderRightWidth: pfe-var(surface--border-width),\n BorderLeftWidth: pfe-var(surface--border-width--heavy),\n // Defaults for light context\n BackgroundColor: rgba(255, 255, 255, 1),\n Color: pfe-var(text),\n BorderColor--accent: pfe-local(accent),\n BoxShadow: 0 5px pfe-var(surface--border-width--heavy) rgba(140, 140, 140, 0.35),\n ZIndex: 3\n );\n\n @if $context == dark { // Dark context\n $accordion-styles: (\n BackgroundColor: rgba(247, 247, 249, .1),\n Color: pfe-broadcasted(text),\n BorderColor--accent: pfe-var(ui-accent--on-dark),\n BoxShadow: none\n );\n }\n @else if $context == saturated { // Saturated context\n $accordion-styles: (\n BackgroundColor: rgba(0, 0, 0, 0.2),\n Color: pfe-broadcasted(text),\n BorderColor--accent: pfe-var(ui-accent--on-saturated),\n BoxShadow: none\n );\n }\n \n @if $variant == disclosure {\n $accordion-styles: (\n BorderLeftWidth: pfe-var(surface--border-width--heavy),\n BorderColor--accent: pfe-var(ui-accent)\n );\n }\n }\n\n @return $accordion-styles;\n}\n\n@mixin pfe-accordion-props($variant: default) {\n margin: 0;\n width: pfe-local(Width, 100%);\n max-width: calc(100% - #{pfe-var(surface--border-width--heavy)});\n height: auto;\n position: relative;\n\n // Since the default bg color is transparent, look to broadcast values\n background-color: pfe-local(BackgroundColor, transparent);\n color: pfe-local(Color);\n\n // Border settings\n border-width: 0;\n border-style: pfe-var(surface--border-style);\n border-color: pfe-local(BorderColor);\n border-top-width: pfe-local(BorderTopWidth, $fallback: pfe-var(surface--border-width));\n border-right-width: pfe-local(BorderRightWidth, $fallback: 0);\n border-bottom-width: pfe-local(BorderBottomWidth, $fallback: pfe-var(surface--border-width));\n border-left-width: pfe-local(BorderLeftWidth, $fallback: pfe-var(surface--border-width--heavy));\n\n @include browser-query(ie11) {\n border-top-width: pfe-fetch(surface--border-width);\n border-right-width: 0;\n border-bottom-width: pfe-fetch(surface--border-width);\n border-left-width: pfe-fetch(surface--border-width--heavy);\n }\n\n // Custom border color for the accent mark on the left\n border-left-color: pfe-local(BorderColor--accent);\n\n box-shadow: pfe-local(BoxShadow);\n z-index: pfe-local(ZIndex);\n\n &:hover,\n &:focus {\n @include pfe-print-local((\n BorderColor--accent: pfe-local(accent)\n ));\n\n @include browser-query(ie11) {\n border-left-color: pfe-fetch(ui-accent);\n }\n }\n}\n\n//-- Trigger-specific properties\n@mixin pfe-trigger {\n $chevron--spacing: 50px;\n\n $LOCAL-VARIABLES: (\n BorderBottomWidth: 0,\n ZIndex: 3,\n trigger: (\n Padding: pfe-local(Padding, $region: base) $chevron--spacing pfe-local(Padding, $region: base) calc(#{pfe-local(Padding, $region: base)} * 1.5)\n )\n );\n\n @include pfe-print-local($LOCAL-VARIABLES);\n @include pfe-accordion-props;\n\n // -webkit-appearance: button;\n cursor: pointer;\n\n font-family: inherit;\n font-size: pfe-local(FontSize--header, calc(#{pfe-var(font-size)} * 1.1));\n font-weight: pfe-var(font-weight--bold);\n text-align: pfe-local(TextAlign, left);\n line-height: pfe-var(line-height);\n padding: pfe-local(Padding, $region: trigger);\n\n &:hover {\n outline: none;\n border-left-width: pfe-var(surface--border-width--heavy);\n }\n\n &:focus {\n outline: none;\n text-decoration: underline;\n }\n\n &::-moz-focus-inner {\n border: 0;\n }\n}\n\n@mixin pfe-trigger-last($context: light) {\n @include pfe-print-local((\n BorderBottomWidth: pfe-var(surface--border-width)\n ));\n}\n\n//-- Panel-specific properties\n@mixin pfe-panel-variables($context: light) {\n $LOCAL-VARIABLES: (\n accent: pfe-var(ui-accent),\n BorderTopWidth: 0\n );\n\n @if $context == \"light\" { // Light context\n $LOCAL-VARIABLES: map-deep-merge($LOCAL-VARIABLES, (\n BoxShadow: 0 5px pfe-var(surface--border-width--heavy) rgba(140, 140, 140, 0.35)\n ));\n }\n @else {\n $LOCAL-VARIABLES: map-deep-merge($LOCAL-VARIABLES, (\n BoxShadow: none\n ));\n }\n\n @include pfe-print-local($LOCAL-VARIABLES);\n}\n\n@mixin pfe-panel-container() {\n // Ensure the box shadow does not propagate to nest accordions\n @include pfe-print-local( ( BoxShadow: none ) );\n\n @extend %container;\n padding: pfe-local(Padding, $region: panel-container);\n}\n\n/// ===========================================================================\n/// Accordion chevrons\n/// ===========================================================================\n\n@mixin pfe-chevron($state: open, $position: after, $size: .4em, $offset: $size) {\n\n content: \"\";\n position: absolute;\n top: calc(#{pfe-var(container-spacer)} + #{$offset});\n\n display: block;\n border-style: pfe-var(surface--border-style);\n height: $size;\n width: $size;\n transition: transform 0.15s;\n @if $state == open {\n border-width: .1em .1em 0 0;\n border-bottom: 0;\n transform: rotate(-45deg);\n top: calc(#{pfe-var(container-spacer)} + #{$offset});\n @if $position == before {\n left: calc(#{pfe-var(container-spacer)} * 1.3125); // 21px\n top: calc(#{pfe-var(container-spacer)} + .25em);\n transform: rotate(135deg);\n }\n @else {\n right: calc(#{pfe-var(container-spacer)} * 1.3125);\n }\n }\n @else {\n border-width: 0 .1em .1em 0;\n transform: rotate(45deg);\n @if $position == before {\n left: calc(#{pfe-var(container-spacer)} * 1.3125);\n transform: rotate(-45deg);\n }\n @else {\n right: calc(#{pfe-var(container-spacer)} * 1.3125);\n }\n }\n}","@import \"@patternfly/patternfly/sass-utilities/scss-variables\";\n\n////\n/// @group maps\n/// @type Map\n////\n\n/// Variables for typography, spacing, sizing\n$pfe-vars: (\n\n container-spacer: pf-font-prem($pf-spacer), // 16px\n container-padding: pf-font-prem($pf-spacer), // 16px\n content-spacer: pf-font-prem($pf-spacer-sm), // 24px\n\n content-spacer--heading--lg: pf-font-prem($pf-spacer-md), // 32px \n content-spacer--heading--md: pf-font-prem($pf-spacer-sm), // 24px \n content-spacer--heading--sm: pf-font-prem($pf-spacer), // 16px\n content-spacer--body--md: pf-font-prem($pf-spacer), // 16px\n content-spacer--body--sm: pf-font-prem($pf-spacer-xs), // 8px\n\n surface--border-width: 1px, //\n surface--border-width--heavy: 4px, //\n surface--border-style: solid, //\n surface--border-radius: 3px, //\n surface--border-width--active: 3px, //\n\n icon-size: 1em, //\n\n ui--element--size: 20px, //\n ui--indent: 20px, //\n ui--border-width--sm: 1px, //\n ui--border-width--md: 2px, //\n ui--border-width--lg: 3px, //\n\n ui--border-width: 1px, //\n ui--border-width--active: 3px, //\n \n ui--border-style: solid, //\n ui--border-radius: 2px, //\n\n ui--focus-outline-width: 1px, //\n ui--focus-outline-style: solid, //\n\n grid-breakpoint--xs: 0, //\n grid-breakpoint--sm: 576px, //\n grid-breakpoint--md: 768px, //\n grid-breakpoint--lg: 992px, //\n grid-breakpoint--xl: 1200px, //\n\n box-shadow--sm: #{0 #{pfe-size-prem(1)} #{pfe-size-prem(2)} 0 rgba($pf-color-black-1000, .2)}, //\n box-shadow--md: #{0 #{pfe-size-prem(2)} #{pfe-size-prem(1)} #{pfe-size-prem(1)} rgba($pf-color-black-1000, .12), 0 #{pfe-size-prem(4)} #{pfe-size-prem(11)} #{pfe-size-prem(6)} rgba($pf-color-black-1000, .05)}, //\n box-shadow--lg: #{0 #{pfe-size-prem(3)} #{pfe-size-prem(7)} #{pfe-size-prem(3)} rgba($pf-color-black-1000, .13), 0 #{pfe-size-prem(11)} #{pfe-size-prem(24)} #{pfe-size-prem(16)} rgba($pf-color-black-1000, .12)}, //\n box-shadow--inset: #{inset 0 0 #{pfe-size-prem(10)} 0 $pf-color-black-100}, //\n\n animation-speed: .3s, //\n animation-timing: cubic-bezier(0.465, 0.183, 0.153, 0.946), //\n opacity: .09 //\n);","// Colors\n$pf-color-black-100: #fafafa !default;\n$pf-color-black-150: #f5f5f5 !default;\n$pf-color-black-200: #f0f0f0 !default;\n$pf-color-black-300: #d2d2d2 !default;\n$pf-color-black-400: #b8bbbe !default;\n$pf-color-black-500: #8a8d90 !default;\n$pf-color-black-600: #6a6e73 !default;\n$pf-color-black-700: #4f5255 !default;\n$pf-color-black-800: #3c3f42 !default;\n$pf-color-black-850: #212427 !default;\n$pf-color-black-900: #151515 !default;\n$pf-color-black-1000: #030303 !default;\n$pf-color-blue-50: #e7f1fa !default;\n$pf-color-blue-100: #bee1f4 !default;\n$pf-color-blue-200: #73bcf7 !default;\n$pf-color-blue-300: #2b9af3 !default;\n$pf-color-blue-400: #06c !default;\n$pf-color-blue-500: #004080 !default;\n$pf-color-blue-600: #002952 !default;\n$pf-color-blue-700: #001223 !default;\n$pf-color-cyan-50: #f2f9f9 !default;\n$pf-color-cyan-100: #a2d9d9 !default;\n$pf-color-cyan-200: #73c5c5 !default;\n$pf-color-cyan-300: #009596 !default;\n$pf-color-cyan-400: #005f60 !default;\n$pf-color-cyan-500: #003737 !default;\n$pf-color-cyan-600: #002323 !default;\n$pf-color-cyan-700: #000f0f !default;\n$pf-color-gold-50: #fdf7e7 !default;\n$pf-color-gold-100: #f9e0a2 !default;\n$pf-color-gold-200: #f6d173 !default;\n$pf-color-gold-300: #f4c145 !default;\n$pf-color-gold-400: #f0ab00 !default;\n$pf-color-gold-500: #c58c00 !default;\n$pf-color-gold-600: #795600 !default;\n$pf-color-gold-700: #3d2c00 !default;\n$pf-color-green-50: #f3faf2 !default;\n$pf-color-green-100: #bde5b8 !default;\n$pf-color-green-200: #95d58e !default;\n$pf-color-green-300: #6ec664 !default;\n$pf-color-green-400: #5ba352 !default;\n$pf-color-green-500: #3e8635 !default;\n$pf-color-green-600: #1e4f18 !default;\n$pf-color-green-700: #0f280d !default;\n$pf-color-light-blue-100: #beedf9 !default;\n$pf-color-light-blue-200: #7cdbf3 !default;\n$pf-color-light-blue-300: #35caed !default;\n$pf-color-light-blue-400: #00b9e4 !default;\n$pf-color-light-blue-500: #008bad !default;\n$pf-color-light-blue-600: #005c73 !default;\n$pf-color-light-blue-700: #002d39 !default;\n$pf-color-light-green-100: #e4f5bc !default;\n$pf-color-light-green-200: #c8eb79 !default;\n$pf-color-light-green-300: #ace12e !default;\n$pf-color-light-green-400: #92d400 !default;\n$pf-color-light-green-500: #6ca100 !default;\n$pf-color-light-green-600: #486b00 !default;\n$pf-color-light-green-700: #253600 !default;\n$pf-color-orange-100: #f4b678 !default;\n$pf-color-orange-200: #ef9234 !default;\n$pf-color-orange-300: #ec7a08 !default;\n$pf-color-orange-400: #c46100 !default;\n$pf-color-orange-500: #8f4700 !default;\n$pf-color-orange-600: #773d00 !default;\n$pf-color-orange-700: #3b1f00 !default;\n$pf-color-purple-50: #f2f0fc !default;\n$pf-color-purple-100: #cbc1ff !default;\n$pf-color-purple-200: #b2a3ff !default;\n$pf-color-purple-300: #a18fff !default;\n$pf-color-purple-400: #8476d1 !default;\n$pf-color-purple-500: #6753ac !default;\n$pf-color-purple-600: #40199a !default;\n$pf-color-purple-700: #1f0066 !default;\n$pf-color-red-50: #faeae8 !default;\n$pf-color-red-100: #c9190b !default;\n$pf-color-red-200: #a30000 !default;\n$pf-color-red-300: #7d1007 !default;\n$pf-color-red-400: #470000 !default;\n$pf-color-red-500: #2c0000 !default;\n$pf-color-white: #fff !default;\n"],"sourceRoot":"../src"}
\ No newline at end of file
diff --git a/elements/pfe-accordion/dist/pfe-accordion-header.min.css.map b/elements/pfe-accordion/dist/pfe-accordion-header.min.css.map
new file mode 100644
index 0000000000..a6d08729e4
--- /dev/null
+++ b/elements/pfe-accordion/dist/pfe-accordion-header.min.css.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../../src/pfe-accordion-header.scss","../../../pfe-sass/mixins/_mixins.scss","../../../pfe-sass/mixins/_custom-properties.scss","../../../pfe-sass/mixins/_components.scss"],"names":[],"mappings":"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","file":"pfe-accordion-header.min.css","sourceRoot":"../src","sourcesContent":[]}
\ No newline at end of file
diff --git a/elements/pfe-accordion/dist/pfe-accordion-panel.css.map b/elements/pfe-accordion/dist/pfe-accordion-panel.css.map
new file mode 100644
index 0000000000..ef24dd7763
--- /dev/null
+++ b/elements/pfe-accordion/dist/pfe-accordion-panel.css.map
@@ -0,0 +1 @@
+{"version":3,"sources":["pfe-accordion-panel.scss","../../pfe-sass/extends/_extends.scss","../../pfe-sass/functions/_custom-properties.scss","pfe-accordion-panel.css","../../pfe-sass/mixins/_containers.scss","../../pfe-sass/mixins/_components.scss","../../pfe-sass/mixins/_mixins.scss","../../pfe-sass/maps/_general.scss","../../pfe-sass/mixins/_custom-properties.scss","../../../node_modules/@patternfly/patternfly/sass-utilities/colors.scss"],"names":[],"mappings":"AAkBA;ECQE,kBAAkB;EAClB,cAAc;EACd,WAAW;EACX,aCQkC;EDRlC,iDCQkC;AChCpC;;AHCA;EI2BI,aAAa;EACb,gBAAgB;EAChB,mBAAmB;EACnB,yBAAyB;EACzB,UAAU;ECmDZ,SAAS;EACT,WHVkC;EGUlC,wCHVkC;EGWlC,2BAAgE;EAAhE,2EAAgE;EAChE,YAAY;EACZ,kBAAkB;EAGlB,6BHhBkC;EGgBlC,oEHhBkC;EGiBlC,cHjBkC;EGiBlC,yEHjBkC;EGoBlC,eAAe;EACf,mBH/DkC;EG+DlC,4DH/DkC;EGgElC,qBHtBkC;EGsBlC,kGHtBkC;EGuBlC,qBHvBkC;EGuBlC,oGHvBkC;EGwBlC,qBHxBkC;EGwBlC,6DHxBkC;EGyBlC,wBHzBkC;EGyBlC,0GHzBkC;EG0BlC,sBH1BkC;EG0BlC,6GH1BkC;EGoClC,8BHpCkC;EGoClC,yEHpCkC;EGsClC,mDHtCkC;UGsClC,2CHtCkC;EGuClC,qCHvCkC;EFrEjC,8BAAsB;UAAtB,sBAAsB;AGqBzB;;AG5BM;ENGN;IMH4F,UAAA;IDyGxF,qBExFgC;IFyFhC,qBAAuB;IACvB,wBE1FgC;IF2FhC,sBE1FgC;EJmBlC;AACF;;AHnCA;EQ8FM,4GAA8C;ALvDpD;;AG1CM;ENGN;IMH4F,UAAA;ID4HtF,uBI9G+B;ENkCnC;AACF;;AH9CA;;;EIDI,8BAJsC;UAItC,sBAJsC;ADyD1C;;AH7CA;EACE,cAAc;EACd,2CAAmC;EAAnC,mCAAmC;AGgDrC;;AH7CA;EQkFM,gCAA8C;EHwGlD,uDH7HkC;EF1DlC,4SAA0C;AGgD5C;;AHnDA;EIPI,WAAW;EACX,WAAW;EACX,cAAc;AD8DlB;;AHpDE;EACE,sIAA0C;AGuD9C;;AHnDA;EACE,gBAAgB;AGsDlB;;AH/CA;;EQgEM,+EAA8C;EAA9C,+EAA8C;EAA9C,qFAA8C;EAA9C,uCAA8C;EAA9C,8DAA8C;EAA9C,4GAA8C;EAA9C,+GAA8C;EAA9C,0BAA8C;EAA9C,iEAA8C;EAA9C,kCAA8C;EAA9C,+GAA8C;EJvEhD,cAAc;EACd,kBAAkB;EAClB,UAAU;ADsEd;;AGlGM;ENiCN;;IMjC4F,UAAA;INuCxF,mBAAmB;IACnB,uBENgC;IFMhC,2DENgC;IFOhC,2BEPgC;IFOhC,qEEPgC;ECyElC;AACF;;AH/DA;;EQoDM,0DAA8C;EAA9C,6DAA8C;EAA9C,0FAA8C;EAA9C,gCAA8C;EAA9C,iEAA8C;EAA9C,kCAA8C;EAA9C,gCAA8C;ALsBpD;;AHpEA;;EQ8CM,oDAA8C;EAA9C,6DAA8C;EAA9C,4FAA8C;EAA9C,gCAA8C;EAA9C,iEAA8C;EAA9C,kCAA8C;EAA9C,gCAA8C;ALiCpD","file":"pfe-accordion-panel.css","sourcesContent":["@import \"shared-assets\";\n\n/// ===========================================================================\n/// DEFAULT ACCORDION PANEL\n/// ===========================================================================\n\n:host {\n @include pfe-collapsible($state: closed);\n @include pfe-accordion-props;\n @include pfe-box-sizing;\n box-sizing: border-box;\n}\n\n:host(.animating) {\n display: block;\n transition: height 0.3s ease-in-out;\n}\n\n.container {\n @include pfe-clearfix;\n @include pfe-panel-container;\n --pfe-accordion__panel-container--Padding: 0 calc(#{pfe-local(Padding, $region: base)} * 3) #{pfe-local(Padding, $region: base)} calc(#{pfe-local(Padding, $region: base)} * 1.5);\n\n :host([disclosure=\"true\"]) & {\n --pfe-accordion__panel-container--Padding: 0 calc(#{pfe-local(Padding, $region: base)} * 1.5);\n }\n}\n\n:host(:last-of-type[expanded]) {\n margin-bottom: 0;\n}\n\n/// ===========================================================================\n/// EXPANDED STYLES\n/// ===========================================================================\n\n:host([expanded]),\n:host(.animating) {\n @include pfe-print-local(pfe-accordion-variables($state: expanded));\n @include pfe-panel-variables;\n @include pfe-collapsible($state: open);\n @include browser-query(ie11) {\n border-top-width: 0;\n border-left-color: pfe-var(ui-accent);\n border-right-color: pfe-var(surface--border);\n }\n}\n\n:host([on=\"dark\"][expanded]),\n:host([on=\"dark\"].animating){\n @include pfe-print-local(pfe-accordion-variables($state: expanded, $context: dark));\n @include pfe-panel-variables($context: dark);\n}\n\n:host([on=\"saturated\"][expanded]),\n:host([on=\"saturated\"].animating){\n @include pfe-print-local(pfe-accordion-variables($state: expanded, $context: saturated));\n @include pfe-panel-variables($context: saturated);\n}\n","// @todo Change to mixins; no efficiency gain with placeholders in web components\n\n/// Clear box element styles\n%reset-box {\n margin: 0;\n padding: 0;\n}\n\n/// Clear list styles\n%reset-list {\n margin: 0;\n padding: 0;\n list-style: none;\n}\n\n/// Clear button styles\n%reset-button {\n background-color: transparent;\n border: none;\n margin: 0;\n padding: 0;\n text-align: left;\n}\n\n/// Set up a container element\n%container {\n position: relative;\n display: block;\n width: 100%;\n padding: pfe-var(container-spacer);\n}\n\n/// Screen-reader only content\n%sr-only {\n position: absolute;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n height: 1px;\n width: 1px;\n margin: -1px;\n padding: 0;\n border: 0;\n}\n\n/// Fallback surface styles for IE11 only\n%fallback-surface {\n @include browser-query(ie11) {\n background-color: pfe-fetch(surface--lightest) !important;\n color: pfe-fetch(text) !important;\n }\n}\n\n/// Fallback text styles for IE11 only\n%fallback-text {\n @include browser-query(ie11) {\n color: pfe-fetch(text) !important;\n }\n}\n","////\n/// Tools for leveraging custom property stacks\n/// @group custom-properties\n/// @author castastrophe\n////\n\n/// Get full theme stack with a fallback from the provided map - used by pfe-var and pfe-zindex\n/// @param {String} $category - Category name to be appended to variables within the map/system\n/// @param {String} $key - Variable name to be used and prepended with --pfe-theme\n/// @param {Map} $map - Sass map of variables\n/// @param {String} $fallback [null] - Optional fallback override\n/// @param {Boolean} $use-fallback [true] - Optional hook to return a stack with no fallback value\n/// @requires $custom-prop-prefix\n/// @return {String} theme stack with fallback value from a sass map\n@function pfe-get-from-map($category, $key, $map, $fallback: null, $prefix: \"#{$custom-prop-prefix}-theme\", $use-fallback: true) {\n // Start building the variable declaration\n $var-declaration: \"--#{$prefix}--\";\n @if $prefix == \"pf-c\" {\n $var-declaration: \"--#{$prefix}-\"; // one dash at the end\n }\n // If the category exists, inject that into the string\n @if $category != \"\" {\n $var-declaration: \"#{$var-declaration}#{$category}--\";\n }\n // Append the key to the string\n $var-declaration: \"#{$var-declaration}#{$key}\";\n\n // If the fallback is not provided but use-fallback is set to true\n @if $fallback == null and $use-fallback and map-get($map, $key) != null {\n $fallback: map-get($map, $key);\n }\n @if $fallback != null {\n // Create the variable declaration\n $var-declaration: \"#{$var-declaration}, #{$fallback}\";\n }\n\n // Return the variable declaration string\n @return var(#{$var-declaration}); \n}\n\n\n\n/// Returns CSS Var for the local component-scoped variable\n/// @param {String} $cssvar - Variable identifiers which are postfixed and combined using '--'\n/// @param {String} $region - Identifies the region or slot to which this is assigned\n/// @see $custom-prop-prefix\n/// @see $LOCAL\n/// @example\n/// :host {\n/// padding-top: #{pfe-local(paddingTop)};\n/// padding-bottom: #{pfe-local(paddingBottom)};\n/// }\n@function pfe-local($cssvar, $fallback: null, $region: null) {\n // If a fallback is not defined, use the global variables map\n @if $fallback == null and length($LOCAL-VARIABLES) > 0 {\n @if $region == null {\n $fallback: map-get($LOCAL-VARIABLES, $cssvar);\n }\n @else {\n $submap: map-get($LOCAL-VARIABLES, $region);\n @if type-of($submap) == \"map\" {\n $fallback: map-deep-get($LOCAL-VARIABLES, $region, $cssvar);\n }\n }\n }\n\n // If a region value exists, build the region string\n @if $region != null {\n $region: \"__#{$region}\";\n }\n\n // Start building the variable declaration\n $var-declaration: \"--#{$custom-prop-prefix}-#{$LOCAL}#{$region}--#{to-string($cssvar, '--')}\";\n \n @if $fallback != null {\n $var-declaration: \"#{$var-declaration}, #{$fallback}\";\n }\n\n // Return the variable declaration string\n @return var(#{$var-declaration});\n}\n\n/// Fetches a CSS variable stack for broadcasted variables, providing a hook for context\n/// to influence the styles of children elements such as p tags or links.\n/// @param {String} $broadcast - name of the broadcast variable to apply\n/// @requires {String} $custom-prop-prefix - Name of repo, which is \"pfe\"\n/// @example - scss\n/// :host {\n/// color: pfe-broadcasted(link);\n/// }\n/// @example - css\n/// :host {\n/// color: var(--pfe-broadcasted--link, #06c);\n/// }\n@function pfe-broadcasted($broadcast, $use-fallback: true) {\n $fallback: \"\";\n @if $use-fallback {\n $fallback: \", #{map-get($pfe-broadcasted, #{to-string($broadcast,'--')})}\";\t\n }\n @if not index($BROADCAST-VARS, first(str-split($broadcast, '--'))) {\n @error \"--#{$custom-prop-prefix}-broadcasted--#{$broadcast} variable is not currently supported.\";\n }\n @else {\n @return var(--#{$custom-prop-prefix}-broadcasted--#{to-string($broadcast,'--')}#{unquote($fallback)});\n }\n}\n\n/// Returns CSS variable stack with exposed theme variable and respective fallback\n/// @param {String} $cssvar - Variable name to be used and prepended with --pfe-theme--zindex\n/// @requires {Map} $pfe-zindex - SASS Map of z-index values\n/// @see $pfe-zindex\n/// @example - scss - In your component styles\n/// .my-element {\n/// z-index: pfe-zindex( content );\n/// }\n\n@function pfe-zindex($cssvar) {\n $var-name: to-string($cssvar, \"--\");\n @if map-get($pfe-zindex, $var-name) != null {\n @return pfe-get-from-map(\"zindex\", $var-name, $pfe-zindex);\n }\n @else {\n @error \"The key for #{$var-name} could not be found in the $pfe-zindex map.\";\n }\n}\n\n/// Returns the value (only) of a property from the respective maps\n/// Similar to pfe-var, but does not include css variable in the compiled CSS\n/// @param {String} $name - Name of the key for the map\n/// @see $pfe-vars\n/// @see $pfe-colors\n/// @see $pfe-broadcasted\n/// @example - scss - In your component styles\n/// .my-element {\n/// background-color: pfe-fetch( ui-base );\n/// }\n@function pfe-fetch($name) {\n $var-name: to-string($name, \"--\");\n @if map-get($LOCAL-VARIABLES, $var-name) != null {\n @return map-get($LOCAL-VARIABLES, $var-name);\n }\n @if map-get($pfe-vars, $var-name) != null {\n @return map-get($pfe-vars, $var-name);\n }\n @else if map-get($pfe-colors, $var-name) != null {\n @return map-get($pfe-colors, $var-name);\n }\n @else if map-get($pfe-broadcasted, $var-name) != null {\n @return map-get($pfe-broadcasted, $var-name);\n }\n @else if map-get($pfe-typography-base, $var-name) != null {\n @return map-get($pfe-typography-base, $var-name);\n }\n\n // PATTERNFLY CORE\n @else if map-get($pf-type-sizing, $var-name) != null {\n @return map-get($pf-type-sizing, $var-name);\n }\n @else if map-get($pf-type-sizing--component, $var-name) != null {\n @return map-get($pf-type-sizing--component, $var-name);\n }\n @else if map-get($pf-type-sizing--modifers, $var-name) != null {\n @return map-get($pf-type-sizing--modifers, $var-name);\n }\n @else if map-get($pf-type-sizing--content, $var-name) != null {\n @return map-get($pf-type-sizing--content, $var-name);\n }\n // DEPRECATED\n @else if map-get($pfe-typography-base-deprecated, $var-name) != null {\n @return map-get($pfe-typography-base-deprecated, $var-name);\n }\n @else if map-get($pfe-typography-deprecated, $var-name) != null {\n @return map-get($pfe-typography-deprecated, $var-name);\n }\n @else {\n @error \"#{$var-name} could not be found.\";\n }\n}\n\n/// Returns CSS variable stack with exposed theme variable and respective fallback\n/// @param {String} $cssvar - Variable name to be used and prepended with --pfe-theme\n/// @param {String} $fallback [null] - Optional custom fallback\n/// @see $pfe-vars\n/// @see $pfe-colors\n/// @see $pfe-broadcasted\n/// @example scss - In your component styles\n/// .my-element {\n/// padding: pfe-var( container-spacer );\n/// font-size: pfe-var( font-size );\n/// }\n/// @example - css Rendered output\n/// .my-element {\n/// padding: var(--pfe-theme--container-spacer, 16px);\n/// font-size: var(--pfe-theme--font-size, 16px);\n/// }\n@function pfe-var($cssvar, $fallback: null) {\n $var-name: to-string($cssvar, \"--\");\n @if map-get($pfe-vars, $var-name) != null {\n @return pfe-get-from-map(\"\", $var-name, $pfe-vars, $fallback);\n }\n @else if map-get($pfe-colors, $var-name) != null {\n @return pfe-get-from-map(\"color\", $var-name, $pfe-colors, $fallback);\n }\n @else if map-get($pfe-broadcasted, $var-name) != null {\n @return pfe-get-from-map(\"\", $var-name, $pfe-broadcasted);\n }\n @else if map-get($pfe-typography-base, $var-name) != null {\n @return pfe-get-from-map(\"\", $var-name, $pfe-typography-base, $fallback);\n }\n // PATTERNFLY CORE:\n @else if map-get($pf-type-sizing, $var-name) != null {\n @return pfe-get-from-map(\"\", $var-name, $pf-type-sizing, $fallback, $prefix: \"pf-global\");\n }\n @else if map-get($pf-type-sizing--modifers, $var-name) != null {\n @return pfe-get-from-map(\"\", $var-name, $pf-type-sizing--modifers, $fallback, $prefix: \"pf-c\");\n }\n @else if map-get($pf-type-sizing--content, $var-name) != null {\n @return pfe-get-from-map(\"\", $var-name, $pf-type-sizing--content, $fallback, $prefix: \"pf-c\");\n }\n // PFE components (must be below core)\n @else if map-get($pf-type-sizing--component, $var-name) != null {\n @return pfe-get-from-map(\"\", $var-name, $pf-type-sizing--component, $fallback);\n }\n\n // DEPRECATED:\n @else if map-get($pfe-typography-base-deprecated, $var-name) != null {\n @return pfe-get-from-map(\"\", $var-name, $pfe-typography-base-deprecated, $fallback);\n }\n @else if map-get($pfe-typography-deprecated, $var-name) != null {\n @return pfe-get-from-map(\"\", $var-name, $pfe-typography-deprecated, $fallback);\n }\n\n @else {\n @error \"#{$var-name} could not be found.\";\n }\n}",".container {\n position: relative;\n display: block;\n width: 100%;\n padding: var(--pfe-theme--container-spacer, 1rem);\n}\n\n:host {\n display: none;\n overflow: hidden;\n will-change: height;\n border-color: transparent;\n opacity: 0;\n margin: 0;\n width: var(--pfe-accordion--Width, 100%);\n max-width: calc(100% - var(--pfe-theme--surface--border-width--heavy, 4px));\n height: auto;\n position: relative;\n background-color: var(--pfe-accordion--BackgroundColor, transparent);\n color: var(--pfe-accordion--Color, var(--pfe-broadcasted--text, #3c3f42));\n border-width: 0;\n border-style: var(--pfe-theme--surface--border-style, solid);\n border-color: var(--pfe-accordion--BorderColor, var(--pfe-theme--color--surface--border, #d2d2d2));\n border-top-width: var(--pfe-accordion--BorderTopWidth, var(--pfe-theme--surface--border-width, 1px));\n border-right-width: var(--pfe-accordion--BorderRightWidth, 0);\n border-bottom-width: var(--pfe-accordion--BorderBottomWidth, var(--pfe-theme--surface--border-width, 1px));\n border-left-width: var(--pfe-accordion--BorderLeftWidth, var(--pfe-theme--surface--border-width--heavy, 4px));\n border-left-color: var(--pfe-accordion--BorderColor--accent, transparent);\n box-shadow: var(--pfe-accordion--BoxShadow);\n z-index: var(--pfe-accordion--ZIndex);\n box-sizing: border-box;\n}\n\n@media screen and (-ms-high-contrast: active), screen and (-ms-high-contrast: none) {\n :host {\n /* IE10+ */\n border-top-width: 1px;\n border-right-width: 0;\n border-bottom-width: 1px;\n border-left-width: 4px;\n }\n}\n\n:host:hover, :host:focus {\n --pfe-accordion--BorderColor--accent: var(--pfe-accordion--accent, var(--pfe-theme--color--ui-accent, #06c));\n}\n\n@media screen and (-ms-high-contrast: active), screen and (-ms-high-contrast: none) {\n :host:hover, :host:focus {\n /* IE10+ */\n border-left-color: #06c;\n }\n}\n\n:host *,\n:host *::before,\n:host *::after {\n box-sizing: border-box;\n}\n\n:host(.animating) {\n display: block;\n transition: height 0.3s ease-in-out;\n}\n\n.container {\n --pfe-accordion--BoxShadow: none;\n padding: var(--pfe-accordion__panel-container--Padding);\n --pfe-accordion__panel-container--Padding: 0 calc(var(--pfe-accordion__base--Padding, var(--pfe-theme--container-spacer, 1rem)) * 3) var(--pfe-accordion__base--Padding, var(--pfe-theme--container-spacer, 1rem)) calc(var(--pfe-accordion__base--Padding, var(--pfe-theme--container-spacer, 1rem)) * 1.5);\n}\n\n.container::after {\n clear: both;\n content: \"\";\n display: table;\n}\n\n:host([disclosure=\"true\"]) .container {\n --pfe-accordion__panel-container--Padding: 0 calc(var(--pfe-accordion__base--Padding, var(--pfe-theme--container-spacer, 1rem)) * 1.5);\n}\n\n:host(:last-of-type[expanded]) {\n margin-bottom: 0;\n}\n\n:host([expanded]),\n:host(.animating) {\n --pfe-accordion--BorderColor: var(--pfe-theme--color--surface--border, #d2d2d2);\n --pfe-accordion--BorderRightWidth: var(--pfe-theme--surface--border-width, 1px);\n --pfe-accordion--BorderLeftWidth: var(--pfe-theme--surface--border-width--heavy, 4px);\n --pfe-accordion--BackgroundColor: white;\n --pfe-accordion--Color: var(--pfe-theme--color--text, #151515);\n --pfe-accordion--BorderColor--accent: var(--pfe-accordion--accent, var(--pfe-theme--color--ui-accent, #06c));\n --pfe-accordion--BoxShadow: 0 5px var(--pfe-theme--surface--border-width--heavy, 4px) rgba(140, 140, 140, 0.35);\n --pfe-accordion--ZIndex: 3;\n --pfe-accordion--accent: var(--pfe-theme--color--ui-accent, #06c);\n --pfe-accordion--BorderTopWidth: 0;\n --pfe-accordion--BoxShadow: 0 5px var(--pfe-theme--surface--border-width--heavy, 4px) rgba(140, 140, 140, 0.35);\n display: block;\n position: relative;\n opacity: 1;\n}\n\n@media screen and (-ms-high-contrast: active), screen and (-ms-high-contrast: none) {\n :host([expanded]),\n :host(.animating) {\n /* IE10+ */\n border-top-width: 0;\n border-left-color: var(--pfe-theme--color--ui-accent, #06c);\n border-right-color: var(--pfe-theme--color--surface--border, #d2d2d2);\n }\n}\n\n:host([on=\"dark\"][expanded]),\n:host([on=\"dark\"].animating) {\n --pfe-accordion--BackgroundColor: rgba(247, 247, 249, 0.1);\n --pfe-accordion--Color: var(--pfe-broadcasted--text, #3c3f42);\n --pfe-accordion--BorderColor--accent: var(--pfe-theme--color--ui-accent--on-dark, #73bcf7);\n --pfe-accordion--BoxShadow: none;\n --pfe-accordion--accent: var(--pfe-theme--color--ui-accent, #06c);\n --pfe-accordion--BorderTopWidth: 0;\n --pfe-accordion--BoxShadow: none;\n}\n\n:host([on=\"saturated\"][expanded]),\n:host([on=\"saturated\"].animating) {\n --pfe-accordion--BackgroundColor: rgba(0, 0, 0, 0.2);\n --pfe-accordion--Color: var(--pfe-broadcasted--text, #3c3f42);\n --pfe-accordion--BorderColor--accent: var(--pfe-theme--color--ui-accent--on-saturated, #fff);\n --pfe-accordion--BoxShadow: none;\n --pfe-accordion--accent: var(--pfe-theme--color--ui-accent, #06c);\n --pfe-accordion--BorderTopWidth: 0;\n --pfe-accordion--BoxShadow: none;\n}\n","// $boxSize = any box-sizing property, default is border-box\n@mixin pfe-box-sizing($boxSize: border-box) {\n *,\n *::before,\n *::after {\n box-sizing: $boxSize;\n }\n}\n\n@mixin pfe-clearfix {\n &::after {\n clear: both;\n content: \"\";\n display: table;\n }\n}\n\n@mixin pfe-container {\n @extend %container;\n\n padding: calc(#{pfe-local(Padding--vertical)} / 2) #{pfe-local(Padding--horizontal)};\n\n @media (min-width: pfe-breakpoint(sm)) {\n padding: pfe-local(Padding);\n }\n}\n\n@mixin pfe-collapsible($state: closed) {\n @if $state != closed {\n display: block;\n position: relative;\n opacity: 1;\n } @else {\n display: none;\n overflow: hidden;\n will-change: height;\n border-color: transparent;\n opacity: 0;\n }\n}\n","////\n/// Accordion-specific SASS Vars\n/// @group accordion\n////\n\n@function pfe-accordion-variables($state: default, $context: default, $variant: default) {\n // Shared variables for all contexts\n $accordion-styles: ();\n\n @if $state != expanded { // Default state\n // Shared variables for all contexts\n $accordion-styles: (\n BorderColor--accent: transparent,\n BorderColor: pfe-var(surface--border),\n BorderTopWidth: pfe-var(surface--border-width),\n BorderRightWidth: 0,\n BorderBottomWidth: pfe-var(surface--border-width),\n BorderLeftWidth: pfe-var(surface--border-width--heavy),\n Color: pfe-broadcasted(text),\n TextAlign: left,\n accent: pfe-var(ui-accent),\n base: (\n Padding: pfe-var(container-spacer)\n )\n );\n\n @if $context == dark { // Dark context\n $accordion-styles: (\n accent: pfe-var(ui-accent--on-dark)\n );\n }\n @else if $context == saturated { // Saturated context\n $accordion-styles: (\n accent: pfe-var(ui-accent--on-saturated)\n );\n }\n\n @if $variant == disclosure {\n $accordion-styles: (\n BorderRightWidth: pfe-var(surface--border-width),\n BorderLeftWidth: pfe-var(surface--border-width),\n BorderColor--accent: pfe-var(surface--border)\n );\n }\n }\n @else { // Expanded state\n // Shared variables for all contexts\n $accordion-styles: (\n BorderColor: pfe-var(surface--border),\n BorderRightWidth: pfe-var(surface--border-width),\n BorderLeftWidth: pfe-var(surface--border-width--heavy),\n // Defaults for light context\n BackgroundColor: rgba(255, 255, 255, 1),\n Color: pfe-var(text),\n BorderColor--accent: pfe-local(accent),\n BoxShadow: 0 5px pfe-var(surface--border-width--heavy) rgba(140, 140, 140, 0.35),\n ZIndex: 3\n );\n\n @if $context == dark { // Dark context\n $accordion-styles: (\n BackgroundColor: rgba(247, 247, 249, .1),\n Color: pfe-broadcasted(text),\n BorderColor--accent: pfe-var(ui-accent--on-dark),\n BoxShadow: none\n );\n }\n @else if $context == saturated { // Saturated context\n $accordion-styles: (\n BackgroundColor: rgba(0, 0, 0, 0.2),\n Color: pfe-broadcasted(text),\n BorderColor--accent: pfe-var(ui-accent--on-saturated),\n BoxShadow: none\n );\n }\n \n @if $variant == disclosure {\n $accordion-styles: (\n BorderLeftWidth: pfe-var(surface--border-width--heavy),\n BorderColor--accent: pfe-var(ui-accent)\n );\n }\n }\n\n @return $accordion-styles;\n}\n\n@mixin pfe-accordion-props($variant: default) {\n margin: 0;\n width: pfe-local(Width, 100%);\n max-width: calc(100% - #{pfe-var(surface--border-width--heavy)});\n height: auto;\n position: relative;\n\n // Since the default bg color is transparent, look to broadcast values\n background-color: pfe-local(BackgroundColor, transparent);\n color: pfe-local(Color);\n\n // Border settings\n border-width: 0;\n border-style: pfe-var(surface--border-style);\n border-color: pfe-local(BorderColor);\n border-top-width: pfe-local(BorderTopWidth, $fallback: pfe-var(surface--border-width));\n border-right-width: pfe-local(BorderRightWidth, $fallback: 0);\n border-bottom-width: pfe-local(BorderBottomWidth, $fallback: pfe-var(surface--border-width));\n border-left-width: pfe-local(BorderLeftWidth, $fallback: pfe-var(surface--border-width--heavy));\n\n @include browser-query(ie11) {\n border-top-width: pfe-fetch(surface--border-width);\n border-right-width: 0;\n border-bottom-width: pfe-fetch(surface--border-width);\n border-left-width: pfe-fetch(surface--border-width--heavy);\n }\n\n // Custom border color for the accent mark on the left\n border-left-color: pfe-local(BorderColor--accent);\n\n box-shadow: pfe-local(BoxShadow);\n z-index: pfe-local(ZIndex);\n\n &:hover,\n &:focus {\n @include pfe-print-local((\n BorderColor--accent: pfe-local(accent)\n ));\n\n @include browser-query(ie11) {\n border-left-color: pfe-fetch(ui-accent);\n }\n }\n}\n\n//-- Trigger-specific properties\n@mixin pfe-trigger {\n $chevron--spacing: 50px;\n\n $LOCAL-VARIABLES: (\n BorderBottomWidth: 0,\n ZIndex: 3,\n trigger: (\n Padding: pfe-local(Padding, $region: base) $chevron--spacing pfe-local(Padding, $region: base) calc(#{pfe-local(Padding, $region: base)} * 1.5)\n )\n );\n\n @include pfe-print-local($LOCAL-VARIABLES);\n @include pfe-accordion-props;\n\n // -webkit-appearance: button;\n cursor: pointer;\n\n font-family: inherit;\n font-size: pfe-local(FontSize--header, calc(#{pfe-var(font-size)} * 1.1));\n font-weight: pfe-var(font-weight--bold);\n text-align: pfe-local(TextAlign, left);\n line-height: pfe-var(line-height);\n padding: pfe-local(Padding, $region: trigger);\n\n &:hover {\n outline: none;\n border-left-width: pfe-var(surface--border-width--heavy);\n }\n\n &:focus {\n outline: none;\n text-decoration: underline;\n }\n\n &::-moz-focus-inner {\n border: 0;\n }\n}\n\n@mixin pfe-trigger-last($context: light) {\n @include pfe-print-local((\n BorderBottomWidth: pfe-var(surface--border-width)\n ));\n}\n\n//-- Panel-specific properties\n@mixin pfe-panel-variables($context: light) {\n $LOCAL-VARIABLES: (\n accent: pfe-var(ui-accent),\n BorderTopWidth: 0\n );\n\n @if $context == \"light\" { // Light context\n $LOCAL-VARIABLES: map-deep-merge($LOCAL-VARIABLES, (\n BoxShadow: 0 5px pfe-var(surface--border-width--heavy) rgba(140, 140, 140, 0.35)\n ));\n }\n @else {\n $LOCAL-VARIABLES: map-deep-merge($LOCAL-VARIABLES, (\n BoxShadow: none\n ));\n }\n\n @include pfe-print-local($LOCAL-VARIABLES);\n}\n\n@mixin pfe-panel-container() {\n // Ensure the box shadow does not propagate to nest accordions\n @include pfe-print-local( ( BoxShadow: none ) );\n\n @extend %container;\n padding: pfe-local(Padding, $region: panel-container);\n}\n\n/// ===========================================================================\n/// Accordion chevrons\n/// ===========================================================================\n\n@mixin pfe-chevron($state: open, $position: after, $size: .4em, $offset: $size) {\n\n content: \"\";\n position: absolute;\n top: calc(#{pfe-var(container-spacer)} + #{$offset});\n\n display: block;\n border-style: pfe-var(surface--border-style);\n height: $size;\n width: $size;\n transition: transform 0.15s;\n @if $state == open {\n border-width: .1em .1em 0 0;\n border-bottom: 0;\n transform: rotate(-45deg);\n top: calc(#{pfe-var(container-spacer)} + #{$offset});\n @if $position == before {\n left: calc(#{pfe-var(container-spacer)} * 1.3125); // 21px\n top: calc(#{pfe-var(container-spacer)} + .25em);\n transform: rotate(135deg);\n }\n @else {\n right: calc(#{pfe-var(container-spacer)} * 1.3125);\n }\n }\n @else {\n border-width: 0 .1em .1em 0;\n transform: rotate(45deg);\n @if $position == before {\n left: calc(#{pfe-var(container-spacer)} * 1.3125);\n transform: rotate(-45deg);\n }\n @else {\n right: calc(#{pfe-var(container-spacer)} * 1.3125);\n }\n }\n}","@mixin browser-query($browser-list) {\n @each $browser in $browser-list {\n @if $browser == ie11 {\n @media screen and (-ms-high-contrast: active), screen and (-ms-high-contrast: none) { /* IE10+ */\n @content;\n }\n }\n @if $browser == edge12 {\n @supports (-ms-accelerator: true) { /* Microsoft Edge Browser 12+ */\n @content;\n }\n }\n @if $browser == edge {\n @supports (-ms-ime-align: auto) { /* Microsoft Edge Browser 16+ (All) */\n @content;\n }\n }\n @if $browser == firefox {\n @media all and (min--moz-device-pixel-ratio:0) { /* Mozilla Firefox (All) */\n @content;\n }\n }\n }\n}\n\n@mixin pfe-transition($properties...) {\n $return: null;\n @each $property in $properties {\n @if length($property) == 1 {\n $return: append($return, #{$property} 250ms $pfe-global--animation-timing, comma);\n }\n @else if length($property) == 2 {\n $return: append($return, nth($property, 1) nth($property, 2), comma);\n }\n }\n transition: $return;\n}\n\n// Make a CSS arrow\n@mixin pfe-arrow($type, $color, $width: 8px, $height: 5px, $pseudo: false) {\n $direction: (\n up: 180deg,\n down: 0deg,\n right: -90deg,\n left: 90deg,\n );\n border-style: pfe-var(surface--border-style);\n border-width: $width $height 0;\n border-color: transparent;\n border-top-color: $color;\n transform: rotate(map-get($direction, $type));\n @if $pseudo {\n display: inline-block;\n content: \"\";\n @content;\n }\n}\n\n@mixin pfe-arrow-color($color) {\n border-top-color: $color;\n}\n\n@mixin pfe-print-media {\n @media print {\n @content;\n }\n}\n\n@mixin pfe-print-background {\n -webkit-print-color-adjust: exact;\n color-adjust: exact;\n}\n\n@mixin pfe-no-print-background {\n @include pfe-print-media {\n background-color: white !important;\n background-image: none !important;\n box-shadow: none !important;\n }\n}\n\n@mixin pfe-hidden {\n @at-root #{&}([hidden]) {\n display: none;\n }\n}\n\n@mixin pfe-pipe( $position: right, $padding: 0, $margin: 0, $color: $border-color) {\n border: pfe-var(surface--border-width) pfe-var(surface--border-style) transparent;\n border-#{$position}-color: $color;\n @if $position == right {\n padding-left: $padding;\n margin-right: $margin;\n }\n @else if $position == left {\n padding-right: $padding;\n margin-left: $margin;\n }\n}\n\n@mixin pfe-retina {\n @media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {\n @content;\n }\n}\n\n@mixin pfe-icon($path, $display: flex, $size: 1em) {\n display: #{$display};\n @if $path {\n background: #{$path} no-repeat;\n background-size: contain;\n background-position: center;\n }\n width: #{$size};\n height: #{$size};\n @content;\n}\n\n@mixin pfe-local-debug($map: $LOCAL-VARIABLES) {\n :root {\n @include pfe-print-local($map);\n }\n} ","@import \"@patternfly/patternfly/sass-utilities/scss-variables\";\n\n////\n/// @group maps\n/// @type Map\n////\n\n/// Variables for typography, spacing, sizing\n$pfe-vars: (\n\n container-spacer: pf-font-prem($pf-spacer), // 16px\n container-padding: pf-font-prem($pf-spacer), // 16px\n content-spacer: pf-font-prem($pf-spacer-sm), // 24px\n\n content-spacer--heading--lg: pf-font-prem($pf-spacer-md), // 32px \n content-spacer--heading--md: pf-font-prem($pf-spacer-sm), // 24px \n content-spacer--heading--sm: pf-font-prem($pf-spacer), // 16px\n content-spacer--body--md: pf-font-prem($pf-spacer), // 16px\n content-spacer--body--sm: pf-font-prem($pf-spacer-xs), // 8px\n\n surface--border-width: 1px, //\n surface--border-width--heavy: 4px, //\n surface--border-style: solid, //\n surface--border-radius: 3px, //\n surface--border-width--active: 3px, //\n\n icon-size: 1em, //\n\n ui--element--size: 20px, //\n ui--indent: 20px, //\n ui--border-width--sm: 1px, //\n ui--border-width--md: 2px, //\n ui--border-width--lg: 3px, //\n\n ui--border-width: 1px, //\n ui--border-width--active: 3px, //\n \n ui--border-style: solid, //\n ui--border-radius: 2px, //\n\n ui--focus-outline-width: 1px, //\n ui--focus-outline-style: solid, //\n\n grid-breakpoint--xs: 0, //\n grid-breakpoint--sm: 576px, //\n grid-breakpoint--md: 768px, //\n grid-breakpoint--lg: 992px, //\n grid-breakpoint--xl: 1200px, //\n\n box-shadow--sm: #{0 #{pfe-size-prem(1)} #{pfe-size-prem(2)} 0 rgba($pf-color-black-1000, .2)}, //\n box-shadow--md: #{0 #{pfe-size-prem(2)} #{pfe-size-prem(1)} #{pfe-size-prem(1)} rgba($pf-color-black-1000, .12), 0 #{pfe-size-prem(4)} #{pfe-size-prem(11)} #{pfe-size-prem(6)} rgba($pf-color-black-1000, .05)}, //\n box-shadow--lg: #{0 #{pfe-size-prem(3)} #{pfe-size-prem(7)} #{pfe-size-prem(3)} rgba($pf-color-black-1000, .13), 0 #{pfe-size-prem(11)} #{pfe-size-prem(24)} #{pfe-size-prem(16)} rgba($pf-color-black-1000, .12)}, //\n box-shadow--inset: #{inset 0 0 #{pfe-size-prem(10)} 0 $pf-color-black-100}, //\n\n animation-speed: .3s, //\n animation-timing: cubic-bezier(0.465, 0.183, 0.153, 0.946), //\n opacity: .09 //\n);","////\n/// Tools for leveraging custom property stacks\n/// @group custom-properties\n/// @author castastrophe\n////\n\n/// This will print all the broadcast variables, and set the value to the context of your choosing, like on-dark or on-saturated.\n/// @param {String} $context - Look up values from contexts, i.e. \"light\" or \"saturated\"\n/// @param {List | String} $broadcast [$BROADCAST-VARS] - Optionally specify only one broadcast variable instead of the whole set, i.e. \"text\"\n/// @see $custom-prop-prefix\n/// @see $BROADCAST-VARS\n/// @example - scss - Usage in a container component, i.e. pfe-card\n/// :host {\n/// @include pfe-set-broadcast-context(dark);\n/// }\n/// @example - css - Rendered output\n/// :host {\n/// --pfe-broadcasted--text: var(--pfe-theme--color--text--on-dark, #fff);\n/// --pfe-broadcasted--link: var(--pfe-theme--color--link--on-dark, #99ccff);\n/// --pfe-broadcasted--link--hover: var(--pfe-theme--color--link--hover--on-dark, #cce6ff);\n/// --pfe-broadcasted--link--focus: var(--pfe-theme--color--link--focus--on-dark, #cce6ff);\n/// --pfe-broadcasted--link--visited: var(--pfe-theme--color--link--visited--on-dark, #b38cd9);\n/// --pfe-broadcasted--link-decoration: none;\n/// --pfe-broadcasted--link-decoration--hover: underline;\n/// --pfe-broadcasted--link-decoration--focus: underline;\n/// --pfe-broadcasted--link-decoration--visited: none;\n/// }\n///\n@mixin pfe-set-broadcast-context($context, $broadcast: $BROADCAST-VARS) {\n @each $type in $broadcast {\n $list: ();\n $string: \"\";\n $context_string: \"\";\n $state: \"\";\n\n @if str-starts-with($type, \"link\") {\n $list: append($list, \"#{$type}\");\n\n @each $s in (hover, focus, visited) {\n $state: \"--#{$s}\";\n $string: \"#{$type}#{$state}\";\n\n @if not index($list, $string) {\n $list: append($list, \"#{$type}#{$state}\");\n }\n }\n } @else {\n @if not index($list, $string) {\n $list: append($list, \"#{$type}\");\n }\n }\n\n @if index($CONTEXTS, $context) != null {\n @if $context != \"light\" {\n $context_string: \"--on-#{$context}\";\n }\n }\n\n @each $item in $list {\n @if not index($BROADCAST-VARS, $type) {\n @warn \"--#{$custom-prop-prefix}-broadcasted--#{$item} variable is not in the $BROADCAST-VARS list.\";\n } @else if not pfe-broadcasted(#{$item}#{$context_string}) {\n @warn \"#{$item}#{$context_string} value does not currently exist.\";\n } @else {\n @if index($CONTEXTS, $context) != null {\n --#{$custom-prop-prefix}-broadcasted--#{$item}: #{pfe-var(#{$item}#{$context_string})};\n } @else {\n @error \"The #{$context} context does not appear to be part of a supported context.\";\n }\n }\n }\n }\n}\n\n/// Returns CSS Variable for the local component-scoped variable\n/// @param {String} $cssvar - Variable identifiers which are postfixed and combined using '--'\n/// @param {String} $value - The value of the css variable being defined\n/// @param {String} $region - Identifies the region or slot to which this is assigned\n/// @see $custom-prop-prefix\n/// @see $LOCAL\n/// @example - scss\n/// :host {\n/// padding-top: pfe-local(paddingTop);\n/// padding-bottom: pfe-local(paddingBottom);\n/// }\n@mixin pfe-print-local($map: $LOCAL-VARIABLES) {\n @each $property, $value in $map {\n $name: \"--#{$property}\";\n $styles: $value;\n\n @if type-of($value) == \"map\" {\n @each $prop, $v in $value {\n $name: \"__#{$property}--#{$prop}\";\n $styles: $v;\n\n // Print the variable definition\n --#{$custom-prop-prefix}-#{$LOCAL}#{$name}: #{$styles};\n }\n } @else {\n // Print the variable definition\n --#{$custom-prop-prefix}-#{$LOCAL}#{$name}: #{$styles};\n }\n }\n}\n\n/// Surface properties\n/// This mixin creates an attribute for all the surface colors, then prints the local background color variable for the component, with the correct context colors.\n/// @param {List | String} $surfaces [$SURFACES] - defaults to the global $SURFACES list of all supported colors\n/// @param {String} $attr-name [pfe-var] - defaults to pfe-var, optionally pass in a custom name for the data attribute\n/// @example - scss - In your component stylesheet\n/// $LOCAL: band;\n/// @include pfe-surfaces;\n/// @example - css - Rendered result\n/// :host([color=\"darker\"]) {\n/// --pfe-band--BackgroundColor: var(--pfe-theme--color--surface--darker, #464646);\n/// --context: dark;\n/// }\n/// :host([color=\"darkest\"]) {\n/// --pfe-band--BackgroundColor: var(--pfe-theme--color--surface--darkest, #131313);\n/// --context: dark;\n/// }\n/// :host([color=\"base\"]) {\n/// --pfe-band--BackgroundColor: var(--pfe-theme--color--surface--base, #dfdfdf);\n/// --context: light;\n/// }\n/// :host([color=\"lighter\"]) {\n/// --pfe-band--BackgroundColor: var(--pfe-theme--color--surface--lighter, #ececec);\n/// --context: light;\n/// }\n/// :host([color=\"lightest\"]) {\n/// --pfe-band--BackgroundColor: var(--pfe-theme--color--surface--lightest, #fff);\n/// --context: light;\n/// }\n/// :host([color=\"accent\"]) {\n/// --pfe-band--BackgroundColor: var(--pfe-theme--color--surface--accent, #ee0000);\n/// --context: saturated;\n/// }\n/// :host([color=\"complement\"]) {\n/// --pfe-band--BackgroundColor: var(--pfe-theme--color--surface--complement, #0477a4);\n/// --context: saturated;\n/// }\n@mixin pfe-surfaces($surfaces: $SURFACE, $attr-name: color) {\n @each $color in $surfaces {\n $context: #{pfe-get-context(surface--#{$color}--context)};\n :host([#{$attr-name}=\"#{$color}\"]) {\n @include pfe-print-local(\n (\n BackgroundColor: pfe-var(surface--#{$color}),\n context: pfe-var(surface--#{$color}--context, #{$context})\n )\n );\n @extend %fallback-surface;\n }\n }\n}\n\n/// Prints the `on` attribute with IE11 fallbacks\n/// @param {List} contexts [$CONTEXTS] - defaults to the global $CONTEXTS list of all supported contexts\n/// @param {Boolean} ie-fallback [true] - defaults to true, prints IE11 fallbacks\n/// @example - scss - In your component styles\n/// @include pfe-contexts; // imports on=\"light\" etc support\n/// @example - css - Rendered outputs\n/// :host([on=\"dark\"]) {\n/// --pfe-broadcasted--text: var(--pfe-theme--color--text--on-dark, #fff);\n/// --pfe-broadcasted--link: var(--pfe-theme--color--link--on-dark, #99ccff);\n/// --pfe-broadcasted--link--hover: var(--pfe-theme--color--link--hover--on-dark, #cce6ff);\n/// --pfe-broadcasted--link--focus: var(--pfe-theme--color--link--focus--on-dark, #cce6ff);\n/// --pfe-broadcasted--link--visited: var(--pfe-theme--color--link--visited--on-dark, #b38cd9);\n/// --pfe-broadcasted--link-decoration: none;\n/// --pfe-broadcasted--link-decoration--hover: underline;\n/// --pfe-broadcasted--link-decoration--focus: underline;\n/// --pfe-broadcasted--link-decoration--visited: none;\n/// }\n/// @media screen and (-ms-high-contrast: active), screen and (-ms-high-contrast: none) { /* IE10+ */\n/// :host([on=\"dark\"]) {\n/// color: #fff;\n/// color: var(--pfe-theme--color--text--on-dark, #fff);\n/// }\n/// }\n/// // ...as well as all the values for :host([on=\"saturated\"]) and :host([on=\"light\"])\n@mixin pfe-contexts($contexts: $CONTEXTS, $ie-fallback: true) {\n // Helper attributes to aid in theming\n @each $context in $contexts {\n :host([on=\"#{$context}\"]) {\n @include pfe-set-broadcast-context($context);\n }\n }\n @if $ie-fallback {\n :host {\n @extend %fallback-text;\n }\n }\n}\n","// Colors\n$pf-color-black-100: #fafafa !default;\n$pf-color-black-150: #f5f5f5 !default;\n$pf-color-black-200: #f0f0f0 !default;\n$pf-color-black-300: #d2d2d2 !default;\n$pf-color-black-400: #b8bbbe !default;\n$pf-color-black-500: #8a8d90 !default;\n$pf-color-black-600: #6a6e73 !default;\n$pf-color-black-700: #4f5255 !default;\n$pf-color-black-800: #3c3f42 !default;\n$pf-color-black-850: #212427 !default;\n$pf-color-black-900: #151515 !default;\n$pf-color-black-1000: #030303 !default;\n$pf-color-blue-50: #e7f1fa !default;\n$pf-color-blue-100: #bee1f4 !default;\n$pf-color-blue-200: #73bcf7 !default;\n$pf-color-blue-300: #2b9af3 !default;\n$pf-color-blue-400: #06c !default;\n$pf-color-blue-500: #004080 !default;\n$pf-color-blue-600: #002952 !default;\n$pf-color-blue-700: #001223 !default;\n$pf-color-cyan-50: #f2f9f9 !default;\n$pf-color-cyan-100: #a2d9d9 !default;\n$pf-color-cyan-200: #73c5c5 !default;\n$pf-color-cyan-300: #009596 !default;\n$pf-color-cyan-400: #005f60 !default;\n$pf-color-cyan-500: #003737 !default;\n$pf-color-cyan-600: #002323 !default;\n$pf-color-cyan-700: #000f0f !default;\n$pf-color-gold-50: #fdf7e7 !default;\n$pf-color-gold-100: #f9e0a2 !default;\n$pf-color-gold-200: #f6d173 !default;\n$pf-color-gold-300: #f4c145 !default;\n$pf-color-gold-400: #f0ab00 !default;\n$pf-color-gold-500: #c58c00 !default;\n$pf-color-gold-600: #795600 !default;\n$pf-color-gold-700: #3d2c00 !default;\n$pf-color-green-50: #f3faf2 !default;\n$pf-color-green-100: #bde5b8 !default;\n$pf-color-green-200: #95d58e !default;\n$pf-color-green-300: #6ec664 !default;\n$pf-color-green-400: #5ba352 !default;\n$pf-color-green-500: #3e8635 !default;\n$pf-color-green-600: #1e4f18 !default;\n$pf-color-green-700: #0f280d !default;\n$pf-color-light-blue-100: #beedf9 !default;\n$pf-color-light-blue-200: #7cdbf3 !default;\n$pf-color-light-blue-300: #35caed !default;\n$pf-color-light-blue-400: #00b9e4 !default;\n$pf-color-light-blue-500: #008bad !default;\n$pf-color-light-blue-600: #005c73 !default;\n$pf-color-light-blue-700: #002d39 !default;\n$pf-color-light-green-100: #e4f5bc !default;\n$pf-color-light-green-200: #c8eb79 !default;\n$pf-color-light-green-300: #ace12e !default;\n$pf-color-light-green-400: #92d400 !default;\n$pf-color-light-green-500: #6ca100 !default;\n$pf-color-light-green-600: #486b00 !default;\n$pf-color-light-green-700: #253600 !default;\n$pf-color-orange-100: #f4b678 !default;\n$pf-color-orange-200: #ef9234 !default;\n$pf-color-orange-300: #ec7a08 !default;\n$pf-color-orange-400: #c46100 !default;\n$pf-color-orange-500: #8f4700 !default;\n$pf-color-orange-600: #773d00 !default;\n$pf-color-orange-700: #3b1f00 !default;\n$pf-color-purple-50: #f2f0fc !default;\n$pf-color-purple-100: #cbc1ff !default;\n$pf-color-purple-200: #b2a3ff !default;\n$pf-color-purple-300: #a18fff !default;\n$pf-color-purple-400: #8476d1 !default;\n$pf-color-purple-500: #6753ac !default;\n$pf-color-purple-600: #40199a !default;\n$pf-color-purple-700: #1f0066 !default;\n$pf-color-red-50: #faeae8 !default;\n$pf-color-red-100: #c9190b !default;\n$pf-color-red-200: #a30000 !default;\n$pf-color-red-300: #7d1007 !default;\n$pf-color-red-400: #470000 !default;\n$pf-color-red-500: #2c0000 !default;\n$pf-color-white: #fff !default;\n"],"sourceRoot":"../src"}
\ No newline at end of file
diff --git a/elements/pfe-accordion/dist/pfe-accordion-panel.min.css.map b/elements/pfe-accordion/dist/pfe-accordion-panel.min.css.map
new file mode 100644
index 0000000000..3ab794288e
--- /dev/null
+++ b/elements/pfe-accordion/dist/pfe-accordion-panel.min.css.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../../src/pfe-accordion-panel.scss","../../../pfe-sass/extends/_extends.scss","../../../pfe-sass/mixins/_containers.scss","../../../pfe-sass/mixins/_components.scss","../../../pfe-sass/mixins/_mixins.scss","../../../pfe-sass/mixins/_custom-properties.scss","pfe-accordion-panel.css"],"names":[],"mappings":"AAkBA,WCQE,SAAA,SACA,QAAA,MACA,MAAA,KACA,QAAA,KAAA,QAAA,wCDvBF,ME2BI,QAAA,KACA,SAAA,OACA,YAAA,OACA,aAAA,YACA,QAAA,ECmDF,OAAA,EACA,MAAA,KAAA,MAAA,iCACA,UAAA,iBAAA,UAAA,gEACA,OAAA,KACA,SAAA,SAGA,iBAAA,YAAA,iBAAA,kDACA,MAAA,QAAA,MAAA,iEAGA,aAAA,EACA,aAAA,MAAA,aAAA,8CACA,aAAA,QAAA,aAAA,mFACA,iBAAA,IAAA,iBAAA,iFACA,mBAAA,EAAA,mBAAA,yCACA,oBAAA,IAAA,oBAAA,oFACA,kBAAA,IAAA,kBAAA,yFAUA,kBAAA,YAAA,kBAAA,sDAEA,mBAAA,gCAAA,WAAA,gCACA,QAAA,6BH5GC,mBAAA,WAAA,WAAA,WIPG,6CAAA,oCJGN,MGsGI,iBAAA,IACA,mBAAA,EACA,oBAAA,IACA,kBAAA,KHzGJ,YAAA,YK8FM,qCAAA,uEDjGA,6CAAA,oCJGN,YAAA,YGyHM,kBAAA,MHzHN,QMgEA,cADA,eJhEI,mBAAA,WAAA,WAAA,WFQJ,kBACE,QAAA,MACA,mBAAA,OAAA,IAAA,YAAA,WAAA,OAAA,IAAA,YAGF,WKkFM,2BAAA,KFwGJ,QAAA,+CHvLA,0CAAA,EAAA,wFAAA,8EAAA,0FAHF,kBEPI,MAAA,KACA,QAAA,GACA,QAAA,MFUF,oCACE,0CAAA,EAAA,0FAIJ,+BACE,cAAA,EMyEF,kBNlEA,kBKgEM,6BAAA,kDAAA,kCAAA,6CAAA,iCAAA,oDAAA,iCAAA,MAAA,uBAAA,uCAAA,qCAAA,uEAAA,2BAAA,EAAA,IAAA,oDAAA,0BAAA,wBAAA,EAAA,wBAAA,yCAAA,gCAAA,EAAA,2BAAA,EAAA,IAAA,oDAAA,0BHvEF,QAAA,MACA,SAAA,SACA,QAAA,EE5BE,6CAAA,oCEsHJ,kBNrFF,kBAMI,iBAAA,EACA,kBAAA,KAAA,kBAAA,wCACA,mBAAA,QAAA,mBAAA,kDMwFJ,2BNpFA,2BKoDM,iCAAA,yBAAA,uBAAA,sCAAA,qCAAA,qDAAA,2BAAA,KAAA,wBAAA,yCAAA,gCAAA,EAAA,2BAAA,KC2CN,gCNzFA,gCK8CM,iCAAA,mBAAA,uBAAA,sCAAA,qCAAA,uDAAA,2BAAA,KAAA,wBAAA,yCAAA,gCAAA,EAAA,2BAAA","file":"pfe-accordion-panel.min.css","sourceRoot":"../src","sourcesContent":[null,null,null,null,null,null,".container {\n position: relative;\n display: block;\n width: 100%;\n padding: 1rem;\n padding: var(--pfe-theme--container-spacer, 1rem);\n}\n\n:host {\n display: none;\n overflow: hidden;\n will-change: height;\n border-color: transparent;\n opacity: 0;\n margin: 0;\n width: 100%;\n width: var(--pfe-accordion--Width, 100%);\n max-width: calc(100% - 4px);\n max-width: calc(100% - var(--pfe-theme--surface--border-width--heavy, 4px));\n height: auto;\n position: relative;\n background-color: transparent;\n background-color: var(--pfe-accordion--BackgroundColor, transparent);\n color: #3c3f42;\n color: var(--pfe-accordion--Color, var(--pfe-broadcasted--text, #3c3f42));\n border-width: 0;\n border-style: solid;\n border-style: var(--pfe-theme--surface--border-style, solid);\n border-color: #d2d2d2;\n border-color: var(--pfe-accordion--BorderColor, var(--pfe-theme--color--surface--border, #d2d2d2));\n border-top-width: 1px;\n border-top-width: var(--pfe-accordion--BorderTopWidth, var(--pfe-theme--surface--border-width, 1px));\n border-right-width: 0;\n border-right-width: var(--pfe-accordion--BorderRightWidth, 0);\n border-bottom-width: 1px;\n border-bottom-width: var(--pfe-accordion--BorderBottomWidth, var(--pfe-theme--surface--border-width, 1px));\n border-left-width: 4px;\n border-left-width: var(--pfe-accordion--BorderLeftWidth, var(--pfe-theme--surface--border-width--heavy, 4px));\n border-left-color: transparent;\n border-left-color: var(--pfe-accordion--BorderColor--accent, transparent);\n -webkit-box-shadow: var(--pfe-accordion--BoxShadow);\n box-shadow: var(--pfe-accordion--BoxShadow);\n z-index: var(--pfe-accordion--ZIndex);\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n}\n\n@media screen and (-ms-high-contrast: active), screen and (-ms-high-contrast: none) {\n :host {\n /* IE10+ */\n border-top-width: 1px;\n border-right-width: 0;\n border-bottom-width: 1px;\n border-left-width: 4px;\n }\n}\n\n:host:hover, :host:focus {\n --pfe-accordion--BorderColor--accent: var(--pfe-accordion--accent, var(--pfe-theme--color--ui-accent, #06c));\n}\n\n@media screen and (-ms-high-contrast: active), screen and (-ms-high-contrast: none) {\n :host:hover, :host:focus {\n /* IE10+ */\n border-left-color: #06c;\n }\n}\n\n:host *,\n:host *::before,\n:host *::after {\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n}\n\n:host(.animating) {\n display: block;\n -webkit-transition: height 0.3s ease-in-out;\n transition: height 0.3s ease-in-out;\n}\n\n.container {\n --pfe-accordion--BoxShadow: none;\n padding: var(--pfe-accordion__panel-container--Padding);\n --pfe-accordion__panel-container--Padding: 0 calc(var(--pfe-accordion__base--Padding, var(--pfe-theme--container-spacer, 1rem)) * 3) var(--pfe-accordion__base--Padding, var(--pfe-theme--container-spacer, 1rem)) calc(var(--pfe-accordion__base--Padding, var(--pfe-theme--container-spacer, 1rem)) * 1.5);\n}\n\n.container::after {\n clear: both;\n content: \"\";\n display: table;\n}\n\n:host([disclosure=\"true\"]) .container {\n --pfe-accordion__panel-container--Padding: 0 calc(var(--pfe-accordion__base--Padding, var(--pfe-theme--container-spacer, 1rem)) * 1.5);\n}\n\n:host(:last-of-type[expanded]) {\n margin-bottom: 0;\n}\n\n:host([expanded]),\n:host(.animating) {\n --pfe-accordion--BorderColor: var(--pfe-theme--color--surface--border, #d2d2d2);\n --pfe-accordion--BorderRightWidth: var(--pfe-theme--surface--border-width, 1px);\n --pfe-accordion--BorderLeftWidth: var(--pfe-theme--surface--border-width--heavy, 4px);\n --pfe-accordion--BackgroundColor: white;\n --pfe-accordion--Color: var(--pfe-theme--color--text, #151515);\n --pfe-accordion--BorderColor--accent: var(--pfe-accordion--accent, var(--pfe-theme--color--ui-accent, #06c));\n --pfe-accordion--BoxShadow: 0 5px var(--pfe-theme--surface--border-width--heavy, 4px) rgba(140, 140, 140, 0.35);\n --pfe-accordion--ZIndex: 3;\n --pfe-accordion--accent: var(--pfe-theme--color--ui-accent, #06c);\n --pfe-accordion--BorderTopWidth: 0;\n --pfe-accordion--BoxShadow: 0 5px var(--pfe-theme--surface--border-width--heavy, 4px) rgba(140, 140, 140, 0.35);\n display: block;\n position: relative;\n opacity: 1;\n}\n\n@media screen and (-ms-high-contrast: active), screen and (-ms-high-contrast: none) {\n :host([expanded]),\n :host(.animating) {\n /* IE10+ */\n border-top-width: 0;\n border-left-color: #06c;\n border-left-color: var(--pfe-theme--color--ui-accent, #06c);\n border-right-color: #d2d2d2;\n border-right-color: var(--pfe-theme--color--surface--border, #d2d2d2);\n }\n}\n\n:host([on=\"dark\"][expanded]),\n:host([on=\"dark\"].animating) {\n --pfe-accordion--BackgroundColor: rgba(247, 247, 249, 0.1);\n --pfe-accordion--Color: var(--pfe-broadcasted--text, #3c3f42);\n --pfe-accordion--BorderColor--accent: var(--pfe-theme--color--ui-accent--on-dark, #73bcf7);\n --pfe-accordion--BoxShadow: none;\n --pfe-accordion--accent: var(--pfe-theme--color--ui-accent, #06c);\n --pfe-accordion--BorderTopWidth: 0;\n --pfe-accordion--BoxShadow: none;\n}\n\n:host([on=\"saturated\"][expanded]),\n:host([on=\"saturated\"].animating) {\n --pfe-accordion--BackgroundColor: rgba(0, 0, 0, 0.2);\n --pfe-accordion--Color: var(--pfe-broadcasted--text, #3c3f42);\n --pfe-accordion--BorderColor--accent: var(--pfe-theme--color--ui-accent--on-saturated, #fff);\n --pfe-accordion--BoxShadow: none;\n --pfe-accordion--accent: var(--pfe-theme--color--ui-accent, #06c);\n --pfe-accordion--BorderTopWidth: 0;\n --pfe-accordion--BoxShadow: none;\n}\n\n/*# sourceMappingURL=pfe-accordion-panel.css.map */\n"]}
\ No newline at end of file
diff --git a/elements/pfe-accordion/dist/pfe-accordion.css.map b/elements/pfe-accordion/dist/pfe-accordion.css.map
new file mode 100644
index 0000000000..02ecc0a3d0
--- /dev/null
+++ b/elements/pfe-accordion/dist/pfe-accordion.css.map
@@ -0,0 +1 @@
+{"version":3,"sources":["pfe-accordion.scss","../../pfe-sass/mixins/_custom-properties.scss","../../pfe-sass/functions/_custom-properties.scss","pfe-accordion.css","../../pfe-sass/mixins/_mixins.scss"],"names":[],"mappings":"AAEA;ECkGM,iDAA8C;EAA9C,+EAA8C;EAA9C,6EAA8C;EAA9C,oCAA8C;EAA9C,gFAA8C;EAA9C,qFAA8C;EAA9C,6DAA8C;EAA9C,gCAA8C;EAA9C,iEAA8C;EAJ5C,wEAA8C;ED3FpD,cAAc;EACd,kBAAkB;EAClB,gBAAgB;EAChB,SAAS;EACT,cEsEkC;EFtElC,yEEsEkC;AC/DpC;;ACbM;EJDN;IIC4F,UAAA;IJSxF,iCAAyD;IACzD,yBAAiC;EGUnC;AACF;;AHPA;ECmFM,6EAA8C;AExEpD;;AHPA;EC+EM,+EAA8C;AEpEpD;;AHPA;EC2EM,+EAA8C;EAA9C,8EAA8C;EAA9C,uFAA8C;AE9DpD;;AHRA;EACE,aAAa;AGWf","file":"pfe-accordion.css","sourcesContent":["@import \"shared-assets\";\n\n:host {\n // @TODO remove this eventually to allow empty local variables\n @include pfe-print-local($LOCAL-VARIABLES);\n display: block;\n position: relative;\n overflow: hidden;\n margin: 0;\n color: pfe-local(Color);\n\n @include browser-query(ie11) {\n background-color: pfe-fetch(surface--lightest) !important;\n color: pfe-fetch(text) !important;\n }\n}\n\n:host([on=\"dark\"]) {\n @include pfe-print-local(pfe-accordion-variables($context: dark));\n}\n\n:host([on=\"saturated\"]) {\n @include pfe-print-local(pfe-accordion-variables($context: saturated));\n}\n\n:host([disclosure=\"true\"]) {\n $disclosure: pfe-accordion-variables($variant: disclosure);\n @include pfe-print-local($disclosure);\n}\n\n:host([hidden]) {\n display: none;\n}\n","////\n/// Tools for leveraging custom property stacks\n/// @group custom-properties\n/// @author castastrophe\n////\n\n/// This will print all the broadcast variables, and set the value to the context of your choosing, like on-dark or on-saturated.\n/// @param {String} $context - Look up values from contexts, i.e. \"light\" or \"saturated\"\n/// @param {List | String} $broadcast [$BROADCAST-VARS] - Optionally specify only one broadcast variable instead of the whole set, i.e. \"text\"\n/// @see $custom-prop-prefix\n/// @see $BROADCAST-VARS\n/// @example - scss - Usage in a container component, i.e. pfe-card\n/// :host {\n/// @include pfe-set-broadcast-context(dark);\n/// }\n/// @example - css - Rendered output\n/// :host {\n/// --pfe-broadcasted--text: var(--pfe-theme--color--text--on-dark, #fff);\n/// --pfe-broadcasted--link: var(--pfe-theme--color--link--on-dark, #99ccff);\n/// --pfe-broadcasted--link--hover: var(--pfe-theme--color--link--hover--on-dark, #cce6ff);\n/// --pfe-broadcasted--link--focus: var(--pfe-theme--color--link--focus--on-dark, #cce6ff);\n/// --pfe-broadcasted--link--visited: var(--pfe-theme--color--link--visited--on-dark, #b38cd9);\n/// --pfe-broadcasted--link-decoration: none;\n/// --pfe-broadcasted--link-decoration--hover: underline;\n/// --pfe-broadcasted--link-decoration--focus: underline;\n/// --pfe-broadcasted--link-decoration--visited: none;\n/// }\n///\n@mixin pfe-set-broadcast-context($context, $broadcast: $BROADCAST-VARS) {\n @each $type in $broadcast {\n $list: ();\n $string: \"\";\n $context_string: \"\";\n $state: \"\";\n\n @if str-starts-with($type, \"link\") {\n $list: append($list, \"#{$type}\");\n\n @each $s in (hover, focus, visited) {\n $state: \"--#{$s}\";\n $string: \"#{$type}#{$state}\";\n\n @if not index($list, $string) {\n $list: append($list, \"#{$type}#{$state}\");\n }\n }\n } @else {\n @if not index($list, $string) {\n $list: append($list, \"#{$type}\");\n }\n }\n\n @if index($CONTEXTS, $context) != null {\n @if $context != \"light\" {\n $context_string: \"--on-#{$context}\";\n }\n }\n\n @each $item in $list {\n @if not index($BROADCAST-VARS, $type) {\n @warn \"--#{$custom-prop-prefix}-broadcasted--#{$item} variable is not in the $BROADCAST-VARS list.\";\n } @else if not pfe-broadcasted(#{$item}#{$context_string}) {\n @warn \"#{$item}#{$context_string} value does not currently exist.\";\n } @else {\n @if index($CONTEXTS, $context) != null {\n --#{$custom-prop-prefix}-broadcasted--#{$item}: #{pfe-var(#{$item}#{$context_string})};\n } @else {\n @error \"The #{$context} context does not appear to be part of a supported context.\";\n }\n }\n }\n }\n}\n\n/// Returns CSS Variable for the local component-scoped variable\n/// @param {String} $cssvar - Variable identifiers which are postfixed and combined using '--'\n/// @param {String} $value - The value of the css variable being defined\n/// @param {String} $region - Identifies the region or slot to which this is assigned\n/// @see $custom-prop-prefix\n/// @see $LOCAL\n/// @example - scss\n/// :host {\n/// padding-top: pfe-local(paddingTop);\n/// padding-bottom: pfe-local(paddingBottom);\n/// }\n@mixin pfe-print-local($map: $LOCAL-VARIABLES) {\n @each $property, $value in $map {\n $name: \"--#{$property}\";\n $styles: $value;\n\n @if type-of($value) == \"map\" {\n @each $prop, $v in $value {\n $name: \"__#{$property}--#{$prop}\";\n $styles: $v;\n\n // Print the variable definition\n --#{$custom-prop-prefix}-#{$LOCAL}#{$name}: #{$styles};\n }\n } @else {\n // Print the variable definition\n --#{$custom-prop-prefix}-#{$LOCAL}#{$name}: #{$styles};\n }\n }\n}\n\n/// Surface properties\n/// This mixin creates an attribute for all the surface colors, then prints the local background color variable for the component, with the correct context colors.\n/// @param {List | String} $surfaces [$SURFACES] - defaults to the global $SURFACES list of all supported colors\n/// @param {String} $attr-name [pfe-var] - defaults to pfe-var, optionally pass in a custom name for the data attribute\n/// @example - scss - In your component stylesheet\n/// $LOCAL: band;\n/// @include pfe-surfaces;\n/// @example - css - Rendered result\n/// :host([color=\"darker\"]) {\n/// --pfe-band--BackgroundColor: var(--pfe-theme--color--surface--darker, #464646);\n/// --context: dark;\n/// }\n/// :host([color=\"darkest\"]) {\n/// --pfe-band--BackgroundColor: var(--pfe-theme--color--surface--darkest, #131313);\n/// --context: dark;\n/// }\n/// :host([color=\"base\"]) {\n/// --pfe-band--BackgroundColor: var(--pfe-theme--color--surface--base, #dfdfdf);\n/// --context: light;\n/// }\n/// :host([color=\"lighter\"]) {\n/// --pfe-band--BackgroundColor: var(--pfe-theme--color--surface--lighter, #ececec);\n/// --context: light;\n/// }\n/// :host([color=\"lightest\"]) {\n/// --pfe-band--BackgroundColor: var(--pfe-theme--color--surface--lightest, #fff);\n/// --context: light;\n/// }\n/// :host([color=\"accent\"]) {\n/// --pfe-band--BackgroundColor: var(--pfe-theme--color--surface--accent, #ee0000);\n/// --context: saturated;\n/// }\n/// :host([color=\"complement\"]) {\n/// --pfe-band--BackgroundColor: var(--pfe-theme--color--surface--complement, #0477a4);\n/// --context: saturated;\n/// }\n@mixin pfe-surfaces($surfaces: $SURFACE, $attr-name: color) {\n @each $color in $surfaces {\n $context: #{pfe-get-context(surface--#{$color}--context)};\n :host([#{$attr-name}=\"#{$color}\"]) {\n @include pfe-print-local(\n (\n BackgroundColor: pfe-var(surface--#{$color}),\n context: pfe-var(surface--#{$color}--context, #{$context})\n )\n );\n @extend %fallback-surface;\n }\n }\n}\n\n/// Prints the `on` attribute with IE11 fallbacks\n/// @param {List} contexts [$CONTEXTS] - defaults to the global $CONTEXTS list of all supported contexts\n/// @param {Boolean} ie-fallback [true] - defaults to true, prints IE11 fallbacks\n/// @example - scss - In your component styles\n/// @include pfe-contexts; // imports on=\"light\" etc support\n/// @example - css - Rendered outputs\n/// :host([on=\"dark\"]) {\n/// --pfe-broadcasted--text: var(--pfe-theme--color--text--on-dark, #fff);\n/// --pfe-broadcasted--link: var(--pfe-theme--color--link--on-dark, #99ccff);\n/// --pfe-broadcasted--link--hover: var(--pfe-theme--color--link--hover--on-dark, #cce6ff);\n/// --pfe-broadcasted--link--focus: var(--pfe-theme--color--link--focus--on-dark, #cce6ff);\n/// --pfe-broadcasted--link--visited: var(--pfe-theme--color--link--visited--on-dark, #b38cd9);\n/// --pfe-broadcasted--link-decoration: none;\n/// --pfe-broadcasted--link-decoration--hover: underline;\n/// --pfe-broadcasted--link-decoration--focus: underline;\n/// --pfe-broadcasted--link-decoration--visited: none;\n/// }\n/// @media screen and (-ms-high-contrast: active), screen and (-ms-high-contrast: none) { /* IE10+ */\n/// :host([on=\"dark\"]) {\n/// color: #fff;\n/// color: var(--pfe-theme--color--text--on-dark, #fff);\n/// }\n/// }\n/// // ...as well as all the values for :host([on=\"saturated\"]) and :host([on=\"light\"])\n@mixin pfe-contexts($contexts: $CONTEXTS, $ie-fallback: true) {\n // Helper attributes to aid in theming\n @each $context in $contexts {\n :host([on=\"#{$context}\"]) {\n @include pfe-set-broadcast-context($context);\n }\n }\n @if $ie-fallback {\n :host {\n @extend %fallback-text;\n }\n }\n}\n","////\n/// Tools for leveraging custom property stacks\n/// @group custom-properties\n/// @author castastrophe\n////\n\n/// Get full theme stack with a fallback from the provided map - used by pfe-var and pfe-zindex\n/// @param {String} $category - Category name to be appended to variables within the map/system\n/// @param {String} $key - Variable name to be used and prepended with --pfe-theme\n/// @param {Map} $map - Sass map of variables\n/// @param {String} $fallback [null] - Optional fallback override\n/// @param {Boolean} $use-fallback [true] - Optional hook to return a stack with no fallback value\n/// @requires $custom-prop-prefix\n/// @return {String} theme stack with fallback value from a sass map\n@function pfe-get-from-map($category, $key, $map, $fallback: null, $prefix: \"#{$custom-prop-prefix}-theme\", $use-fallback: true) {\n // Start building the variable declaration\n $var-declaration: \"--#{$prefix}--\";\n @if $prefix == \"pf-c\" {\n $var-declaration: \"--#{$prefix}-\"; // one dash at the end\n }\n // If the category exists, inject that into the string\n @if $category != \"\" {\n $var-declaration: \"#{$var-declaration}#{$category}--\";\n }\n // Append the key to the string\n $var-declaration: \"#{$var-declaration}#{$key}\";\n\n // If the fallback is not provided but use-fallback is set to true\n @if $fallback == null and $use-fallback and map-get($map, $key) != null {\n $fallback: map-get($map, $key);\n }\n @if $fallback != null {\n // Create the variable declaration\n $var-declaration: \"#{$var-declaration}, #{$fallback}\";\n }\n\n // Return the variable declaration string\n @return var(#{$var-declaration}); \n}\n\n\n\n/// Returns CSS Var for the local component-scoped variable\n/// @param {String} $cssvar - Variable identifiers which are postfixed and combined using '--'\n/// @param {String} $region - Identifies the region or slot to which this is assigned\n/// @see $custom-prop-prefix\n/// @see $LOCAL\n/// @example\n/// :host {\n/// padding-top: #{pfe-local(paddingTop)};\n/// padding-bottom: #{pfe-local(paddingBottom)};\n/// }\n@function pfe-local($cssvar, $fallback: null, $region: null) {\n // If a fallback is not defined, use the global variables map\n @if $fallback == null and length($LOCAL-VARIABLES) > 0 {\n @if $region == null {\n $fallback: map-get($LOCAL-VARIABLES, $cssvar);\n }\n @else {\n $submap: map-get($LOCAL-VARIABLES, $region);\n @if type-of($submap) == \"map\" {\n $fallback: map-deep-get($LOCAL-VARIABLES, $region, $cssvar);\n }\n }\n }\n\n // If a region value exists, build the region string\n @if $region != null {\n $region: \"__#{$region}\";\n }\n\n // Start building the variable declaration\n $var-declaration: \"--#{$custom-prop-prefix}-#{$LOCAL}#{$region}--#{to-string($cssvar, '--')}\";\n \n @if $fallback != null {\n $var-declaration: \"#{$var-declaration}, #{$fallback}\";\n }\n\n // Return the variable declaration string\n @return var(#{$var-declaration});\n}\n\n/// Fetches a CSS variable stack for broadcasted variables, providing a hook for context\n/// to influence the styles of children elements such as p tags or links.\n/// @param {String} $broadcast - name of the broadcast variable to apply\n/// @requires {String} $custom-prop-prefix - Name of repo, which is \"pfe\"\n/// @example - scss\n/// :host {\n/// color: pfe-broadcasted(link);\n/// }\n/// @example - css\n/// :host {\n/// color: var(--pfe-broadcasted--link, #06c);\n/// }\n@function pfe-broadcasted($broadcast, $use-fallback: true) {\n $fallback: \"\";\n @if $use-fallback {\n $fallback: \", #{map-get($pfe-broadcasted, #{to-string($broadcast,'--')})}\";\t\n }\n @if not index($BROADCAST-VARS, first(str-split($broadcast, '--'))) {\n @error \"--#{$custom-prop-prefix}-broadcasted--#{$broadcast} variable is not currently supported.\";\n }\n @else {\n @return var(--#{$custom-prop-prefix}-broadcasted--#{to-string($broadcast,'--')}#{unquote($fallback)});\n }\n}\n\n/// Returns CSS variable stack with exposed theme variable and respective fallback\n/// @param {String} $cssvar - Variable name to be used and prepended with --pfe-theme--zindex\n/// @requires {Map} $pfe-zindex - SASS Map of z-index values\n/// @see $pfe-zindex\n/// @example - scss - In your component styles\n/// .my-element {\n/// z-index: pfe-zindex( content );\n/// }\n\n@function pfe-zindex($cssvar) {\n $var-name: to-string($cssvar, \"--\");\n @if map-get($pfe-zindex, $var-name) != null {\n @return pfe-get-from-map(\"zindex\", $var-name, $pfe-zindex);\n }\n @else {\n @error \"The key for #{$var-name} could not be found in the $pfe-zindex map.\";\n }\n}\n\n/// Returns the value (only) of a property from the respective maps\n/// Similar to pfe-var, but does not include css variable in the compiled CSS\n/// @param {String} $name - Name of the key for the map\n/// @see $pfe-vars\n/// @see $pfe-colors\n/// @see $pfe-broadcasted\n/// @example - scss - In your component styles\n/// .my-element {\n/// background-color: pfe-fetch( ui-base );\n/// }\n@function pfe-fetch($name) {\n $var-name: to-string($name, \"--\");\n @if map-get($LOCAL-VARIABLES, $var-name) != null {\n @return map-get($LOCAL-VARIABLES, $var-name);\n }\n @if map-get($pfe-vars, $var-name) != null {\n @return map-get($pfe-vars, $var-name);\n }\n @else if map-get($pfe-colors, $var-name) != null {\n @return map-get($pfe-colors, $var-name);\n }\n @else if map-get($pfe-broadcasted, $var-name) != null {\n @return map-get($pfe-broadcasted, $var-name);\n }\n @else if map-get($pfe-typography-base, $var-name) != null {\n @return map-get($pfe-typography-base, $var-name);\n }\n\n // PATTERNFLY CORE\n @else if map-get($pf-type-sizing, $var-name) != null {\n @return map-get($pf-type-sizing, $var-name);\n }\n @else if map-get($pf-type-sizing--component, $var-name) != null {\n @return map-get($pf-type-sizing--component, $var-name);\n }\n @else if map-get($pf-type-sizing--modifers, $var-name) != null {\n @return map-get($pf-type-sizing--modifers, $var-name);\n }\n @else if map-get($pf-type-sizing--content, $var-name) != null {\n @return map-get($pf-type-sizing--content, $var-name);\n }\n // DEPRECATED\n @else if map-get($pfe-typography-base-deprecated, $var-name) != null {\n @return map-get($pfe-typography-base-deprecated, $var-name);\n }\n @else if map-get($pfe-typography-deprecated, $var-name) != null {\n @return map-get($pfe-typography-deprecated, $var-name);\n }\n @else {\n @error \"#{$var-name} could not be found.\";\n }\n}\n\n/// Returns CSS variable stack with exposed theme variable and respective fallback\n/// @param {String} $cssvar - Variable name to be used and prepended with --pfe-theme\n/// @param {String} $fallback [null] - Optional custom fallback\n/// @see $pfe-vars\n/// @see $pfe-colors\n/// @see $pfe-broadcasted\n/// @example scss - In your component styles\n/// .my-element {\n/// padding: pfe-var( container-spacer );\n/// font-size: pfe-var( font-size );\n/// }\n/// @example - css Rendered output\n/// .my-element {\n/// padding: var(--pfe-theme--container-spacer, 16px);\n/// font-size: var(--pfe-theme--font-size, 16px);\n/// }\n@function pfe-var($cssvar, $fallback: null) {\n $var-name: to-string($cssvar, \"--\");\n @if map-get($pfe-vars, $var-name) != null {\n @return pfe-get-from-map(\"\", $var-name, $pfe-vars, $fallback);\n }\n @else if map-get($pfe-colors, $var-name) != null {\n @return pfe-get-from-map(\"color\", $var-name, $pfe-colors, $fallback);\n }\n @else if map-get($pfe-broadcasted, $var-name) != null {\n @return pfe-get-from-map(\"\", $var-name, $pfe-broadcasted);\n }\n @else if map-get($pfe-typography-base, $var-name) != null {\n @return pfe-get-from-map(\"\", $var-name, $pfe-typography-base, $fallback);\n }\n // PATTERNFLY CORE:\n @else if map-get($pf-type-sizing, $var-name) != null {\n @return pfe-get-from-map(\"\", $var-name, $pf-type-sizing, $fallback, $prefix: \"pf-global\");\n }\n @else if map-get($pf-type-sizing--modifers, $var-name) != null {\n @return pfe-get-from-map(\"\", $var-name, $pf-type-sizing--modifers, $fallback, $prefix: \"pf-c\");\n }\n @else if map-get($pf-type-sizing--content, $var-name) != null {\n @return pfe-get-from-map(\"\", $var-name, $pf-type-sizing--content, $fallback, $prefix: \"pf-c\");\n }\n // PFE components (must be below core)\n @else if map-get($pf-type-sizing--component, $var-name) != null {\n @return pfe-get-from-map(\"\", $var-name, $pf-type-sizing--component, $fallback);\n }\n\n // DEPRECATED:\n @else if map-get($pfe-typography-base-deprecated, $var-name) != null {\n @return pfe-get-from-map(\"\", $var-name, $pfe-typography-base-deprecated, $fallback);\n }\n @else if map-get($pfe-typography-deprecated, $var-name) != null {\n @return pfe-get-from-map(\"\", $var-name, $pfe-typography-deprecated, $fallback);\n }\n\n @else {\n @error \"#{$var-name} could not be found.\";\n }\n}",":host {\n --pfe-accordion--BorderColor--accent: transparent;\n --pfe-accordion--BorderColor: var(--pfe-theme--color--surface--border, #d2d2d2);\n --pfe-accordion--BorderTopWidth: var(--pfe-theme--surface--border-width, 1px);\n --pfe-accordion--BorderRightWidth: 0;\n --pfe-accordion--BorderBottomWidth: var(--pfe-theme--surface--border-width, 1px);\n --pfe-accordion--BorderLeftWidth: var(--pfe-theme--surface--border-width--heavy, 4px);\n --pfe-accordion--Color: var(--pfe-broadcasted--text, #3c3f42);\n --pfe-accordion--TextAlign: left;\n --pfe-accordion--accent: var(--pfe-theme--color--ui-accent, #06c);\n --pfe-accordion__base--Padding: var(--pfe-theme--container-spacer, 1rem);\n display: block;\n position: relative;\n overflow: hidden;\n margin: 0;\n color: var(--pfe-accordion--Color, var(--pfe-broadcasted--text, #3c3f42));\n}\n\n@media screen and (-ms-high-contrast: active), screen and (-ms-high-contrast: none) {\n :host {\n /* IE10+ */\n background-color: #fff !important;\n color: #151515 !important;\n }\n}\n\n:host([on=\"dark\"]) {\n --pfe-accordion--accent: var(--pfe-theme--color--ui-accent--on-dark, #73bcf7);\n}\n\n:host([on=\"saturated\"]) {\n --pfe-accordion--accent: var(--pfe-theme--color--ui-accent--on-saturated, #fff);\n}\n\n:host([disclosure=\"true\"]) {\n --pfe-accordion--BorderRightWidth: var(--pfe-theme--surface--border-width, 1px);\n --pfe-accordion--BorderLeftWidth: var(--pfe-theme--surface--border-width, 1px);\n --pfe-accordion--BorderColor--accent: var(--pfe-theme--color--surface--border, #d2d2d2);\n}\n\n:host([hidden]) {\n display: none;\n}\n","@mixin browser-query($browser-list) {\n @each $browser in $browser-list {\n @if $browser == ie11 {\n @media screen and (-ms-high-contrast: active), screen and (-ms-high-contrast: none) { /* IE10+ */\n @content;\n }\n }\n @if $browser == edge12 {\n @supports (-ms-accelerator: true) { /* Microsoft Edge Browser 12+ */\n @content;\n }\n }\n @if $browser == edge {\n @supports (-ms-ime-align: auto) { /* Microsoft Edge Browser 16+ (All) */\n @content;\n }\n }\n @if $browser == firefox {\n @media all and (min--moz-device-pixel-ratio:0) { /* Mozilla Firefox (All) */\n @content;\n }\n }\n }\n}\n\n@mixin pfe-transition($properties...) {\n $return: null;\n @each $property in $properties {\n @if length($property) == 1 {\n $return: append($return, #{$property} 250ms $pfe-global--animation-timing, comma);\n }\n @else if length($property) == 2 {\n $return: append($return, nth($property, 1) nth($property, 2), comma);\n }\n }\n transition: $return;\n}\n\n// Make a CSS arrow\n@mixin pfe-arrow($type, $color, $width: 8px, $height: 5px, $pseudo: false) {\n $direction: (\n up: 180deg,\n down: 0deg,\n right: -90deg,\n left: 90deg,\n );\n border-style: pfe-var(surface--border-style);\n border-width: $width $height 0;\n border-color: transparent;\n border-top-color: $color;\n transform: rotate(map-get($direction, $type));\n @if $pseudo {\n display: inline-block;\n content: \"\";\n @content;\n }\n}\n\n@mixin pfe-arrow-color($color) {\n border-top-color: $color;\n}\n\n@mixin pfe-print-media {\n @media print {\n @content;\n }\n}\n\n@mixin pfe-print-background {\n -webkit-print-color-adjust: exact;\n color-adjust: exact;\n}\n\n@mixin pfe-no-print-background {\n @include pfe-print-media {\n background-color: white !important;\n background-image: none !important;\n box-shadow: none !important;\n }\n}\n\n@mixin pfe-hidden {\n @at-root #{&}([hidden]) {\n display: none;\n }\n}\n\n@mixin pfe-pipe( $position: right, $padding: 0, $margin: 0, $color: $border-color) {\n border: pfe-var(surface--border-width) pfe-var(surface--border-style) transparent;\n border-#{$position}-color: $color;\n @if $position == right {\n padding-left: $padding;\n margin-right: $margin;\n }\n @else if $position == left {\n padding-right: $padding;\n margin-left: $margin;\n }\n}\n\n@mixin pfe-retina {\n @media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {\n @content;\n }\n}\n\n@mixin pfe-icon($path, $display: flex, $size: 1em) {\n display: #{$display};\n @if $path {\n background: #{$path} no-repeat;\n background-size: contain;\n background-position: center;\n }\n width: #{$size};\n height: #{$size};\n @content;\n}\n\n@mixin pfe-local-debug($map: $LOCAL-VARIABLES) {\n :root {\n @include pfe-print-local($map);\n }\n} "],"sourceRoot":"../src"}
\ No newline at end of file
diff --git a/elements/pfe-accordion/dist/pfe-accordion.js b/elements/pfe-accordion/dist/pfe-accordion.js
new file mode 100644
index 0000000000..327df437ee
--- /dev/null
+++ b/elements/pfe-accordion/dist/pfe-accordion.js
@@ -0,0 +1,689 @@
+import PFElement from '../../pfelement/dist/pfelement.js';
+
+// @POLYFILL Array.prototype.findIndex
+// https://tc39.github.io/ecma262/#sec-array.prototype.findIndex
+if (!Array.prototype.findIndex) {
+ Object.defineProperty(Array.prototype, "findIndex", {
+ value: function(predicate) {
+ // 1. Let O be ? ToObject(this value).
+ if (this == null) {
+ throw new TypeError('"this" is null or not defined');
+ }
+
+ var o = Object(this);
+
+ // 2. Let len be ? ToLength(? Get(O, "length")).
+ var len = o.length >>> 0;
+
+ // 3. If IsCallable(predicate) is false, throw a TypeError exception.
+ if (typeof predicate !== "function") {
+ throw new TypeError("predicate must be a function");
+ }
+
+ // 4. If thisArg was supplied, let T be thisArg; else let T be undefined.
+ var thisArg = arguments[1];
+
+ // 5. Let k be 0.
+ var k = 0;
+
+ // 6. Repeat, while k < len
+ while (k < len) {
+ // a. Let Pk be ! ToString(k).
+ // b. Let kValue be ? Get(O, Pk).
+ // c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)).
+ // d. If testResult is true, return k.
+ var kValue = o[k];
+ if (predicate.call(thisArg, kValue, k, o)) {
+ return k;
+ }
+ // e. Increase k by 1.
+ k++;
+ }
+
+ // 7. Return -1.
+ return -1;
+ }
+ });
+}
+
+/*!
+ * PatternFly Elements: PfeAccordion 1.3.0
+ * @license
+ * Copyright 2021 Red Hat, Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+*/
+
+class PfeAccordion extends PFElement {
+
+ // Injected at build-time
+ static get version() {
+ return "1.3.0";
+ }
+
+ // Injected at build-time
+ get html() {
+ return `
+
+`;
+ }
+
+ static get tag() {
+ return "pfe-accordion";
+ }
+
+ static get meta() {
+ return {
+ title: "Accordion",
+ description: "This element renders content sets in an expandable format."
+ };
+ }
+
+ get styleUrl() {
+ return "pfe-accordion.scss";
+ }
+
+ get templateUrl() {
+ return "pfe-accordion.html";
+ }
+
+ static get properties() {
+ return {
+ disclosure: {
+ // Leaving this as a string since it's an opt out
+ title: "Disclosure",
+ type: String,
+ values: ["true", "false"],
+ observer: "_disclosureChanged",
+ cascade: ["pfe-accordion-header", "pfe-accordion-panel"]
+ },
+ // @TODO: Deprecated pfe-disclosure in 1.0
+ oldDisclosure: {
+ type: String,
+ alias: "disclosure",
+ attr: "pfe-disclosure"
+ },
+ role: {
+ type: String,
+ default: "tablist",
+ values: ["tablist"]
+ }
+ };
+ }
+
+ static get slots() {
+ return {
+ default: {
+ type: "array",
+ namedSlot: false,
+ items: {
+ oneOf: [
+ {
+ $ref: "pfe-accordion-header"
+ },
+ {
+ $ref: "pfe-accordion-panel"
+ }
+ ]
+ }
+ }
+ };
+ }
+
+ static get events() {
+ return {
+ change: `${this.tag}:change`
+ };
+ }
+
+ // Declare the type of this component
+ static get PfeType() {
+ return PFElement.PfeTypes.Container;
+ }
+
+ // Each set contains a header and a panel
+ static get contentTemplate() {
+ return `
+
+
+ `;
+ }
+
+ constructor() {
+ super(PfeAccordion, { type: PfeAccordion.PfeType });
+
+ this._linkPanels = this._linkPanels.bind(this);
+ this._observer = new MutationObserver(this._linkPanels);
+ }
+
+ connectedCallback() {
+ super.connectedCallback();
+
+ this.addEventListener(PfeAccordion.events.change, this._changeHandler);
+ this.addEventListener("keydown", this._keydownHandler);
+
+ Promise.all([
+ customElements.whenDefined(PfeAccordionHeader.tag),
+ customElements.whenDefined(PfeAccordionPanel.tag)
+ ]).then(() => {
+ if (this.hasLightDOM()) {
+ this._linkPanels();
+ }
+
+ this._observer.observe(this, { childList: true });
+ });
+ }
+
+ disconnectedCallback() {
+ super.disconnectedCallback();
+
+ this.removeEventListener(PfeAccordion.events.change, this._changeHandler);
+ this.removeEventListener("keydown", this._keydownHandler);
+ this._observer.disconnect();
+ }
+
+ toggle(index) {
+ const headers = this._allHeaders();
+ const panels = this._allPanels();
+ const header = headers[index];
+ const panel = panels[index];
+
+ if (!header || !panel) {
+ return;
+ }
+
+ if (!header.expanded) {
+ this._expandHeader(header);
+ this._expandPanel(panel);
+ } else {
+ this._collapseHeader(header);
+ this._collapsePanel(panel);
+ }
+ }
+
+ expand(index) {
+ const headers = this._allHeaders();
+ const panels = this._allPanels();
+ const header = headers[index];
+ const panel = panels[index];
+
+ if (!header || !panel) {
+ return;
+ }
+
+ this._expandHeader(header);
+ this._expandPanel(panel);
+ }
+
+ expandAll() {
+ const headers = this._allHeaders();
+ const panels = this._allPanels();
+
+ headers.forEach(header => this._expandHeader(header));
+ panels.forEach(panel => this._expandPanel(panel));
+ }
+
+ collapse(index) {
+ const headers = this._allHeaders();
+ const panels = this._allPanels();
+ const header = headers[index];
+ const panel = panels[index];
+
+ if (!header || !panel) {
+ return;
+ }
+
+ this._collapseHeader(header);
+ this._collapsePanel(panel);
+ }
+
+ collapseAll() {
+ const headers = this._allHeaders();
+ const panels = this._allPanels();
+
+ headers.forEach(header => this._collapseHeader(header));
+ panels.forEach(panel => this._collapsePanel(panel));
+ }
+
+ _disclosureChanged(oldVal, newVal) {
+ if (newVal === "true") {
+ this._allHeaders().forEach(header => header.setAttribute("pfe-disclosure", "true"));
+ this._allPanels().forEach(panel => panel.setAttribute("pfe-disclosure", "true"));
+
+ // @TODO Deprecated in 1.0
+ this.oldDisclosure = "true";
+ } else {
+ this._allHeaders().forEach(header => header.setAttribute("pfe-disclosure", "false"));
+ this._allPanels().forEach(panel => panel.setAttribute("pfe-disclosure", "false"));
+
+ // @TODO Deprecated in 1.0
+ this.oldDisclosure = "false";
+ }
+ }
+
+ _linkPanels() {
+ const headers = this._allHeaders();
+ headers.forEach(header => {
+ const panel = this._panelForHeader(header);
+
+ if (!panel) {
+ return;
+ }
+
+ header.ariaControls = panel._id;
+ panel.ariaLabelledby = header._id;
+ });
+
+ if (headers.length === 1) {
+ if (this.disclosure === "false") {
+ return;
+ }
+
+ this.disclosure = "true";
+ }
+
+ if (headers.length > 1) {
+ if (this.disclosure) {
+ this.disclosure = "false";
+ }
+ }
+ }
+
+ _changeHandler(evt) {
+ if (this.classList.contains("animating")) {
+ return;
+ }
+
+ const header = evt.target;
+ const panel = evt.target.nextElementSibling;
+
+ if (evt.detail.expanded) {
+ this._expandHeader(header);
+ this._expandPanel(panel);
+ } else {
+ this._collapseHeader(header);
+ this._collapsePanel(panel);
+ }
+ }
+
+ _expandHeader(header) {
+ header.expanded = true;
+ }
+
+ _expandPanel(panel) {
+ if (!panel) {
+ console.error(`${PfeAccordion.tag}: Trying to expand a panel that doesn't exist`);
+ return;
+ }
+
+ if (panel.expanded) {
+ return;
+ }
+
+ panel.expanded = true;
+
+ const height = panel.getBoundingClientRect().height;
+ this._animate(panel, 0, height);
+ }
+
+ _collapseHeader(header) {
+ header.expanded = false;
+ }
+
+ _collapsePanel(panel) {
+ if (!panel) {
+ console.error(`${PfeAccordion.tag}: Trying to collapse a panel that doesn't exist`);
+ return;
+ }
+
+ if (!panel.expanded) {
+ return;
+ }
+
+ const height = panel.getBoundingClientRect().height;
+ panel.expanded = false;
+
+ this._animate(panel, height, 0);
+ }
+
+ _animate(panel, start, end) {
+ if (panel) {
+ const header = panel.previousElementSibling;
+ if (header) {
+ header.classList.add("animating");
+ }
+ panel.classList.add("animating");
+ panel.style.height = `${start}px`;
+
+ requestAnimationFrame(() => {
+ requestAnimationFrame(() => {
+ panel.style.height = `${end}px`;
+ panel.addEventListener("transitionend", this._transitionEndHandler);
+ });
+ });
+ }
+ }
+
+ _keydownHandler(evt) {
+ const currentHeader = evt.target;
+
+ if (!this._isHeader(currentHeader)) {
+ return;
+ }
+
+ let newHeader;
+
+ switch (evt.key) {
+ case "ArrowDown":
+ case "Down":
+ case "ArrowRight":
+ case "Right":
+ newHeader = this._nextHeader();
+ break;
+ case "ArrowUp":
+ case "Up":
+ case "ArrowLeft":
+ case "Left":
+ newHeader = this._previousHeader();
+ break;
+ case "Home":
+ newHeader = this._firstHeader();
+ break;
+ case "End":
+ newHeader = this._lastHeader();
+ break;
+ default:
+ return;
+ }
+
+ newHeader.shadowRoot.querySelector("button").focus();
+ }
+
+ _transitionEndHandler(evt) {
+ const header = evt.target.previousElementSibling;
+ if (header) {
+ header.classList.remove("animating");
+ }
+ evt.target.style.height = "";
+ evt.target.classList.remove("animating");
+ evt.target.removeEventListener("transitionend", this._transitionEndHandler);
+ }
+
+ _allHeaders() {
+ return [...this.querySelectorAll(PfeAccordionHeader.tag)];
+ }
+
+ _allPanels() {
+ return [...this.querySelectorAll(PfeAccordionPanel.tag)];
+ }
+
+ _panelForHeader(header) {
+ const next = header.nextElementSibling;
+
+ if (!next) {
+ return;
+ }
+
+ if (next.tagName.toLowerCase() !== PfeAccordionPanel.tag) {
+ console.error(`${PfeAccordion.tag}: Sibling element to a header needs to be a panel`);
+ return;
+ }
+
+ return next;
+ }
+
+ _previousHeader() {
+ const headers = this._allHeaders();
+ let newIndex = headers.findIndex(header => header === document.activeElement) - 1;
+ return headers[(newIndex + headers.length) % headers.length];
+ }
+
+ _nextHeader() {
+ const headers = this._allHeaders();
+ let newIndex = headers.findIndex(header => header === document.activeElement) + 1;
+ return headers[newIndex % headers.length];
+ }
+
+ _firstHeader() {
+ const headers = this._allHeaders();
+ return headers[0];
+ }
+
+ _lastHeader() {
+ const headers = this._allHeaders();
+ return headers[headers.length - 1];
+ }
+
+ _isHeader(element) {
+ return element.tagName.toLowerCase() === PfeAccordionHeader.tag;
+ }
+}
+
+class PfeAccordionHeader extends PFElement {
+
+ // Injected at build-time
+ static get version() {
+ return "1.3.0";
+ }
+
+ // Injected at build-time
+ get html() {
+ return `
+
+`;
+ }
+
+ static get tag() {
+ return "pfe-accordion-header";
+ }
+
+ get styleUrl() {
+ return "pfe-accordion-header.scss";
+ }
+
+ get templateUrl() {
+ return "pfe-accordion-header.html";
+ }
+
+ static get properties() {
+ return {
+ _id: {
+ type: String,
+ default: el => `${el.randomId.replace("pfe", el.tag)}`,
+ prefix: false
+ },
+ role: {
+ type: String,
+ default: "heading",
+ prefix: false
+ },
+ ariaControls: {
+ type: String,
+ prefix: false
+ },
+ // @TODO Deprecated pfe-id in 1.0
+ oldPfeId: {
+ type: String,
+ alias: "_id",
+ attr: "pfe-id"
+ },
+ expanded: {
+ title: "Expanded",
+ type: Boolean,
+ observer: "_expandedChanged",
+ cascade: "#pfe-accordion-header--button",
+ observer: "_expandedChanged"
+ }
+ };
+ }
+
+ constructor() {
+ super(PfeAccordionHeader);
+
+ this.button = this.shadowRoot.querySelector("button");
+
+ this._init = this._init.bind(this);
+ this._clickHandler = this._clickHandler.bind(this);
+ this._observer = new MutationObserver(this._init);
+ }
+
+ connectedCallback() {
+ super.connectedCallback();
+
+ if (this.hasLightDOM()) this._init();
+
+ this.addEventListener("click", this._clickHandler);
+ this._observer.observe(this, { childList: true });
+ }
+
+ disconnectedCallback() {
+ super.disconnectedCallback();
+
+ this.removeEventListener("click", this._clickHandler);
+ this._observer.disconnect();
+ }
+
+ _init() {
+ if (window.ShadyCSS) {
+ this._observer.disconnect();
+ }
+
+ const child = this.children[0];
+ let isHeaderTag = false;
+
+ if (child) {
+ switch (child.tagName) {
+ case "H1":
+ case "H2":
+ case "H3":
+ case "H4":
+ case "H5":
+ case "H6":
+ isHeaderTag = true;
+ break;
+ }
+
+ const wrapperTag = document.createElement(child.tagName);
+ this.button.innerText = child.innerText;
+
+ wrapperTag.appendChild(this.button);
+ this.shadowRoot.appendChild(wrapperTag);
+ } else {
+ this.button.innerText = this.textContent.trim();
+ }
+
+ if (!isHeaderTag) {
+ this.warn(`The first child in the light DOM must be a Header level tag (h1, h2, h3, h4, h5, or h6)`);
+ }
+
+ if (window.ShadyCSS) {
+ this._observer.observe(this, { childList: true });
+ }
+ }
+
+ _clickHandler(event) {
+ this.emitEvent(PfeAccordion.events.change, {
+ detail: {
+ expanded: !this.expanded
+ }
+ });
+ }
+
+ _expandedChanged() {
+ this.setAttribute("aria-expanded", this.expanded);
+ this.button.setAttribute("aria-expanded", this.expanded);
+ }
+}
+
+class PfeAccordionPanel extends PFElement {
+
+ // Injected at build-time
+ static get version() {
+ return "1.3.0";
+ }
+
+ // Injected at build-time
+ get html() {
+ return `
+
+
+
+
+
+
`;
+ }
+
+ static get tag() {
+ return "pfe-accordion-panel";
+ }
+
+ get styleUrl() {
+ return "pfe-accordion-panel.scss";
+ }
+
+ get templateUrl() {
+ return "pfe-accordion-panel.html";
+ }
+
+ static get properties() {
+ return {
+ _id: {
+ type: String,
+ default: el => `${el.randomId.replace("pfe", el.tag)}`,
+ prefix: false
+ },
+ role: {
+ type: String,
+ default: "region",
+ prefix: false
+ },
+ // @TODO Deprecated pfe-id in 1.0
+ oldPfeId: {
+ type: String,
+ alias: "_id",
+ attr: "pfe-id"
+ },
+ expanded: {
+ title: "Expanded",
+ type: Boolean,
+ default: false
+ },
+ ariaLabelledby: {
+ type: String,
+ prefix: false
+ }
+ };
+ }
+
+ constructor() {
+ super(PfeAccordionPanel);
+ }
+
+ connectedCallback() {
+ super.connectedCallback();
+ }
+}
+
+PFElement.create(PfeAccordionHeader);
+PFElement.create(PfeAccordionPanel);
+PFElement.create(PfeAccordion);
+
+export default PfeAccordion;
+//# sourceMappingURL=pfe-accordion.js.map
diff --git a/elements/pfe-accordion/dist/pfe-accordion.js.map b/elements/pfe-accordion/dist/pfe-accordion.js.map
new file mode 100644
index 0000000000..cec44b8a75
--- /dev/null
+++ b/elements/pfe-accordion/dist/pfe-accordion.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"pfe-accordion.js","sources":["../_temp/polyfills--pfe-accordion.js","../_temp/pfe-accordion.js"],"sourcesContent":["// @POLYFILL Array.prototype.findIndex\n// https://tc39.github.io/ecma262/#sec-array.prototype.findIndex\nif (!Array.prototype.findIndex) {\n Object.defineProperty(Array.prototype, \"findIndex\", {\n value: function(predicate) {\n // 1. Let O be ? ToObject(this value).\n if (this == null) {\n throw new TypeError('\"this\" is null or not defined');\n }\n\n var o = Object(this);\n\n // 2. Let len be ? ToLength(? Get(O, \"length\")).\n var len = o.length >>> 0;\n\n // 3. If IsCallable(predicate) is false, throw a TypeError exception.\n if (typeof predicate !== \"function\") {\n throw new TypeError(\"predicate must be a function\");\n }\n\n // 4. If thisArg was supplied, let T be thisArg; else let T be undefined.\n var thisArg = arguments[1];\n\n // 5. Let k be 0.\n var k = 0;\n\n // 6. Repeat, while k < len\n while (k < len) {\n // a. Let Pk be ! ToString(k).\n // b. Let kValue be ? Get(O, Pk).\n // c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)).\n // d. If testResult is true, return k.\n var kValue = o[k];\n if (predicate.call(thisArg, kValue, k, o)) {\n return k;\n }\n // e. Increase k by 1.\n k++;\n }\n\n // 7. Return -1.\n return -1;\n }\n });\n}\n","/*!\n * PatternFly Elements: PfeAccordion 1.3.0\n * @license\n * Copyright 2021 Red Hat, Inc.\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n * \n*/\n\n// Import polyfills: findIndex\nimport \"./polyfills--pfe-accordion.js\";\n\nimport PFElement from \"../../pfelement/dist/pfelement.js\";\n\nclass PfeAccordion extends PFElement {\n\n // Injected at build-time\n static get version() {\n return \"1.3.0\";\n }\n\n // Injected at build-time\n get html() {\n return `\n\n`;\n }\n\n static get tag() {\n return \"pfe-accordion\";\n }\n\n static get meta() {\n return {\n title: \"Accordion\",\n description: \"This element renders content sets in an expandable format.\"\n };\n }\n\n get styleUrl() {\n return \"pfe-accordion.scss\";\n }\n\n get templateUrl() {\n return \"pfe-accordion.html\";\n }\n\n static get properties() {\n return {\n disclosure: {\n // Leaving this as a string since it's an opt out\n title: \"Disclosure\",\n type: String,\n values: [\"true\", \"false\"],\n observer: \"_disclosureChanged\",\n cascade: [\"pfe-accordion-header\", \"pfe-accordion-panel\"]\n },\n // @TODO: Deprecated pfe-disclosure in 1.0\n oldDisclosure: {\n type: String,\n alias: \"disclosure\",\n attr: \"pfe-disclosure\"\n },\n role: {\n type: String,\n default: \"tablist\",\n values: [\"tablist\"]\n }\n };\n }\n\n static get slots() {\n return {\n default: {\n type: \"array\",\n namedSlot: false,\n items: {\n oneOf: [\n {\n $ref: \"pfe-accordion-header\"\n },\n {\n $ref: \"pfe-accordion-panel\"\n }\n ]\n }\n }\n };\n }\n\n static get events() {\n return {\n change: `${this.tag}:change`\n };\n }\n\n // Declare the type of this component\n static get PfeType() {\n return PFElement.PfeTypes.Container;\n }\n\n // Each set contains a header and a panel\n static get contentTemplate() {\n return `\n \n \n `;\n }\n\n constructor() {\n super(PfeAccordion, { type: PfeAccordion.PfeType });\n\n this._linkPanels = this._linkPanels.bind(this);\n this._observer = new MutationObserver(this._linkPanels);\n }\n\n connectedCallback() {\n super.connectedCallback();\n\n this.addEventListener(PfeAccordion.events.change, this._changeHandler);\n this.addEventListener(\"keydown\", this._keydownHandler);\n\n Promise.all([\n customElements.whenDefined(PfeAccordionHeader.tag),\n customElements.whenDefined(PfeAccordionPanel.tag)\n ]).then(() => {\n if (this.hasLightDOM()) {\n this._linkPanels();\n }\n\n this._observer.observe(this, { childList: true });\n });\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n\n this.removeEventListener(PfeAccordion.events.change, this._changeHandler);\n this.removeEventListener(\"keydown\", this._keydownHandler);\n this._observer.disconnect();\n }\n\n toggle(index) {\n const headers = this._allHeaders();\n const panels = this._allPanels();\n const header = headers[index];\n const panel = panels[index];\n\n if (!header || !panel) {\n return;\n }\n\n if (!header.expanded) {\n this._expandHeader(header);\n this._expandPanel(panel);\n } else {\n this._collapseHeader(header);\n this._collapsePanel(panel);\n }\n }\n\n expand(index) {\n const headers = this._allHeaders();\n const panels = this._allPanels();\n const header = headers[index];\n const panel = panels[index];\n\n if (!header || !panel) {\n return;\n }\n\n this._expandHeader(header);\n this._expandPanel(panel);\n }\n\n expandAll() {\n const headers = this._allHeaders();\n const panels = this._allPanels();\n\n headers.forEach(header => this._expandHeader(header));\n panels.forEach(panel => this._expandPanel(panel));\n }\n\n collapse(index) {\n const headers = this._allHeaders();\n const panels = this._allPanels();\n const header = headers[index];\n const panel = panels[index];\n\n if (!header || !panel) {\n return;\n }\n\n this._collapseHeader(header);\n this._collapsePanel(panel);\n }\n\n collapseAll() {\n const headers = this._allHeaders();\n const panels = this._allPanels();\n\n headers.forEach(header => this._collapseHeader(header));\n panels.forEach(panel => this._collapsePanel(panel));\n }\n\n _disclosureChanged(oldVal, newVal) {\n if (newVal === \"true\") {\n this._allHeaders().forEach(header => header.setAttribute(\"pfe-disclosure\", \"true\"));\n this._allPanels().forEach(panel => panel.setAttribute(\"pfe-disclosure\", \"true\"));\n\n // @TODO Deprecated in 1.0\n this.oldDisclosure = \"true\";\n } else {\n this._allHeaders().forEach(header => header.setAttribute(\"pfe-disclosure\", \"false\"));\n this._allPanels().forEach(panel => panel.setAttribute(\"pfe-disclosure\", \"false\"));\n\n // @TODO Deprecated in 1.0\n this.oldDisclosure = \"false\";\n }\n }\n\n _linkPanels() {\n const headers = this._allHeaders();\n headers.forEach(header => {\n const panel = this._panelForHeader(header);\n\n if (!panel) {\n return;\n }\n\n header.ariaControls = panel._id;\n panel.ariaLabelledby = header._id;\n });\n\n if (headers.length === 1) {\n if (this.disclosure === \"false\") {\n return;\n }\n\n this.disclosure = \"true\";\n }\n\n if (headers.length > 1) {\n if (this.disclosure) {\n this.disclosure = \"false\";\n }\n }\n }\n\n _changeHandler(evt) {\n if (this.classList.contains(\"animating\")) {\n return;\n }\n\n const header = evt.target;\n const panel = evt.target.nextElementSibling;\n\n if (evt.detail.expanded) {\n this._expandHeader(header);\n this._expandPanel(panel);\n } else {\n this._collapseHeader(header);\n this._collapsePanel(panel);\n }\n }\n\n _expandHeader(header) {\n header.expanded = true;\n }\n\n _expandPanel(panel) {\n if (!panel) {\n console.error(`${PfeAccordion.tag}: Trying to expand a panel that doesn't exist`);\n return;\n }\n\n if (panel.expanded) {\n return;\n }\n\n panel.expanded = true;\n\n const height = panel.getBoundingClientRect().height;\n this._animate(panel, 0, height);\n }\n\n _collapseHeader(header) {\n header.expanded = false;\n }\n\n _collapsePanel(panel) {\n if (!panel) {\n console.error(`${PfeAccordion.tag}: Trying to collapse a panel that doesn't exist`);\n return;\n }\n\n if (!panel.expanded) {\n return;\n }\n\n const height = panel.getBoundingClientRect().height;\n panel.expanded = false;\n\n this._animate(panel, height, 0);\n }\n\n _animate(panel, start, end) {\n if (panel) {\n const header = panel.previousElementSibling;\n if (header) {\n header.classList.add(\"animating\");\n }\n panel.classList.add(\"animating\");\n panel.style.height = `${start}px`;\n\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n panel.style.height = `${end}px`;\n panel.addEventListener(\"transitionend\", this._transitionEndHandler);\n });\n });\n }\n }\n\n _keydownHandler(evt) {\n const currentHeader = evt.target;\n\n if (!this._isHeader(currentHeader)) {\n return;\n }\n\n let newHeader;\n\n switch (evt.key) {\n case \"ArrowDown\":\n case \"Down\":\n case \"ArrowRight\":\n case \"Right\":\n newHeader = this._nextHeader();\n break;\n case \"ArrowUp\":\n case \"Up\":\n case \"ArrowLeft\":\n case \"Left\":\n newHeader = this._previousHeader();\n break;\n case \"Home\":\n newHeader = this._firstHeader();\n break;\n case \"End\":\n newHeader = this._lastHeader();\n break;\n default:\n return;\n }\n\n newHeader.shadowRoot.querySelector(\"button\").focus();\n }\n\n _transitionEndHandler(evt) {\n const header = evt.target.previousElementSibling;\n if (header) {\n header.classList.remove(\"animating\");\n }\n evt.target.style.height = \"\";\n evt.target.classList.remove(\"animating\");\n evt.target.removeEventListener(\"transitionend\", this._transitionEndHandler);\n }\n\n _allHeaders() {\n return [...this.querySelectorAll(PfeAccordionHeader.tag)];\n }\n\n _allPanels() {\n return [...this.querySelectorAll(PfeAccordionPanel.tag)];\n }\n\n _panelForHeader(header) {\n const next = header.nextElementSibling;\n\n if (!next) {\n return;\n }\n\n if (next.tagName.toLowerCase() !== PfeAccordionPanel.tag) {\n console.error(`${PfeAccordion.tag}: Sibling element to a header needs to be a panel`);\n return;\n }\n\n return next;\n }\n\n _previousHeader() {\n const headers = this._allHeaders();\n let newIndex = headers.findIndex(header => header === document.activeElement) - 1;\n return headers[(newIndex + headers.length) % headers.length];\n }\n\n _nextHeader() {\n const headers = this._allHeaders();\n let newIndex = headers.findIndex(header => header === document.activeElement) + 1;\n return headers[newIndex % headers.length];\n }\n\n _firstHeader() {\n const headers = this._allHeaders();\n return headers[0];\n }\n\n _lastHeader() {\n const headers = this._allHeaders();\n return headers[headers.length - 1];\n }\n\n _isHeader(element) {\n return element.tagName.toLowerCase() === PfeAccordionHeader.tag;\n }\n}\n\nclass PfeAccordionHeader extends PFElement {\n\n // Injected at build-time\n static get version() {\n return \"1.3.0\";\n }\n\n // Injected at build-time\n get html() {\n return `\n\n`;\n }\n\n static get tag() {\n return \"pfe-accordion-header\";\n }\n\n get styleUrl() {\n return \"pfe-accordion-header.scss\";\n }\n\n get templateUrl() {\n return \"pfe-accordion-header.html\";\n }\n\n static get properties() {\n return {\n _id: {\n type: String,\n default: el => `${el.randomId.replace(\"pfe\", el.tag)}`,\n prefix: false\n },\n role: {\n type: String,\n default: \"heading\",\n prefix: false\n },\n ariaControls: {\n type: String,\n prefix: false\n },\n // @TODO Deprecated pfe-id in 1.0\n oldPfeId: {\n type: String,\n alias: \"_id\",\n attr: \"pfe-id\"\n },\n expanded: {\n title: \"Expanded\",\n type: Boolean,\n observer: \"_expandedChanged\",\n cascade: \"#pfe-accordion-header--button\",\n observer: \"_expandedChanged\"\n }\n };\n }\n\n constructor() {\n super(PfeAccordionHeader);\n\n this.button = this.shadowRoot.querySelector(\"button\");\n\n this._init = this._init.bind(this);\n this._clickHandler = this._clickHandler.bind(this);\n this._observer = new MutationObserver(this._init);\n }\n\n connectedCallback() {\n super.connectedCallback();\n\n if (this.hasLightDOM()) this._init();\n\n this.addEventListener(\"click\", this._clickHandler);\n this._observer.observe(this, { childList: true });\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n\n this.removeEventListener(\"click\", this._clickHandler);\n this._observer.disconnect();\n }\n\n _init() {\n if (window.ShadyCSS) {\n this._observer.disconnect();\n }\n\n const child = this.children[0];\n let isHeaderTag = false;\n\n if (child) {\n switch (child.tagName) {\n case \"H1\":\n case \"H2\":\n case \"H3\":\n case \"H4\":\n case \"H5\":\n case \"H6\":\n isHeaderTag = true;\n break;\n }\n\n const wrapperTag = document.createElement(child.tagName);\n this.button.innerText = child.innerText;\n\n wrapperTag.appendChild(this.button);\n this.shadowRoot.appendChild(wrapperTag);\n } else {\n this.button.innerText = this.textContent.trim();\n }\n\n if (!isHeaderTag) {\n this.warn(`The first child in the light DOM must be a Header level tag (h1, h2, h3, h4, h5, or h6)`);\n }\n\n if (window.ShadyCSS) {\n this._observer.observe(this, { childList: true });\n }\n }\n\n _clickHandler(event) {\n this.emitEvent(PfeAccordion.events.change, {\n detail: {\n expanded: !this.expanded\n }\n });\n }\n\n _expandedChanged() {\n this.setAttribute(\"aria-expanded\", this.expanded);\n this.button.setAttribute(\"aria-expanded\", this.expanded);\n }\n}\n\nclass PfeAccordionPanel extends PFElement {\n\n // Injected at build-time\n static get version() {\n return \"1.3.0\";\n }\n\n // Injected at build-time\n get html() {\n return `\n\n
\n
\n \n
\n
`;\n }\n\n static get tag() {\n return \"pfe-accordion-panel\";\n }\n\n get styleUrl() {\n return \"pfe-accordion-panel.scss\";\n }\n\n get templateUrl() {\n return \"pfe-accordion-panel.html\";\n }\n\n static get properties() {\n return {\n _id: {\n type: String,\n default: el => `${el.randomId.replace(\"pfe\", el.tag)}`,\n prefix: false\n },\n role: {\n type: String,\n default: \"region\",\n prefix: false\n },\n // @TODO Deprecated pfe-id in 1.0\n oldPfeId: {\n type: String,\n alias: \"_id\",\n attr: \"pfe-id\"\n },\n expanded: {\n title: \"Expanded\",\n type: Boolean,\n default: false\n },\n ariaLabelledby: {\n type: String,\n prefix: false\n }\n };\n }\n\n constructor() {\n super(PfeAccordionPanel);\n }\n\n connectedCallback() {\n super.connectedCallback();\n }\n}\n\nPFElement.create(PfeAccordionHeader);\nPFElement.create(PfeAccordionPanel);\nPFElement.create(PfeAccordion);\n\nexport { PfeAccordion as default };\n"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/elements/pfe-accordion/dist/pfe-accordion.min.css.map b/elements/pfe-accordion/dist/pfe-accordion.min.css.map
new file mode 100644
index 0000000000..1a03cdb190
--- /dev/null
+++ b/elements/pfe-accordion/dist/pfe-accordion.min.css.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../../src/pfe-accordion.scss","../../../pfe-sass/mixins/_custom-properties.scss","../../../pfe-sass/mixins/_mixins.scss"],"names":[],"mappings":"AAEA,MCkGM,qCAAA,YAAA,6BAAA,kDAAA,gCAAA,6CAAA,kCAAA,EAAA,mCAAA,6CAAA,iCAAA,oDAAA,uBAAA,sCAAA,2BAAA,KAAA,wBAAA,yCAJE,+BAAA,yCD3FN,QAAA,MACA,SAAA,SACA,SAAA,OACA,OAAA,EACA,MAAA,QAAA,MAAA,iEENI,6CAAA,oCFDN,MAUI,iBAAA,eACA,MAAA,mBAIJ,iBCmFM,wBAAA,qDD/EN,sBC+EM,wBAAA,uDD3EN,yBC2EM,kCAAA,6CAAA,iCAAA,6CAAA,qCAAA,kDDtEN,gBACE,QAAA","file":"pfe-accordion.min.css","sourceRoot":"../src","sourcesContent":[]}
\ No newline at end of file
diff --git a/elements/pfe-accordion/dist/pfe-accordion.min.js b/elements/pfe-accordion/dist/pfe-accordion.min.js
new file mode 100644
index 0000000000..8aac888a12
--- /dev/null
+++ b/elements/pfe-accordion/dist/pfe-accordion.min.js
@@ -0,0 +1,26 @@
+import e from"../../pfelement/dist/pfelement.min.js";Array.prototype.findIndex||Object.defineProperty(Array.prototype,"findIndex",{value:function(e){if(null==this)throw new TypeError('"this" is null or not defined');var r=Object(this),t=r.length>>>0;if("function"!=typeof e)throw new TypeError("predicate must be a function");for(var o=arguments[1],a=0;a:host{--pfe-accordion--BorderColor--accent:transparent;--pfe-accordion--BorderColor:var(--pfe-theme--color--surface--border, #d2d2d2);--pfe-accordion--BorderTopWidth:var(--pfe-theme--surface--border-width, 1px);--pfe-accordion--BorderRightWidth:0;--pfe-accordion--BorderBottomWidth:var(--pfe-theme--surface--border-width, 1px);--pfe-accordion--BorderLeftWidth:var(--pfe-theme--surface--border-width--heavy, 4px);--pfe-accordion--Color:var(--pfe-broadcasted--text, #3c3f42);--pfe-accordion--TextAlign:left;--pfe-accordion--accent:var(--pfe-theme--color--ui-accent, #06c);--pfe-accordion__base--Padding:var(--pfe-theme--container-spacer, 1rem);display:block;position:relative;overflow:hidden;margin:0;color:#3c3f42;color:var(--pfe-accordion--Color,var(--pfe-broadcasted--text,#3c3f42))}@media screen and (-ms-high-contrast:active),screen and (-ms-high-contrast:none){:host{background-color:#fff!important;color:#151515!important}}:host([on=dark]){--pfe-accordion--accent:var(--pfe-theme--color--ui-accent--on-dark, #73bcf7)}:host([on=saturated]){--pfe-accordion--accent:var(--pfe-theme--color--ui-accent--on-saturated, #fff)}:host([disclosure=true]){--pfe-accordion--BorderRightWidth:var(--pfe-theme--surface--border-width, 1px);--pfe-accordion--BorderLeftWidth:var(--pfe-theme--surface--border-width, 1px);--pfe-accordion--BorderColor--accent:var(--pfe-theme--color--surface--border, #d2d2d2)}:host([hidden]){display:none} /*# sourceMappingURL=pfe-accordion.min.css.map */\n"}static get tag(){return"pfe-accordion"}static get meta(){return{title:"Accordion",description:"This element renders content sets in an expandable format."}}get styleUrl(){return"pfe-accordion.scss"}get templateUrl(){return"pfe-accordion.html"}static get properties(){return{disclosure:{title:"Disclosure",type:String,values:["true","false"],observer:"_disclosureChanged",cascade:["pfe-accordion-header","pfe-accordion-panel"]},oldDisclosure:{type:String,alias:"disclosure",attr:"pfe-disclosure"},role:{type:String,default:"tablist",values:["tablist"]}}}static get slots(){return{default:{type:"array",namedSlot:!1,items:{oneOf:[{$ref:"pfe-accordion-header"},{$ref:"pfe-accordion-panel"}]}}}}static get events(){return{change:`${this.tag}:change`}}static get PfeType(){return e.PfeTypes.Container}static get contentTemplate(){return'\n \n \n '}constructor(){super(r,{type:r.PfeType}),this._linkPanels=this._linkPanels.bind(this),this._observer=new MutationObserver(this._linkPanels)}connectedCallback(){super.connectedCallback(),this.addEventListener(r.events.change,this._changeHandler),this.addEventListener("keydown",this._keydownHandler),Promise.all([customElements.whenDefined(t.tag),customElements.whenDefined(o.tag)]).then(()=>{this.hasLightDOM()&&this._linkPanels(),this._observer.observe(this,{childList:!0})})}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener(r.events.change,this._changeHandler),this.removeEventListener("keydown",this._keydownHandler),this._observer.disconnect()}toggle(e){const r=this._allHeaders(),t=this._allPanels(),o=r[e],a=t[e];o&&a&&(o.expanded?(this._collapseHeader(o),this._collapsePanel(a)):(this._expandHeader(o),this._expandPanel(a)))}expand(e){const r=this._allHeaders(),t=this._allPanels(),o=r[e],a=t[e];o&&a&&(this._expandHeader(o),this._expandPanel(a))}expandAll(){const e=this._allHeaders(),r=this._allPanels();e.forEach(e=>this._expandHeader(e)),r.forEach(e=>this._expandPanel(e))}collapse(e){const r=this._allHeaders(),t=this._allPanels(),o=r[e],a=t[e];o&&a&&(this._collapseHeader(o),this._collapsePanel(a))}collapseAll(){const e=this._allHeaders(),r=this._allPanels();e.forEach(e=>this._collapseHeader(e)),r.forEach(e=>this._collapsePanel(e))}_disclosureChanged(e,r){"true"===r?(this._allHeaders().forEach(e=>e.setAttribute("pfe-disclosure","true")),this._allPanels().forEach(e=>e.setAttribute("pfe-disclosure","true")),this.oldDisclosure="true"):(this._allHeaders().forEach(e=>e.setAttribute("pfe-disclosure","false")),this._allPanels().forEach(e=>e.setAttribute("pfe-disclosure","false")),this.oldDisclosure="false")}_linkPanels(){const e=this._allHeaders();if(e.forEach(e=>{const r=this._panelForHeader(e);r&&(e.ariaControls=r._id,r.ariaLabelledby=e._id)}),1===e.length){if("false"===this.disclosure)return;this.disclosure="true"}e.length>1&&this.disclosure&&(this.disclosure="false")}_changeHandler(e){if(this.classList.contains("animating"))return;const r=e.target,t=e.target.nextElementSibling;e.detail.expanded?(this._expandHeader(r),this._expandPanel(t)):(this._collapseHeader(r),this._collapsePanel(t))}_expandHeader(e){e.expanded=!0}_expandPanel(e){if(!e)return void console.error(`${r.tag}: Trying to expand a panel that doesn't exist`);if(e.expanded)return;e.expanded=!0;const t=e.getBoundingClientRect().height;this._animate(e,0,t)}_collapseHeader(e){e.expanded=!1}_collapsePanel(e){if(!e)return void console.error(`${r.tag}: Trying to collapse a panel that doesn't exist`);if(!e.expanded)return;const t=e.getBoundingClientRect().height;e.expanded=!1,this._animate(e,t,0)}_animate(e,r,t){if(e){const o=e.previousElementSibling;o&&o.classList.add("animating"),e.classList.add("animating"),e.style.height=`${r}px`,requestAnimationFrame(()=>{requestAnimationFrame(()=>{e.style.height=`${t}px`,e.addEventListener("transitionend",this._transitionEndHandler)})})}}_keydownHandler(e){const r=e.target;if(!this._isHeader(r))return;let t;switch(e.key){case"ArrowDown":case"Down":case"ArrowRight":case"Right":t=this._nextHeader();break;case"ArrowUp":case"Up":case"ArrowLeft":case"Left":t=this._previousHeader();break;case"Home":t=this._firstHeader();break;case"End":t=this._lastHeader();break;default:return}t.shadowRoot.querySelector("button").focus()}_transitionEndHandler(e){const r=e.target.previousElementSibling;r&&r.classList.remove("animating"),e.target.style.height="",e.target.classList.remove("animating"),e.target.removeEventListener("transitionend",this._transitionEndHandler)}_allHeaders(){return[...this.querySelectorAll(t.tag)]}_allPanels(){return[...this.querySelectorAll(o.tag)]}_panelForHeader(e){const t=e.nextElementSibling;if(t){if(t.tagName.toLowerCase()===o.tag)return t;console.error(`${r.tag}: Sibling element to a header needs to be a panel`)}}_previousHeader(){const e=this._allHeaders();let r=e.findIndex(e=>e===document.activeElement)-1;return e[(r+e.length)%e.length]}_nextHeader(){const e=this._allHeaders();let r=e.findIndex(e=>e===document.activeElement)+1;return e[r%e.length]}_firstHeader(){return this._allHeaders()[0]}_lastHeader(){const e=this._allHeaders();return e[e.length-1]}_isHeader(e){return e.tagName.toLowerCase()===t.tag}}class t extends e{static get version(){return"1.3.0"}get html(){return'\n\n'}static get tag(){return"pfe-accordion-header"}get styleUrl(){return"pfe-accordion-header.scss"}get templateUrl(){return"pfe-accordion-header.html"}static get properties(){return{_id:{type:String,default:e=>`${e.randomId.replace("pfe",e.tag)}`,prefix:!1},role:{type:String,default:"heading",prefix:!1},ariaControls:{type:String,prefix:!1},oldPfeId:{type:String,alias:"_id",attr:"pfe-id"},expanded:{title:"Expanded",type:Boolean,observer:"_expandedChanged",cascade:"#pfe-accordion-header--button",observer:"_expandedChanged"}}}constructor(){super(t),this.button=this.shadowRoot.querySelector("button"),this._init=this._init.bind(this),this._clickHandler=this._clickHandler.bind(this),this._observer=new MutationObserver(this._init)}connectedCallback(){super.connectedCallback(),this.hasLightDOM()&&this._init(),this.addEventListener("click",this._clickHandler),this._observer.observe(this,{childList:!0})}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("click",this._clickHandler),this._observer.disconnect()}_init(){window.ShadyCSS&&this._observer.disconnect();const e=this.children[0];let r=!1;if(e){switch(e.tagName){case"H1":case"H2":case"H3":case"H4":case"H5":case"H6":r=!0}const t=document.createElement(e.tagName);this.button.innerText=e.innerText,t.appendChild(this.button),this.shadowRoot.appendChild(t)}else this.button.innerText=this.textContent.trim();r||this.warn("The first child in the light DOM must be a Header level tag (h1, h2, h3, h4, h5, or h6)"),window.ShadyCSS&&this._observer.observe(this,{childList:!0})}_clickHandler(e){this.emitEvent(r.events.change,{detail:{expanded:!this.expanded}})}_expandedChanged(){this.setAttribute("aria-expanded",this.expanded),this.button.setAttribute("aria-expanded",this.expanded)}}class o extends e{static get version(){return"1.3.0"}get html(){return'\n\n
\n
\n \n
\n
'}static get tag(){return"pfe-accordion-panel"}get styleUrl(){return"pfe-accordion-panel.scss"}get templateUrl(){return"pfe-accordion-panel.html"}static get properties(){return{_id:{type:String,default:e=>`${e.randomId.replace("pfe",e.tag)}`,prefix:!1},role:{type:String,default:"region",prefix:!1},oldPfeId:{type:String,alias:"_id",attr:"pfe-id"},expanded:{title:"Expanded",type:Boolean,default:!1},ariaLabelledby:{type:String,prefix:!1}}}constructor(){super(o)}connectedCallback(){super.connectedCallback()}}e.create(t),e.create(o),e.create(r);export default r;
+//# sourceMappingURL=pfe-accordion.min.js.map
diff --git a/elements/pfe-accordion/dist/pfe-accordion.min.js.map b/elements/pfe-accordion/dist/pfe-accordion.min.js.map
new file mode 100644
index 0000000000..7f6c15393d
--- /dev/null
+++ b/elements/pfe-accordion/dist/pfe-accordion.min.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"pfe-accordion.min.js","sources":["../_temp/polyfills--pfe-accordion.js","../_temp/pfe-accordion.js"],"sourcesContent":["// @POLYFILL Array.prototype.findIndex\n// https://tc39.github.io/ecma262/#sec-array.prototype.findIndex\nif (!Array.prototype.findIndex) {\n Object.defineProperty(Array.prototype, \"findIndex\", {\n value: function(predicate) {\n // 1. Let O be ? ToObject(this value).\n if (this == null) {\n throw new TypeError('\"this\" is null or not defined');\n }\n\n var o = Object(this);\n\n // 2. Let len be ? ToLength(? Get(O, \"length\")).\n var len = o.length >>> 0;\n\n // 3. If IsCallable(predicate) is false, throw a TypeError exception.\n if (typeof predicate !== \"function\") {\n throw new TypeError(\"predicate must be a function\");\n }\n\n // 4. If thisArg was supplied, let T be thisArg; else let T be undefined.\n var thisArg = arguments[1];\n\n // 5. Let k be 0.\n var k = 0;\n\n // 6. Repeat, while k < len\n while (k < len) {\n // a. Let Pk be ! ToString(k).\n // b. Let kValue be ? Get(O, Pk).\n // c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)).\n // d. If testResult is true, return k.\n var kValue = o[k];\n if (predicate.call(thisArg, kValue, k, o)) {\n return k;\n }\n // e. Increase k by 1.\n k++;\n }\n\n // 7. Return -1.\n return -1;\n }\n });\n}\n","/*!\n * PatternFly Elements: PfeAccordion 1.3.0\n * @license\n * Copyright 2021 Red Hat, Inc.\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n * \n*/\n\n// Import polyfills: findIndex\nimport \"./polyfills--pfe-accordion.js\";\n\nimport PFElement from \"../../pfelement/dist/pfelement.js\";\n\nclass PfeAccordion extends PFElement {\n\n // Injected at build-time\n static get version() {\n return \"1.3.0\";\n }\n\n // Injected at build-time\n get html() {\n return `\n\n`;\n }\n\n static get tag() {\n return \"pfe-accordion\";\n }\n\n static get meta() {\n return {\n title: \"Accordion\",\n description: \"This element renders content sets in an expandable format.\"\n };\n }\n\n get styleUrl() {\n return \"pfe-accordion.scss\";\n }\n\n get templateUrl() {\n return \"pfe-accordion.html\";\n }\n\n static get properties() {\n return {\n disclosure: {\n // Leaving this as a string since it's an opt out\n title: \"Disclosure\",\n type: String,\n values: [\"true\", \"false\"],\n observer: \"_disclosureChanged\",\n cascade: [\"pfe-accordion-header\", \"pfe-accordion-panel\"]\n },\n // @TODO: Deprecated pfe-disclosure in 1.0\n oldDisclosure: {\n type: String,\n alias: \"disclosure\",\n attr: \"pfe-disclosure\"\n },\n role: {\n type: String,\n default: \"tablist\",\n values: [\"tablist\"]\n }\n };\n }\n\n static get slots() {\n return {\n default: {\n type: \"array\",\n namedSlot: false,\n items: {\n oneOf: [\n {\n $ref: \"pfe-accordion-header\"\n },\n {\n $ref: \"pfe-accordion-panel\"\n }\n ]\n }\n }\n };\n }\n\n static get events() {\n return {\n change: `${this.tag}:change`\n };\n }\n\n // Declare the type of this component\n static get PfeType() {\n return PFElement.PfeTypes.Container;\n }\n\n // Each set contains a header and a panel\n static get contentTemplate() {\n return `\n \n \n `;\n }\n\n constructor() {\n super(PfeAccordion, { type: PfeAccordion.PfeType });\n\n this._linkPanels = this._linkPanels.bind(this);\n this._observer = new MutationObserver(this._linkPanels);\n }\n\n connectedCallback() {\n super.connectedCallback();\n\n this.addEventListener(PfeAccordion.events.change, this._changeHandler);\n this.addEventListener(\"keydown\", this._keydownHandler);\n\n Promise.all([\n customElements.whenDefined(PfeAccordionHeader.tag),\n customElements.whenDefined(PfeAccordionPanel.tag)\n ]).then(() => {\n if (this.hasLightDOM()) {\n this._linkPanels();\n }\n\n this._observer.observe(this, { childList: true });\n });\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n\n this.removeEventListener(PfeAccordion.events.change, this._changeHandler);\n this.removeEventListener(\"keydown\", this._keydownHandler);\n this._observer.disconnect();\n }\n\n toggle(index) {\n const headers = this._allHeaders();\n const panels = this._allPanels();\n const header = headers[index];\n const panel = panels[index];\n\n if (!header || !panel) {\n return;\n }\n\n if (!header.expanded) {\n this._expandHeader(header);\n this._expandPanel(panel);\n } else {\n this._collapseHeader(header);\n this._collapsePanel(panel);\n }\n }\n\n expand(index) {\n const headers = this._allHeaders();\n const panels = this._allPanels();\n const header = headers[index];\n const panel = panels[index];\n\n if (!header || !panel) {\n return;\n }\n\n this._expandHeader(header);\n this._expandPanel(panel);\n }\n\n expandAll() {\n const headers = this._allHeaders();\n const panels = this._allPanels();\n\n headers.forEach(header => this._expandHeader(header));\n panels.forEach(panel => this._expandPanel(panel));\n }\n\n collapse(index) {\n const headers = this._allHeaders();\n const panels = this._allPanels();\n const header = headers[index];\n const panel = panels[index];\n\n if (!header || !panel) {\n return;\n }\n\n this._collapseHeader(header);\n this._collapsePanel(panel);\n }\n\n collapseAll() {\n const headers = this._allHeaders();\n const panels = this._allPanels();\n\n headers.forEach(header => this._collapseHeader(header));\n panels.forEach(panel => this._collapsePanel(panel));\n }\n\n _disclosureChanged(oldVal, newVal) {\n if (newVal === \"true\") {\n this._allHeaders().forEach(header => header.setAttribute(\"pfe-disclosure\", \"true\"));\n this._allPanels().forEach(panel => panel.setAttribute(\"pfe-disclosure\", \"true\"));\n\n // @TODO Deprecated in 1.0\n this.oldDisclosure = \"true\";\n } else {\n this._allHeaders().forEach(header => header.setAttribute(\"pfe-disclosure\", \"false\"));\n this._allPanels().forEach(panel => panel.setAttribute(\"pfe-disclosure\", \"false\"));\n\n // @TODO Deprecated in 1.0\n this.oldDisclosure = \"false\";\n }\n }\n\n _linkPanels() {\n const headers = this._allHeaders();\n headers.forEach(header => {\n const panel = this._panelForHeader(header);\n\n if (!panel) {\n return;\n }\n\n header.ariaControls = panel._id;\n panel.ariaLabelledby = header._id;\n });\n\n if (headers.length === 1) {\n if (this.disclosure === \"false\") {\n return;\n }\n\n this.disclosure = \"true\";\n }\n\n if (headers.length > 1) {\n if (this.disclosure) {\n this.disclosure = \"false\";\n }\n }\n }\n\n _changeHandler(evt) {\n if (this.classList.contains(\"animating\")) {\n return;\n }\n\n const header = evt.target;\n const panel = evt.target.nextElementSibling;\n\n if (evt.detail.expanded) {\n this._expandHeader(header);\n this._expandPanel(panel);\n } else {\n this._collapseHeader(header);\n this._collapsePanel(panel);\n }\n }\n\n _expandHeader(header) {\n header.expanded = true;\n }\n\n _expandPanel(panel) {\n if (!panel) {\n console.error(`${PfeAccordion.tag}: Trying to expand a panel that doesn't exist`);\n return;\n }\n\n if (panel.expanded) {\n return;\n }\n\n panel.expanded = true;\n\n const height = panel.getBoundingClientRect().height;\n this._animate(panel, 0, height);\n }\n\n _collapseHeader(header) {\n header.expanded = false;\n }\n\n _collapsePanel(panel) {\n if (!panel) {\n console.error(`${PfeAccordion.tag}: Trying to collapse a panel that doesn't exist`);\n return;\n }\n\n if (!panel.expanded) {\n return;\n }\n\n const height = panel.getBoundingClientRect().height;\n panel.expanded = false;\n\n this._animate(panel, height, 0);\n }\n\n _animate(panel, start, end) {\n if (panel) {\n const header = panel.previousElementSibling;\n if (header) {\n header.classList.add(\"animating\");\n }\n panel.classList.add(\"animating\");\n panel.style.height = `${start}px`;\n\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n panel.style.height = `${end}px`;\n panel.addEventListener(\"transitionend\", this._transitionEndHandler);\n });\n });\n }\n }\n\n _keydownHandler(evt) {\n const currentHeader = evt.target;\n\n if (!this._isHeader(currentHeader)) {\n return;\n }\n\n let newHeader;\n\n switch (evt.key) {\n case \"ArrowDown\":\n case \"Down\":\n case \"ArrowRight\":\n case \"Right\":\n newHeader = this._nextHeader();\n break;\n case \"ArrowUp\":\n case \"Up\":\n case \"ArrowLeft\":\n case \"Left\":\n newHeader = this._previousHeader();\n break;\n case \"Home\":\n newHeader = this._firstHeader();\n break;\n case \"End\":\n newHeader = this._lastHeader();\n break;\n default:\n return;\n }\n\n newHeader.shadowRoot.querySelector(\"button\").focus();\n }\n\n _transitionEndHandler(evt) {\n const header = evt.target.previousElementSibling;\n if (header) {\n header.classList.remove(\"animating\");\n }\n evt.target.style.height = \"\";\n evt.target.classList.remove(\"animating\");\n evt.target.removeEventListener(\"transitionend\", this._transitionEndHandler);\n }\n\n _allHeaders() {\n return [...this.querySelectorAll(PfeAccordionHeader.tag)];\n }\n\n _allPanels() {\n return [...this.querySelectorAll(PfeAccordionPanel.tag)];\n }\n\n _panelForHeader(header) {\n const next = header.nextElementSibling;\n\n if (!next) {\n return;\n }\n\n if (next.tagName.toLowerCase() !== PfeAccordionPanel.tag) {\n console.error(`${PfeAccordion.tag}: Sibling element to a header needs to be a panel`);\n return;\n }\n\n return next;\n }\n\n _previousHeader() {\n const headers = this._allHeaders();\n let newIndex = headers.findIndex(header => header === document.activeElement) - 1;\n return headers[(newIndex + headers.length) % headers.length];\n }\n\n _nextHeader() {\n const headers = this._allHeaders();\n let newIndex = headers.findIndex(header => header === document.activeElement) + 1;\n return headers[newIndex % headers.length];\n }\n\n _firstHeader() {\n const headers = this._allHeaders();\n return headers[0];\n }\n\n _lastHeader() {\n const headers = this._allHeaders();\n return headers[headers.length - 1];\n }\n\n _isHeader(element) {\n return element.tagName.toLowerCase() === PfeAccordionHeader.tag;\n }\n}\n\nclass PfeAccordionHeader extends PFElement {\n\n // Injected at build-time\n static get version() {\n return \"1.3.0\";\n }\n\n // Injected at build-time\n get html() {\n return `\n\n`;\n }\n\n static get tag() {\n return \"pfe-accordion-header\";\n }\n\n get styleUrl() {\n return \"pfe-accordion-header.scss\";\n }\n\n get templateUrl() {\n return \"pfe-accordion-header.html\";\n }\n\n static get properties() {\n return {\n _id: {\n type: String,\n default: el => `${el.randomId.replace(\"pfe\", el.tag)}`,\n prefix: false\n },\n role: {\n type: String,\n default: \"heading\",\n prefix: false\n },\n ariaControls: {\n type: String,\n prefix: false\n },\n // @TODO Deprecated pfe-id in 1.0\n oldPfeId: {\n type: String,\n alias: \"_id\",\n attr: \"pfe-id\"\n },\n expanded: {\n title: \"Expanded\",\n type: Boolean,\n observer: \"_expandedChanged\",\n cascade: \"#pfe-accordion-header--button\",\n observer: \"_expandedChanged\"\n }\n };\n }\n\n constructor() {\n super(PfeAccordionHeader);\n\n this.button = this.shadowRoot.querySelector(\"button\");\n\n this._init = this._init.bind(this);\n this._clickHandler = this._clickHandler.bind(this);\n this._observer = new MutationObserver(this._init);\n }\n\n connectedCallback() {\n super.connectedCallback();\n\n if (this.hasLightDOM()) this._init();\n\n this.addEventListener(\"click\", this._clickHandler);\n this._observer.observe(this, { childList: true });\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n\n this.removeEventListener(\"click\", this._clickHandler);\n this._observer.disconnect();\n }\n\n _init() {\n if (window.ShadyCSS) {\n this._observer.disconnect();\n }\n\n const child = this.children[0];\n let isHeaderTag = false;\n\n if (child) {\n switch (child.tagName) {\n case \"H1\":\n case \"H2\":\n case \"H3\":\n case \"H4\":\n case \"H5\":\n case \"H6\":\n isHeaderTag = true;\n break;\n }\n\n const wrapperTag = document.createElement(child.tagName);\n this.button.innerText = child.innerText;\n\n wrapperTag.appendChild(this.button);\n this.shadowRoot.appendChild(wrapperTag);\n } else {\n this.button.innerText = this.textContent.trim();\n }\n\n if (!isHeaderTag) {\n this.warn(`The first child in the light DOM must be a Header level tag (h1, h2, h3, h4, h5, or h6)`);\n }\n\n if (window.ShadyCSS) {\n this._observer.observe(this, { childList: true });\n }\n }\n\n _clickHandler(event) {\n this.emitEvent(PfeAccordion.events.change, {\n detail: {\n expanded: !this.expanded\n }\n });\n }\n\n _expandedChanged() {\n this.setAttribute(\"aria-expanded\", this.expanded);\n this.button.setAttribute(\"aria-expanded\", this.expanded);\n }\n}\n\nclass PfeAccordionPanel extends PFElement {\n\n // Injected at build-time\n static get version() {\n return \"1.3.0\";\n }\n\n // Injected at build-time\n get html() {\n return `\n\n
\n
\n \n
\n
`;\n }\n\n static get tag() {\n return \"pfe-accordion-panel\";\n }\n\n get styleUrl() {\n return \"pfe-accordion-panel.scss\";\n }\n\n get templateUrl() {\n return \"pfe-accordion-panel.html\";\n }\n\n static get properties() {\n return {\n _id: {\n type: String,\n default: el => `${el.randomId.replace(\"pfe\", el.tag)}`,\n prefix: false\n },\n role: {\n type: String,\n default: \"region\",\n prefix: false\n },\n // @TODO Deprecated pfe-id in 1.0\n oldPfeId: {\n type: String,\n alias: \"_id\",\n attr: \"pfe-id\"\n },\n expanded: {\n title: \"Expanded\",\n type: Boolean,\n default: false\n },\n ariaLabelledby: {\n type: String,\n prefix: false\n }\n };\n }\n\n constructor() {\n super(PfeAccordionPanel);\n }\n\n connectedCallback() {\n super.connectedCallback();\n }\n}\n\nPFElement.create(PfeAccordionHeader);\nPFElement.create(PfeAccordionPanel);\nPFElement.create(PfeAccordion);\n\nexport { PfeAccordion as default };\n"],"names":["Array","prototype","findIndex","Object","defineProperty","value","predicate","this","TypeError","o","len","length","thisArg","arguments","k","kValue","call","PfeAccordion","PFElement","version","html","tag","meta","title","description","styleUrl","templateUrl","properties","disclosure","type","String","values","observer","cascade","oldDisclosure","alias","attr","role","default","slots","namedSlot","items","oneOf","$ref","events","change","PfeType","PfeTypes","Container","contentTemplate","[object Object]","super","_linkPanels","bind","_observer","MutationObserver","connectedCallback","addEventListener","_changeHandler","_keydownHandler","Promise","all","customElements","whenDefined","PfeAccordionHeader","PfeAccordionPanel","then","hasLightDOM","observe","childList","disconnectedCallback","removeEventListener","disconnect","index","headers","_allHeaders","panels","_allPanels","header","panel","expanded","_collapseHeader","_collapsePanel","_expandHeader","_expandPanel","forEach","oldVal","newVal","setAttribute","_panelForHeader","ariaControls","_id","ariaLabelledby","evt","classList","contains","target","nextElementSibling","detail","console","error","height","getBoundingClientRect","_animate","start","end","previousElementSibling","add","style","requestAnimationFrame","_transitionEndHandler","currentHeader","_isHeader","newHeader","key","_nextHeader","_previousHeader","_firstHeader","_lastHeader","shadowRoot","querySelector","focus","remove","querySelectorAll","next","tagName","toLowerCase","newIndex","document","activeElement","element","el","randomId","replace","prefix","oldPfeId","Boolean","button","_init","_clickHandler","window","ShadyCSS","child","children","isHeaderTag","wrapperTag","createElement","innerText","appendChild","textContent","trim","warn","event","emitEvent","create"],"mappings":"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"}
\ No newline at end of file
diff --git a/elements/pfe-accordion/dist/pfe-accordion.umd.js b/elements/pfe-accordion/dist/pfe-accordion.umd.js
new file mode 100644
index 0000000000..75e069433e
--- /dev/null
+++ b/elements/pfe-accordion/dist/pfe-accordion.umd.js
@@ -0,0 +1,901 @@
+(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('../../pfelement/dist/pfelement.umd')) :
+ typeof define === 'function' && define.amd ? define(['../../pfelement/dist/pfelement.umd'], factory) :
+ (global = global || self, global.PfeAccordion = factory(global.PFElement));
+}(this, (function (PFElement) { 'use strict';
+
+ PFElement = PFElement && Object.prototype.hasOwnProperty.call(PFElement, 'default') ? PFElement['default'] : PFElement;
+
+ // @POLYFILL Array.prototype.findIndex
+ // https://tc39.github.io/ecma262/#sec-array.prototype.findIndex
+ if (!Array.prototype.findIndex) {
+ Object.defineProperty(Array.prototype, "findIndex", {
+ value: function value(predicate) {
+ // 1. Let O be ? ToObject(this value).
+ if (this == null) {
+ throw new TypeError('"this" is null or not defined');
+ }
+
+ var o = Object(this);
+
+ // 2. Let len be ? ToLength(? Get(O, "length")).
+ var len = o.length >>> 0;
+
+ // 3. If IsCallable(predicate) is false, throw a TypeError exception.
+ if (typeof predicate !== "function") {
+ throw new TypeError("predicate must be a function");
+ }
+
+ // 4. If thisArg was supplied, let T be thisArg; else let T be undefined.
+ var thisArg = arguments[1];
+
+ // 5. Let k be 0.
+ var k = 0;
+
+ // 6. Repeat, while k < len
+ while (k < len) {
+ // a. Let Pk be ! ToString(k).
+ // b. Let kValue be ? Get(O, Pk).
+ // c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)).
+ // d. If testResult is true, return k.
+ var kValue = o[k];
+ if (predicate.call(thisArg, kValue, k, o)) {
+ return k;
+ }
+ // e. Increase k by 1.
+ k++;
+ }
+
+ // 7. Return -1.
+ return -1;
+ }
+ });
+ }
+
+ var classCallCheck = function (instance, Constructor) {
+ if (!(instance instanceof Constructor)) {
+ throw new TypeError("Cannot call a class as a function");
+ }
+ };
+
+ var createClass = function () {
+ function defineProperties(target, props) {
+ for (var i = 0; i < props.length; i++) {
+ var descriptor = props[i];
+ descriptor.enumerable = descriptor.enumerable || false;
+ descriptor.configurable = true;
+ if ("value" in descriptor) descriptor.writable = true;
+ Object.defineProperty(target, descriptor.key, descriptor);
+ }
+ }
+
+ return function (Constructor, protoProps, staticProps) {
+ if (protoProps) defineProperties(Constructor.prototype, protoProps);
+ if (staticProps) defineProperties(Constructor, staticProps);
+ return Constructor;
+ };
+ }();
+
+ var defineProperty = function (obj, key, value) {
+ if (key in obj) {
+ Object.defineProperty(obj, key, {
+ value: value,
+ enumerable: true,
+ configurable: true,
+ writable: true
+ });
+ } else {
+ obj[key] = value;
+ }
+
+ return obj;
+ };
+
+ var get = function get(object, property, receiver) {
+ if (object === null) object = Function.prototype;
+ var desc = Object.getOwnPropertyDescriptor(object, property);
+
+ if (desc === undefined) {
+ var parent = Object.getPrototypeOf(object);
+
+ if (parent === null) {
+ return undefined;
+ } else {
+ return get(parent, property, receiver);
+ }
+ } else if ("value" in desc) {
+ return desc.value;
+ } else {
+ var getter = desc.get;
+
+ if (getter === undefined) {
+ return undefined;
+ }
+
+ return getter.call(receiver);
+ }
+ };
+
+ var inherits = function (subClass, superClass) {
+ if (typeof superClass !== "function" && superClass !== null) {
+ throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);
+ }
+
+ subClass.prototype = Object.create(superClass && superClass.prototype, {
+ constructor: {
+ value: subClass,
+ enumerable: false,
+ writable: true,
+ configurable: true
+ }
+ });
+ if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;
+ };
+
+ var possibleConstructorReturn = function (self, call) {
+ if (!self) {
+ throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
+ }
+
+ return call && (typeof call === "object" || typeof call === "function") ? call : self;
+ };
+
+ var toConsumableArray = function (arr) {
+ if (Array.isArray(arr)) {
+ for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];
+
+ return arr2;
+ } else {
+ return Array.from(arr);
+ }
+ };
+
+ /*!
+ * PatternFly Elements: PfeAccordion 1.3.0
+ * @license
+ * Copyright 2021 Red Hat, Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ */
+
+ var PfeAccordion = function (_PFElement) {
+ inherits(PfeAccordion, _PFElement);
+ createClass(PfeAccordion, [{
+ key: "html",
+
+
+ // Injected at build-time
+ get: function get() {
+ return "\n\n";
+ }
+ }, {
+ key: "styleUrl",
+ get: function get() {
+ return "pfe-accordion.scss";
+ }
+ }, {
+ key: "templateUrl",
+ get: function get() {
+ return "pfe-accordion.html";
+ }
+ }], [{
+ key: "version",
+
+
+ // Injected at build-time
+ get: function get() {
+ return "1.3.0";
+ }
+ }, {
+ key: "tag",
+ get: function get() {
+ return "pfe-accordion";
+ }
+ }, {
+ key: "meta",
+ get: function get() {
+ return {
+ title: "Accordion",
+ description: "This element renders content sets in an expandable format."
+ };
+ }
+ }, {
+ key: "properties",
+ get: function get() {
+ return {
+ disclosure: {
+ // Leaving this as a string since it's an opt out
+ title: "Disclosure",
+ type: String,
+ values: ["true", "false"],
+ observer: "_disclosureChanged",
+ cascade: ["pfe-accordion-header", "pfe-accordion-panel"]
+ },
+ // @TODO: Deprecated pfe-disclosure in 1.0
+ oldDisclosure: {
+ type: String,
+ alias: "disclosure",
+ attr: "pfe-disclosure"
+ },
+ role: {
+ type: String,
+ default: "tablist",
+ values: ["tablist"]
+ }
+ };
+ }
+ }, {
+ key: "slots",
+ get: function get() {
+ return {
+ default: {
+ type: "array",
+ namedSlot: false,
+ items: {
+ oneOf: [{
+ $ref: "pfe-accordion-header"
+ }, {
+ $ref: "pfe-accordion-panel"
+ }]
+ }
+ }
+ };
+ }
+ }, {
+ key: "events",
+ get: function get() {
+ return {
+ change: this.tag + ":change"
+ };
+ }
+
+ // Declare the type of this component
+
+ }, {
+ key: "PfeType",
+ get: function get() {
+ return PFElement.PfeTypes.Container;
+ }
+
+ // Each set contains a header and a panel
+
+ }, {
+ key: "contentTemplate",
+ get: function get() {
+ return "\n \n \n ";
+ }
+ }]);
+
+ function PfeAccordion() {
+ classCallCheck(this, PfeAccordion);
+
+ var _this = possibleConstructorReturn(this, (PfeAccordion.__proto__ || Object.getPrototypeOf(PfeAccordion)).call(this, PfeAccordion, { type: PfeAccordion.PfeType }));
+
+ _this._linkPanels = _this._linkPanels.bind(_this);
+ _this._observer = new MutationObserver(_this._linkPanels);
+ return _this;
+ }
+
+ createClass(PfeAccordion, [{
+ key: "connectedCallback",
+ value: function connectedCallback() {
+ var _this2 = this;
+
+ get(PfeAccordion.prototype.__proto__ || Object.getPrototypeOf(PfeAccordion.prototype), "connectedCallback", this).call(this);
+
+ this.addEventListener(PfeAccordion.events.change, this._changeHandler);
+ this.addEventListener("keydown", this._keydownHandler);
+
+ Promise.all([customElements.whenDefined(PfeAccordionHeader.tag), customElements.whenDefined(PfeAccordionPanel.tag)]).then(function () {
+ if (_this2.hasLightDOM()) {
+ _this2._linkPanels();
+ }
+
+ _this2._observer.observe(_this2, { childList: true });
+ });
+ }
+ }, {
+ key: "disconnectedCallback",
+ value: function disconnectedCallback() {
+ get(PfeAccordion.prototype.__proto__ || Object.getPrototypeOf(PfeAccordion.prototype), "disconnectedCallback", this).call(this);
+
+ this.removeEventListener(PfeAccordion.events.change, this._changeHandler);
+ this.removeEventListener("keydown", this._keydownHandler);
+ this._observer.disconnect();
+ }
+ }, {
+ key: "toggle",
+ value: function toggle(index) {
+ var headers = this._allHeaders();
+ var panels = this._allPanels();
+ var header = headers[index];
+ var panel = panels[index];
+
+ if (!header || !panel) {
+ return;
+ }
+
+ if (!header.expanded) {
+ this._expandHeader(header);
+ this._expandPanel(panel);
+ } else {
+ this._collapseHeader(header);
+ this._collapsePanel(panel);
+ }
+ }
+ }, {
+ key: "expand",
+ value: function expand(index) {
+ var headers = this._allHeaders();
+ var panels = this._allPanels();
+ var header = headers[index];
+ var panel = panels[index];
+
+ if (!header || !panel) {
+ return;
+ }
+
+ this._expandHeader(header);
+ this._expandPanel(panel);
+ }
+ }, {
+ key: "expandAll",
+ value: function expandAll() {
+ var _this3 = this;
+
+ var headers = this._allHeaders();
+ var panels = this._allPanels();
+
+ headers.forEach(function (header) {
+ return _this3._expandHeader(header);
+ });
+ panels.forEach(function (panel) {
+ return _this3._expandPanel(panel);
+ });
+ }
+ }, {
+ key: "collapse",
+ value: function collapse(index) {
+ var headers = this._allHeaders();
+ var panels = this._allPanels();
+ var header = headers[index];
+ var panel = panels[index];
+
+ if (!header || !panel) {
+ return;
+ }
+
+ this._collapseHeader(header);
+ this._collapsePanel(panel);
+ }
+ }, {
+ key: "collapseAll",
+ value: function collapseAll() {
+ var _this4 = this;
+
+ var headers = this._allHeaders();
+ var panels = this._allPanels();
+
+ headers.forEach(function (header) {
+ return _this4._collapseHeader(header);
+ });
+ panels.forEach(function (panel) {
+ return _this4._collapsePanel(panel);
+ });
+ }
+ }, {
+ key: "_disclosureChanged",
+ value: function _disclosureChanged(oldVal, newVal) {
+ if (newVal === "true") {
+ this._allHeaders().forEach(function (header) {
+ return header.setAttribute("pfe-disclosure", "true");
+ });
+ this._allPanels().forEach(function (panel) {
+ return panel.setAttribute("pfe-disclosure", "true");
+ });
+
+ // @TODO Deprecated in 1.0
+ this.oldDisclosure = "true";
+ } else {
+ this._allHeaders().forEach(function (header) {
+ return header.setAttribute("pfe-disclosure", "false");
+ });
+ this._allPanels().forEach(function (panel) {
+ return panel.setAttribute("pfe-disclosure", "false");
+ });
+
+ // @TODO Deprecated in 1.0
+ this.oldDisclosure = "false";
+ }
+ }
+ }, {
+ key: "_linkPanels",
+ value: function _linkPanels() {
+ var _this5 = this;
+
+ var headers = this._allHeaders();
+ headers.forEach(function (header) {
+ var panel = _this5._panelForHeader(header);
+
+ if (!panel) {
+ return;
+ }
+
+ header.ariaControls = panel._id;
+ panel.ariaLabelledby = header._id;
+ });
+
+ if (headers.length === 1) {
+ if (this.disclosure === "false") {
+ return;
+ }
+
+ this.disclosure = "true";
+ }
+
+ if (headers.length > 1) {
+ if (this.disclosure) {
+ this.disclosure = "false";
+ }
+ }
+ }
+ }, {
+ key: "_changeHandler",
+ value: function _changeHandler(evt) {
+ if (this.classList.contains("animating")) {
+ return;
+ }
+
+ var header = evt.target;
+ var panel = evt.target.nextElementSibling;
+
+ if (evt.detail.expanded) {
+ this._expandHeader(header);
+ this._expandPanel(panel);
+ } else {
+ this._collapseHeader(header);
+ this._collapsePanel(panel);
+ }
+ }
+ }, {
+ key: "_expandHeader",
+ value: function _expandHeader(header) {
+ header.expanded = true;
+ }
+ }, {
+ key: "_expandPanel",
+ value: function _expandPanel(panel) {
+ if (!panel) {
+ console.error(PfeAccordion.tag + ": Trying to expand a panel that doesn't exist");
+ return;
+ }
+
+ if (panel.expanded) {
+ return;
+ }
+
+ panel.expanded = true;
+
+ var height = panel.getBoundingClientRect().height;
+ this._animate(panel, 0, height);
+ }
+ }, {
+ key: "_collapseHeader",
+ value: function _collapseHeader(header) {
+ header.expanded = false;
+ }
+ }, {
+ key: "_collapsePanel",
+ value: function _collapsePanel(panel) {
+ if (!panel) {
+ console.error(PfeAccordion.tag + ": Trying to collapse a panel that doesn't exist");
+ return;
+ }
+
+ if (!panel.expanded) {
+ return;
+ }
+
+ var height = panel.getBoundingClientRect().height;
+ panel.expanded = false;
+
+ this._animate(panel, height, 0);
+ }
+ }, {
+ key: "_animate",
+ value: function _animate(panel, start, end) {
+ var _this6 = this;
+
+ if (panel) {
+ var header = panel.previousElementSibling;
+ if (header) {
+ header.classList.add("animating");
+ }
+ panel.classList.add("animating");
+ panel.style.height = start + "px";
+
+ requestAnimationFrame(function () {
+ requestAnimationFrame(function () {
+ panel.style.height = end + "px";
+ panel.addEventListener("transitionend", _this6._transitionEndHandler);
+ });
+ });
+ }
+ }
+ }, {
+ key: "_keydownHandler",
+ value: function _keydownHandler(evt) {
+ var currentHeader = evt.target;
+
+ if (!this._isHeader(currentHeader)) {
+ return;
+ }
+
+ var newHeader = void 0;
+
+ switch (evt.key) {
+ case "ArrowDown":
+ case "Down":
+ case "ArrowRight":
+ case "Right":
+ newHeader = this._nextHeader();
+ break;
+ case "ArrowUp":
+ case "Up":
+ case "ArrowLeft":
+ case "Left":
+ newHeader = this._previousHeader();
+ break;
+ case "Home":
+ newHeader = this._firstHeader();
+ break;
+ case "End":
+ newHeader = this._lastHeader();
+ break;
+ default:
+ return;
+ }
+
+ newHeader.shadowRoot.querySelector("button").focus();
+ }
+ }, {
+ key: "_transitionEndHandler",
+ value: function _transitionEndHandler(evt) {
+ var header = evt.target.previousElementSibling;
+ if (header) {
+ header.classList.remove("animating");
+ }
+ evt.target.style.height = "";
+ evt.target.classList.remove("animating");
+ evt.target.removeEventListener("transitionend", this._transitionEndHandler);
+ }
+ }, {
+ key: "_allHeaders",
+ value: function _allHeaders() {
+ return [].concat(toConsumableArray(this.querySelectorAll(PfeAccordionHeader.tag)));
+ }
+ }, {
+ key: "_allPanels",
+ value: function _allPanels() {
+ return [].concat(toConsumableArray(this.querySelectorAll(PfeAccordionPanel.tag)));
+ }
+ }, {
+ key: "_panelForHeader",
+ value: function _panelForHeader(header) {
+ var next = header.nextElementSibling;
+
+ if (!next) {
+ return;
+ }
+
+ if (next.tagName.toLowerCase() !== PfeAccordionPanel.tag) {
+ console.error(PfeAccordion.tag + ": Sibling element to a header needs to be a panel");
+ return;
+ }
+
+ return next;
+ }
+ }, {
+ key: "_previousHeader",
+ value: function _previousHeader() {
+ var headers = this._allHeaders();
+ var newIndex = headers.findIndex(function (header) {
+ return header === document.activeElement;
+ }) - 1;
+ return headers[(newIndex + headers.length) % headers.length];
+ }
+ }, {
+ key: "_nextHeader",
+ value: function _nextHeader() {
+ var headers = this._allHeaders();
+ var newIndex = headers.findIndex(function (header) {
+ return header === document.activeElement;
+ }) + 1;
+ return headers[newIndex % headers.length];
+ }
+ }, {
+ key: "_firstHeader",
+ value: function _firstHeader() {
+ var headers = this._allHeaders();
+ return headers[0];
+ }
+ }, {
+ key: "_lastHeader",
+ value: function _lastHeader() {
+ var headers = this._allHeaders();
+ return headers[headers.length - 1];
+ }
+ }, {
+ key: "_isHeader",
+ value: function _isHeader(element) {
+ return element.tagName.toLowerCase() === PfeAccordionHeader.tag;
+ }
+ }]);
+ return PfeAccordion;
+ }(PFElement);
+
+ var PfeAccordionHeader = function (_PFElement2) {
+ inherits(PfeAccordionHeader, _PFElement2);
+ createClass(PfeAccordionHeader, [{
+ key: "html",
+
+
+ // Injected at build-time
+ get: function get() {
+ return "\n\n";
+ }
+ }, {
+ key: "styleUrl",
+ get: function get() {
+ return "pfe-accordion-header.scss";
+ }
+ }, {
+ key: "templateUrl",
+ get: function get() {
+ return "pfe-accordion-header.html";
+ }
+ }], [{
+ key: "version",
+
+
+ // Injected at build-time
+ get: function get() {
+ return "1.3.0";
+ }
+ }, {
+ key: "tag",
+ get: function get() {
+ return "pfe-accordion-header";
+ }
+ }, {
+ key: "properties",
+ get: function get() {
+ return {
+ _id: {
+ type: String,
+ default: function _default(el) {
+ return "" + el.randomId.replace("pfe", el.tag);
+ },
+ prefix: false
+ },
+ role: {
+ type: String,
+ default: "heading",
+ prefix: false
+ },
+ ariaControls: {
+ type: String,
+ prefix: false
+ },
+ // @TODO Deprecated pfe-id in 1.0
+ oldPfeId: {
+ type: String,
+ alias: "_id",
+ attr: "pfe-id"
+ },
+ expanded: defineProperty({
+ title: "Expanded",
+ type: Boolean,
+ observer: "_expandedChanged",
+ cascade: "#pfe-accordion-header--button"
+ }, "observer", "_expandedChanged")
+ };
+ }
+ }]);
+
+ function PfeAccordionHeader() {
+ classCallCheck(this, PfeAccordionHeader);
+
+ var _this7 = possibleConstructorReturn(this, (PfeAccordionHeader.__proto__ || Object.getPrototypeOf(PfeAccordionHeader)).call(this, PfeAccordionHeader));
+
+ _this7.button = _this7.shadowRoot.querySelector("button");
+
+ _this7._init = _this7._init.bind(_this7);
+ _this7._clickHandler = _this7._clickHandler.bind(_this7);
+ _this7._observer = new MutationObserver(_this7._init);
+ return _this7;
+ }
+
+ createClass(PfeAccordionHeader, [{
+ key: "connectedCallback",
+ value: function connectedCallback() {
+ get(PfeAccordionHeader.prototype.__proto__ || Object.getPrototypeOf(PfeAccordionHeader.prototype), "connectedCallback", this).call(this);
+
+ if (this.hasLightDOM()) this._init();
+
+ this.addEventListener("click", this._clickHandler);
+ this._observer.observe(this, { childList: true });
+ }
+ }, {
+ key: "disconnectedCallback",
+ value: function disconnectedCallback() {
+ get(PfeAccordionHeader.prototype.__proto__ || Object.getPrototypeOf(PfeAccordionHeader.prototype), "disconnectedCallback", this).call(this);
+
+ this.removeEventListener("click", this._clickHandler);
+ this._observer.disconnect();
+ }
+ }, {
+ key: "_init",
+ value: function _init() {
+ if (window.ShadyCSS) {
+ this._observer.disconnect();
+ }
+
+ var child = this.children[0];
+ var isHeaderTag = false;
+
+ if (child) {
+ switch (child.tagName) {
+ case "H1":
+ case "H2":
+ case "H3":
+ case "H4":
+ case "H5":
+ case "H6":
+ isHeaderTag = true;
+ break;
+ }
+
+ var wrapperTag = document.createElement(child.tagName);
+ this.button.innerText = child.innerText;
+
+ wrapperTag.appendChild(this.button);
+ this.shadowRoot.appendChild(wrapperTag);
+ } else {
+ this.button.innerText = this.textContent.trim();
+ }
+
+ if (!isHeaderTag) {
+ this.warn("The first child in the light DOM must be a Header level tag (h1, h2, h3, h4, h5, or h6)");
+ }
+
+ if (window.ShadyCSS) {
+ this._observer.observe(this, { childList: true });
+ }
+ }
+ }, {
+ key: "_clickHandler",
+ value: function _clickHandler(event) {
+ this.emitEvent(PfeAccordion.events.change, {
+ detail: {
+ expanded: !this.expanded
+ }
+ });
+ }
+ }, {
+ key: "_expandedChanged",
+ value: function _expandedChanged() {
+ this.setAttribute("aria-expanded", this.expanded);
+ this.button.setAttribute("aria-expanded", this.expanded);
+ }
+ }]);
+ return PfeAccordionHeader;
+ }(PFElement);
+
+ var PfeAccordionPanel = function (_PFElement3) {
+ inherits(PfeAccordionPanel, _PFElement3);
+ createClass(PfeAccordionPanel, [{
+ key: "html",
+
+
+ // Injected at build-time
+ get: function get() {
+ return "\n\n
\n
\n \n
\n
";
+ }
+ }, {
+ key: "styleUrl",
+ get: function get() {
+ return "pfe-accordion-panel.scss";
+ }
+ }, {
+ key: "templateUrl",
+ get: function get() {
+ return "pfe-accordion-panel.html";
+ }
+ }], [{
+ key: "version",
+
+
+ // Injected at build-time
+ get: function get() {
+ return "1.3.0";
+ }
+ }, {
+ key: "tag",
+ get: function get() {
+ return "pfe-accordion-panel";
+ }
+ }, {
+ key: "properties",
+ get: function get() {
+ return {
+ _id: {
+ type: String,
+ default: function _default(el) {
+ return "" + el.randomId.replace("pfe", el.tag);
+ },
+ prefix: false
+ },
+ role: {
+ type: String,
+ default: "region",
+ prefix: false
+ },
+ // @TODO Deprecated pfe-id in 1.0
+ oldPfeId: {
+ type: String,
+ alias: "_id",
+ attr: "pfe-id"
+ },
+ expanded: {
+ title: "Expanded",
+ type: Boolean,
+ default: false
+ },
+ ariaLabelledby: {
+ type: String,
+ prefix: false
+ }
+ };
+ }
+ }]);
+
+ function PfeAccordionPanel() {
+ classCallCheck(this, PfeAccordionPanel);
+ return possibleConstructorReturn(this, (PfeAccordionPanel.__proto__ || Object.getPrototypeOf(PfeAccordionPanel)).call(this, PfeAccordionPanel));
+ }
+
+ createClass(PfeAccordionPanel, [{
+ key: "connectedCallback",
+ value: function connectedCallback() {
+ get(PfeAccordionPanel.prototype.__proto__ || Object.getPrototypeOf(PfeAccordionPanel.prototype), "connectedCallback", this).call(this);
+ }
+ }]);
+ return PfeAccordionPanel;
+ }(PFElement);
+
+ PFElement.create(PfeAccordionHeader);
+ PFElement.create(PfeAccordionPanel);
+ PFElement.create(PfeAccordion);
+
+ return PfeAccordion;
+
+})));
+//# sourceMappingURL=pfe-accordion.umd.js.map
diff --git a/elements/pfe-accordion/dist/pfe-accordion.umd.js.map b/elements/pfe-accordion/dist/pfe-accordion.umd.js.map
new file mode 100644
index 0000000000..991359bc13
--- /dev/null
+++ b/elements/pfe-accordion/dist/pfe-accordion.umd.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"pfe-accordion.umd.js","sources":["../_temp/polyfills--pfe-accordion.js","../_temp/pfe-accordion.umd.js"],"sourcesContent":["// @POLYFILL Array.prototype.findIndex\n// https://tc39.github.io/ecma262/#sec-array.prototype.findIndex\nif (!Array.prototype.findIndex) {\n Object.defineProperty(Array.prototype, \"findIndex\", {\n value: function(predicate) {\n // 1. Let O be ? ToObject(this value).\n if (this == null) {\n throw new TypeError('\"this\" is null or not defined');\n }\n\n var o = Object(this);\n\n // 2. Let len be ? ToLength(? Get(O, \"length\")).\n var len = o.length >>> 0;\n\n // 3. If IsCallable(predicate) is false, throw a TypeError exception.\n if (typeof predicate !== \"function\") {\n throw new TypeError(\"predicate must be a function\");\n }\n\n // 4. If thisArg was supplied, let T be thisArg; else let T be undefined.\n var thisArg = arguments[1];\n\n // 5. Let k be 0.\n var k = 0;\n\n // 6. Repeat, while k < len\n while (k < len) {\n // a. Let Pk be ! ToString(k).\n // b. Let kValue be ? Get(O, Pk).\n // c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)).\n // d. If testResult is true, return k.\n var kValue = o[k];\n if (predicate.call(thisArg, kValue, k, o)) {\n return k;\n }\n // e. Increase k by 1.\n k++;\n }\n\n // 7. Return -1.\n return -1;\n }\n });\n}\n","/*!\n * PatternFly Elements: PfeAccordion 1.3.0\n * @license\n * Copyright 2021 Red Hat, Inc.\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n * \n*/\n\n// Import polyfills: findIndex\nimport \"./polyfills--pfe-accordion.js\";\n\nimport PFElement from \"../../pfelement/dist/pfelement\";\n\nclass PfeAccordion extends PFElement {\n\n // Injected at build-time\n static get version() {\n return \"1.3.0\";\n }\n\n // Injected at build-time\n get html() {\n return `\n\n`;\n }\n\n static get tag() {\n return \"pfe-accordion\";\n }\n\n static get meta() {\n return {\n title: \"Accordion\",\n description: \"This element renders content sets in an expandable format.\"\n };\n }\n\n get styleUrl() {\n return \"pfe-accordion.scss\";\n }\n\n get templateUrl() {\n return \"pfe-accordion.html\";\n }\n\n static get properties() {\n return {\n disclosure: {\n // Leaving this as a string since it's an opt out\n title: \"Disclosure\",\n type: String,\n values: [\"true\", \"false\"],\n observer: \"_disclosureChanged\",\n cascade: [\"pfe-accordion-header\", \"pfe-accordion-panel\"]\n },\n // @TODO: Deprecated pfe-disclosure in 1.0\n oldDisclosure: {\n type: String,\n alias: \"disclosure\",\n attr: \"pfe-disclosure\"\n },\n role: {\n type: String,\n default: \"tablist\",\n values: [\"tablist\"]\n }\n };\n }\n\n static get slots() {\n return {\n default: {\n type: \"array\",\n namedSlot: false,\n items: {\n oneOf: [\n {\n $ref: \"pfe-accordion-header\"\n },\n {\n $ref: \"pfe-accordion-panel\"\n }\n ]\n }\n }\n };\n }\n\n static get events() {\n return {\n change: `${this.tag}:change`\n };\n }\n\n // Declare the type of this component\n static get PfeType() {\n return PFElement.PfeTypes.Container;\n }\n\n // Each set contains a header and a panel\n static get contentTemplate() {\n return `\n \n \n `;\n }\n\n constructor() {\n super(PfeAccordion, { type: PfeAccordion.PfeType });\n\n this._linkPanels = this._linkPanels.bind(this);\n this._observer = new MutationObserver(this._linkPanels);\n }\n\n connectedCallback() {\n super.connectedCallback();\n\n this.addEventListener(PfeAccordion.events.change, this._changeHandler);\n this.addEventListener(\"keydown\", this._keydownHandler);\n\n Promise.all([\n customElements.whenDefined(PfeAccordionHeader.tag),\n customElements.whenDefined(PfeAccordionPanel.tag)\n ]).then(() => {\n if (this.hasLightDOM()) {\n this._linkPanels();\n }\n\n this._observer.observe(this, { childList: true });\n });\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n\n this.removeEventListener(PfeAccordion.events.change, this._changeHandler);\n this.removeEventListener(\"keydown\", this._keydownHandler);\n this._observer.disconnect();\n }\n\n toggle(index) {\n const headers = this._allHeaders();\n const panels = this._allPanels();\n const header = headers[index];\n const panel = panels[index];\n\n if (!header || !panel) {\n return;\n }\n\n if (!header.expanded) {\n this._expandHeader(header);\n this._expandPanel(panel);\n } else {\n this._collapseHeader(header);\n this._collapsePanel(panel);\n }\n }\n\n expand(index) {\n const headers = this._allHeaders();\n const panels = this._allPanels();\n const header = headers[index];\n const panel = panels[index];\n\n if (!header || !panel) {\n return;\n }\n\n this._expandHeader(header);\n this._expandPanel(panel);\n }\n\n expandAll() {\n const headers = this._allHeaders();\n const panels = this._allPanels();\n\n headers.forEach(header => this._expandHeader(header));\n panels.forEach(panel => this._expandPanel(panel));\n }\n\n collapse(index) {\n const headers = this._allHeaders();\n const panels = this._allPanels();\n const header = headers[index];\n const panel = panels[index];\n\n if (!header || !panel) {\n return;\n }\n\n this._collapseHeader(header);\n this._collapsePanel(panel);\n }\n\n collapseAll() {\n const headers = this._allHeaders();\n const panels = this._allPanels();\n\n headers.forEach(header => this._collapseHeader(header));\n panels.forEach(panel => this._collapsePanel(panel));\n }\n\n _disclosureChanged(oldVal, newVal) {\n if (newVal === \"true\") {\n this._allHeaders().forEach(header => header.setAttribute(\"pfe-disclosure\", \"true\"));\n this._allPanels().forEach(panel => panel.setAttribute(\"pfe-disclosure\", \"true\"));\n\n // @TODO Deprecated in 1.0\n this.oldDisclosure = \"true\";\n } else {\n this._allHeaders().forEach(header => header.setAttribute(\"pfe-disclosure\", \"false\"));\n this._allPanels().forEach(panel => panel.setAttribute(\"pfe-disclosure\", \"false\"));\n\n // @TODO Deprecated in 1.0\n this.oldDisclosure = \"false\";\n }\n }\n\n _linkPanels() {\n const headers = this._allHeaders();\n headers.forEach(header => {\n const panel = this._panelForHeader(header);\n\n if (!panel) {\n return;\n }\n\n header.ariaControls = panel._id;\n panel.ariaLabelledby = header._id;\n });\n\n if (headers.length === 1) {\n if (this.disclosure === \"false\") {\n return;\n }\n\n this.disclosure = \"true\";\n }\n\n if (headers.length > 1) {\n if (this.disclosure) {\n this.disclosure = \"false\";\n }\n }\n }\n\n _changeHandler(evt) {\n if (this.classList.contains(\"animating\")) {\n return;\n }\n\n const header = evt.target;\n const panel = evt.target.nextElementSibling;\n\n if (evt.detail.expanded) {\n this._expandHeader(header);\n this._expandPanel(panel);\n } else {\n this._collapseHeader(header);\n this._collapsePanel(panel);\n }\n }\n\n _expandHeader(header) {\n header.expanded = true;\n }\n\n _expandPanel(panel) {\n if (!panel) {\n console.error(`${PfeAccordion.tag}: Trying to expand a panel that doesn't exist`);\n return;\n }\n\n if (panel.expanded) {\n return;\n }\n\n panel.expanded = true;\n\n const height = panel.getBoundingClientRect().height;\n this._animate(panel, 0, height);\n }\n\n _collapseHeader(header) {\n header.expanded = false;\n }\n\n _collapsePanel(panel) {\n if (!panel) {\n console.error(`${PfeAccordion.tag}: Trying to collapse a panel that doesn't exist`);\n return;\n }\n\n if (!panel.expanded) {\n return;\n }\n\n const height = panel.getBoundingClientRect().height;\n panel.expanded = false;\n\n this._animate(panel, height, 0);\n }\n\n _animate(panel, start, end) {\n if (panel) {\n const header = panel.previousElementSibling;\n if (header) {\n header.classList.add(\"animating\");\n }\n panel.classList.add(\"animating\");\n panel.style.height = `${start}px`;\n\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n panel.style.height = `${end}px`;\n panel.addEventListener(\"transitionend\", this._transitionEndHandler);\n });\n });\n }\n }\n\n _keydownHandler(evt) {\n const currentHeader = evt.target;\n\n if (!this._isHeader(currentHeader)) {\n return;\n }\n\n let newHeader;\n\n switch (evt.key) {\n case \"ArrowDown\":\n case \"Down\":\n case \"ArrowRight\":\n case \"Right\":\n newHeader = this._nextHeader();\n break;\n case \"ArrowUp\":\n case \"Up\":\n case \"ArrowLeft\":\n case \"Left\":\n newHeader = this._previousHeader();\n break;\n case \"Home\":\n newHeader = this._firstHeader();\n break;\n case \"End\":\n newHeader = this._lastHeader();\n break;\n default:\n return;\n }\n\n newHeader.shadowRoot.querySelector(\"button\").focus();\n }\n\n _transitionEndHandler(evt) {\n const header = evt.target.previousElementSibling;\n if (header) {\n header.classList.remove(\"animating\");\n }\n evt.target.style.height = \"\";\n evt.target.classList.remove(\"animating\");\n evt.target.removeEventListener(\"transitionend\", this._transitionEndHandler);\n }\n\n _allHeaders() {\n return [...this.querySelectorAll(PfeAccordionHeader.tag)];\n }\n\n _allPanels() {\n return [...this.querySelectorAll(PfeAccordionPanel.tag)];\n }\n\n _panelForHeader(header) {\n const next = header.nextElementSibling;\n\n if (!next) {\n return;\n }\n\n if (next.tagName.toLowerCase() !== PfeAccordionPanel.tag) {\n console.error(`${PfeAccordion.tag}: Sibling element to a header needs to be a panel`);\n return;\n }\n\n return next;\n }\n\n _previousHeader() {\n const headers = this._allHeaders();\n let newIndex = headers.findIndex(header => header === document.activeElement) - 1;\n return headers[(newIndex + headers.length) % headers.length];\n }\n\n _nextHeader() {\n const headers = this._allHeaders();\n let newIndex = headers.findIndex(header => header === document.activeElement) + 1;\n return headers[newIndex % headers.length];\n }\n\n _firstHeader() {\n const headers = this._allHeaders();\n return headers[0];\n }\n\n _lastHeader() {\n const headers = this._allHeaders();\n return headers[headers.length - 1];\n }\n\n _isHeader(element) {\n return element.tagName.toLowerCase() === PfeAccordionHeader.tag;\n }\n}\n\nclass PfeAccordionHeader extends PFElement {\n\n // Injected at build-time\n static get version() {\n return \"1.3.0\";\n }\n\n // Injected at build-time\n get html() {\n return `\n\n`;\n }\n\n static get tag() {\n return \"pfe-accordion-header\";\n }\n\n get styleUrl() {\n return \"pfe-accordion-header.scss\";\n }\n\n get templateUrl() {\n return \"pfe-accordion-header.html\";\n }\n\n static get properties() {\n return {\n _id: {\n type: String,\n default: el => `${el.randomId.replace(\"pfe\", el.tag)}`,\n prefix: false\n },\n role: {\n type: String,\n default: \"heading\",\n prefix: false\n },\n ariaControls: {\n type: String,\n prefix: false\n },\n // @TODO Deprecated pfe-id in 1.0\n oldPfeId: {\n type: String,\n alias: \"_id\",\n attr: \"pfe-id\"\n },\n expanded: {\n title: \"Expanded\",\n type: Boolean,\n observer: \"_expandedChanged\",\n cascade: \"#pfe-accordion-header--button\",\n observer: \"_expandedChanged\"\n }\n };\n }\n\n constructor() {\n super(PfeAccordionHeader);\n\n this.button = this.shadowRoot.querySelector(\"button\");\n\n this._init = this._init.bind(this);\n this._clickHandler = this._clickHandler.bind(this);\n this._observer = new MutationObserver(this._init);\n }\n\n connectedCallback() {\n super.connectedCallback();\n\n if (this.hasLightDOM()) this._init();\n\n this.addEventListener(\"click\", this._clickHandler);\n this._observer.observe(this, { childList: true });\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n\n this.removeEventListener(\"click\", this._clickHandler);\n this._observer.disconnect();\n }\n\n _init() {\n if (window.ShadyCSS) {\n this._observer.disconnect();\n }\n\n const child = this.children[0];\n let isHeaderTag = false;\n\n if (child) {\n switch (child.tagName) {\n case \"H1\":\n case \"H2\":\n case \"H3\":\n case \"H4\":\n case \"H5\":\n case \"H6\":\n isHeaderTag = true;\n break;\n }\n\n const wrapperTag = document.createElement(child.tagName);\n this.button.innerText = child.innerText;\n\n wrapperTag.appendChild(this.button);\n this.shadowRoot.appendChild(wrapperTag);\n } else {\n this.button.innerText = this.textContent.trim();\n }\n\n if (!isHeaderTag) {\n this.warn(`The first child in the light DOM must be a Header level tag (h1, h2, h3, h4, h5, or h6)`);\n }\n\n if (window.ShadyCSS) {\n this._observer.observe(this, { childList: true });\n }\n }\n\n _clickHandler(event) {\n this.emitEvent(PfeAccordion.events.change, {\n detail: {\n expanded: !this.expanded\n }\n });\n }\n\n _expandedChanged() {\n this.setAttribute(\"aria-expanded\", this.expanded);\n this.button.setAttribute(\"aria-expanded\", this.expanded);\n }\n}\n\nclass PfeAccordionPanel extends PFElement {\n\n // Injected at build-time\n static get version() {\n return \"1.3.0\";\n }\n\n // Injected at build-time\n get html() {\n return `\n\n
\n
\n \n
\n
`;\n }\n\n static get tag() {\n return \"pfe-accordion-panel\";\n }\n\n get styleUrl() {\n return \"pfe-accordion-panel.scss\";\n }\n\n get templateUrl() {\n return \"pfe-accordion-panel.html\";\n }\n\n static get properties() {\n return {\n _id: {\n type: String,\n default: el => `${el.randomId.replace(\"pfe\", el.tag)}`,\n prefix: false\n },\n role: {\n type: String,\n default: \"region\",\n prefix: false\n },\n // @TODO Deprecated pfe-id in 1.0\n oldPfeId: {\n type: String,\n alias: \"_id\",\n attr: \"pfe-id\"\n },\n expanded: {\n title: \"Expanded\",\n type: Boolean,\n default: false\n },\n ariaLabelledby: {\n type: String,\n prefix: false\n }\n };\n }\n\n constructor() {\n super(PfeAccordionPanel);\n }\n\n connectedCallback() {\n super.connectedCallback();\n }\n}\n\nPFElement.create(PfeAccordionHeader);\nPFElement.create(PfeAccordionPanel);\nPFElement.create(PfeAccordion);\n\nexport { PfeAccordion as default };\n"],"names":["Array","prototype","findIndex","Object","defineProperty","value","predicate","TypeError","o","len","length","thisArg","arguments","k","kValue","call","PfeAccordion","title","description","disclosure","type","String","values","observer","cascade","oldDisclosure","alias","attr","role","default","namedSlot","items","oneOf","$ref","change","tag","PFElement","PfeTypes","Container","PfeType","_linkPanels","bind","_observer","MutationObserver","addEventListener","events","_changeHandler","_keydownHandler","Promise","all","customElements","whenDefined","PfeAccordionHeader","PfeAccordionPanel","then","hasLightDOM","observe","childList","removeEventListener","disconnect","index","headers","_allHeaders","panels","_allPanels","header","panel","expanded","_expandHeader","_expandPanel","_collapseHeader","_collapsePanel","forEach","oldVal","newVal","setAttribute","_panelForHeader","ariaControls","_id","ariaLabelledby","evt","classList","contains","target","nextElementSibling","detail","console","error","height","getBoundingClientRect","_animate","start","end","previousElementSibling","add","style","requestAnimationFrame","_transitionEndHandler","currentHeader","_isHeader","newHeader","key","_nextHeader","_previousHeader","_firstHeader","_lastHeader","shadowRoot","querySelector","focus","remove","querySelectorAll","next","tagName","toLowerCase","newIndex","document","activeElement","element","el","randomId","replace","prefix","oldPfeId","Boolean","button","_init","_clickHandler","window","ShadyCSS","child","children","isHeaderTag","wrapperTag","createElement","innerText","appendChild","textContent","trim","warn","event","emitEvent","create"],"mappings":"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"}
\ No newline at end of file
diff --git a/elements/pfe-accordion/dist/pfe-accordion.umd.min.js b/elements/pfe-accordion/dist/pfe-accordion.umd.min.js
new file mode 100644
index 0000000000..ecacbfe83c
--- /dev/null
+++ b/elements/pfe-accordion/dist/pfe-accordion.umd.min.js
@@ -0,0 +1,2 @@
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("../../pfelement/dist/pfelement.umd.min")):"function"==typeof define&&define.amd?define(["../../pfelement/dist/pfelement.umd.min"],t):(e=e||self).PfeAccordion=t(e.PFElement)}(this,function(e){"use strict";e=e&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e,Array.prototype.findIndex||Object.defineProperty(Array.prototype,"findIndex",{value:function(e){if(null==this)throw new TypeError('"this" is null or not defined');var t=Object(this),r=t.length>>>0;if("function"!=typeof e)throw new TypeError("predicate must be a function");for(var o=arguments[1],a=0;a:host{--pfe-accordion--BorderColor--accent:transparent;--pfe-accordion--BorderColor:var(--pfe-theme--color--surface--border, #d2d2d2);--pfe-accordion--BorderTopWidth:var(--pfe-theme--surface--border-width, 1px);--pfe-accordion--BorderRightWidth:0;--pfe-accordion--BorderBottomWidth:var(--pfe-theme--surface--border-width, 1px);--pfe-accordion--BorderLeftWidth:var(--pfe-theme--surface--border-width--heavy, 4px);--pfe-accordion--Color:var(--pfe-broadcasted--text, #3c3f42);--pfe-accordion--TextAlign:left;--pfe-accordion--accent:var(--pfe-theme--color--ui-accent, #06c);--pfe-accordion__base--Padding:var(--pfe-theme--container-spacer, 1rem);display:block;position:relative;overflow:hidden;margin:0;color:#3c3f42;color:var(--pfe-accordion--Color,var(--pfe-broadcasted--text,#3c3f42))}@media screen and (-ms-high-contrast:active),screen and (-ms-high-contrast:none){:host{background-color:#fff!important;color:#151515!important}}:host([on=dark]){--pfe-accordion--accent:var(--pfe-theme--color--ui-accent--on-dark, #73bcf7)}:host([on=saturated]){--pfe-accordion--accent:var(--pfe-theme--color--ui-accent--on-saturated, #fff)}:host([disclosure=true]){--pfe-accordion--BorderRightWidth:var(--pfe-theme--surface--border-width, 1px);--pfe-accordion--BorderLeftWidth:var(--pfe-theme--surface--border-width, 1px);--pfe-accordion--BorderColor--accent:var(--pfe-theme--color--surface--border, #d2d2d2)}:host([hidden]){display:none} /*# sourceMappingURL=pfe-accordion.min.css.map */\n"}},{key:"styleUrl",get:function(){return"pfe-accordion.scss"}},{key:"templateUrl",get:function(){return"pfe-accordion.html"}}],[{key:"version",get:function(){return"1.3.0"}},{key:"tag",get:function(){return"pfe-accordion"}},{key:"meta",get:function(){return{title:"Accordion",description:"This element renders content sets in an expandable format."}}},{key:"properties",get:function(){return{disclosure:{title:"Disclosure",type:String,values:["true","false"],observer:"_disclosureChanged",cascade:["pfe-accordion-header","pfe-accordion-panel"]},oldDisclosure:{type:String,alias:"disclosure",attr:"pfe-disclosure"},role:{type:String,default:"tablist",values:["tablist"]}}}},{key:"slots",get:function(){return{default:{type:"array",namedSlot:!1,items:{oneOf:[{$ref:"pfe-accordion-header"},{$ref:"pfe-accordion-panel"}]}}}}},{key:"events",get:function(){return{change:this.tag+":change"}}},{key:"PfeType",get:function(){return e.PfeTypes.Container}},{key:"contentTemplate",get:function(){return'\n \n \n '}}]),r(s,[{key:"connectedCallback",value:function(){var e=this;a(s.prototype.__proto__||Object.getPrototypeOf(s.prototype),"connectedCallback",this).call(this),this.addEventListener(s.events.change,this._changeHandler),this.addEventListener("keydown",this._keydownHandler),Promise.all([customElements.whenDefined(l.tag),customElements.whenDefined(f.tag)]).then(function(){e.hasLightDOM()&&e._linkPanels(),e._observer.observe(e,{childList:!0})})}},{key:"disconnectedCallback",value:function(){a(s.prototype.__proto__||Object.getPrototypeOf(s.prototype),"disconnectedCallback",this).call(this),this.removeEventListener(s.events.change,this._changeHandler),this.removeEventListener("keydown",this._keydownHandler),this._observer.disconnect()}},{key:"toggle",value:function(e){var t=this._allHeaders(),r=this._allPanels(),t=t[e],e=r[e];t&&e&&(t.expanded?(this._collapseHeader(t),this._collapsePanel(e)):(this._expandHeader(t),this._expandPanel(e)))}},{key:"expand",value:function(e){var t=this._allHeaders(),r=this._allPanels(),t=t[e],e=r[e];t&&e&&(this._expandHeader(t),this._expandPanel(e))}},{key:"expandAll",value:function(){var t=this,e=this._allHeaders(),r=this._allPanels();e.forEach(function(e){return t._expandHeader(e)}),r.forEach(function(e){return t._expandPanel(e)})}},{key:"collapse",value:function(e){var t=this._allHeaders(),r=this._allPanels(),t=t[e],e=r[e];t&&e&&(this._collapseHeader(t),this._collapsePanel(e))}},{key:"collapseAll",value:function(){var t=this,e=this._allHeaders(),r=this._allPanels();e.forEach(function(e){return t._collapseHeader(e)}),r.forEach(function(e){return t._collapsePanel(e)})}},{key:"_disclosureChanged",value:function(e,t){"true"===t?(this._allHeaders().forEach(function(e){return e.setAttribute("pfe-disclosure","true")}),this._allPanels().forEach(function(e){return e.setAttribute("pfe-disclosure","true")}),this.oldDisclosure="true"):(this._allHeaders().forEach(function(e){return e.setAttribute("pfe-disclosure","false")}),this._allPanels().forEach(function(e){return e.setAttribute("pfe-disclosure","false")}),this.oldDisclosure="false")}},{key:"_linkPanels",value:function(){var r=this,e=this._allHeaders();if(e.forEach(function(e){var t=r._panelForHeader(e);t&&(e.ariaControls=t._id,t.ariaLabelledby=e._id)}),1===e.length){if("false"===this.disclosure)return;this.disclosure="true"}1:host{-webkit-transition:-webkit-transform .3s cubic-bezier(.465,.183,.153,.946);transition:-webkit-transform .3s cubic-bezier(.465,.183,.153,.946);transition:transform .3s cubic-bezier(.465,.183,.153,.946);transition:transform .3s cubic-bezier(.465,.183,.153,.946),-webkit-transform .3s cubic-bezier(.465,.183,.153,.946);-webkit-transition:-webkit-transform .3s var(--pfe-theme--animation-timing,cubic-bezier(.465,.183,.153,.946));transition:-webkit-transform .3s var(--pfe-theme--animation-timing,cubic-bezier(.465,.183,.153,.946));transition:transform .3s var(--pfe-theme--animation-timing,cubic-bezier(.465,.183,.153,.946));transition:transform .3s var(--pfe-theme--animation-timing,cubic-bezier(.465,.183,.153,.946)),-webkit-transform .3s var(--pfe-theme--animation-timing,cubic-bezier(.465,.183,.153,.946));display:block}:host([hidden]){display:none}:host>*{margin:0}:host button{--pfe-accordion--BorderBottomWidth:0;--pfe-accordion--ZIndex:3;--pfe-accordion__trigger--Padding:var(--pfe-accordion__base--Padding, var(--pfe-theme--container-spacer, 1rem)) 50px var(--pfe-accordion__base--Padding, var(--pfe-theme--container-spacer, 1rem)) calc(var(--pfe-accordion__base--Padding, var(--pfe-theme--container-spacer, 1rem)) * 1.5);margin:0;width:100%;width:var(--pfe-accordion--Width,100%);max-width:calc(100% - 4px);max-width:calc(100% - var(--pfe-theme--surface--border-width--heavy,4px));height:auto;position:relative;background-color:transparent;background-color:var(--pfe-accordion--BackgroundColor,transparent);color:#3c3f42;color:var(--pfe-accordion--Color,var(--pfe-broadcasted--text,#3c3f42));border-width:0;border-style:solid;border-style:var(--pfe-theme--surface--border-style,solid);border-color:#d2d2d2;border-color:var(--pfe-accordion--BorderColor,var(--pfe-theme--color--surface--border,#d2d2d2));border-top-width:1px;border-top-width:var(--pfe-accordion--BorderTopWidth,var(--pfe-theme--surface--border-width,1px));border-right-width:0;border-right-width:var(--pfe-accordion--BorderRightWidth,0);border-bottom-width:1px;border-bottom-width:var(--pfe-accordion--BorderBottomWidth,var(--pfe-theme--surface--border-width,1px));border-left-width:4px;border-left-width:var(--pfe-accordion--BorderLeftWidth,var(--pfe-theme--surface--border-width--heavy,4px));border-left-color:transparent;border-left-color:var(--pfe-accordion--BorderColor--accent,transparent);-webkit-box-shadow:var(--pfe-accordion--BoxShadow);box-shadow:var(--pfe-accordion--BoxShadow);z-index:var(--pfe-accordion--ZIndex);cursor:pointer;font-family:inherit;font-size:calc(1rem * 1.1);font-size:var(--pfe-accordion--FontSize--header,calc(var(--pfe-theme--font-size,1rem) * 1.1));font-weight:700;font-weight:var(--pfe-theme--font-weight--bold,700);text-align:left;text-align:var(--pfe-accordion--TextAlign,left);line-height:1.5;line-height:var(--pfe-theme--line-height,1.5);padding:var(--pfe-accordion__trigger--Padding)}@media screen and (-ms-high-contrast:active),screen and (-ms-high-contrast:none){:host button{border-top-width:1px;border-right-width:0;border-bottom-width:1px;border-left-width:4px}}:host button:focus,:host button:hover{--pfe-accordion--BorderColor--accent:var(--pfe-accordion--accent, var(--pfe-theme--color--ui-accent, #06c))}@media screen and (-ms-high-contrast:active),screen and (-ms-high-contrast:none){:host button:focus,:host button:hover{border-left-color:#06c}}:host button:hover{outline:0;border-left-width:4px;border-left-width:var(--pfe-theme--surface--border-width--heavy,4px)}:host button:focus{outline:0;text-decoration:underline}:host button::-moz-focus-inner{border:0}@supports (-ms-ime-align:auto){:host button{text-align:left}}@media screen and (-ms-high-contrast:active),screen and (-ms-high-contrast:none){:host button{padding:16px 24px}:host button:hover{border-left-color:#06c}}:host button[aria-expanded=true]{--pfe-accordion--BorderColor:var(--pfe-theme--color--surface--border, #d2d2d2);--pfe-accordion--BorderRightWidth:var(--pfe-theme--surface--border-width, 1px);--pfe-accordion--BorderLeftWidth:var(--pfe-theme--surface--border-width--heavy, 4px);--pfe-accordion--BackgroundColor:white;--pfe-accordion--Color:var(--pfe-theme--color--text, #151515);--pfe-accordion--BorderColor--accent:var(--pfe-accordion--accent, var(--pfe-theme--color--ui-accent, #06c));--pfe-accordion--BoxShadow:0 5px var(--pfe-theme--surface--border-width--heavy, 4px) rgba(140, 140, 140, 0.35);--pfe-accordion--ZIndex:3}@media screen and (-ms-high-contrast:active),screen and (-ms-high-contrast:none){:host button[aria-expanded=true]{border-bottom-width:0;border-left-color:#06c;border-right-color:#d2d2d2}}:host(:not([disclosure=true])) button::after{content:"";position:absolute;top:calc(1rem + .4em);top:calc(var(--pfe-theme--container-spacer,1rem) + .4em);display:block;border-style:solid;border-style:var(--pfe-theme--surface--border-style,solid);height:.4em;width:.4em;-webkit-transition:-webkit-transform .15s;transition:-webkit-transform .15s;transition:transform .15s;transition:transform .15s,-webkit-transform .15s;border-width:0 .1em .1em 0;-webkit-transform:rotate(45deg);transform:rotate(45deg);right:calc(1rem * 1.3125);right:calc(var(--pfe-theme--container-spacer,1rem) * 1.3125)}:host(:not([disclosure=true])) button[aria-expanded=true]::after{-webkit-transform:rotate(-135deg);transform:rotate(-135deg)}:host(:last-of-type) button:not([aria-expanded=true]){--pfe-accordion--BorderBottomWidth:var(--pfe-theme--surface--border-width, 1px)}:host(:last-of-type.animating) button{--pfe-accordion--BorderBottomWidth:0}:host([on=dark]) button[aria-expanded=true]{--pfe-accordion--BackgroundColor:rgba(247, 247, 249, 0.1);--pfe-accordion--Color:var(--pfe-broadcasted--text, #3c3f42);--pfe-accordion--BorderColor--accent:var(--pfe-theme--color--ui-accent--on-dark, #73bcf7);--pfe-accordion--BoxShadow:none}:host([on=saturated]) button[aria-expanded=true]{--pfe-accordion--BackgroundColor:rgba(0, 0, 0, 0.2);--pfe-accordion--Color:var(--pfe-broadcasted--text, #3c3f42);--pfe-accordion--BorderColor--accent:var(--pfe-theme--color--ui-accent--on-saturated, #fff);--pfe-accordion--BoxShadow:none}:host([disclosure=true]) button{padding-left:calc(1rem * 3);padding-left:calc(var(--pfe-accordion__base--Padding,var(--pfe-theme--container-spacer,1rem)) * 3)}@media screen and (-ms-high-contrast:active),screen and (-ms-high-contrast:none){:host([disclosure=true]) button{padding:16px 24px 16px 47px;border-right-color:#d2d2d2;border-left-color:#d2d2d2;border-left-width:1px}}:host([disclosure=true]) button::before{content:"";position:absolute;top:calc(1rem + .55em);top:calc(var(--pfe-theme--container-spacer,1rem) + .55em);display:block;border-style:solid;border-style:var(--pfe-theme--surface--border-style,solid);height:.4em;width:.4em;-webkit-transition:-webkit-transform .15s;transition:-webkit-transform .15s;transition:transform .15s;transition:transform .15s,-webkit-transform .15s;border-width:0 .1em .1em 0;-webkit-transform:rotate(45deg);transform:rotate(45deg);left:calc(1rem * 1.3125);left:calc(var(--pfe-theme--container-spacer,1rem) * 1.3125);-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}:host([disclosure=true]) button[aria-expanded=true]::before{-webkit-transform:rotate(45deg);transform:rotate(45deg)}:host([disclosure=true]) button:not([aria-expanded=true]):hover,:host([disclosure=true]) button[aria-expanded=true]{padding-left:calc(1rem * 3 - 4px + 1px);padding-left:calc(var(--pfe-accordion__base--Padding,var(--pfe-theme--container-spacer,1rem)) * 3 - var(--pfe-theme--surface--border-width--heavy,4px) + var(--pfe-theme--surface--border-width,1px))}:host([disclosure=true]) button:not([aria-expanded=true]):hover::before,:host([disclosure=true]) button[aria-expanded=true]::before{margin-left:calc((4px - 1px) * -1);margin-left:calc((var(--pfe-theme--surface--border-width--heavy,4px) - var(--pfe-theme--surface--border-width,1px)) * -1)} /*# sourceMappingURL=pfe-accordion-header.min.css.map */\n'}},{key:"styleUrl",get:function(){return"pfe-accordion-header.scss"}},{key:"templateUrl",get:function(){return"pfe-accordion-header.html"}}],[{key:"version",get:function(){return"1.3.0"}},{key:"tag",get:function(){return"pfe-accordion-header"}},{key:"properties",get:function(){return{_id:{type:String,default:function(e){return""+e.randomId.replace("pfe",e.tag)},prefix:!1},role:{type:String,default:"heading",prefix:!1},ariaControls:{type:String,prefix:!1},oldPfeId:{type:String,alias:"_id",attr:"pfe-id"},expanded:(e={title:"Expanded",type:Boolean,observer:"_expandedChanged",cascade:"#pfe-accordion-header--button"},r="_expandedChanged",(t="observer")in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e)};var e,t,r}}]),r(p,[{key:"connectedCallback",value:function(){a(p.prototype.__proto__||Object.getPrototypeOf(p.prototype),"connectedCallback",this).call(this),this.hasLightDOM()&&this._init(),this.addEventListener("click",this._clickHandler),this._observer.observe(this,{childList:!0})}},{key:"disconnectedCallback",value:function(){a(p.prototype.__proto__||Object.getPrototypeOf(p.prototype),"disconnectedCallback",this).call(this),this.removeEventListener("click",this._clickHandler),this._observer.disconnect()}},{key:"_init",value:function(){window.ShadyCSS&&this._observer.disconnect();var e=this.children[0],t=!1;if(e){switch(e.tagName){case"H1":case"H2":case"H3":case"H4":case"H5":case"H6":t=!0}var r=document.createElement(e.tagName);this.button.innerText=e.innerText,r.appendChild(this.button),this.shadowRoot.appendChild(r)}else this.button.innerText=this.textContent.trim();t||this.warn("The first child in the light DOM must be a Header level tag (h1, h2, h3, h4, h5, or h6)"),window.ShadyCSS&&this._observer.observe(this,{childList:!0})}},{key:"_clickHandler",value:function(e){this.emitEvent(d.events.change,{detail:{expanded:!this.expanded}})}},{key:"_expandedChanged",value:function(){this.setAttribute("aria-expanded",this.expanded),this.button.setAttribute("aria-expanded",this.expanded)}}]),p);function p(){t(this,p);var e=c(this,(p.__proto__||Object.getPrototypeOf(p)).call(this,p));return e.button=e.shadowRoot.querySelector("button"),e._init=e._init.bind(e),e._clickHandler=e._clickHandler.bind(e),e._observer=new MutationObserver(e._init),e}var f=(n(h,e),r(h,[{key:"html",get:function(){return'\n\n
\n
\n \n
\n
'}},{key:"styleUrl",get:function(){return"pfe-accordion-panel.scss"}},{key:"templateUrl",get:function(){return"pfe-accordion-panel.html"}}],[{key:"version",get:function(){return"1.3.0"}},{key:"tag",get:function(){return"pfe-accordion-panel"}},{key:"properties",get:function(){return{_id:{type:String,default:function(e){return""+e.randomId.replace("pfe",e.tag)},prefix:!1},role:{type:String,default:"region",prefix:!1},oldPfeId:{type:String,alias:"_id",attr:"pfe-id"},expanded:{title:"Expanded",type:Boolean,default:!1},ariaLabelledby:{type:String,prefix:!1}}}}]),r(h,[{key:"connectedCallback",value:function(){a(h.prototype.__proto__||Object.getPrototypeOf(h.prototype),"connectedCallback",this).call(this)}}]),h);function h(){return t(this,h),c(this,(h.__proto__||Object.getPrototypeOf(h)).call(this,h))}return e.create(l),e.create(f),e.create(d),d});
+//# sourceMappingURL=pfe-accordion.umd.min.js.map
diff --git a/elements/pfe-accordion/dist/pfe-accordion.umd.min.js.map b/elements/pfe-accordion/dist/pfe-accordion.umd.min.js.map
new file mode 100644
index 0000000000..5eb15472e0
--- /dev/null
+++ b/elements/pfe-accordion/dist/pfe-accordion.umd.min.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"pfe-accordion.umd.min.js","sources":["../_temp/polyfills--pfe-accordion.js","../_temp/pfe-accordion.umd.js"],"sourcesContent":["// @POLYFILL Array.prototype.findIndex\n// https://tc39.github.io/ecma262/#sec-array.prototype.findIndex\nif (!Array.prototype.findIndex) {\n Object.defineProperty(Array.prototype, \"findIndex\", {\n value: function(predicate) {\n // 1. Let O be ? ToObject(this value).\n if (this == null) {\n throw new TypeError('\"this\" is null or not defined');\n }\n\n var o = Object(this);\n\n // 2. Let len be ? ToLength(? Get(O, \"length\")).\n var len = o.length >>> 0;\n\n // 3. If IsCallable(predicate) is false, throw a TypeError exception.\n if (typeof predicate !== \"function\") {\n throw new TypeError(\"predicate must be a function\");\n }\n\n // 4. If thisArg was supplied, let T be thisArg; else let T be undefined.\n var thisArg = arguments[1];\n\n // 5. Let k be 0.\n var k = 0;\n\n // 6. Repeat, while k < len\n while (k < len) {\n // a. Let Pk be ! ToString(k).\n // b. Let kValue be ? Get(O, Pk).\n // c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)).\n // d. If testResult is true, return k.\n var kValue = o[k];\n if (predicate.call(thisArg, kValue, k, o)) {\n return k;\n }\n // e. Increase k by 1.\n k++;\n }\n\n // 7. Return -1.\n return -1;\n }\n });\n}\n","/*!\n * PatternFly Elements: PfeAccordion 1.3.0\n * @license\n * Copyright 2021 Red Hat, Inc.\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n * \n*/\n\n// Import polyfills: findIndex\nimport \"./polyfills--pfe-accordion.js\";\n\nimport PFElement from \"../../pfelement/dist/pfelement\";\n\nclass PfeAccordion extends PFElement {\n\n // Injected at build-time\n static get version() {\n return \"1.3.0\";\n }\n\n // Injected at build-time\n get html() {\n return `\n\n`;\n }\n\n static get tag() {\n return \"pfe-accordion\";\n }\n\n static get meta() {\n return {\n title: \"Accordion\",\n description: \"This element renders content sets in an expandable format.\"\n };\n }\n\n get styleUrl() {\n return \"pfe-accordion.scss\";\n }\n\n get templateUrl() {\n return \"pfe-accordion.html\";\n }\n\n static get properties() {\n return {\n disclosure: {\n // Leaving this as a string since it's an opt out\n title: \"Disclosure\",\n type: String,\n values: [\"true\", \"false\"],\n observer: \"_disclosureChanged\",\n cascade: [\"pfe-accordion-header\", \"pfe-accordion-panel\"]\n },\n // @TODO: Deprecated pfe-disclosure in 1.0\n oldDisclosure: {\n type: String,\n alias: \"disclosure\",\n attr: \"pfe-disclosure\"\n },\n role: {\n type: String,\n default: \"tablist\",\n values: [\"tablist\"]\n }\n };\n }\n\n static get slots() {\n return {\n default: {\n type: \"array\",\n namedSlot: false,\n items: {\n oneOf: [\n {\n $ref: \"pfe-accordion-header\"\n },\n {\n $ref: \"pfe-accordion-panel\"\n }\n ]\n }\n }\n };\n }\n\n static get events() {\n return {\n change: `${this.tag}:change`\n };\n }\n\n // Declare the type of this component\n static get PfeType() {\n return PFElement.PfeTypes.Container;\n }\n\n // Each set contains a header and a panel\n static get contentTemplate() {\n return `\n \n \n `;\n }\n\n constructor() {\n super(PfeAccordion, { type: PfeAccordion.PfeType });\n\n this._linkPanels = this._linkPanels.bind(this);\n this._observer = new MutationObserver(this._linkPanels);\n }\n\n connectedCallback() {\n super.connectedCallback();\n\n this.addEventListener(PfeAccordion.events.change, this._changeHandler);\n this.addEventListener(\"keydown\", this._keydownHandler);\n\n Promise.all([\n customElements.whenDefined(PfeAccordionHeader.tag),\n customElements.whenDefined(PfeAccordionPanel.tag)\n ]).then(() => {\n if (this.hasLightDOM()) {\n this._linkPanels();\n }\n\n this._observer.observe(this, { childList: true });\n });\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n\n this.removeEventListener(PfeAccordion.events.change, this._changeHandler);\n this.removeEventListener(\"keydown\", this._keydownHandler);\n this._observer.disconnect();\n }\n\n toggle(index) {\n const headers = this._allHeaders();\n const panels = this._allPanels();\n const header = headers[index];\n const panel = panels[index];\n\n if (!header || !panel) {\n return;\n }\n\n if (!header.expanded) {\n this._expandHeader(header);\n this._expandPanel(panel);\n } else {\n this._collapseHeader(header);\n this._collapsePanel(panel);\n }\n }\n\n expand(index) {\n const headers = this._allHeaders();\n const panels = this._allPanels();\n const header = headers[index];\n const panel = panels[index];\n\n if (!header || !panel) {\n return;\n }\n\n this._expandHeader(header);\n this._expandPanel(panel);\n }\n\n expandAll() {\n const headers = this._allHeaders();\n const panels = this._allPanels();\n\n headers.forEach(header => this._expandHeader(header));\n panels.forEach(panel => this._expandPanel(panel));\n }\n\n collapse(index) {\n const headers = this._allHeaders();\n const panels = this._allPanels();\n const header = headers[index];\n const panel = panels[index];\n\n if (!header || !panel) {\n return;\n }\n\n this._collapseHeader(header);\n this._collapsePanel(panel);\n }\n\n collapseAll() {\n const headers = this._allHeaders();\n const panels = this._allPanels();\n\n headers.forEach(header => this._collapseHeader(header));\n panels.forEach(panel => this._collapsePanel(panel));\n }\n\n _disclosureChanged(oldVal, newVal) {\n if (newVal === \"true\") {\n this._allHeaders().forEach(header => header.setAttribute(\"pfe-disclosure\", \"true\"));\n this._allPanels().forEach(panel => panel.setAttribute(\"pfe-disclosure\", \"true\"));\n\n // @TODO Deprecated in 1.0\n this.oldDisclosure = \"true\";\n } else {\n this._allHeaders().forEach(header => header.setAttribute(\"pfe-disclosure\", \"false\"));\n this._allPanels().forEach(panel => panel.setAttribute(\"pfe-disclosure\", \"false\"));\n\n // @TODO Deprecated in 1.0\n this.oldDisclosure = \"false\";\n }\n }\n\n _linkPanels() {\n const headers = this._allHeaders();\n headers.forEach(header => {\n const panel = this._panelForHeader(header);\n\n if (!panel) {\n return;\n }\n\n header.ariaControls = panel._id;\n panel.ariaLabelledby = header._id;\n });\n\n if (headers.length === 1) {\n if (this.disclosure === \"false\") {\n return;\n }\n\n this.disclosure = \"true\";\n }\n\n if (headers.length > 1) {\n if (this.disclosure) {\n this.disclosure = \"false\";\n }\n }\n }\n\n _changeHandler(evt) {\n if (this.classList.contains(\"animating\")) {\n return;\n }\n\n const header = evt.target;\n const panel = evt.target.nextElementSibling;\n\n if (evt.detail.expanded) {\n this._expandHeader(header);\n this._expandPanel(panel);\n } else {\n this._collapseHeader(header);\n this._collapsePanel(panel);\n }\n }\n\n _expandHeader(header) {\n header.expanded = true;\n }\n\n _expandPanel(panel) {\n if (!panel) {\n console.error(`${PfeAccordion.tag}: Trying to expand a panel that doesn't exist`);\n return;\n }\n\n if (panel.expanded) {\n return;\n }\n\n panel.expanded = true;\n\n const height = panel.getBoundingClientRect().height;\n this._animate(panel, 0, height);\n }\n\n _collapseHeader(header) {\n header.expanded = false;\n }\n\n _collapsePanel(panel) {\n if (!panel) {\n console.error(`${PfeAccordion.tag}: Trying to collapse a panel that doesn't exist`);\n return;\n }\n\n if (!panel.expanded) {\n return;\n }\n\n const height = panel.getBoundingClientRect().height;\n panel.expanded = false;\n\n this._animate(panel, height, 0);\n }\n\n _animate(panel, start, end) {\n if (panel) {\n const header = panel.previousElementSibling;\n if (header) {\n header.classList.add(\"animating\");\n }\n panel.classList.add(\"animating\");\n panel.style.height = `${start}px`;\n\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n panel.style.height = `${end}px`;\n panel.addEventListener(\"transitionend\", this._transitionEndHandler);\n });\n });\n }\n }\n\n _keydownHandler(evt) {\n const currentHeader = evt.target;\n\n if (!this._isHeader(currentHeader)) {\n return;\n }\n\n let newHeader;\n\n switch (evt.key) {\n case \"ArrowDown\":\n case \"Down\":\n case \"ArrowRight\":\n case \"Right\":\n newHeader = this._nextHeader();\n break;\n case \"ArrowUp\":\n case \"Up\":\n case \"ArrowLeft\":\n case \"Left\":\n newHeader = this._previousHeader();\n break;\n case \"Home\":\n newHeader = this._firstHeader();\n break;\n case \"End\":\n newHeader = this._lastHeader();\n break;\n default:\n return;\n }\n\n newHeader.shadowRoot.querySelector(\"button\").focus();\n }\n\n _transitionEndHandler(evt) {\n const header = evt.target.previousElementSibling;\n if (header) {\n header.classList.remove(\"animating\");\n }\n evt.target.style.height = \"\";\n evt.target.classList.remove(\"animating\");\n evt.target.removeEventListener(\"transitionend\", this._transitionEndHandler);\n }\n\n _allHeaders() {\n return [...this.querySelectorAll(PfeAccordionHeader.tag)];\n }\n\n _allPanels() {\n return [...this.querySelectorAll(PfeAccordionPanel.tag)];\n }\n\n _panelForHeader(header) {\n const next = header.nextElementSibling;\n\n if (!next) {\n return;\n }\n\n if (next.tagName.toLowerCase() !== PfeAccordionPanel.tag) {\n console.error(`${PfeAccordion.tag}: Sibling element to a header needs to be a panel`);\n return;\n }\n\n return next;\n }\n\n _previousHeader() {\n const headers = this._allHeaders();\n let newIndex = headers.findIndex(header => header === document.activeElement) - 1;\n return headers[(newIndex + headers.length) % headers.length];\n }\n\n _nextHeader() {\n const headers = this._allHeaders();\n let newIndex = headers.findIndex(header => header === document.activeElement) + 1;\n return headers[newIndex % headers.length];\n }\n\n _firstHeader() {\n const headers = this._allHeaders();\n return headers[0];\n }\n\n _lastHeader() {\n const headers = this._allHeaders();\n return headers[headers.length - 1];\n }\n\n _isHeader(element) {\n return element.tagName.toLowerCase() === PfeAccordionHeader.tag;\n }\n}\n\nclass PfeAccordionHeader extends PFElement {\n\n // Injected at build-time\n static get version() {\n return \"1.3.0\";\n }\n\n // Injected at build-time\n get html() {\n return `\n\n`;\n }\n\n static get tag() {\n return \"pfe-accordion-header\";\n }\n\n get styleUrl() {\n return \"pfe-accordion-header.scss\";\n }\n\n get templateUrl() {\n return \"pfe-accordion-header.html\";\n }\n\n static get properties() {\n return {\n _id: {\n type: String,\n default: el => `${el.randomId.replace(\"pfe\", el.tag)}`,\n prefix: false\n },\n role: {\n type: String,\n default: \"heading\",\n prefix: false\n },\n ariaControls: {\n type: String,\n prefix: false\n },\n // @TODO Deprecated pfe-id in 1.0\n oldPfeId: {\n type: String,\n alias: \"_id\",\n attr: \"pfe-id\"\n },\n expanded: {\n title: \"Expanded\",\n type: Boolean,\n observer: \"_expandedChanged\",\n cascade: \"#pfe-accordion-header--button\",\n observer: \"_expandedChanged\"\n }\n };\n }\n\n constructor() {\n super(PfeAccordionHeader);\n\n this.button = this.shadowRoot.querySelector(\"button\");\n\n this._init = this._init.bind(this);\n this._clickHandler = this._clickHandler.bind(this);\n this._observer = new MutationObserver(this._init);\n }\n\n connectedCallback() {\n super.connectedCallback();\n\n if (this.hasLightDOM()) this._init();\n\n this.addEventListener(\"click\", this._clickHandler);\n this._observer.observe(this, { childList: true });\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n\n this.removeEventListener(\"click\", this._clickHandler);\n this._observer.disconnect();\n }\n\n _init() {\n if (window.ShadyCSS) {\n this._observer.disconnect();\n }\n\n const child = this.children[0];\n let isHeaderTag = false;\n\n if (child) {\n switch (child.tagName) {\n case \"H1\":\n case \"H2\":\n case \"H3\":\n case \"H4\":\n case \"H5\":\n case \"H6\":\n isHeaderTag = true;\n break;\n }\n\n const wrapperTag = document.createElement(child.tagName);\n this.button.innerText = child.innerText;\n\n wrapperTag.appendChild(this.button);\n this.shadowRoot.appendChild(wrapperTag);\n } else {\n this.button.innerText = this.textContent.trim();\n }\n\n if (!isHeaderTag) {\n this.warn(`The first child in the light DOM must be a Header level tag (h1, h2, h3, h4, h5, or h6)`);\n }\n\n if (window.ShadyCSS) {\n this._observer.observe(this, { childList: true });\n }\n }\n\n _clickHandler(event) {\n this.emitEvent(PfeAccordion.events.change, {\n detail: {\n expanded: !this.expanded\n }\n });\n }\n\n _expandedChanged() {\n this.setAttribute(\"aria-expanded\", this.expanded);\n this.button.setAttribute(\"aria-expanded\", this.expanded);\n }\n}\n\nclass PfeAccordionPanel extends PFElement {\n\n // Injected at build-time\n static get version() {\n return \"1.3.0\";\n }\n\n // Injected at build-time\n get html() {\n return `\n\n
\n
\n \n
\n
`;\n }\n\n static get tag() {\n return \"pfe-accordion-panel\";\n }\n\n get styleUrl() {\n return \"pfe-accordion-panel.scss\";\n }\n\n get templateUrl() {\n return \"pfe-accordion-panel.html\";\n }\n\n static get properties() {\n return {\n _id: {\n type: String,\n default: el => `${el.randomId.replace(\"pfe\", el.tag)}`,\n prefix: false\n },\n role: {\n type: String,\n default: \"region\",\n prefix: false\n },\n // @TODO Deprecated pfe-id in 1.0\n oldPfeId: {\n type: String,\n alias: \"_id\",\n attr: \"pfe-id\"\n },\n expanded: {\n title: \"Expanded\",\n type: Boolean,\n default: false\n },\n ariaLabelledby: {\n type: String,\n prefix: false\n }\n };\n }\n\n constructor() {\n super(PfeAccordionPanel);\n }\n\n connectedCallback() {\n super.connectedCallback();\n }\n}\n\nPFElement.create(PfeAccordionHeader);\nPFElement.create(PfeAccordionPanel);\nPFElement.create(PfeAccordion);\n\nexport { PfeAccordion as default };\n"],"names":["Array","prototype","findIndex","defineProperty","predicate","this","TypeError","o","Object","len","length","thisArg","arguments","k","kValue","call","PfeAccordion","PFElement","String","tag","PfeTypes","Container","addEventListener","events","change","_changeHandler","_keydownHandler","all","customElements","whenDefined","PfeAccordionHeader","PfeAccordionPanel","then","_this2","hasLightDOM","_linkPanels","_observer","observe","childList","removeEventListener","disconnect","index","headers","_allHeaders","panels","_allPanels","header","panel","expanded","_collapseHeader","_collapsePanel","_expandHeader","_expandPanel","forEach","_this3","_this4","oldVal","newVal","setAttribute","oldDisclosure","_this5","_panelForHeader","ariaControls","_id","ariaLabelledby","disclosure","evt","classList","contains","target","nextElementSibling","detail","height","getBoundingClientRect","_animate","error","start","end","previousElementSibling","add","style","_this6","_transitionEndHandler","currentHeader","_isHeader","newHeader","key","_nextHeader","_previousHeader","_firstHeader","_lastHeader","shadowRoot","querySelector","focus","remove","querySelectorAll","next","tagName","toLowerCase","newIndex","document","activeElement","element","type","PfeType","_this","bind","MutationObserver","el","randomId","replace","Boolean","_init","_clickHandler","window","ShadyCSS","child","children","isHeaderTag","wrapperTag","createElement","button","innerText","appendChild","textContent","trim","warn","event","emitEvent","_this7","create"],"mappings":"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"}
\ No newline at end of file
diff --git a/elements/pfe-accordion/package.json b/elements/pfe-accordion/package.json
index 6c154475e9..15d76c198f 100644
--- a/elements/pfe-accordion/package.json
+++ b/elements/pfe-accordion/package.json
@@ -10,7 +10,7 @@
],
"preview": "accordion.svg"
},
- "version": "1.2.0",
+ "version": "1.3.0",
"publishConfig": {
"access": "public"
},
@@ -60,10 +60,10 @@
],
"license": "MIT",
"dependencies": {
- "@patternfly/pfelement": "^1.2.0"
+ "@patternfly/pfelement": "^1.3.0"
},
"devDependencies": {
- "@patternfly/pfe-sass": "^1.2.0"
+ "@patternfly/pfe-sass": "^1.3.0"
},
"generator-pfelement-version": "0.5.5",
"bugs": {
diff --git a/elements/pfe-autocomplete/dist/pfe-autocomplete.css.map b/elements/pfe-autocomplete/dist/pfe-autocomplete.css.map
new file mode 100644
index 0000000000..7caf61744c
--- /dev/null
+++ b/elements/pfe-autocomplete/dist/pfe-autocomplete.css.map
@@ -0,0 +1 @@
+{"version":3,"sources":["pfe-autocomplete.scss","../../pfe-sass/extends/_extends.scss","pfe-autocomplete.css","../../pfe-sass/mixins/_mixins.scss","../../pfe-sass/mixins/_custom-properties.scss","../../pfe-sass/functions/_custom-properties.scss"],"names":[],"mappings":"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","file":"pfe-autocomplete.css","sourcesContent":["@import \"../../pfe-sass/pfe-sass\";\n\n$LOCAL: autocomplete;\n\n$LOCAL-VARIABLES: (\n BoxShadow: pfe-var(box-shadow--inset),\n BackgroundColor: pfe-var(surface--lightest),\n Border: pfe-var(ui--border-width) pfe-var(ui--border-style) pfe-var(surface--border)\n);\n\n@include pfe-contexts; // imports on=\"light\" etc support\n\n:host {\n display: block;\n position: relative;\n font-family: pfe-var(font-family);\n @include pfe-print-local($LOCAL-VARIABLES);\n}\n\n:host([button-text]) {\n display: flex;\n #wrapper {\n flex: 1;\n }\n\n #input-box-wrapper {\n position: relative;\n }\n\n button.clear-search {\n right: 10px;\n }\n}\n\n\n// this isn't working, I don't know why\n:host([button-text]) ::slotted(input[type=\"search\"]::-webkit-search-cancel-button) {\n -webkit-appearance: none;\n}\n\n.sr-only {\n @extend %sr-only;\n}\n\n#input-box-wrapper {\n border-color: pfe-var(feedback--info);\n\n ::slotted(input) {\n width: 100%;\n flex: 1;\n box-shadow: pfe-local(BoxShadow) !important;\n padding-left: 10px;\n padding-right: 30px;\n border-radius: pfe-var(ui--border-radius);\n background-color: pfe-local(BackgroundColor);\n border: pfe-local(Border);\n font-size: pfe-var(font-size);\n font-family: pfe-var(font-family);\n height: calc(#{pfe-var(ui--element--size)} * 2);\n transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;\n opacity: 1;\n outline: 0;\n }\n\n ::slotted(input:disabled),\n button:disabled {\n cursor: not-allowed;\n // background-color: transparent;\n // @TODO: Replace with a variable\n color: #ccc;\n // opacity: 0.5;\n }\n\n ::slotted(input:disabled) {\n padding-right: 10px;\n }\n\n button:focus,\n ::slotted(input:focus) {\n outline: 0;\n }\n\n ::slotted(input),\n button {\n -webkit-appearance: none;\n }\n\n ::slotted([type=\"search\"]::-ms-clear) {\n display: none;\n }\n\n ::slotted(input[type=\"search\"]::-webkit-search-cancel-button),\n ::slotted(input[type=\"search\"]::-webkit-search-decoration) {\n -webkit-appearance: none;\n }\n}\n\nbutton {\n color: pfe-var(ui-base);\n background-color: transparent;\n border: none;\n position: absolute;\n top: 0;\n bottom: 0;\n cursor: pointer;\n\n &.clear-search {\n right: 30px;\n width: 20px;\n margin: 2px 1px;\n background-color: pfe-var(surface--lightest);\n &:hover {\n color: pfe-var(ui-base);\n }\n svg {\n width: 12px;\n stroke: pfe-var(surface--border);\n }\n &:hover svg,\n &:focus svg {\n opacity: 1;\n stroke: pfe-var(link);\n }\n }\n\n &[disabled].clear-search:hover svg,\n &[disabled].clear-search:focus svg {\n stroke: pfe-var(surface--border);\n }\n\n &.search-button {\n right: 1px;\n width: 30px;\n\n svg {\n fill: pfe-var(link);\n width: 16px;\n }\n\n &:hover svg,\n &:focus svg {\n fill: pfe-var(link--hover);\n }\n\n &:disabled svg {\n fill: pfe-var(ui-disabled);\n }\n }\n}\n\npfe-button.search-button--textual {\n margin-left: 16px;\n}\n\n.loading {\n position: absolute;\n width: 30px;\n right: 52px;\n top: 0px;\n bottom: 0px;\n svg {\n width: 26px;\n padding-top: 7px;\n }\n}\n","// @todo Change to mixins; no efficiency gain with placeholders in web components\n\n/// Clear box element styles\n%reset-box {\n margin: 0;\n padding: 0;\n}\n\n/// Clear list styles\n%reset-list {\n margin: 0;\n padding: 0;\n list-style: none;\n}\n\n/// Clear button styles\n%reset-button {\n background-color: transparent;\n border: none;\n margin: 0;\n padding: 0;\n text-align: left;\n}\n\n/// Set up a container element\n%container {\n position: relative;\n display: block;\n width: 100%;\n padding: pfe-var(container-spacer);\n}\n\n/// Screen-reader only content\n%sr-only {\n position: absolute;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n height: 1px;\n width: 1px;\n margin: -1px;\n padding: 0;\n border: 0;\n}\n\n/// Fallback surface styles for IE11 only\n%fallback-surface {\n @include browser-query(ie11) {\n background-color: pfe-fetch(surface--lightest) !important;\n color: pfe-fetch(text) !important;\n }\n}\n\n/// Fallback text styles for IE11 only\n%fallback-text {\n @include browser-query(ie11) {\n color: pfe-fetch(text) !important;\n }\n}\n",".sr-only {\n position: absolute;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n height: 1px;\n width: 1px;\n margin: -1px;\n padding: 0;\n border: 0;\n}\n\n@media screen and (-ms-high-contrast: active), screen and (-ms-high-contrast: none) {\n :host {\n /* IE10+ */\n color: #151515 !important;\n }\n}\n\n:host([on=\"dark\"]) {\n --pfe-broadcasted--text: var(--pfe-theme--color--text--on-dark, #fff);\n --pfe-broadcasted--link: var(--pfe-theme--color--link--on-dark, #73bcf7);\n --pfe-broadcasted--link--hover: var(--pfe-theme--color--link--hover--on-dark, #bee1f4);\n --pfe-broadcasted--link--focus: var(--pfe-theme--color--link--focus--on-dark, #bee1f4);\n --pfe-broadcasted--link--visited: var(--pfe-theme--color--link--visited--on-dark, #bee1f4);\n --pfe-broadcasted--link-decoration: var(--pfe-theme--link-decoration--on-dark, none);\n --pfe-broadcasted--link-decoration--hover: var(--pfe-theme--link-decoration--hover--on-dark, underline);\n --pfe-broadcasted--link-decoration--focus: var(--pfe-theme--link-decoration--focus--on-dark, underline);\n --pfe-broadcasted--link-decoration--visited: var(--pfe-theme--link-decoration--visited--on-dark, none);\n}\n\n:host([on=\"saturated\"]) {\n --pfe-broadcasted--text: var(--pfe-theme--color--text--on-saturated, #fff);\n --pfe-broadcasted--link: var(--pfe-theme--color--link--on-saturated, #fff);\n --pfe-broadcasted--link--hover: var(--pfe-theme--color--link--hover--on-saturated, #fafafa);\n --pfe-broadcasted--link--focus: var(--pfe-theme--color--link--focus--on-saturated, #fafafa);\n --pfe-broadcasted--link--visited: var(--pfe-theme--color--link--visited--on-saturated, #d2d2d2);\n --pfe-broadcasted--link-decoration: var(--pfe-theme--link-decoration--on-saturated, underline);\n --pfe-broadcasted--link-decoration--hover: var(--pfe-theme--link-decoration--hover--on-saturated, underline);\n --pfe-broadcasted--link-decoration--focus: var(--pfe-theme--link-decoration--focus--on-saturated, underline);\n --pfe-broadcasted--link-decoration--visited: var(--pfe-theme--link-decoration--visited--on-saturated, underline);\n}\n\n:host([on=\"light\"]) {\n --pfe-broadcasted--text: var(--pfe-theme--color--text, #151515);\n --pfe-broadcasted--link: var(--pfe-theme--color--link, #06c);\n --pfe-broadcasted--link--hover: var(--pfe-theme--color--link--hover, #004080);\n --pfe-broadcasted--link--focus: var(--pfe-theme--color--link--focus, #004080);\n --pfe-broadcasted--link--visited: var(--pfe-theme--color--link--visited, #6753ac);\n --pfe-broadcasted--link-decoration: var(--pfe-theme--link-decoration, none);\n --pfe-broadcasted--link-decoration--hover: var(--pfe-theme--link-decoration--hover, underline);\n --pfe-broadcasted--link-decoration--focus: var(--pfe-theme--link-decoration--focus, underline);\n --pfe-broadcasted--link-decoration--visited: var(--pfe-theme--link-decoration--visited, none);\n}\n\n:host {\n display: block;\n position: relative;\n font-family: var(--pfe-theme--font-family, \"Red Hat Text\", \"RedHatText\", \"Overpass\", Overpass, Arial, sans-serif);\n --pfe-autocomplete--BoxShadow: var(--pfe-theme--box-shadow--inset, inset 0 0 0.625rem 0 #fafafa);\n --pfe-autocomplete--BackgroundColor: var(--pfe-theme--color--surface--lightest, #fff);\n --pfe-autocomplete--Border: var(--pfe-theme--ui--border-width, 1px) var(--pfe-theme--ui--border-style, solid) var(--pfe-theme--color--surface--border, #d2d2d2);\n}\n\n:host([button-text]) {\n display: flex;\n}\n\n:host([button-text]) #wrapper {\n flex: 1;\n}\n\n:host([button-text]) #input-box-wrapper {\n position: relative;\n}\n\n:host([button-text]) button.clear-search {\n right: 10px;\n}\n\n:host([button-text]) ::slotted(input[type=\"search\"]::-webkit-search-cancel-button) {\n -webkit-appearance: none;\n}\n\n#input-box-wrapper {\n border-color: var(--pfe-theme--color--feedback--info, #06c);\n}\n\n#input-box-wrapper ::slotted(input) {\n width: 100%;\n flex: 1;\n box-shadow: var(--pfe-autocomplete--BoxShadow, var(--pfe-theme--box-shadow--inset, inset 0 0 0.625rem 0 #fafafa)) !important;\n padding-left: 10px;\n padding-right: 30px;\n border-radius: var(--pfe-theme--ui--border-radius, 2px);\n background-color: var(--pfe-autocomplete--BackgroundColor, var(--pfe-theme--color--surface--lightest, #fff));\n border: var(--pfe-autocomplete--Border, var(--pfe-theme--ui--border-width, 1px) var(--pfe-theme--ui--border-style, solid) var(--pfe-theme--color--surface--border, #d2d2d2));\n font-size: var(--pfe-theme--font-size, 1rem);\n font-family: var(--pfe-theme--font-family, \"Red Hat Text\", \"RedHatText\", \"Overpass\", Overpass, Arial, sans-serif);\n height: calc(var(--pfe-theme--ui--element--size, 20px) * 2);\n transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;\n opacity: 1;\n outline: 0;\n}\n\n#input-box-wrapper ::slotted(input:disabled),\n#input-box-wrapper button:disabled {\n cursor: not-allowed;\n color: #ccc;\n}\n\n#input-box-wrapper ::slotted(input:disabled) {\n padding-right: 10px;\n}\n\n#input-box-wrapper button:focus,\n#input-box-wrapper ::slotted(input:focus) {\n outline: 0;\n}\n\n#input-box-wrapper ::slotted(input),\n#input-box-wrapper button {\n -webkit-appearance: none;\n}\n\n#input-box-wrapper ::slotted([type=\"search\"]::-ms-clear) {\n display: none;\n}\n\n#input-box-wrapper ::slotted(input[type=\"search\"]::-webkit-search-cancel-button),\n#input-box-wrapper ::slotted(input[type=\"search\"]::-webkit-search-decoration) {\n -webkit-appearance: none;\n}\n\nbutton {\n color: var(--pfe-theme--color--ui-base, #6a6e73);\n background-color: transparent;\n border: none;\n position: absolute;\n top: 0;\n bottom: 0;\n cursor: pointer;\n}\n\nbutton.clear-search {\n right: 30px;\n width: 20px;\n margin: 2px 1px;\n background-color: var(--pfe-theme--color--surface--lightest, #fff);\n}\n\nbutton.clear-search:hover {\n color: var(--pfe-theme--color--ui-base, #6a6e73);\n}\n\nbutton.clear-search svg {\n width: 12px;\n stroke: var(--pfe-theme--color--surface--border, #d2d2d2);\n}\n\nbutton.clear-search:hover svg,\nbutton.clear-search:focus svg {\n opacity: 1;\n stroke: var(--pfe-theme--color--link, #06c);\n}\n\nbutton[disabled].clear-search:hover svg,\nbutton[disabled].clear-search:focus svg {\n stroke: var(--pfe-theme--color--surface--border, #d2d2d2);\n}\n\nbutton.search-button {\n right: 1px;\n width: 30px;\n}\n\nbutton.search-button svg {\n fill: var(--pfe-theme--color--link, #06c);\n width: 16px;\n}\n\nbutton.search-button:hover svg,\nbutton.search-button:focus svg {\n fill: var(--pfe-theme--color--link--hover, #004080);\n}\n\nbutton.search-button:disabled svg {\n fill: var(--pfe-theme--color--ui-disabled, #d2d2d2);\n}\n\npfe-button.search-button--textual {\n margin-left: 16px;\n}\n\n.loading {\n position: absolute;\n width: 30px;\n right: 52px;\n top: 0px;\n bottom: 0px;\n}\n\n.loading svg {\n width: 26px;\n padding-top: 7px;\n}\n","@mixin browser-query($browser-list) {\n @each $browser in $browser-list {\n @if $browser == ie11 {\n @media screen and (-ms-high-contrast: active), screen and (-ms-high-contrast: none) { /* IE10+ */\n @content;\n }\n }\n @if $browser == edge12 {\n @supports (-ms-accelerator: true) { /* Microsoft Edge Browser 12+ */\n @content;\n }\n }\n @if $browser == edge {\n @supports (-ms-ime-align: auto) { /* Microsoft Edge Browser 16+ (All) */\n @content;\n }\n }\n @if $browser == firefox {\n @media all and (min--moz-device-pixel-ratio:0) { /* Mozilla Firefox (All) */\n @content;\n }\n }\n }\n}\n\n@mixin pfe-transition($properties...) {\n $return: null;\n @each $property in $properties {\n @if length($property) == 1 {\n $return: append($return, #{$property} 250ms $pfe-global--animation-timing, comma);\n }\n @else if length($property) == 2 {\n $return: append($return, nth($property, 1) nth($property, 2), comma);\n }\n }\n transition: $return;\n}\n\n// Make a CSS arrow\n@mixin pfe-arrow($type, $color, $width: 8px, $height: 5px, $pseudo: false) {\n $direction: (\n up: 180deg,\n down: 0deg,\n right: -90deg,\n left: 90deg,\n );\n border-style: pfe-var(surface--border-style);\n border-width: $width $height 0;\n border-color: transparent;\n border-top-color: $color;\n transform: rotate(map-get($direction, $type));\n @if $pseudo {\n display: inline-block;\n content: \"\";\n @content;\n }\n}\n\n@mixin pfe-arrow-color($color) {\n border-top-color: $color;\n}\n\n@mixin pfe-print-media {\n @media print {\n @content;\n }\n}\n\n@mixin pfe-print-background {\n -webkit-print-color-adjust: exact;\n color-adjust: exact;\n}\n\n@mixin pfe-no-print-background {\n @include pfe-print-media {\n background-color: white !important;\n background-image: none !important;\n box-shadow: none !important;\n }\n}\n\n@mixin pfe-hidden {\n @at-root #{&}([hidden]) {\n display: none;\n }\n}\n\n@mixin pfe-pipe( $position: right, $padding: 0, $margin: 0, $color: $border-color) {\n border: pfe-var(surface--border-width) pfe-var(surface--border-style) transparent;\n border-#{$position}-color: $color;\n @if $position == right {\n padding-left: $padding;\n margin-right: $margin;\n }\n @else if $position == left {\n padding-right: $padding;\n margin-left: $margin;\n }\n}\n\n@mixin pfe-retina {\n @media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {\n @content;\n }\n}\n\n@mixin pfe-icon($path, $display: flex, $size: 1em) {\n display: #{$display};\n @if $path {\n background: #{$path} no-repeat;\n background-size: contain;\n background-position: center;\n }\n width: #{$size};\n height: #{$size};\n @content;\n}\n\n@mixin pfe-local-debug($map: $LOCAL-VARIABLES) {\n :root {\n @include pfe-print-local($map);\n }\n} ","////\n/// Tools for leveraging custom property stacks\n/// @group custom-properties\n/// @author castastrophe\n////\n\n/// This will print all the broadcast variables, and set the value to the context of your choosing, like on-dark or on-saturated.\n/// @param {String} $context - Look up values from contexts, i.e. \"light\" or \"saturated\"\n/// @param {List | String} $broadcast [$BROADCAST-VARS] - Optionally specify only one broadcast variable instead of the whole set, i.e. \"text\"\n/// @see $custom-prop-prefix\n/// @see $BROADCAST-VARS\n/// @example - scss - Usage in a container component, i.e. pfe-card\n/// :host {\n/// @include pfe-set-broadcast-context(dark);\n/// }\n/// @example - css - Rendered output\n/// :host {\n/// --pfe-broadcasted--text: var(--pfe-theme--color--text--on-dark, #fff);\n/// --pfe-broadcasted--link: var(--pfe-theme--color--link--on-dark, #99ccff);\n/// --pfe-broadcasted--link--hover: var(--pfe-theme--color--link--hover--on-dark, #cce6ff);\n/// --pfe-broadcasted--link--focus: var(--pfe-theme--color--link--focus--on-dark, #cce6ff);\n/// --pfe-broadcasted--link--visited: var(--pfe-theme--color--link--visited--on-dark, #b38cd9);\n/// --pfe-broadcasted--link-decoration: none;\n/// --pfe-broadcasted--link-decoration--hover: underline;\n/// --pfe-broadcasted--link-decoration--focus: underline;\n/// --pfe-broadcasted--link-decoration--visited: none;\n/// }\n///\n@mixin pfe-set-broadcast-context($context, $broadcast: $BROADCAST-VARS) {\n @each $type in $broadcast {\n $list: ();\n $string: \"\";\n $context_string: \"\";\n $state: \"\";\n\n @if str-starts-with($type, \"link\") {\n $list: append($list, \"#{$type}\");\n\n @each $s in (hover, focus, visited) {\n $state: \"--#{$s}\";\n $string: \"#{$type}#{$state}\";\n\n @if not index($list, $string) {\n $list: append($list, \"#{$type}#{$state}\");\n }\n }\n } @else {\n @if not index($list, $string) {\n $list: append($list, \"#{$type}\");\n }\n }\n\n @if index($CONTEXTS, $context) != null {\n @if $context != \"light\" {\n $context_string: \"--on-#{$context}\";\n }\n }\n\n @each $item in $list {\n @if not index($BROADCAST-VARS, $type) {\n @warn \"--#{$custom-prop-prefix}-broadcasted--#{$item} variable is not in the $BROADCAST-VARS list.\";\n } @else if not pfe-broadcasted(#{$item}#{$context_string}) {\n @warn \"#{$item}#{$context_string} value does not currently exist.\";\n } @else {\n @if index($CONTEXTS, $context) != null {\n --#{$custom-prop-prefix}-broadcasted--#{$item}: #{pfe-var(#{$item}#{$context_string})};\n } @else {\n @error \"The #{$context} context does not appear to be part of a supported context.\";\n }\n }\n }\n }\n}\n\n/// Returns CSS Variable for the local component-scoped variable\n/// @param {String} $cssvar - Variable identifiers which are postfixed and combined using '--'\n/// @param {String} $value - The value of the css variable being defined\n/// @param {String} $region - Identifies the region or slot to which this is assigned\n/// @see $custom-prop-prefix\n/// @see $LOCAL\n/// @example - scss\n/// :host {\n/// padding-top: pfe-local(paddingTop);\n/// padding-bottom: pfe-local(paddingBottom);\n/// }\n@mixin pfe-print-local($map: $LOCAL-VARIABLES) {\n @each $property, $value in $map {\n $name: \"--#{$property}\";\n $styles: $value;\n\n @if type-of($value) == \"map\" {\n @each $prop, $v in $value {\n $name: \"__#{$property}--#{$prop}\";\n $styles: $v;\n\n // Print the variable definition\n --#{$custom-prop-prefix}-#{$LOCAL}#{$name}: #{$styles};\n }\n } @else {\n // Print the variable definition\n --#{$custom-prop-prefix}-#{$LOCAL}#{$name}: #{$styles};\n }\n }\n}\n\n/// Surface properties\n/// This mixin creates an attribute for all the surface colors, then prints the local background color variable for the component, with the correct context colors.\n/// @param {List | String} $surfaces [$SURFACES] - defaults to the global $SURFACES list of all supported colors\n/// @param {String} $attr-name [pfe-var] - defaults to pfe-var, optionally pass in a custom name for the data attribute\n/// @example - scss - In your component stylesheet\n/// $LOCAL: band;\n/// @include pfe-surfaces;\n/// @example - css - Rendered result\n/// :host([color=\"darker\"]) {\n/// --pfe-band--BackgroundColor: var(--pfe-theme--color--surface--darker, #464646);\n/// --context: dark;\n/// }\n/// :host([color=\"darkest\"]) {\n/// --pfe-band--BackgroundColor: var(--pfe-theme--color--surface--darkest, #131313);\n/// --context: dark;\n/// }\n/// :host([color=\"base\"]) {\n/// --pfe-band--BackgroundColor: var(--pfe-theme--color--surface--base, #dfdfdf);\n/// --context: light;\n/// }\n/// :host([color=\"lighter\"]) {\n/// --pfe-band--BackgroundColor: var(--pfe-theme--color--surface--lighter, #ececec);\n/// --context: light;\n/// }\n/// :host([color=\"lightest\"]) {\n/// --pfe-band--BackgroundColor: var(--pfe-theme--color--surface--lightest, #fff);\n/// --context: light;\n/// }\n/// :host([color=\"accent\"]) {\n/// --pfe-band--BackgroundColor: var(--pfe-theme--color--surface--accent, #ee0000);\n/// --context: saturated;\n/// }\n/// :host([color=\"complement\"]) {\n/// --pfe-band--BackgroundColor: var(--pfe-theme--color--surface--complement, #0477a4);\n/// --context: saturated;\n/// }\n@mixin pfe-surfaces($surfaces: $SURFACE, $attr-name: color) {\n @each $color in $surfaces {\n $context: #{pfe-get-context(surface--#{$color}--context)};\n :host([#{$attr-name}=\"#{$color}\"]) {\n @include pfe-print-local(\n (\n BackgroundColor: pfe-var(surface--#{$color}),\n context: pfe-var(surface--#{$color}--context, #{$context})\n )\n );\n @extend %fallback-surface;\n }\n }\n}\n\n/// Prints the `on` attribute with IE11 fallbacks\n/// @param {List} contexts [$CONTEXTS] - defaults to the global $CONTEXTS list of all supported contexts\n/// @param {Boolean} ie-fallback [true] - defaults to true, prints IE11 fallbacks\n/// @example - scss - In your component styles\n/// @include pfe-contexts; // imports on=\"light\" etc support\n/// @example - css - Rendered outputs\n/// :host([on=\"dark\"]) {\n/// --pfe-broadcasted--text: var(--pfe-theme--color--text--on-dark, #fff);\n/// --pfe-broadcasted--link: var(--pfe-theme--color--link--on-dark, #99ccff);\n/// --pfe-broadcasted--link--hover: var(--pfe-theme--color--link--hover--on-dark, #cce6ff);\n/// --pfe-broadcasted--link--focus: var(--pfe-theme--color--link--focus--on-dark, #cce6ff);\n/// --pfe-broadcasted--link--visited: var(--pfe-theme--color--link--visited--on-dark, #b38cd9);\n/// --pfe-broadcasted--link-decoration: none;\n/// --pfe-broadcasted--link-decoration--hover: underline;\n/// --pfe-broadcasted--link-decoration--focus: underline;\n/// --pfe-broadcasted--link-decoration--visited: none;\n/// }\n/// @media screen and (-ms-high-contrast: active), screen and (-ms-high-contrast: none) { /* IE10+ */\n/// :host([on=\"dark\"]) {\n/// color: #fff;\n/// color: var(--pfe-theme--color--text--on-dark, #fff);\n/// }\n/// }\n/// // ...as well as all the values for :host([on=\"saturated\"]) and :host([on=\"light\"])\n@mixin pfe-contexts($contexts: $CONTEXTS, $ie-fallback: true) {\n // Helper attributes to aid in theming\n @each $context in $contexts {\n :host([on=\"#{$context}\"]) {\n @include pfe-set-broadcast-context($context);\n }\n }\n @if $ie-fallback {\n :host {\n @extend %fallback-text;\n }\n }\n}\n","////\n/// Tools for leveraging custom property stacks\n/// @group custom-properties\n/// @author castastrophe\n////\n\n/// Get full theme stack with a fallback from the provided map - used by pfe-var and pfe-zindex\n/// @param {String} $category - Category name to be appended to variables within the map/system\n/// @param {String} $key - Variable name to be used and prepended with --pfe-theme\n/// @param {Map} $map - Sass map of variables\n/// @param {String} $fallback [null] - Optional fallback override\n/// @param {Boolean} $use-fallback [true] - Optional hook to return a stack with no fallback value\n/// @requires $custom-prop-prefix\n/// @return {String} theme stack with fallback value from a sass map\n@function pfe-get-from-map($category, $key, $map, $fallback: null, $prefix: \"#{$custom-prop-prefix}-theme\", $use-fallback: true) {\n // Start building the variable declaration\n $var-declaration: \"--#{$prefix}--\";\n @if $prefix == \"pf-c\" {\n $var-declaration: \"--#{$prefix}-\"; // one dash at the end\n }\n // If the category exists, inject that into the string\n @if $category != \"\" {\n $var-declaration: \"#{$var-declaration}#{$category}--\";\n }\n // Append the key to the string\n $var-declaration: \"#{$var-declaration}#{$key}\";\n\n // If the fallback is not provided but use-fallback is set to true\n @if $fallback == null and $use-fallback and map-get($map, $key) != null {\n $fallback: map-get($map, $key);\n }\n @if $fallback != null {\n // Create the variable declaration\n $var-declaration: \"#{$var-declaration}, #{$fallback}\";\n }\n\n // Return the variable declaration string\n @return var(#{$var-declaration}); \n}\n\n\n\n/// Returns CSS Var for the local component-scoped variable\n/// @param {String} $cssvar - Variable identifiers which are postfixed and combined using '--'\n/// @param {String} $region - Identifies the region or slot to which this is assigned\n/// @see $custom-prop-prefix\n/// @see $LOCAL\n/// @example\n/// :host {\n/// padding-top: #{pfe-local(paddingTop)};\n/// padding-bottom: #{pfe-local(paddingBottom)};\n/// }\n@function pfe-local($cssvar, $fallback: null, $region: null) {\n // If a fallback is not defined, use the global variables map\n @if $fallback == null and length($LOCAL-VARIABLES) > 0 {\n @if $region == null {\n $fallback: map-get($LOCAL-VARIABLES, $cssvar);\n }\n @else {\n $submap: map-get($LOCAL-VARIABLES, $region);\n @if type-of($submap) == \"map\" {\n $fallback: map-deep-get($LOCAL-VARIABLES, $region, $cssvar);\n }\n }\n }\n\n // If a region value exists, build the region string\n @if $region != null {\n $region: \"__#{$region}\";\n }\n\n // Start building the variable declaration\n $var-declaration: \"--#{$custom-prop-prefix}-#{$LOCAL}#{$region}--#{to-string($cssvar, '--')}\";\n \n @if $fallback != null {\n $var-declaration: \"#{$var-declaration}, #{$fallback}\";\n }\n\n // Return the variable declaration string\n @return var(#{$var-declaration});\n}\n\n/// Fetches a CSS variable stack for broadcasted variables, providing a hook for context\n/// to influence the styles of children elements such as p tags or links.\n/// @param {String} $broadcast - name of the broadcast variable to apply\n/// @requires {String} $custom-prop-prefix - Name of repo, which is \"pfe\"\n/// @example - scss\n/// :host {\n/// color: pfe-broadcasted(link);\n/// }\n/// @example - css\n/// :host {\n/// color: var(--pfe-broadcasted--link, #06c);\n/// }\n@function pfe-broadcasted($broadcast, $use-fallback: true) {\n $fallback: \"\";\n @if $use-fallback {\n $fallback: \", #{map-get($pfe-broadcasted, #{to-string($broadcast,'--')})}\";\t\n }\n @if not index($BROADCAST-VARS, first(str-split($broadcast, '--'))) {\n @error \"--#{$custom-prop-prefix}-broadcasted--#{$broadcast} variable is not currently supported.\";\n }\n @else {\n @return var(--#{$custom-prop-prefix}-broadcasted--#{to-string($broadcast,'--')}#{unquote($fallback)});\n }\n}\n\n/// Returns CSS variable stack with exposed theme variable and respective fallback\n/// @param {String} $cssvar - Variable name to be used and prepended with --pfe-theme--zindex\n/// @requires {Map} $pfe-zindex - SASS Map of z-index values\n/// @see $pfe-zindex\n/// @example - scss - In your component styles\n/// .my-element {\n/// z-index: pfe-zindex( content );\n/// }\n\n@function pfe-zindex($cssvar) {\n $var-name: to-string($cssvar, \"--\");\n @if map-get($pfe-zindex, $var-name) != null {\n @return pfe-get-from-map(\"zindex\", $var-name, $pfe-zindex);\n }\n @else {\n @error \"The key for #{$var-name} could not be found in the $pfe-zindex map.\";\n }\n}\n\n/// Returns the value (only) of a property from the respective maps\n/// Similar to pfe-var, but does not include css variable in the compiled CSS\n/// @param {String} $name - Name of the key for the map\n/// @see $pfe-vars\n/// @see $pfe-colors\n/// @see $pfe-broadcasted\n/// @example - scss - In your component styles\n/// .my-element {\n/// background-color: pfe-fetch( ui-base );\n/// }\n@function pfe-fetch($name) {\n $var-name: to-string($name, \"--\");\n @if map-get($LOCAL-VARIABLES, $var-name) != null {\n @return map-get($LOCAL-VARIABLES, $var-name);\n }\n @if map-get($pfe-vars, $var-name) != null {\n @return map-get($pfe-vars, $var-name);\n }\n @else if map-get($pfe-colors, $var-name) != null {\n @return map-get($pfe-colors, $var-name);\n }\n @else if map-get($pfe-broadcasted, $var-name) != null {\n @return map-get($pfe-broadcasted, $var-name);\n }\n @else if map-get($pfe-typography-base, $var-name) != null {\n @return map-get($pfe-typography-base, $var-name);\n }\n\n // PATTERNFLY CORE\n @else if map-get($pf-type-sizing, $var-name) != null {\n @return map-get($pf-type-sizing, $var-name);\n }\n @else if map-get($pf-type-sizing--component, $var-name) != null {\n @return map-get($pf-type-sizing--component, $var-name);\n }\n @else if map-get($pf-type-sizing--modifers, $var-name) != null {\n @return map-get($pf-type-sizing--modifers, $var-name);\n }\n @else if map-get($pf-type-sizing--content, $var-name) != null {\n @return map-get($pf-type-sizing--content, $var-name);\n }\n // DEPRECATED\n @else if map-get($pfe-typography-base-deprecated, $var-name) != null {\n @return map-get($pfe-typography-base-deprecated, $var-name);\n }\n @else if map-get($pfe-typography-deprecated, $var-name) != null {\n @return map-get($pfe-typography-deprecated, $var-name);\n }\n @else {\n @error \"#{$var-name} could not be found.\";\n }\n}\n\n/// Returns CSS variable stack with exposed theme variable and respective fallback\n/// @param {String} $cssvar - Variable name to be used and prepended with --pfe-theme\n/// @param {String} $fallback [null] - Optional custom fallback\n/// @see $pfe-vars\n/// @see $pfe-colors\n/// @see $pfe-broadcasted\n/// @example scss - In your component styles\n/// .my-element {\n/// padding: pfe-var( container-spacer );\n/// font-size: pfe-var( font-size );\n/// }\n/// @example - css Rendered output\n/// .my-element {\n/// padding: var(--pfe-theme--container-spacer, 16px);\n/// font-size: var(--pfe-theme--font-size, 16px);\n/// }\n@function pfe-var($cssvar, $fallback: null) {\n $var-name: to-string($cssvar, \"--\");\n @if map-get($pfe-vars, $var-name) != null {\n @return pfe-get-from-map(\"\", $var-name, $pfe-vars, $fallback);\n }\n @else if map-get($pfe-colors, $var-name) != null {\n @return pfe-get-from-map(\"color\", $var-name, $pfe-colors, $fallback);\n }\n @else if map-get($pfe-broadcasted, $var-name) != null {\n @return pfe-get-from-map(\"\", $var-name, $pfe-broadcasted);\n }\n @else if map-get($pfe-typography-base, $var-name) != null {\n @return pfe-get-from-map(\"\", $var-name, $pfe-typography-base, $fallback);\n }\n // PATTERNFLY CORE:\n @else if map-get($pf-type-sizing, $var-name) != null {\n @return pfe-get-from-map(\"\", $var-name, $pf-type-sizing, $fallback, $prefix: \"pf-global\");\n }\n @else if map-get($pf-type-sizing--modifers, $var-name) != null {\n @return pfe-get-from-map(\"\", $var-name, $pf-type-sizing--modifers, $fallback, $prefix: \"pf-c\");\n }\n @else if map-get($pf-type-sizing--content, $var-name) != null {\n @return pfe-get-from-map(\"\", $var-name, $pf-type-sizing--content, $fallback, $prefix: \"pf-c\");\n }\n // PFE components (must be below core)\n @else if map-get($pf-type-sizing--component, $var-name) != null {\n @return pfe-get-from-map(\"\", $var-name, $pf-type-sizing--component, $fallback);\n }\n\n // DEPRECATED:\n @else if map-get($pfe-typography-base-deprecated, $var-name) != null {\n @return pfe-get-from-map(\"\", $var-name, $pfe-typography-base-deprecated, $fallback);\n }\n @else if map-get($pfe-typography-deprecated, $var-name) != null {\n @return pfe-get-from-map(\"\", $var-name, $pfe-typography-deprecated, $fallback);\n }\n\n @else {\n @error \"#{$var-name} could not be found.\";\n }\n}"],"sourceRoot":"../src"}
\ No newline at end of file
diff --git a/elements/pfe-autocomplete/dist/pfe-autocomplete.js b/elements/pfe-autocomplete/dist/pfe-autocomplete.js
new file mode 100644
index 0000000000..954b468e60
--- /dev/null
+++ b/elements/pfe-autocomplete/dist/pfe-autocomplete.js
@@ -0,0 +1,606 @@
+import PFElement from '../../pfelement/dist/pfelement.js';
+import '../../pfe-button/dist/pfe-button.js';
+
+/*!
+ * PatternFly Elements: PfeAutocomplete 1.3.0
+ * @license
+ * Copyright 2021 Red Hat, Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+*/
+
+const KEYCODE = {
+ ENTER: 13,
+ DOWN: 40,
+ UP: 38,
+ ESC: 27
+};
+
+// use this variable to debounce api call when user types very fast
+let throttle = false;
+
+class PfeAutocomplete extends PFElement {
+
+ // Injected at build-time
+ static get version() {
+ return "1.3.0";
+ }
+
+ // Injected at build-time
+ get html() {
+ return `
+
+
`;
+ })
+ .join("")}`;
+ }
+
+ _activeIndexChanged() {
+ if (!this.data || this.data.length === 0 || this.activeIndex === null || this.activeIndex === "null") return;
+
+ // remove active class
+ if (this._ul.querySelector(".active")) {
+ this._ul.querySelector(".active").classList.remove("active");
+ }
+
+ // add active class to selected option
+ let activeOption = this._ul.querySelector("li:nth-child(" + (parseInt(this.activeIndex, 10) + 1) + ")");
+
+ activeOption.classList.add("active");
+
+ // scroll to selected element when selected item with keyboard is out of view
+ let ulWrapper = this.shadowRoot.querySelector(".droplist");
+ let activeOptionHeight = activeOption.offsetHeight;
+ activeOptionHeight += parseInt(window.getComputedStyle(activeOption).getPropertyValue("margin-bottom"), 10);
+ ulWrapper.scrollTop = activeOption.offsetTop - ulWrapper.offsetHeight + activeOptionHeight;
+ }
+}
+
+PFElement.create(PfeSearchDroplist);
+PFElement.create(PfeAutocomplete);
+
+export default PfeAutocomplete;
+//# sourceMappingURL=pfe-autocomplete.js.map
diff --git a/elements/pfe-autocomplete/dist/pfe-autocomplete.js.map b/elements/pfe-autocomplete/dist/pfe-autocomplete.js.map
new file mode 100644
index 0000000000..5f0b4d45cb
--- /dev/null
+++ b/elements/pfe-autocomplete/dist/pfe-autocomplete.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"pfe-autocomplete.js","sources":["../_temp/pfe-autocomplete.js"],"sourcesContent":["/*!\n * PatternFly Elements: PfeAutocomplete 1.3.0\n * @license\n * Copyright 2021 Red Hat, Inc.\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n * \n*/\n\nimport PFElement from \"../../pfelement/dist/pfelement.js\";\nimport \"../../pfe-button/dist/pfe-button.js\";\n\nconst KEYCODE = {\n ENTER: 13,\n DOWN: 40,\n UP: 38,\n ESC: 27\n};\n\n// use this variable to debounce api call when user types very fast\nlet throttle = false;\n\nclass PfeAutocomplete extends PFElement {\n\n // Injected at build-time\n static get version() {\n return \"1.3.0\";\n }\n\n // Injected at build-time\n get html() {\n return `\n\n
\n
\n \n\n \n \n \n\n \n\n \n
\n \n
\n\n\n \n`;\n }\n\n // @TODO: Deprecating in 1.0 release\n // Injected at build-time\n static get schemaProperties() {\n return {\"debounce_timer\":{\"title\":\"Debounce\",\"description\":\"The amount of time that should pass before the next API call is made\",\"type\":\"string\",\"prefixed\":false},\"init_value\":{\"title\":\"Initial value\",\"description\":\"An initial value to show in the input field\",\"type\":\"string\",\"prefixed\":false},\"is_disabled\":{\"title\":\"Is disabled\",\"description\":\"Disable the input\",\"type\":\"boolean\",\"prefixed\":false},\"button-text\":{\"title\":\"Button text\",\"description\":\"Add button with text next to input field\",\"type\":\"string\",\"prefixed\":false}};\n }\n\n // Injected at build-time\n static get slots() {\n return {\"content\":{\"title\":\"Content\",\"type\":\"array\",\"namedSlot\":false,\"items\":{\"oneOf\":[{\"$ref\":\"input\"}]},\"required\":true}};\n }\n\n static get tag() {\n return \"pfe-autocomplete\";\n }\n\n get schemaUrl() {\n return \"pfe-autocomplete.json\";\n }\n\n get templateUrl() {\n return \"pfe-autocomplete.html\";\n }\n\n get styleUrl() {\n return \"pfe-autocomplete.scss\";\n }\n\n static get properties() {\n return {\n initValue: {\n title: \"Initial Value\",\n type: String,\n observer: \"_initValueChanged\"\n },\n loading: {\n title: \"Loading\",\n type: Boolean,\n default: false,\n observer: \"_loadingChanged\"\n },\n isDisabled: {\n title: \"Is disabled\",\n type: Boolean,\n default: false,\n observer: \"_isDisabledChanged\"\n },\n debounce: {\n title: \"Debounce\",\n type: Number,\n default: 300\n },\n selectedValue: {\n title: \"Selected value\",\n type: String\n },\n buttonText: {\n title: \"Button text\",\n type: String,\n observer: \"_buttonTextChanged\"\n }\n };\n }\n\n static get events() {\n return {\n search: `${this.tag}:search-event`,\n select: `${this.tag}:option-selected`,\n optionsShown: `${this.tag}:options-shown`,\n slotchange: `slotchange`\n };\n }\n\n constructor() {\n super(PfeAutocomplete);\n\n this._inputInit();\n\n this._slotchangeHandler = this._slotchangeHandler.bind(this);\n\n this._slot = this.shadowRoot.querySelector(\"slot\");\n this._slot.addEventListener(PfeAutocomplete.events.slotchange, this._slotchangeHandler);\n\n // @TODO: Confirm this is translatable\n this._ariaAnnounceTemplate = \"There are ${numOptions} suggestions. Use the up and down arrows to browse.\";\n\n // clear button\n this._clearBtn = this.shadowRoot.querySelector(\".clear-search\");\n this._clearBtn.addEventListener(\"click\", this._clear.bind(this));\n\n // search button\n this._searchBtn = this.shadowRoot.querySelector(\".search-button\");\n this._searchBtn.addEventListener(\"click\", this._search.bind(this));\n\n // textual search button\n this._searchBtnTextual = this.shadowRoot.querySelector(\".search-button--textual\");\n this._searchBtnText = this.shadowRoot.querySelector(\".search-button__text\");\n this._searchBtnTextual.addEventListener(\"click\", this._search.bind(this));\n\n this._dropdown = this.shadowRoot.querySelector(\"#dropdown\");\n this._dropdown.data = [];\n\n this.activeIndex = null;\n\n this.addEventListener(\"keyup\", this._inputKeyUp.bind(this));\n\n // these two events, fire search\n this.addEventListener(PfeAutocomplete.events.search, this._closeDroplist.bind(this));\n this.addEventListener(PfeAutocomplete.events.select, this._optionSelected.bind(this));\n }\n\n _inputInit() {\n // input box\n let slotNodes = this.shadowRoot.querySelector(\"slot\").assignedNodes();\n let slotElems = slotNodes.filter(n => n.nodeType === Node.ELEMENT_NODE);\n if (slotElems.length === 0) {\n console.error(`${PfeAutocomplete.tag}: There must be a input tag in the light DOM`);\n return;\n }\n this._input = slotElems[0];\n\n if (this._input.tagName.toLowerCase() !== \"input\") {\n console.error(`${PfeAutocomplete.tag}: The only child in the light DOM must be an input tag`);\n\n return;\n }\n\n this._input.addEventListener(\"input\", this._inputChanged.bind(this));\n this._input.addEventListener(\"blur\", this._closeDroplist.bind(this));\n\n this._input.setAttribute(\"role\", \"combobox\");\n\n if (!this._input.hasAttribute(\"aria-label\")) {\n this._input.setAttribute(\"aria-label\", \"Search\");\n }\n\n this._input.setAttribute(\"aria-autocomplete\", \"both\");\n this._input.setAttribute(\"aria-haspopup\", \"true\");\n this._input.setAttribute(\"type\", \"search\");\n this._input.setAttribute(\"autocomplete\", \"off\");\n this._input.setAttribute(\"autocorrect\", \"off\");\n this._input.setAttribute(\"autocapitalize\", \"off\");\n this._input.setAttribute(\"spellcheck\", \"false\");\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n\n this.removeEventListener(\"keyup\", this._inputKeyUp);\n\n this.removeEventListener(PfeAutocomplete.events.search, this._closeDroplist);\n this.removeEventListener(PfeAutocomplete.events.select, this._optionSelected);\n this._slot.removeEventListener(PfeAutocomplete.events.slotchange, this._slotchangeHandler);\n if (this._input) {\n this._input.removeEventListener(\"input\", this._inputChanged);\n this._input.removeEventListener(\"blur\", this._closeDroplist);\n }\n\n this._clearBtn.removeEventListener(\"click\", this._clear);\n this._searchBtn.removeEventListener(\"click\", this._search);\n this._searchBtnTextual.removeEventListener(\"click\", this._search);\n }\n\n _initValueChanged(oldVal, newVal) {\n if (newVal) {\n // set inputbox and buttons in the inner component\n this._input.value = newVal;\n if (newVal !== \"\" && !this.isDisabled) {\n this._searchBtn.removeAttribute(\"disabled\");\n this._searchBtnTextual.removeAttribute(\"disabled\");\n this._clearBtn.removeAttribute(\"hidden\");\n } else {\n this._searchBtn.setAttribute(\"disabled\", \"\");\n this._searchBtnTextual.setAttribute(\"disabled\", \"\");\n this._clearBtn.setAttribute(\"hidden\", \"\");\n }\n }\n }\n\n _loadingChanged() {\n if (!this.loading || this._input.value === \"\") {\n this.shadowRoot.querySelector(\".loading\").setAttribute(\"hidden\", \"\");\n } else {\n this.shadowRoot.querySelector(\".loading\").removeAttribute(\"hidden\");\n }\n }\n\n _isDisabledChanged() {\n if (this.isDisabled) {\n this._clearBtn.setAttribute(\"disabled\", \"\");\n this._searchBtn.setAttribute(\"disabled\", \"\");\n this._searchBtnTextual.setAttribute(\"disabled\", \"\");\n this._input.setAttribute(\"disabled\", \"\");\n } else {\n this._clearBtn.removeAttribute(\"disabled\");\n this._searchBtn.removeAttribute(\"disabled\");\n this._searchBtnTextual.removeAttribute(\"disabled\");\n this._input.removeAttribute(\"disabled\");\n }\n }\n\n _buttonTextChanged(oldVal, newVal) {\n if (oldVal === null) {\n this._searchBtn.setAttribute(\"hidden\", \"\");\n this._searchBtnText.innerHTML = newVal || \"Search\";\n this._searchBtnTextual.removeAttribute(\"hidden\");\n } else if (newVal === null || newVal === \"\") {\n this._searchBtnTextual.setAttribute(\"hidden\", \"\");\n this._searchBtn.removeAttribute(\"hidden\");\n } else {\n this._searchBtnText.innerHTML = newVal || \"Search\";\n }\n }\n\n _slotchangeHandler() {\n this._inputInit();\n this._dropdown._ariaAnnounceTemplate = this.getAttribute(\"aria-announce-template\") || this._ariaAnnounceTemplate;\n }\n\n _inputChanged() {\n if (this._input.value === \"\") {\n this._searchBtn.setAttribute(\"disabled\", \"\");\n this._searchBtnTextual.setAttribute(\"disabled\", \"\");\n this._clearBtn.setAttribute(\"hidden\", \"\");\n\n this._reset();\n return;\n } else {\n if (!this._input.hasAttribute(\"disabled\")) {\n this._searchBtn.removeAttribute(\"disabled\");\n this._searchBtnTextual.removeAttribute(\"disabled\");\n }\n this._clearBtn.removeAttribute(\"hidden\");\n }\n\n if (throttle === false) {\n throttle = true;\n\n window.setTimeout(() => {\n this._sendAutocompleteRequest(this._input.value);\n throttle = false;\n }, this.debounce);\n }\n }\n\n _clear() {\n this._input.value = \"\";\n this._clearBtn.setAttribute(\"hidden\", \"\");\n this._searchBtn.setAttribute(\"disabled\", \"\");\n this._searchBtnTextual.setAttribute(\"disabled\", \"\");\n this._input.focus();\n }\n\n _search() {\n this._doSearch(this._input.value);\n }\n\n _closeDroplist() {\n this._dropdown.open = null;\n this._dropdown.removeAttribute(\"active-index\");\n }\n\n _openDroplist() {\n this.activeIndex = null;\n this._dropdown.open = true;\n this._dropdown.setAttribute(\"active-index\", null);\n this.emitEvent(PfeAutocomplete.events.optionsShown, {\n composed: true\n });\n }\n\n _optionSelected(e) {\n let selectedValue = e.detail.optionValue;\n\n // update input box with selected value from options list\n this._input.value = selectedValue;\n\n // send search request\n this._doSearch(selectedValue);\n }\n\n _doSearch(searchQuery) {\n this.emitEvent(PfeAutocomplete.events.search, {\n detail: { searchValue: searchQuery },\n composed: true\n });\n this._reset();\n this.selectedValue = searchQuery;\n }\n\n _sendAutocompleteRequest(input) {\n if (!this.autocompleteRequest) return;\n\n this.autocompleteRequest({ query: input }, this._autocompleteCallback.bind(this));\n }\n\n _autocompleteCallback(response) {\n this._dropdown.data = response;\n this._dropdown.reflow = true;\n response.length !== 0 ? this._openDroplist() : this._closeDroplist();\n }\n\n _reset() {\n this._dropdown.activeIndex = null;\n this._input.setAttribute(\"aria-activedescendant\", \"\");\n this._dropdown.data = [];\n this._closeDroplist();\n }\n\n _activeOption(activeIndex) {\n if (activeIndex === null || activeIndex === \"null\") return;\n return this._dropdown.shadowRoot.querySelector(\"li:nth-child(\" + (parseInt(activeIndex, 10) + 1) + \")\").innerHTML;\n }\n\n _inputKeyUp(e) {\n let key = e.keyCode;\n\n if (\n this._dropdown.data.length === 0 &&\n key !== KEYCODE.DOWN &&\n key !== KEYCODE.UP &&\n key !== KEYCODE.ENTER &&\n key !== KEYCODE.ESC\n )\n return;\n\n let activeIndex = this._dropdown.activeIndex;\n let optionsLength = this._dropdown.data.length;\n\n if (key == KEYCODE.ESC) {\n this._closeDroplist();\n } else if (key === KEYCODE.UP) {\n if (!this._dropdown.open) {\n return;\n }\n\n activeIndex = activeIndex === null || activeIndex === \"null\" ? optionsLength : parseInt(activeIndex, 10);\n\n activeIndex -= 1;\n\n if (activeIndex < 0) {\n activeIndex = optionsLength - 1;\n }\n\n this._input.value = this._activeOption(activeIndex);\n } else if (key === KEYCODE.DOWN) {\n if (!this._dropdown.open) {\n return;\n }\n\n activeIndex = activeIndex === null || activeIndex === \"null\" ? -1 : parseInt(activeIndex, 10);\n activeIndex += 1;\n\n if (activeIndex > optionsLength - 1) {\n activeIndex = 0;\n }\n\n this._input.value = this._activeOption(activeIndex);\n } else if (key === KEYCODE.ENTER) {\n if (this._activeOption(activeIndex)) {\n this.emitEvent(PfeAutocomplete.events.select, {\n detail: { optionValue: this._activeOption(activeIndex) },\n composed: true\n });\n\n return;\n }\n\n let selectedValue = this._input.value;\n this._doSearch(selectedValue);\n return;\n }\n\n if (activeIndex !== null && activeIndex !== \"null\") {\n this._input.setAttribute(\"aria-activedescendant\", \"option-\" + activeIndex);\n } else {\n this._input.setAttribute(\"aria-activedescendant\", \"\");\n }\n\n this.activeIndex = activeIndex;\n this._dropdown.activeIndex = activeIndex;\n }\n}\n\n/*\n* - Attributes ------------------------------------\n* open | Set when the combo box dropdown is open\n* active-index | Set selected option\n* reflow | Re-renders the dropdown\n\n* - Events ----------------------------------------\n* pfe-autocomplete:option-selected | Fires when an option is selected.\n event.details.optionValue contains the selected value.\n*/\nclass PfeSearchDroplist extends PFElement {\n\n // Injected at build-time\n static get version() {\n return \"1.3.0\";\n }\n\n // Injected at build-time\n get html() {\n return `\n\n\n
`;\n })\n .join(\"\")}`;\n }\n\n _activeIndexChanged() {\n if (!this.data || this.data.length === 0 || this.activeIndex === null || this.activeIndex === \"null\") return;\n\n // remove active class\n if (this._ul.querySelector(\".active\")) {\n this._ul.querySelector(\".active\").classList.remove(\"active\");\n }\n\n // add active class to selected option\n let activeOption = this._ul.querySelector(\"li:nth-child(\" + (parseInt(this.activeIndex, 10) + 1) + \")\");\n\n activeOption.classList.add(\"active\");\n\n // scroll to selected element when selected item with keyboard is out of view\n let ulWrapper = this.shadowRoot.querySelector(\".droplist\");\n let activeOptionHeight = activeOption.offsetHeight;\n activeOptionHeight += parseInt(window.getComputedStyle(activeOption).getPropertyValue(\"margin-bottom\"), 10);\n ulWrapper.scrollTop = activeOption.offsetTop - ulWrapper.offsetHeight + activeOptionHeight;\n }\n}\n\nPFElement.create(PfeSearchDroplist);\nPFElement.create(PfeAutocomplete);\n\nexport default PfeAutocomplete;\n"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/elements/pfe-autocomplete/dist/pfe-autocomplete.json b/elements/pfe-autocomplete/dist/pfe-autocomplete.json
new file mode 100644
index 0000000000..69a434bb6b
--- /dev/null
+++ b/elements/pfe-autocomplete/dist/pfe-autocomplete.json
@@ -0,0 +1,63 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "title": "Autocomplete",
+ "description": "Autocomplete provides options in a dropdown list as user types in an input box by showing result from an api call.",
+ "type": "object",
+ "tag": "pfe-autocomplete",
+ "class": "pfe-autocomplete",
+ "category": "content",
+ "properties": {
+ "slots": {
+ "title": "Slots",
+ "description": "Definition of the supported slots",
+ "type": "object",
+ "properties": {
+ "content": {
+ "title": "Content",
+ "type": "array",
+ "namedSlot": false,
+ "items": {
+ "oneOf": [
+ {
+ "$ref": "input"
+ }
+ ]
+ },
+ "required": true
+ }
+ }
+ },
+ "attributes": {
+ "title": "Attributes",
+ "type": "object",
+ "properties": {
+ "debounce_timer": {
+ "title": "Debounce",
+ "description": "The amount of time that should pass before the next API call is made",
+ "type": "string",
+ "prefixed": false
+ },
+ "init_value": {
+ "title": "Initial value",
+ "description": "An initial value to show in the input field",
+ "type": "string",
+ "prefixed": false
+ },
+ "is_disabled": {
+ "title": "Is disabled",
+ "description": "Disable the input",
+ "type": "boolean",
+ "prefixed": false
+ },
+ "button-text": {
+ "title": "Button text",
+ "description": "Add button with text next to input field",
+ "type": "string",
+ "prefixed": false
+ }
+ }
+ }
+ },
+ "required": ["slots", "attributes"],
+ "additionalProperties": false
+}
diff --git a/elements/pfe-autocomplete/dist/pfe-autocomplete.min.css.map b/elements/pfe-autocomplete/dist/pfe-autocomplete.min.css.map
new file mode 100644
index 0000000000..cfb3f5a0b1
--- /dev/null
+++ b/elements/pfe-autocomplete/dist/pfe-autocomplete.min.css.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../../src/pfe-autocomplete.scss","../../../pfe-sass/extends/_extends.scss","../../../pfe-sass/mixins/_mixins.scss","../../../pfe-sass/mixins/_custom-properties.scss","pfe-autocomplete.css"],"names":[],"mappings":"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","file":"pfe-autocomplete.min.css","sourceRoot":"../src","sourcesContent":[null,null,null,null,".sr-only {\n position: absolute;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n height: 1px;\n width: 1px;\n margin: -1px;\n padding: 0;\n border: 0;\n}\n\n@media screen and (-ms-high-contrast: active), screen and (-ms-high-contrast: none) {\n :host {\n /* IE10+ */\n color: #151515 !important;\n }\n}\n\n:host([on=\"dark\"]) {\n --pfe-broadcasted--text: var(--pfe-theme--color--text--on-dark, #fff);\n --pfe-broadcasted--link: var(--pfe-theme--color--link--on-dark, #73bcf7);\n --pfe-broadcasted--link--hover: var(--pfe-theme--color--link--hover--on-dark, #bee1f4);\n --pfe-broadcasted--link--focus: var(--pfe-theme--color--link--focus--on-dark, #bee1f4);\n --pfe-broadcasted--link--visited: var(--pfe-theme--color--link--visited--on-dark, #bee1f4);\n --pfe-broadcasted--link-decoration: var(--pfe-theme--link-decoration--on-dark, none);\n --pfe-broadcasted--link-decoration--hover: var(--pfe-theme--link-decoration--hover--on-dark, underline);\n --pfe-broadcasted--link-decoration--focus: var(--pfe-theme--link-decoration--focus--on-dark, underline);\n --pfe-broadcasted--link-decoration--visited: var(--pfe-theme--link-decoration--visited--on-dark, none);\n}\n\n:host([on=\"saturated\"]) {\n --pfe-broadcasted--text: var(--pfe-theme--color--text--on-saturated, #fff);\n --pfe-broadcasted--link: var(--pfe-theme--color--link--on-saturated, #fff);\n --pfe-broadcasted--link--hover: var(--pfe-theme--color--link--hover--on-saturated, #fafafa);\n --pfe-broadcasted--link--focus: var(--pfe-theme--color--link--focus--on-saturated, #fafafa);\n --pfe-broadcasted--link--visited: var(--pfe-theme--color--link--visited--on-saturated, #d2d2d2);\n --pfe-broadcasted--link-decoration: var(--pfe-theme--link-decoration--on-saturated, underline);\n --pfe-broadcasted--link-decoration--hover: var(--pfe-theme--link-decoration--hover--on-saturated, underline);\n --pfe-broadcasted--link-decoration--focus: var(--pfe-theme--link-decoration--focus--on-saturated, underline);\n --pfe-broadcasted--link-decoration--visited: var(--pfe-theme--link-decoration--visited--on-saturated, underline);\n}\n\n:host([on=\"light\"]) {\n --pfe-broadcasted--text: var(--pfe-theme--color--text, #151515);\n --pfe-broadcasted--link: var(--pfe-theme--color--link, #06c);\n --pfe-broadcasted--link--hover: var(--pfe-theme--color--link--hover, #004080);\n --pfe-broadcasted--link--focus: var(--pfe-theme--color--link--focus, #004080);\n --pfe-broadcasted--link--visited: var(--pfe-theme--color--link--visited, #6753ac);\n --pfe-broadcasted--link-decoration: var(--pfe-theme--link-decoration, none);\n --pfe-broadcasted--link-decoration--hover: var(--pfe-theme--link-decoration--hover, underline);\n --pfe-broadcasted--link-decoration--focus: var(--pfe-theme--link-decoration--focus, underline);\n --pfe-broadcasted--link-decoration--visited: var(--pfe-theme--link-decoration--visited, none);\n}\n\n:host {\n display: block;\n position: relative;\n font-family: \"Red Hat Text\", \"RedHatText\", \"Overpass\", Overpass, Arial, sans-serif;\n font-family: var(--pfe-theme--font-family, \"Red Hat Text\", \"RedHatText\", \"Overpass\", Overpass, Arial, sans-serif);\n --pfe-autocomplete--BoxShadow: var(--pfe-theme--box-shadow--inset, inset 0 0 0.625rem 0 #fafafa);\n --pfe-autocomplete--BackgroundColor: var(--pfe-theme--color--surface--lightest, #fff);\n --pfe-autocomplete--Border: var(--pfe-theme--ui--border-width, 1px) var(--pfe-theme--ui--border-style, solid) var(--pfe-theme--color--surface--border, #d2d2d2);\n}\n\n:host([button-text]) {\n display: -webkit-box;\n display: -webkit-flex;\n display: -ms-flexbox;\n display: flex;\n}\n\n:host([button-text]) #wrapper {\n -webkit-box-flex: 1;\n -webkit-flex: 1;\n -ms-flex: 1;\n flex: 1;\n}\n\n:host([button-text]) #input-box-wrapper {\n position: relative;\n}\n\n:host([button-text]) button.clear-search {\n right: 10px;\n}\n\n:host([button-text]) ::slotted(input[type=\"search\"]::-webkit-search-cancel-button) {\n -webkit-appearance: none;\n}\n\n#input-box-wrapper {\n border-color: #06c;\n border-color: var(--pfe-theme--color--feedback--info, #06c);\n}\n\n#input-box-wrapper ::slotted(input) {\n width: 100%;\n -webkit-box-flex: 1;\n -webkit-flex: 1;\n -ms-flex: 1;\n flex: 1;\n -webkit-box-shadow: inset 0 0 0.625rem 0 #fafafa !important;\n box-shadow: inset 0 0 0.625rem 0 #fafafa !important;\n -webkit-box-shadow: var(--pfe-autocomplete--BoxShadow, var(--pfe-theme--box-shadow--inset, inset 0 0 0.625rem 0 #fafafa)) !important;\n box-shadow: var(--pfe-autocomplete--BoxShadow, var(--pfe-theme--box-shadow--inset, inset 0 0 0.625rem 0 #fafafa)) !important;\n padding-left: 10px;\n padding-right: 30px;\n border-radius: 2px;\n border-radius: var(--pfe-theme--ui--border-radius, 2px);\n background-color: #fff;\n background-color: var(--pfe-autocomplete--BackgroundColor, var(--pfe-theme--color--surface--lightest, #fff));\n border: 1px solid #d2d2d2;\n border: var(--pfe-autocomplete--Border, var(--pfe-theme--ui--border-width, 1px) var(--pfe-theme--ui--border-style, solid) var(--pfe-theme--color--surface--border, #d2d2d2));\n font-size: 1rem;\n font-size: var(--pfe-theme--font-size, 1rem);\n font-family: \"Red Hat Text\", \"RedHatText\", \"Overpass\", Overpass, Arial, sans-serif;\n font-family: var(--pfe-theme--font-family, \"Red Hat Text\", \"RedHatText\", \"Overpass\", Overpass, Arial, sans-serif);\n height: calc(20px * 2);\n height: calc(var(--pfe-theme--ui--element--size, 20px) * 2);\n -webkit-transition: border-color ease-in-out 0.15s, -webkit-box-shadow ease-in-out 0.15s;\n transition: border-color ease-in-out 0.15s, -webkit-box-shadow ease-in-out 0.15s;\n transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;\n transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s, -webkit-box-shadow ease-in-out 0.15s;\n opacity: 1;\n outline: 0;\n}\n\n#input-box-wrapper ::slotted(input:disabled),\n#input-box-wrapper button:disabled {\n cursor: not-allowed;\n color: #ccc;\n}\n\n#input-box-wrapper ::slotted(input:disabled) {\n padding-right: 10px;\n}\n\n#input-box-wrapper button:focus,\n#input-box-wrapper ::slotted(input:focus) {\n outline: 0;\n}\n\n#input-box-wrapper ::slotted(input),\n#input-box-wrapper button {\n -webkit-appearance: none;\n}\n\n#input-box-wrapper ::slotted([type=\"search\"]::-ms-clear) {\n display: none;\n}\n\n#input-box-wrapper ::slotted(input[type=\"search\"]::-webkit-search-cancel-button),\n#input-box-wrapper ::slotted(input[type=\"search\"]::-webkit-search-decoration) {\n -webkit-appearance: none;\n}\n\nbutton {\n color: #6a6e73;\n color: var(--pfe-theme--color--ui-base, #6a6e73);\n background-color: transparent;\n border: none;\n position: absolute;\n top: 0;\n bottom: 0;\n cursor: pointer;\n}\n\nbutton.clear-search {\n right: 30px;\n width: 20px;\n margin: 2px 1px;\n background-color: #fff;\n background-color: var(--pfe-theme--color--surface--lightest, #fff);\n}\n\nbutton.clear-search:hover {\n color: #6a6e73;\n color: var(--pfe-theme--color--ui-base, #6a6e73);\n}\n\nbutton.clear-search svg {\n width: 12px;\n stroke: #d2d2d2;\n stroke: var(--pfe-theme--color--surface--border, #d2d2d2);\n}\n\nbutton.clear-search:hover svg,\nbutton.clear-search:focus svg {\n opacity: 1;\n stroke: #06c;\n stroke: var(--pfe-theme--color--link, #06c);\n}\n\nbutton[disabled].clear-search:hover svg,\nbutton[disabled].clear-search:focus svg {\n stroke: #d2d2d2;\n stroke: var(--pfe-theme--color--surface--border, #d2d2d2);\n}\n\nbutton.search-button {\n right: 1px;\n width: 30px;\n}\n\nbutton.search-button svg {\n fill: #06c;\n fill: var(--pfe-theme--color--link, #06c);\n width: 16px;\n}\n\nbutton.search-button:hover svg,\nbutton.search-button:focus svg {\n fill: #004080;\n fill: var(--pfe-theme--color--link--hover, #004080);\n}\n\nbutton.search-button:disabled svg {\n fill: #d2d2d2;\n fill: var(--pfe-theme--color--ui-disabled, #d2d2d2);\n}\n\npfe-button.search-button--textual {\n margin-left: 16px;\n}\n\n.loading {\n position: absolute;\n width: 30px;\n right: 52px;\n top: 0px;\n bottom: 0px;\n}\n\n.loading svg {\n width: 26px;\n padding-top: 7px;\n}\n\n/*# sourceMappingURL=pfe-autocomplete.css.map */\n"]}
\ No newline at end of file
diff --git a/elements/pfe-autocomplete/dist/pfe-autocomplete.min.js b/elements/pfe-autocomplete/dist/pfe-autocomplete.min.js
new file mode 100644
index 0000000000..9d1b7d5d65
--- /dev/null
+++ b/elements/pfe-autocomplete/dist/pfe-autocomplete.min.js
@@ -0,0 +1,26 @@
+import e from"../../pfelement/dist/pfelement.min.js";import"../../pfe-button/dist/pfe-button.min.js";
+/*!
+ * PatternFly Elements: PfeAutocomplete 1.3.0
+ * @license
+ * Copyright 2021 Red Hat, Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+*/const t={ENTER:13,DOWN:40,UP:38,ESC:27};let i=!1;class o extends e{static get version(){return"1.3.0"}get html(){return'\n\n
\n
\n \n\n \n \n \n\n \n\n \n
\n \n
\n\n\n \n'}static get schemaProperties(){return{debounce_timer:{title:"Debounce",description:"The amount of time that should pass before the next API call is made",type:"string",prefixed:!1},init_value:{title:"Initial value",description:"An initial value to show in the input field",type:"string",prefixed:!1},is_disabled:{title:"Is disabled",description:"Disable the input",type:"boolean",prefixed:!1},"button-text":{title:"Button text",description:"Add button with text next to input field",type:"string",prefixed:!1}}}static get slots(){return{content:{title:"Content",type:"array",namedSlot:!1,items:{oneOf:[{$ref:"input"}]},required:!0}}}static get tag(){return"pfe-autocomplete"}get schemaUrl(){return"pfe-autocomplete.json"}get templateUrl(){return"pfe-autocomplete.html"}get styleUrl(){return"pfe-autocomplete.scss"}static get properties(){return{initValue:{title:"Initial Value",type:String,observer:"_initValueChanged"},loading:{title:"Loading",type:Boolean,default:!1,observer:"_loadingChanged"},isDisabled:{title:"Is disabled",type:Boolean,default:!1,observer:"_isDisabledChanged"},debounce:{title:"Debounce",type:Number,default:300},selectedValue:{title:"Selected value",type:String},buttonText:{title:"Button text",type:String,observer:"_buttonTextChanged"}}}static get events(){return{search:`${this.tag}:search-event`,select:`${this.tag}:option-selected`,optionsShown:`${this.tag}:options-shown`,slotchange:"slotchange"}}constructor(){super(o),this._inputInit(),this._slotchangeHandler=this._slotchangeHandler.bind(this),this._slot=this.shadowRoot.querySelector("slot"),this._slot.addEventListener(o.events.slotchange,this._slotchangeHandler),this._ariaAnnounceTemplate="There are ${numOptions} suggestions. Use the up and down arrows to browse.",this._clearBtn=this.shadowRoot.querySelector(".clear-search"),this._clearBtn.addEventListener("click",this._clear.bind(this)),this._searchBtn=this.shadowRoot.querySelector(".search-button"),this._searchBtn.addEventListener("click",this._search.bind(this)),this._searchBtnTextual=this.shadowRoot.querySelector(".search-button--textual"),this._searchBtnText=this.shadowRoot.querySelector(".search-button__text"),this._searchBtnTextual.addEventListener("click",this._search.bind(this)),this._dropdown=this.shadowRoot.querySelector("#dropdown"),this._dropdown.data=[],this.activeIndex=null,this.addEventListener("keyup",this._inputKeyUp.bind(this)),this.addEventListener(o.events.search,this._closeDroplist.bind(this)),this.addEventListener(o.events.select,this._optionSelected.bind(this))}_inputInit(){let e=this.shadowRoot.querySelector("slot").assignedNodes().filter(e=>e.nodeType===Node.ELEMENT_NODE);0!==e.length?(this._input=e[0],"input"===this._input.tagName.toLowerCase()?(this._input.addEventListener("input",this._inputChanged.bind(this)),this._input.addEventListener("blur",this._closeDroplist.bind(this)),this._input.setAttribute("role","combobox"),this._input.hasAttribute("aria-label")||this._input.setAttribute("aria-label","Search"),this._input.setAttribute("aria-autocomplete","both"),this._input.setAttribute("aria-haspopup","true"),this._input.setAttribute("type","search"),this._input.setAttribute("autocomplete","off"),this._input.setAttribute("autocorrect","off"),this._input.setAttribute("autocapitalize","off"),this._input.setAttribute("spellcheck","false")):console.error(`${o.tag}: The only child in the light DOM must be an input tag`)):console.error(`${o.tag}: There must be a input tag in the light DOM`)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("keyup",this._inputKeyUp),this.removeEventListener(o.events.search,this._closeDroplist),this.removeEventListener(o.events.select,this._optionSelected),this._slot.removeEventListener(o.events.slotchange,this._slotchangeHandler),this._input&&(this._input.removeEventListener("input",this._inputChanged),this._input.removeEventListener("blur",this._closeDroplist)),this._clearBtn.removeEventListener("click",this._clear),this._searchBtn.removeEventListener("click",this._search),this._searchBtnTextual.removeEventListener("click",this._search)}_initValueChanged(e,t){t&&(this._input.value=t,""===t||this.isDisabled?(this._searchBtn.setAttribute("disabled",""),this._searchBtnTextual.setAttribute("disabled",""),this._clearBtn.setAttribute("hidden","")):(this._searchBtn.removeAttribute("disabled"),this._searchBtnTextual.removeAttribute("disabled"),this._clearBtn.removeAttribute("hidden")))}_loadingChanged(){this.loading&&""!==this._input.value?this.shadowRoot.querySelector(".loading").removeAttribute("hidden"):this.shadowRoot.querySelector(".loading").setAttribute("hidden","")}_isDisabledChanged(){this.isDisabled?(this._clearBtn.setAttribute("disabled",""),this._searchBtn.setAttribute("disabled",""),this._searchBtnTextual.setAttribute("disabled",""),this._input.setAttribute("disabled","")):(this._clearBtn.removeAttribute("disabled"),this._searchBtn.removeAttribute("disabled"),this._searchBtnTextual.removeAttribute("disabled"),this._input.removeAttribute("disabled"))}_buttonTextChanged(e,t){null===e?(this._searchBtn.setAttribute("hidden",""),this._searchBtnText.innerHTML=t||"Search",this._searchBtnTextual.removeAttribute("hidden")):null===t||""===t?(this._searchBtnTextual.setAttribute("hidden",""),this._searchBtn.removeAttribute("hidden")):this._searchBtnText.innerHTML=t||"Search"}_slotchangeHandler(){this._inputInit(),this._dropdown._ariaAnnounceTemplate=this.getAttribute("aria-announce-template")||this._ariaAnnounceTemplate}_inputChanged(){if(""===this._input.value)return this._searchBtn.setAttribute("disabled",""),this._searchBtnTextual.setAttribute("disabled",""),this._clearBtn.setAttribute("hidden",""),void this._reset();this._input.hasAttribute("disabled")||(this._searchBtn.removeAttribute("disabled"),this._searchBtnTextual.removeAttribute("disabled")),this._clearBtn.removeAttribute("hidden"),!1===i&&(i=!0,window.setTimeout(()=>{this._sendAutocompleteRequest(this._input.value),i=!1},this.debounce))}_clear(){this._input.value="",this._clearBtn.setAttribute("hidden",""),this._searchBtn.setAttribute("disabled",""),this._searchBtnTextual.setAttribute("disabled",""),this._input.focus()}_search(){this._doSearch(this._input.value)}_closeDroplist(){this._dropdown.open=null,this._dropdown.removeAttribute("active-index")}_openDroplist(){this.activeIndex=null,this._dropdown.open=!0,this._dropdown.setAttribute("active-index",null),this.emitEvent(o.events.optionsShown,{composed:!0})}_optionSelected(e){let t=e.detail.optionValue;this._input.value=t,this._doSearch(t)}_doSearch(e){this.emitEvent(o.events.search,{detail:{searchValue:e},composed:!0}),this._reset(),this.selectedValue=e}_sendAutocompleteRequest(e){this.autocompleteRequest&&this.autocompleteRequest({query:e},this._autocompleteCallback.bind(this))}_autocompleteCallback(e){this._dropdown.data=e,this._dropdown.reflow=!0,0!==e.length?this._openDroplist():this._closeDroplist()}_reset(){this._dropdown.activeIndex=null,this._input.setAttribute("aria-activedescendant",""),this._dropdown.data=[],this._closeDroplist()}_activeOption(e){if(null!==e&&"null"!==e)return this._dropdown.shadowRoot.querySelector("li:nth-child("+(parseInt(e,10)+1)+")").innerHTML}_inputKeyUp(e){let i=e.keyCode;if(0===this._dropdown.data.length&&i!==t.DOWN&&i!==t.UP&&i!==t.ENTER&&i!==t.ESC)return;let r=this._dropdown.activeIndex,s=this._dropdown.data.length;if(i==t.ESC)this._closeDroplist();else if(i===t.UP){if(!this._dropdown.open)return;r=null===r||"null"===r?s:parseInt(r,10),(r-=1)<0&&(r=s-1),this._input.value=this._activeOption(r)}else if(i===t.DOWN){if(!this._dropdown.open)return;r=null===r||"null"===r?-1:parseInt(r,10),(r+=1)>s-1&&(r=0),this._input.value=this._activeOption(r)}else if(i===t.ENTER){if(this._activeOption(r))return void this.emitEvent(o.events.select,{detail:{optionValue:this._activeOption(r)},composed:!0});let e=this._input.value;return void this._doSearch(e)}null!==r&&"null"!==r?this._input.setAttribute("aria-activedescendant","option-"+r):this._input.setAttribute("aria-activedescendant",""),this.activeIndex=r,this._dropdown.activeIndex=r}}class r extends e{static get version(){return"1.3.0"}get html(){return'\n\n\n
\n
\n
\n
'}static get tag(){return"pfe-search-droplist"}get templateUrl(){return"pfe-search-droplist.html"}get styleUrl(){return"pfe-search-droplist.scss"}static get properties(){return{open:{title:"Open",type:Boolean},reflow:{title:"Reflow",type:Boolean,observer:"_renderOptions"},activeIndex:{title:"Active index",type:Number,observer:"_activeIndexChanged"}}}constructor(){super(r)}connectedCallback(){super.connectedCallback(),this._ariaAnnounce=this.shadowRoot.querySelector(".suggestions-aria-help"),this.activeIndex=null,this._ul=this.shadowRoot.querySelector("ul"),this._ul.addEventListener("mousedown",this._optionSelected.bind(this))}disconnectedCallback(){super.disconnectedCallback(),this._ul.removeEventListener("mousedown",this._optionSelected)}_optionSelected(e){"LI"===e.target.tagName&&this.emitEvent(o.events.select,{detail:{optionValue:e.target.innerText},composed:!0})}_renderOptions(){let e=this.data,t="";this._ariaAnnounceTemplate&&(t=this._ariaAnnounceTemplate.replace("${numOptions}",e.length)),this._ariaAnnounce.textContent=t,this._ariaAnnounce.setAttribute("aria-live","polite"),this._ul.innerHTML=`${e.map((e,t)=>`
${e}
`).join("")}`}_activeIndexChanged(){if(!this.data||0===this.data.length||null===this.activeIndex||"null"===this.activeIndex)return;this._ul.querySelector(".active")&&this._ul.querySelector(".active").classList.remove("active");let e=this._ul.querySelector("li:nth-child("+(parseInt(this.activeIndex,10)+1)+")");e.classList.add("active");let t=this.shadowRoot.querySelector(".droplist"),i=e.offsetHeight;i+=parseInt(window.getComputedStyle(e).getPropertyValue("margin-bottom"),10),t.scrollTop=e.offsetTop-t.offsetHeight+i}}e.create(r),e.create(o);export default o;
+//# sourceMappingURL=pfe-autocomplete.min.js.map
diff --git a/elements/pfe-autocomplete/dist/pfe-autocomplete.min.js.map b/elements/pfe-autocomplete/dist/pfe-autocomplete.min.js.map
new file mode 100644
index 0000000000..c0f64e1433
--- /dev/null
+++ b/elements/pfe-autocomplete/dist/pfe-autocomplete.min.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"pfe-autocomplete.min.js","sources":["../_temp/pfe-autocomplete.js"],"sourcesContent":["/*!\n * PatternFly Elements: PfeAutocomplete 1.3.0\n * @license\n * Copyright 2021 Red Hat, Inc.\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n * \n*/\n\nimport PFElement from \"../../pfelement/dist/pfelement.js\";\nimport \"../../pfe-button/dist/pfe-button.js\";\n\nconst KEYCODE = {\n ENTER: 13,\n DOWN: 40,\n UP: 38,\n ESC: 27\n};\n\n// use this variable to debounce api call when user types very fast\nlet throttle = false;\n\nclass PfeAutocomplete extends PFElement {\n\n // Injected at build-time\n static get version() {\n return \"1.3.0\";\n }\n\n // Injected at build-time\n get html() {\n return `\n\n
\n
\n \n\n \n \n \n\n \n\n \n
\n \n
\n\n\n \n`;\n }\n\n // @TODO: Deprecating in 1.0 release\n // Injected at build-time\n static get schemaProperties() {\n return {\"debounce_timer\":{\"title\":\"Debounce\",\"description\":\"The amount of time that should pass before the next API call is made\",\"type\":\"string\",\"prefixed\":false},\"init_value\":{\"title\":\"Initial value\",\"description\":\"An initial value to show in the input field\",\"type\":\"string\",\"prefixed\":false},\"is_disabled\":{\"title\":\"Is disabled\",\"description\":\"Disable the input\",\"type\":\"boolean\",\"prefixed\":false},\"button-text\":{\"title\":\"Button text\",\"description\":\"Add button with text next to input field\",\"type\":\"string\",\"prefixed\":false}};\n }\n\n // Injected at build-time\n static get slots() {\n return {\"content\":{\"title\":\"Content\",\"type\":\"array\",\"namedSlot\":false,\"items\":{\"oneOf\":[{\"$ref\":\"input\"}]},\"required\":true}};\n }\n\n static get tag() {\n return \"pfe-autocomplete\";\n }\n\n get schemaUrl() {\n return \"pfe-autocomplete.json\";\n }\n\n get templateUrl() {\n return \"pfe-autocomplete.html\";\n }\n\n get styleUrl() {\n return \"pfe-autocomplete.scss\";\n }\n\n static get properties() {\n return {\n initValue: {\n title: \"Initial Value\",\n type: String,\n observer: \"_initValueChanged\"\n },\n loading: {\n title: \"Loading\",\n type: Boolean,\n default: false,\n observer: \"_loadingChanged\"\n },\n isDisabled: {\n title: \"Is disabled\",\n type: Boolean,\n default: false,\n observer: \"_isDisabledChanged\"\n },\n debounce: {\n title: \"Debounce\",\n type: Number,\n default: 300\n },\n selectedValue: {\n title: \"Selected value\",\n type: String\n },\n buttonText: {\n title: \"Button text\",\n type: String,\n observer: \"_buttonTextChanged\"\n }\n };\n }\n\n static get events() {\n return {\n search: `${this.tag}:search-event`,\n select: `${this.tag}:option-selected`,\n optionsShown: `${this.tag}:options-shown`,\n slotchange: `slotchange`\n };\n }\n\n constructor() {\n super(PfeAutocomplete);\n\n this._inputInit();\n\n this._slotchangeHandler = this._slotchangeHandler.bind(this);\n\n this._slot = this.shadowRoot.querySelector(\"slot\");\n this._slot.addEventListener(PfeAutocomplete.events.slotchange, this._slotchangeHandler);\n\n // @TODO: Confirm this is translatable\n this._ariaAnnounceTemplate = \"There are ${numOptions} suggestions. Use the up and down arrows to browse.\";\n\n // clear button\n this._clearBtn = this.shadowRoot.querySelector(\".clear-search\");\n this._clearBtn.addEventListener(\"click\", this._clear.bind(this));\n\n // search button\n this._searchBtn = this.shadowRoot.querySelector(\".search-button\");\n this._searchBtn.addEventListener(\"click\", this._search.bind(this));\n\n // textual search button\n this._searchBtnTextual = this.shadowRoot.querySelector(\".search-button--textual\");\n this._searchBtnText = this.shadowRoot.querySelector(\".search-button__text\");\n this._searchBtnTextual.addEventListener(\"click\", this._search.bind(this));\n\n this._dropdown = this.shadowRoot.querySelector(\"#dropdown\");\n this._dropdown.data = [];\n\n this.activeIndex = null;\n\n this.addEventListener(\"keyup\", this._inputKeyUp.bind(this));\n\n // these two events, fire search\n this.addEventListener(PfeAutocomplete.events.search, this._closeDroplist.bind(this));\n this.addEventListener(PfeAutocomplete.events.select, this._optionSelected.bind(this));\n }\n\n _inputInit() {\n // input box\n let slotNodes = this.shadowRoot.querySelector(\"slot\").assignedNodes();\n let slotElems = slotNodes.filter(n => n.nodeType === Node.ELEMENT_NODE);\n if (slotElems.length === 0) {\n console.error(`${PfeAutocomplete.tag}: There must be a input tag in the light DOM`);\n return;\n }\n this._input = slotElems[0];\n\n if (this._input.tagName.toLowerCase() !== \"input\") {\n console.error(`${PfeAutocomplete.tag}: The only child in the light DOM must be an input tag`);\n\n return;\n }\n\n this._input.addEventListener(\"input\", this._inputChanged.bind(this));\n this._input.addEventListener(\"blur\", this._closeDroplist.bind(this));\n\n this._input.setAttribute(\"role\", \"combobox\");\n\n if (!this._input.hasAttribute(\"aria-label\")) {\n this._input.setAttribute(\"aria-label\", \"Search\");\n }\n\n this._input.setAttribute(\"aria-autocomplete\", \"both\");\n this._input.setAttribute(\"aria-haspopup\", \"true\");\n this._input.setAttribute(\"type\", \"search\");\n this._input.setAttribute(\"autocomplete\", \"off\");\n this._input.setAttribute(\"autocorrect\", \"off\");\n this._input.setAttribute(\"autocapitalize\", \"off\");\n this._input.setAttribute(\"spellcheck\", \"false\");\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n\n this.removeEventListener(\"keyup\", this._inputKeyUp);\n\n this.removeEventListener(PfeAutocomplete.events.search, this._closeDroplist);\n this.removeEventListener(PfeAutocomplete.events.select, this._optionSelected);\n this._slot.removeEventListener(PfeAutocomplete.events.slotchange, this._slotchangeHandler);\n if (this._input) {\n this._input.removeEventListener(\"input\", this._inputChanged);\n this._input.removeEventListener(\"blur\", this._closeDroplist);\n }\n\n this._clearBtn.removeEventListener(\"click\", this._clear);\n this._searchBtn.removeEventListener(\"click\", this._search);\n this._searchBtnTextual.removeEventListener(\"click\", this._search);\n }\n\n _initValueChanged(oldVal, newVal) {\n if (newVal) {\n // set inputbox and buttons in the inner component\n this._input.value = newVal;\n if (newVal !== \"\" && !this.isDisabled) {\n this._searchBtn.removeAttribute(\"disabled\");\n this._searchBtnTextual.removeAttribute(\"disabled\");\n this._clearBtn.removeAttribute(\"hidden\");\n } else {\n this._searchBtn.setAttribute(\"disabled\", \"\");\n this._searchBtnTextual.setAttribute(\"disabled\", \"\");\n this._clearBtn.setAttribute(\"hidden\", \"\");\n }\n }\n }\n\n _loadingChanged() {\n if (!this.loading || this._input.value === \"\") {\n this.shadowRoot.querySelector(\".loading\").setAttribute(\"hidden\", \"\");\n } else {\n this.shadowRoot.querySelector(\".loading\").removeAttribute(\"hidden\");\n }\n }\n\n _isDisabledChanged() {\n if (this.isDisabled) {\n this._clearBtn.setAttribute(\"disabled\", \"\");\n this._searchBtn.setAttribute(\"disabled\", \"\");\n this._searchBtnTextual.setAttribute(\"disabled\", \"\");\n this._input.setAttribute(\"disabled\", \"\");\n } else {\n this._clearBtn.removeAttribute(\"disabled\");\n this._searchBtn.removeAttribute(\"disabled\");\n this._searchBtnTextual.removeAttribute(\"disabled\");\n this._input.removeAttribute(\"disabled\");\n }\n }\n\n _buttonTextChanged(oldVal, newVal) {\n if (oldVal === null) {\n this._searchBtn.setAttribute(\"hidden\", \"\");\n this._searchBtnText.innerHTML = newVal || \"Search\";\n this._searchBtnTextual.removeAttribute(\"hidden\");\n } else if (newVal === null || newVal === \"\") {\n this._searchBtnTextual.setAttribute(\"hidden\", \"\");\n this._searchBtn.removeAttribute(\"hidden\");\n } else {\n this._searchBtnText.innerHTML = newVal || \"Search\";\n }\n }\n\n _slotchangeHandler() {\n this._inputInit();\n this._dropdown._ariaAnnounceTemplate = this.getAttribute(\"aria-announce-template\") || this._ariaAnnounceTemplate;\n }\n\n _inputChanged() {\n if (this._input.value === \"\") {\n this._searchBtn.setAttribute(\"disabled\", \"\");\n this._searchBtnTextual.setAttribute(\"disabled\", \"\");\n this._clearBtn.setAttribute(\"hidden\", \"\");\n\n this._reset();\n return;\n } else {\n if (!this._input.hasAttribute(\"disabled\")) {\n this._searchBtn.removeAttribute(\"disabled\");\n this._searchBtnTextual.removeAttribute(\"disabled\");\n }\n this._clearBtn.removeAttribute(\"hidden\");\n }\n\n if (throttle === false) {\n throttle = true;\n\n window.setTimeout(() => {\n this._sendAutocompleteRequest(this._input.value);\n throttle = false;\n }, this.debounce);\n }\n }\n\n _clear() {\n this._input.value = \"\";\n this._clearBtn.setAttribute(\"hidden\", \"\");\n this._searchBtn.setAttribute(\"disabled\", \"\");\n this._searchBtnTextual.setAttribute(\"disabled\", \"\");\n this._input.focus();\n }\n\n _search() {\n this._doSearch(this._input.value);\n }\n\n _closeDroplist() {\n this._dropdown.open = null;\n this._dropdown.removeAttribute(\"active-index\");\n }\n\n _openDroplist() {\n this.activeIndex = null;\n this._dropdown.open = true;\n this._dropdown.setAttribute(\"active-index\", null);\n this.emitEvent(PfeAutocomplete.events.optionsShown, {\n composed: true\n });\n }\n\n _optionSelected(e) {\n let selectedValue = e.detail.optionValue;\n\n // update input box with selected value from options list\n this._input.value = selectedValue;\n\n // send search request\n this._doSearch(selectedValue);\n }\n\n _doSearch(searchQuery) {\n this.emitEvent(PfeAutocomplete.events.search, {\n detail: { searchValue: searchQuery },\n composed: true\n });\n this._reset();\n this.selectedValue = searchQuery;\n }\n\n _sendAutocompleteRequest(input) {\n if (!this.autocompleteRequest) return;\n\n this.autocompleteRequest({ query: input }, this._autocompleteCallback.bind(this));\n }\n\n _autocompleteCallback(response) {\n this._dropdown.data = response;\n this._dropdown.reflow = true;\n response.length !== 0 ? this._openDroplist() : this._closeDroplist();\n }\n\n _reset() {\n this._dropdown.activeIndex = null;\n this._input.setAttribute(\"aria-activedescendant\", \"\");\n this._dropdown.data = [];\n this._closeDroplist();\n }\n\n _activeOption(activeIndex) {\n if (activeIndex === null || activeIndex === \"null\") return;\n return this._dropdown.shadowRoot.querySelector(\"li:nth-child(\" + (parseInt(activeIndex, 10) + 1) + \")\").innerHTML;\n }\n\n _inputKeyUp(e) {\n let key = e.keyCode;\n\n if (\n this._dropdown.data.length === 0 &&\n key !== KEYCODE.DOWN &&\n key !== KEYCODE.UP &&\n key !== KEYCODE.ENTER &&\n key !== KEYCODE.ESC\n )\n return;\n\n let activeIndex = this._dropdown.activeIndex;\n let optionsLength = this._dropdown.data.length;\n\n if (key == KEYCODE.ESC) {\n this._closeDroplist();\n } else if (key === KEYCODE.UP) {\n if (!this._dropdown.open) {\n return;\n }\n\n activeIndex = activeIndex === null || activeIndex === \"null\" ? optionsLength : parseInt(activeIndex, 10);\n\n activeIndex -= 1;\n\n if (activeIndex < 0) {\n activeIndex = optionsLength - 1;\n }\n\n this._input.value = this._activeOption(activeIndex);\n } else if (key === KEYCODE.DOWN) {\n if (!this._dropdown.open) {\n return;\n }\n\n activeIndex = activeIndex === null || activeIndex === \"null\" ? -1 : parseInt(activeIndex, 10);\n activeIndex += 1;\n\n if (activeIndex > optionsLength - 1) {\n activeIndex = 0;\n }\n\n this._input.value = this._activeOption(activeIndex);\n } else if (key === KEYCODE.ENTER) {\n if (this._activeOption(activeIndex)) {\n this.emitEvent(PfeAutocomplete.events.select, {\n detail: { optionValue: this._activeOption(activeIndex) },\n composed: true\n });\n\n return;\n }\n\n let selectedValue = this._input.value;\n this._doSearch(selectedValue);\n return;\n }\n\n if (activeIndex !== null && activeIndex !== \"null\") {\n this._input.setAttribute(\"aria-activedescendant\", \"option-\" + activeIndex);\n } else {\n this._input.setAttribute(\"aria-activedescendant\", \"\");\n }\n\n this.activeIndex = activeIndex;\n this._dropdown.activeIndex = activeIndex;\n }\n}\n\n/*\n* - Attributes ------------------------------------\n* open | Set when the combo box dropdown is open\n* active-index | Set selected option\n* reflow | Re-renders the dropdown\n\n* - Events ----------------------------------------\n* pfe-autocomplete:option-selected | Fires when an option is selected.\n event.details.optionValue contains the selected value.\n*/\nclass PfeSearchDroplist extends PFElement {\n\n // Injected at build-time\n static get version() {\n return \"1.3.0\";\n }\n\n // Injected at build-time\n get html() {\n return `\n\n\n
`;\n })\n .join(\"\")}`;\n }\n\n _activeIndexChanged() {\n if (!this.data || this.data.length === 0 || this.activeIndex === null || this.activeIndex === \"null\") return;\n\n // remove active class\n if (this._ul.querySelector(\".active\")) {\n this._ul.querySelector(\".active\").classList.remove(\"active\");\n }\n\n // add active class to selected option\n let activeOption = this._ul.querySelector(\"li:nth-child(\" + (parseInt(this.activeIndex, 10) + 1) + \")\");\n\n activeOption.classList.add(\"active\");\n\n // scroll to selected element when selected item with keyboard is out of view\n let ulWrapper = this.shadowRoot.querySelector(\".droplist\");\n let activeOptionHeight = activeOption.offsetHeight;\n activeOptionHeight += parseInt(window.getComputedStyle(activeOption).getPropertyValue(\"margin-bottom\"), 10);\n ulWrapper.scrollTop = activeOption.offsetTop - ulWrapper.offsetHeight + activeOptionHeight;\n }\n}\n\nPFElement.create(PfeSearchDroplist);\nPFElement.create(PfeAutocomplete);\n\nexport default PfeAutocomplete;\n"],"names":["KEYCODE","ENTER","DOWN","UP","ESC","throttle","PfeAutocomplete","PFElement","version","html","schemaProperties","debounce_timer","title","description","type","prefixed","init_value","is_disabled","button-text","slots","content","namedSlot","items","oneOf","$ref","required","tag","schemaUrl","templateUrl","styleUrl","properties","initValue","String","observer","loading","Boolean","default","isDisabled","debounce","Number","selectedValue","buttonText","events","search","this","select","optionsShown","slotchange","[object Object]","super","_inputInit","_slotchangeHandler","bind","_slot","shadowRoot","querySelector","addEventListener","_ariaAnnounceTemplate","_clearBtn","_clear","_searchBtn","_search","_searchBtnTextual","_searchBtnText","_dropdown","data","activeIndex","_inputKeyUp","_closeDroplist","_optionSelected","slotElems","assignedNodes","filter","n","nodeType","Node","ELEMENT_NODE","length","_input","tagName","toLowerCase","_inputChanged","setAttribute","hasAttribute","console","error","disconnectedCallback","removeEventListener","oldVal","newVal","value","removeAttribute","innerHTML","getAttribute","_reset","window","setTimeout","_sendAutocompleteRequest","focus","_doSearch","open","emitEvent","composed","e","detail","optionValue","searchQuery","searchValue","input","autocompleteRequest","query","_autocompleteCallback","response","reflow","_openDroplist","parseInt","key","keyCode","optionsLength","_activeOption","PfeSearchDroplist","connectedCallback","_ariaAnnounce","_ul","target","innerText","options","ariaAnnounceText","replace","textContent","map","item","index","join","classList","remove","activeOption","add","ulWrapper","activeOptionHeight","offsetHeight","getComputedStyle","getPropertyValue","scrollTop","offsetTop","create"],"mappings":"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"}
\ No newline at end of file
diff --git a/elements/pfe-autocomplete/dist/pfe-autocomplete.umd.js b/elements/pfe-autocomplete/dist/pfe-autocomplete.umd.js
new file mode 100644
index 0000000000..efa9c966fb
--- /dev/null
+++ b/elements/pfe-autocomplete/dist/pfe-autocomplete.umd.js
@@ -0,0 +1,701 @@
+(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('../../pfelement/dist/pfelement.umd'), require('../../pfe-button/dist/pfe-button.umd')) :
+ typeof define === 'function' && define.amd ? define(['../../pfelement/dist/pfelement.umd', '../../pfe-button/dist/pfe-button.umd'], factory) :
+ (global = global || self, global.PfeAutocomplete = factory(global.PFElement));
+}(this, (function (PFElement) { 'use strict';
+
+ PFElement = PFElement && Object.prototype.hasOwnProperty.call(PFElement, 'default') ? PFElement['default'] : PFElement;
+
+ var classCallCheck = function (instance, Constructor) {
+ if (!(instance instanceof Constructor)) {
+ throw new TypeError("Cannot call a class as a function");
+ }
+ };
+
+ var createClass = function () {
+ function defineProperties(target, props) {
+ for (var i = 0; i < props.length; i++) {
+ var descriptor = props[i];
+ descriptor.enumerable = descriptor.enumerable || false;
+ descriptor.configurable = true;
+ if ("value" in descriptor) descriptor.writable = true;
+ Object.defineProperty(target, descriptor.key, descriptor);
+ }
+ }
+
+ return function (Constructor, protoProps, staticProps) {
+ if (protoProps) defineProperties(Constructor.prototype, protoProps);
+ if (staticProps) defineProperties(Constructor, staticProps);
+ return Constructor;
+ };
+ }();
+
+ var get = function get(object, property, receiver) {
+ if (object === null) object = Function.prototype;
+ var desc = Object.getOwnPropertyDescriptor(object, property);
+
+ if (desc === undefined) {
+ var parent = Object.getPrototypeOf(object);
+
+ if (parent === null) {
+ return undefined;
+ } else {
+ return get(parent, property, receiver);
+ }
+ } else if ("value" in desc) {
+ return desc.value;
+ } else {
+ var getter = desc.get;
+
+ if (getter === undefined) {
+ return undefined;
+ }
+
+ return getter.call(receiver);
+ }
+ };
+
+ var inherits = function (subClass, superClass) {
+ if (typeof superClass !== "function" && superClass !== null) {
+ throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);
+ }
+
+ subClass.prototype = Object.create(superClass && superClass.prototype, {
+ constructor: {
+ value: subClass,
+ enumerable: false,
+ writable: true,
+ configurable: true
+ }
+ });
+ if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;
+ };
+
+ var possibleConstructorReturn = function (self, call) {
+ if (!self) {
+ throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
+ }
+
+ return call && (typeof call === "object" || typeof call === "function") ? call : self;
+ };
+
+ /*!
+ * PatternFly Elements: PfeAutocomplete 1.3.0
+ * @license
+ * Copyright 2021 Red Hat, Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ */
+
+ var KEYCODE = {
+ ENTER: 13,
+ DOWN: 40,
+ UP: 38,
+ ESC: 27
+ };
+
+ // use this variable to debounce api call when user types very fast
+ var throttle = false;
+
+ var PfeAutocomplete = function (_PFElement) {
+ inherits(PfeAutocomplete, _PFElement);
+ createClass(PfeAutocomplete, [{
+ key: "html",
+
+
+ // Injected at build-time
+ get: function get() {
+ return "\n\n
";
+ }).join("");
+ }
+ }, {
+ key: "_activeIndexChanged",
+ value: function _activeIndexChanged() {
+ if (!this.data || this.data.length === 0 || this.activeIndex === null || this.activeIndex === "null") return;
+
+ // remove active class
+ if (this._ul.querySelector(".active")) {
+ this._ul.querySelector(".active").classList.remove("active");
+ }
+
+ // add active class to selected option
+ var activeOption = this._ul.querySelector("li:nth-child(" + (parseInt(this.activeIndex, 10) + 1) + ")");
+
+ activeOption.classList.add("active");
+
+ // scroll to selected element when selected item with keyboard is out of view
+ var ulWrapper = this.shadowRoot.querySelector(".droplist");
+ var activeOptionHeight = activeOption.offsetHeight;
+ activeOptionHeight += parseInt(window.getComputedStyle(activeOption).getPropertyValue("margin-bottom"), 10);
+ ulWrapper.scrollTop = activeOption.offsetTop - ulWrapper.offsetHeight + activeOptionHeight;
+ }
+ }]);
+ return PfeSearchDroplist;
+ }(PFElement);
+
+ PFElement.create(PfeSearchDroplist);
+ PFElement.create(PfeAutocomplete);
+
+ return PfeAutocomplete;
+
+})));
+//# sourceMappingURL=pfe-autocomplete.umd.js.map
diff --git a/elements/pfe-autocomplete/dist/pfe-autocomplete.umd.js.map b/elements/pfe-autocomplete/dist/pfe-autocomplete.umd.js.map
new file mode 100644
index 0000000000..645f1d9e77
--- /dev/null
+++ b/elements/pfe-autocomplete/dist/pfe-autocomplete.umd.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"pfe-autocomplete.umd.js","sources":["../_temp/pfe-autocomplete.umd.js"],"sourcesContent":["/*!\n * PatternFly Elements: PfeAutocomplete 1.3.0\n * @license\n * Copyright 2021 Red Hat, Inc.\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n * \n*/\n\nimport PFElement from \"../../pfelement/dist/pfelement\";\nimport \"../../pfe-button/dist/pfe-button\";\n\nconst KEYCODE = {\n ENTER: 13,\n DOWN: 40,\n UP: 38,\n ESC: 27\n};\n\n// use this variable to debounce api call when user types very fast\nlet throttle = false;\n\nclass PfeAutocomplete extends PFElement {\n\n // Injected at build-time\n static get version() {\n return \"1.3.0\";\n }\n\n // Injected at build-time\n get html() {\n return `\n\n
\n
\n \n\n \n \n \n\n \n\n \n
\n \n
\n\n\n \n`;\n }\n\n // @TODO: Deprecating in 1.0 release\n // Injected at build-time\n static get schemaProperties() {\n return {\"debounce_timer\":{\"title\":\"Debounce\",\"description\":\"The amount of time that should pass before the next API call is made\",\"type\":\"string\",\"prefixed\":false},\"init_value\":{\"title\":\"Initial value\",\"description\":\"An initial value to show in the input field\",\"type\":\"string\",\"prefixed\":false},\"is_disabled\":{\"title\":\"Is disabled\",\"description\":\"Disable the input\",\"type\":\"boolean\",\"prefixed\":false},\"button-text\":{\"title\":\"Button text\",\"description\":\"Add button with text next to input field\",\"type\":\"string\",\"prefixed\":false}};\n }\n\n // Injected at build-time\n static get slots() {\n return {\"content\":{\"title\":\"Content\",\"type\":\"array\",\"namedSlot\":false,\"items\":{\"oneOf\":[{\"$ref\":\"input\"}]},\"required\":true}};\n }\n\n static get tag() {\n return \"pfe-autocomplete\";\n }\n\n get schemaUrl() {\n return \"pfe-autocomplete.json\";\n }\n\n get templateUrl() {\n return \"pfe-autocomplete.html\";\n }\n\n get styleUrl() {\n return \"pfe-autocomplete.scss\";\n }\n\n static get properties() {\n return {\n initValue: {\n title: \"Initial Value\",\n type: String,\n observer: \"_initValueChanged\"\n },\n loading: {\n title: \"Loading\",\n type: Boolean,\n default: false,\n observer: \"_loadingChanged\"\n },\n isDisabled: {\n title: \"Is disabled\",\n type: Boolean,\n default: false,\n observer: \"_isDisabledChanged\"\n },\n debounce: {\n title: \"Debounce\",\n type: Number,\n default: 300\n },\n selectedValue: {\n title: \"Selected value\",\n type: String\n },\n buttonText: {\n title: \"Button text\",\n type: String,\n observer: \"_buttonTextChanged\"\n }\n };\n }\n\n static get events() {\n return {\n search: `${this.tag}:search-event`,\n select: `${this.tag}:option-selected`,\n optionsShown: `${this.tag}:options-shown`,\n slotchange: `slotchange`\n };\n }\n\n constructor() {\n super(PfeAutocomplete);\n\n this._inputInit();\n\n this._slotchangeHandler = this._slotchangeHandler.bind(this);\n\n this._slot = this.shadowRoot.querySelector(\"slot\");\n this._slot.addEventListener(PfeAutocomplete.events.slotchange, this._slotchangeHandler);\n\n // @TODO: Confirm this is translatable\n this._ariaAnnounceTemplate = \"There are ${numOptions} suggestions. Use the up and down arrows to browse.\";\n\n // clear button\n this._clearBtn = this.shadowRoot.querySelector(\".clear-search\");\n this._clearBtn.addEventListener(\"click\", this._clear.bind(this));\n\n // search button\n this._searchBtn = this.shadowRoot.querySelector(\".search-button\");\n this._searchBtn.addEventListener(\"click\", this._search.bind(this));\n\n // textual search button\n this._searchBtnTextual = this.shadowRoot.querySelector(\".search-button--textual\");\n this._searchBtnText = this.shadowRoot.querySelector(\".search-button__text\");\n this._searchBtnTextual.addEventListener(\"click\", this._search.bind(this));\n\n this._dropdown = this.shadowRoot.querySelector(\"#dropdown\");\n this._dropdown.data = [];\n\n this.activeIndex = null;\n\n this.addEventListener(\"keyup\", this._inputKeyUp.bind(this));\n\n // these two events, fire search\n this.addEventListener(PfeAutocomplete.events.search, this._closeDroplist.bind(this));\n this.addEventListener(PfeAutocomplete.events.select, this._optionSelected.bind(this));\n }\n\n _inputInit() {\n // input box\n let slotNodes = this.shadowRoot.querySelector(\"slot\").assignedNodes();\n let slotElems = slotNodes.filter(n => n.nodeType === Node.ELEMENT_NODE);\n if (slotElems.length === 0) {\n console.error(`${PfeAutocomplete.tag}: There must be a input tag in the light DOM`);\n return;\n }\n this._input = slotElems[0];\n\n if (this._input.tagName.toLowerCase() !== \"input\") {\n console.error(`${PfeAutocomplete.tag}: The only child in the light DOM must be an input tag`);\n\n return;\n }\n\n this._input.addEventListener(\"input\", this._inputChanged.bind(this));\n this._input.addEventListener(\"blur\", this._closeDroplist.bind(this));\n\n this._input.setAttribute(\"role\", \"combobox\");\n\n if (!this._input.hasAttribute(\"aria-label\")) {\n this._input.setAttribute(\"aria-label\", \"Search\");\n }\n\n this._input.setAttribute(\"aria-autocomplete\", \"both\");\n this._input.setAttribute(\"aria-haspopup\", \"true\");\n this._input.setAttribute(\"type\", \"search\");\n this._input.setAttribute(\"autocomplete\", \"off\");\n this._input.setAttribute(\"autocorrect\", \"off\");\n this._input.setAttribute(\"autocapitalize\", \"off\");\n this._input.setAttribute(\"spellcheck\", \"false\");\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n\n this.removeEventListener(\"keyup\", this._inputKeyUp);\n\n this.removeEventListener(PfeAutocomplete.events.search, this._closeDroplist);\n this.removeEventListener(PfeAutocomplete.events.select, this._optionSelected);\n this._slot.removeEventListener(PfeAutocomplete.events.slotchange, this._slotchangeHandler);\n if (this._input) {\n this._input.removeEventListener(\"input\", this._inputChanged);\n this._input.removeEventListener(\"blur\", this._closeDroplist);\n }\n\n this._clearBtn.removeEventListener(\"click\", this._clear);\n this._searchBtn.removeEventListener(\"click\", this._search);\n this._searchBtnTextual.removeEventListener(\"click\", this._search);\n }\n\n _initValueChanged(oldVal, newVal) {\n if (newVal) {\n // set inputbox and buttons in the inner component\n this._input.value = newVal;\n if (newVal !== \"\" && !this.isDisabled) {\n this._searchBtn.removeAttribute(\"disabled\");\n this._searchBtnTextual.removeAttribute(\"disabled\");\n this._clearBtn.removeAttribute(\"hidden\");\n } else {\n this._searchBtn.setAttribute(\"disabled\", \"\");\n this._searchBtnTextual.setAttribute(\"disabled\", \"\");\n this._clearBtn.setAttribute(\"hidden\", \"\");\n }\n }\n }\n\n _loadingChanged() {\n if (!this.loading || this._input.value === \"\") {\n this.shadowRoot.querySelector(\".loading\").setAttribute(\"hidden\", \"\");\n } else {\n this.shadowRoot.querySelector(\".loading\").removeAttribute(\"hidden\");\n }\n }\n\n _isDisabledChanged() {\n if (this.isDisabled) {\n this._clearBtn.setAttribute(\"disabled\", \"\");\n this._searchBtn.setAttribute(\"disabled\", \"\");\n this._searchBtnTextual.setAttribute(\"disabled\", \"\");\n this._input.setAttribute(\"disabled\", \"\");\n } else {\n this._clearBtn.removeAttribute(\"disabled\");\n this._searchBtn.removeAttribute(\"disabled\");\n this._searchBtnTextual.removeAttribute(\"disabled\");\n this._input.removeAttribute(\"disabled\");\n }\n }\n\n _buttonTextChanged(oldVal, newVal) {\n if (oldVal === null) {\n this._searchBtn.setAttribute(\"hidden\", \"\");\n this._searchBtnText.innerHTML = newVal || \"Search\";\n this._searchBtnTextual.removeAttribute(\"hidden\");\n } else if (newVal === null || newVal === \"\") {\n this._searchBtnTextual.setAttribute(\"hidden\", \"\");\n this._searchBtn.removeAttribute(\"hidden\");\n } else {\n this._searchBtnText.innerHTML = newVal || \"Search\";\n }\n }\n\n _slotchangeHandler() {\n this._inputInit();\n this._dropdown._ariaAnnounceTemplate = this.getAttribute(\"aria-announce-template\") || this._ariaAnnounceTemplate;\n }\n\n _inputChanged() {\n if (this._input.value === \"\") {\n this._searchBtn.setAttribute(\"disabled\", \"\");\n this._searchBtnTextual.setAttribute(\"disabled\", \"\");\n this._clearBtn.setAttribute(\"hidden\", \"\");\n\n this._reset();\n return;\n } else {\n if (!this._input.hasAttribute(\"disabled\")) {\n this._searchBtn.removeAttribute(\"disabled\");\n this._searchBtnTextual.removeAttribute(\"disabled\");\n }\n this._clearBtn.removeAttribute(\"hidden\");\n }\n\n if (throttle === false) {\n throttle = true;\n\n window.setTimeout(() => {\n this._sendAutocompleteRequest(this._input.value);\n throttle = false;\n }, this.debounce);\n }\n }\n\n _clear() {\n this._input.value = \"\";\n this._clearBtn.setAttribute(\"hidden\", \"\");\n this._searchBtn.setAttribute(\"disabled\", \"\");\n this._searchBtnTextual.setAttribute(\"disabled\", \"\");\n this._input.focus();\n }\n\n _search() {\n this._doSearch(this._input.value);\n }\n\n _closeDroplist() {\n this._dropdown.open = null;\n this._dropdown.removeAttribute(\"active-index\");\n }\n\n _openDroplist() {\n this.activeIndex = null;\n this._dropdown.open = true;\n this._dropdown.setAttribute(\"active-index\", null);\n this.emitEvent(PfeAutocomplete.events.optionsShown, {\n composed: true\n });\n }\n\n _optionSelected(e) {\n let selectedValue = e.detail.optionValue;\n\n // update input box with selected value from options list\n this._input.value = selectedValue;\n\n // send search request\n this._doSearch(selectedValue);\n }\n\n _doSearch(searchQuery) {\n this.emitEvent(PfeAutocomplete.events.search, {\n detail: { searchValue: searchQuery },\n composed: true\n });\n this._reset();\n this.selectedValue = searchQuery;\n }\n\n _sendAutocompleteRequest(input) {\n if (!this.autocompleteRequest) return;\n\n this.autocompleteRequest({ query: input }, this._autocompleteCallback.bind(this));\n }\n\n _autocompleteCallback(response) {\n this._dropdown.data = response;\n this._dropdown.reflow = true;\n response.length !== 0 ? this._openDroplist() : this._closeDroplist();\n }\n\n _reset() {\n this._dropdown.activeIndex = null;\n this._input.setAttribute(\"aria-activedescendant\", \"\");\n this._dropdown.data = [];\n this._closeDroplist();\n }\n\n _activeOption(activeIndex) {\n if (activeIndex === null || activeIndex === \"null\") return;\n return this._dropdown.shadowRoot.querySelector(\"li:nth-child(\" + (parseInt(activeIndex, 10) + 1) + \")\").innerHTML;\n }\n\n _inputKeyUp(e) {\n let key = e.keyCode;\n\n if (\n this._dropdown.data.length === 0 &&\n key !== KEYCODE.DOWN &&\n key !== KEYCODE.UP &&\n key !== KEYCODE.ENTER &&\n key !== KEYCODE.ESC\n )\n return;\n\n let activeIndex = this._dropdown.activeIndex;\n let optionsLength = this._dropdown.data.length;\n\n if (key == KEYCODE.ESC) {\n this._closeDroplist();\n } else if (key === KEYCODE.UP) {\n if (!this._dropdown.open) {\n return;\n }\n\n activeIndex = activeIndex === null || activeIndex === \"null\" ? optionsLength : parseInt(activeIndex, 10);\n\n activeIndex -= 1;\n\n if (activeIndex < 0) {\n activeIndex = optionsLength - 1;\n }\n\n this._input.value = this._activeOption(activeIndex);\n } else if (key === KEYCODE.DOWN) {\n if (!this._dropdown.open) {\n return;\n }\n\n activeIndex = activeIndex === null || activeIndex === \"null\" ? -1 : parseInt(activeIndex, 10);\n activeIndex += 1;\n\n if (activeIndex > optionsLength - 1) {\n activeIndex = 0;\n }\n\n this._input.value = this._activeOption(activeIndex);\n } else if (key === KEYCODE.ENTER) {\n if (this._activeOption(activeIndex)) {\n this.emitEvent(PfeAutocomplete.events.select, {\n detail: { optionValue: this._activeOption(activeIndex) },\n composed: true\n });\n\n return;\n }\n\n let selectedValue = this._input.value;\n this._doSearch(selectedValue);\n return;\n }\n\n if (activeIndex !== null && activeIndex !== \"null\") {\n this._input.setAttribute(\"aria-activedescendant\", \"option-\" + activeIndex);\n } else {\n this._input.setAttribute(\"aria-activedescendant\", \"\");\n }\n\n this.activeIndex = activeIndex;\n this._dropdown.activeIndex = activeIndex;\n }\n}\n\n/*\n* - Attributes ------------------------------------\n* open | Set when the combo box dropdown is open\n* active-index | Set selected option\n* reflow | Re-renders the dropdown\n\n* - Events ----------------------------------------\n* pfe-autocomplete:option-selected | Fires when an option is selected.\n event.details.optionValue contains the selected value.\n*/\nclass PfeSearchDroplist extends PFElement {\n\n // Injected at build-time\n static get version() {\n return \"1.3.0\";\n }\n\n // Injected at build-time\n get html() {\n return `\n\n\n
`;\n })\n .join(\"\")}`;\n }\n\n _activeIndexChanged() {\n if (!this.data || this.data.length === 0 || this.activeIndex === null || this.activeIndex === \"null\") return;\n\n // remove active class\n if (this._ul.querySelector(\".active\")) {\n this._ul.querySelector(\".active\").classList.remove(\"active\");\n }\n\n // add active class to selected option\n let activeOption = this._ul.querySelector(\"li:nth-child(\" + (parseInt(this.activeIndex, 10) + 1) + \")\");\n\n activeOption.classList.add(\"active\");\n\n // scroll to selected element when selected item with keyboard is out of view\n let ulWrapper = this.shadowRoot.querySelector(\".droplist\");\n let activeOptionHeight = activeOption.offsetHeight;\n activeOptionHeight += parseInt(window.getComputedStyle(activeOption).getPropertyValue(\"margin-bottom\"), 10);\n ulWrapper.scrollTop = activeOption.offsetTop - ulWrapper.offsetHeight + activeOptionHeight;\n }\n}\n\nPFElement.create(PfeSearchDroplist);\nPFElement.create(PfeAutocomplete);\n\nexport default PfeAutocomplete;\n"],"names":["KEYCODE","ENTER","DOWN","UP","ESC","throttle","PfeAutocomplete","initValue","title","type","String","observer","loading","Boolean","default","isDisabled","debounce","Number","selectedValue","buttonText","search","tag","select","optionsShown","slotchange","_inputInit","_slotchangeHandler","bind","_slot","shadowRoot","querySelector","addEventListener","events","_ariaAnnounceTemplate","_clearBtn","_clear","_searchBtn","_search","_searchBtnTextual","_searchBtnText","_dropdown","data","activeIndex","_inputKeyUp","_closeDroplist","_optionSelected","slotNodes","assignedNodes","slotElems","filter","n","nodeType","Node","ELEMENT_NODE","length","console","error","_input","tagName","toLowerCase","_inputChanged","setAttribute","hasAttribute","removeEventListener","oldVal","newVal","value","removeAttribute","innerHTML","getAttribute","_reset","window","setTimeout","_sendAutocompleteRequest","focus","_doSearch","open","emitEvent","composed","e","detail","optionValue","searchQuery","searchValue","input","autocompleteRequest","query","_autocompleteCallback","response","reflow","_openDroplist","parseInt","key","keyCode","optionsLength","_activeOption","PFElement","PfeSearchDroplist","_ariaAnnounce","_ul","target","innerText","options","ariaAnnounceText","replace","textContent","map","item","index","join","classList","remove","activeOption","add","ulWrapper","activeOptionHeight","offsetHeight","getComputedStyle","getPropertyValue","scrollTop","offsetTop","create"],"mappings":"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"}
\ No newline at end of file
diff --git a/elements/pfe-autocomplete/dist/pfe-autocomplete.umd.min.js b/elements/pfe-autocomplete/dist/pfe-autocomplete.umd.min.js
new file mode 100644
index 0000000000..47734e191e
--- /dev/null
+++ b/elements/pfe-autocomplete/dist/pfe-autocomplete.umd.min.js
@@ -0,0 +1,2 @@
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("../../pfelement/dist/pfelement.umd.min"),require("../../pfe-button/dist/pfe-button.umd.min")):"function"==typeof define&&define.amd?define(["../../pfelement/dist/pfelement.umd.min","../../pfe-button/dist/pfe-button.umd.min"],t):(e=e||self).PfeAutocomplete=t(e.PFElement)}(this,function(e){"use strict";e=e&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e;var t=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},o=function(e,t,o){return t&&i(e.prototype,t),o&&i(e,o),e};function i(e,t){for(var o=0;o.sr-only{position:absolute;overflow:hidden;clip:rect(0,0,0,0);height:1px;width:1px;margin:-1px;padding:0;border:0}@media screen and (-ms-high-contrast:active),screen and (-ms-high-contrast:none){:host{color:#151515!important}}:host([on=dark]){--pfe-broadcasted--text:var(--pfe-theme--color--text--on-dark, #fff);--pfe-broadcasted--link:var(--pfe-theme--color--link--on-dark, #73bcf7);--pfe-broadcasted--link--hover:var(--pfe-theme--color--link--hover--on-dark, #bee1f4);--pfe-broadcasted--link--focus:var(--pfe-theme--color--link--focus--on-dark, #bee1f4);--pfe-broadcasted--link--visited:var(--pfe-theme--color--link--visited--on-dark, #bee1f4);--pfe-broadcasted--link-decoration:var(--pfe-theme--link-decoration--on-dark, none);--pfe-broadcasted--link-decoration--hover:var(--pfe-theme--link-decoration--hover--on-dark, underline);--pfe-broadcasted--link-decoration--focus:var(--pfe-theme--link-decoration--focus--on-dark, underline);--pfe-broadcasted--link-decoration--visited:var(--pfe-theme--link-decoration--visited--on-dark, none)}:host([on=saturated]){--pfe-broadcasted--text:var(--pfe-theme--color--text--on-saturated, #fff);--pfe-broadcasted--link:var(--pfe-theme--color--link--on-saturated, #fff);--pfe-broadcasted--link--hover:var(--pfe-theme--color--link--hover--on-saturated, #fafafa);--pfe-broadcasted--link--focus:var(--pfe-theme--color--link--focus--on-saturated, #fafafa);--pfe-broadcasted--link--visited:var(--pfe-theme--color--link--visited--on-saturated, #d2d2d2);--pfe-broadcasted--link-decoration:var(--pfe-theme--link-decoration--on-saturated, underline);--pfe-broadcasted--link-decoration--hover:var(--pfe-theme--link-decoration--hover--on-saturated, underline);--pfe-broadcasted--link-decoration--focus:var(--pfe-theme--link-decoration--focus--on-saturated, underline);--pfe-broadcasted--link-decoration--visited:var(--pfe-theme--link-decoration--visited--on-saturated, underline)}:host([on=light]){--pfe-broadcasted--text:var(--pfe-theme--color--text, #151515);--pfe-broadcasted--link:var(--pfe-theme--color--link, #06c);--pfe-broadcasted--link--hover:var(--pfe-theme--color--link--hover, #004080);--pfe-broadcasted--link--focus:var(--pfe-theme--color--link--focus, #004080);--pfe-broadcasted--link--visited:var(--pfe-theme--color--link--visited, #6753ac);--pfe-broadcasted--link-decoration:var(--pfe-theme--link-decoration, none);--pfe-broadcasted--link-decoration--hover:var(--pfe-theme--link-decoration--hover, underline);--pfe-broadcasted--link-decoration--focus:var(--pfe-theme--link-decoration--focus, underline);--pfe-broadcasted--link-decoration--visited:var(--pfe-theme--link-decoration--visited, none)}:host{display:block;position:relative;font-family:"Red Hat Text",RedHatText,Overpass,Overpass,Arial,sans-serif;font-family:var(--pfe-theme--font-family, "Red Hat Text", "RedHatText", "Overpass", Overpass, Arial, sans-serif);--pfe-autocomplete--BoxShadow:var(--pfe-theme--box-shadow--inset, inset 0 0 0.625rem 0 #fafafa);--pfe-autocomplete--BackgroundColor:var(--pfe-theme--color--surface--lightest, #fff);--pfe-autocomplete--Border:var(--pfe-theme--ui--border-width, 1px) var(--pfe-theme--ui--border-style, solid) var(--pfe-theme--color--surface--border, #d2d2d2)}:host([button-text]){display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}:host([button-text]) #wrapper{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}:host([button-text]) #input-box-wrapper{position:relative}:host([button-text]) button.clear-search{right:10px}:host([button-text]) ::slotted(input[type=search]::-webkit-search-cancel-button){-webkit-appearance:none}#input-box-wrapper{border-color:#06c;border-color:var(--pfe-theme--color--feedback--info,#06c)}#input-box-wrapper ::slotted(input){width:100%;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;-webkit-box-shadow:inset 0 0 .625rem 0 #fafafa!important;box-shadow:inset 0 0 .625rem 0 #fafafa!important;-webkit-box-shadow:var(--pfe-autocomplete--BoxShadow,var(--pfe-theme--box-shadow--inset,inset 0 0 .625rem 0 #fafafa))!important;box-shadow:var(--pfe-autocomplete--BoxShadow,var(--pfe-theme--box-shadow--inset,inset 0 0 .625rem 0 #fafafa))!important;padding-left:10px;padding-right:30px;border-radius:2px;border-radius:var(--pfe-theme--ui--border-radius,2px);background-color:#fff;background-color:var(--pfe-autocomplete--BackgroundColor,var(--pfe-theme--color--surface--lightest,#fff));border:1px solid #d2d2d2;border:var(--pfe-autocomplete--Border,var(--pfe-theme--ui--border-width,1px) var(--pfe-theme--ui--border-style,solid) var(--pfe-theme--color--surface--border,#d2d2d2));font-size:1rem;font-size:var(--pfe-theme--font-size,1rem);font-family:"Red Hat Text",RedHatText,Overpass,Overpass,Arial,sans-serif;font-family:var(--pfe-theme--font-family, "Red Hat Text", "RedHatText", "Overpass", Overpass, Arial, sans-serif);height:calc(20px * 2);height:calc(var(--pfe-theme--ui--element--size,20px) * 2);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;opacity:1;outline:0}#input-box-wrapper ::slotted(input:disabled),#input-box-wrapper button:disabled{cursor:not-allowed;color:#ccc}#input-box-wrapper ::slotted(input:disabled){padding-right:10px}#input-box-wrapper ::slotted(input:focus),#input-box-wrapper button:focus{outline:0}#input-box-wrapper ::slotted(input),#input-box-wrapper button{-webkit-appearance:none}#input-box-wrapper ::slotted([type=search]::-ms-clear){display:none}#input-box-wrapper ::slotted(input[type=search]::-webkit-search-cancel-button),#input-box-wrapper ::slotted(input[type=search]::-webkit-search-decoration){-webkit-appearance:none}button{color:#6a6e73;color:var(--pfe-theme--color--ui-base,#6a6e73);background-color:transparent;border:none;position:absolute;top:0;bottom:0;cursor:pointer}button.clear-search{right:30px;width:20px;margin:2px 1px;background-color:#fff;background-color:var(--pfe-theme--color--surface--lightest,#fff)}button.clear-search:hover{color:#6a6e73;color:var(--pfe-theme--color--ui-base,#6a6e73)}button.clear-search svg{width:12px;stroke:#d2d2d2;stroke:var(--pfe-theme--color--surface--border,#d2d2d2)}button.clear-search:focus svg,button.clear-search:hover svg{opacity:1;stroke:#06c;stroke:var(--pfe-theme--color--link,#06c)}button[disabled].clear-search:focus svg,button[disabled].clear-search:hover svg{stroke:#d2d2d2;stroke:var(--pfe-theme--color--surface--border,#d2d2d2)}button.search-button{right:1px;width:30px}button.search-button svg{fill:#06c;fill:var(--pfe-theme--color--link,#06c);width:16px}button.search-button:focus svg,button.search-button:hover svg{fill:#004080;fill:var(--pfe-theme--color--link--hover,#004080)}button.search-button:disabled svg{fill:#d2d2d2;fill:var(--pfe-theme--color--ui-disabled,#d2d2d2)}pfe-button.search-button--textual{margin-left:16px}.loading{position:absolute;width:30px;right:52px;top:0;bottom:0}.loading svg{width:26px;padding-top:7px} /*# sourceMappingURL=pfe-autocomplete.min.css.map */\n
\n
\n \n\n \n \n \n\n \n\n \n
\n \n
\n\n\n \n'}},{key:"schemaUrl",get:function(){return"pfe-autocomplete.json"}},{key:"templateUrl",get:function(){return"pfe-autocomplete.html"}},{key:"styleUrl",get:function(){return"pfe-autocomplete.scss"}}],[{key:"version",get:function(){return"1.3.0"}},{key:"schemaProperties",get:function(){return{debounce_timer:{title:"Debounce",description:"The amount of time that should pass before the next API call is made",type:"string",prefixed:!1},init_value:{title:"Initial value",description:"An initial value to show in the input field",type:"string",prefixed:!1},is_disabled:{title:"Is disabled",description:"Disable the input",type:"boolean",prefixed:!1},"button-text":{title:"Button text",description:"Add button with text next to input field",type:"string",prefixed:!1}}}},{key:"slots",get:function(){return{content:{title:"Content",type:"array",namedSlot:!1,items:{oneOf:[{$ref:"input"}]},required:!0}}}},{key:"tag",get:function(){return"pfe-autocomplete"}},{key:"properties",get:function(){return{initValue:{title:"Initial Value",type:String,observer:"_initValueChanged"},loading:{title:"Loading",type:Boolean,default:!1,observer:"_loadingChanged"},isDisabled:{title:"Is disabled",type:Boolean,default:!1,observer:"_isDisabledChanged"},debounce:{title:"Debounce",type:Number,default:300},selectedValue:{title:"Selected value",type:String},buttonText:{title:"Button text",type:String,observer:"_buttonTextChanged"}}}},{key:"events",get:function(){return{search:this.tag+":search-event",select:this.tag+":option-selected",optionsShown:this.tag+":options-shown",slotchange:"slotchange"}}}]),o(h,[{key:"_inputInit",value:function(){var e=this.shadowRoot.querySelector("slot").assignedNodes().filter(function(e){return e.nodeType===Node.ELEMENT_NODE});0!==e.length?(this._input=e[0],"input"===this._input.tagName.toLowerCase()?(this._input.addEventListener("input",this._inputChanged.bind(this)),this._input.addEventListener("blur",this._closeDroplist.bind(this)),this._input.setAttribute("role","combobox"),this._input.hasAttribute("aria-label")||this._input.setAttribute("aria-label","Search"),this._input.setAttribute("aria-autocomplete","both"),this._input.setAttribute("aria-haspopup","true"),this._input.setAttribute("type","search"),this._input.setAttribute("autocomplete","off"),this._input.setAttribute("autocorrect","off"),this._input.setAttribute("autocapitalize","off"),this._input.setAttribute("spellcheck","false")):console.error(h.tag+": The only child in the light DOM must be an input tag")):console.error(h.tag+": There must be a input tag in the light DOM")}},{key:"disconnectedCallback",value:function(){n(h.prototype.__proto__||Object.getPrototypeOf(h.prototype),"disconnectedCallback",this).call(this),this.removeEventListener("keyup",this._inputKeyUp),this.removeEventListener(h.events.search,this._closeDroplist),this.removeEventListener(h.events.select,this._optionSelected),this._slot.removeEventListener(h.events.slotchange,this._slotchangeHandler),this._input&&(this._input.removeEventListener("input",this._inputChanged),this._input.removeEventListener("blur",this._closeDroplist)),this._clearBtn.removeEventListener("click",this._clear),this._searchBtn.removeEventListener("click",this._search),this._searchBtnTextual.removeEventListener("click",this._search)}},{key:"_initValueChanged",value:function(e,t){t&&(""===(this._input.value=t)||this.isDisabled?(this._searchBtn.setAttribute("disabled",""),this._searchBtnTextual.setAttribute("disabled",""),this._clearBtn.setAttribute("hidden","")):(this._searchBtn.removeAttribute("disabled"),this._searchBtnTextual.removeAttribute("disabled"),this._clearBtn.removeAttribute("hidden")))}},{key:"_loadingChanged",value:function(){this.loading&&""!==this._input.value?this.shadowRoot.querySelector(".loading").removeAttribute("hidden"):this.shadowRoot.querySelector(".loading").setAttribute("hidden","")}},{key:"_isDisabledChanged",value:function(){this.isDisabled?(this._clearBtn.setAttribute("disabled",""),this._searchBtn.setAttribute("disabled",""),this._searchBtnTextual.setAttribute("disabled",""),this._input.setAttribute("disabled","")):(this._clearBtn.removeAttribute("disabled"),this._searchBtn.removeAttribute("disabled"),this._searchBtnTextual.removeAttribute("disabled"),this._input.removeAttribute("disabled"))}},{key:"_buttonTextChanged",value:function(e,t){null===e?(this._searchBtn.setAttribute("hidden",""),this._searchBtnText.innerHTML=t||"Search",this._searchBtnTextual.removeAttribute("hidden")):null===t||""===t?(this._searchBtnTextual.setAttribute("hidden",""),this._searchBtn.removeAttribute("hidden")):this._searchBtnText.innerHTML=t||"Search"}},{key:"_slotchangeHandler",value:function(){this._inputInit(),this._dropdown._ariaAnnounceTemplate=this.getAttribute("aria-announce-template")||this._ariaAnnounceTemplate}},{key:"_inputChanged",value:function(){var e=this;if(""===this._input.value)return this._searchBtn.setAttribute("disabled",""),this._searchBtnTextual.setAttribute("disabled",""),this._clearBtn.setAttribute("hidden",""),void this._reset();this._input.hasAttribute("disabled")||(this._searchBtn.removeAttribute("disabled"),this._searchBtnTextual.removeAttribute("disabled")),this._clearBtn.removeAttribute("hidden"),!1===u&&(u=!0,window.setTimeout(function(){e._sendAutocompleteRequest(e._input.value),u=!1},this.debounce))}},{key:"_clear",value:function(){this._input.value="",this._clearBtn.setAttribute("hidden",""),this._searchBtn.setAttribute("disabled",""),this._searchBtnTextual.setAttribute("disabled",""),this._input.focus()}},{key:"_search",value:function(){this._doSearch(this._input.value)}},{key:"_closeDroplist",value:function(){this._dropdown.open=null,this._dropdown.removeAttribute("active-index")}},{key:"_openDroplist",value:function(){this.activeIndex=null,this._dropdown.open=!0,this._dropdown.setAttribute("active-index",null),this.emitEvent(h.events.optionsShown,{composed:!0})}},{key:"_optionSelected",value:function(e){e=e.detail.optionValue;this._input.value=e,this._doSearch(e)}},{key:"_doSearch",value:function(e){this.emitEvent(h.events.search,{detail:{searchValue:e},composed:!0}),this._reset(),this.selectedValue=e}},{key:"_sendAutocompleteRequest",value:function(e){this.autocompleteRequest&&this.autocompleteRequest({query:e},this._autocompleteCallback.bind(this))}},{key:"_autocompleteCallback",value:function(e){this._dropdown.data=e,this._dropdown.reflow=!0,0!==e.length?this._openDroplist():this._closeDroplist()}},{key:"_reset",value:function(){this._dropdown.activeIndex=null,this._input.setAttribute("aria-activedescendant",""),this._dropdown.data=[],this._closeDroplist()}},{key:"_activeOption",value:function(e){if(null!==e&&"null"!==e)return this._dropdown.shadowRoot.querySelector("li:nth-child("+(parseInt(e,10)+1)+")").innerHTML}},{key:"_inputKeyUp",value:function(e){var t=e.keyCode;if(0!==this._dropdown.data.length||t===l||t===d||t===s||t===c){var o=this._dropdown.activeIndex,e=this._dropdown.data.length;if(t==c)this._closeDroplist();else if(t===d){if(!this._dropdown.open)return;o=null===o||"null"===o?e:parseInt(o,10),--o<0&&(o=e-1),this._input.value=this._activeOption(o)}else if(t===l){if(!this._dropdown.open)return;o=null===o||"null"===o?-1:parseInt(o,10),e-1<(o+=1)&&(o=0),this._input.value=this._activeOption(o)}else if(t===s){if(this._activeOption(o))return void this.emitEvent(h.events.select,{detail:{optionValue:this._activeOption(o)},composed:!0});t=this._input.value;return void this._doSearch(t)}null!==o&&"null"!==o?this._input.setAttribute("aria-activedescendant","option-"+o):this._input.setAttribute("aria-activedescendant",""),this.activeIndex=o,this._dropdown.activeIndex=o}}}]),h);function h(){t(this,h);var e=a(this,(h.__proto__||Object.getPrototypeOf(h)).call(this,h));return e._inputInit(),e._slotchangeHandler=e._slotchangeHandler.bind(e),e._slot=e.shadowRoot.querySelector("slot"),e._slot.addEventListener(h.events.slotchange,e._slotchangeHandler),e._ariaAnnounceTemplate="There are ${numOptions} suggestions. Use the up and down arrows to browse.",e._clearBtn=e.shadowRoot.querySelector(".clear-search"),e._clearBtn.addEventListener("click",e._clear.bind(e)),e._searchBtn=e.shadowRoot.querySelector(".search-button"),e._searchBtn.addEventListener("click",e._search.bind(e)),e._searchBtnTextual=e.shadowRoot.querySelector(".search-button--textual"),e._searchBtnText=e.shadowRoot.querySelector(".search-button__text"),e._searchBtnTextual.addEventListener("click",e._search.bind(e)),e._dropdown=e.shadowRoot.querySelector("#dropdown"),e._dropdown.data=[],e.activeIndex=null,e.addEventListener("keyup",e._inputKeyUp.bind(e)),e.addEventListener(h.events.search,e._closeDroplist.bind(e)),e.addEventListener(h.events.select,e._optionSelected.bind(e)),e}r(f,e),o(f,[{key:"html",get:function(){return'\n\n\n
"}).join("")}},{key:"_activeIndexChanged",value:function(){var e,t,o;this.data&&0!==this.data.length&&null!==this.activeIndex&&"null"!==this.activeIndex&&(this._ul.querySelector(".active")&&this._ul.querySelector(".active").classList.remove("active"),(e=this._ul.querySelector("li:nth-child("+(parseInt(this.activeIndex,10)+1)+")")).classList.add("active"),t=this.shadowRoot.querySelector(".droplist"),o=e.offsetHeight,o+=parseInt(window.getComputedStyle(e).getPropertyValue("margin-bottom"),10),t.scrollTop=e.offsetTop-t.offsetHeight+o)}}]),o=f;function f(){return t(this,f),a(this,(f.__proto__||Object.getPrototypeOf(f)).call(this,f))}return e.create(o),e.create(p),p});
+//# sourceMappingURL=pfe-autocomplete.umd.min.js.map
diff --git a/elements/pfe-autocomplete/dist/pfe-autocomplete.umd.min.js.map b/elements/pfe-autocomplete/dist/pfe-autocomplete.umd.min.js.map
new file mode 100644
index 0000000000..464427f5ad
--- /dev/null
+++ b/elements/pfe-autocomplete/dist/pfe-autocomplete.umd.min.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"pfe-autocomplete.umd.min.js","sources":["../_temp/pfe-autocomplete.umd.js"],"sourcesContent":["/*!\n * PatternFly Elements: PfeAutocomplete 1.3.0\n * @license\n * Copyright 2021 Red Hat, Inc.\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n * \n*/\n\nimport PFElement from \"../../pfelement/dist/pfelement\";\nimport \"../../pfe-button/dist/pfe-button\";\n\nconst KEYCODE = {\n ENTER: 13,\n DOWN: 40,\n UP: 38,\n ESC: 27\n};\n\n// use this variable to debounce api call when user types very fast\nlet throttle = false;\n\nclass PfeAutocomplete extends PFElement {\n\n // Injected at build-time\n static get version() {\n return \"1.3.0\";\n }\n\n // Injected at build-time\n get html() {\n return `\n\n
\n
\n \n\n \n \n \n\n \n\n \n
\n \n
\n\n\n \n`;\n }\n\n // @TODO: Deprecating in 1.0 release\n // Injected at build-time\n static get schemaProperties() {\n return {\"debounce_timer\":{\"title\":\"Debounce\",\"description\":\"The amount of time that should pass before the next API call is made\",\"type\":\"string\",\"prefixed\":false},\"init_value\":{\"title\":\"Initial value\",\"description\":\"An initial value to show in the input field\",\"type\":\"string\",\"prefixed\":false},\"is_disabled\":{\"title\":\"Is disabled\",\"description\":\"Disable the input\",\"type\":\"boolean\",\"prefixed\":false},\"button-text\":{\"title\":\"Button text\",\"description\":\"Add button with text next to input field\",\"type\":\"string\",\"prefixed\":false}};\n }\n\n // Injected at build-time\n static get slots() {\n return {\"content\":{\"title\":\"Content\",\"type\":\"array\",\"namedSlot\":false,\"items\":{\"oneOf\":[{\"$ref\":\"input\"}]},\"required\":true}};\n }\n\n static get tag() {\n return \"pfe-autocomplete\";\n }\n\n get schemaUrl() {\n return \"pfe-autocomplete.json\";\n }\n\n get templateUrl() {\n return \"pfe-autocomplete.html\";\n }\n\n get styleUrl() {\n return \"pfe-autocomplete.scss\";\n }\n\n static get properties() {\n return {\n initValue: {\n title: \"Initial Value\",\n type: String,\n observer: \"_initValueChanged\"\n },\n loading: {\n title: \"Loading\",\n type: Boolean,\n default: false,\n observer: \"_loadingChanged\"\n },\n isDisabled: {\n title: \"Is disabled\",\n type: Boolean,\n default: false,\n observer: \"_isDisabledChanged\"\n },\n debounce: {\n title: \"Debounce\",\n type: Number,\n default: 300\n },\n selectedValue: {\n title: \"Selected value\",\n type: String\n },\n buttonText: {\n title: \"Button text\",\n type: String,\n observer: \"_buttonTextChanged\"\n }\n };\n }\n\n static get events() {\n return {\n search: `${this.tag}:search-event`,\n select: `${this.tag}:option-selected`,\n optionsShown: `${this.tag}:options-shown`,\n slotchange: `slotchange`\n };\n }\n\n constructor() {\n super(PfeAutocomplete);\n\n this._inputInit();\n\n this._slotchangeHandler = this._slotchangeHandler.bind(this);\n\n this._slot = this.shadowRoot.querySelector(\"slot\");\n this._slot.addEventListener(PfeAutocomplete.events.slotchange, this._slotchangeHandler);\n\n // @TODO: Confirm this is translatable\n this._ariaAnnounceTemplate = \"There are ${numOptions} suggestions. Use the up and down arrows to browse.\";\n\n // clear button\n this._clearBtn = this.shadowRoot.querySelector(\".clear-search\");\n this._clearBtn.addEventListener(\"click\", this._clear.bind(this));\n\n // search button\n this._searchBtn = this.shadowRoot.querySelector(\".search-button\");\n this._searchBtn.addEventListener(\"click\", this._search.bind(this));\n\n // textual search button\n this._searchBtnTextual = this.shadowRoot.querySelector(\".search-button--textual\");\n this._searchBtnText = this.shadowRoot.querySelector(\".search-button__text\");\n this._searchBtnTextual.addEventListener(\"click\", this._search.bind(this));\n\n this._dropdown = this.shadowRoot.querySelector(\"#dropdown\");\n this._dropdown.data = [];\n\n this.activeIndex = null;\n\n this.addEventListener(\"keyup\", this._inputKeyUp.bind(this));\n\n // these two events, fire search\n this.addEventListener(PfeAutocomplete.events.search, this._closeDroplist.bind(this));\n this.addEventListener(PfeAutocomplete.events.select, this._optionSelected.bind(this));\n }\n\n _inputInit() {\n // input box\n let slotNodes = this.shadowRoot.querySelector(\"slot\").assignedNodes();\n let slotElems = slotNodes.filter(n => n.nodeType === Node.ELEMENT_NODE);\n if (slotElems.length === 0) {\n console.error(`${PfeAutocomplete.tag}: There must be a input tag in the light DOM`);\n return;\n }\n this._input = slotElems[0];\n\n if (this._input.tagName.toLowerCase() !== \"input\") {\n console.error(`${PfeAutocomplete.tag}: The only child in the light DOM must be an input tag`);\n\n return;\n }\n\n this._input.addEventListener(\"input\", this._inputChanged.bind(this));\n this._input.addEventListener(\"blur\", this._closeDroplist.bind(this));\n\n this._input.setAttribute(\"role\", \"combobox\");\n\n if (!this._input.hasAttribute(\"aria-label\")) {\n this._input.setAttribute(\"aria-label\", \"Search\");\n }\n\n this._input.setAttribute(\"aria-autocomplete\", \"both\");\n this._input.setAttribute(\"aria-haspopup\", \"true\");\n this._input.setAttribute(\"type\", \"search\");\n this._input.setAttribute(\"autocomplete\", \"off\");\n this._input.setAttribute(\"autocorrect\", \"off\");\n this._input.setAttribute(\"autocapitalize\", \"off\");\n this._input.setAttribute(\"spellcheck\", \"false\");\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n\n this.removeEventListener(\"keyup\", this._inputKeyUp);\n\n this.removeEventListener(PfeAutocomplete.events.search, this._closeDroplist);\n this.removeEventListener(PfeAutocomplete.events.select, this._optionSelected);\n this._slot.removeEventListener(PfeAutocomplete.events.slotchange, this._slotchangeHandler);\n if (this._input) {\n this._input.removeEventListener(\"input\", this._inputChanged);\n this._input.removeEventListener(\"blur\", this._closeDroplist);\n }\n\n this._clearBtn.removeEventListener(\"click\", this._clear);\n this._searchBtn.removeEventListener(\"click\", this._search);\n this._searchBtnTextual.removeEventListener(\"click\", this._search);\n }\n\n _initValueChanged(oldVal, newVal) {\n if (newVal) {\n // set inputbox and buttons in the inner component\n this._input.value = newVal;\n if (newVal !== \"\" && !this.isDisabled) {\n this._searchBtn.removeAttribute(\"disabled\");\n this._searchBtnTextual.removeAttribute(\"disabled\");\n this._clearBtn.removeAttribute(\"hidden\");\n } else {\n this._searchBtn.setAttribute(\"disabled\", \"\");\n this._searchBtnTextual.setAttribute(\"disabled\", \"\");\n this._clearBtn.setAttribute(\"hidden\", \"\");\n }\n }\n }\n\n _loadingChanged() {\n if (!this.loading || this._input.value === \"\") {\n this.shadowRoot.querySelector(\".loading\").setAttribute(\"hidden\", \"\");\n } else {\n this.shadowRoot.querySelector(\".loading\").removeAttribute(\"hidden\");\n }\n }\n\n _isDisabledChanged() {\n if (this.isDisabled) {\n this._clearBtn.setAttribute(\"disabled\", \"\");\n this._searchBtn.setAttribute(\"disabled\", \"\");\n this._searchBtnTextual.setAttribute(\"disabled\", \"\");\n this._input.setAttribute(\"disabled\", \"\");\n } else {\n this._clearBtn.removeAttribute(\"disabled\");\n this._searchBtn.removeAttribute(\"disabled\");\n this._searchBtnTextual.removeAttribute(\"disabled\");\n this._input.removeAttribute(\"disabled\");\n }\n }\n\n _buttonTextChanged(oldVal, newVal) {\n if (oldVal === null) {\n this._searchBtn.setAttribute(\"hidden\", \"\");\n this._searchBtnText.innerHTML = newVal || \"Search\";\n this._searchBtnTextual.removeAttribute(\"hidden\");\n } else if (newVal === null || newVal === \"\") {\n this._searchBtnTextual.setAttribute(\"hidden\", \"\");\n this._searchBtn.removeAttribute(\"hidden\");\n } else {\n this._searchBtnText.innerHTML = newVal || \"Search\";\n }\n }\n\n _slotchangeHandler() {\n this._inputInit();\n this._dropdown._ariaAnnounceTemplate = this.getAttribute(\"aria-announce-template\") || this._ariaAnnounceTemplate;\n }\n\n _inputChanged() {\n if (this._input.value === \"\") {\n this._searchBtn.setAttribute(\"disabled\", \"\");\n this._searchBtnTextual.setAttribute(\"disabled\", \"\");\n this._clearBtn.setAttribute(\"hidden\", \"\");\n\n this._reset();\n return;\n } else {\n if (!this._input.hasAttribute(\"disabled\")) {\n this._searchBtn.removeAttribute(\"disabled\");\n this._searchBtnTextual.removeAttribute(\"disabled\");\n }\n this._clearBtn.removeAttribute(\"hidden\");\n }\n\n if (throttle === false) {\n throttle = true;\n\n window.setTimeout(() => {\n this._sendAutocompleteRequest(this._input.value);\n throttle = false;\n }, this.debounce);\n }\n }\n\n _clear() {\n this._input.value = \"\";\n this._clearBtn.setAttribute(\"hidden\", \"\");\n this._searchBtn.setAttribute(\"disabled\", \"\");\n this._searchBtnTextual.setAttribute(\"disabled\", \"\");\n this._input.focus();\n }\n\n _search() {\n this._doSearch(this._input.value);\n }\n\n _closeDroplist() {\n this._dropdown.open = null;\n this._dropdown.removeAttribute(\"active-index\");\n }\n\n _openDroplist() {\n this.activeIndex = null;\n this._dropdown.open = true;\n this._dropdown.setAttribute(\"active-index\", null);\n this.emitEvent(PfeAutocomplete.events.optionsShown, {\n composed: true\n });\n }\n\n _optionSelected(e) {\n let selectedValue = e.detail.optionValue;\n\n // update input box with selected value from options list\n this._input.value = selectedValue;\n\n // send search request\n this._doSearch(selectedValue);\n }\n\n _doSearch(searchQuery) {\n this.emitEvent(PfeAutocomplete.events.search, {\n detail: { searchValue: searchQuery },\n composed: true\n });\n this._reset();\n this.selectedValue = searchQuery;\n }\n\n _sendAutocompleteRequest(input) {\n if (!this.autocompleteRequest) return;\n\n this.autocompleteRequest({ query: input }, this._autocompleteCallback.bind(this));\n }\n\n _autocompleteCallback(response) {\n this._dropdown.data = response;\n this._dropdown.reflow = true;\n response.length !== 0 ? this._openDroplist() : this._closeDroplist();\n }\n\n _reset() {\n this._dropdown.activeIndex = null;\n this._input.setAttribute(\"aria-activedescendant\", \"\");\n this._dropdown.data = [];\n this._closeDroplist();\n }\n\n _activeOption(activeIndex) {\n if (activeIndex === null || activeIndex === \"null\") return;\n return this._dropdown.shadowRoot.querySelector(\"li:nth-child(\" + (parseInt(activeIndex, 10) + 1) + \")\").innerHTML;\n }\n\n _inputKeyUp(e) {\n let key = e.keyCode;\n\n if (\n this._dropdown.data.length === 0 &&\n key !== KEYCODE.DOWN &&\n key !== KEYCODE.UP &&\n key !== KEYCODE.ENTER &&\n key !== KEYCODE.ESC\n )\n return;\n\n let activeIndex = this._dropdown.activeIndex;\n let optionsLength = this._dropdown.data.length;\n\n if (key == KEYCODE.ESC) {\n this._closeDroplist();\n } else if (key === KEYCODE.UP) {\n if (!this._dropdown.open) {\n return;\n }\n\n activeIndex = activeIndex === null || activeIndex === \"null\" ? optionsLength : parseInt(activeIndex, 10);\n\n activeIndex -= 1;\n\n if (activeIndex < 0) {\n activeIndex = optionsLength - 1;\n }\n\n this._input.value = this._activeOption(activeIndex);\n } else if (key === KEYCODE.DOWN) {\n if (!this._dropdown.open) {\n return;\n }\n\n activeIndex = activeIndex === null || activeIndex === \"null\" ? -1 : parseInt(activeIndex, 10);\n activeIndex += 1;\n\n if (activeIndex > optionsLength - 1) {\n activeIndex = 0;\n }\n\n this._input.value = this._activeOption(activeIndex);\n } else if (key === KEYCODE.ENTER) {\n if (this._activeOption(activeIndex)) {\n this.emitEvent(PfeAutocomplete.events.select, {\n detail: { optionValue: this._activeOption(activeIndex) },\n composed: true\n });\n\n return;\n }\n\n let selectedValue = this._input.value;\n this._doSearch(selectedValue);\n return;\n }\n\n if (activeIndex !== null && activeIndex !== \"null\") {\n this._input.setAttribute(\"aria-activedescendant\", \"option-\" + activeIndex);\n } else {\n this._input.setAttribute(\"aria-activedescendant\", \"\");\n }\n\n this.activeIndex = activeIndex;\n this._dropdown.activeIndex = activeIndex;\n }\n}\n\n/*\n* - Attributes ------------------------------------\n* open | Set when the combo box dropdown is open\n* active-index | Set selected option\n* reflow | Re-renders the dropdown\n\n* - Events ----------------------------------------\n* pfe-autocomplete:option-selected | Fires when an option is selected.\n event.details.optionValue contains the selected value.\n*/\nclass PfeSearchDroplist extends PFElement {\n\n // Injected at build-time\n static get version() {\n return \"1.3.0\";\n }\n\n // Injected at build-time\n get html() {\n return `\n\n\n