@hashicorp/design-system-components 7.1.0 → 7.1.1-rc-20261113154656
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/hds/app-frame/parts/sidebar.js +7 -2
- package/dist/components/hds/app-frame/parts/sidebar.js.map +1 -1
- package/dist/components/hds/app-side-nav/index.js +1 -1
- package/dist/components/hds/app-side-nav/index.js.map +1 -1
- package/package.json +1 -1
- package/translations/hds/components/app-frame/sidebar/en-us.yaml +1 -0
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import HdsTHelper from '../../../../helpers/hds-t.js';
|
|
1
2
|
import { precompileTemplate } from '@ember/template-compilation';
|
|
2
3
|
import { setComponentTemplate } from '@ember/component';
|
|
3
4
|
import templateOnly from '@ember/component/template-only';
|
|
@@ -6,8 +7,12 @@ import templateOnly from '@ember/component/template-only';
|
|
|
6
7
|
* Copyright IBM Corp. 2021, 2026
|
|
7
8
|
* SPDX-License-Identifier: MPL-2.0
|
|
8
9
|
*/
|
|
9
|
-
|
|
10
|
-
|
|
10
|
+
|
|
11
|
+
const HdsAppFrameSidebar = setComponentTemplate(precompileTemplate("<aside class=\"hds-app-frame__sidebar\" aria-label={{hdsT \"hds.components.app-frame.sidebar.aria-label\" default=\"Sidebar\"}} ...attributes>\n {{yield}}\n</aside>", {
|
|
12
|
+
strictMode: true,
|
|
13
|
+
scope: () => ({
|
|
14
|
+
hdsT: HdsTHelper
|
|
15
|
+
})
|
|
11
16
|
}), templateOnly());
|
|
12
17
|
|
|
13
18
|
export { HdsAppFrameSidebar as default };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sidebar.js","sources":["../../../../../src/components/hds/app-frame/parts/sidebar.gts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2026\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport interface HdsAppFrameSidebarSignature {\n Blocks: {\n default: [];\n };\n Element: HTMLElement;\n}\n\nconst HdsAppFrameSidebar: TemplateOnlyComponent<HdsAppFrameSidebarSignature> =\n <template>\n <aside
|
|
1
|
+
{"version":3,"file":"sidebar.js","sources":["../../../../../src/components/hds/app-frame/parts/sidebar.gts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2026\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nimport hdsT from '../../../../helpers/hds-t.ts';\n\nexport interface HdsAppFrameSidebarSignature {\n Blocks: {\n default: [];\n };\n Element: HTMLElement;\n}\n\nconst HdsAppFrameSidebar: TemplateOnlyComponent<HdsAppFrameSidebarSignature> =\n <template>\n <aside\n class=\"hds-app-frame__sidebar\"\n aria-label={{hdsT\n \"hds.components.app-frame.sidebar.aria-label\"\n default=\"Sidebar\"\n }}\n ...attributes\n >\n {{yield}}\n </aside>\n </template>;\n\nexport default HdsAppFrameSidebar;\n"],"names":["HdsAppFrameSidebar","setComponentTemplate","precompileTemplate","strictMode","scope","hdsT","templateOnly"],"mappings":";;;;;AAAA;;;AAGC;;AAaD,MAAMA,kBAA0C,GAAAC,oBAAA,CAC9CC,kBAAA,CAAA,uKAAA,EAWA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;AAAAC,UAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
|
|
@@ -190,7 +190,7 @@ class HdsAppSideNav extends Component {
|
|
|
190
190
|
}
|
|
191
191
|
};
|
|
192
192
|
static {
|
|
193
|
-
setComponentTemplate(precompileTemplate("{{!-- IMPORTANT: we need to add \"squishies\" here (~) because otherwise the whitespace added by Ember causes the empty element to still have visible padding - See https://handlebarsjs.com/guide/expressions.html#whitespace-control --}}\n<div class={{this.classNames}} ...attributes role={{if this.isMobileCollapsible \"dialog\"}} aria-labelledby={{if this.isMobileCollapsible \"hds-app-side-nav-header\"}} aria-modal={{if this.isMobileCollapsible \"true\"}} {{on \"transitionstart\" (fn this.setTransition \"start\")}} {{on \"transitionend\" (fn this.setTransition \"end\")}} {{focusTrap isActive=this.shouldTrapFocus}} {{this._setUpBodyElement}}>\n <
|
|
193
|
+
setComponentTemplate(precompileTemplate("{{!-- IMPORTANT: we need to add \"squishies\" here (~) because otherwise the whitespace added by Ember causes the empty element to still have visible padding - See https://handlebarsjs.com/guide/expressions.html#whitespace-control --}}\n<div class={{this.classNames}} ...attributes role={{if this.isMobileCollapsible \"dialog\"}} aria-labelledby={{if this.isMobileCollapsible \"hds-app-side-nav-header\"}} aria-modal={{if this.isMobileCollapsible \"true\"}} {{on \"transitionstart\" (fn this.setTransition \"start\")}} {{on \"transitionend\" (fn this.setTransition \"end\")}} {{focusTrap isActive=this.shouldTrapFocus}} {{this._setUpBodyElement}}>\n <div class=\"sr-only\" id=\"hds-app-side-nav-header\">\n {{hdsT \"hds.components.app-side-nav.screen-reader-label\" default=\"Application local navigation\"}}\n </div>\n\n <div class=\"hds-app-side-nav__wrapper\">\n {{#if this.showToggleButton}}\n {{!-- template-lint-disable no-invalid-interactive--}}\n <div class=\"hds-app-side-nav__overlay\" {{on \"click\" this.toggleMinimizedStatus}} />\n {{!-- template-lint-enable no-invalid-interactive--}}\n <HdsAppSideNavToggleButton aria-labelledby=\"hds-app-side-nav-header\" aria-expanded={{if this._isMinimized \"false\" \"true\"}} @icon={{if this._isMinimized \"chevrons-right\" \"chevrons-left\"}} {{on \"click\" this.toggleMinimizedStatus}} />\n {{/if}}\n\n <div class=\"hds-app-side-nav__wrapper-body\" {{this._setUpNavWrapperBody}}>\n {{~yield~}}\n </div>\n </div>\n</div>", {
|
|
194
194
|
strictMode: true,
|
|
195
195
|
scope: () => ({
|
|
196
196
|
on,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/hds/app-side-nav/index.gts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2026\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { registerDestructor } from '@ember/destroyable';\nimport { modifier } from 'ember-modifier';\nimport { on } from '@ember/modifier';\nimport { fn } from '@ember/helper';\n// @ts-expect-error: missing types https://github.com/josemarluedke/ember-focus-trap/issues/86\nimport focusTrap from 'ember-focus-trap/modifiers/focus-trap';\n\nimport type Owner from '@ember/owner';\n\nimport { hdsBreakpoints } from '../../../utils/hds-breakpoints.ts';\nimport hdsT from '../../../helpers/hds-t.ts';\nimport HdsAppSideNavToggleButton from './toggle-button.gts';\n\nexport interface HdsAppSideNavSignature {\n Args: {\n isResponsive?: boolean;\n isCollapsible?: boolean;\n isMinimized?: boolean;\n breakpoint?: string;\n onToggleMinimizedStatus?: (arg: boolean) => void;\n onDesktopViewportChange?: (arg: boolean) => void;\n };\n Blocks: {\n default?: [];\n };\n Element: HTMLDivElement;\n}\n\nexport default class HdsAppSideNav extends Component<HdsAppSideNavSignature> {\n @tracked private _isMinimized;\n @tracked private _isAnimating = false;\n @tracked private _isDesktop = true;\n\n private _body!: HTMLElement;\n private _bodyInitialOverflowValue = '';\n private _desktopMQ: MediaQueryList;\n private _navWrapperBody!: HTMLElement;\n\n // we use the `lg` breakpoint for `desktop` viewports, but consumers can override its value\n private _desktopMQVal = this.args.breakpoint ?? hdsBreakpoints['lg'].px;\n\n constructor(owner: Owner, args: HdsAppSideNavSignature['Args']) {\n super(owner, args);\n this._isMinimized = this.args.isMinimized ?? false; // sets the default state on 'desktop' viewports\n this._desktopMQ = window.matchMedia(`(min-width:${this._desktopMQVal})`);\n this.addEventListeners();\n registerDestructor(this, (): void => {\n this.removeEventListeners();\n });\n }\n\n private _setUpBodyElement = modifier((): void => {\n this._body = document.body;\n // Store the initial `overflow` value of `<body>` so we can reset to it\n this._bodyInitialOverflowValue =\n this._body.style.getPropertyValue('overflow');\n });\n\n private _setUpNavWrapperBody = modifier((element: HTMLElement) => {\n this._navWrapperBody = element;\n });\n\n addEventListeners(): void {\n document.addEventListener('keydown', this.escapePress, true);\n this._desktopMQ.addEventListener(\n 'change',\n\n this.updateDesktopVariable,\n true\n );\n // if not instantiated as minimized via arguments\n if (!this.args.isMinimized) {\n // set initial state based on viewport using a \"synthetic\" event\n const syntheticEvent = new MediaQueryListEvent('change', {\n matches: this._desktopMQ.matches,\n media: this._desktopMQ.media,\n });\n this.updateDesktopVariable(syntheticEvent);\n }\n }\n\n removeEventListeners(): void {\n document.removeEventListener('keydown', this.escapePress, true);\n this._desktopMQ.removeEventListener(\n 'change',\n\n this.updateDesktopVariable,\n true\n );\n }\n\n // controls if the component reacts to viewport changes\n get isResponsive(): boolean {\n return this.args.isResponsive ?? true;\n }\n\n // controls if users can collapse the appsidenav on 'desktop' viewports\n get isCollapsible(): boolean {\n return this.args.isCollapsible ?? false;\n }\n\n get isMobileCollapsible(): boolean {\n return this.isResponsive && !this._isDesktop;\n }\n\n // traps focus if isResponsive is enabled and it's in mobile view with side nav expanded (overlaying content)\n get shouldTrapFocus(): boolean {\n return this.isResponsive && !this._isDesktop && !this._isMinimized;\n }\n\n get showToggleButton(): boolean {\n return (this.isResponsive && !this._isDesktop) || this.isCollapsible;\n }\n\n get classNames(): string {\n const classes = [`hds-app-side-nav`];\n\n // add specific class names for the different possible states\n if (this.isResponsive) {\n classes.push('hds-app-side-nav--is-responsive');\n }\n if (!this._isDesktop && this.isResponsive) {\n classes.push('hds-app-side-nav--is-mobile');\n } else {\n classes.push('hds-app-side-nav--is-desktop');\n }\n if (this._isMinimized && this.isResponsive) {\n classes.push('hds-app-side-nav--is-minimized');\n } else {\n classes.push('hds-app-side-nav--is-not-minimized');\n }\n if (this._isAnimating) {\n classes.push('hds-app-side-nav--is-animating');\n }\n\n return classes.join(' ');\n }\n\n synchronizeInert = (): void => {\n if (this._isMinimized) {\n this._navWrapperBody?.setAttribute('inert', '');\n } else {\n this._navWrapperBody?.removeAttribute('inert');\n }\n };\n\n lockBodyScroll = (): void => {\n if (this._body) {\n // Prevent page from scrolling when the dialog is open\n this._body.style.setProperty('overflow', 'hidden');\n }\n };\n\n unlockBodyScroll = (): void => {\n // Reset page `overflow` property\n if (this._body) {\n this._body.style.removeProperty('overflow');\n if (this._bodyInitialOverflowValue === '') {\n if (this._body.style.length === 0) {\n this._body.removeAttribute('style');\n }\n } else {\n this._body.style.setProperty(\n 'overflow',\n this._bodyInitialOverflowValue\n );\n }\n }\n };\n\n escapePress = (event: KeyboardEvent): void => {\n if (event.key === 'Escape' && !this._isMinimized && !this._isDesktop) {\n this._isMinimized = true;\n this.synchronizeInert();\n this.unlockBodyScroll();\n }\n };\n\n toggleMinimizedStatus = (): void => {\n this._isMinimized = !this._isMinimized;\n this.synchronizeInert();\n\n const { onToggleMinimizedStatus } = this.args;\n\n if (typeof onToggleMinimizedStatus === 'function') {\n onToggleMinimizedStatus(this._isMinimized);\n }\n\n if (!this._isDesktop) {\n if (this._isMinimized) {\n this.unlockBodyScroll();\n } else {\n this.lockBodyScroll();\n }\n }\n };\n\n setTransition = (phase: string, event: TransitionEvent): void => {\n // we only want to respond to `width` animation/transitions\n if (event.propertyName !== 'width') {\n return;\n }\n if (phase === 'start') {\n this._isAnimating = true;\n } else {\n this._isAnimating = false;\n }\n };\n\n updateDesktopVariable = (event: MediaQueryListEvent): void => {\n this._isDesktop = event.matches;\n\n // automatically minimize on narrow viewports (when not in desktop mode)\n this._isMinimized = !this._isDesktop;\n\n this.synchronizeInert();\n\n if (this._isDesktop) {\n // make sure scrolling is enabled if the user resizes the window from mobile to desktop\n this.unlockBodyScroll();\n }\n\n const { onDesktopViewportChange } = this.args;\n\n if (typeof onDesktopViewportChange === 'function') {\n onDesktopViewportChange(this._isDesktop);\n }\n };\n\n <template>\n {{! IMPORTANT: we need to add \"squishies\" here (~) because otherwise the whitespace added by Ember causes the empty element to still have visible padding - See https://handlebarsjs.com/guide/expressions.html#whitespace-control }}\n <div\n class={{this.classNames}}\n ...attributes\n role={{if this.isMobileCollapsible \"dialog\"}}\n aria-labelledby={{if this.isMobileCollapsible \"hds-app-side-nav-header\"}}\n aria-modal={{if this.isMobileCollapsible \"true\"}}\n {{on \"transitionstart\" (fn this.setTransition \"start\")}}\n {{on \"transitionend\" (fn this.setTransition \"end\")}}\n {{focusTrap isActive=this.shouldTrapFocus}}\n {{this._setUpBodyElement}}\n >\n <h2 class=\"sr-only\" id=\"hds-app-side-nav-header\">\n {{hdsT\n \"hds.components.app-side-nav.screen-reader-label\"\n default=\"Application local navigation\"\n }}\n </h2>\n\n <div class=\"hds-app-side-nav__wrapper\">\n {{#if this.showToggleButton}}\n {{! template-lint-disable no-invalid-interactive}}\n <div\n class=\"hds-app-side-nav__overlay\"\n {{on \"click\" this.toggleMinimizedStatus}}\n />\n {{! template-lint-enable no-invalid-interactive}}\n <HdsAppSideNavToggleButton\n aria-labelledby=\"hds-app-side-nav-header\"\n aria-expanded={{if this._isMinimized \"false\" \"true\"}}\n @icon={{if this._isMinimized \"chevrons-right\" \"chevrons-left\"}}\n {{on \"click\" this.toggleMinimizedStatus}}\n />\n {{/if}}\n\n <div\n class=\"hds-app-side-nav__wrapper-body\"\n {{this._setUpNavWrapperBody}}\n >\n {{~yield~}}\n </div>\n </div>\n </div>\n </template>\n}\n"],"names":["HdsAppSideNav","Component","g","prototype","tracked","i","_body","_bodyInitialOverflowValue","_desktopMQ","_navWrapperBody","_desktopMQVal","args","breakpoint","hdsBreakpoints","px","constructor","owner","_isMinimized","isMinimized","window","matchMedia","addEventListeners","registerDestructor","removeEventListeners","_setUpBodyElement","modifier","document","body","style","getPropertyValue","_setUpNavWrapperBody","element","addEventListener","escapePress","updateDesktopVariable","syntheticEvent","MediaQueryListEvent","matches","media","removeEventListener","isResponsive","isCollapsible","isMobileCollapsible","_isDesktop","shouldTrapFocus","showToggleButton","classNames","classes","push","_isAnimating","join","synchronizeInert","setAttribute","removeAttribute","lockBodyScroll","setProperty","unlockBodyScroll","removeProperty","length","event","key","toggleMinimizedStatus","onToggleMinimizedStatus","setTransition","phase","propertyName","onDesktopViewportChange","setComponentTemplate","precompileTemplate","strictMode","scope","on","fn","focusTrap","hdsT","HdsAppSideNavToggleButton"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/hds/app-side-nav/index.gts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2026\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { registerDestructor } from '@ember/destroyable';\nimport { modifier } from 'ember-modifier';\nimport { on } from '@ember/modifier';\nimport { fn } from '@ember/helper';\n// @ts-expect-error: missing types https://github.com/josemarluedke/ember-focus-trap/issues/86\nimport focusTrap from 'ember-focus-trap/modifiers/focus-trap';\n\nimport type Owner from '@ember/owner';\n\nimport { hdsBreakpoints } from '../../../utils/hds-breakpoints.ts';\nimport hdsT from '../../../helpers/hds-t.ts';\nimport HdsAppSideNavToggleButton from './toggle-button.gts';\n\nexport interface HdsAppSideNavSignature {\n Args: {\n isResponsive?: boolean;\n isCollapsible?: boolean;\n isMinimized?: boolean;\n breakpoint?: string;\n onToggleMinimizedStatus?: (arg: boolean) => void;\n onDesktopViewportChange?: (arg: boolean) => void;\n };\n Blocks: {\n default?: [];\n };\n Element: HTMLDivElement;\n}\n\nexport default class HdsAppSideNav extends Component<HdsAppSideNavSignature> {\n @tracked private _isMinimized;\n @tracked private _isAnimating = false;\n @tracked private _isDesktop = true;\n\n private _body!: HTMLElement;\n private _bodyInitialOverflowValue = '';\n private _desktopMQ: MediaQueryList;\n private _navWrapperBody!: HTMLElement;\n\n // we use the `lg` breakpoint for `desktop` viewports, but consumers can override its value\n private _desktopMQVal = this.args.breakpoint ?? hdsBreakpoints['lg'].px;\n\n constructor(owner: Owner, args: HdsAppSideNavSignature['Args']) {\n super(owner, args);\n this._isMinimized = this.args.isMinimized ?? false; // sets the default state on 'desktop' viewports\n this._desktopMQ = window.matchMedia(`(min-width:${this._desktopMQVal})`);\n this.addEventListeners();\n registerDestructor(this, (): void => {\n this.removeEventListeners();\n });\n }\n\n private _setUpBodyElement = modifier((): void => {\n this._body = document.body;\n // Store the initial `overflow` value of `<body>` so we can reset to it\n this._bodyInitialOverflowValue =\n this._body.style.getPropertyValue('overflow');\n });\n\n private _setUpNavWrapperBody = modifier((element: HTMLElement) => {\n this._navWrapperBody = element;\n });\n\n addEventListeners(): void {\n document.addEventListener('keydown', this.escapePress, true);\n this._desktopMQ.addEventListener(\n 'change',\n\n this.updateDesktopVariable,\n true\n );\n // if not instantiated as minimized via arguments\n if (!this.args.isMinimized) {\n // set initial state based on viewport using a \"synthetic\" event\n const syntheticEvent = new MediaQueryListEvent('change', {\n matches: this._desktopMQ.matches,\n media: this._desktopMQ.media,\n });\n this.updateDesktopVariable(syntheticEvent);\n }\n }\n\n removeEventListeners(): void {\n document.removeEventListener('keydown', this.escapePress, true);\n this._desktopMQ.removeEventListener(\n 'change',\n\n this.updateDesktopVariable,\n true\n );\n }\n\n // controls if the component reacts to viewport changes\n get isResponsive(): boolean {\n return this.args.isResponsive ?? true;\n }\n\n // controls if users can collapse the appsidenav on 'desktop' viewports\n get isCollapsible(): boolean {\n return this.args.isCollapsible ?? false;\n }\n\n get isMobileCollapsible(): boolean {\n return this.isResponsive && !this._isDesktop;\n }\n\n // traps focus if isResponsive is enabled and it's in mobile view with side nav expanded (overlaying content)\n get shouldTrapFocus(): boolean {\n return this.isResponsive && !this._isDesktop && !this._isMinimized;\n }\n\n get showToggleButton(): boolean {\n return (this.isResponsive && !this._isDesktop) || this.isCollapsible;\n }\n\n get classNames(): string {\n const classes = [`hds-app-side-nav`];\n\n // add specific class names for the different possible states\n if (this.isResponsive) {\n classes.push('hds-app-side-nav--is-responsive');\n }\n if (!this._isDesktop && this.isResponsive) {\n classes.push('hds-app-side-nav--is-mobile');\n } else {\n classes.push('hds-app-side-nav--is-desktop');\n }\n if (this._isMinimized && this.isResponsive) {\n classes.push('hds-app-side-nav--is-minimized');\n } else {\n classes.push('hds-app-side-nav--is-not-minimized');\n }\n if (this._isAnimating) {\n classes.push('hds-app-side-nav--is-animating');\n }\n\n return classes.join(' ');\n }\n\n synchronizeInert = (): void => {\n if (this._isMinimized) {\n this._navWrapperBody?.setAttribute('inert', '');\n } else {\n this._navWrapperBody?.removeAttribute('inert');\n }\n };\n\n lockBodyScroll = (): void => {\n if (this._body) {\n // Prevent page from scrolling when the dialog is open\n this._body.style.setProperty('overflow', 'hidden');\n }\n };\n\n unlockBodyScroll = (): void => {\n // Reset page `overflow` property\n if (this._body) {\n this._body.style.removeProperty('overflow');\n if (this._bodyInitialOverflowValue === '') {\n if (this._body.style.length === 0) {\n this._body.removeAttribute('style');\n }\n } else {\n this._body.style.setProperty(\n 'overflow',\n this._bodyInitialOverflowValue\n );\n }\n }\n };\n\n escapePress = (event: KeyboardEvent): void => {\n if (event.key === 'Escape' && !this._isMinimized && !this._isDesktop) {\n this._isMinimized = true;\n this.synchronizeInert();\n this.unlockBodyScroll();\n }\n };\n\n toggleMinimizedStatus = (): void => {\n this._isMinimized = !this._isMinimized;\n this.synchronizeInert();\n\n const { onToggleMinimizedStatus } = this.args;\n\n if (typeof onToggleMinimizedStatus === 'function') {\n onToggleMinimizedStatus(this._isMinimized);\n }\n\n if (!this._isDesktop) {\n if (this._isMinimized) {\n this.unlockBodyScroll();\n } else {\n this.lockBodyScroll();\n }\n }\n };\n\n setTransition = (phase: string, event: TransitionEvent): void => {\n // we only want to respond to `width` animation/transitions\n if (event.propertyName !== 'width') {\n return;\n }\n if (phase === 'start') {\n this._isAnimating = true;\n } else {\n this._isAnimating = false;\n }\n };\n\n updateDesktopVariable = (event: MediaQueryListEvent): void => {\n this._isDesktop = event.matches;\n\n // automatically minimize on narrow viewports (when not in desktop mode)\n this._isMinimized = !this._isDesktop;\n\n this.synchronizeInert();\n\n if (this._isDesktop) {\n // make sure scrolling is enabled if the user resizes the window from mobile to desktop\n this.unlockBodyScroll();\n }\n\n const { onDesktopViewportChange } = this.args;\n\n if (typeof onDesktopViewportChange === 'function') {\n onDesktopViewportChange(this._isDesktop);\n }\n };\n\n <template>\n {{! IMPORTANT: we need to add \"squishies\" here (~) because otherwise the whitespace added by Ember causes the empty element to still have visible padding - See https://handlebarsjs.com/guide/expressions.html#whitespace-control }}\n <div\n class={{this.classNames}}\n ...attributes\n role={{if this.isMobileCollapsible \"dialog\"}}\n aria-labelledby={{if this.isMobileCollapsible \"hds-app-side-nav-header\"}}\n aria-modal={{if this.isMobileCollapsible \"true\"}}\n {{on \"transitionstart\" (fn this.setTransition \"start\")}}\n {{on \"transitionend\" (fn this.setTransition \"end\")}}\n {{focusTrap isActive=this.shouldTrapFocus}}\n {{this._setUpBodyElement}}\n >\n <div class=\"sr-only\" id=\"hds-app-side-nav-header\">\n {{hdsT\n \"hds.components.app-side-nav.screen-reader-label\"\n default=\"Application local navigation\"\n }}\n </div>\n\n <div class=\"hds-app-side-nav__wrapper\">\n {{#if this.showToggleButton}}\n {{! template-lint-disable no-invalid-interactive}}\n <div\n class=\"hds-app-side-nav__overlay\"\n {{on \"click\" this.toggleMinimizedStatus}}\n />\n {{! template-lint-enable no-invalid-interactive}}\n <HdsAppSideNavToggleButton\n aria-labelledby=\"hds-app-side-nav-header\"\n aria-expanded={{if this._isMinimized \"false\" \"true\"}}\n @icon={{if this._isMinimized \"chevrons-right\" \"chevrons-left\"}}\n {{on \"click\" this.toggleMinimizedStatus}}\n />\n {{/if}}\n\n <div\n class=\"hds-app-side-nav__wrapper-body\"\n {{this._setUpNavWrapperBody}}\n >\n {{~yield~}}\n </div>\n </div>\n </div>\n </template>\n}\n"],"names":["HdsAppSideNav","Component","g","prototype","tracked","i","_body","_bodyInitialOverflowValue","_desktopMQ","_navWrapperBody","_desktopMQVal","args","breakpoint","hdsBreakpoints","px","constructor","owner","_isMinimized","isMinimized","window","matchMedia","addEventListeners","registerDestructor","removeEventListeners","_setUpBodyElement","modifier","document","body","style","getPropertyValue","_setUpNavWrapperBody","element","addEventListener","escapePress","updateDesktopVariable","syntheticEvent","MediaQueryListEvent","matches","media","removeEventListener","isResponsive","isCollapsible","isMobileCollapsible","_isDesktop","shouldTrapFocus","showToggleButton","classNames","classes","push","_isAnimating","join","synchronizeInert","setAttribute","removeAttribute","lockBodyScroll","setProperty","unlockBodyScroll","removeProperty","length","event","key","toggleMinimizedStatus","onToggleMinimizedStatus","setTransition","phase","propertyName","onDesktopViewportChange","setComponentTemplate","precompileTemplate","strictMode","scope","on","fn","focusTrap","hdsT","HdsAppSideNavToggleButton"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
aria-label: "Sidebar"
|