@hashicorp/design-system-components 4.5.3 → 4.6.0

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.
Files changed (176) hide show
  1. package/declarations/components/hds/accordion/index.d.ts +32 -3
  2. package/declarations/components/hds/accordion/index.d.ts.map +1 -1
  3. package/declarations/components/hds/accordion/item/button.d.ts +2 -0
  4. package/declarations/components/hds/accordion/item/button.d.ts.map +1 -1
  5. package/declarations/components/hds/accordion/item/index.d.ts +39 -2
  6. package/declarations/components/hds/accordion/item/index.d.ts.map +1 -1
  7. package/declarations/components/hds/accordion/types.d.ts +21 -0
  8. package/declarations/components/hds/accordion/types.d.ts.map +1 -0
  9. package/declarations/components/hds/alert/index.d.ts +4 -4
  10. package/declarations/components/hds/alert/index.d.ts.map +1 -1
  11. package/declarations/components/hds/app-footer/copyright.d.ts.map +1 -1
  12. package/declarations/components/hds/app-footer/index.d.ts +1 -1
  13. package/declarations/components/hds/app-footer/index.d.ts.map +1 -1
  14. package/declarations/components/hds/app-footer/legal-links.d.ts.map +1 -1
  15. package/declarations/components/hds/app-footer/status-link.d.ts +3 -3
  16. package/declarations/components/hds/app-footer/status-link.d.ts.map +1 -1
  17. package/declarations/components/hds/app-frame/index.d.ts.map +1 -1
  18. package/declarations/components/hds/application-state/footer.d.ts.map +1 -1
  19. package/declarations/components/hds/badge/index.d.ts +4 -4
  20. package/declarations/components/hds/badge/index.d.ts.map +1 -1
  21. package/declarations/components/hds/badge-count/index.d.ts +6 -6
  22. package/declarations/components/hds/badge-count/index.d.ts.map +1 -1
  23. package/declarations/components/hds/badge-count/types.d.ts +2 -2
  24. package/declarations/components/hds/badge-count/types.d.ts.map +1 -1
  25. package/declarations/components/hds/button/index.d.ts +1 -1
  26. package/declarations/components/hds/copy/button/index.d.ts +3 -2
  27. package/declarations/components/hds/copy/button/index.d.ts.map +1 -1
  28. package/declarations/components/hds/copy/snippet/index.d.ts +6 -5
  29. package/declarations/components/hds/copy/snippet/index.d.ts.map +1 -1
  30. package/declarations/components/hds/disclosure-primitive/index.d.ts +6 -1
  31. package/declarations/components/hds/disclosure-primitive/index.d.ts.map +1 -1
  32. package/declarations/components/hds/dismiss-button/index.d.ts.map +1 -1
  33. package/declarations/components/hds/form/super-select/single/base.d.ts.map +1 -1
  34. package/declarations/components/hds/icon-tile/index.d.ts +4 -4
  35. package/declarations/components/hds/icon-tile/index.d.ts.map +1 -1
  36. package/declarations/components/hds/interactive/index.d.ts.map +1 -1
  37. package/declarations/components/hds/link/inline.d.ts +3 -3
  38. package/declarations/components/hds/link/inline.d.ts.map +1 -1
  39. package/declarations/components/hds/link/standalone.d.ts +7 -7
  40. package/declarations/components/hds/link/standalone.d.ts.map +1 -1
  41. package/declarations/components/hds/popover-primitive/index.d.ts +66 -20
  42. package/declarations/components/hds/popover-primitive/index.d.ts.map +1 -1
  43. package/declarations/components/hds/reveal/toggle/button.d.ts.map +1 -1
  44. package/declarations/components/hds/rich-tooltip/bubble.d.ts +33 -17
  45. package/declarations/components/hds/rich-tooltip/bubble.d.ts.map +1 -1
  46. package/declarations/components/hds/rich-tooltip/index.d.ts +27 -5
  47. package/declarations/components/hds/rich-tooltip/index.d.ts.map +1 -1
  48. package/declarations/components/hds/rich-tooltip/toggle.d.ts +32 -8
  49. package/declarations/components/hds/rich-tooltip/toggle.d.ts.map +1 -1
  50. package/declarations/components/hds/rich-tooltip/types.d.ts +16 -0
  51. package/declarations/components/hds/rich-tooltip/types.d.ts.map +1 -0
  52. package/declarations/components/hds/separator/index.d.ts +3 -3
  53. package/declarations/components/hds/separator/index.d.ts.map +1 -1
  54. package/declarations/components/hds/side-nav/header/home-link.d.ts.map +1 -1
  55. package/declarations/components/hds/side-nav/header/icon-button.d.ts.map +1 -1
  56. package/declarations/components/hds/side-nav/index.d.ts.map +1 -1
  57. package/declarations/components/hds/side-nav/portal/target.d.ts.map +1 -1
  58. package/declarations/components/hds/stepper/step/indicator.d.ts +1 -1
  59. package/declarations/components/hds/stepper/step/indicator.d.ts.map +1 -1
  60. package/declarations/components/hds/stepper/task/indicator.d.ts +4 -3
  61. package/declarations/components/hds/stepper/task/indicator.d.ts.map +1 -1
  62. package/declarations/components/hds/tabs/index.d.ts.map +1 -1
  63. package/declarations/components/hds/tabs/panel.d.ts.map +1 -1
  64. package/declarations/components/hds/tabs/tab.d.ts +1 -1
  65. package/declarations/components/hds/tabs/tab.d.ts.map +1 -1
  66. package/declarations/components/hds/tabs/types.d.ts +4 -0
  67. package/declarations/components/hds/tabs/types.d.ts.map +1 -1
  68. package/declarations/components/hds/tag/index.d.ts +2 -2
  69. package/declarations/components/hds/tag/index.d.ts.map +1 -1
  70. package/declarations/components/hds/text/body.d.ts +6 -6
  71. package/declarations/components/hds/text/body.d.ts.map +1 -1
  72. package/declarations/components/hds/text/code.d.ts +3 -3
  73. package/declarations/components/hds/text/code.d.ts.map +1 -1
  74. package/declarations/components/hds/text/display.d.ts +3 -3
  75. package/declarations/components/hds/text/display.d.ts.map +1 -1
  76. package/declarations/components/hds/text/index.d.ts +7 -8
  77. package/declarations/components/hds/text/index.d.ts.map +1 -1
  78. package/declarations/helpers/hds-link-to-query.d.ts +3 -1
  79. package/declarations/helpers/hds-link-to-query.d.ts.map +1 -1
  80. package/declarations/modifiers/hds-anchored-position.d.ts +28 -9
  81. package/declarations/modifiers/hds-anchored-position.d.ts.map +1 -1
  82. package/declarations/modifiers/hds-clipboard.d.ts.map +1 -1
  83. package/declarations/modifiers/hds-register-event.d.ts +9 -3
  84. package/declarations/modifiers/hds-register-event.d.ts.map +1 -1
  85. package/declarations/template-registry.d.ts +19 -0
  86. package/declarations/template-registry.d.ts.map +1 -1
  87. package/dist/components/hds/accordion/index.js +53 -5
  88. package/dist/components/hds/accordion/index.js.map +1 -1
  89. package/dist/components/hds/accordion/item/button.js +6 -1
  90. package/dist/components/hds/accordion/item/button.js.map +1 -1
  91. package/dist/components/hds/accordion/item/index.js +64 -2
  92. package/dist/components/hds/accordion/item/index.js.map +1 -1
  93. package/dist/components/hds/accordion/types.js +24 -0
  94. package/dist/components/hds/accordion/types.js.map +1 -0
  95. package/dist/components/hds/alert/index.js +2 -1
  96. package/dist/components/hds/alert/index.js.map +1 -1
  97. package/dist/components/hds/app-footer/copyright.js.map +1 -1
  98. package/dist/components/hds/app-footer/index.js.map +1 -1
  99. package/dist/components/hds/app-footer/legal-links.js.map +1 -1
  100. package/dist/components/hds/app-footer/status-link.js.map +1 -1
  101. package/dist/components/hds/app-frame/index.js.map +1 -1
  102. package/dist/components/hds/application-state/footer.js.map +1 -1
  103. package/dist/components/hds/application-state/index.js.map +1 -1
  104. package/dist/components/hds/badge/index.js.map +1 -1
  105. package/dist/components/hds/badge-count/index.js.map +1 -1
  106. package/dist/components/hds/badge-count/types.js.map +1 -1
  107. package/dist/components/hds/copy/button/index.js.map +1 -1
  108. package/dist/components/hds/copy/snippet/index.js +3 -3
  109. package/dist/components/hds/copy/snippet/index.js.map +1 -1
  110. package/dist/components/hds/disclosure-primitive/index.js +37 -6
  111. package/dist/components/hds/disclosure-primitive/index.js.map +1 -1
  112. package/dist/components/hds/dismiss-button/index.js.map +1 -1
  113. package/dist/components/hds/form/error/index.js +1 -1
  114. package/dist/components/hds/form/error/index.js.map +1 -1
  115. package/dist/components/hds/form/field/index.js +1 -1
  116. package/dist/components/hds/form/field/index.js.map +1 -1
  117. package/dist/components/hds/form/fieldset/index.js +1 -1
  118. package/dist/components/hds/form/fieldset/index.js.map +1 -1
  119. package/dist/components/hds/form/radio-card/index.js +1 -1
  120. package/dist/components/hds/form/radio-card/index.js.map +1 -1
  121. package/dist/components/hds/form/super-select/multiple/base.js.map +1 -1
  122. package/dist/components/hds/form/super-select/single/base.js.map +1 -1
  123. package/dist/components/hds/icon-tile/index.js.map +1 -1
  124. package/dist/components/hds/interactive/index.js.map +1 -1
  125. package/dist/components/hds/link/inline.js +1 -1
  126. package/dist/components/hds/link/inline.js.map +1 -1
  127. package/dist/components/hds/link/standalone.js +2 -2
  128. package/dist/components/hds/link/standalone.js.map +1 -1
  129. package/dist/components/hds/page-header/index.js.map +1 -1
  130. package/dist/components/hds/popover-primitive/index.js +53 -51
  131. package/dist/components/hds/popover-primitive/index.js.map +1 -1
  132. package/dist/components/hds/reveal/toggle/button.js.map +1 -1
  133. package/dist/components/hds/rich-tooltip/bubble.js +3 -6
  134. package/dist/components/hds/rich-tooltip/bubble.js.map +1 -1
  135. package/dist/components/hds/rich-tooltip/index.js +6 -4
  136. package/dist/components/hds/rich-tooltip/index.js.map +1 -1
  137. package/dist/components/hds/rich-tooltip/toggle.js +6 -5
  138. package/dist/components/hds/rich-tooltip/toggle.js.map +1 -1
  139. package/dist/components/hds/rich-tooltip/types.js +19 -0
  140. package/dist/components/hds/rich-tooltip/types.js.map +1 -0
  141. package/dist/components/hds/separator/index.js +2 -2
  142. package/dist/components/hds/separator/index.js.map +1 -1
  143. package/dist/components/hds/side-nav/header/home-link.js.map +1 -1
  144. package/dist/components/hds/side-nav/header/icon-button.js.map +1 -1
  145. package/dist/components/hds/side-nav/index.js.map +1 -1
  146. package/dist/components/hds/side-nav/list/index.js.map +1 -1
  147. package/dist/components/hds/side-nav/portal/target.js.map +1 -1
  148. package/dist/components/hds/stepper/step/indicator.js.map +1 -1
  149. package/dist/components/hds/stepper/task/indicator.js.map +1 -1
  150. package/dist/components/hds/tabs/index.js.map +1 -1
  151. package/dist/components/hds/tabs/panel.js.map +1 -1
  152. package/dist/components/hds/tabs/tab.js +0 -2
  153. package/dist/components/hds/tabs/tab.js.map +1 -1
  154. package/dist/components/hds/tabs/types.js +5 -0
  155. package/dist/components/hds/tabs/types.js.map +1 -1
  156. package/dist/components/hds/tag/index.js +1 -0
  157. package/dist/components/hds/tag/index.js.map +1 -1
  158. package/dist/components/hds/text/body.js +4 -4
  159. package/dist/components/hds/text/body.js.map +1 -1
  160. package/dist/components/hds/text/code.js +1 -1
  161. package/dist/components/hds/text/code.js.map +1 -1
  162. package/dist/components/hds/text/display.js +2 -2
  163. package/dist/components/hds/text/display.js.map +1 -1
  164. package/dist/components/hds/text/index.js +4 -5
  165. package/dist/components/hds/text/index.js.map +1 -1
  166. package/dist/helpers/hds-link-to-models.js.map +1 -1
  167. package/dist/helpers/hds-link-to-query.js.map +1 -1
  168. package/dist/modifiers/hds-anchored-position.js +8 -6
  169. package/dist/modifiers/hds-anchored-position.js.map +1 -1
  170. package/dist/modifiers/hds-clipboard.js.map +1 -1
  171. package/dist/modifiers/hds-register-event.js +0 -1
  172. package/dist/modifiers/hds-register-event.js.map +1 -1
  173. package/dist/styles/@hashicorp/design-system-components.css +109 -45
  174. package/dist/styles/components/accordion.scss +131 -53
  175. package/dist/styles/components/rich-tooltip.scss +0 -5
  176. package/package.json +5 -6
@@ -1 +1 @@
1
- {"version":3,"file":"icon-button.js","sources":["../../../../../src/components/hds/side-nav/header/icon-button.hbs","../../../../../src/components/hds/side-nav/header/icon-button.ts"],"sourcesContent":["import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"{{!\\n Copyright (c) HashiCorp, Inc.\\n SPDX-License-Identifier: MPL-2.0\\n}}\\n\\n<Hds::Interactive\\n class=\\\"hds-side-nav__icon-button\\\"\\n @current-when={{@current-when}}\\n @models={{hds-link-to-models @model @models}}\\n @query={{hds-link-to-query @query}}\\n @replace={{@replace}}\\n @route={{@route}}\\n @isRouteExternal={{@isRouteExternal}}\\n @href={{@href}}\\n @isHrefExternal={{@isHrefExternal}}\\n ...attributes\\n aria-label={{this.ariaLabel}}\\n>\\n <FlightIcon @name={{@icon}} @stretched={{true}} @size=\\\"24\\\" />\\n</Hds::Interactive>\")","/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { assert } from '@ember/debug';\n\nimport type { FlightIconSignature } from '@hashicorp/ember-flight-icons/components/flight-icon';\nimport type { HdsInteractiveSignature } from '../../interactive/';\n\ninterface HdsSideNavHeaderIconButtonSignature {\n Args: HdsInteractiveSignature['Args'] & {\n icon: FlightIconSignature['Args']['name'];\n ariaLabel: string;\n };\n Element: HdsInteractiveSignature['Element'];\n}\n\nexport default class HdsSideNavHeaderIconButtonComponent extends Component<HdsSideNavHeaderIconButtonSignature> {\n /**\n * @param ariaLabel\n * @type {string}\n * @description The value of `aria-label`\n */\n get ariaLabel() {\n const { ariaLabel } = this.args;\n\n assert(\n '@ariaLabel for \"Hds::SideNav::Header::IconButton\" must have a valid value',\n ariaLabel !== undefined\n );\n\n return ariaLabel;\n }\n}\n"],"names":["HdsSideNavHeaderIconButtonComponent","Component","ariaLabel","args","assert","undefined","setComponentTemplate","TEMPLATE"],"mappings":";;;;;AACA,eAAe,kBAAkB,CAAC,miBAAmiB;;ACDrkB;AACA;AACA;AACA;;AAgBe,MAAMA,mCAAmC,SAASC,SAAS,CAAsC;AAC9G;AACF;AACA;AACA;AACA;EACE,IAAIC,SAASA,GAAG;IACd,MAAM;AAAEA,MAAAA,SAAAA;KAAW,GAAG,IAAI,CAACC,IAAI,CAAA;AAE/BC,IAAAA,MAAM,CACJ,2EAA2E,EAC3EF,SAAS,KAAKG,SAChB,CAAC,CAAA;AAED,IAAA,OAAOH,SAAS,CAAA;AAClB,GAAA;AACF,CAAA;AAACI,oBAAA,CAAAC,QAAA,EAhBoBP,mCAAmC,CAAA;;;;"}
1
+ {"version":3,"file":"icon-button.js","sources":["../../../../../src/components/hds/side-nav/header/icon-button.hbs","../../../../../src/components/hds/side-nav/header/icon-button.ts"],"sourcesContent":["import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"{{!\\n Copyright (c) HashiCorp, Inc.\\n SPDX-License-Identifier: MPL-2.0\\n}}\\n\\n<Hds::Interactive\\n class=\\\"hds-side-nav__icon-button\\\"\\n @current-when={{@current-when}}\\n @models={{hds-link-to-models @model @models}}\\n @query={{hds-link-to-query @query}}\\n @replace={{@replace}}\\n @route={{@route}}\\n @isRouteExternal={{@isRouteExternal}}\\n @href={{@href}}\\n @isHrefExternal={{@isHrefExternal}}\\n ...attributes\\n aria-label={{this.ariaLabel}}\\n>\\n <FlightIcon @name={{@icon}} @stretched={{true}} @size=\\\"24\\\" />\\n</Hds::Interactive>\")","/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { assert } from '@ember/debug';\n\nimport type { FlightIconSignature } from '@hashicorp/ember-flight-icons/components/flight-icon';\nimport type { HdsInteractiveSignature } from '../../interactive/';\n\ninterface HdsSideNavHeaderIconButtonSignature {\n Args: HdsInteractiveSignature['Args'] & {\n icon: FlightIconSignature['Args']['name'];\n ariaLabel: string;\n };\n Element: HdsInteractiveSignature['Element'];\n}\n\nexport default class HdsSideNavHeaderIconButtonComponent extends Component<HdsSideNavHeaderIconButtonSignature> {\n /**\n * @param ariaLabel\n * @type {string}\n * @description The value of `aria-label`\n */\n get ariaLabel(): string {\n const { ariaLabel } = this.args;\n\n assert(\n '@ariaLabel for \"Hds::SideNav::Header::IconButton\" must have a valid value',\n ariaLabel !== undefined\n );\n\n return ariaLabel;\n }\n}\n"],"names":["HdsSideNavHeaderIconButtonComponent","Component","ariaLabel","args","assert","undefined","setComponentTemplate","TEMPLATE"],"mappings":";;;;;AACA,eAAe,kBAAkB,CAAC,miBAAmiB;;ACDrkB;AACA;AACA;AACA;;AAgBe,MAAMA,mCAAmC,SAASC,SAAS,CAAsC;AAC9G;AACF;AACA;AACA;AACA;EACE,IAAIC,SAASA,GAAW;IACtB,MAAM;AAAEA,MAAAA,SAAAA;KAAW,GAAG,IAAI,CAACC,IAAI,CAAA;AAE/BC,IAAAA,MAAM,CACJ,2EAA2E,EAC3EF,SAAS,KAAKG,SAChB,CAAC,CAAA;AAED,IAAA,OAAOH,SAAS,CAAA;AAClB,GAAA;AACF,CAAA;AAACI,oBAAA,CAAAC,QAAA,EAhBoBP,mCAAmC,CAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/hds/side-nav/index.hbs","../../../../src/components/hds/side-nav/index.ts"],"sourcesContent":["import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"{{!\\n Copyright (c) HashiCorp, Inc.\\n SPDX-License-Identifier: MPL-2.0\\n}}\\n\\n<Hds::SideNav::Base\\n class={{this.classNames}}\\n ...attributes\\n {{on \\\"transitionstart\\\" (fn this.setTransition \\\"start\\\")}}\\n {{on \\\"transitionend\\\" (fn this.setTransition \\\"end\\\")}}\\n {{! @glint-expect-error - https://github.com/josemarluedke/ember-focus-trap/issues/86 }}\\n {{focus-trap isActive=this.shouldTrapFocus}}\\n {{did-insert this.didInsert}}\\n>\\n <:root>\\n {{#if this.hasA11yRefocus}}\\n {{! @glint-expect-error - `ember-a11y-refocus` doesn\\'t expose types yet }}\\n <NavigationNarrator\\n @routeChangeValidator={{@a11yRefocusRouteChangeValidator}}\\n @skipTo=\\\"#{{@a11yRefocusSkipTo}}\\\"\\n @skipText={{@a11yRefocusSkipText}}\\n @navigationText={{@a11yRefocusNavigationText}}\\n @excludeAllQueryParams={{@a11yRefocusExcludeAllQueryParams}}\\n />\\n {{/if}}\\n {{#if this.showToggleButton}}\\n {{! template-lint-disable no-invalid-interactive}}\\n <div class=\\\"hds-side-nav__overlay\\\" {{on \\\"click\\\" this.toggleMinimizedStatus}} />\\n {{! template-lint-enable no-invalid-interactive}}\\n <Hds::SideNav::ToggleButton\\n aria-label={{this.ariaLabel}}\\n @icon={{if this.isMinimized \\\"chevrons-right\\\" \\\"chevrons-left\\\"}}\\n {{on \\\"click\\\" this.toggleMinimizedStatus}}\\n />\\n {{/if}}\\n </:root>\\n <:header as |Header|>\\n {{yield (hash Header=Header isMinimized=this.isMinimized) to=\\\"header\\\"}}\\n </:header>\\n <:body as |Body|>\\n {{yield (hash Body=Body isMinimized=this.isMinimized) to=\\\"body\\\"}}\\n </:body>\\n <:footer as |Footer|>\\n {{yield (hash Footer=Footer isMinimized=this.isMinimized) to=\\\"footer\\\"}}\\n </:footer>\\n</Hds::SideNav::Base>\")","/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { assert } from '@ember/debug';\nimport { registerDestructor } from '@ember/destroyable';\n\nimport type { HdsSideNavBaseSignature } from './base';\n\ninterface HdsSideNavSignature {\n Args: {\n isResponsive?: boolean;\n isCollapsible?: boolean;\n isMinimized?: boolean;\n hasA11yRefocus?: boolean;\n a11yRefocusSkipTo?: string;\n a11yRefocusSkipText?: string;\n a11yRefocusNavigationText?: string;\n a11yRefocusRouteChangeValidator?: string;\n a11yRefocusExcludeAllQueryParams?: boolean;\n ariaLabel?: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onToggleMinimizedStatus?: (arg: boolean) => void;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onDesktopViewportChange?: (arg: boolean) => void;\n };\n Blocks: {\n header?: [\n {\n Header?: HdsSideNavBaseSignature['Blocks']['header'];\n isMinimized?: boolean;\n }\n ];\n body?: [\n {\n Body?: HdsSideNavBaseSignature['Blocks']['body'];\n isMinimized?: boolean;\n }\n ];\n footer?: [\n {\n Footer?: HdsSideNavBaseSignature['Blocks']['footer'];\n isMinimized?: boolean;\n }\n ];\n };\n Element: HdsSideNavBaseSignature['Element'];\n}\n\nexport default class HdsSideNavComponent extends Component<HdsSideNavSignature> {\n @tracked isResponsive = this.args.isResponsive ?? true; // controls if the component reacts to viewport changes\n @tracked isMinimized = this.args.isMinimized ?? false; // sets the default state on 'desktop' viewports\n @tracked isCollapsible = this.args.isCollapsible ?? false; // controls if users can collapse the sidenav on 'desktop' viewports\n @tracked isAnimating = false;\n @tracked isDesktop = true;\n desktopMQ: MediaQueryList;\n containersToHide!: NodeListOf<Element>;\n hasA11yRefocus = this.args.hasA11yRefocus ?? true;\n\n desktopMQVal = getComputedStyle(document.documentElement).getPropertyValue(\n '--hds-app-desktop-breakpoint'\n );\n\n constructor(owner: unknown, args: HdsSideNavSignature['Args']) {\n super(owner, args);\n this.desktopMQ = window.matchMedia(`(min-width:${this.desktopMQVal})`);\n this.addEventListeners();\n registerDestructor(this, () => {\n this.removeEventListeners();\n });\n\n if (this.args.hasA11yRefocus) {\n assert(\n '@a11yRefocusSkipTo for NavigatorNarrator (a11y-refocus) in \"Hds::SideNav\" must have a valid value',\n this.args.a11yRefocusSkipTo !== undefined\n );\n }\n }\n\n addEventListeners() {\n document.addEventListener('keydown', this.escapePress, true);\n this.desktopMQ.addEventListener('change', this.updateDesktopVariable, true);\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() {\n document.removeEventListener('keydown', this.escapePress, true);\n this.desktopMQ.removeEventListener(\n 'change',\n this.updateDesktopVariable,\n true\n );\n }\n\n get shouldTrapFocus() {\n return this.isResponsive && !this.isDesktop && !this.isMinimized;\n }\n\n get showToggleButton() {\n return (this.isResponsive && !this.isDesktop) || this.isCollapsible;\n }\n\n /**\n * @param ariaLabel\n * @type {string}\n * @default 'close menu'\n */\n get ariaLabel() {\n if (this.isMinimized) {\n return this.args.ariaLabel ?? 'Open menu';\n }\n return this.args.ariaLabel ?? 'Close menu';\n }\n\n get classNames() {\n const classes = []; // `hds-side-nav` is already set by the \"Hds::SideNav::Base\" component\n\n // add specific class names for the different possible states\n if (this.isResponsive) {\n classes.push('hds-side-nav--is-responsive');\n }\n if (!this.isDesktop && this.isResponsive) {\n classes.push('hds-side-nav--is-mobile');\n } else {\n classes.push('hds-side-nav--is-desktop');\n }\n if (this.isMinimized && this.isResponsive) {\n classes.push('hds-side-nav--is-minimized');\n } else {\n classes.push('hds-side-nav--is-not-minimized');\n }\n if (this.isAnimating) {\n classes.push('hds-side-nav--is-animating');\n }\n\n return classes.join(' ');\n }\n\n @action\n escapePress(event: KeyboardEvent) {\n if (event.key === 'Escape' && !this.isMinimized && !this.isDesktop) {\n this.isMinimized = true;\n }\n }\n\n @action\n toggleMinimizedStatus() {\n this.isMinimized = !this.isMinimized;\n\n this.containersToHide.forEach((element) => {\n if (this.isMinimized) {\n element.setAttribute('inert', '');\n } else {\n element.removeAttribute('inert');\n }\n });\n\n const { onToggleMinimizedStatus } = this.args;\n\n if (typeof onToggleMinimizedStatus === 'function') {\n onToggleMinimizedStatus(this.isMinimized);\n }\n }\n\n @action\n didInsert(element: HTMLElement) {\n this.containersToHide = element.querySelectorAll(\n '.hds-side-nav-hide-when-minimized'\n );\n }\n\n @action\n setTransition(phase: string, event: TransitionEvent) {\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 @action\n updateDesktopVariable(event: MediaQueryListEvent) {\n this.isDesktop = event.matches;\n\n // automatically minimize on narrow viewports (when not in desktop mode)\n this.isMinimized = !this.isDesktop;\n\n const { onDesktopViewportChange } = this.args;\n\n if (typeof onDesktopViewportChange === 'function') {\n onDesktopViewportChange(this.isDesktop);\n }\n }\n}\n"],"names":["HdsSideNavComponent","_class","Component","constructor","owner","args","_initializerDefineProperty","_descriptor","_descriptor2","_descriptor3","_descriptor4","_descriptor5","_defineProperty","hasA11yRefocus","getComputedStyle","document","documentElement","getPropertyValue","desktopMQ","window","matchMedia","desktopMQVal","addEventListeners","registerDestructor","removeEventListeners","assert","a11yRefocusSkipTo","undefined","addEventListener","escapePress","updateDesktopVariable","isMinimized","syntheticEvent","MediaQueryListEvent","matches","media","removeEventListener","shouldTrapFocus","isResponsive","isDesktop","showToggleButton","isCollapsible","ariaLabel","classNames","classes","push","isAnimating","join","event","key","toggleMinimizedStatus","containersToHide","forEach","element","setAttribute","removeAttribute","onToggleMinimizedStatus","didInsert","querySelectorAll","setTransition","phase","propertyName","onDesktopViewportChange","_applyDecoratedDescriptor","prototype","tracked","configurable","enumerable","writable","initializer","action","Object","getOwnPropertyDescriptor","setComponentTemplate","TEMPLATE"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/hds/side-nav/index.hbs","../../../../src/components/hds/side-nav/index.ts"],"sourcesContent":["import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"{{!\\n Copyright (c) HashiCorp, Inc.\\n SPDX-License-Identifier: MPL-2.0\\n}}\\n\\n<Hds::SideNav::Base\\n class={{this.classNames}}\\n ...attributes\\n {{on \\\"transitionstart\\\" (fn this.setTransition \\\"start\\\")}}\\n {{on \\\"transitionend\\\" (fn this.setTransition \\\"end\\\")}}\\n {{! @glint-expect-error - https://github.com/josemarluedke/ember-focus-trap/issues/86 }}\\n {{focus-trap isActive=this.shouldTrapFocus}}\\n {{did-insert this.didInsert}}\\n>\\n <:root>\\n {{#if this.hasA11yRefocus}}\\n {{! @glint-expect-error - `ember-a11y-refocus` doesn\\'t expose types yet }}\\n <NavigationNarrator\\n @routeChangeValidator={{@a11yRefocusRouteChangeValidator}}\\n @skipTo=\\\"#{{@a11yRefocusSkipTo}}\\\"\\n @skipText={{@a11yRefocusSkipText}}\\n @navigationText={{@a11yRefocusNavigationText}}\\n @excludeAllQueryParams={{@a11yRefocusExcludeAllQueryParams}}\\n />\\n {{/if}}\\n {{#if this.showToggleButton}}\\n {{! template-lint-disable no-invalid-interactive}}\\n <div class=\\\"hds-side-nav__overlay\\\" {{on \\\"click\\\" this.toggleMinimizedStatus}} />\\n {{! template-lint-enable no-invalid-interactive}}\\n <Hds::SideNav::ToggleButton\\n aria-label={{this.ariaLabel}}\\n @icon={{if this.isMinimized \\\"chevrons-right\\\" \\\"chevrons-left\\\"}}\\n {{on \\\"click\\\" this.toggleMinimizedStatus}}\\n />\\n {{/if}}\\n </:root>\\n <:header as |Header|>\\n {{yield (hash Header=Header isMinimized=this.isMinimized) to=\\\"header\\\"}}\\n </:header>\\n <:body as |Body|>\\n {{yield (hash Body=Body isMinimized=this.isMinimized) to=\\\"body\\\"}}\\n </:body>\\n <:footer as |Footer|>\\n {{yield (hash Footer=Footer isMinimized=this.isMinimized) to=\\\"footer\\\"}}\\n </:footer>\\n</Hds::SideNav::Base>\")","/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { assert } from '@ember/debug';\nimport { registerDestructor } from '@ember/destroyable';\n\nimport type { HdsSideNavBaseSignature } from './base';\n\ninterface HdsSideNavSignature {\n Args: {\n isResponsive?: boolean;\n isCollapsible?: boolean;\n isMinimized?: boolean;\n hasA11yRefocus?: boolean;\n a11yRefocusSkipTo?: string;\n a11yRefocusSkipText?: string;\n a11yRefocusNavigationText?: string;\n a11yRefocusRouteChangeValidator?: string;\n a11yRefocusExcludeAllQueryParams?: boolean;\n ariaLabel?: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onToggleMinimizedStatus?: (arg: boolean) => void;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onDesktopViewportChange?: (arg: boolean) => void;\n };\n Blocks: {\n header?: [\n {\n Header?: HdsSideNavBaseSignature['Blocks']['header'];\n isMinimized?: boolean;\n },\n ];\n body?: [\n {\n Body?: HdsSideNavBaseSignature['Blocks']['body'];\n isMinimized?: boolean;\n },\n ];\n footer?: [\n {\n Footer?: HdsSideNavBaseSignature['Blocks']['footer'];\n isMinimized?: boolean;\n },\n ];\n };\n Element: HdsSideNavBaseSignature['Element'];\n}\n\nexport default class HdsSideNavComponent extends Component<HdsSideNavSignature> {\n @tracked isResponsive = this.args.isResponsive ?? true; // controls if the component reacts to viewport changes\n @tracked isMinimized = this.args.isMinimized ?? false; // sets the default state on 'desktop' viewports\n @tracked isCollapsible = this.args.isCollapsible ?? false; // controls if users can collapse the sidenav on 'desktop' viewports\n @tracked isAnimating = false;\n @tracked isDesktop = true;\n desktopMQ: MediaQueryList;\n containersToHide!: NodeListOf<Element>;\n hasA11yRefocus = this.args.hasA11yRefocus ?? true;\n\n desktopMQVal = getComputedStyle(document.documentElement).getPropertyValue(\n '--hds-app-desktop-breakpoint'\n );\n\n constructor(owner: unknown, args: HdsSideNavSignature['Args']) {\n super(owner, args);\n this.desktopMQ = window.matchMedia(`(min-width:${this.desktopMQVal})`);\n this.addEventListeners();\n registerDestructor(this, (): void => {\n this.removeEventListeners();\n });\n\n if (this.args.hasA11yRefocus) {\n assert(\n '@a11yRefocusSkipTo for NavigatorNarrator (a11y-refocus) in \"Hds::SideNav\" must have a valid value',\n this.args.a11yRefocusSkipTo !== undefined\n );\n }\n }\n\n addEventListeners(): void {\n document.addEventListener('keydown', this.escapePress, true);\n this.desktopMQ.addEventListener('change', this.updateDesktopVariable, true);\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 this.updateDesktopVariable,\n true\n );\n }\n\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 /**\n * @param ariaLabel\n * @type {string}\n * @default 'close menu'\n */\n get ariaLabel(): string {\n if (this.isMinimized) {\n return this.args.ariaLabel ?? 'Open menu';\n }\n return this.args.ariaLabel ?? 'Close menu';\n }\n\n get classNames(): string {\n const classes = []; // `hds-side-nav` is already set by the \"Hds::SideNav::Base\" component\n\n // add specific class names for the different possible states\n if (this.isResponsive) {\n classes.push('hds-side-nav--is-responsive');\n }\n if (!this.isDesktop && this.isResponsive) {\n classes.push('hds-side-nav--is-mobile');\n } else {\n classes.push('hds-side-nav--is-desktop');\n }\n if (this.isMinimized && this.isResponsive) {\n classes.push('hds-side-nav--is-minimized');\n } else {\n classes.push('hds-side-nav--is-not-minimized');\n }\n if (this.isAnimating) {\n classes.push('hds-side-nav--is-animating');\n }\n\n return classes.join(' ');\n }\n\n @action\n escapePress(event: KeyboardEvent): void {\n if (event.key === 'Escape' && !this.isMinimized && !this.isDesktop) {\n this.isMinimized = true;\n }\n }\n\n @action\n toggleMinimizedStatus(): void {\n this.isMinimized = !this.isMinimized;\n\n this.containersToHide.forEach((element): void => {\n if (this.isMinimized) {\n element.setAttribute('inert', '');\n } else {\n element.removeAttribute('inert');\n }\n });\n\n const { onToggleMinimizedStatus } = this.args;\n\n if (typeof onToggleMinimizedStatus === 'function') {\n onToggleMinimizedStatus(this.isMinimized);\n }\n }\n\n @action\n didInsert(element: HTMLElement): void {\n this.containersToHide = element.querySelectorAll(\n '.hds-side-nav-hide-when-minimized'\n );\n }\n\n @action\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 @action\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 const { onDesktopViewportChange } = this.args;\n\n if (typeof onDesktopViewportChange === 'function') {\n onDesktopViewportChange(this.isDesktop);\n }\n }\n}\n"],"names":["HdsSideNavComponent","_class","Component","constructor","owner","args","_initializerDefineProperty","_descriptor","_descriptor2","_descriptor3","_descriptor4","_descriptor5","_defineProperty","hasA11yRefocus","getComputedStyle","document","documentElement","getPropertyValue","desktopMQ","window","matchMedia","desktopMQVal","addEventListeners","registerDestructor","removeEventListeners","assert","a11yRefocusSkipTo","undefined","addEventListener","escapePress","updateDesktopVariable","isMinimized","syntheticEvent","MediaQueryListEvent","matches","media","removeEventListener","shouldTrapFocus","isResponsive","isDesktop","showToggleButton","isCollapsible","ariaLabel","classNames","classes","push","isAnimating","join","event","key","toggleMinimizedStatus","containersToHide","forEach","element","setAttribute","removeAttribute","onToggleMinimizedStatus","didInsert","querySelectorAll","setTransition","phase","propertyName","onDesktopViewportChange","_applyDecoratedDescriptor","prototype","tracked","configurable","enumerable","writable","initializer","action","Object","getOwnPropertyDescriptor","setComponentTemplate","TEMPLATE"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../src/components/hds/side-nav/list/index.hbs","../../../../../src/components/hds/side-nav/list/index.ts"],"sourcesContent":["import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"{{!\\n Copyright (c) HashiCorp, Inc.\\n SPDX-License-Identifier: MPL-2.0\\n}}\\n\\n<nav class=\\\"hds-side-nav__list-wrapper\\\" ...attributes>\\n {{yield (hash ExtraBefore=(component \\\"hds/yield\\\"))}}\\n <ul class=\\\"hds-side-nav__list\\\" role=\\\"list\\\">\\n {{yield\\n (hash\\n Item=(component \\\"hds/side-nav/list/item\\\")\\n BackLink=(component \\\"hds/side-nav/list/back-link\\\")\\n Title=(component \\\"hds/side-nav/list/title\\\")\\n Link=(component \\\"hds/side-nav/list/link\\\")\\n )\\n }}\\n </ul>\\n {{yield (hash ExtraAfter=(component \\\"hds/yield\\\"))}}\\n</nav>\")","/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport TemplateOnlyComponent from '@ember/component/template-only';\n\nimport type { ComponentLike } from '@glint/template';\nimport type { HdsYieldSignature } from '../../yield';\nimport type { HdsSideNavListItemSignature } from './item';\nimport type { HdsSideNavListBackLinkSignature } from './back-link';\nimport type { HdsSideNavListTitleSignature } from './title';\nimport type { HdsSideNavListLinkSignature } from './link';\n\nexport interface HdsSideNavListSignature {\n Blocks: {\n default: [\n {\n ExtraBefore?: ComponentLike<HdsYieldSignature>;\n Item?: ComponentLike<HdsSideNavListItemSignature>;\n BackLink?: ComponentLike<HdsSideNavListBackLinkSignature>;\n Title?: ComponentLike<HdsSideNavListTitleSignature>;\n Link?: ComponentLike<HdsSideNavListLinkSignature>;\n ExtraAfter?: ComponentLike<HdsYieldSignature>;\n }\n ];\n };\n Element: HTMLElement;\n}\n\nconst HdsSideNavListComponent =\n TemplateOnlyComponent<HdsSideNavListSignature>();\n\nexport default HdsSideNavListComponent;\n"],"names":["HdsSideNavListComponent","TemplateOnlyComponent","setComponentTemplate","TEMPLATE"],"mappings":";;;;AACA,eAAe,kBAAkB,CAAC,2kBAA2kB;;ACD7mB;AACA;AACA;AACA;;AA2BA,MAAMA,uBAAuB,GAC3BC,YAAqB,EAA2B,CAAA;AAElD,YAAAC,oBAAA,CAAAC,QAAA,EAAeH,uBAAuB,CAAA;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/components/hds/side-nav/list/index.hbs","../../../../../src/components/hds/side-nav/list/index.ts"],"sourcesContent":["import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"{{!\\n Copyright (c) HashiCorp, Inc.\\n SPDX-License-Identifier: MPL-2.0\\n}}\\n\\n<nav class=\\\"hds-side-nav__list-wrapper\\\" ...attributes>\\n {{yield (hash ExtraBefore=(component \\\"hds/yield\\\"))}}\\n <ul class=\\\"hds-side-nav__list\\\" role=\\\"list\\\">\\n {{yield\\n (hash\\n Item=(component \\\"hds/side-nav/list/item\\\")\\n BackLink=(component \\\"hds/side-nav/list/back-link\\\")\\n Title=(component \\\"hds/side-nav/list/title\\\")\\n Link=(component \\\"hds/side-nav/list/link\\\")\\n )\\n }}\\n </ul>\\n {{yield (hash ExtraAfter=(component \\\"hds/yield\\\"))}}\\n</nav>\")","/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport TemplateOnlyComponent from '@ember/component/template-only';\n\nimport type { ComponentLike } from '@glint/template';\nimport type { HdsYieldSignature } from '../../yield';\nimport type { HdsSideNavListItemSignature } from './item';\nimport type { HdsSideNavListBackLinkSignature } from './back-link';\nimport type { HdsSideNavListTitleSignature } from './title';\nimport type { HdsSideNavListLinkSignature } from './link';\n\nexport interface HdsSideNavListSignature {\n Blocks: {\n default: [\n {\n ExtraBefore?: ComponentLike<HdsYieldSignature>;\n Item?: ComponentLike<HdsSideNavListItemSignature>;\n BackLink?: ComponentLike<HdsSideNavListBackLinkSignature>;\n Title?: ComponentLike<HdsSideNavListTitleSignature>;\n Link?: ComponentLike<HdsSideNavListLinkSignature>;\n ExtraAfter?: ComponentLike<HdsYieldSignature>;\n },\n ];\n };\n Element: HTMLElement;\n}\n\nconst HdsSideNavListComponent =\n TemplateOnlyComponent<HdsSideNavListSignature>();\n\nexport default HdsSideNavListComponent;\n"],"names":["HdsSideNavListComponent","TemplateOnlyComponent","setComponentTemplate","TEMPLATE"],"mappings":";;;;AACA,eAAe,kBAAkB,CAAC,2kBAA2kB;;ACD7mB;AACA;AACA;AACA;;AA2BA,MAAMA,uBAAuB,GAC3BC,YAAqB,EAA2B,CAAA;AAElD,YAAAC,oBAAA,CAAAC,QAAA,EAAeH,uBAAuB,CAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"target.js","sources":["../../../../../src/components/hds/side-nav/portal/target.hbs","../../../../../src/components/hds/side-nav/portal/target.ts"],"sourcesContent":["import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"{{!\\n Copyright (c) HashiCorp, Inc.\\n SPDX-License-Identifier: MPL-2.0\\n}}\\n\\n<div class=\\\"hds-side-nav__content\\\" ...attributes>\\n <PortalTarget\\n @multiple={{true}}\\n @onChange={{this.panelsChanged}}\\n @name={{if @targetName @targetName \\\"hds-side-nav-portal-target\\\"}}\\n class=\\\"hds-side-nav__content-panels hds-side-nav-hide-when-minimized\\\"\\n {{did-update this.didUpdateSubnav this.numSubnavs}}\\n />\\n</div>\")","/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { inject as service } from '@ember/service';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { DEBUG } from '@glimmer/env';\nimport Ember from 'ember';\n\nimport type { HdsSideNavPortalSignature } from './index';\n\n// import { PortalTargetSignature } from 'ember-stargate/components/portal-target';\ninterface PortalTargetSignature {\n Element: HTMLDivElement;\n Args: {\n name: string;\n multiple?: boolean;\n onChange?: (count: number) => void;\n };\n Blocks: {\n default: [number];\n };\n}\n\nimport type { Registry as Services } from '@ember/service';\n\ninterface HdsSideNavPortalTargetSignature {\n Args: PortalTargetSignature['Args'] & {\n targetName?: HdsSideNavPortalSignature['Args']['targetName'];\n };\n Element: HTMLDivElement;\n}\n\nexport default class HdsSideNavPortalTargetComponent extends Component<HdsSideNavPortalTargetSignature> {\n @service router!: Services['router'];\n\n @tracked numSubnavs = 0;\n @tracked lastPanelEl: Element | undefined;\n\n static get prefersReducedMotionOverride() {\n return Ember.testing;\n }\n\n prefersReducedMotionMQ = window.matchMedia(\n '(prefers-reduced-motion: reduce)'\n );\n\n get prefersReducedMotion() {\n return (\n HdsSideNavPortalTargetComponent.prefersReducedMotionOverride ||\n (this.prefersReducedMotionMQ && this.prefersReducedMotionMQ.matches)\n );\n }\n\n @action\n panelsChanged(portalCount: number) {\n this.numSubnavs = portalCount;\n }\n\n @action\n didUpdateSubnav(element: HTMLElement, [count]: [number]) {\n this.animateSubnav(element, [count]);\n }\n\n @action\n animateSubnav(element: HTMLElement, [count]: [number]) {\n /*\n * Here is what the layout looks like for this setup\n *\n\n SideNav\n +----------------------+\n | +------------------+ |\n | | (\"header\") | |\n | +------------------+ |\n | |\n | +------------------+ |\n | | (\"body\") | |\n (PortalTarget) | | | |\n +----------------------------------------------+ | |\n | +----------+ +----------+ | +----------+ | | |\n | | (Portal) | | (Portal) | | (Portal) | | | |\n | | | | | | | | | | |\n | | hidden | | hidden | | *active* | | | |\n | | panel | | panel | | | panel | | | |\n | | | | | | | | | |\n | | | | | | | | | | |\n | | | | | | | | | |\n | | | | | | | | | | |\n | | | | | | | | | |\n | | | | | | | | | | |\n | | | | | | | | | |\n | +----------+ +----------+ | +----------+ | | |\n +----------------------------------------------+ | |\n | | | |\n | +------------------+ |\n | |\n | +------------------+ |\n | | (\"footer\") | |\n | +------------------+ |\n +----------------------+\n\n *\n * every time `HcAppFrame::SideNav::Portal` renders, it contains a portaled \"panel\"\n * that is rendered into the `hds-side-nav__content-panels` (inside the PortalTarget).\n *\n * Rendering or unrendering other `HcAppFrame::SideNav::Portal`s triggers the number of\n * subnavs to change (via `numSubnavs`), so this function runs and slides\n * `hds-side-nav__content-panels` left or right using the `element.animate` api.\n *\n * */\n\n const activeIndex = count - 1;\n const targetElement = element;\n const { prefersReducedMotion } = this;\n\n const styles = getComputedStyle(targetElement);\n const columnWidth = styles.getPropertyValue(\n '--hds-app-sidenav-width-expanded'\n );\n const slideDuration = prefersReducedMotion ? 0 : 150;\n let fadeDuration = prefersReducedMotion ? 0 : 175;\n let fadeDelay = prefersReducedMotion ? 0 : 50;\n\n // slide entire parent panel\n const start = styles.transform;\n const end = `translateX(-${activeIndex * parseInt(columnWidth, 10)}px)`;\n const anim = targetElement.animate(\n [{ transform: start }, { transform: end }],\n {\n duration: slideDuration,\n easing: 'cubic-bezier(0.65, 0, 0.35, 1)',\n fill: 'forwards',\n }\n );\n\n anim.finished.then(() => {\n // uncomment this if we need/want to scroll the element to the top\n // targetElement.scrollIntoView(true);\n if (activeIndex > 0) {\n const allPrev = Array.from(targetElement.children).slice(\n 0,\n activeIndex\n ) as HTMLElement[];\n for (const ele of allPrev) {\n ele.ariaHidden = 'true';\n ele.style.setProperty('visibility', 'hidden');\n ele.style.setProperty('opacity', '0');\n }\n }\n // Notice: we don't add the styles by default because it writes a `style` attribute to the element and it causes an additional re-render\n if (DEBUG) {\n // Check the visibility of the element before attempting to commitStyles.\n if (targetElement.offsetParent !== null) {\n anim.commitStyles();\n }\n }\n });\n\n // fade in next panel\n const nextPanelEl = targetElement.children[activeIndex] as HTMLElement;\n\n // get reference to last child panel\n const lastPanelEl = targetElement.children[\n targetElement.children.length - 1\n ] as HTMLElement;\n\n if (nextPanelEl) {\n nextPanelEl.ariaHidden = 'false';\n nextPanelEl.style.setProperty('visibility', 'visible');\n // this eliminates a flicker if there's only one subnav rendering or if we\n // already just rendered this panel.\n if (this.lastPanelEl) {\n if (activeIndex === 0 || nextPanelEl.isSameNode(this.lastPanelEl)) {\n fadeDelay = 0;\n fadeDuration = 0;\n }\n }\n\n // remember the last panel\n this.lastPanelEl = lastPanelEl;\n\n nextPanelEl.animate([{ opacity: '0' }, { opacity: '1' }], {\n delay: fadeDelay,\n duration: fadeDuration,\n fill: 'forwards',\n });\n }\n }\n}\n"],"names":["HdsSideNavPortalTargetComponent","_class","Component","constructor","args","_initializerDefineProperty","_descriptor","_descriptor2","_descriptor3","_defineProperty","window","matchMedia","prefersReducedMotionOverride","Ember","testing","prefersReducedMotion","prefersReducedMotionMQ","matches","panelsChanged","portalCount","numSubnavs","didUpdateSubnav","element","count","animateSubnav","activeIndex","targetElement","styles","getComputedStyle","columnWidth","getPropertyValue","slideDuration","fadeDuration","fadeDelay","start","transform","end","parseInt","anim","animate","duration","easing","fill","finished","then","allPrev","Array","from","children","slice","ele","ariaHidden","style","setProperty","DEBUG","offsetParent","commitStyles","nextPanelEl","lastPanelEl","length","isSameNode","opacity","delay","_applyDecoratedDescriptor","prototype","service","configurable","enumerable","writable","initializer","tracked","action","Object","getOwnPropertyDescriptor","setComponentTemplate","TEMPLATE"],"mappings":"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"}
1
+ {"version":3,"file":"target.js","sources":["../../../../../src/components/hds/side-nav/portal/target.hbs","../../../../../src/components/hds/side-nav/portal/target.ts"],"sourcesContent":["import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"{{!\\n Copyright (c) HashiCorp, Inc.\\n SPDX-License-Identifier: MPL-2.0\\n}}\\n\\n<div class=\\\"hds-side-nav__content\\\" ...attributes>\\n <PortalTarget\\n @multiple={{true}}\\n @onChange={{this.panelsChanged}}\\n @name={{if @targetName @targetName \\\"hds-side-nav-portal-target\\\"}}\\n class=\\\"hds-side-nav__content-panels hds-side-nav-hide-when-minimized\\\"\\n {{did-update this.didUpdateSubnav this.numSubnavs}}\\n />\\n</div>\")","/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { inject as service } from '@ember/service';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { DEBUG } from '@glimmer/env';\nimport Ember from 'ember';\n\nimport type { HdsSideNavPortalSignature } from './index';\n\n// import { PortalTargetSignature } from 'ember-stargate/components/portal-target';\ninterface PortalTargetSignature {\n Element: HTMLDivElement;\n Args: {\n name: string;\n multiple?: boolean;\n onChange?: (count: number) => void;\n };\n Blocks: {\n default: [number];\n };\n}\n\nimport type { Registry as Services } from '@ember/service';\n\ninterface HdsSideNavPortalTargetSignature {\n Args: PortalTargetSignature['Args'] & {\n targetName?: HdsSideNavPortalSignature['Args']['targetName'];\n };\n Element: HTMLDivElement;\n}\n\nexport default class HdsSideNavPortalTargetComponent extends Component<HdsSideNavPortalTargetSignature> {\n @service router!: Services['router'];\n\n @tracked numSubnavs = 0;\n @tracked lastPanelEl: Element | undefined;\n\n static get prefersReducedMotionOverride(): boolean {\n return Ember.testing;\n }\n\n prefersReducedMotionMQ = window.matchMedia(\n '(prefers-reduced-motion: reduce)'\n );\n\n get prefersReducedMotion(): boolean {\n return (\n HdsSideNavPortalTargetComponent.prefersReducedMotionOverride ||\n (this.prefersReducedMotionMQ && this.prefersReducedMotionMQ.matches)\n );\n }\n\n @action\n panelsChanged(portalCount: number): void {\n this.numSubnavs = portalCount;\n }\n\n @action\n didUpdateSubnav(element: HTMLElement, [count]: [number]): void {\n this.animateSubnav(element, [count]);\n }\n\n @action\n animateSubnav(element: HTMLElement, [count]: [number]): void {\n /*\n * Here is what the layout looks like for this setup\n *\n\n SideNav\n +----------------------+\n | +------------------+ |\n | | (\"header\") | |\n | +------------------+ |\n | |\n | +------------------+ |\n | | (\"body\") | |\n (PortalTarget) | | | |\n +----------------------------------------------+ | |\n | +----------+ +----------+ | +----------+ | | |\n | | (Portal) | | (Portal) | | (Portal) | | | |\n | | | | | | | | | | |\n | | hidden | | hidden | | *active* | | | |\n | | panel | | panel | | | panel | | | |\n | | | | | | | | | |\n | | | | | | | | | | |\n | | | | | | | | | |\n | | | | | | | | | | |\n | | | | | | | | | |\n | | | | | | | | | | |\n | | | | | | | | | |\n | +----------+ +----------+ | +----------+ | | |\n +----------------------------------------------+ | |\n | | | |\n | +------------------+ |\n | |\n | +------------------+ |\n | | (\"footer\") | |\n | +------------------+ |\n +----------------------+\n\n *\n * every time `HcAppFrame::SideNav::Portal` renders, it contains a portaled \"panel\"\n * that is rendered into the `hds-side-nav__content-panels` (inside the PortalTarget).\n *\n * Rendering or unrendering other `HcAppFrame::SideNav::Portal`s triggers the number of\n * subnavs to change (via `numSubnavs`), so this function runs and slides\n * `hds-side-nav__content-panels` left or right using the `element.animate` api.\n *\n * */\n\n const activeIndex = count - 1;\n const targetElement = element;\n const { prefersReducedMotion } = this;\n\n const styles = getComputedStyle(targetElement);\n const columnWidth = styles.getPropertyValue(\n '--hds-app-sidenav-width-expanded'\n );\n const slideDuration = prefersReducedMotion ? 0 : 150;\n let fadeDuration = prefersReducedMotion ? 0 : 175;\n let fadeDelay = prefersReducedMotion ? 0 : 50;\n\n // slide entire parent panel\n const start = styles.transform;\n const end = `translateX(-${activeIndex * parseInt(columnWidth, 10)}px)`;\n const anim = targetElement.animate(\n [{ transform: start }, { transform: end }],\n {\n duration: slideDuration,\n easing: 'cubic-bezier(0.65, 0, 0.35, 1)',\n fill: 'forwards',\n }\n );\n\n anim.finished.then((): void => {\n // uncomment this if we need/want to scroll the element to the top\n // targetElement.scrollIntoView(true);\n if (activeIndex > 0) {\n const allPrev = Array.from(targetElement.children).slice(\n 0,\n activeIndex\n ) as HTMLElement[];\n for (const ele of allPrev) {\n ele.ariaHidden = 'true';\n ele.style.setProperty('visibility', 'hidden');\n ele.style.setProperty('opacity', '0');\n }\n }\n // Notice: we don't add the styles by default because it writes a `style` attribute to the element and it causes an additional re-render\n if (DEBUG) {\n // Check the visibility of the element before attempting to commitStyles.\n if (targetElement.offsetParent !== null) {\n anim.commitStyles();\n }\n }\n });\n\n // fade in next panel\n const nextPanelEl = targetElement.children[activeIndex] as HTMLElement;\n\n // get reference to last child panel\n const lastPanelEl = targetElement.children[\n targetElement.children.length - 1\n ] as HTMLElement;\n\n if (nextPanelEl) {\n nextPanelEl.ariaHidden = 'false';\n nextPanelEl.style.setProperty('visibility', 'visible');\n // this eliminates a flicker if there's only one subnav rendering or if we\n // already just rendered this panel.\n if (this.lastPanelEl) {\n if (activeIndex === 0 || nextPanelEl.isSameNode(this.lastPanelEl)) {\n fadeDelay = 0;\n fadeDuration = 0;\n }\n }\n\n // remember the last panel\n this.lastPanelEl = lastPanelEl;\n\n nextPanelEl.animate([{ opacity: '0' }, { opacity: '1' }], {\n delay: fadeDelay,\n duration: fadeDuration,\n fill: 'forwards',\n });\n }\n }\n}\n"],"names":["HdsSideNavPortalTargetComponent","_class","Component","constructor","args","_initializerDefineProperty","_descriptor","_descriptor2","_descriptor3","_defineProperty","window","matchMedia","prefersReducedMotionOverride","Ember","testing","prefersReducedMotion","prefersReducedMotionMQ","matches","panelsChanged","portalCount","numSubnavs","didUpdateSubnav","element","count","animateSubnav","activeIndex","targetElement","styles","getComputedStyle","columnWidth","getPropertyValue","slideDuration","fadeDuration","fadeDelay","start","transform","end","parseInt","anim","animate","duration","easing","fill","finished","then","allPrev","Array","from","children","slice","ele","ariaHidden","style","setProperty","DEBUG","offsetParent","commitStyles","nextPanelEl","lastPanelEl","length","isSameNode","opacity","delay","_applyDecoratedDescriptor","prototype","service","configurable","enumerable","writable","initializer","tracked","action","Object","getOwnPropertyDescriptor","setComponentTemplate","TEMPLATE"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"indicator.js","sources":["../../../../../src/components/hds/stepper/step/indicator.hbs","../../../../../src/components/hds/stepper/step/indicator.ts"],"sourcesContent":["import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"{{!\\n Copyright (c) HashiCorp, Inc.\\n SPDX-License-Identifier: MPL-2.0\\n}}\\n<div class={{this.classNames}} ...attributes>\\n <div class=\\\"hds-stepper-indicator-step__svg-hexagon\\\">\\n <svg width=\\\"24\\\" height=\\\"24\\\" viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" aria-hidden=\\\"true\\\">\\n <path\\n d=\\\"m3.664 6.264 6.99-4.42a2.5 2.5 0 0 1 2.67-.002l7.01 4.422A2.5 2.5 0 0 1 21.5 8.38v7.242a2.5 2.5 0 0 1-1.166 2.115l-7.01 4.422a2.5 2.5 0 0 1-2.67-.002l-6.99-4.42A2.5 2.5 0 0 1 2.5 15.623V8.377a2.5 2.5 0 0 1 1.164-2.113Z\\\"\\n stroke-width=\\\"1\\\"\\n ></path>\\n </svg>\\n </div>\\n <div class=\\\"hds-stepper-indicator-step__status\\\">\\n {{#if (eq @status \\\"processing\\\")}}\\n <FlightIcon class=\\\"hds-stepper-indicator-step__icon\\\" @name=\\\"loading\\\" @size=\\\"16\\\" />\\n {{else if (eq @status \\\"complete\\\")}}\\n <FlightIcon class=\\\"hds-stepper-indicator-step__icon\\\" @name=\\\"check\\\" @size=\\\"16\\\" />\\n {{else}}\\n <Hds::Text::Body\\n class=\\\"hds-stepper-indicator-step__text\\\"\\n @tag=\\\"span\\\"\\n @size=\\\"100\\\"\\n @weight=\\\"medium\\\"\\n >{{@text}}</Hds::Text::Body>\\n {{/if}}\\n </div>\\n</div>\")","/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { assert } from '@ember/debug';\n\nimport { HdsStepperStatusesValues } from '../types.ts';\nimport type { HdsStepperStatuses } from '../types.ts';\n\nexport const DEFAULT_STATUS = HdsStepperStatusesValues.Incomplete;\nexport const STATUSES: string[] = Object.values(HdsStepperStatusesValues);\n\ninterface HdsStepperStepIndicatorSignature {\n Args: {\n status: HdsStepperStatuses;\n isInteractive?: boolean;\n text: string;\n };\n Element: HTMLDivElement;\n}\n\nexport default class HdsStepperStepIndicatorComponent extends Component<HdsStepperStepIndicatorSignature> {\n /**\n * @param status\n * @type {string}\n * @default \"incomplete\"\n */\n\n get status() {\n const { status = DEFAULT_STATUS } = this.args;\n\n assert(\n `@status for \"Hds::Stepper::Step::Indicator\" must be one of the following: ${STATUSES.join(\n ', '\n )}; received: ${status}`,\n STATUSES.includes(status)\n );\n\n return status;\n }\n\n /**\n * @param isInteractive\n * @type {boolean}\n * @default false\n */\n\n get isInteractive() {\n return this.args.isInteractive || false;\n }\n\n /**\n * Get the class names to apply to the component.\n * @method IndicatorStep#classNames\n * @return {string} The \"class\" attribute to apply to the component.\n */\n get classNames() {\n const classes = ['hds-stepper-indicator-step'];\n\n // Based on the @status arg\n classes.push(`hds-stepper-indicator-step--status-${this.status}`);\n\n if (this.isInteractive) {\n classes.push(`hds-stepper-indicator-step--is-interactive`);\n }\n\n return classes.join(' ');\n }\n}\n"],"names":["DEFAULT_STATUS","HdsStepperStatusesValues","Incomplete","STATUSES","Object","values","HdsStepperStepIndicatorComponent","Component","status","args","assert","join","includes","isInteractive","classNames","classes","push","setComponentTemplate","TEMPLATE"],"mappings":";;;;;;AACA,eAAe,kBAAkB,CAAC,oqCAAoqC;;ACDtsC;AACA;AACA;AACA;;AAQaA,MAAAA,cAAc,GAAGC,wBAAwB,CAACC,WAAU;AAC1D,MAAMC,QAAkB,GAAGC,MAAM,CAACC,MAAM,CAACJ,wBAAwB,EAAC;AAW1D,MAAMK,gCAAgC,SAASC,SAAS,CAAmC;AACxG;AACF;AACA;AACA;AACA;;EAEE,IAAIC,MAAMA,GAAG;IACX,MAAM;AAAEA,MAAAA,MAAM,GAAGR,cAAAA;KAAgB,GAAG,IAAI,CAACS,IAAI,CAAA;AAE7CC,IAAAA,MAAM,CACJ,CAA6EP,0EAAAA,EAAAA,QAAQ,CAACQ,IAAI,CACxF,IACF,CAAC,CAAA,YAAA,EAAeH,MAAM,CAAA,CAAE,EACxBL,QAAQ,CAACS,QAAQ,CAACJ,MAAM,CAC1B,CAAC,CAAA;AAED,IAAA,OAAOA,MAAM,CAAA;AACf,GAAA;;AAEA;AACF;AACA;AACA;AACA;;EAEE,IAAIK,aAAaA,GAAG;AAClB,IAAA,OAAO,IAAI,CAACJ,IAAI,CAACI,aAAa,IAAI,KAAK,CAAA;AACzC,GAAA;;AAEA;AACF;AACA;AACA;AACA;EACE,IAAIC,UAAUA,GAAG;AACf,IAAA,MAAMC,OAAO,GAAG,CAAC,4BAA4B,CAAC,CAAA;;AAE9C;IACAA,OAAO,CAACC,IAAI,CAAC,CAAA,mCAAA,EAAsC,IAAI,CAACR,MAAM,EAAE,CAAC,CAAA;IAEjE,IAAI,IAAI,CAACK,aAAa,EAAE;AACtBE,MAAAA,OAAO,CAACC,IAAI,CAAC,CAAA,0CAAA,CAA4C,CAAC,CAAA;AAC5D,KAAA;AAEA,IAAA,OAAOD,OAAO,CAACJ,IAAI,CAAC,GAAG,CAAC,CAAA;AAC1B,GAAA;AACF,CAAA;AAACM,oBAAA,CAAAC,QAAA,EA/CoBZ,gCAAgC,CAAA;;;;"}
1
+ {"version":3,"file":"indicator.js","sources":["../../../../../src/components/hds/stepper/step/indicator.hbs","../../../../../src/components/hds/stepper/step/indicator.ts"],"sourcesContent":["import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"{{!\\n Copyright (c) HashiCorp, Inc.\\n SPDX-License-Identifier: MPL-2.0\\n}}\\n<div class={{this.classNames}} ...attributes>\\n <div class=\\\"hds-stepper-indicator-step__svg-hexagon\\\">\\n <svg width=\\\"24\\\" height=\\\"24\\\" viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" aria-hidden=\\\"true\\\">\\n <path\\n d=\\\"m3.664 6.264 6.99-4.42a2.5 2.5 0 0 1 2.67-.002l7.01 4.422A2.5 2.5 0 0 1 21.5 8.38v7.242a2.5 2.5 0 0 1-1.166 2.115l-7.01 4.422a2.5 2.5 0 0 1-2.67-.002l-6.99-4.42A2.5 2.5 0 0 1 2.5 15.623V8.377a2.5 2.5 0 0 1 1.164-2.113Z\\\"\\n stroke-width=\\\"1\\\"\\n ></path>\\n </svg>\\n </div>\\n <div class=\\\"hds-stepper-indicator-step__status\\\">\\n {{#if (eq @status \\\"processing\\\")}}\\n <FlightIcon class=\\\"hds-stepper-indicator-step__icon\\\" @name=\\\"loading\\\" @size=\\\"16\\\" />\\n {{else if (eq @status \\\"complete\\\")}}\\n <FlightIcon class=\\\"hds-stepper-indicator-step__icon\\\" @name=\\\"check\\\" @size=\\\"16\\\" />\\n {{else}}\\n <Hds::Text::Body\\n class=\\\"hds-stepper-indicator-step__text\\\"\\n @tag=\\\"span\\\"\\n @size=\\\"100\\\"\\n @weight=\\\"medium\\\"\\n >{{@text}}</Hds::Text::Body>\\n {{/if}}\\n </div>\\n</div>\")","/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { assert } from '@ember/debug';\n\nimport { HdsStepperStatusesValues } from '../types.ts';\nimport type { HdsStepperStatuses } from '../types.ts';\n\nexport const DEFAULT_STATUS = HdsStepperStatusesValues.Incomplete;\nexport const STATUSES: string[] = Object.values(HdsStepperStatusesValues);\n\ninterface HdsStepperStepIndicatorSignature {\n Args: {\n status: HdsStepperStatuses;\n isInteractive?: boolean;\n text: string;\n };\n Element: HTMLDivElement;\n}\n\nexport default class HdsStepperStepIndicatorComponent extends Component<HdsStepperStepIndicatorSignature> {\n /**\n * @param status\n * @type {string}\n * @default \"incomplete\"\n */\n\n get status(): HdsStepperStatuses {\n const { status = DEFAULT_STATUS } = this.args;\n\n assert(\n `@status for \"Hds::Stepper::Step::Indicator\" must be one of the following: ${STATUSES.join(\n ', '\n )}; received: ${status}`,\n STATUSES.includes(status)\n );\n\n return status;\n }\n\n /**\n * @param isInteractive\n * @type {boolean}\n * @default false\n */\n\n get isInteractive(): boolean {\n return this.args.isInteractive || false;\n }\n\n /**\n * Get the class names to apply to the component.\n * @method IndicatorStep#classNames\n * @return {string} The \"class\" attribute to apply to the component.\n */\n get classNames(): string {\n const classes = ['hds-stepper-indicator-step'];\n\n // Based on the @status arg\n classes.push(`hds-stepper-indicator-step--status-${this.status}`);\n\n if (this.isInteractive) {\n classes.push(`hds-stepper-indicator-step--is-interactive`);\n }\n\n return classes.join(' ');\n }\n}\n"],"names":["DEFAULT_STATUS","HdsStepperStatusesValues","Incomplete","STATUSES","Object","values","HdsStepperStepIndicatorComponent","Component","status","args","assert","join","includes","isInteractive","classNames","classes","push","setComponentTemplate","TEMPLATE"],"mappings":";;;;;;AACA,eAAe,kBAAkB,CAAC,oqCAAoqC;;ACDtsC;AACA;AACA;AACA;;AAQaA,MAAAA,cAAc,GAAGC,wBAAwB,CAACC,WAAU;AAC1D,MAAMC,QAAkB,GAAGC,MAAM,CAACC,MAAM,CAACJ,wBAAwB,EAAC;AAW1D,MAAMK,gCAAgC,SAASC,SAAS,CAAmC;AACxG;AACF;AACA;AACA;AACA;;EAEE,IAAIC,MAAMA,GAAuB;IAC/B,MAAM;AAAEA,MAAAA,MAAM,GAAGR,cAAAA;KAAgB,GAAG,IAAI,CAACS,IAAI,CAAA;AAE7CC,IAAAA,MAAM,CACJ,CAA6EP,0EAAAA,EAAAA,QAAQ,CAACQ,IAAI,CACxF,IACF,CAAC,CAAA,YAAA,EAAeH,MAAM,CAAA,CAAE,EACxBL,QAAQ,CAACS,QAAQ,CAACJ,MAAM,CAC1B,CAAC,CAAA;AAED,IAAA,OAAOA,MAAM,CAAA;AACf,GAAA;;AAEA;AACF;AACA;AACA;AACA;;EAEE,IAAIK,aAAaA,GAAY;AAC3B,IAAA,OAAO,IAAI,CAACJ,IAAI,CAACI,aAAa,IAAI,KAAK,CAAA;AACzC,GAAA;;AAEA;AACF;AACA;AACA;AACA;EACE,IAAIC,UAAUA,GAAW;AACvB,IAAA,MAAMC,OAAO,GAAG,CAAC,4BAA4B,CAAC,CAAA;;AAE9C;IACAA,OAAO,CAACC,IAAI,CAAC,CAAA,mCAAA,EAAsC,IAAI,CAACR,MAAM,EAAE,CAAC,CAAA;IAEjE,IAAI,IAAI,CAACK,aAAa,EAAE;AACtBE,MAAAA,OAAO,CAACC,IAAI,CAAC,CAAA,0CAAA,CAA4C,CAAC,CAAA;AAC5D,KAAA;AAEA,IAAA,OAAOD,OAAO,CAACJ,IAAI,CAAC,GAAG,CAAC,CAAA;AAC1B,GAAA;AACF,CAAA;AAACM,oBAAA,CAAAC,QAAA,EA/CoBZ,gCAAgC,CAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"indicator.js","sources":["../../../../../src/components/hds/stepper/task/indicator.hbs","../../../../../src/components/hds/stepper/task/indicator.ts"],"sourcesContent":["import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"{{!\\n Copyright (c) HashiCorp, Inc.\\n SPDX-License-Identifier: MPL-2.0\\n}}\\n<div class={{this.classNames}} ...attributes>\\n <FlightIcon class=\\\"hds-stepper-indicator-task__icon\\\" @name={{this.iconName}} @size=\\\"16\\\" />\\n</div>\")","/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { assert } from '@ember/debug';\n\nimport {\n HdsStepperStatusesValues,\n HdsStepperStatusToIconsValues,\n} from '../types.ts';\nimport type { HdsStepperStatuses } from '../types.ts';\n\nexport const DEFAULT_STATUS = HdsStepperStatusesValues.Incomplete;\nexport const STATUSES: string[] = Object.values(HdsStepperStatusesValues);\n\nexport const MAPPING_STATUS_TO_ICONS = HdsStepperStatusToIconsValues;\n\ninterface HdsStepperTaskIndicatorSignature {\n Args: {\n status: HdsStepperStatuses;\n isInteractive?: boolean;\n };\n Element: HTMLDivElement;\n}\n\nexport default class HdsStepperTaskIndicatorComponent extends Component<HdsStepperTaskIndicatorSignature> {\n /**\n * @param status\n * @type {string}\n * @default \"incomplete\"\n */\n\n get status() {\n const { status = DEFAULT_STATUS } = this.args;\n\n assert(\n `@status for \"Hds::Stepper::Task::Indicator\" must be one of the following: ${STATUSES.join(\n ', '\n )}; received: ${status}`,\n STATUSES.includes(status)\n );\n\n return status;\n }\n\n /**\n * @param isInteractive\n * @type {boolean}\n * @default false\n */\n\n get isInteractive() {\n return this.args.isInteractive || false;\n }\n\n /**\n * @param iconName\n * @type {string}\n */\n\n get iconName() {\n return MAPPING_STATUS_TO_ICONS[this.status];\n }\n\n /**\n * Get the class names to apply to the component.\n * @method IndicatorTask#classNames\n * @return {string} The \"class\" attribute to apply to the component.\n */\n get classNames() {\n const classes = ['hds-stepper-indicator-task'];\n\n // Based on the @status arg\n classes.push(`hds-stepper-indicator-task--status-${this.status}`);\n\n if (this.isInteractive) {\n classes.push(`hds-stepper-indicator-task--is-interactive`);\n }\n\n return classes.join(' ');\n }\n}\n"],"names":["DEFAULT_STATUS","HdsStepperStatusesValues","Incomplete","STATUSES","Object","values","MAPPING_STATUS_TO_ICONS","HdsStepperStatusToIconsValues","HdsStepperTaskIndicatorComponent","Component","status","args","assert","join","includes","isInteractive","iconName","classNames","classes","push","setComponentTemplate","TEMPLATE"],"mappings":";;;;;;AACA,eAAe,kBAAkB,CAAC,uOAAuO;;ACDzQ;AACA;AACA;AACA;;AAWaA,MAAAA,cAAc,GAAGC,wBAAwB,CAACC,WAAU;AAC1D,MAAMC,QAAkB,GAAGC,MAAM,CAACC,MAAM,CAACJ,wBAAwB,EAAC;AAElE,MAAMK,uBAAuB,GAAGC,8BAA6B;AAUrD,MAAMC,gCAAgC,SAASC,SAAS,CAAmC;AACxG;AACF;AACA;AACA;AACA;;EAEE,IAAIC,MAAMA,GAAG;IACX,MAAM;AAAEA,MAAAA,MAAM,GAAGV,cAAAA;KAAgB,GAAG,IAAI,CAACW,IAAI,CAAA;AAE7CC,IAAAA,MAAM,CACJ,CAA6ET,0EAAAA,EAAAA,QAAQ,CAACU,IAAI,CACxF,IACF,CAAC,CAAA,YAAA,EAAeH,MAAM,CAAA,CAAE,EACxBP,QAAQ,CAACW,QAAQ,CAACJ,MAAM,CAC1B,CAAC,CAAA;AAED,IAAA,OAAOA,MAAM,CAAA;AACf,GAAA;;AAEA;AACF;AACA;AACA;AACA;;EAEE,IAAIK,aAAaA,GAAG;AAClB,IAAA,OAAO,IAAI,CAACJ,IAAI,CAACI,aAAa,IAAI,KAAK,CAAA;AACzC,GAAA;;AAEA;AACF;AACA;AACA;;EAEE,IAAIC,QAAQA,GAAG;AACb,IAAA,OAAOV,uBAAuB,CAAC,IAAI,CAACI,MAAM,CAAC,CAAA;AAC7C,GAAA;;AAEA;AACF;AACA;AACA;AACA;EACE,IAAIO,UAAUA,GAAG;AACf,IAAA,MAAMC,OAAO,GAAG,CAAC,4BAA4B,CAAC,CAAA;;AAE9C;IACAA,OAAO,CAACC,IAAI,CAAC,CAAA,mCAAA,EAAsC,IAAI,CAACT,MAAM,EAAE,CAAC,CAAA;IAEjE,IAAI,IAAI,CAACK,aAAa,EAAE;AACtBG,MAAAA,OAAO,CAACC,IAAI,CAAC,CAAA,0CAAA,CAA4C,CAAC,CAAA;AAC5D,KAAA;AAEA,IAAA,OAAOD,OAAO,CAACL,IAAI,CAAC,GAAG,CAAC,CAAA;AAC1B,GAAA;AACF,CAAA;AAACO,oBAAA,CAAAC,QAAA,EAxDoBb,gCAAgC,CAAA;;;;"}
1
+ {"version":3,"file":"indicator.js","sources":["../../../../../src/components/hds/stepper/task/indicator.hbs","../../../../../src/components/hds/stepper/task/indicator.ts"],"sourcesContent":["import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"{{!\\n Copyright (c) HashiCorp, Inc.\\n SPDX-License-Identifier: MPL-2.0\\n}}\\n<div class={{this.classNames}} ...attributes>\\n <FlightIcon class=\\\"hds-stepper-indicator-task__icon\\\" @name={{this.iconName}} @size=\\\"16\\\" />\\n</div>\")","/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { assert } from '@ember/debug';\n\nimport {\n HdsStepperStatusesValues,\n HdsStepperStatusToIconsValues,\n} from '../types.ts';\nimport type { FlightIconSignature } from '@hashicorp/ember-flight-icons/components/flight-icon';\nimport type { HdsStepperStatuses } from '../types.ts';\n\nexport const DEFAULT_STATUS = HdsStepperStatusesValues.Incomplete;\nexport const STATUSES: string[] = Object.values(HdsStepperStatusesValues);\n\nexport const MAPPING_STATUS_TO_ICONS = HdsStepperStatusToIconsValues;\n\ninterface HdsStepperTaskIndicatorSignature {\n Args: {\n status: HdsStepperStatuses;\n isInteractive?: boolean;\n };\n Element: HTMLDivElement;\n}\n\nexport default class HdsStepperTaskIndicatorComponent extends Component<HdsStepperTaskIndicatorSignature> {\n /**\n * @param status\n * @type {string}\n * @default \"incomplete\"\n */\n\n get status(): HdsStepperStatuses {\n const { status = DEFAULT_STATUS } = this.args;\n\n assert(\n `@status for \"Hds::Stepper::Task::Indicator\" must be one of the following: ${STATUSES.join(\n ', '\n )}; received: ${status}`,\n STATUSES.includes(status)\n );\n\n return status;\n }\n\n /**\n * @param isInteractive\n * @type {boolean}\n * @default false\n */\n\n get isInteractive(): boolean {\n return this.args.isInteractive || false;\n }\n\n /**\n * @param iconName\n * @type {string}\n */\n\n get iconName(): FlightIconSignature['Args']['name'] {\n return MAPPING_STATUS_TO_ICONS[this.status];\n }\n\n /**\n * Get the class names to apply to the component.\n * @method IndicatorTask#classNames\n * @return {string} The \"class\" attribute to apply to the component.\n */\n get classNames(): string {\n const classes = ['hds-stepper-indicator-task'];\n\n // Based on the @status arg\n classes.push(`hds-stepper-indicator-task--status-${this.status}`);\n\n if (this.isInteractive) {\n classes.push(`hds-stepper-indicator-task--is-interactive`);\n }\n\n return classes.join(' ');\n }\n}\n"],"names":["DEFAULT_STATUS","HdsStepperStatusesValues","Incomplete","STATUSES","Object","values","MAPPING_STATUS_TO_ICONS","HdsStepperStatusToIconsValues","HdsStepperTaskIndicatorComponent","Component","status","args","assert","join","includes","isInteractive","iconName","classNames","classes","push","setComponentTemplate","TEMPLATE"],"mappings":";;;;;;AACA,eAAe,kBAAkB,CAAC,uOAAuO;;ACDzQ;AACA;AACA;AACA;;AAYaA,MAAAA,cAAc,GAAGC,wBAAwB,CAACC,WAAU;AAC1D,MAAMC,QAAkB,GAAGC,MAAM,CAACC,MAAM,CAACJ,wBAAwB,EAAC;AAElE,MAAMK,uBAAuB,GAAGC,8BAA6B;AAUrD,MAAMC,gCAAgC,SAASC,SAAS,CAAmC;AACxG;AACF;AACA;AACA;AACA;;EAEE,IAAIC,MAAMA,GAAuB;IAC/B,MAAM;AAAEA,MAAAA,MAAM,GAAGV,cAAAA;KAAgB,GAAG,IAAI,CAACW,IAAI,CAAA;AAE7CC,IAAAA,MAAM,CACJ,CAA6ET,0EAAAA,EAAAA,QAAQ,CAACU,IAAI,CACxF,IACF,CAAC,CAAA,YAAA,EAAeH,MAAM,CAAA,CAAE,EACxBP,QAAQ,CAACW,QAAQ,CAACJ,MAAM,CAC1B,CAAC,CAAA;AAED,IAAA,OAAOA,MAAM,CAAA;AACf,GAAA;;AAEA;AACF;AACA;AACA;AACA;;EAEE,IAAIK,aAAaA,GAAY;AAC3B,IAAA,OAAO,IAAI,CAACJ,IAAI,CAACI,aAAa,IAAI,KAAK,CAAA;AACzC,GAAA;;AAEA;AACF;AACA;AACA;;EAEE,IAAIC,QAAQA,GAAwC;AAClD,IAAA,OAAOV,uBAAuB,CAAC,IAAI,CAACI,MAAM,CAAC,CAAA;AAC7C,GAAA;;AAEA;AACF;AACA;AACA;AACA;EACE,IAAIO,UAAUA,GAAW;AACvB,IAAA,MAAMC,OAAO,GAAG,CAAC,4BAA4B,CAAC,CAAA;;AAE9C;IACAA,OAAO,CAACC,IAAI,CAAC,CAAA,mCAAA,EAAsC,IAAI,CAACT,MAAM,EAAE,CAAC,CAAA;IAEjE,IAAI,IAAI,CAACK,aAAa,EAAE;AACtBG,MAAAA,OAAO,CAACC,IAAI,CAAC,CAAA,0CAAA,CAA4C,CAAC,CAAA;AAC5D,KAAA;AAEA,IAAA,OAAOD,OAAO,CAACL,IAAI,CAAC,GAAG,CAAC,CAAA;AAC1B,GAAA;AACF,CAAA;AAACO,oBAAA,CAAAC,QAAA,EAxDoBb,gCAAgC,CAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/hds/tabs/index.hbs","../../../../src/components/hds/tabs/index.ts"],"sourcesContent":["import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"{{!\\n Copyright (c) HashiCorp, Inc.\\n SPDX-License-Identifier: MPL-2.0\\n}}\\n{{! template-lint-disable no-invalid-role }}\\n<div\\n class={{this.classNames}}\\n {{did-insert this.didInsert}}\\n {{did-update this.didUpdateSelectedTabIndex this.selectedTabIndex}}\\n {{did-update this.didUpdateSelectedTabId this.selectedTabId}}\\n {{did-update this.didUpdateParentVisibility @isParentVisible}}\\n ...attributes\\n>\\n <div class=\\\"hds-tabs__tablist-wrapper\\\">\\n <ul class=\\\"hds-tabs__tablist\\\" role=\\\"tablist\\\">\\n {{yield\\n (hash\\n Tab=(component\\n \\\"hds/tabs/tab\\\"\\n didInsertNode=this.didInsertTab\\n didUpdateNode=this.didUpdateTab\\n willDestroyNode=this.willDestroyTab\\n tabIds=this.tabIds\\n selectedTabIndex=this.selectedTabIndex\\n onClick=this.onClick\\n onKeyUp=this.onKeyUp\\n )\\n )\\n }}\\n <li class=\\\"hds-tabs__tab-indicator\\\" role=\\\"presentation\\\"></li>\\n </ul>\\n </div>\\n\\n {{yield\\n (hash\\n Panel=(component\\n \\\"hds/tabs/panel\\\"\\n didInsertNode=this.didInsertPanel\\n willDestroyNode=this.willDestroyPanel\\n tabIds=this.tabIds\\n panelIds=this.panelIds\\n selectedTabIndex=this.selectedTabIndex\\n )\\n )\\n }}\\n</div>\\n{{! template-lint-enable no-invalid-role }}\")","/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { assert, warn } from '@ember/debug';\nimport { next, schedule } from '@ember/runloop';\nimport { HdsTabsSizeValues } from './types.ts';\nimport type { ComponentLike } from '@glint/template';\nimport type { HdsTabsTabSignature } from './tab';\nimport type { HdsTabsPanelSignature } from './panel';\nimport type { HdsTabsTabIds, HdsTabsPanelIds, HdsTabsSizes } from './types.ts';\n\nexport const DEFAULT_SIZE: HdsTabsSizes = 'medium' as const;\nexport const SIZES: HdsTabsSizes[] = Object.values(HdsTabsSizeValues);\ninterface HdsTabsSignature {\n Args: {\n size?: HdsTabsSizes;\n onClickTab?: (event: MouseEvent, tabIndex: number) => void;\n selectedTabIndex?: HdsTabsTabSignature['Args']['selectedTabIndex'];\n isParentVisible?: boolean;\n };\n Blocks: {\n default: [\n {\n Tab?: ComponentLike<HdsTabsTabSignature>;\n Panel?: ComponentLike<HdsTabsPanelSignature>;\n }\n ];\n };\n Element: HTMLDivElement;\n}\n\nexport default class HdsTabsComponent extends Component<HdsTabsSignature> {\n @tracked tabNodes: HTMLButtonElement[] = [];\n @tracked tabIds: HdsTabsTabIds = [];\n @tracked panelNodes: HTMLElement[] = [];\n @tracked panelIds: HdsTabsPanelIds = [];\n @tracked _selectedTabIndex = this.args.selectedTabIndex ?? 0;\n @tracked selectedTabId?: string;\n @tracked isControlled: boolean;\n\n /**\n * Sets the size of Tabs\n * Accepted values: medium, large\n *\n * @param size\n * @type {string}\n * @default 'medium'\n */\n get size(): HdsTabsSizes {\n const { size = DEFAULT_SIZE } = this.args;\n\n assert(\n `@size for \"Hds::Tabs\" must be one of the following: ${SIZES.join(\n ', '\n )}; received: ${size}`,\n SIZES.includes(size)\n );\n\n return size;\n }\n\n constructor(owner: unknown, args: HdsTabsSignature['Args']) {\n super(owner, args);\n\n // this is to determine if the \"selected\" tab logic is controlled in the consumers' code or is maintained as an internal state\n this.isControlled = this.args.selectedTabIndex !== undefined;\n }\n\n get selectedTabIndex(): number {\n if (this.isControlled) {\n return this.args.selectedTabIndex!;\n } else {\n return this._selectedTabIndex;\n }\n }\n\n set selectedTabIndex(value) {\n if (this.isControlled) {\n // noop\n } else {\n this._selectedTabIndex = value;\n }\n }\n\n /**\n * Get the class names to apply to the component.\n * @method classNames\n * @return {string} The \"class\" attribute to apply to the component.\n */\n get classNames(): string {\n const classes = ['hds-tabs'];\n\n // add a class based on the @size argument\n classes.push(`hds-tabs--size-${this.size}`);\n\n return classes.join(' ');\n }\n\n @action\n didInsert() {\n assert(\n 'The number of Tabs must be equal to the number of Panels',\n this.tabNodes.length === this.panelNodes.length\n );\n\n if (this.selectedTabId) {\n this.selectedTabIndex = this.tabIds.indexOf(this.selectedTabId);\n }\n\n schedule('afterRender', () => {\n this.setTabIndicator();\n });\n }\n\n @action\n didUpdateSelectedTabIndex() {\n schedule('afterRender', () => {\n this.setTabIndicator();\n });\n }\n\n @action\n didUpdateSelectedTabId() {\n // if the selected tab is set dynamically (eg. in a `each` loop)\n // the `Tab` nodes will be re-inserted/rendered, which means the `this.selectedTabId` variable changes\n // but the parent `Tabs` component has already been rendered/inserted but doesn't re-render\n // so the value of the `selectedTabIndex` is not updated, unless we trigger a recalculation\n // using the `did-update` modifier that checks for changes in the `this.selectedTabId` variable\n if (this.selectedTabId) {\n this.selectedTabIndex = this.tabIds.indexOf(this.selectedTabId);\n }\n }\n\n @action\n didUpdateParentVisibility() {\n schedule('afterRender', () => {\n this.setTabIndicator();\n });\n }\n\n @action\n didInsertTab(element: HTMLButtonElement, isSelected?: boolean) {\n this.tabNodes = [...this.tabNodes, element];\n this.tabIds = [...this.tabIds, element.id];\n if (isSelected) {\n this.selectedTabId = element.id;\n }\n }\n\n @action\n didUpdateTab(tabIndex: number, isSelected?: boolean) {\n if (isSelected) {\n this.selectedTabIndex = tabIndex;\n }\n this.setTabIndicator();\n }\n\n @action\n willDestroyTab(element: HTMLButtonElement) {\n this.tabNodes = this.tabNodes.filter((node) => node.id !== element.id);\n this.tabIds = this.tabIds.filter((tabId) => tabId !== element.id);\n }\n\n @action\n didInsertPanel(element: HTMLElement, panelId: string) {\n this.panelNodes = [...this.panelNodes, element];\n this.panelIds = [...this.panelIds, panelId];\n }\n\n @action\n willDestroyPanel(element: HTMLElement) {\n this.panelNodes = this.panelNodes.filter((node) => node.id !== element.id);\n this.panelIds = this.panelIds.filter((panelId) => panelId !== element.id);\n }\n\n @action\n onClick(event: MouseEvent, tabIndex: number) {\n this.selectedTabIndex = tabIndex;\n this.setTabIndicator();\n\n // invoke the callback function if it's provided as argument\n if (typeof this.args.onClickTab === 'function') {\n this.args.onClickTab(event, tabIndex);\n }\n }\n\n @action\n onKeyUp(tabIndex: number, event: KeyboardEvent) {\n const leftArrow = 'ArrowLeft';\n const rightArrow = 'ArrowRight';\n const enterKey = 'Enter';\n const spaceKey = ' ';\n\n if (event.key === rightArrow) {\n const nextTabIndex = (tabIndex + 1) % this.tabIds.length;\n this.focusTab(nextTabIndex, event);\n } else if (event.key === leftArrow) {\n const prevTabIndex =\n (tabIndex + this.tabIds.length - 1) % this.tabIds.length;\n this.focusTab(prevTabIndex, event);\n } else if (event.key === enterKey || event.key === spaceKey) {\n this.selectedTabIndex = tabIndex;\n }\n // scroll selected tab into view (it may be out of view when activated using a keyboard with `prev/next`)\n const parentNode = this.tabNodes[this.selectedTabIndex]?.parentNode;\n if (parentNode instanceof HTMLElement) {\n parentNode.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'nearest',\n });\n }\n }\n\n // Focus tab for keyboard & mouse navigation:\n focusTab(tabIndex: number, event: KeyboardEvent) {\n event.preventDefault();\n this.tabNodes[tabIndex]?.focus();\n }\n\n setTabIndicator() {\n next(() => {\n const tabElem = this.tabNodes[this.selectedTabIndex];\n\n if (tabElem != null) {\n const tabElemParentNode = tabElem.parentNode as HTMLElement;\n const tabsElemClosestList = tabElem.closest(\n '.hds-tabs__tablist'\n ) as HTMLElement;\n\n // this condition is `null` if any of the parents has `display: none`\n if (tabElemParentNode.offsetParent) {\n const tabLeftPos = tabElemParentNode.offsetLeft;\n const tabWidth = tabElemParentNode.offsetWidth;\n\n // Set CSS custom properties for indicator\n tabsElemClosestList.style.setProperty(\n '--indicator-left-pos',\n tabLeftPos + 'px'\n );\n tabsElemClosestList.style.setProperty(\n '--indicator-width',\n tabWidth + 'px'\n );\n }\n } else {\n let message = '';\n message +=\n '\"Hds::Tabs\" has tried to set the indicator for an element that doesn\\'t exist';\n if (this.tabNodes.length === 0) {\n message +=\n ' (the array `this.tabNodes` is empty, there are no tabs, probably already destroyed)';\n } else {\n message += ` (the value ${\n this.selectedTabIndex\n } of \\`this.selectedTabIndex\\` is out of bound for the array \\`this.tabNodes\\`, whose index range is [0 - ${\n this.tabNodes.length - 1\n }])`;\n }\n // https://api.emberjs.com/ember/5.3/classes/@ember%2Fdebug/methods/warn?anchor=warn\n warn(message, true, {\n id: 'hds-debug.tabs.setTabIndicator-tabElem-not-available',\n });\n }\n });\n }\n}\n"],"names":["DEFAULT_SIZE","SIZES","Object","values","HdsTabsSizeValues","HdsTabsComponent","_class","Component","size","args","assert","join","includes","constructor","owner","_initializerDefineProperty","_descriptor","_descriptor2","_descriptor3","_descriptor4","_descriptor5","_descriptor6","_descriptor7","isControlled","selectedTabIndex","undefined","_selectedTabIndex","value","classNames","classes","push","didInsert","tabNodes","length","panelNodes","selectedTabId","tabIds","indexOf","schedule","setTabIndicator","didUpdateSelectedTabIndex","didUpdateSelectedTabId","didUpdateParentVisibility","didInsertTab","element","isSelected","id","didUpdateTab","tabIndex","willDestroyTab","filter","node","tabId","didInsertPanel","panelId","panelIds","willDestroyPanel","onClick","event","onClickTab","onKeyUp","leftArrow","rightArrow","enterKey","spaceKey","key","nextTabIndex","focusTab","prevTabIndex","parentNode","HTMLElement","scrollIntoView","behavior","block","inline","preventDefault","focus","next","tabElem","tabElemParentNode","tabsElemClosestList","closest","offsetParent","tabLeftPos","offsetLeft","tabWidth","offsetWidth","style","setProperty","message","warn","_applyDecoratedDescriptor","prototype","tracked","configurable","enumerable","writable","initializer","action","getOwnPropertyDescriptor","setComponentTemplate","TEMPLATE"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/hds/tabs/index.hbs","../../../../src/components/hds/tabs/index.ts"],"sourcesContent":["import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"{{!\\n Copyright (c) HashiCorp, Inc.\\n SPDX-License-Identifier: MPL-2.0\\n}}\\n{{! template-lint-disable no-invalid-role }}\\n<div\\n class={{this.classNames}}\\n {{did-insert this.didInsert}}\\n {{did-update this.didUpdateSelectedTabIndex this.selectedTabIndex}}\\n {{did-update this.didUpdateSelectedTabId this.selectedTabId}}\\n {{did-update this.didUpdateParentVisibility @isParentVisible}}\\n ...attributes\\n>\\n <div class=\\\"hds-tabs__tablist-wrapper\\\">\\n <ul class=\\\"hds-tabs__tablist\\\" role=\\\"tablist\\\">\\n {{yield\\n (hash\\n Tab=(component\\n \\\"hds/tabs/tab\\\"\\n didInsertNode=this.didInsertTab\\n didUpdateNode=this.didUpdateTab\\n willDestroyNode=this.willDestroyTab\\n tabIds=this.tabIds\\n selectedTabIndex=this.selectedTabIndex\\n onClick=this.onClick\\n onKeyUp=this.onKeyUp\\n )\\n )\\n }}\\n <li class=\\\"hds-tabs__tab-indicator\\\" role=\\\"presentation\\\"></li>\\n </ul>\\n </div>\\n\\n {{yield\\n (hash\\n Panel=(component\\n \\\"hds/tabs/panel\\\"\\n didInsertNode=this.didInsertPanel\\n willDestroyNode=this.willDestroyPanel\\n tabIds=this.tabIds\\n panelIds=this.panelIds\\n selectedTabIndex=this.selectedTabIndex\\n )\\n )\\n }}\\n</div>\\n{{! template-lint-enable no-invalid-role }}\")","/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { assert, warn } from '@ember/debug';\nimport { next, schedule } from '@ember/runloop';\nimport { HdsTabsSizeValues } from './types.ts';\nimport type { ComponentLike } from '@glint/template';\nimport type { HdsTabsTabSignature } from './tab';\nimport type { HdsTabsPanelSignature } from './panel';\nimport type { HdsTabsTabIds, HdsTabsPanelIds, HdsTabsSizes } from './types.ts';\n\nexport const DEFAULT_SIZE: HdsTabsSizes = 'medium' as const;\nexport const SIZES: HdsTabsSizes[] = Object.values(HdsTabsSizeValues);\ninterface HdsTabsSignature {\n Args: {\n size?: HdsTabsSizes;\n onClickTab?: (event: MouseEvent, tabIndex: number) => void;\n selectedTabIndex?: HdsTabsTabSignature['Args']['selectedTabIndex'];\n isParentVisible?: boolean;\n };\n Blocks: {\n default: [\n {\n Tab?: ComponentLike<HdsTabsTabSignature>;\n Panel?: ComponentLike<HdsTabsPanelSignature>;\n },\n ];\n };\n Element: HTMLDivElement;\n}\n\nexport default class HdsTabsComponent extends Component<HdsTabsSignature> {\n @tracked tabNodes: HTMLButtonElement[] = [];\n @tracked tabIds: HdsTabsTabIds = [];\n @tracked panelNodes: HTMLElement[] = [];\n @tracked panelIds: HdsTabsPanelIds = [];\n @tracked _selectedTabIndex = this.args.selectedTabIndex ?? 0;\n @tracked selectedTabId?: string;\n @tracked isControlled: boolean;\n\n /**\n * Sets the size of Tabs\n * Accepted values: medium, large\n *\n * @param size\n * @type {string}\n * @default 'medium'\n */\n get size(): HdsTabsSizes {\n const { size = DEFAULT_SIZE } = this.args;\n\n assert(\n `@size for \"Hds::Tabs\" must be one of the following: ${SIZES.join(\n ', '\n )}; received: ${size}`,\n SIZES.includes(size)\n );\n\n return size;\n }\n\n constructor(owner: unknown, args: HdsTabsSignature['Args']) {\n super(owner, args);\n\n // this is to determine if the \"selected\" tab logic is controlled in the consumers' code or is maintained as an internal state\n this.isControlled = this.args.selectedTabIndex !== undefined;\n }\n\n get selectedTabIndex(): number {\n if (this.isControlled) {\n return this.args.selectedTabIndex!;\n } else {\n return this._selectedTabIndex;\n }\n }\n\n set selectedTabIndex(value) {\n if (this.isControlled) {\n // noop\n } else {\n this._selectedTabIndex = value;\n }\n }\n\n /**\n * Get the class names to apply to the component.\n * @method classNames\n * @return {string} The \"class\" attribute to apply to the component.\n */\n get classNames(): string {\n const classes = ['hds-tabs'];\n\n // add a class based on the @size argument\n classes.push(`hds-tabs--size-${this.size}`);\n\n return classes.join(' ');\n }\n\n @action\n didInsert(): void {\n assert(\n 'The number of Tabs must be equal to the number of Panels',\n this.tabNodes.length === this.panelNodes.length\n );\n\n if (this.selectedTabId) {\n this.selectedTabIndex = this.tabIds.indexOf(this.selectedTabId);\n }\n\n schedule('afterRender', (): void => {\n this.setTabIndicator();\n });\n }\n\n @action\n didUpdateSelectedTabIndex(): void {\n schedule('afterRender', (): void => {\n this.setTabIndicator();\n });\n }\n\n @action\n didUpdateSelectedTabId(): void {\n // if the selected tab is set dynamically (eg. in a `each` loop)\n // the `Tab` nodes will be re-inserted/rendered, which means the `this.selectedTabId` variable changes\n // but the parent `Tabs` component has already been rendered/inserted but doesn't re-render\n // so the value of the `selectedTabIndex` is not updated, unless we trigger a recalculation\n // using the `did-update` modifier that checks for changes in the `this.selectedTabId` variable\n if (this.selectedTabId) {\n this.selectedTabIndex = this.tabIds.indexOf(this.selectedTabId);\n }\n }\n\n @action\n didUpdateParentVisibility(): void {\n schedule('afterRender', (): void => {\n this.setTabIndicator();\n });\n }\n\n @action\n didInsertTab(element: HTMLButtonElement, isSelected?: boolean): void {\n this.tabNodes = [...this.tabNodes, element];\n this.tabIds = [...this.tabIds, element.id];\n if (isSelected) {\n this.selectedTabId = element.id;\n }\n }\n\n @action\n didUpdateTab(tabIndex: number, isSelected?: boolean): void {\n if (isSelected) {\n this.selectedTabIndex = tabIndex;\n }\n this.setTabIndicator();\n }\n\n @action\n willDestroyTab(element: HTMLButtonElement): void {\n this.tabNodes = this.tabNodes.filter(\n (node): boolean => node.id !== element.id\n );\n this.tabIds = this.tabIds.filter((tabId): boolean => tabId !== element.id);\n }\n\n @action\n didInsertPanel(element: HTMLElement, panelId: string): void {\n this.panelNodes = [...this.panelNodes, element];\n this.panelIds = [...this.panelIds, panelId];\n }\n\n @action\n willDestroyPanel(element: HTMLElement): void {\n this.panelNodes = this.panelNodes.filter(\n (node): boolean => node.id !== element.id\n );\n this.panelIds = this.panelIds.filter(\n (panelId): boolean => panelId !== element.id\n );\n }\n\n @action\n onClick(event: MouseEvent, tabIndex: number): void {\n this.selectedTabIndex = tabIndex;\n this.setTabIndicator();\n\n // invoke the callback function if it's provided as argument\n if (typeof this.args.onClickTab === 'function') {\n this.args.onClickTab(event, tabIndex);\n }\n }\n\n @action\n onKeyUp(tabIndex: number, event: KeyboardEvent): void {\n const leftArrow = 'ArrowLeft';\n const rightArrow = 'ArrowRight';\n const enterKey = 'Enter';\n const spaceKey = ' ';\n\n if (event.key === rightArrow) {\n const nextTabIndex = (tabIndex + 1) % this.tabIds.length;\n this.focusTab(nextTabIndex, event);\n } else if (event.key === leftArrow) {\n const prevTabIndex =\n (tabIndex + this.tabIds.length - 1) % this.tabIds.length;\n this.focusTab(prevTabIndex, event);\n } else if (event.key === enterKey || event.key === spaceKey) {\n this.selectedTabIndex = tabIndex;\n }\n // scroll selected tab into view (it may be out of view when activated using a keyboard with `prev/next`)\n const parentNode = this.tabNodes[this.selectedTabIndex]?.parentNode;\n if (parentNode instanceof HTMLElement) {\n parentNode.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'nearest',\n });\n }\n }\n\n // Focus tab for keyboard & mouse navigation:\n focusTab(tabIndex: number, event: KeyboardEvent): void {\n event.preventDefault();\n this.tabNodes[tabIndex]?.focus();\n }\n\n setTabIndicator(): void {\n next((): void => {\n const tabElem = this.tabNodes[this.selectedTabIndex];\n\n if (tabElem != null) {\n const tabElemParentNode = tabElem.parentNode as HTMLElement;\n const tabsElemClosestList = tabElem.closest(\n '.hds-tabs__tablist'\n ) as HTMLElement;\n\n // this condition is `null` if any of the parents has `display: none`\n if (tabElemParentNode.offsetParent) {\n const tabLeftPos = tabElemParentNode.offsetLeft;\n const tabWidth = tabElemParentNode.offsetWidth;\n\n // Set CSS custom properties for indicator\n tabsElemClosestList.style.setProperty(\n '--indicator-left-pos',\n tabLeftPos + 'px'\n );\n tabsElemClosestList.style.setProperty(\n '--indicator-width',\n tabWidth + 'px'\n );\n }\n } else {\n let message = '';\n message +=\n '\"Hds::Tabs\" has tried to set the indicator for an element that doesn\\'t exist';\n if (this.tabNodes.length === 0) {\n message +=\n ' (the array `this.tabNodes` is empty, there are no tabs, probably already destroyed)';\n } else {\n message += ` (the value ${\n this.selectedTabIndex\n } of \\`this.selectedTabIndex\\` is out of bound for the array \\`this.tabNodes\\`, whose index range is [0 - ${\n this.tabNodes.length - 1\n }])`;\n }\n // https://api.emberjs.com/ember/5.3/classes/@ember%2Fdebug/methods/warn?anchor=warn\n warn(message, true, {\n id: 'hds-debug.tabs.setTabIndicator-tabElem-not-available',\n });\n }\n });\n }\n}\n"],"names":["DEFAULT_SIZE","SIZES","Object","values","HdsTabsSizeValues","HdsTabsComponent","_class","Component","size","args","assert","join","includes","constructor","owner","_initializerDefineProperty","_descriptor","_descriptor2","_descriptor3","_descriptor4","_descriptor5","_descriptor6","_descriptor7","isControlled","selectedTabIndex","undefined","_selectedTabIndex","value","classNames","classes","push","didInsert","tabNodes","length","panelNodes","selectedTabId","tabIds","indexOf","schedule","setTabIndicator","didUpdateSelectedTabIndex","didUpdateSelectedTabId","didUpdateParentVisibility","didInsertTab","element","isSelected","id","didUpdateTab","tabIndex","willDestroyTab","filter","node","tabId","didInsertPanel","panelId","panelIds","willDestroyPanel","onClick","event","onClickTab","onKeyUp","leftArrow","rightArrow","enterKey","spaceKey","key","nextTabIndex","focusTab","prevTabIndex","parentNode","HTMLElement","scrollIntoView","behavior","block","inline","preventDefault","focus","next","tabElem","tabElemParentNode","tabsElemClosestList","closest","offsetParent","tabLeftPos","offsetLeft","tabWidth","offsetWidth","style","setProperty","message","warn","_applyDecoratedDescriptor","prototype","tracked","configurable","enumerable","writable","initializer","action","getOwnPropertyDescriptor","setComponentTemplate","TEMPLATE"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"panel.js","sources":["../../../../src/components/hds/tabs/panel.hbs","../../../../src/components/hds/tabs/panel.ts"],"sourcesContent":["import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"{{!\\n Copyright (c) HashiCorp, Inc.\\n SPDX-License-Identifier: MPL-2.0\\n}}\\n<section\\n class=\\\"hds-tabs__panel\\\"\\n ...attributes\\n role=\\\"tabpanel\\\"\\n id={{this.panelId}}\\n hidden={{not this.isVisible}}\\n aria-labelledby={{this.coupledTabId}}\\n {{did-insert this.didInsertNode}}\\n {{will-destroy this.willDestroyNode}}\\n>\\n {{yield (hash isVisible=this.isVisible)}}\\n</section>\")","/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { guidFor } from '@ember/object/internals';\nimport { action } from '@ember/object';\nimport type { HdsTabsTabSignature } from './tab';\nimport type { HdsTabsPanelIds, HdsTabsTabIds } from './types';\n\nexport interface HdsTabsPanelSignature {\n Args: {\n tabIds: HdsTabsTabIds;\n panelIds: HdsTabsPanelIds;\n selectedTabIndex: HdsTabsTabSignature['Args']['selectedTabIndex'];\n didInsertNode: (element: HTMLElement, elementId: string) => void;\n willDestroyNode: (element: HTMLElement) => void;\n };\n Blocks: {\n default: [\n {\n isVisible: boolean;\n }\n ];\n };\n Element: HTMLElement;\n}\n\nexport default class HdsTabsPanelComponent extends Component<HdsTabsPanelSignature> {\n /**\n * Generate a unique ID for the Panel\n * @return {string}\n */\n panelId = 'panel-' + guidFor(this);\n\n elementId?: string;\n\n get nodeIndex() {\n return this.args.panelIds\n ? this.args.panelIds.indexOf(this.panelId)\n : undefined;\n }\n\n /**\n * Check the condition if the panel is visible (because the coupled/associated tab is selected) or not\n * @returns {boolean}\n */\n get isVisible(): boolean {\n return this.nodeIndex === this.args.selectedTabIndex;\n }\n\n /**\n * Get the ID of the tab coupled/associated with the panel (it's used by the `aria-labelledby` attribute)\n * @returns string}\n */\n get coupledTabId(): string | undefined {\n return this.nodeIndex !== undefined\n ? this.args.tabIds[this.nodeIndex]\n : undefined;\n }\n\n @action\n didInsertNode(element: HTMLElement) {\n const { didInsertNode } = this.args;\n\n if (typeof didInsertNode === 'function') {\n this.elementId = element.id;\n didInsertNode(element, this.elementId);\n }\n }\n\n @action\n willDestroyNode(element: HTMLElement) {\n const { willDestroyNode } = this.args;\n\n if (typeof willDestroyNode === 'function') {\n willDestroyNode(element);\n }\n }\n}\n"],"names":["HdsTabsPanelComponent","_class","Component","constructor","args","_defineProperty","guidFor","nodeIndex","panelIds","indexOf","panelId","undefined","isVisible","selectedTabIndex","coupledTabId","tabIds","didInsertNode","element","elementId","id","willDestroyNode","_applyDecoratedDescriptor","prototype","action","Object","getOwnPropertyDescriptor","setComponentTemplate","TEMPLATE"],"mappings":";;;;;;;AACA,eAAe,kBAAkB,CAAC,sYAAsY;;;AC4BnZA,IAAAA,qBAAqB,IAAAC,MAAA,GAA3B,MAAMD,qBAAqB,SAASE,SAAS,CAAwB;AAAAC,EAAAA,WAAAA,CAAA,GAAAC,IAAA,EAAA;AAAA,IAAA,KAAA,CAAA,GAAAA,IAAA,CAAA,CAAA;AAClF;AACF;AACA;AACA;AAHEC,IAAAA,eAAA,kBAIU,QAAQ,GAAGC,OAAO,CAAC,IAAI,CAAC,CAAA,CAAA;IAAAD,eAAA,CAAA,IAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAAA,GAAA;EAIlC,IAAIE,SAASA,GAAG;AACd,IAAA,OAAO,IAAI,CAACH,IAAI,CAACI,QAAQ,GACrB,IAAI,CAACJ,IAAI,CAACI,QAAQ,CAACC,OAAO,CAAC,IAAI,CAACC,OAAO,CAAC,GACxCC,SAAS,CAAA;AACf,GAAA;;AAEA;AACF;AACA;AACA;EACE,IAAIC,SAASA,GAAY;IACvB,OAAO,IAAI,CAACL,SAAS,KAAK,IAAI,CAACH,IAAI,CAACS,gBAAgB,CAAA;AACtD,GAAA;;AAEA;AACF;AACA;AACA;EACE,IAAIC,YAAYA,GAAuB;AACrC,IAAA,OAAO,IAAI,CAACP,SAAS,KAAKI,SAAS,GAC/B,IAAI,CAACP,IAAI,CAACW,MAAM,CAAC,IAAI,CAACR,SAAS,CAAC,GAChCI,SAAS,CAAA;AACf,GAAA;EAGAK,aAAaA,CAACC,OAAoB,EAAE;IAClC,MAAM;AAAED,MAAAA,aAAAA;KAAe,GAAG,IAAI,CAACZ,IAAI,CAAA;AAEnC,IAAA,IAAI,OAAOY,aAAa,KAAK,UAAU,EAAE;AACvC,MAAA,IAAI,CAACE,SAAS,GAAGD,OAAO,CAACE,EAAE,CAAA;AAC3BH,MAAAA,aAAa,CAACC,OAAO,EAAE,IAAI,CAACC,SAAS,CAAC,CAAA;AACxC,KAAA;AACF,GAAA;EAGAE,eAAeA,CAACH,OAAoB,EAAE;IACpC,MAAM;AAAEG,MAAAA,eAAAA;KAAiB,GAAG,IAAI,CAAChB,IAAI,CAAA;AAErC,IAAA,IAAI,OAAOgB,eAAe,KAAK,UAAU,EAAE;MACzCA,eAAe,CAACH,OAAO,CAAC,CAAA;AAC1B,KAAA;AACF,GAAA;AACF,CAAC,GAAAI,yBAAA,CAAApB,MAAA,CAAAqB,SAAA,oBAlBEC,MAAM,CAAA,EAAAC,MAAA,CAAAC,wBAAA,CAAAxB,MAAA,CAAAqB,SAAA,EAAA,eAAA,CAAA,EAAArB,MAAA,CAAAqB,SAAA,CAAAD,EAAAA,yBAAA,CAAApB,MAAA,CAAAqB,SAAA,EAUNC,iBAAAA,EAAAA,CAAAA,MAAM,GAAAC,MAAA,CAAAC,wBAAA,CAAAxB,MAAA,CAAAqB,SAAA,EAAA,iBAAA,CAAA,EAAArB,MAAA,CAAAqB,SAAA,IAAArB,MAAA,EAAA;AA3CiCyB,oBAAA,CAAAC,QAAA,EAArB3B,qBAAqB,CAAA;;;;"}
1
+ {"version":3,"file":"panel.js","sources":["../../../../src/components/hds/tabs/panel.hbs","../../../../src/components/hds/tabs/panel.ts"],"sourcesContent":["import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"{{!\\n Copyright (c) HashiCorp, Inc.\\n SPDX-License-Identifier: MPL-2.0\\n}}\\n<section\\n class=\\\"hds-tabs__panel\\\"\\n ...attributes\\n role=\\\"tabpanel\\\"\\n id={{this.panelId}}\\n hidden={{not this.isVisible}}\\n aria-labelledby={{this.coupledTabId}}\\n {{did-insert this.didInsertNode}}\\n {{will-destroy this.willDestroyNode}}\\n>\\n {{yield (hash isVisible=this.isVisible)}}\\n</section>\")","/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { guidFor } from '@ember/object/internals';\nimport { action } from '@ember/object';\nimport type { HdsTabsTabSignature } from './tab';\nimport type { HdsTabsPanelIds, HdsTabsTabIds } from './types';\n\nexport interface HdsTabsPanelSignature {\n Args: {\n tabIds: HdsTabsTabIds;\n panelIds: HdsTabsPanelIds;\n selectedTabIndex: HdsTabsTabSignature['Args']['selectedTabIndex'];\n didInsertNode: (element: HTMLElement, elementId: string) => void;\n willDestroyNode: (element: HTMLElement) => void;\n };\n Blocks: {\n default: [\n {\n isVisible: boolean;\n },\n ];\n };\n Element: HTMLElement;\n}\n\nexport default class HdsTabsPanelComponent extends Component<HdsTabsPanelSignature> {\n /**\n * Generate a unique ID for the Panel\n * @return {string}\n */\n panelId = 'panel-' + guidFor(this);\n\n elementId?: string;\n\n get nodeIndex(): number | undefined {\n return this.args.panelIds\n ? this.args.panelIds.indexOf(this.panelId)\n : undefined;\n }\n\n /**\n * Check the condition if the panel is visible (because the coupled/associated tab is selected) or not\n * @returns {boolean}\n */\n get isVisible(): boolean {\n return this.nodeIndex === this.args.selectedTabIndex;\n }\n\n /**\n * Get the ID of the tab coupled/associated with the panel (it's used by the `aria-labelledby` attribute)\n * @returns string}\n */\n get coupledTabId(): string | undefined {\n return this.nodeIndex !== undefined\n ? this.args.tabIds[this.nodeIndex]\n : undefined;\n }\n\n @action\n didInsertNode(element: HTMLElement): void {\n const { didInsertNode } = this.args;\n\n if (typeof didInsertNode === 'function') {\n this.elementId = element.id;\n didInsertNode(element, this.elementId);\n }\n }\n\n @action\n willDestroyNode(element: HTMLElement): void {\n const { willDestroyNode } = this.args;\n\n if (typeof willDestroyNode === 'function') {\n willDestroyNode(element);\n }\n }\n}\n"],"names":["HdsTabsPanelComponent","_class","Component","constructor","args","_defineProperty","guidFor","nodeIndex","panelIds","indexOf","panelId","undefined","isVisible","selectedTabIndex","coupledTabId","tabIds","didInsertNode","element","elementId","id","willDestroyNode","_applyDecoratedDescriptor","prototype","action","Object","getOwnPropertyDescriptor","setComponentTemplate","TEMPLATE"],"mappings":";;;;;;;AACA,eAAe,kBAAkB,CAAC,sYAAsY;;;AC4BnZA,IAAAA,qBAAqB,IAAAC,MAAA,GAA3B,MAAMD,qBAAqB,SAASE,SAAS,CAAwB;AAAAC,EAAAA,WAAAA,CAAA,GAAAC,IAAA,EAAA;AAAA,IAAA,KAAA,CAAA,GAAAA,IAAA,CAAA,CAAA;AAClF;AACF;AACA;AACA;AAHEC,IAAAA,eAAA,kBAIU,QAAQ,GAAGC,OAAO,CAAC,IAAI,CAAC,CAAA,CAAA;IAAAD,eAAA,CAAA,IAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAAA,GAAA;EAIlC,IAAIE,SAASA,GAAuB;AAClC,IAAA,OAAO,IAAI,CAACH,IAAI,CAACI,QAAQ,GACrB,IAAI,CAACJ,IAAI,CAACI,QAAQ,CAACC,OAAO,CAAC,IAAI,CAACC,OAAO,CAAC,GACxCC,SAAS,CAAA;AACf,GAAA;;AAEA;AACF;AACA;AACA;EACE,IAAIC,SAASA,GAAY;IACvB,OAAO,IAAI,CAACL,SAAS,KAAK,IAAI,CAACH,IAAI,CAACS,gBAAgB,CAAA;AACtD,GAAA;;AAEA;AACF;AACA;AACA;EACE,IAAIC,YAAYA,GAAuB;AACrC,IAAA,OAAO,IAAI,CAACP,SAAS,KAAKI,SAAS,GAC/B,IAAI,CAACP,IAAI,CAACW,MAAM,CAAC,IAAI,CAACR,SAAS,CAAC,GAChCI,SAAS,CAAA;AACf,GAAA;EAGAK,aAAaA,CAACC,OAAoB,EAAQ;IACxC,MAAM;AAAED,MAAAA,aAAAA;KAAe,GAAG,IAAI,CAACZ,IAAI,CAAA;AAEnC,IAAA,IAAI,OAAOY,aAAa,KAAK,UAAU,EAAE;AACvC,MAAA,IAAI,CAACE,SAAS,GAAGD,OAAO,CAACE,EAAE,CAAA;AAC3BH,MAAAA,aAAa,CAACC,OAAO,EAAE,IAAI,CAACC,SAAS,CAAC,CAAA;AACxC,KAAA;AACF,GAAA;EAGAE,eAAeA,CAACH,OAAoB,EAAQ;IAC1C,MAAM;AAAEG,MAAAA,eAAAA;KAAiB,GAAG,IAAI,CAAChB,IAAI,CAAA;AAErC,IAAA,IAAI,OAAOgB,eAAe,KAAK,UAAU,EAAE;MACzCA,eAAe,CAACH,OAAO,CAAC,CAAA;AAC1B,KAAA;AACF,GAAA;AACF,CAAC,GAAAI,yBAAA,CAAApB,MAAA,CAAAqB,SAAA,oBAlBEC,MAAM,CAAA,EAAAC,MAAA,CAAAC,wBAAA,CAAAxB,MAAA,CAAAqB,SAAA,EAAA,eAAA,CAAA,EAAArB,MAAA,CAAAqB,SAAA,CAAAD,EAAAA,yBAAA,CAAApB,MAAA,CAAAqB,SAAA,EAUNC,iBAAAA,EAAAA,CAAAA,MAAM,GAAAC,MAAA,CAAAC,wBAAA,CAAAxB,MAAA,CAAAqB,SAAA,EAAA,iBAAA,CAAA,EAAArB,MAAA,CAAAqB,SAAA,IAAArB,MAAA,EAAA;AA3CiCyB,oBAAA,CAAAC,QAAA,EAArB3B,qBAAqB,CAAA;;;;"}
@@ -70,8 +70,6 @@ let HdsTabsTabComponent = (_class = class HdsTabsTabComponent extends Component
70
70
  } = this.args;
71
71
  if (typeof onKeyUp === 'function' && this.nodeIndex !== undefined) {
72
72
  onKeyUp(this.nodeIndex, event);
73
- } else {
74
- return false;
75
73
  }
76
74
  }
77
75
 
@@ -1 +1 @@
1
- {"version":3,"file":"tab.js","sources":["../../../../src/components/hds/tabs/tab.hbs","../../../../src/components/hds/tabs/tab.ts"],"sourcesContent":["import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"{{!\\n Copyright (c) HashiCorp, Inc.\\n SPDX-License-Identifier: MPL-2.0\\n}}\\n{{! template-lint-disable require-context-role no-invalid-role }}\\n<li class={{this.classNames}} ...attributes role=\\\"presentation\\\">\\n <button\\n class=\\\"hds-tabs__tab-button\\\"\\n role=\\\"tab\\\"\\n type=\\\"button\\\"\\n id={{this.tabId}}\\n aria-selected={{if this.isSelected \\\"true\\\" \\\"false\\\"}}\\n tabindex={{unless this.isSelected \\\"-1\\\"}}\\n {{did-insert this.didInsertNode @isSelected}}\\n {{did-update this.didUpdateNode @count @isSelected}}\\n {{will-destroy this.willDestroyNode}}\\n {{on \\\"click\\\" this.onClick}}\\n {{on \\\"keyup\\\" this.onKeyUp}}\\n >\\n {{#if @icon}}\\n <FlightIcon @name={{@icon}} class=\\\"hds-tabs__tab-icon\\\" role=\\\"presentation\\\" />\\n {{/if}}\\n\\n {{yield}}\\n\\n {{#if @count}}\\n <Hds::BadgeCount @text={{@count}} @size=\\\"small\\\" class=\\\"hds-tabs__tab-count\\\" role=\\\"presentation\\\" />\\n {{/if}}\\n </button>\\n</li>\\n{{! template-lint-enable require-context-role no-invalid-role }}\")","/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { guidFor } from '@ember/object/internals';\nimport { action } from '@ember/object';\nimport type { IconName } from '@hashicorp/flight-icons/svg';\nimport type { HdsTabsTabIds } from './types';\n\nexport interface HdsTabsTabSignature {\n Args: {\n tabIds: HdsTabsTabIds;\n selectedTabIndex: number;\n icon?: IconName;\n count?: string;\n isSelected?: boolean;\n didInsertNode: (element: HTMLButtonElement, isSelected?: boolean) => void;\n didUpdateNode: (nodeIndex: number, isSelected?: boolean) => void;\n willDestroyNode: (element: HTMLButtonElement) => void;\n onClick: (event: MouseEvent, tabIndex: number) => void;\n onKeyUp: (nodeIndex: number, event: KeyboardEvent) => void;\n };\n Blocks: {\n default: [];\n };\n Element: HTMLLIElement;\n}\n\nexport default class HdsTabsTabComponent extends Component<HdsTabsTabSignature> {\n /**\n * Generate a unique ID for the Tab\n * @return {string}\n */\n tabId = 'tab-' + guidFor(this);\n\n get nodeIndex(): number | undefined {\n return this.args.tabIds?.indexOf(this.tabId);\n }\n\n /**\n * Determine if the tab is the selected tab\n * @return {boolean}\n * @default false (1st tab is selected by default)\n */\n get isSelected(): boolean {\n return (\n this.nodeIndex !== undefined &&\n this.nodeIndex === this.args.selectedTabIndex\n );\n }\n\n @action\n didInsertNode(element: HTMLButtonElement, positional: [boolean?]) {\n const { didInsertNode } = this.args;\n\n const isSelected = positional[0];\n\n if (typeof didInsertNode === 'function') {\n didInsertNode(element, isSelected);\n }\n }\n\n @action\n didUpdateNode() {\n const { didUpdateNode } = this.args;\n\n if (typeof didUpdateNode === 'function' && this.nodeIndex !== undefined) {\n didUpdateNode(this.nodeIndex, this.args.isSelected);\n }\n }\n\n @action\n willDestroyNode(element: HTMLButtonElement) {\n const { willDestroyNode } = this.args;\n\n if (typeof willDestroyNode === 'function') {\n willDestroyNode(element);\n }\n }\n\n @action\n onClick(event: MouseEvent) {\n const { onClick } = this.args;\n\n if (typeof onClick === 'function' && this.nodeIndex !== undefined) {\n onClick(event, this.nodeIndex);\n } else {\n return false;\n }\n }\n\n @action\n onKeyUp(event: KeyboardEvent) {\n const { onKeyUp } = this.args;\n\n if (typeof onKeyUp === 'function' && this.nodeIndex !== undefined) {\n onKeyUp(this.nodeIndex, event);\n } else {\n return false;\n }\n }\n\n /**\n * Get the class names to apply to the component.\n * @method classNames\n * @return {string} The \"class\" attribute to apply to the component.\n */\n get classNames() {\n const classes = ['hds-tabs__tab'];\n\n if (this.isSelected) {\n classes.push(`hds-tabs__tab--is-selected`);\n }\n\n return classes.join(' ');\n }\n}\n"],"names":["HdsTabsTabComponent","_class","Component","constructor","args","_defineProperty","guidFor","nodeIndex","tabIds","indexOf","tabId","isSelected","undefined","selectedTabIndex","didInsertNode","element","positional","didUpdateNode","willDestroyNode","onClick","event","onKeyUp","classNames","classes","push","join","_applyDecoratedDescriptor","prototype","action","Object","getOwnPropertyDescriptor","setComponentTemplate","TEMPLATE"],"mappings":"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"}
1
+ {"version":3,"file":"tab.js","sources":["../../../../src/components/hds/tabs/tab.hbs","../../../../src/components/hds/tabs/tab.ts"],"sourcesContent":["import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"{{!\\n Copyright (c) HashiCorp, Inc.\\n SPDX-License-Identifier: MPL-2.0\\n}}\\n{{! template-lint-disable require-context-role no-invalid-role }}\\n<li class={{this.classNames}} ...attributes role=\\\"presentation\\\">\\n <button\\n class=\\\"hds-tabs__tab-button\\\"\\n role=\\\"tab\\\"\\n type=\\\"button\\\"\\n id={{this.tabId}}\\n aria-selected={{if this.isSelected \\\"true\\\" \\\"false\\\"}}\\n tabindex={{unless this.isSelected \\\"-1\\\"}}\\n {{did-insert this.didInsertNode @isSelected}}\\n {{did-update this.didUpdateNode @count @isSelected}}\\n {{will-destroy this.willDestroyNode}}\\n {{on \\\"click\\\" this.onClick}}\\n {{on \\\"keyup\\\" this.onKeyUp}}\\n >\\n {{#if @icon}}\\n <FlightIcon @name={{@icon}} class=\\\"hds-tabs__tab-icon\\\" role=\\\"presentation\\\" />\\n {{/if}}\\n\\n {{yield}}\\n\\n {{#if @count}}\\n <Hds::BadgeCount @text={{@count}} @size=\\\"small\\\" class=\\\"hds-tabs__tab-count\\\" role=\\\"presentation\\\" />\\n {{/if}}\\n </button>\\n</li>\\n{{! template-lint-enable require-context-role no-invalid-role }}\")","/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { guidFor } from '@ember/object/internals';\nimport { action } from '@ember/object';\nimport type { IconName } from '@hashicorp/flight-icons/svg';\nimport type { HdsTabsTabIds } from './types';\n\nexport interface HdsTabsTabSignature {\n Args: {\n tabIds: HdsTabsTabIds;\n selectedTabIndex: number;\n icon?: IconName;\n count?: string;\n isSelected?: boolean;\n didInsertNode: (element: HTMLButtonElement, isSelected?: boolean) => void;\n didUpdateNode: (nodeIndex: number, isSelected?: boolean) => void;\n willDestroyNode: (element: HTMLButtonElement) => void;\n onClick: (event: MouseEvent, tabIndex: number) => void;\n onKeyUp: (nodeIndex: number, event: KeyboardEvent) => void;\n };\n Blocks: {\n default: [];\n };\n Element: HTMLLIElement;\n}\n\nexport default class HdsTabsTabComponent extends Component<HdsTabsTabSignature> {\n /**\n * Generate a unique ID for the Tab\n * @return {string}\n */\n tabId = 'tab-' + guidFor(this);\n\n get nodeIndex(): number | undefined {\n return this.args.tabIds?.indexOf(this.tabId);\n }\n\n /**\n * Determine if the tab is the selected tab\n * @return {boolean}\n * @default false (1st tab is selected by default)\n */\n get isSelected(): boolean {\n return (\n this.nodeIndex !== undefined &&\n this.nodeIndex === this.args.selectedTabIndex\n );\n }\n\n @action\n didInsertNode(element: HTMLButtonElement, positional: [boolean?]): void {\n const { didInsertNode } = this.args;\n\n const isSelected = positional[0];\n\n if (typeof didInsertNode === 'function') {\n didInsertNode(element, isSelected);\n }\n }\n\n @action\n didUpdateNode(): void {\n const { didUpdateNode } = this.args;\n\n if (typeof didUpdateNode === 'function' && this.nodeIndex !== undefined) {\n didUpdateNode(this.nodeIndex, this.args.isSelected);\n }\n }\n\n @action\n willDestroyNode(element: HTMLButtonElement): void {\n const { willDestroyNode } = this.args;\n\n if (typeof willDestroyNode === 'function') {\n willDestroyNode(element);\n }\n }\n\n @action\n onClick(event: MouseEvent): false | undefined {\n const { onClick } = this.args;\n\n if (typeof onClick === 'function' && this.nodeIndex !== undefined) {\n onClick(event, this.nodeIndex);\n } else {\n return false;\n }\n }\n\n @action\n onKeyUp(event: KeyboardEvent): void {\n const { onKeyUp } = this.args;\n\n if (typeof onKeyUp === 'function' && this.nodeIndex !== undefined) {\n onKeyUp(this.nodeIndex, event);\n }\n }\n\n /**\n * Get the class names to apply to the component.\n * @method classNames\n * @return {string} The \"class\" attribute to apply to the component.\n */\n get classNames(): string {\n const classes = ['hds-tabs__tab'];\n\n if (this.isSelected) {\n classes.push(`hds-tabs__tab--is-selected`);\n }\n\n return classes.join(' ');\n }\n}\n"],"names":["HdsTabsTabComponent","_class","Component","constructor","args","_defineProperty","guidFor","nodeIndex","tabIds","indexOf","tabId","isSelected","undefined","selectedTabIndex","didInsertNode","element","positional","didUpdateNode","willDestroyNode","onClick","event","onKeyUp","classNames","classes","push","join","_applyDecoratedDescriptor","prototype","action","Object","getOwnPropertyDescriptor","setComponentTemplate","TEMPLATE"],"mappings":";;;;;;;AACA,eAAe,kBAAkB,CAAC,qgCAAqgC;;;AC6BlhCA,IAAAA,mBAAmB,IAAAC,MAAA,GAAzB,MAAMD,mBAAmB,SAASE,SAAS,CAAsB;AAAAC,EAAAA,WAAAA,CAAA,GAAAC,IAAA,EAAA;AAAA,IAAA,KAAA,CAAA,GAAAA,IAAA,CAAA,CAAA;AAC9E;AACF;AACA;AACA;AAHEC,IAAAA,eAAA,gBAIQ,MAAM,GAAGC,OAAO,CAAC,IAAI,CAAC,CAAA,CAAA;AAAA,GAAA;EAE9B,IAAIC,SAASA,GAAuB;IAClC,OAAO,IAAI,CAACH,IAAI,CAACI,MAAM,EAAEC,OAAO,CAAC,IAAI,CAACC,KAAK,CAAC,CAAA;AAC9C,GAAA;;AAEA;AACF;AACA;AACA;AACA;EACE,IAAIC,UAAUA,GAAY;AACxB,IAAA,OACE,IAAI,CAACJ,SAAS,KAAKK,SAAS,IAC5B,IAAI,CAACL,SAAS,KAAK,IAAI,CAACH,IAAI,CAACS,gBAAgB,CAAA;AAEjD,GAAA;AAGAC,EAAAA,aAAaA,CAACC,OAA0B,EAAEC,UAAsB,EAAQ;IACtE,MAAM;AAAEF,MAAAA,aAAAA;KAAe,GAAG,IAAI,CAACV,IAAI,CAAA;AAEnC,IAAA,MAAMO,UAAU,GAAGK,UAAU,CAAC,CAAC,CAAC,CAAA;AAEhC,IAAA,IAAI,OAAOF,aAAa,KAAK,UAAU,EAAE;AACvCA,MAAAA,aAAa,CAACC,OAAO,EAAEJ,UAAU,CAAC,CAAA;AACpC,KAAA;AACF,GAAA;AAGAM,EAAAA,aAAaA,GAAS;IACpB,MAAM;AAAEA,MAAAA,aAAAA;KAAe,GAAG,IAAI,CAACb,IAAI,CAAA;IAEnC,IAAI,OAAOa,aAAa,KAAK,UAAU,IAAI,IAAI,CAACV,SAAS,KAAKK,SAAS,EAAE;MACvEK,aAAa,CAAC,IAAI,CAACV,SAAS,EAAE,IAAI,CAACH,IAAI,CAACO,UAAU,CAAC,CAAA;AACrD,KAAA;AACF,GAAA;EAGAO,eAAeA,CAACH,OAA0B,EAAQ;IAChD,MAAM;AAAEG,MAAAA,eAAAA;KAAiB,GAAG,IAAI,CAACd,IAAI,CAAA;AAErC,IAAA,IAAI,OAAOc,eAAe,KAAK,UAAU,EAAE;MACzCA,eAAe,CAACH,OAAO,CAAC,CAAA;AAC1B,KAAA;AACF,GAAA;EAGAI,OAAOA,CAACC,KAAiB,EAAqB;IAC5C,MAAM;AAAED,MAAAA,OAAAA;KAAS,GAAG,IAAI,CAACf,IAAI,CAAA;IAE7B,IAAI,OAAOe,OAAO,KAAK,UAAU,IAAI,IAAI,CAACZ,SAAS,KAAKK,SAAS,EAAE;AACjEO,MAAAA,OAAO,CAACC,KAAK,EAAE,IAAI,CAACb,SAAS,CAAC,CAAA;AAChC,KAAC,MAAM;AACL,MAAA,OAAO,KAAK,CAAA;AACd,KAAA;AACF,GAAA;EAGAc,OAAOA,CAACD,KAAoB,EAAQ;IAClC,MAAM;AAAEC,MAAAA,OAAAA;KAAS,GAAG,IAAI,CAACjB,IAAI,CAAA;IAE7B,IAAI,OAAOiB,OAAO,KAAK,UAAU,IAAI,IAAI,CAACd,SAAS,KAAKK,SAAS,EAAE;AACjES,MAAAA,OAAO,CAAC,IAAI,CAACd,SAAS,EAAEa,KAAK,CAAC,CAAA;AAChC,KAAA;AACF,GAAA;;AAEA;AACF;AACA;AACA;AACA;EACE,IAAIE,UAAUA,GAAW;AACvB,IAAA,MAAMC,OAAO,GAAG,CAAC,eAAe,CAAC,CAAA;IAEjC,IAAI,IAAI,CAACZ,UAAU,EAAE;AACnBY,MAAAA,OAAO,CAACC,IAAI,CAAC,CAAA,0BAAA,CAA4B,CAAC,CAAA;AAC5C,KAAA;AAEA,IAAA,OAAOD,OAAO,CAACE,IAAI,CAAC,GAAG,CAAC,CAAA;AAC1B,GAAA;AACF,CAAC,GAAAC,yBAAA,CAAAzB,MAAA,CAAA0B,SAAA,EAAA,eAAA,EAAA,CA/DEC,MAAM,CAAA,EAAAC,MAAA,CAAAC,wBAAA,CAAA7B,MAAA,CAAA0B,SAAA,EAAA,eAAA,CAAA,EAAA1B,MAAA,CAAA0B,SAAA,CAAAD,EAAAA,yBAAA,CAAAzB,MAAA,CAAA0B,SAAA,EAAA,eAAA,EAAA,CAWNC,MAAM,CAAAC,EAAAA,MAAA,CAAAC,wBAAA,CAAA7B,MAAA,CAAA0B,SAAA,EAAA,eAAA,CAAA,EAAA1B,MAAA,CAAA0B,SAAA,GAAAD,yBAAA,CAAAzB,MAAA,CAAA0B,SAAA,EASNC,iBAAAA,EAAAA,CAAAA,MAAM,CAAAC,EAAAA,MAAA,CAAAC,wBAAA,CAAA7B,MAAA,CAAA0B,SAAA,sBAAA1B,MAAA,CAAA0B,SAAA,CAAA,EAAAD,yBAAA,CAAAzB,MAAA,CAAA0B,SAAA,cASNC,MAAM,CAAA,EAAAC,MAAA,CAAAC,wBAAA,CAAA7B,MAAA,CAAA0B,SAAA,cAAA1B,MAAA,CAAA0B,SAAA,CAAAD,EAAAA,yBAAA,CAAAzB,MAAA,CAAA0B,SAAA,EAAA,SAAA,EAAA,CAWNC,MAAM,CAAA,EAAAC,MAAA,CAAAC,wBAAA,CAAA7B,MAAA,CAAA0B,SAAA,cAAA1B,MAAA,CAAA0B,SAAA,CAAA,GAAA1B,MAAA,EAAA;AA/D+B8B,oBAAA,CAAAC,QAAA,EAAnBhC,mBAAmB,CAAA;;;;"}
@@ -1,3 +1,8 @@
1
+ /**
2
+ * Copyright (c) HashiCorp, Inc.
3
+ * SPDX-License-Identifier: MPL-2.0
4
+ */
5
+
1
6
  let HdsTabsSizeValues = /*#__PURE__*/function (HdsTabsSizeValues) {
2
7
  HdsTabsSizeValues["Medium"] = "medium";
3
8
  HdsTabsSizeValues["Large"] = "large";
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sources":["../../../../src/components/hds/tabs/types.ts"],"sourcesContent":["export enum HdsTabsSizeValues {\n Medium = 'medium',\n Large = 'large',\n}\n\nexport type HdsTabsSizes = `${HdsTabsSizeValues}`;\n\nexport type HdsTabsPanelIds = string[];\n\nexport type HdsTabsTabIds = string[];\n"],"names":["HdsTabsSizeValues"],"mappings":"AAAYA,IAAAA,iBAAiB,0BAAjBA,iBAAiB,EAAA;EAAjBA,iBAAiB,CAAA,QAAA,CAAA,GAAA,QAAA,CAAA;EAAjBA,iBAAiB,CAAA,OAAA,CAAA,GAAA,OAAA,CAAA;AAAA,EAAA,OAAjBA,iBAAiB,CAAA;AAAA,CAAA,CAAA,EAAA;;;;"}
1
+ {"version":3,"file":"types.js","sources":["../../../../src/components/hds/tabs/types.ts"],"sourcesContent":["/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nexport enum HdsTabsSizeValues {\n Medium = 'medium',\n Large = 'large',\n}\n\nexport type HdsTabsSizes = `${HdsTabsSizeValues}`;\n\nexport type HdsTabsPanelIds = string[];\n\nexport type HdsTabsTabIds = string[];\n"],"names":["HdsTabsSizeValues"],"mappings":"AAAA;AACA;AACA;AACA;;AAEYA,IAAAA,iBAAiB,0BAAjBA,iBAAiB,EAAA;EAAjBA,iBAAiB,CAAA,QAAA,CAAA,GAAA,QAAA,CAAA;EAAjBA,iBAAiB,CAAA,OAAA,CAAA,GAAA,OAAA,CAAA;AAAA,EAAA,OAAjBA,iBAAiB,CAAA;AAAA,CAAA,CAAA,EAAA;;;;"}
@@ -19,6 +19,7 @@ class HdsTagComponent extends Component {
19
19
  * @type {function}
20
20
  * @default () => {}
21
21
  */
22
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
22
23
  get onDismiss() {
23
24
  const {
24
25
  onDismiss
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/hds/tag/index.hbs","../../../../src/components/hds/tag/index.ts"],"sourcesContent":["import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"{{!\\n Copyright (c) HashiCorp, Inc.\\n SPDX-License-Identifier: MPL-2.0\\n}}\\n<Hds::Text::Body class={{this.classNames}} @tag=\\\"span\\\" @size=\\\"100\\\" @weight=\\\"medium\\\" @color=\\\"primary\\\" ...attributes>\\n {{#if this.onDismiss}}\\n <button class=\\\"hds-tag__dismiss\\\" type=\\\"button\\\" aria-label={{this.ariaLabel}} {{on \\\"click\\\" this.onDismiss}}>\\n <FlightIcon class=\\\"hds-tag__dismiss-icon\\\" @name=\\\"x\\\" @size=\\\"16\\\" @isInlineBlock={{false}} />\\n </button>\\n {{/if}}\\n {{#if (or @href @route)}}\\n <Hds::Interactive\\n class=\\\"hds-tag__link\\\"\\n @current-when={{@current-when}}\\n @models={{hds-link-to-models @model @models}}\\n @query={{hds-link-to-query @query}}\\n @replace={{@replace}}\\n @route={{@route}}\\n @isRouteExternal={{@isRouteExternal}}\\n @href={{@href}}\\n @isHrefExternal={{@isHrefExternal}}\\n >\\n {{this.text}}\\n </Hds::Interactive>\\n {{else}}\\n <span class=\\\"hds-tag__text\\\">\\n {{this.text}}\\n </span>\\n {{/if}}\\n</Hds::Text::Body>\")","/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { assert } from '@ember/debug';\n\nimport { HdsTagColorValues } from './types.ts';\nimport type { HdsTagColors } from './types.ts';\nimport type { HdsInteractiveSignature } from '../interactive/';\n\nexport const COLORS: string[] = Object.values(HdsTagColorValues);\nexport const DEFAULT_COLOR = HdsTagColorValues.Primary;\n\ninterface HdsTagSignature {\n Args: HdsInteractiveSignature['Args'] & {\n color?: HdsTagColors;\n text: string;\n ariaLabel?: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onDismiss?: (event: MouseEvent, ...args: any[]) => void;\n };\n Element: HTMLSpanElement;\n}\n\nexport default class HdsTagComponent extends Component<HdsTagSignature> {\n /**\n * @param onDismiss\n * @type {function}\n * @default () => {}\n */\n get onDismiss() {\n const { onDismiss } = this.args;\n\n if (typeof onDismiss === 'function') {\n return onDismiss;\n } else {\n return false;\n }\n }\n\n /**\n * @param text\n * @type {string}\n * @description The text of the tag. If no text value is defined, an error will be thrown.\n */\n get text() {\n const { text } = this.args;\n\n assert('@text for \"Hds::Tag\" must have a valid value', text !== undefined);\n\n return text;\n }\n\n /**\n * @param ariaLabel\n * @type {string}\n * @default 'Dismiss'\n */\n get ariaLabel() {\n const tagAriaLabel = this.args.ariaLabel ?? 'Dismiss';\n return tagAriaLabel + ' ' + this.args.text;\n }\n\n /**\n * @param color\n * @type {string}\n * @default primary\n * @description Determines the color of link to be used; acceptable values are `primary` and `secondary`\n */\n get color() {\n if (this.args.href || this.args.route) {\n const { color = DEFAULT_COLOR } = this.args;\n assert(\n `@color for \"Hds::Tag\" must be one of the following: ${COLORS.join(\n ', '\n )}; received: ${color}`,\n COLORS.includes(color)\n );\n return color;\n } else if (this.args.color) {\n assert(\n '@color can only be applied to \"Hds::Tag\" along with either @href or @route',\n this.args.href || this.args.route\n );\n }\n return false;\n }\n\n /**\n * Get the class names to apply to the component.\n * @method classNames\n * @return {string} The \"class\" attribute to apply to the component.\n */\n get classNames() {\n const classes = ['hds-tag'];\n\n // add a class based on the @color argument\n if (this.color) {\n classes.push(`hds-tag--color-${this.color}`);\n }\n\n return classes.join(' ');\n }\n}\n"],"names":["COLORS","Object","values","HdsTagColorValues","DEFAULT_COLOR","Primary","HdsTagComponent","Component","onDismiss","args","text","assert","undefined","ariaLabel","tagAriaLabel","color","href","route","join","includes","classNames","classes","push","setComponentTemplate","TEMPLATE"],"mappings":";;;;;;AACA,eAAe,kBAAkB,CAAC,mgCAAmgC;;ACDriC;AACA;AACA;AACA;;AASO,MAAMA,MAAgB,GAAGC,MAAM,CAACC,MAAM,CAACC,iBAAiB,EAAC;AACnDC,MAAAA,aAAa,GAAGD,iBAAiB,CAACE,QAAO;AAavC,MAAMC,eAAe,SAASC,SAAS,CAAkB;AACtE;AACF;AACA;AACA;AACA;EACE,IAAIC,SAASA,GAAG;IACd,MAAM;AAAEA,MAAAA,SAAAA;KAAW,GAAG,IAAI,CAACC,IAAI,CAAA;AAE/B,IAAA,IAAI,OAAOD,SAAS,KAAK,UAAU,EAAE;AACnC,MAAA,OAAOA,SAAS,CAAA;AAClB,KAAC,MAAM;AACL,MAAA,OAAO,KAAK,CAAA;AACd,KAAA;AACF,GAAA;;AAEA;AACF;AACA;AACA;AACA;EACE,IAAIE,IAAIA,GAAG;IACT,MAAM;AAAEA,MAAAA,IAAAA;KAAM,GAAG,IAAI,CAACD,IAAI,CAAA;AAE1BE,IAAAA,MAAM,CAAC,8CAA8C,EAAED,IAAI,KAAKE,SAAS,CAAC,CAAA;AAE1E,IAAA,OAAOF,IAAI,CAAA;AACb,GAAA;;AAEA;AACF;AACA;AACA;AACA;EACE,IAAIG,SAASA,GAAG;IACd,MAAMC,YAAY,GAAG,IAAI,CAACL,IAAI,CAACI,SAAS,IAAI,SAAS,CAAA;IACrD,OAAOC,YAAY,GAAG,GAAG,GAAG,IAAI,CAACL,IAAI,CAACC,IAAI,CAAA;AAC5C,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;EACE,IAAIK,KAAKA,GAAG;IACV,IAAI,IAAI,CAACN,IAAI,CAACO,IAAI,IAAI,IAAI,CAACP,IAAI,CAACQ,KAAK,EAAE;MACrC,MAAM;AAAEF,QAAAA,KAAK,GAAGX,aAAAA;OAAe,GAAG,IAAI,CAACK,IAAI,CAAA;AAC3CE,MAAAA,MAAM,CACJ,CAAuDX,oDAAAA,EAAAA,MAAM,CAACkB,IAAI,CAChE,IACF,CAAC,CAAA,YAAA,EAAeH,KAAK,CAAA,CAAE,EACvBf,MAAM,CAACmB,QAAQ,CAACJ,KAAK,CACvB,CAAC,CAAA;AACD,MAAA,OAAOA,KAAK,CAAA;AACd,KAAC,MAAM,IAAI,IAAI,CAACN,IAAI,CAACM,KAAK,EAAE;AAC1BJ,MAAAA,MAAM,CACJ,4EAA4E,EAC5E,IAAI,CAACF,IAAI,CAACO,IAAI,IAAI,IAAI,CAACP,IAAI,CAACQ,KAC9B,CAAC,CAAA;AACH,KAAA;AACA,IAAA,OAAO,KAAK,CAAA;AACd,GAAA;;AAEA;AACF;AACA;AACA;AACA;EACE,IAAIG,UAAUA,GAAG;AACf,IAAA,MAAMC,OAAO,GAAG,CAAC,SAAS,CAAC,CAAA;;AAE3B;IACA,IAAI,IAAI,CAACN,KAAK,EAAE;MACdM,OAAO,CAACC,IAAI,CAAC,CAAA,eAAA,EAAkB,IAAI,CAACP,KAAK,EAAE,CAAC,CAAA;AAC9C,KAAA;AAEA,IAAA,OAAOM,OAAO,CAACH,IAAI,CAAC,GAAG,CAAC,CAAA;AAC1B,GAAA;AACF,CAAA;AAACK,oBAAA,CAAAC,QAAA,EA/EoBlB,eAAe,CAAA;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/hds/tag/index.hbs","../../../../src/components/hds/tag/index.ts"],"sourcesContent":["import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"{{!\\n Copyright (c) HashiCorp, Inc.\\n SPDX-License-Identifier: MPL-2.0\\n}}\\n<Hds::Text::Body class={{this.classNames}} @tag=\\\"span\\\" @size=\\\"100\\\" @weight=\\\"medium\\\" @color=\\\"primary\\\" ...attributes>\\n {{#if this.onDismiss}}\\n <button class=\\\"hds-tag__dismiss\\\" type=\\\"button\\\" aria-label={{this.ariaLabel}} {{on \\\"click\\\" this.onDismiss}}>\\n <FlightIcon class=\\\"hds-tag__dismiss-icon\\\" @name=\\\"x\\\" @size=\\\"16\\\" @isInlineBlock={{false}} />\\n </button>\\n {{/if}}\\n {{#if (or @href @route)}}\\n <Hds::Interactive\\n class=\\\"hds-tag__link\\\"\\n @current-when={{@current-when}}\\n @models={{hds-link-to-models @model @models}}\\n @query={{hds-link-to-query @query}}\\n @replace={{@replace}}\\n @route={{@route}}\\n @isRouteExternal={{@isRouteExternal}}\\n @href={{@href}}\\n @isHrefExternal={{@isHrefExternal}}\\n >\\n {{this.text}}\\n </Hds::Interactive>\\n {{else}}\\n <span class=\\\"hds-tag__text\\\">\\n {{this.text}}\\n </span>\\n {{/if}}\\n</Hds::Text::Body>\")","/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { assert } from '@ember/debug';\n\nimport { HdsTagColorValues } from './types.ts';\nimport type { HdsTagColors } from './types.ts';\nimport type { HdsInteractiveSignature } from '../interactive/';\n\nexport const COLORS: string[] = Object.values(HdsTagColorValues);\nexport const DEFAULT_COLOR = HdsTagColorValues.Primary;\n\ninterface HdsTagSignature {\n Args: HdsInteractiveSignature['Args'] & {\n color?: HdsTagColors;\n text: string;\n ariaLabel?: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onDismiss?: (event: MouseEvent, ...args: any[]) => void;\n };\n Element: HTMLSpanElement;\n}\n\nexport default class HdsTagComponent extends Component<HdsTagSignature> {\n /**\n * @param onDismiss\n * @type {function}\n * @default () => {}\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n get onDismiss(): ((event: MouseEvent, ...args: any[]) => void) | false {\n const { onDismiss } = this.args;\n\n if (typeof onDismiss === 'function') {\n return onDismiss;\n } else {\n return false;\n }\n }\n\n /**\n * @param text\n * @type {string}\n * @description The text of the tag. If no text value is defined, an error will be thrown.\n */\n get text(): string {\n const { text } = this.args;\n\n assert('@text for \"Hds::Tag\" must have a valid value', text !== undefined);\n\n return text;\n }\n\n /**\n * @param ariaLabel\n * @type {string}\n * @default 'Dismiss'\n */\n get ariaLabel(): string {\n const tagAriaLabel = this.args.ariaLabel ?? 'Dismiss';\n return tagAriaLabel + ' ' + this.args.text;\n }\n\n /**\n * @param color\n * @type {string}\n * @default primary\n * @description Determines the color of link to be used; acceptable values are `primary` and `secondary`\n */\n get color(): HdsTagColors | false {\n if (this.args.href || this.args.route) {\n const { color = DEFAULT_COLOR } = this.args;\n assert(\n `@color for \"Hds::Tag\" must be one of the following: ${COLORS.join(\n ', '\n )}; received: ${color}`,\n COLORS.includes(color)\n );\n return color;\n } else if (this.args.color) {\n assert(\n '@color can only be applied to \"Hds::Tag\" along with either @href or @route',\n this.args.href || this.args.route\n );\n }\n return false;\n }\n\n /**\n * Get the class names to apply to the component.\n * @method classNames\n * @return {string} The \"class\" attribute to apply to the component.\n */\n get classNames(): string {\n const classes = ['hds-tag'];\n\n // add a class based on the @color argument\n if (this.color) {\n classes.push(`hds-tag--color-${this.color}`);\n }\n\n return classes.join(' ');\n }\n}\n"],"names":["COLORS","Object","values","HdsTagColorValues","DEFAULT_COLOR","Primary","HdsTagComponent","Component","onDismiss","args","text","assert","undefined","ariaLabel","tagAriaLabel","color","href","route","join","includes","classNames","classes","push","setComponentTemplate","TEMPLATE"],"mappings":";;;;;;AACA,eAAe,kBAAkB,CAAC,mgCAAmgC;;ACDriC;AACA;AACA;AACA;;AASO,MAAMA,MAAgB,GAAGC,MAAM,CAACC,MAAM,CAACC,iBAAiB,EAAC;AACnDC,MAAAA,aAAa,GAAGD,iBAAiB,CAACE,QAAO;AAavC,MAAMC,eAAe,SAASC,SAAS,CAAkB;AACtE;AACF;AACA;AACA;AACA;AACE;EACA,IAAIC,SAASA,GAA0D;IACrE,MAAM;AAAEA,MAAAA,SAAAA;KAAW,GAAG,IAAI,CAACC,IAAI,CAAA;AAE/B,IAAA,IAAI,OAAOD,SAAS,KAAK,UAAU,EAAE;AACnC,MAAA,OAAOA,SAAS,CAAA;AAClB,KAAC,MAAM;AACL,MAAA,OAAO,KAAK,CAAA;AACd,KAAA;AACF,GAAA;;AAEA;AACF;AACA;AACA;AACA;EACE,IAAIE,IAAIA,GAAW;IACjB,MAAM;AAAEA,MAAAA,IAAAA;KAAM,GAAG,IAAI,CAACD,IAAI,CAAA;AAE1BE,IAAAA,MAAM,CAAC,8CAA8C,EAAED,IAAI,KAAKE,SAAS,CAAC,CAAA;AAE1E,IAAA,OAAOF,IAAI,CAAA;AACb,GAAA;;AAEA;AACF;AACA;AACA;AACA;EACE,IAAIG,SAASA,GAAW;IACtB,MAAMC,YAAY,GAAG,IAAI,CAACL,IAAI,CAACI,SAAS,IAAI,SAAS,CAAA;IACrD,OAAOC,YAAY,GAAG,GAAG,GAAG,IAAI,CAACL,IAAI,CAACC,IAAI,CAAA;AAC5C,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;EACE,IAAIK,KAAKA,GAAyB;IAChC,IAAI,IAAI,CAACN,IAAI,CAACO,IAAI,IAAI,IAAI,CAACP,IAAI,CAACQ,KAAK,EAAE;MACrC,MAAM;AAAEF,QAAAA,KAAK,GAAGX,aAAAA;OAAe,GAAG,IAAI,CAACK,IAAI,CAAA;AAC3CE,MAAAA,MAAM,CACJ,CAAuDX,oDAAAA,EAAAA,MAAM,CAACkB,IAAI,CAChE,IACF,CAAC,CAAA,YAAA,EAAeH,KAAK,CAAA,CAAE,EACvBf,MAAM,CAACmB,QAAQ,CAACJ,KAAK,CACvB,CAAC,CAAA;AACD,MAAA,OAAOA,KAAK,CAAA;AACd,KAAC,MAAM,IAAI,IAAI,CAACN,IAAI,CAACM,KAAK,EAAE;AAC1BJ,MAAAA,MAAM,CACJ,4EAA4E,EAC5E,IAAI,CAACF,IAAI,CAACO,IAAI,IAAI,IAAI,CAACP,IAAI,CAACQ,KAC9B,CAAC,CAAA;AACH,KAAA;AACA,IAAA,OAAO,KAAK,CAAA;AACd,GAAA;;AAEA;AACF;AACA;AACA;AACA;EACE,IAAIG,UAAUA,GAAW;AACvB,IAAA,MAAMC,OAAO,GAAG,CAAC,SAAS,CAAC,CAAA;;AAE3B;IACA,IAAI,IAAI,CAACN,KAAK,EAAE;MACdM,OAAO,CAACC,IAAI,CAAC,CAAA,eAAA,EAAkB,IAAI,CAACP,KAAK,EAAE,CAAC,CAAA;AAC9C,KAAA;AAEA,IAAA,OAAOM,OAAO,CAACH,IAAI,CAAC,GAAG,CAAC,CAAA;AAC1B,GAAA;AACF,CAAA;AAACK,oBAAA,CAAAC,QAAA,EAhFoBlB,eAAe,CAAA;;;;"}
@@ -24,9 +24,9 @@ class HdsTextBodyComponent extends Component {
24
24
  * Sets the "size" for the text
25
25
  * Accepted values: see AVAILABLE_SIZES
26
26
  *
27
- * @type {string}
28
- *
29
27
  * @param size
28
+ * @type {HdsTextBodySizes}
29
+ *
30
30
  */
31
31
  get size() {
32
32
  let {
@@ -45,9 +45,9 @@ class HdsTextBodyComponent extends Component {
45
45
  * Sets the "weight" for the text
46
46
  * Accepted values: see AVAILABLE_WEIGHTS_PER_SIZE
47
47
  *
48
- * @type {string}
48
+ * @param weight
49
+ * @type {HdsTextWeights}
49
50
  *
50
- * @param variant
51
51
  */
52
52
  get weight() {
53
53
  const {
@@ -1 +1 @@
1
- {"version":3,"file":"body.js","sources":["../../../../src/components/hds/text/body.hbs","../../../../src/components/hds/text/body.ts"],"sourcesContent":["import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"{{!\\n Copyright (c) HashiCorp, Inc.\\n SPDX-License-Identifier: MPL-2.0\\n}}\\n<Hds::Text\\n @group=\\\"body\\\"\\n @size={{this.size}}\\n @weight={{this.weight}}\\n @align={{@align}}\\n @color={{@color}}\\n @tag={{@tag}}\\n ...attributes\\n>{{yield}}</Hds::Text>\")","/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { assert } from '@ember/debug';\nimport { HdsTextSizeValues, HdsTextWeightValues } from './types.ts';\nimport type {\n HdsTextAligns,\n HdsTextColors,\n HdsTextTags,\n HdsTextWeights,\n} from './types.ts';\n\n// notice: only some combinations of size + font-weight are allowed (per design specs)\n// see: https://www.figma.com/file/oQsMzMMnynfPWpMEt91OpH/HDS-Product---Foundations?node-id=1262%3A9192\n\n// Allow consumers to provide either string or number representation of size\ntype HdsTextBodySizeNumber = Extract<\n HdsTextSizeValues,\n | HdsTextSizeValues.OneHundred\n | HdsTextSizeValues.TwoHundred\n | HdsTextSizeValues.ThreeHundred\n>;\ntype HdsTextBodySizeString = `${HdsTextBodySizeNumber}`;\nexport type HdsTextBodySizes = HdsTextBodySizeNumber | HdsTextBodySizeString;\nexport const AVAILABLE_SIZES = [\n HdsTextSizeValues.ThreeHundred,\n HdsTextSizeValues.TwoHundred,\n HdsTextSizeValues.OneHundred,\n];\nexport const DEFAULT_SIZE = HdsTextSizeValues.TwoHundred;\n\nexport const DEFAULT_WEIGHT = HdsTextWeightValues.Regular;\nexport type HdsTextBodyWeight = Extract<\n HdsTextWeights,\n 'regular' | 'medium' | 'semibold'\n>;\nexport const AVAILABLE_WEIGHTS_PER_SIZE: Record<\n HdsTextBodySizes,\n HdsTextBodyWeight[]\n> = {\n 300: [\n HdsTextWeightValues.Regular,\n HdsTextWeightValues.Medium,\n HdsTextWeightValues.Semibold,\n ],\n 200: [\n HdsTextWeightValues.Regular,\n HdsTextWeightValues.Medium,\n HdsTextWeightValues.Semibold,\n ],\n 100: [\n HdsTextWeightValues.Regular,\n HdsTextWeightValues.Medium,\n HdsTextWeightValues.Semibold,\n ],\n};\n\nexport interface HdsTextBodySignature {\n Args: {\n size?: HdsTextBodySizes;\n tag?: HdsTextTags;\n weight?: HdsTextBodyWeight;\n align?: HdsTextAligns;\n color?: string | HdsTextColors;\n };\n Element:\n | HTMLSpanElement\n | HTMLHeadingElement\n | HTMLParagraphElement\n | HTMLDivElement;\n Blocks: {\n default: [];\n };\n}\n\nexport default class HdsTextBodyComponent extends Component<HdsTextBodySignature> {\n /**\n * Sets the \"size\" for the text\n * Accepted values: see AVAILABLE_SIZES\n *\n * @type {string}\n *\n * @param size\n */\n get size() {\n let { size = DEFAULT_SIZE } = this.args;\n\n // let's be a bit forgiving with the consumers\n if (typeof size === 'string') {\n size = parseInt(size, 10);\n }\n\n assert(\n `@size for \"Hds::Text::Body\" must be one of the following: ${AVAILABLE_SIZES.join(\n ', '\n )}; received: ${size}`,\n AVAILABLE_SIZES.includes(size)\n );\n\n return size;\n }\n\n /**\n * Sets the \"weight\" for the text\n * Accepted values: see AVAILABLE_WEIGHTS_PER_SIZE\n *\n * @type {string}\n *\n * @param variant\n */\n get weight() {\n const { weight = DEFAULT_WEIGHT } = this.args;\n\n const availableWeights = AVAILABLE_WEIGHTS_PER_SIZE[this.size];\n\n assert(\n `@weight for \"Hds::Text::Body\" with @size=${\n this.size\n } must be one of the following: ${availableWeights.join(\n ', '\n )}; received: ${weight}`,\n availableWeights.includes(weight)\n );\n\n return weight;\n }\n}\n"],"names":["AVAILABLE_SIZES","HdsTextSizeValues","ThreeHundred","TwoHundred","OneHundred","DEFAULT_SIZE","DEFAULT_WEIGHT","HdsTextWeightValues","Regular","AVAILABLE_WEIGHTS_PER_SIZE","Medium","Semibold","HdsTextBodyComponent","Component","size","args","parseInt","assert","join","includes","weight","availableWeights","setComponentTemplate","TEMPLATE"],"mappings":";;;;;;AACA,eAAe,kBAAkB,CAAC,mQAAmQ;;ACDrS;AACA;AACA;AACA;;AAwBaA,MAAAA,eAAe,GAAG,CAC7BC,iBAAiB,CAACC,YAAY,EAC9BD,iBAAiB,CAACE,UAAU,EAC5BF,iBAAiB,CAACG,UAAU,EAC7B;AACYC,MAAAA,YAAY,GAAGJ,iBAAiB,CAACE,WAAU;AAE3CG,MAAAA,cAAc,GAAGC,mBAAmB,CAACC,QAAO;AAKlD,MAAMC,0BAGZ,GAAG;AACF,EAAA,GAAG,EAAE,CACHF,mBAAmB,CAACC,OAAO,EAC3BD,mBAAmB,CAACG,MAAM,EAC1BH,mBAAmB,CAACI,QAAQ,CAC7B;AACD,EAAA,GAAG,EAAE,CACHJ,mBAAmB,CAACC,OAAO,EAC3BD,mBAAmB,CAACG,MAAM,EAC1BH,mBAAmB,CAACI,QAAQ,CAC7B;AACD,EAAA,GAAG,EAAE,CACHJ,mBAAmB,CAACC,OAAO,EAC3BD,mBAAmB,CAACG,MAAM,EAC1BH,mBAAmB,CAACI,QAAQ,CAAA;AAEhC,EAAC;AAoBc,MAAMC,oBAAoB,SAASC,SAAS,CAAuB;AAChF;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACE,IAAIC,IAAIA,GAAG;IACT,IAAI;AAAEA,MAAAA,IAAI,GAAGT,YAAAA;KAAc,GAAG,IAAI,CAACU,IAAI,CAAA;;AAEvC;AACA,IAAA,IAAI,OAAOD,IAAI,KAAK,QAAQ,EAAE;AAC5BA,MAAAA,IAAI,GAAGE,QAAQ,CAACF,IAAI,EAAE,EAAE,CAAC,CAAA;AAC3B,KAAA;AAEAG,IAAAA,MAAM,CACJ,CAA6DjB,0DAAAA,EAAAA,eAAe,CAACkB,IAAI,CAC/E,IACF,CAAC,CAAA,YAAA,EAAeJ,IAAI,CAAA,CAAE,EACtBd,eAAe,CAACmB,QAAQ,CAACL,IAAI,CAC/B,CAAC,CAAA;AAED,IAAA,OAAOA,IAAI,CAAA;AACb,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACE,IAAIM,MAAMA,GAAG;IACX,MAAM;AAAEA,MAAAA,MAAM,GAAGd,cAAAA;KAAgB,GAAG,IAAI,CAACS,IAAI,CAAA;AAE7C,IAAA,MAAMM,gBAAgB,GAAGZ,0BAA0B,CAAC,IAAI,CAACK,IAAI,CAAC,CAAA;IAE9DG,MAAM,CACJ,4CACE,IAAI,CAACH,IAAI,CACuBO,+BAAAA,EAAAA,gBAAgB,CAACH,IAAI,CACrD,IACF,CAAC,CAAeE,YAAAA,EAAAA,MAAM,EAAE,EACxBC,gBAAgB,CAACF,QAAQ,CAACC,MAAM,CAClC,CAAC,CAAA;AAED,IAAA,OAAOA,MAAM,CAAA;AACf,GAAA;AACF,CAAA;AAACE,oBAAA,CAAAC,QAAA,EAnDoBX,oBAAoB,CAAA;;;;"}
1
+ {"version":3,"file":"body.js","sources":["../../../../src/components/hds/text/body.hbs","../../../../src/components/hds/text/body.ts"],"sourcesContent":["import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"{{!\\n Copyright (c) HashiCorp, Inc.\\n SPDX-License-Identifier: MPL-2.0\\n}}\\n<Hds::Text\\n @group=\\\"body\\\"\\n @size={{this.size}}\\n @weight={{this.weight}}\\n @align={{@align}}\\n @color={{@color}}\\n @tag={{@tag}}\\n ...attributes\\n>{{yield}}</Hds::Text>\")","/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { assert } from '@ember/debug';\nimport { HdsTextSizeValues, HdsTextWeightValues } from './types.ts';\nimport type {\n HdsTextAligns,\n HdsTextColors,\n HdsTextTags,\n HdsTextWeights,\n} from './types.ts';\n\n// notice: only some combinations of size + font-weight are allowed (per design specs)\n// see: https://www.figma.com/file/oQsMzMMnynfPWpMEt91OpH/HDS-Product---Foundations?node-id=1262%3A9192\n\n// Allow consumers to provide either string or number representation of size\ntype HdsTextBodySizeNumber = Extract<\n HdsTextSizeValues,\n | HdsTextSizeValues.OneHundred\n | HdsTextSizeValues.TwoHundred\n | HdsTextSizeValues.ThreeHundred\n>;\ntype HdsTextBodySizeString = `${HdsTextBodySizeNumber}`;\nexport type HdsTextBodySizes = HdsTextBodySizeNumber | HdsTextBodySizeString;\nexport const AVAILABLE_SIZES = [\n HdsTextSizeValues.ThreeHundred,\n HdsTextSizeValues.TwoHundred,\n HdsTextSizeValues.OneHundred,\n];\nexport const DEFAULT_SIZE = HdsTextSizeValues.TwoHundred;\n\nexport const DEFAULT_WEIGHT = HdsTextWeightValues.Regular;\nexport type HdsTextBodyWeight = Extract<\n HdsTextWeights,\n 'regular' | 'medium' | 'semibold'\n>;\nexport const AVAILABLE_WEIGHTS_PER_SIZE: Record<\n HdsTextBodySizes,\n HdsTextBodyWeight[]\n> = {\n 300: [\n HdsTextWeightValues.Regular,\n HdsTextWeightValues.Medium,\n HdsTextWeightValues.Semibold,\n ],\n 200: [\n HdsTextWeightValues.Regular,\n HdsTextWeightValues.Medium,\n HdsTextWeightValues.Semibold,\n ],\n 100: [\n HdsTextWeightValues.Regular,\n HdsTextWeightValues.Medium,\n HdsTextWeightValues.Semibold,\n ],\n};\n\nexport interface HdsTextBodySignature {\n Args: {\n size?: HdsTextBodySizes;\n tag?: HdsTextTags;\n weight?: HdsTextBodyWeight;\n align?: HdsTextAligns;\n color?: string | HdsTextColors;\n };\n Element:\n | HTMLSpanElement\n | HTMLHeadingElement\n | HTMLParagraphElement\n | HTMLDivElement;\n Blocks: {\n default: [];\n };\n}\n\nexport default class HdsTextBodyComponent extends Component<HdsTextBodySignature> {\n /**\n * Sets the \"size\" for the text\n * Accepted values: see AVAILABLE_SIZES\n *\n * @param size\n * @type {HdsTextBodySizes}\n *\n */\n get size(): HdsTextBodySizes {\n let { size = DEFAULT_SIZE } = this.args;\n\n // let's be a bit forgiving with the consumers\n if (typeof size === 'string') {\n size = parseInt(size, 10);\n }\n\n assert(\n `@size for \"Hds::Text::Body\" must be one of the following: ${AVAILABLE_SIZES.join(\n ', '\n )}; received: ${size}`,\n AVAILABLE_SIZES.includes(size)\n );\n\n return size;\n }\n\n /**\n * Sets the \"weight\" for the text\n * Accepted values: see AVAILABLE_WEIGHTS_PER_SIZE\n *\n * @param weight\n * @type {HdsTextWeights}\n *\n */\n get weight(): HdsTextWeights {\n const { weight = DEFAULT_WEIGHT } = this.args;\n\n const availableWeights = AVAILABLE_WEIGHTS_PER_SIZE[this.size];\n\n assert(\n `@weight for \"Hds::Text::Body\" with @size=${\n this.size\n } must be one of the following: ${availableWeights.join(\n ', '\n )}; received: ${weight}`,\n availableWeights.includes(weight)\n );\n\n return weight;\n }\n}\n"],"names":["AVAILABLE_SIZES","HdsTextSizeValues","ThreeHundred","TwoHundred","OneHundred","DEFAULT_SIZE","DEFAULT_WEIGHT","HdsTextWeightValues","Regular","AVAILABLE_WEIGHTS_PER_SIZE","Medium","Semibold","HdsTextBodyComponent","Component","size","args","parseInt","assert","join","includes","weight","availableWeights","setComponentTemplate","TEMPLATE"],"mappings":";;;;;;AACA,eAAe,kBAAkB,CAAC,mQAAmQ;;ACDrS;AACA;AACA;AACA;;AAwBaA,MAAAA,eAAe,GAAG,CAC7BC,iBAAiB,CAACC,YAAY,EAC9BD,iBAAiB,CAACE,UAAU,EAC5BF,iBAAiB,CAACG,UAAU,EAC7B;AACYC,MAAAA,YAAY,GAAGJ,iBAAiB,CAACE,WAAU;AAE3CG,MAAAA,cAAc,GAAGC,mBAAmB,CAACC,QAAO;AAKlD,MAAMC,0BAGZ,GAAG;AACF,EAAA,GAAG,EAAE,CACHF,mBAAmB,CAACC,OAAO,EAC3BD,mBAAmB,CAACG,MAAM,EAC1BH,mBAAmB,CAACI,QAAQ,CAC7B;AACD,EAAA,GAAG,EAAE,CACHJ,mBAAmB,CAACC,OAAO,EAC3BD,mBAAmB,CAACG,MAAM,EAC1BH,mBAAmB,CAACI,QAAQ,CAC7B;AACD,EAAA,GAAG,EAAE,CACHJ,mBAAmB,CAACC,OAAO,EAC3BD,mBAAmB,CAACG,MAAM,EAC1BH,mBAAmB,CAACI,QAAQ,CAAA;AAEhC,EAAC;AAoBc,MAAMC,oBAAoB,SAASC,SAAS,CAAuB;AAChF;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACE,IAAIC,IAAIA,GAAqB;IAC3B,IAAI;AAAEA,MAAAA,IAAI,GAAGT,YAAAA;KAAc,GAAG,IAAI,CAACU,IAAI,CAAA;;AAEvC;AACA,IAAA,IAAI,OAAOD,IAAI,KAAK,QAAQ,EAAE;AAC5BA,MAAAA,IAAI,GAAGE,QAAQ,CAACF,IAAI,EAAE,EAAE,CAAC,CAAA;AAC3B,KAAA;AAEAG,IAAAA,MAAM,CACJ,CAA6DjB,0DAAAA,EAAAA,eAAe,CAACkB,IAAI,CAC/E,IACF,CAAC,CAAA,YAAA,EAAeJ,IAAI,CAAA,CAAE,EACtBd,eAAe,CAACmB,QAAQ,CAACL,IAAI,CAC/B,CAAC,CAAA;AAED,IAAA,OAAOA,IAAI,CAAA;AACb,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACE,IAAIM,MAAMA,GAAmB;IAC3B,MAAM;AAAEA,MAAAA,MAAM,GAAGd,cAAAA;KAAgB,GAAG,IAAI,CAACS,IAAI,CAAA;AAE7C,IAAA,MAAMM,gBAAgB,GAAGZ,0BAA0B,CAAC,IAAI,CAACK,IAAI,CAAC,CAAA;IAE9DG,MAAM,CACJ,4CACE,IAAI,CAACH,IAAI,CACuBO,+BAAAA,EAAAA,gBAAgB,CAACH,IAAI,CACrD,IACF,CAAC,CAAeE,YAAAA,EAAAA,MAAM,EAAE,EACxBC,gBAAgB,CAACF,QAAQ,CAACC,MAAM,CAClC,CAAC,CAAA;AAED,IAAA,OAAOA,MAAM,CAAA;AACf,GAAA;AACF,CAAA;AAACE,oBAAA,CAAAC,QAAA,EAnDoBX,oBAAoB,CAAA;;;;"}
@@ -24,7 +24,7 @@ class HdsTextCodeComponent extends Component {
24
24
  * Sets the "size" for the text
25
25
  * Accepted values: see AVAILABLE_SIZES
26
26
  *
27
- * @type {string}
27
+ * @type {HdsTextCodeSizes}
28
28
  *
29
29
  * @param size
30
30
  */