@hashicorp/design-system-components 4.7.0 → 4.8.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 (185) hide show
  1. package/declarations/components/hds/alert/index.d.ts +1 -1
  2. package/declarations/components/hds/alert/index.d.ts.map +1 -1
  3. package/declarations/components/hds/app-header/home-link.d.ts +19 -0
  4. package/declarations/components/hds/app-header/home-link.d.ts.map +1 -0
  5. package/declarations/components/hds/app-header/index.d.ts +32 -0
  6. package/declarations/components/hds/app-header/index.d.ts.map +1 -0
  7. package/declarations/components/hds/app-header/menu-button.d.ts +19 -0
  8. package/declarations/components/hds/app-header/menu-button.d.ts.map +1 -0
  9. package/declarations/components/hds/application-state/footer.d.ts +7 -17
  10. package/declarations/components/hds/application-state/footer.d.ts.map +1 -1
  11. package/declarations/components/hds/application-state/header.d.ts +6 -3
  12. package/declarations/components/hds/application-state/header.d.ts.map +1 -1
  13. package/declarations/components/hds/application-state/index.d.ts +12 -3
  14. package/declarations/components/hds/application-state/index.d.ts.map +1 -1
  15. package/declarations/components/hds/application-state/media.d.ts +14 -0
  16. package/declarations/components/hds/application-state/media.d.ts.map +1 -0
  17. package/declarations/components/hds/application-state/types.d.ts +6 -0
  18. package/declarations/components/hds/application-state/types.d.ts.map +1 -0
  19. package/declarations/components/hds/badge-count/index.d.ts +1 -2
  20. package/declarations/components/hds/badge-count/index.d.ts.map +1 -1
  21. package/declarations/components/hds/breadcrumb/index.d.ts +18 -4
  22. package/declarations/components/hds/breadcrumb/index.d.ts.map +1 -1
  23. package/declarations/components/hds/breadcrumb/item.d.ts +26 -5
  24. package/declarations/components/hds/breadcrumb/item.d.ts.map +1 -1
  25. package/declarations/components/hds/breadcrumb/truncation.d.ts +15 -3
  26. package/declarations/components/hds/breadcrumb/truncation.d.ts.map +1 -1
  27. package/declarations/components/hds/copy/snippet/index.d.ts +1 -2
  28. package/declarations/components/hds/copy/snippet/index.d.ts.map +1 -1
  29. package/declarations/components/hds/dropdown/footer.d.ts +16 -1
  30. package/declarations/components/hds/dropdown/footer.d.ts.map +1 -1
  31. package/declarations/components/hds/dropdown/header.d.ts +16 -1
  32. package/declarations/components/hds/dropdown/header.d.ts.map +1 -1
  33. package/declarations/components/hds/dropdown/index.d.ts +56 -7
  34. package/declarations/components/hds/dropdown/index.d.ts.map +1 -1
  35. package/declarations/components/hds/dropdown/list-item/checkbox.d.ts +18 -3
  36. package/declarations/components/hds/dropdown/list-item/checkbox.d.ts.map +1 -1
  37. package/declarations/components/hds/dropdown/list-item/checkmark.d.ts +19 -3
  38. package/declarations/components/hds/dropdown/list-item/checkmark.d.ts.map +1 -1
  39. package/declarations/components/hds/dropdown/list-item/copy-item.d.ts +17 -5
  40. package/declarations/components/hds/dropdown/list-item/copy-item.d.ts.map +1 -1
  41. package/declarations/components/hds/dropdown/list-item/description.d.ts +13 -3
  42. package/declarations/components/hds/dropdown/list-item/description.d.ts.map +1 -1
  43. package/declarations/components/hds/dropdown/list-item/generic.d.ts +13 -1
  44. package/declarations/components/hds/dropdown/list-item/generic.d.ts.map +1 -1
  45. package/declarations/components/hds/dropdown/list-item/interactive.d.ts +23 -6
  46. package/declarations/components/hds/dropdown/list-item/interactive.d.ts.map +1 -1
  47. package/declarations/components/hds/dropdown/list-item/radio.d.ts +18 -3
  48. package/declarations/components/hds/dropdown/list-item/radio.d.ts.map +1 -1
  49. package/declarations/components/hds/dropdown/list-item/separator.d.ts +10 -1
  50. package/declarations/components/hds/dropdown/list-item/separator.d.ts.map +1 -1
  51. package/declarations/components/hds/dropdown/list-item/title.d.ts +13 -3
  52. package/declarations/components/hds/dropdown/list-item/title.d.ts.map +1 -1
  53. package/declarations/components/hds/dropdown/list-item/types.d.ts +10 -0
  54. package/declarations/components/hds/dropdown/list-item/types.d.ts.map +1 -0
  55. package/declarations/components/hds/dropdown/toggle/button.d.ts +34 -11
  56. package/declarations/components/hds/dropdown/toggle/button.d.ts.map +1 -1
  57. package/declarations/components/hds/dropdown/toggle/chevron.d.ts +9 -1
  58. package/declarations/components/hds/dropdown/toggle/chevron.d.ts.map +1 -1
  59. package/declarations/components/hds/dropdown/toggle/icon.d.ts +27 -8
  60. package/declarations/components/hds/dropdown/toggle/icon.d.ts.map +1 -1
  61. package/declarations/components/hds/dropdown/toggle/types.d.ts +20 -0
  62. package/declarations/components/hds/dropdown/toggle/types.d.ts.map +1 -0
  63. package/declarations/components/hds/dropdown/types.d.ts +12 -0
  64. package/declarations/components/hds/dropdown/types.d.ts.map +1 -0
  65. package/declarations/components/hds/flyout/index.d.ts.map +1 -1
  66. package/declarations/components/hds/flyout/types.d.ts +4 -0
  67. package/declarations/components/hds/flyout/types.d.ts.map +1 -1
  68. package/declarations/components/hds/form/checkbox/base.d.ts +1 -1
  69. package/declarations/components/hds/form/checkbox/base.d.ts.map +1 -1
  70. package/declarations/components/hds/icon-tile/index.d.ts +1 -1
  71. package/declarations/components/hds/icon-tile/index.d.ts.map +1 -1
  72. package/declarations/components/hds/link/standalone.d.ts +1 -1
  73. package/declarations/components/hds/link/standalone.d.ts.map +1 -1
  74. package/declarations/components/hds/menu-primitive/index.d.ts +32 -9
  75. package/declarations/components/hds/menu-primitive/index.d.ts.map +1 -1
  76. package/declarations/components/hds/modal/index.d.ts.map +1 -1
  77. package/declarations/components/hds/popover-primitive/index.d.ts.map +1 -1
  78. package/declarations/components/hds/segmented-group/index.d.ts +27 -1
  79. package/declarations/components/hds/segmented-group/index.d.ts.map +1 -1
  80. package/declarations/components/hds/side-nav/index.d.ts +1 -0
  81. package/declarations/components/hds/side-nav/index.d.ts.map +1 -1
  82. package/declarations/components.d.ts +11 -1
  83. package/declarations/components.d.ts.map +1 -1
  84. package/declarations/modifiers/hds-tooltip.d.ts +24 -8
  85. package/declarations/modifiers/hds-tooltip.d.ts.map +1 -1
  86. package/declarations/template-registry.d.ts +74 -0
  87. package/declarations/template-registry.d.ts.map +1 -1
  88. package/dist/_app_/components/hds/app-header/home-link.js +1 -0
  89. package/dist/_app_/components/hds/app-header/index.js +1 -0
  90. package/dist/_app_/components/hds/app-header/menu-button.js +1 -0
  91. package/dist/_app_/components/hds/application-state/media.js +1 -0
  92. package/dist/components/hds/alert/index.js.map +1 -1
  93. package/dist/components/hds/app-header/home-link.js +25 -0
  94. package/dist/components/hds/app-header/home-link.js.map +1 -0
  95. package/dist/components/hds/app-header/index.js +88 -0
  96. package/dist/components/hds/app-header/index.js.map +1 -0
  97. package/dist/components/hds/app-header/menu-button.js +26 -0
  98. package/dist/components/hds/app-header/menu-button.js.map +1 -0
  99. package/dist/components/hds/application-state/footer.js +5 -31
  100. package/dist/components/hds/application-state/footer.js.map +1 -1
  101. package/dist/components/hds/application-state/header.js +9 -5
  102. package/dist/components/hds/application-state/header.js.map +1 -1
  103. package/dist/components/hds/application-state/index.js +21 -5
  104. package/dist/components/hds/application-state/index.js.map +1 -1
  105. package/dist/components/hds/application-state/media.js +16 -0
  106. package/dist/components/hds/application-state/media.js.map +1 -0
  107. package/dist/components/hds/application-state/types.js +8 -0
  108. package/dist/components/hds/application-state/types.js.map +1 -0
  109. package/dist/components/hds/badge-count/index.js.map +1 -1
  110. package/dist/components/hds/breadcrumb/index.js +3 -3
  111. package/dist/components/hds/breadcrumb/index.js.map +1 -1
  112. package/dist/components/hds/breadcrumb/item.js +3 -3
  113. package/dist/components/hds/breadcrumb/item.js.map +1 -1
  114. package/dist/components/hds/breadcrumb/truncation.js +1 -1
  115. package/dist/components/hds/breadcrumb/truncation.js.map +1 -1
  116. package/dist/components/hds/copy/snippet/index.js.map +1 -1
  117. package/dist/components/hds/dialog-primitive/header.js.map +1 -1
  118. package/dist/components/hds/dropdown/footer.js +8 -2
  119. package/dist/components/hds/dropdown/footer.js.map +1 -1
  120. package/dist/components/hds/dropdown/header.js +8 -2
  121. package/dist/components/hds/dropdown/header.js.map +1 -1
  122. package/dist/components/hds/dropdown/index.js +13 -10
  123. package/dist/components/hds/dropdown/index.js.map +1 -1
  124. package/dist/components/hds/dropdown/list-item/checkbox.js +1 -1
  125. package/dist/components/hds/dropdown/list-item/checkbox.js.map +1 -1
  126. package/dist/components/hds/dropdown/list-item/checkmark.js +2 -2
  127. package/dist/components/hds/dropdown/list-item/checkmark.js.map +1 -1
  128. package/dist/components/hds/dropdown/list-item/copy-item.js +4 -4
  129. package/dist/components/hds/dropdown/list-item/copy-item.js.map +1 -1
  130. package/dist/components/hds/dropdown/list-item/description.js +2 -2
  131. package/dist/components/hds/dropdown/list-item/description.js.map +1 -1
  132. package/dist/components/hds/dropdown/list-item/generic.js +8 -2
  133. package/dist/components/hds/dropdown/list-item/generic.js.map +1 -1
  134. package/dist/components/hds/dropdown/list-item/interactive.js +7 -6
  135. package/dist/components/hds/dropdown/list-item/interactive.js.map +1 -1
  136. package/dist/components/hds/dropdown/list-item/radio.js +1 -1
  137. package/dist/components/hds/dropdown/list-item/radio.js.map +1 -1
  138. package/dist/components/hds/dropdown/list-item/separator.js +8 -2
  139. package/dist/components/hds/dropdown/list-item/separator.js.map +1 -1
  140. package/dist/components/hds/dropdown/list-item/title.js +2 -2
  141. package/dist/components/hds/dropdown/list-item/title.js.map +1 -1
  142. package/dist/components/hds/dropdown/list-item/types.js +13 -0
  143. package/dist/components/hds/dropdown/list-item/types.js.map +1 -0
  144. package/dist/components/hds/dropdown/toggle/button.js +11 -10
  145. package/dist/components/hds/dropdown/toggle/button.js.map +1 -1
  146. package/dist/components/hds/dropdown/toggle/chevron.js +8 -2
  147. package/dist/components/hds/dropdown/toggle/chevron.js.map +1 -1
  148. package/dist/components/hds/dropdown/toggle/icon.js +10 -9
  149. package/dist/components/hds/dropdown/toggle/icon.js.map +1 -1
  150. package/dist/components/hds/dropdown/toggle/types.js +23 -0
  151. package/dist/components/hds/dropdown/toggle/types.js.map +1 -0
  152. package/dist/components/hds/dropdown/types.js +15 -0
  153. package/dist/components/hds/dropdown/types.js.map +1 -0
  154. package/dist/components/hds/flyout/index.js.map +1 -1
  155. package/dist/components/hds/flyout/types.js +5 -0
  156. package/dist/components/hds/flyout/types.js.map +1 -1
  157. package/dist/components/hds/form/checkbox/base.js.map +1 -1
  158. package/dist/components/hds/icon-tile/index.js.map +1 -1
  159. package/dist/components/hds/link/standalone.js.map +1 -1
  160. package/dist/components/hds/menu-primitive/index.js +13 -7
  161. package/dist/components/hds/menu-primitive/index.js.map +1 -1
  162. package/dist/components/hds/modal/index.js.map +1 -1
  163. package/dist/components/hds/popover-primitive/index.js.map +1 -1
  164. package/dist/components/hds/segmented-group/index.js +8 -2
  165. package/dist/components/hds/segmented-group/index.js.map +1 -1
  166. package/dist/components/hds/side-nav/base.js +1 -1
  167. package/dist/components/hds/side-nav/base.js.map +1 -1
  168. package/dist/components/hds/side-nav/header/index.js +1 -1
  169. package/dist/components/hds/side-nav/header/index.js.map +1 -1
  170. package/dist/components/hds/side-nav/index.js +6 -1
  171. package/dist/components/hds/side-nav/index.js.map +1 -1
  172. package/dist/components.js +10 -0
  173. package/dist/components.js.map +1 -1
  174. package/dist/modifiers/hds-tooltip.js +42 -27
  175. package/dist/modifiers/hds-tooltip.js.map +1 -1
  176. package/dist/styles/@hashicorp/design-system-components.css +674 -58
  177. package/dist/styles/@hashicorp/design-system-components.scss +1 -0
  178. package/dist/styles/components/app-frame.scss +13 -0
  179. package/dist/styles/components/app-header.scss +106 -0
  180. package/dist/styles/components/application-state.scss +56 -15
  181. package/dist/styles/components/side-nav/header.scss +13 -41
  182. package/dist/styles/components/side-nav/main.scss +29 -1
  183. package/dist/styles/components/side-nav/toggle-button.scss +6 -1
  184. package/dist/styles/mixins/_interactive-dark-theme.scss +106 -0
  185. package/package.json +7 -2
@@ -1 +1 @@
1
- {"version":3,"file":"standalone.js","sources":["../../../../src/components/hds/link/standalone.hbs","../../../../src/components/hds/link/standalone.ts"],"sourcesContent":["import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"<Hds::Interactive\\n class={{this.classNames}}\\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>\\n {{#if (eq this.iconPosition \\\"leading\\\")}}\\n <span class=\\\"hds-link-standalone__icon\\\">\\n <FlightIcon @name={{this.icon}} @size={{this.iconSize}} @stretched={{true}} />\\n </span>\\n <span class=\\\"hds-link-standalone__text\\\">\\n {{this.text}}\\n </span>\\n {{else}}\\n <span class=\\\"hds-link-standalone__text\\\">\\n {{this.text}}\\n </span>\\n <span class=\\\"hds-link-standalone__icon\\\">\\n <FlightIcon @name={{this.icon}} @size={{this.iconSize}} @stretched={{true}} />\\n </span>\\n {{/if}}\\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';\nimport {\n HdsLinkIconPositionValues,\n HdsLinkColorValues,\n HdsLinkStandaloneSizeValues,\n} from './types.ts';\n\nimport type { HdsInteractiveSignature } from '../interactive/';\nimport type {\n HdsLinkColors,\n HdsLinkIconPositions,\n HdsLinkStandaloneSizes,\n} from './types.ts';\nimport type { FlightIconSignature } from '@hashicorp/ember-flight-icons/components/flight-icon';\n\nexport interface HdsLinkStandaloneSignature {\n Args: HdsInteractiveSignature['Args'] & {\n size?: HdsLinkStandaloneSizes;\n color?: HdsLinkColors;\n text: string;\n icon: FlightIconSignature['Args']['name'];\n iconPosition?: HdsLinkIconPositions;\n };\n Element: HdsInteractiveSignature['Element'];\n}\n\nexport const DEFAULT_ICONPOSITION = HdsLinkIconPositionValues.Leading;\nexport const DEFAULT_COLOR = HdsLinkColorValues.Primary;\nexport const DEFAULT_SIZE = HdsLinkStandaloneSizeValues.Medium;\nexport const ICONPOSITIONS: string[] = Object.values(HdsLinkIconPositionValues);\nexport const COLORS: string[] = Object.values(HdsLinkColorValues);\nexport const SIZES: string[] = Object.values(HdsLinkStandaloneSizeValues);\n\nexport default class HdsLinkStandaloneComponent extends Component<HdsLinkStandaloneSignature> {\n constructor(owner: unknown, args: HdsLinkStandaloneSignature['Args']) {\n super(owner, args);\n if (!(this.args.href || this.args.route)) {\n assert('@href or @route must be defined for <Hds::Link::Standalone>');\n }\n }\n\n /**\n * @param text\n * @type {string}\n * @description The text of the link. If no text value is defined an error will be thrown.\n */\n get text(): string {\n const { text } = this.args;\n\n assert(\n '@text for \"Hds::Link::Standalone\" must have a valid value',\n text !== undefined\n );\n\n return 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(): HdsLinkColors {\n const { color = DEFAULT_COLOR } = this.args;\n\n assert(\n `@color for \"Hds::Link::Standalone\" must be one of the following: ${COLORS.join(\n ', '\n )}; received: ${color}`,\n COLORS.includes(color)\n );\n\n return color;\n }\n\n /**\n * @param icon\n * @type {string|null}\n * @default null\n * @description The name of the icon to be used. An icon name must be defined.\n */\n get icon(): FlightIconSignature['Args']['name'] {\n const { icon } = this.args;\n\n assert(\n '@icon for \"Hds::Link::Standalone\" must have a valid value',\n icon !== undefined\n );\n\n return icon;\n }\n\n /**\n * @param iconPosition\n * @type {HdsLinkIconPositions}\n * @default leading\n * @description Positions the icon before or after the text; allowed values are `leading` or `trailing`\n */\n get iconPosition(): HdsLinkIconPositions {\n const { iconPosition = DEFAULT_ICONPOSITION } = this.args;\n\n assert(\n `@iconPosition for \"Hds::Link::Standalone\" must be one of the following: ${ICONPOSITIONS.join(\n ', '\n )}; received: ${iconPosition}`,\n ICONPOSITIONS.includes(iconPosition)\n );\n\n return iconPosition;\n }\n\n /**\n * @param size\n * @type {HdsLinkStandaloneSizes}\n * @default medium\n * @description The size of the standalone link; acceptable values are `small`, `medium`, and `large`\n */\n get size(): HdsLinkStandaloneSizes {\n const { size = DEFAULT_SIZE } = this.args;\n\n assert(\n `@size for \"Hds::Link::Standalone\" must be one of the following: ${SIZES.join(\n ', '\n )}; received: ${size}`,\n SIZES.includes(size)\n );\n\n return size;\n }\n\n /**\n * @param iconSize\n * @type {string}\n * @default 16\n * @description ensures that the correct icon size is used. Automatically calculated.\n */\n get iconSize(): '24' | '16' {\n if (this.args.size === 'large') {\n return '24';\n } else {\n return '16';\n }\n }\n\n /**\n * Get the class names to apply to the component.\n * @method LinkStandalone#classNames\n * @return {string} The \"class\" attribute to apply to the component.\n */\n get classNames(): string {\n const classes = ['hds-link-standalone'];\n\n // add a class based on the @size argument\n classes.push(`hds-link-standalone--size-${this.size}`);\n\n // add a class based on the @color argument\n classes.push(`hds-link-standalone--color-${this.color}`);\n\n // add a class based on the @iconPosition argument\n classes.push(`hds-link-standalone--icon-position-${this.iconPosition}`);\n\n return classes.join(' ');\n }\n}\n"],"names":["DEFAULT_ICONPOSITION","HdsLinkIconPositionValues","Leading","DEFAULT_COLOR","HdsLinkColorValues","Primary","DEFAULT_SIZE","HdsLinkStandaloneSizeValues","Medium","ICONPOSITIONS","Object","values","COLORS","SIZES","HdsLinkStandaloneComponent","Component","constructor","owner","args","href","route","assert","text","undefined","color","join","includes","icon","iconPosition","size","iconSize","classNames","classes","push","setComponentTemplate","TEMPLATE"],"mappings":"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"}
1
+ {"version":3,"file":"standalone.js","sources":["../../../../src/components/hds/link/standalone.hbs","../../../../src/components/hds/link/standalone.ts"],"sourcesContent":["import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"<Hds::Interactive\\n class={{this.classNames}}\\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>\\n {{#if (eq this.iconPosition \\\"leading\\\")}}\\n <span class=\\\"hds-link-standalone__icon\\\">\\n <FlightIcon @name={{this.icon}} @size={{this.iconSize}} @stretched={{true}} />\\n </span>\\n <span class=\\\"hds-link-standalone__text\\\">\\n {{this.text}}\\n </span>\\n {{else}}\\n <span class=\\\"hds-link-standalone__text\\\">\\n {{this.text}}\\n </span>\\n <span class=\\\"hds-link-standalone__icon\\\">\\n <FlightIcon @name={{this.icon}} @size={{this.iconSize}} @stretched={{true}} />\\n </span>\\n {{/if}}\\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';\nimport {\n HdsLinkIconPositionValues,\n HdsLinkColorValues,\n HdsLinkStandaloneSizeValues,\n} from './types.ts';\n\nimport type { HdsInteractiveSignature } from '../interactive/';\nimport type {\n HdsLinkColors,\n HdsLinkIconPositions,\n HdsLinkStandaloneSizes,\n} from './types.ts';\nimport type { FlightIconSignature } from '@hashicorp/ember-flight-icons/components/flight-icon';\n\nexport interface HdsLinkStandaloneSignature {\n Args: HdsInteractiveSignature['Args'] & {\n size?: HdsLinkStandaloneSizes;\n color?: HdsLinkColors;\n text: string;\n icon: FlightIconSignature['Args']['name'];\n iconPosition?: HdsLinkIconPositions;\n };\n Element: HdsInteractiveSignature['Element'];\n}\n\nexport const DEFAULT_ICONPOSITION = HdsLinkIconPositionValues.Leading;\nexport const DEFAULT_COLOR = HdsLinkColorValues.Primary;\nexport const DEFAULT_SIZE = HdsLinkStandaloneSizeValues.Medium;\nexport const ICONPOSITIONS: string[] = Object.values(HdsLinkIconPositionValues);\nexport const COLORS: string[] = Object.values(HdsLinkColorValues);\nexport const SIZES: string[] = Object.values(HdsLinkStandaloneSizeValues);\n\nexport default class HdsLinkStandaloneComponent extends Component<HdsLinkStandaloneSignature> {\n constructor(owner: unknown, args: HdsLinkStandaloneSignature['Args']) {\n super(owner, args);\n if (!(this.args.href || this.args.route)) {\n assert('@href or @route must be defined for <Hds::Link::Standalone>');\n }\n }\n\n /**\n * @param text\n * @type {string}\n * @description The text of the link. If no text value is defined an error will be thrown.\n */\n get text(): string {\n const { text } = this.args;\n\n assert(\n '@text for \"Hds::Link::Standalone\" must have a valid value',\n text !== undefined\n );\n\n return 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(): HdsLinkColors {\n const { color = DEFAULT_COLOR } = this.args;\n\n assert(\n `@color for \"Hds::Link::Standalone\" must be one of the following: ${COLORS.join(\n ', '\n )}; received: ${color}`,\n COLORS.includes(color)\n );\n\n return color;\n }\n\n /**\n * @param icon\n * @type {string|null}\n * @default null\n * @description The name of the icon to be used. An icon name must be defined.\n */\n get icon(): FlightIconSignature['Args']['name'] {\n const { icon } = this.args;\n\n assert(\n '@icon for \"Hds::Link::Standalone\" must have a valid value',\n icon !== undefined\n );\n\n return icon;\n }\n\n /**\n * @param iconPosition\n * @type {HdsLinkIconPositions}\n * @default leading\n * @description Positions the icon before or after the text; allowed values are `leading` or `trailing`\n */\n get iconPosition(): HdsLinkIconPositions {\n const { iconPosition = DEFAULT_ICONPOSITION } = this.args;\n\n assert(\n `@iconPosition for \"Hds::Link::Standalone\" must be one of the following: ${ICONPOSITIONS.join(\n ', '\n )}; received: ${iconPosition}`,\n ICONPOSITIONS.includes(iconPosition)\n );\n\n return iconPosition;\n }\n\n /**\n * @param size\n * @type {HdsLinkStandaloneSizes}\n * @default medium\n * @description The size of the standalone link; acceptable values are `small`, `medium`, and `large`\n */\n get size(): HdsLinkStandaloneSizes {\n const { size = DEFAULT_SIZE } = this.args;\n\n assert(\n `@size for \"Hds::Link::Standalone\" must be one of the following: ${SIZES.join(\n ', '\n )}; received: ${size}`,\n SIZES.includes(size)\n );\n\n return size;\n }\n\n /**\n * @param iconSize\n * @type {string}\n * @default 16\n * @description ensures that the correct icon size is used. Automatically calculated.\n */\n get iconSize(): FlightIconSignature['Args']['size'] {\n if (this.args.size === 'large') {\n return '24';\n } else {\n return '16';\n }\n }\n\n /**\n * Get the class names to apply to the component.\n * @method LinkStandalone#classNames\n * @return {string} The \"class\" attribute to apply to the component.\n */\n get classNames(): string {\n const classes = ['hds-link-standalone'];\n\n // add a class based on the @size argument\n classes.push(`hds-link-standalone--size-${this.size}`);\n\n // add a class based on the @color argument\n classes.push(`hds-link-standalone--color-${this.color}`);\n\n // add a class based on the @iconPosition argument\n classes.push(`hds-link-standalone--icon-position-${this.iconPosition}`);\n\n return classes.join(' ');\n }\n}\n"],"names":["DEFAULT_ICONPOSITION","HdsLinkIconPositionValues","Leading","DEFAULT_COLOR","HdsLinkColorValues","Primary","DEFAULT_SIZE","HdsLinkStandaloneSizeValues","Medium","ICONPOSITIONS","Object","values","COLORS","SIZES","HdsLinkStandaloneComponent","Component","constructor","owner","args","href","route","assert","text","undefined","color","join","includes","icon","iconPosition","size","iconSize","classNames","classes","push","setComponentTemplate","TEMPLATE"],"mappings":"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"}
@@ -6,15 +6,16 @@ import { schedule } from '@ember/runloop';
6
6
  import { precompileTemplate } from '@ember/template-compilation';
7
7
  import { setComponentTemplate } from '@ember/component';
8
8
 
9
- var TEMPLATE = precompileTemplate("{{! @glint-nocheck: not typesafe yet }}\n{{!\n Copyright (c) HashiCorp, Inc.\n SPDX-License-Identifier: MPL-2.0\n}}\n{{! template-lint-disable no-invalid-interactive }}\n<div\n class=\"hds-menu-primitive\"\n ...attributes\n {{did-insert this.didInsert}}\n {{on \"focusout\" this.onFocusOut}}\n {{on \"keyup\" this.onKeyUp}}\n>\n <div class=\"hds-menu-primitive__toggle\" tabindex=\"-1\">\n {{yield (hash onClickToggle=this.onClickToggle isOpen=this.isOpen) to=\"toggle\"}}\n </div>\n {{#if this.isOpen}}\n <div class=\"hds-menu-primitive__content\" tabindex=\"-1\">\n {{yield (hash close=this.close) to=\"content\"}}\n </div>\n {{/if}}\n</div>\n{{! template-lint-enable no-invalid-interactive }}");
9
+ var TEMPLATE = precompileTemplate("{{!\n Copyright (c) HashiCorp, Inc.\n SPDX-License-Identifier: MPL-2.0\n}}\n{{! template-lint-disable no-invalid-interactive }}\n<div\n class=\"hds-menu-primitive\"\n ...attributes\n {{did-insert this.didInsert}}\n {{on \"focusout\" this.onFocusOut}}\n {{on \"keyup\" this.onKeyUp}}\n>\n <div class=\"hds-menu-primitive__toggle\" tabindex=\"-1\">\n {{yield (hash onClickToggle=this.onClickToggle isOpen=this.isOpen) to=\"toggle\"}}\n </div>\n {{#if this.isOpen}}\n <div class=\"hds-menu-primitive__content\" tabindex=\"-1\">\n {{yield (hash close=this.close) to=\"content\"}}\n </div>\n {{/if}}\n</div>\n{{! template-lint-enable no-invalid-interactive }}");
10
10
 
11
- var _class, _descriptor, _descriptor2;
12
- let HdsMenuPrimitiveComponent = (_class = class HdsMenuPrimitiveComponent extends Component {
11
+ var _class, _descriptor, _descriptor2, _descriptor3;
12
+ let MenuPrimitiveComponent = (_class = class MenuPrimitiveComponent extends Component {
13
13
  constructor(...args) {
14
14
  super(...args);
15
15
  _initializerDefineProperty(this, "isOpen", _descriptor, this);
16
16
  // notice: if in the future we need to add a "@isOpen" prop to control the status from outside (eg to have the MenuPrimitive opened on render) just add "this.args.isOpen" here to initalize the variable
17
17
  _initializerDefineProperty(this, "toggleRef", _descriptor2, this);
18
+ _initializerDefineProperty(this, "element", _descriptor3, this);
18
19
  }
19
20
  didInsert(element) {
20
21
  this.element = element;
@@ -26,7 +27,7 @@ let HdsMenuPrimitiveComponent = (_class = class HdsMenuPrimitiveComponent extend
26
27
  }
27
28
  this.isOpen = !this.isOpen;
28
29
  // we explicitly apply a focus state to the toggle element to overcome a bug in WebKit (see https://github.com/hashicorp/design-system/commit/40cd7f6b3cb15c45f9a1235fafd0fb3ed58e6e62)
29
- this.toggleRef.focus();
30
+ this.toggleRef?.focus();
30
31
  }
31
32
  onFocusOut(event) {
32
33
  // due to inconsistent implementation of relatedTarget across browsers we use the activeElement as a fallback
@@ -38,7 +39,7 @@ let HdsMenuPrimitiveComponent = (_class = class HdsMenuPrimitiveComponent extend
38
39
  onKeyUp(event) {
39
40
  if (event.key === 'Escape') {
40
41
  this.close();
41
- this.toggleRef.focus();
42
+ this.toggleRef?.focus();
42
43
  }
43
44
  }
44
45
  close() {
@@ -61,8 +62,13 @@ let HdsMenuPrimitiveComponent = (_class = class HdsMenuPrimitiveComponent extend
61
62
  enumerable: true,
62
63
  writable: true,
63
64
  initializer: null
65
+ }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, "element", [tracked], {
66
+ configurable: true,
67
+ enumerable: true,
68
+ writable: true,
69
+ initializer: null
64
70
  }), _applyDecoratedDescriptor(_class.prototype, "didInsert", [action], Object.getOwnPropertyDescriptor(_class.prototype, "didInsert"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "onClickToggle", [action], Object.getOwnPropertyDescriptor(_class.prototype, "onClickToggle"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "onFocusOut", [action], Object.getOwnPropertyDescriptor(_class.prototype, "onFocusOut"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "onKeyUp", [action], Object.getOwnPropertyDescriptor(_class.prototype, "onKeyUp"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "close", [action], Object.getOwnPropertyDescriptor(_class.prototype, "close"), _class.prototype)), _class);
65
- setComponentTemplate(TEMPLATE, HdsMenuPrimitiveComponent);
71
+ setComponentTemplate(TEMPLATE, MenuPrimitiveComponent);
66
72
 
67
- export { HdsMenuPrimitiveComponent as default };
73
+ export { MenuPrimitiveComponent as default };
68
74
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/hds/menu-primitive/index.hbs","../../../../src/components/hds/menu-primitive/index.js"],"sourcesContent":["import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"{{! @glint-nocheck: not typesafe yet }}\\n{{!\\n Copyright (c) HashiCorp, Inc.\\n SPDX-License-Identifier: MPL-2.0\\n}}\\n{{! template-lint-disable no-invalid-interactive }}\\n<div\\n class=\\\"hds-menu-primitive\\\"\\n ...attributes\\n {{did-insert this.didInsert}}\\n {{on \\\"focusout\\\" this.onFocusOut}}\\n {{on \\\"keyup\\\" this.onKeyUp}}\\n>\\n <div class=\\\"hds-menu-primitive__toggle\\\" tabindex=\\\"-1\\\">\\n {{yield (hash onClickToggle=this.onClickToggle isOpen=this.isOpen) to=\\\"toggle\\\"}}\\n </div>\\n {{#if this.isOpen}}\\n <div class=\\\"hds-menu-primitive__content\\\" tabindex=\\\"-1\\\">\\n {{yield (hash close=this.close) to=\\\"content\\\"}}\\n </div>\\n {{/if}}\\n</div>\\n{{! template-lint-enable no-invalid-interactive }}\")","/**\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 { schedule } from '@ember/runloop';\n\nexport default class HdsMenuPrimitiveComponent extends Component {\n @tracked isOpen; // notice: if in the future we need to add a \"@isOpen\" prop to control the status from outside (eg to have the MenuPrimitive opened on render) just add \"this.args.isOpen\" here to initalize the variable\n @tracked toggleRef;\n\n @action\n didInsert(element) {\n this.element = element;\n }\n\n @action\n onClickToggle(event) {\n // we store a reference to the DOM node that has the \"onClickToggle\" event associated with it\n if (!this.toggleRef) {\n this.toggleRef = event.currentTarget;\n }\n this.isOpen = !this.isOpen;\n // we explicitly apply a focus state to the toggle element to overcome a bug in WebKit (see https://github.com/hashicorp/design-system/commit/40cd7f6b3cb15c45f9a1235fafd0fb3ed58e6e62)\n this.toggleRef.focus();\n }\n\n @action\n onFocusOut(event) {\n // due to inconsistent implementation of relatedTarget across browsers we use the activeElement as a fallback\n // if the related target is not part of the disclosed content we close the disclosed container\n if (!this.element.contains(event.relatedTarget || document.activeElement)) {\n this.close();\n }\n }\n\n @action\n onKeyUp(event) {\n if (event.key === 'Escape') {\n this.close();\n this.toggleRef.focus();\n }\n }\n\n @action\n close() {\n // we schedule this afterRender to avoid an error in tests caused by updating `isOpen` multiple times in the same computation\n schedule('afterRender', () => {\n this.isOpen = false;\n // we call the \"onClose\" callback if it exists (and is a function)\n if (this.args.onClose && typeof this.args.onClose === 'function') {\n this.args.onClose();\n }\n });\n }\n}\n"],"names":["HdsMenuPrimitiveComponent","_class","Component","constructor","args","_initializerDefineProperty","_descriptor","_descriptor2","didInsert","element","onClickToggle","event","toggleRef","currentTarget","isOpen","focus","onFocusOut","contains","relatedTarget","document","activeElement","close","onKeyUp","key","schedule","onClose","_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/menu-primitive/index.hbs","../../../../src/components/hds/menu-primitive/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-interactive }}\\n<div\\n class=\\\"hds-menu-primitive\\\"\\n ...attributes\\n {{did-insert this.didInsert}}\\n {{on \\\"focusout\\\" this.onFocusOut}}\\n {{on \\\"keyup\\\" this.onKeyUp}}\\n>\\n <div class=\\\"hds-menu-primitive__toggle\\\" tabindex=\\\"-1\\\">\\n {{yield (hash onClickToggle=this.onClickToggle isOpen=this.isOpen) to=\\\"toggle\\\"}}\\n </div>\\n {{#if this.isOpen}}\\n <div class=\\\"hds-menu-primitive__content\\\" tabindex=\\\"-1\\\">\\n {{yield (hash close=this.close) to=\\\"content\\\"}}\\n </div>\\n {{/if}}\\n</div>\\n{{! template-lint-enable no-invalid-interactive }}\")","/**\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 { schedule } from '@ember/runloop';\n\nexport interface MenuPrimitiveSignature {\n Args: {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onClose?: (...args: any[]) => void;\n };\n Blocks: {\n toggle?: [\n {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onClickToggle: (event: MouseEvent, ...args: any[]) => void;\n isOpen?: boolean;\n },\n ];\n content?: [\n {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n close: (...args: any[]) => void;\n },\n ];\n };\n Element: HTMLDivElement;\n}\n\nexport default class MenuPrimitiveComponent extends Component<MenuPrimitiveSignature> {\n @tracked isOpen: boolean | undefined; // notice: if in the future we need to add a \"@isOpen\" prop to control the status from outside (eg to have the MenuPrimitive opened on render) just add \"this.args.isOpen\" here to initalize the variable\n @tracked toggleRef: HTMLElement | undefined;\n @tracked element!: HTMLElement;\n\n @action\n didInsert(element: HTMLElement): void {\n this.element = element;\n }\n\n @action\n onClickToggle(event: MouseEvent): void {\n // we store a reference to the DOM node that has the \"onClickToggle\" event associated with it\n if (!this.toggleRef) {\n this.toggleRef = event.currentTarget as HTMLElement;\n }\n this.isOpen = !this.isOpen;\n // we explicitly apply a focus state to the toggle element to overcome a bug in WebKit (see https://github.com/hashicorp/design-system/commit/40cd7f6b3cb15c45f9a1235fafd0fb3ed58e6e62)\n this.toggleRef?.focus();\n }\n\n @action\n onFocusOut(event: FocusEvent): void {\n // due to inconsistent implementation of relatedTarget across browsers we use the activeElement as a fallback\n // if the related target is not part of the disclosed content we close the disclosed container\n if (\n !this.element.contains(\n (event.relatedTarget as Node) || (document.activeElement as Node)\n )\n ) {\n this.close();\n }\n }\n\n @action\n onKeyUp(event: KeyboardEvent): void {\n if (event.key === 'Escape') {\n this.close();\n this.toggleRef?.focus();\n }\n }\n\n @action\n close(): void {\n // we schedule this afterRender to avoid an error in tests caused by updating `isOpen` multiple times in the same computation\n schedule('afterRender', (): void => {\n this.isOpen = false;\n // we call the \"onClose\" callback if it exists (and is a function)\n if (this.args.onClose && typeof this.args.onClose === 'function') {\n this.args.onClose();\n }\n });\n }\n}\n"],"names":["MenuPrimitiveComponent","_class","Component","constructor","args","_initializerDefineProperty","_descriptor","_descriptor2","_descriptor3","didInsert","element","onClickToggle","event","toggleRef","currentTarget","isOpen","focus","onFocusOut","contains","relatedTarget","document","activeElement","close","onKeyUp","key","schedule","onClose","_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/modal/index.hbs","../../../../src/components/hds/modal/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::DialogPrimitive::Wrapper\\n class={{this.classNames}}\\n ...attributes\\n aria-labelledby={{this.id}}\\n {{did-insert this.didInsert}}\\n {{will-destroy this.willDestroyNode}}\\n {{! @glint-expect-error - https://github.com/josemarluedke/ember-focus-trap/issues/86 }}\\n {{focus-trap isActive=this.isOpen focusTrapOptions=(hash onDeactivate=this.onDismiss clickOutsideDeactivates=true)}}\\n>\\n <:header>\\n {{yield\\n (hash\\n Header=(component\\n \\\"hds/dialog-primitive/header\\\" id=this.id onDismiss=this.onDismiss contextualClassPrefix=\\\"hds-modal\\\"\\n )\\n )\\n }}\\n </:header>\\n <:body>\\n {{yield (hash Body=(component \\\"hds/dialog-primitive/body\\\" contextualClass=\\\"hds-modal__body\\\"))}}\\n </:body>\\n <:footer>\\n {{yield\\n (hash\\n Footer=(component \\\"hds/dialog-primitive/footer\\\" onDismiss=this.onDismiss contextualClass=\\\"hds-modal__footer\\\")\\n )\\n }}\\n </:footer>\\n</Hds::DialogPrimitive::Wrapper>\\n\\n{{#if this.isOpen}}\\n <Hds::DialogPrimitive::Overlay @contextualClass=\\\"hds-modal__overlay\\\" />\\n{{/if}}\")","/**\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 { getElementId } from '../../../utils/hds-get-element-id.ts';\nimport { buildWaiter } from '@ember/test-waiters';\n\nimport type { WithBoundArgs } from '@glint/template';\nimport type { HdsModalSizes, HdsModalColors } from './types.ts';\n\nimport HdsDialogPrimitiveHeaderComponent from '../dialog-primitive/header.ts';\nimport HdsDialogPrimitiveBodyComponent from '../dialog-primitive/body.ts';\nimport HdsDialogPrimitiveFooterComponent from '../dialog-primitive/footer.ts';\nimport { HdsModalSizeValues, HdsModalColorValues } from './types.ts';\n\nconst waiter = buildWaiter('@hashicorp/design-system-components:modal');\n\nexport const DEFAULT_SIZE = HdsModalSizeValues.Medium;\nexport const DEFAULT_COLOR = HdsModalColorValues.Neutral;\n\nexport const SIZES: string[] = Object.values(HdsModalSizeValues);\nexport const COLORS: string[] = Object.values(HdsModalColorValues);\n\nexport interface HdsModalIndexSignature {\n Args: {\n isDismissDisabled?: boolean;\n size?: HdsModalSizes;\n color?: HdsModalColors;\n onOpen?: () => void;\n onClose?: (event: Event) => void;\n };\n Blocks: {\n default: [\n {\n Header?: WithBoundArgs<\n typeof HdsDialogPrimitiveHeaderComponent,\n 'id' | 'onDismiss' | 'contextualClassPrefix'\n >;\n Body?: WithBoundArgs<\n typeof HdsDialogPrimitiveBodyComponent,\n 'contextualClass'\n >;\n Footer?: WithBoundArgs<\n typeof HdsDialogPrimitiveFooterComponent,\n 'onDismiss' | 'contextualClass'\n >;\n },\n ];\n };\n Element: HTMLDialogElement;\n}\n\nexport default class HdsModalIndexComponent extends Component<HdsModalIndexSignature> {\n @tracked isOpen = false;\n @tracked isDismissDisabled = this.args.isDismissDisabled ?? false;\n element!: HTMLDialogElement;\n body!: HTMLElement;\n bodyInitialOverflowValue = '';\n\n /**\n * Sets the size of the modal dialog\n * Accepted values: small, medium, large\n *\n * @param size\n * @type {string}\n * @default 'medium'\n */\n get size(): HdsModalSizes {\n const { size = DEFAULT_SIZE } = this.args;\n\n assert(\n `@size for \"Hds::Modal\" must be one of the following: ${SIZES.join(\n ', '\n )}; received: ${size}`,\n SIZES.includes(size)\n );\n\n return size;\n }\n\n /**\n * Sets the color of the modal dialog\n * Accepted values: neutral, warning, critical\n *\n * @param color\n * @type {string}\n * @default 'neutral'\n */\n get color(): HdsModalColors {\n const { color = DEFAULT_COLOR } = this.args;\n\n assert(\n `@color for \"Hds::Modal\" must be one of the following: ${COLORS.join(\n ', '\n )}; received: ${color}`,\n COLORS.includes(color)\n );\n\n return color;\n }\n\n /**\n * Calculates the unique ID to assign to the title\n */\n get id() {\n return getElementId(this);\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-modal'];\n\n // add a class based on the @size argument\n classes.push(`hds-modal--size-${this.size}`);\n\n // add a class based on the @color argument\n classes.push(`hds-modal--color-${this.color}`);\n\n return classes.join(' ');\n }\n\n @action registerOnCloseCallback(event: Event) {\n if (\n !this.isDismissDisabled &&\n this.args.onClose &&\n typeof this.args.onClose === 'function'\n ) {\n this.args.onClose(event);\n }\n\n // If the dismissal of the modal is disabled, we keep the modal open/visible otherwise we mark it as closed\n if (this.isDismissDisabled) {\n // If, in a chain of events, the element is not attached to the DOM, the `showModal` would fail\n // so we add this safeguard condition that checks for the `<dialog>` to have a parent\n if (this.element.parentElement) {\n // As there is no way to `preventDefault` on `close` events, we call the `showModal` function\n // preserving the state of the modal dialog\n this.element.showModal();\n }\n } else {\n this.isOpen = false;\n }\n }\n\n @action\n didInsert(element: HTMLDialogElement) {\n // Store references of `<dialog>` and `<body>` elements\n this.element = element;\n this.body = document.body;\n\n if (this.body) {\n // Store the initial `overflow` value of `<body>` so we can reset to it\n this.bodyInitialOverflowValue =\n this.body.style.getPropertyValue('overflow');\n }\n\n // Register \"onClose\" callback function to be called when a native 'close' event is dispatched\n this.element.addEventListener('close', this.registerOnCloseCallback, true);\n\n // If the modal dialog is not already open\n if (!this.element.open) {\n this.open();\n }\n }\n\n @action\n willDestroyNode() {\n if (this.element) {\n this.element.removeEventListener(\n 'close',\n this.registerOnCloseCallback,\n true\n );\n }\n }\n\n @action\n open() {\n // Make modal dialog visible using the native `showModal` method\n this.element.showModal();\n this.isOpen = true;\n\n // Prevent page from scrolling when the dialog is open\n if (this.body) this.body.style.setProperty('overflow', 'hidden');\n\n // Call \"onOpen\" callback function\n if (this.args.onOpen && typeof this.args.onOpen === 'function') {\n this.args.onOpen();\n }\n }\n\n @action\n async onDismiss() {\n // allow ember test helpers to be aware of when the `close` event fires\n // when using `click` or other helpers from '@ember/test-helpers'\n // Notice: this code will get stripped out in production builds (DEBUG evaluates to `true` in dev/test builds, but `false` in prod builds)\n if (this.element.open) {\n const token = waiter.beginAsync();\n const listener = () => {\n waiter.endAsync(token);\n this.element.removeEventListener('close', listener);\n };\n this.element.addEventListener('close', listener);\n }\n\n // Make modal dialog invisible using the native `close` method\n this.element.close();\n\n // Reset page `overflow` property\n if (this.body) {\n this.body.style.removeProperty('overflow');\n if (this.bodyInitialOverflowValue === '') {\n if (this.body.style.length === 0) {\n this.body.removeAttribute('style');\n }\n } else {\n this.body.style.setProperty('overflow', this.bodyInitialOverflowValue);\n }\n }\n }\n}\n"],"names":["waiter","buildWaiter","DEFAULT_SIZE","HdsModalSizeValues","Medium","DEFAULT_COLOR","HdsModalColorValues","Neutral","SIZES","Object","values","COLORS","HdsModalIndexComponent","_class","Component","constructor","args","_initializerDefineProperty","_descriptor","_descriptor2","_defineProperty","size","assert","join","includes","color","id","getElementId","classNames","classes","push","registerOnCloseCallback","event","isDismissDisabled","onClose","element","parentElement","showModal","isOpen","didInsert","body","document","bodyInitialOverflowValue","style","getPropertyValue","addEventListener","open","willDestroyNode","removeEventListener","setProperty","onOpen","onDismiss","token","beginAsync","listener","endAsync","close","removeProperty","length","removeAttribute","_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/modal/index.hbs","../../../../src/components/hds/modal/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::DialogPrimitive::Wrapper\\n class={{this.classNames}}\\n ...attributes\\n aria-labelledby={{this.id}}\\n {{did-insert this.didInsert}}\\n {{will-destroy this.willDestroyNode}}\\n {{! @glint-expect-error - https://github.com/josemarluedke/ember-focus-trap/issues/86 }}\\n {{focus-trap isActive=this.isOpen focusTrapOptions=(hash onDeactivate=this.onDismiss clickOutsideDeactivates=true)}}\\n>\\n <:header>\\n {{yield\\n (hash\\n Header=(component\\n \\\"hds/dialog-primitive/header\\\" id=this.id onDismiss=this.onDismiss contextualClassPrefix=\\\"hds-modal\\\"\\n )\\n )\\n }}\\n </:header>\\n <:body>\\n {{yield (hash Body=(component \\\"hds/dialog-primitive/body\\\" contextualClass=\\\"hds-modal__body\\\"))}}\\n </:body>\\n <:footer>\\n {{yield\\n (hash\\n Footer=(component \\\"hds/dialog-primitive/footer\\\" onDismiss=this.onDismiss contextualClass=\\\"hds-modal__footer\\\")\\n )\\n }}\\n </:footer>\\n</Hds::DialogPrimitive::Wrapper>\\n\\n{{#if this.isOpen}}\\n <Hds::DialogPrimitive::Overlay @contextualClass=\\\"hds-modal__overlay\\\" />\\n{{/if}}\")","/**\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 { getElementId } from '../../../utils/hds-get-element-id.ts';\nimport { buildWaiter } from '@ember/test-waiters';\n\nimport type { WithBoundArgs } from '@glint/template';\nimport type { HdsModalSizes, HdsModalColors } from './types.ts';\n\nimport HdsDialogPrimitiveHeaderComponent from '../dialog-primitive/header.ts';\nimport HdsDialogPrimitiveBodyComponent from '../dialog-primitive/body.ts';\nimport HdsDialogPrimitiveFooterComponent from '../dialog-primitive/footer.ts';\nimport { HdsModalSizeValues, HdsModalColorValues } from './types.ts';\n\nconst waiter = buildWaiter('@hashicorp/design-system-components:modal');\n\nexport const DEFAULT_SIZE = HdsModalSizeValues.Medium;\nexport const DEFAULT_COLOR = HdsModalColorValues.Neutral;\n\nexport const SIZES: string[] = Object.values(HdsModalSizeValues);\nexport const COLORS: string[] = Object.values(HdsModalColorValues);\n\nexport interface HdsModalIndexSignature {\n Args: {\n isDismissDisabled?: boolean;\n size?: HdsModalSizes;\n color?: HdsModalColors;\n onOpen?: () => void;\n onClose?: (event: Event) => void;\n };\n Blocks: {\n default: [\n {\n Header?: WithBoundArgs<\n typeof HdsDialogPrimitiveHeaderComponent,\n 'id' | 'onDismiss' | 'contextualClassPrefix'\n >;\n Body?: WithBoundArgs<\n typeof HdsDialogPrimitiveBodyComponent,\n 'contextualClass'\n >;\n Footer?: WithBoundArgs<\n typeof HdsDialogPrimitiveFooterComponent,\n 'onDismiss' | 'contextualClass'\n >;\n },\n ];\n };\n Element: HTMLDialogElement;\n}\n\nexport default class HdsModalIndexComponent extends Component<HdsModalIndexSignature> {\n @tracked isOpen = false;\n @tracked isDismissDisabled = this.args.isDismissDisabled ?? false;\n element!: HTMLDialogElement;\n body!: HTMLElement;\n bodyInitialOverflowValue = '';\n\n /**\n * Sets the size of the modal dialog\n * Accepted values: small, medium, large\n *\n * @param size\n * @type {string}\n * @default 'medium'\n */\n get size(): HdsModalSizes {\n const { size = DEFAULT_SIZE } = this.args;\n\n assert(\n `@size for \"Hds::Modal\" must be one of the following: ${SIZES.join(\n ', '\n )}; received: ${size}`,\n SIZES.includes(size)\n );\n\n return size;\n }\n\n /**\n * Sets the color of the modal dialog\n * Accepted values: neutral, warning, critical\n *\n * @param color\n * @type {string}\n * @default 'neutral'\n */\n get color(): HdsModalColors {\n const { color = DEFAULT_COLOR } = this.args;\n\n assert(\n `@color for \"Hds::Modal\" must be one of the following: ${COLORS.join(\n ', '\n )}; received: ${color}`,\n COLORS.includes(color)\n );\n\n return color;\n }\n\n /**\n * Calculates the unique ID to assign to the title\n */\n get id(): string {\n return getElementId(this);\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-modal'];\n\n // add a class based on the @size argument\n classes.push(`hds-modal--size-${this.size}`);\n\n // add a class based on the @color argument\n classes.push(`hds-modal--color-${this.color}`);\n\n return classes.join(' ');\n }\n\n @action registerOnCloseCallback(event: Event): void {\n if (\n !this.isDismissDisabled &&\n this.args.onClose &&\n typeof this.args.onClose === 'function'\n ) {\n this.args.onClose(event);\n }\n\n // If the dismissal of the modal is disabled, we keep the modal open/visible otherwise we mark it as closed\n if (this.isDismissDisabled) {\n // If, in a chain of events, the element is not attached to the DOM, the `showModal` would fail\n // so we add this safeguard condition that checks for the `<dialog>` to have a parent\n if (this.element.parentElement) {\n // As there is no way to `preventDefault` on `close` events, we call the `showModal` function\n // preserving the state of the modal dialog\n this.element.showModal();\n }\n } else {\n this.isOpen = false;\n }\n }\n\n @action\n didInsert(element: HTMLDialogElement): void {\n // Store references of `<dialog>` and `<body>` elements\n this.element = element;\n this.body = document.body;\n\n if (this.body) {\n // Store the initial `overflow` value of `<body>` so we can reset to it\n this.bodyInitialOverflowValue =\n this.body.style.getPropertyValue('overflow');\n }\n\n // Register \"onClose\" callback function to be called when a native 'close' event is dispatched\n this.element.addEventListener('close', this.registerOnCloseCallback, true);\n\n // If the modal dialog is not already open\n if (!this.element.open) {\n this.open();\n }\n }\n\n @action\n willDestroyNode(): void {\n if (this.element) {\n this.element.removeEventListener(\n 'close',\n this.registerOnCloseCallback,\n true\n );\n }\n }\n\n @action\n open(): void {\n // Make modal dialog visible using the native `showModal` method\n this.element.showModal();\n this.isOpen = true;\n\n // Prevent page from scrolling when the dialog is open\n if (this.body) this.body.style.setProperty('overflow', 'hidden');\n\n // Call \"onOpen\" callback function\n if (this.args.onOpen && typeof this.args.onOpen === 'function') {\n this.args.onOpen();\n }\n }\n\n @action\n async onDismiss(): Promise<void> {\n // allow ember test helpers to be aware of when the `close` event fires\n // when using `click` or other helpers from '@ember/test-helpers'\n // Notice: this code will get stripped out in production builds (DEBUG evaluates to `true` in dev/test builds, but `false` in prod builds)\n if (this.element.open) {\n const token = waiter.beginAsync();\n const listener = () => {\n waiter.endAsync(token);\n this.element.removeEventListener('close', listener);\n };\n this.element.addEventListener('close', listener);\n }\n\n // Make modal dialog invisible using the native `close` method\n this.element.close();\n\n // Reset page `overflow` property\n if (this.body) {\n this.body.style.removeProperty('overflow');\n if (this.bodyInitialOverflowValue === '') {\n if (this.body.style.length === 0) {\n this.body.removeAttribute('style');\n }\n } else {\n this.body.style.setProperty('overflow', this.bodyInitialOverflowValue);\n }\n }\n }\n}\n"],"names":["waiter","buildWaiter","DEFAULT_SIZE","HdsModalSizeValues","Medium","DEFAULT_COLOR","HdsModalColorValues","Neutral","SIZES","Object","values","COLORS","HdsModalIndexComponent","_class","Component","constructor","args","_initializerDefineProperty","_descriptor","_descriptor2","_defineProperty","size","assert","join","includes","color","id","getElementId","classNames","classes","push","registerOnCloseCallback","event","isDismissDisabled","onClose","element","parentElement","showModal","isOpen","didInsert","body","document","bodyInitialOverflowValue","style","getPropertyValue","addEventListener","open","willDestroyNode","removeEventListener","setProperty","onOpen","onDismiss","token","beginAsync","listener","endAsync","close","removeProperty","length","removeAttribute","_applyDecoratedDescriptor","prototype","tracked","configurable","enumerable","writable","initializer","action","getOwnPropertyDescriptor","setComponentTemplate","TEMPLATE"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/hds/popover-primitive/index.hbs","../../../../src/components/hds/popover-primitive/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{{yield\\n (hash\\n setupPrimitiveContainer=this.setupPrimitiveContainer\\n setupPrimitiveToggle=this.setupPrimitiveToggle\\n setupPrimitivePopover=this.setupPrimitivePopover\\n toggleElement=this.toggleElement\\n popoverElement=this.popoverElement\\n isOpen=this.isOpen\\n showPopover=this.showPopover\\n hidePopover=this.hidePopover\\n togglePopover=this.togglePopover\\n )\\n}}\")","/**\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 } from '@ember/runloop';\nimport { guidFor } from '@ember/object/internals';\nimport { modifier } from 'ember-modifier';\n\nimport registerEvent from '../../../modifiers/hds-register-event.ts';\nimport anchoredPositionModifier from '../../../modifiers/hds-anchored-position.ts';\n\nimport type { FloatingUIOptions } from '../../../modifiers/hds-anchored-position.ts';\nimport type { ModifierLike } from '@glint/template';\n\nexport interface HdsPopoverPrimitiveSignature {\n Args: {\n isOpen?: boolean;\n enableSoftEvents?: boolean;\n enableClickEvents?: boolean;\n onOpen?: () => void;\n onClose?: () => void;\n };\n Blocks: {\n default: [\n {\n setupPrimitiveContainer: ModifierLike<SetupPrimitiveContainerModifier>;\n setupPrimitiveToggle: ModifierLike<SetupPrimitiveToggleModifier>;\n setupPrimitivePopover: ModifierLike<SetupPrimitivePopoverModifier>;\n toggleElement?: HTMLButtonElement;\n popoverElement?: HTMLElement;\n isOpen: boolean;\n showPopover: () => void;\n hidePopover: () => void;\n togglePopover: () => void;\n },\n ];\n };\n}\n\ninterface SetupPrimitiveContainerModifier {\n Element: HTMLElement;\n}\n\nexport interface SetupPrimitiveToggleModifier {\n Element: HTMLButtonElement;\n}\n\nexport interface SetupPrimitivePopoverModifier {\n Element: HTMLElement;\n Args: {\n Positional: [];\n Named: { anchoredPositionOptions: FloatingUIOptions };\n };\n}\n\nexport default class HdsPopoverPrimitiveComponent extends Component<HdsPopoverPrimitiveSignature> {\n @tracked isOpen = this.args.isOpen ?? false;\n @tracked isClosing = false;\n containerElement?: HTMLElement;\n toggleElement?: HTMLButtonElement;\n popoverElement?: HTMLElement;\n // this will enable \"soft\" events for the toggle (\"hover\" and \"focus\")\n enableSoftEvents = this.args.enableSoftEvents ?? false;\n // this will enable \"click\" events for the toggle\n enableClickEvents = this.args.enableClickEvents ?? false;\n timer?: ReturnType<typeof setTimeout> | null;\n\n setupPrimitiveContainer = modifier<SetupPrimitiveContainerModifier>(\n (element: HTMLElement) => {\n this.containerElement = element;\n\n // we register the \"soft\" events\n if (this.enableSoftEvents) {\n // @ts-expect-error: known issue with type of invocation\n registerEvent(this.containerElement, ['mouseenter', this.onMouseEnter]);\n // @ts-expect-error: known issue with type of invocation\n registerEvent(this.containerElement, ['mouseleave', this.onMouseLeave]);\n // @ts-expect-error: known issue with type of invocation\n registerEvent(this.containerElement, ['focusin', this.onFocusIn]);\n }\n // we always want the focusOut event\n // @ts-expect-error: known issue with type of invocation\n registerEvent(this.containerElement, ['focusout', this.onFocusOut]);\n }\n );\n\n setupPrimitiveToggle = modifier<SetupPrimitiveToggleModifier>(\n (element: HTMLButtonElement) => {\n this.toggleElement = element;\n\n assert(\n `The toggle element of \"Hds::PopoverPrimitive\" must be a <button>; element received: <${element.tagName.toLowerCase()}>`,\n element instanceof HTMLButtonElement\n );\n }\n );\n\n setupPrimitivePopover = modifier(\n (\n element: HTMLElement,\n _positional,\n named: { anchoredPositionOptions: FloatingUIOptions }\n ) => {\n this.popoverElement = element;\n\n // for the click events we don't use `onclick` event listeners, but we rely on the `popovertarget` attribute\n // provided by the Popover API which does all the magic for us without needing JS code\n // (important: to work it needs to be applied to a button)\n if (this.enableClickEvents) {\n let popoverId;\n if (this.popoverElement.id) {\n popoverId = this.popoverElement.id;\n } else {\n // we need a DOM id for the `popovertarget` attribute\n popoverId = guidFor(this);\n this.popoverElement.id = popoverId;\n }\n if (this.toggleElement) {\n this.toggleElement.setAttribute('popovertarget', popoverId);\n }\n }\n\n // this should be an extremely edge case, but in the case the popover needs to be initially forced to be open\n // we need to use the \"manual\" state to support the case of multiple \"menus\" opened at the same time\n // IMPORTANT! if a \"popover\" is set to \"open\" with a \"manual\" state, then it can't be closed via `esc` and `click outside`\n if (this.args.isOpen) {\n this.popoverElement.popover = 'manual';\n this.popoverElement.showPopover();\n } else {\n this.popoverElement.popover = 'auto';\n }\n\n // Register \"onBeforeToggle\" + \"onToggle\" callback functions to be called when a native 'toggle' event is dispatched\n // @ts-expect-error: known issue with type of invocation\n registerEvent(this.popoverElement, [\n 'beforetoggle',\n this.onBeforeTogglePopover,\n ]);\n // @ts-expect-error: known issue with type of invocation\n registerEvent(this.popoverElement, ['toggle', this.onTogglePopover]);\n\n // we need to spread the argument because if it's set via `{{ hash … }}` Ember complains when we overwrite one of its values\n const anchoredPositionOptions: FloatingUIOptions = {\n ...named.anchoredPositionOptions,\n };\n\n // Apply the `hds-anchored-position` modifier to the \"popover\" element\n // (notice: this function runs the first time when the element the modifier was applied to is inserted into the DOM, and it autotracks while running.\n // Any tracked values that it accesses will be tracked, including the arguments it receives, and if any of them changes, the function will run again)\n // This modifiers uses the Floating UI library to provide:\n // - positioning of the \"popover\" in relation to the \"toggle\"\n // - collision detection (optional)\n next(() => {\n // @ts-expect-error: known issue with type of invocation\n anchoredPositionModifier(\n this.popoverElement, // element the modifier is attached to\n [this.toggleElement], // positional arguments\n anchoredPositionOptions // named arguments\n );\n });\n }\n );\n\n @action\n showPopover() {\n try {\n if (this.popoverElement) {\n this.popoverElement.showPopover();\n }\n } catch (error) {\n warn(\n `The invocation of \\`showPopover\\` for the popover element caused an unexpected error: ${JSON.stringify(\n error\n )}`,\n {\n id: 'hds-popover.show-popover-action.invocation-failed',\n }\n );\n }\n }\n\n @action\n hidePopover() {\n try {\n if (this.popoverElement) {\n this.popoverElement.hidePopover();\n }\n } catch (error) {\n warn(\n `The invocation of \\`hidePopover\\` for the popover element caused an unexpected error: ${JSON.stringify(\n error\n )}`,\n {\n id: 'hds-popover.hide-popover-action.invocation-failed',\n }\n );\n }\n }\n\n @action\n togglePopover() {\n try {\n if (this.popoverElement) {\n this.popoverElement.togglePopover();\n }\n } catch (error) {\n warn(\n `The invocation of \\`togglePopover\\` for the popover element caused an unexpected error: ${JSON.stringify(\n error\n )}`,\n {\n id: 'hds-popover.toggle-popover-action.invocation-failed',\n }\n );\n }\n }\n\n // fired just _before_ the \"popover\" is shown or hidden\n @action\n onBeforeTogglePopover(event: ToggleEvent) {\n if (event.newState === 'closed') {\n // we need this flag to check if it's in the \"closing\" process,\n // because the browser automatically returns the focus to the \"trigger\" button\n // and this would re-open immediately the popover because of the `focusin` event\n this.isClosing = true;\n }\n }\n\n // fired just _after_ the \"popover\" is shown or hidden\n @action\n onTogglePopover(event: ToggleEvent) {\n if (event.newState === 'open') {\n this.isOpen = true;\n\n // we call the \"onOpen\" callback if it exists (and is a function)\n const { onOpen } = this.args;\n if (typeof onOpen === 'function') {\n onOpen();\n }\n } else {\n this.isOpen = false;\n\n // reset the \"isClosing\" flag (the `toggle` event is fired _after_ the popover is closed)\n this.isClosing = false;\n\n // if the popover was initially forced to be open (using the \"manual\" state) then revert its status to `auto` once the user interacts with it\n if (this.args.isOpen) {\n if (this.popoverElement) {\n this.popoverElement.popover = 'auto';\n }\n }\n\n // we call the \"onClose\" callback if it exists (and is a function)\n const { onClose } = this.args;\n if (typeof onClose === 'function') {\n onClose();\n }\n }\n }\n\n @action\n onMouseEnter() {\n if (this.timer) {\n clearTimeout(this.timer);\n }\n this.showPopover();\n }\n\n @action\n onFocusIn() {\n // don't re-open the popover if the focus is returned because the closing\n if (!this.isClosing) {\n if (this.timer) {\n clearTimeout(this.timer);\n }\n this.showPopover();\n }\n }\n\n @action\n onMouseLeave() {\n this.timer = setTimeout(() => this.hidePopover(), 500);\n }\n\n @action\n onFocusOut(event: FocusEvent) {\n if (this.containerElement) {\n let isFocusStillInside = false;\n if (\n event.relatedTarget &&\n // if the related target is not part of the disclosed content we close the disclosed container\n this.containerElement.contains(event.relatedTarget as Node)\n ) {\n isFocusStillInside = true;\n } else if (\n document.activeElement &&\n // due to inconsistent implementation of relatedTarget across browsers we use the activeElement as a fallback\n this.containerElement.contains(document.activeElement)\n ) {\n isFocusStillInside = true;\n }\n // if the target receiving the focus is _not_ part of the disclosed content we close the disclosed container\n if (!isFocusStillInside) {\n this.hidePopover();\n }\n }\n }\n}\n"],"names":["HdsPopoverPrimitiveComponent","_class","Component","constructor","args","_initializerDefineProperty","_descriptor","_descriptor2","_defineProperty","enableSoftEvents","enableClickEvents","modifier","element","containerElement","registerEvent","onMouseEnter","onMouseLeave","onFocusIn","onFocusOut","toggleElement","assert","tagName","toLowerCase","HTMLButtonElement","_positional","named","popoverElement","popoverId","id","guidFor","setAttribute","isOpen","popover","showPopover","onBeforeTogglePopover","onTogglePopover","anchoredPositionOptions","next","anchoredPositionModifier","error","warn","JSON","stringify","hidePopover","togglePopover","event","newState","isClosing","onOpen","onClose","timer","clearTimeout","setTimeout","isFocusStillInside","relatedTarget","contains","document","activeElement","_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/popover-primitive/index.hbs","../../../../src/components/hds/popover-primitive/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{{yield\\n (hash\\n setupPrimitiveContainer=this.setupPrimitiveContainer\\n setupPrimitiveToggle=this.setupPrimitiveToggle\\n setupPrimitivePopover=this.setupPrimitivePopover\\n toggleElement=this.toggleElement\\n popoverElement=this.popoverElement\\n isOpen=this.isOpen\\n showPopover=this.showPopover\\n hidePopover=this.hidePopover\\n togglePopover=this.togglePopover\\n )\\n}}\")","/**\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 } from '@ember/runloop';\nimport { guidFor } from '@ember/object/internals';\nimport { modifier } from 'ember-modifier';\n\nimport registerEvent from '../../../modifiers/hds-register-event.ts';\nimport anchoredPositionModifier from '../../../modifiers/hds-anchored-position.ts';\n\nimport type { FloatingUIOptions } from '../../../modifiers/hds-anchored-position.ts';\nimport type { ModifierLike } from '@glint/template';\n\nexport interface HdsPopoverPrimitiveSignature {\n Args: {\n isOpen?: boolean;\n enableSoftEvents?: boolean;\n enableClickEvents?: boolean;\n onOpen?: () => void;\n onClose?: () => void;\n };\n Blocks: {\n default: [\n {\n setupPrimitiveContainer: ModifierLike<SetupPrimitiveContainerModifier>;\n setupPrimitiveToggle: ModifierLike<SetupPrimitiveToggleModifier>;\n setupPrimitivePopover: ModifierLike<SetupPrimitivePopoverModifier>;\n toggleElement?: HTMLButtonElement;\n popoverElement?: HTMLElement;\n isOpen: boolean;\n showPopover: () => void;\n hidePopover: () => void;\n togglePopover: () => void;\n },\n ];\n };\n}\n\ninterface SetupPrimitiveContainerModifier {\n Element: HTMLElement;\n}\n\nexport interface SetupPrimitiveToggleModifier {\n Element: HTMLButtonElement;\n}\n\nexport interface SetupPrimitivePopoverModifier {\n Element: HTMLElement;\n Args: {\n Positional: [];\n Named: { anchoredPositionOptions: FloatingUIOptions };\n };\n}\n\nexport default class HdsPopoverPrimitiveComponent extends Component<HdsPopoverPrimitiveSignature> {\n @tracked isOpen = this.args.isOpen ?? false;\n @tracked isClosing = false;\n containerElement?: HTMLElement;\n toggleElement?: HTMLButtonElement;\n popoverElement?: HTMLElement;\n // this will enable \"soft\" events for the toggle (\"hover\" and \"focus\")\n enableSoftEvents = this.args.enableSoftEvents ?? false;\n // this will enable \"click\" events for the toggle\n enableClickEvents = this.args.enableClickEvents ?? false;\n timer?: ReturnType<typeof setTimeout> | null;\n\n setupPrimitiveContainer = modifier<SetupPrimitiveContainerModifier>(\n (element: HTMLElement): void => {\n this.containerElement = element;\n\n // we register the \"soft\" events\n if (this.enableSoftEvents) {\n // @ts-expect-error: known issue with type of invocation\n registerEvent(this.containerElement, ['mouseenter', this.onMouseEnter]);\n // @ts-expect-error: known issue with type of invocation\n registerEvent(this.containerElement, ['mouseleave', this.onMouseLeave]);\n // @ts-expect-error: known issue with type of invocation\n registerEvent(this.containerElement, ['focusin', this.onFocusIn]);\n }\n // we always want the focusOut event\n // @ts-expect-error: known issue with type of invocation\n registerEvent(this.containerElement, ['focusout', this.onFocusOut]);\n }\n );\n\n setupPrimitiveToggle = modifier<SetupPrimitiveToggleModifier>(\n (element: HTMLButtonElement): void => {\n this.toggleElement = element;\n\n assert(\n `The toggle element of \"Hds::PopoverPrimitive\" must be a <button>; element received: <${element.tagName.toLowerCase()}>`,\n element instanceof HTMLButtonElement\n );\n }\n );\n\n setupPrimitivePopover = modifier(\n (\n element: HTMLElement,\n _positional,\n named: { anchoredPositionOptions: FloatingUIOptions }\n ): void => {\n this.popoverElement = element;\n\n // for the click events we don't use `onclick` event listeners, but we rely on the `popovertarget` attribute\n // provided by the Popover API which does all the magic for us without needing JS code\n // (important: to work it needs to be applied to a button)\n if (this.enableClickEvents) {\n let popoverId;\n if (this.popoverElement.id) {\n popoverId = this.popoverElement.id;\n } else {\n // we need a DOM id for the `popovertarget` attribute\n popoverId = guidFor(this);\n this.popoverElement.id = popoverId;\n }\n if (this.toggleElement) {\n this.toggleElement.setAttribute('popovertarget', popoverId);\n }\n }\n\n // this should be an extremely edge case, but in the case the popover needs to be initially forced to be open\n // we need to use the \"manual\" state to support the case of multiple \"menus\" opened at the same time\n // IMPORTANT! if a \"popover\" is set to \"open\" with a \"manual\" state, then it can't be closed via `esc` and `click outside`\n if (this.args.isOpen) {\n this.popoverElement.popover = 'manual';\n this.popoverElement.showPopover();\n } else {\n this.popoverElement.popover = 'auto';\n }\n\n // Register \"onBeforeToggle\" + \"onToggle\" callback functions to be called when a native 'toggle' event is dispatched\n // @ts-expect-error: known issue with type of invocation\n registerEvent(this.popoverElement, [\n 'beforetoggle',\n this.onBeforeTogglePopover,\n ]);\n // @ts-expect-error: known issue with type of invocation\n registerEvent(this.popoverElement, ['toggle', this.onTogglePopover]);\n\n // we need to spread the argument because if it's set via `{{ hash … }}` Ember complains when we overwrite one of its values\n const anchoredPositionOptions: FloatingUIOptions = {\n ...named.anchoredPositionOptions,\n };\n\n // Apply the `hds-anchored-position` modifier to the \"popover\" element\n // (notice: this function runs the first time when the element the modifier was applied to is inserted into the DOM, and it autotracks while running.\n // Any tracked values that it accesses will be tracked, including the arguments it receives, and if any of them changes, the function will run again)\n // This modifiers uses the Floating UI library to provide:\n // - positioning of the \"popover\" in relation to the \"toggle\"\n // - collision detection (optional)\n next((): void => {\n // @ts-expect-error: known issue with type of invocation\n anchoredPositionModifier(\n this.popoverElement, // element the modifier is attached to\n [this.toggleElement], // positional arguments\n anchoredPositionOptions // named arguments\n );\n });\n }\n );\n\n @action\n showPopover(): void {\n try {\n if (this.popoverElement) {\n this.popoverElement.showPopover();\n }\n } catch (error) {\n warn(\n `The invocation of \\`showPopover\\` for the popover element caused an unexpected error: ${JSON.stringify(\n error\n )}`,\n {\n id: 'hds-popover.show-popover-action.invocation-failed',\n }\n );\n }\n }\n\n @action\n hidePopover(): void {\n try {\n if (this.popoverElement) {\n this.popoverElement.hidePopover();\n }\n } catch (error) {\n warn(\n `The invocation of \\`hidePopover\\` for the popover element caused an unexpected error: ${JSON.stringify(\n error\n )}`,\n {\n id: 'hds-popover.hide-popover-action.invocation-failed',\n }\n );\n }\n }\n\n @action\n togglePopover(): void {\n try {\n if (this.popoverElement) {\n this.popoverElement.togglePopover();\n }\n } catch (error) {\n warn(\n `The invocation of \\`togglePopover\\` for the popover element caused an unexpected error: ${JSON.stringify(\n error\n )}`,\n {\n id: 'hds-popover.toggle-popover-action.invocation-failed',\n }\n );\n }\n }\n\n // fired just _before_ the \"popover\" is shown or hidden\n @action\n onBeforeTogglePopover(event: ToggleEvent): void {\n if (event.newState === 'closed') {\n // we need this flag to check if it's in the \"closing\" process,\n // because the browser automatically returns the focus to the \"trigger\" button\n // and this would re-open immediately the popover because of the `focusin` event\n this.isClosing = true;\n }\n }\n\n // fired just _after_ the \"popover\" is shown or hidden\n @action\n onTogglePopover(event: ToggleEvent): void {\n if (event.newState === 'open') {\n this.isOpen = true;\n\n // we call the \"onOpen\" callback if it exists (and is a function)\n const { onOpen } = this.args;\n if (typeof onOpen === 'function') {\n onOpen();\n }\n } else {\n this.isOpen = false;\n\n // reset the \"isClosing\" flag (the `toggle` event is fired _after_ the popover is closed)\n this.isClosing = false;\n\n // if the popover was initially forced to be open (using the \"manual\" state) then revert its status to `auto` once the user interacts with it\n if (this.args.isOpen) {\n if (this.popoverElement) {\n this.popoverElement.popover = 'auto';\n }\n }\n\n // we call the \"onClose\" callback if it exists (and is a function)\n const { onClose } = this.args;\n if (typeof onClose === 'function') {\n onClose();\n }\n }\n }\n\n @action\n onMouseEnter(): void {\n if (this.timer) {\n clearTimeout(this.timer);\n }\n this.showPopover();\n }\n\n @action\n onFocusIn(): void {\n // don't re-open the popover if the focus is returned because the closing\n if (!this.isClosing) {\n if (this.timer) {\n clearTimeout(this.timer);\n }\n this.showPopover();\n }\n }\n\n @action\n onMouseLeave(): void {\n this.timer = setTimeout((): void => this.hidePopover(), 500);\n }\n\n @action\n onFocusOut(event: FocusEvent): void {\n if (this.containerElement) {\n let isFocusStillInside = false;\n if (\n event.relatedTarget &&\n // if the related target is not part of the disclosed content we close the disclosed container\n this.containerElement.contains(event.relatedTarget as Node)\n ) {\n isFocusStillInside = true;\n } else if (\n document.activeElement &&\n // due to inconsistent implementation of relatedTarget across browsers we use the activeElement as a fallback\n this.containerElement.contains(document.activeElement)\n ) {\n isFocusStillInside = true;\n }\n // if the target receiving the focus is _not_ part of the disclosed content we close the disclosed container\n if (!isFocusStillInside) {\n this.hidePopover();\n }\n }\n }\n}\n"],"names":["HdsPopoverPrimitiveComponent","_class","Component","constructor","args","_initializerDefineProperty","_descriptor","_descriptor2","_defineProperty","enableSoftEvents","enableClickEvents","modifier","element","containerElement","registerEvent","onMouseEnter","onMouseLeave","onFocusIn","onFocusOut","toggleElement","assert","tagName","toLowerCase","HTMLButtonElement","_positional","named","popoverElement","popoverId","id","guidFor","setAttribute","isOpen","popover","showPopover","onBeforeTogglePopover","onTogglePopover","anchoredPositionOptions","next","anchoredPositionModifier","error","warn","JSON","stringify","hidePopover","togglePopover","event","newState","isClosing","onOpen","onClose","timer","clearTimeout","setTimeout","isFocusStillInside","relatedTarget","contains","document","activeElement","_applyDecoratedDescriptor","prototype","tracked","configurable","enumerable","writable","initializer","action","Object","getOwnPropertyDescriptor","setComponentTemplate","TEMPLATE"],"mappings":"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"}
@@ -2,9 +2,15 @@ import templateOnlyComponent from '@ember/component/template-only';
2
2
  import { precompileTemplate } from '@ember/template-compilation';
3
3
  import { setComponentTemplate } from '@ember/component';
4
4
 
5
- var TEMPLATE = precompileTemplate("{{! @glint-nocheck: not typesafe yet }}\n{{!\n Copyright (c) HashiCorp, Inc.\n SPDX-License-Identifier: MPL-2.0\n}}\n<div class=\"hds-segmented-group\" ...attributes>\n {{yield\n (hash\n Button=(component \"hds/button\")\n Dropdown=(component \"hds/dropdown\")\n Select=(component \"hds/form/select/base\")\n TextInput=(component \"hds/form/text-input/base\")\n Generic=(component \"hds/yield\")\n )\n }}\n</div>");
5
+ var TEMPLATE = precompileTemplate("{{!\n Copyright (c) HashiCorp, Inc.\n SPDX-License-Identifier: MPL-2.0\n}}\n<div class=\"hds-segmented-group\" ...attributes>\n {{yield\n (hash\n Button=(component \"hds/button\")\n Dropdown=(component \"hds/dropdown\")\n Select=(component \"hds/form/select/base\")\n TextInput=(component \"hds/form/text-input/base\")\n Generic=(component \"hds/yield\")\n )\n }}\n</div>");
6
6
 
7
- var index = setComponentTemplate(TEMPLATE, templateOnlyComponent());
7
+ /**
8
+ * Copyright (c) HashiCorp, Inc.
9
+ * SPDX-License-Identifier: MPL-2.0
10
+ */
11
+
12
+ const HdsSegmentedGroupComponent = templateOnlyComponent();
13
+ var index = setComponentTemplate(TEMPLATE, HdsSegmentedGroupComponent);
8
14
 
9
15
  export { index as default };
10
16
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/hds/segmented-group/index.hbs","../../../../src/components/hds/segmented-group/index.js"],"sourcesContent":["import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"{{! @glint-nocheck: not typesafe yet }}\\n{{!\\n Copyright (c) HashiCorp, Inc.\\n SPDX-License-Identifier: MPL-2.0\\n}}\\n<div class=\\\"hds-segmented-group\\\" ...attributes>\\n {{yield\\n (hash\\n Button=(component \\\"hds/button\\\")\\n Dropdown=(component \\\"hds/dropdown\\\")\\n Select=(component \\\"hds/form/select/base\\\")\\n TextInput=(component \\\"hds/form/text-input/base\\\")\\n Generic=(component \\\"hds/yield\\\")\\n )\\n }}\\n</div>\")","import templateOnly from '@ember/component/template-only';\nexport default templateOnly();\n"],"names":["setComponentTemplate","TEMPLATE","templateOnly"],"mappings":";;;;AACA,eAAe,kBAAkB,CAAC,icAAic;;ACAne,YAAAA,oBAAA,CAAAC,QAAA,EAAeC,qBAAY,EAAE,CAAA;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/hds/segmented-group/index.hbs","../../../../src/components/hds/segmented-group/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<div class=\\\"hds-segmented-group\\\" ...attributes>\\n {{yield\\n (hash\\n Button=(component \\\"hds/button\\\")\\n Dropdown=(component \\\"hds/dropdown\\\")\\n Select=(component \\\"hds/form/select/base\\\")\\n TextInput=(component \\\"hds/form/text-input/base\\\")\\n Generic=(component \\\"hds/yield\\\")\\n )\\n }}\\n</div>\")","/**\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 { HdsButtonSignature } from '../button';\nimport type { HdsDropdownSignature } from '../dropdown';\nimport type { HdsFormSelectBaseSignature } from '../form/select/base';\nimport type { HdsFormTextInputBaseSignature } from '../form/text-input/base';\nimport type { HdsYieldSignature } from '../yield';\n\ninterface HdsSegmentedGroupSignature {\n Blocks: {\n default: [\n {\n Button?: ComponentLike<HdsButtonSignature>;\n Dropdown?: ComponentLike<HdsDropdownSignature>;\n Select?: ComponentLike<HdsFormSelectBaseSignature>;\n TextInput?: ComponentLike<HdsFormTextInputBaseSignature>;\n Generic?: ComponentLike<HdsYieldSignature>;\n },\n ];\n };\n Element: HTMLDivElement;\n}\n\nconst HdsSegmentedGroupComponent =\n TemplateOnlyComponent<HdsSegmentedGroupSignature>();\n\nexport default HdsSegmentedGroupComponent;\n"],"names":["HdsSegmentedGroupComponent","TemplateOnlyComponent","setComponentTemplate","TEMPLATE"],"mappings":";;;;AACA,eAAe,kBAAkB,CAAC,wZAAwZ;;ACD1b;AACA;AACA;AACA;;AA0BA,MAAMA,0BAA0B,GAC9BC,qBAAqB,EAA8B,CAAA;AAErD,YAAAC,oBAAA,CAAAC,QAAA,EAAeH,0BAA0B,CAAA;;;;"}
@@ -2,7 +2,7 @@ import templateOnlyComponent from '@ember/component/template-only';
2
2
  import { precompileTemplate } from '@ember/template-compilation';
3
3
  import { setComponentTemplate } from '@ember/component';
4
4
 
5
- var TEMPLATE = precompileTemplate("{{!\n Copyright (c) HashiCorp, Inc.\n SPDX-License-Identifier: MPL-2.0\n}}\n\n<div class=\"hds-side-nav\" ...attributes>\n <div class=\"hds-side-nav__wrapper\">\n {{yield to=\"root\"}}\n <div class=\"hds-side-nav__wrapper-header\">\n {{yield to=\"header\"}}\n </div>\n <div class=\"hds-side-nav__wrapper-body\">\n {{yield to=\"body\"}}\n </div>\n <div class=\"hds-side-nav__wrapper-footer\">\n {{yield to=\"footer\"}}\n </div>\n </div>\n</div>");
5
+ var TEMPLATE = precompileTemplate("{{!\n Copyright (c) HashiCorp, Inc.\n SPDX-License-Identifier: MPL-2.0\n}}\n{{! IMPORTANT: we need to add \"squishies\" here (~) because otherwise the whitespace added by Ember causes the empty element to still have visible padding - See https://handlebarsjs.com/guide/expressions.html#whitespace-control }}\n<div class=\"hds-side-nav\" ...attributes>\n <div class=\"hds-side-nav__wrapper\">\n {{yield to=\"root\"}}\n <div class=\"hds-side-nav__wrapper-header\">\n {{~yield to=\"header\"~}}\n </div>\n <div class=\"hds-side-nav__wrapper-body\">\n {{~yield to=\"body\"~}}\n </div>\n <div class=\"hds-side-nav__wrapper-footer\">\n {{~yield to=\"footer\"~}}\n </div>\n </div>\n</div>");
6
6
 
7
7
  /**
8
8
  * Copyright (c) HashiCorp, Inc.
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","sources":["../../../../src/components/hds/side-nav/base.hbs","../../../../src/components/hds/side-nav/base.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\\\" ...attributes>\\n <div class=\\\"hds-side-nav__wrapper\\\">\\n {{yield to=\\\"root\\\"}}\\n <div class=\\\"hds-side-nav__wrapper-header\\\">\\n {{yield to=\\\"header\\\"}}\\n </div>\\n <div class=\\\"hds-side-nav__wrapper-body\\\">\\n {{yield to=\\\"body\\\"}}\\n </div>\\n <div class=\\\"hds-side-nav__wrapper-footer\\\">\\n {{yield to=\\\"footer\\\"}}\\n </div>\\n </div>\\n</div>\")","/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport TemplateOnlyComponent from '@ember/component/template-only';\n\nexport interface HdsSideNavBaseSignature {\n Blocks: {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n root?: any;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n header?: any;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n body?: any;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n footer?: any;\n };\n Element: HTMLDivElement;\n}\n\nconst HdsSideNavBaseComponent =\n TemplateOnlyComponent<HdsSideNavBaseSignature>();\n\nexport default HdsSideNavBaseComponent;\n"],"names":["HdsSideNavBaseComponent","TemplateOnlyComponent","setComponentTemplate","TEMPLATE"],"mappings":";;;;AACA,eAAe,kBAAkB,CAAC,qeAAqe;;ACDvgB;AACA;AACA;AACA;;AAkBA,MAAMA,uBAAuB,GAC3BC,qBAAqB,EAA2B,CAAA;AAElD,WAAAC,oBAAA,CAAAC,QAAA,EAAeH,uBAAuB,CAAA;;;;"}
1
+ {"version":3,"file":"base.js","sources":["../../../../src/components/hds/side-nav/base.hbs","../../../../src/components/hds/side-nav/base.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{{! IMPORTANT: we need to add \\\"squishies\\\" here (~) because otherwise the whitespace added by Ember causes the empty element to still have visible padding - See https://handlebarsjs.com/guide/expressions.html#whitespace-control }}\\n<div class=\\\"hds-side-nav\\\" ...attributes>\\n <div class=\\\"hds-side-nav__wrapper\\\">\\n {{yield to=\\\"root\\\"}}\\n <div class=\\\"hds-side-nav__wrapper-header\\\">\\n {{~yield to=\\\"header\\\"~}}\\n </div>\\n <div class=\\\"hds-side-nav__wrapper-body\\\">\\n {{~yield to=\\\"body\\\"~}}\\n </div>\\n <div class=\\\"hds-side-nav__wrapper-footer\\\">\\n {{~yield to=\\\"footer\\\"~}}\\n </div>\\n </div>\\n</div>\")","/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport TemplateOnlyComponent from '@ember/component/template-only';\n\nexport interface HdsSideNavBaseSignature {\n Blocks: {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n root?: any;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n header?: any;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n body?: any;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n footer?: any;\n };\n Element: HTMLDivElement;\n}\n\nconst HdsSideNavBaseComponent =\n TemplateOnlyComponent<HdsSideNavBaseSignature>();\n\nexport default HdsSideNavBaseComponent;\n"],"names":["HdsSideNavBaseComponent","TemplateOnlyComponent","setComponentTemplate","TEMPLATE"],"mappings":";;;;AACA,eAAe,kBAAkB,CAAC,ktBAAktB;;ACDpvB;AACA;AACA;AACA;;AAkBA,MAAMA,uBAAuB,GAC3BC,qBAAqB,EAA2B,CAAA;AAElD,WAAAC,oBAAA,CAAAC,QAAA,EAAeH,uBAAuB,CAAA;;;;"}
@@ -2,7 +2,7 @@ import templateOnlyComponent from '@ember/component/template-only';
2
2
  import { precompileTemplate } from '@ember/template-compilation';
3
3
  import { setComponentTemplate } from '@ember/component';
4
4
 
5
- var TEMPLATE = precompileTemplate("{{!\n Copyright (c) HashiCorp, Inc.\n SPDX-License-Identifier: MPL-2.0\n}}\n\n<div class=\"hds-side-nav-header\" ...attributes>\n <div class=\"hds-side-nav-header__logo-container\">\n {{yield to=\"logo\"}}\n </div>\n <div class=\"hds-side-nav-header__actions-container hds-side-nav-hide-when-minimized\">\n {{yield to=\"actions\"}}\n </div>\n</div>");
5
+ var TEMPLATE = precompileTemplate("{{!\n Copyright (c) HashiCorp, Inc.\n SPDX-License-Identifier: MPL-2.0\n}}\n{{! IMPORTANT: we need to add \"squishies\" here (~) because otherwise the whitespace added by Ember causes the empty element to still have visible padding - See https://handlebarsjs.com/guide/expressions.html#whitespace-control }}\n<div class=\"hds-side-nav-header\" ...attributes>\n <div class=\"hds-side-nav-header__logo-container\">\n {{~yield to=\"logo\"~}}\n </div>\n <div class=\"hds-side-nav-header__actions-container hds-side-nav-hide-when-minimized\">\n {{~yield to=\"actions\"~}}\n </div>\n</div>");
6
6
 
7
7
  /**
8
8
  * Copyright (c) HashiCorp, Inc.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../src/components/hds/side-nav/header/index.hbs","../../../../../src/components/hds/side-nav/header/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<div class=\\\"hds-side-nav-header\\\" ...attributes>\\n <div class=\\\"hds-side-nav-header__logo-container\\\">\\n {{yield to=\\\"logo\\\"}}\\n </div>\\n <div class=\\\"hds-side-nav-header__actions-container hds-side-nav-hide-when-minimized\\\">\\n {{yield to=\\\"actions\\\"}}\\n </div>\\n</div>\")","/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport TemplateOnlyComponent from '@ember/component/template-only';\n\ninterface HdsSideNavHeaderSignature {\n Blocks: {\n logo?: [];\n actions?: [];\n };\n Element: HTMLDivElement;\n}\n\nconst HdsSideNavHeaderComponent =\n TemplateOnlyComponent<HdsSideNavHeaderSignature>();\n\nexport default HdsSideNavHeaderComponent;\n"],"names":["HdsSideNavHeaderComponent","TemplateOnlyComponent","setComponentTemplate","TEMPLATE"],"mappings":";;;;AACA,eAAe,kBAAkB,CAAC,0WAA0W;;ACD5Y;AACA;AACA;AACA;;AAYA,MAAMA,yBAAyB,GAC7BC,qBAAqB,EAA6B,CAAA;AAEpD,YAAAC,oBAAA,CAAAC,QAAA,EAAeH,yBAAyB,CAAA;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/components/hds/side-nav/header/index.hbs","../../../../../src/components/hds/side-nav/header/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{{! IMPORTANT: we need to add \\\"squishies\\\" here (~) because otherwise the whitespace added by Ember causes the empty element to still have visible padding - See https://handlebarsjs.com/guide/expressions.html#whitespace-control }}\\n<div class=\\\"hds-side-nav-header\\\" ...attributes>\\n <div class=\\\"hds-side-nav-header__logo-container\\\">\\n {{~yield to=\\\"logo\\\"~}}\\n </div>\\n <div class=\\\"hds-side-nav-header__actions-container hds-side-nav-hide-when-minimized\\\">\\n {{~yield to=\\\"actions\\\"~}}\\n </div>\\n</div>\")","/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport TemplateOnlyComponent from '@ember/component/template-only';\n\ninterface HdsSideNavHeaderSignature {\n Blocks: {\n logo?: [];\n actions?: [];\n };\n Element: HTMLDivElement;\n}\n\nconst HdsSideNavHeaderComponent =\n TemplateOnlyComponent<HdsSideNavHeaderSignature>();\n\nexport default HdsSideNavHeaderComponent;\n"],"names":["HdsSideNavHeaderComponent","TemplateOnlyComponent","setComponentTemplate","TEMPLATE"],"mappings":";;;;AACA,eAAe,kBAAkB,CAAC,qlBAAqlB;;ACDvnB;AACA;AACA;AACA;;AAYA,MAAMA,yBAAyB,GAC7BC,qBAAqB,EAA6B,CAAA;AAEpD,YAAAC,oBAAA,CAAAC,QAAA,EAAeH,yBAAyB,CAAA;;;;"}
@@ -7,7 +7,7 @@ import { registerDestructor } from '@ember/destroyable';
7
7
  import { precompileTemplate } from '@ember/template-compilation';
8
8
  import { setComponentTemplate } from '@ember/component';
9
9
 
10
- var TEMPLATE = 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>");
10
+ var TEMPLATE = precompileTemplate("{{!\n Copyright (c) HashiCorp, Inc.\n SPDX-License-Identifier: MPL-2.0\n}}\n{{! IMPORTANT: we need to add \"squishies\" here (~) because otherwise the whitespace added by Ember causes the empty element to still have visible padding - See https://handlebarsjs.com/guide/expressions.html#whitespace-control }}\n\n<Hds::SideNav::Base\n class={{concat this.classNames (unless (has-block \"header\") \" hds-side-nav--is-headerless\")}}\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>");
11
11
 
12
12
  var _class, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5;
13
13
  let HdsSideNavComponent = (_class = class HdsSideNavComponent extends Component {
@@ -89,6 +89,11 @@ let HdsSideNavComponent = (_class = class HdsSideNavComponent extends Component
89
89
  if (this.isAnimating) {
90
90
  classes.push('hds-side-nav--is-animating');
91
91
  }
92
+
93
+ // Add class based on the presence of app-header
94
+ if (this.args.withAppHeader) {
95
+ classes.push('hds-side-nav--with-app-header');
96
+ }
92
97
  return classes.join(' ');
93
98
  }
94
99
  escapePress(event) {
@@ -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, (): 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":";;;;;;;;;AACA,eAAe,kBAAkB,CAAC,utDAAutD;;;ACoDpuDA,IAAAA,mBAAmB,IAAAC,MAAA,GAAzB,MAAMD,mBAAmB,SAASE,SAAS,CAAsB;AAc9EC,EAAAA,WAAWA,CAACC,KAAc,EAAEC,IAAiC,EAAE;AAC7D,IAAA,KAAK,CAACD,KAAK,EAAEC,IAAI,CAAC,CAAA;AAACC,IAAAA,0BAAA,uBAAAC,WAAA,EAAA,IAAA,CAAA,CAAA;AAdmC;AAAAD,IAAAA,0BAAA,sBAAAE,YAAA,EAAA,IAAA,CAAA,CAAA;AACD;AAAAF,IAAAA,0BAAA,wBAAAG,YAAA,EAAA,IAAA,CAAA,CAAA;AACI;AAAAH,IAAAA,0BAAA,sBAAAI,YAAA,EAAA,IAAA,CAAA,CAAA;AAAAJ,IAAAA,0BAAA,oBAAAK,YAAA,EAAA,IAAA,CAAA,CAAA;IAAAC,eAAA,CAAA,IAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA,CAAA;IAAAA,eAAA,CAAA,IAAA,EAAA,kBAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAAAA,IAAAA,eAAA,yBAK1C,IAAI,CAACP,IAAI,CAACQ,cAAc,IAAI,IAAI,CAAA,CAAA;IAAAD,eAAA,CAAA,IAAA,EAAA,cAAA,EAElCE,gBAAgB,CAACC,QAAQ,CAACC,eAAe,CAAC,CAACC,gBAAgB,CACxE,8BACF,CAAC,CAAA,CAAA;AAIC,IAAA,IAAI,CAACC,SAAS,GAAGC,MAAM,CAACC,UAAU,CAAC,CAAA,WAAA,EAAc,IAAI,CAACC,YAAY,CAAA,CAAA,CAAG,CAAC,CAAA;IACtE,IAAI,CAACC,iBAAiB,EAAE,CAAA;IACxBC,kBAAkB,CAAC,IAAI,EAAE,MAAY;MACnC,IAAI,CAACC,oBAAoB,EAAE,CAAA;AAC7B,KAAC,CAAC,CAAA;AAEF,IAAA,IAAI,IAAI,CAACnB,IAAI,CAACQ,cAAc,EAAE;MAC5BY,MAAM,CACJ,mGAAmG,EACnG,IAAI,CAACpB,IAAI,CAACqB,iBAAiB,KAAKC,SAClC,CAAC,CAAA;AACH,KAAA;AACF,GAAA;AAEAL,EAAAA,iBAAiBA,GAAS;IACxBP,QAAQ,CAACa,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAACC,WAAW,EAAE,IAAI,CAAC,CAAA;AAC5D,IAAA,IAAI,CAACX,SAAS,CAACU,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAACE,qBAAqB,EAAE,IAAI,CAAC,CAAA;AAC3E;AACA,IAAA,IAAI,CAAC,IAAI,CAACzB,IAAI,CAAC0B,WAAW,EAAE;AAC1B;AACA,MAAA,MAAMC,cAAc,GAAG,IAAIC,mBAAmB,CAAC,QAAQ,EAAE;AACvDC,QAAAA,OAAO,EAAE,IAAI,CAAChB,SAAS,CAACgB,OAAO;AAC/BC,QAAAA,KAAK,EAAE,IAAI,CAACjB,SAAS,CAACiB,KAAAA;AACxB,OAAC,CAAC,CAAA;AACF,MAAA,IAAI,CAACL,qBAAqB,CAACE,cAAc,CAAC,CAAA;AAC5C,KAAA;AACF,GAAA;AAEAR,EAAAA,oBAAoBA,GAAS;IAC3BT,QAAQ,CAACqB,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAACP,WAAW,EAAE,IAAI,CAAC,CAAA;AAC/D,IAAA,IAAI,CAACX,SAAS,CAACkB,mBAAmB,CAChC,QAAQ,EACR,IAAI,CAACN,qBAAqB,EAC1B,IACF,CAAC,CAAA;AACH,GAAA;EAEA,IAAIO,eAAeA,GAAY;AAC7B,IAAA,OAAO,IAAI,CAACC,YAAY,IAAI,CAAC,IAAI,CAACC,SAAS,IAAI,CAAC,IAAI,CAACR,WAAW,CAAA;AAClE,GAAA;EAEA,IAAIS,gBAAgBA,GAAY;IAC9B,OAAQ,IAAI,CAACF,YAAY,IAAI,CAAC,IAAI,CAACC,SAAS,IAAK,IAAI,CAACE,aAAa,CAAA;AACrE,GAAA;;AAEA;AACF;AACA;AACA;AACA;EACE,IAAIC,SAASA,GAAW;IACtB,IAAI,IAAI,CAACX,WAAW,EAAE;AACpB,MAAA,OAAO,IAAI,CAAC1B,IAAI,CAACqC,SAAS,IAAI,WAAW,CAAA;AAC3C,KAAA;AACA,IAAA,OAAO,IAAI,CAACrC,IAAI,CAACqC,SAAS,IAAI,YAAY,CAAA;AAC5C,GAAA;EAEA,IAAIC,UAAUA,GAAW;AACvB,IAAA,MAAMC,OAAO,GAAG,EAAE,CAAC;;AAEnB;IACA,IAAI,IAAI,CAACN,YAAY,EAAE;AACrBM,MAAAA,OAAO,CAACC,IAAI,CAAC,6BAA6B,CAAC,CAAA;AAC7C,KAAA;IACA,IAAI,CAAC,IAAI,CAACN,SAAS,IAAI,IAAI,CAACD,YAAY,EAAE;AACxCM,MAAAA,OAAO,CAACC,IAAI,CAAC,yBAAyB,CAAC,CAAA;AACzC,KAAC,MAAM;AACLD,MAAAA,OAAO,CAACC,IAAI,CAAC,0BAA0B,CAAC,CAAA;AAC1C,KAAA;AACA,IAAA,IAAI,IAAI,CAACd,WAAW,IAAI,IAAI,CAACO,YAAY,EAAE;AACzCM,MAAAA,OAAO,CAACC,IAAI,CAAC,4BAA4B,CAAC,CAAA;AAC5C,KAAC,MAAM;AACLD,MAAAA,OAAO,CAACC,IAAI,CAAC,gCAAgC,CAAC,CAAA;AAChD,KAAA;IACA,IAAI,IAAI,CAACC,WAAW,EAAE;AACpBF,MAAAA,OAAO,CAACC,IAAI,CAAC,4BAA4B,CAAC,CAAA;AAC5C,KAAA;AAEA,IAAA,OAAOD,OAAO,CAACG,IAAI,CAAC,GAAG,CAAC,CAAA;AAC1B,GAAA;EAGAlB,WAAWA,CAACmB,KAAoB,EAAQ;AACtC,IAAA,IAAIA,KAAK,CAACC,GAAG,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAClB,WAAW,IAAI,CAAC,IAAI,CAACQ,SAAS,EAAE;MAClE,IAAI,CAACR,WAAW,GAAG,IAAI,CAAA;AACzB,KAAA;AACF,GAAA;AAGAmB,EAAAA,qBAAqBA,GAAS;AAC5B,IAAA,IAAI,CAACnB,WAAW,GAAG,CAAC,IAAI,CAACA,WAAW,CAAA;AAEpC,IAAA,IAAI,CAACoB,gBAAgB,CAACC,OAAO,CAAEC,OAAO,IAAW;MAC/C,IAAI,IAAI,CAACtB,WAAW,EAAE;AACpBsB,QAAAA,OAAO,CAACC,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;AACnC,OAAC,MAAM;AACLD,QAAAA,OAAO,CAACE,eAAe,CAAC,OAAO,CAAC,CAAA;AAClC,OAAA;AACF,KAAC,CAAC,CAAA;IAEF,MAAM;AAAEC,MAAAA,uBAAAA;KAAyB,GAAG,IAAI,CAACnD,IAAI,CAAA;AAE7C,IAAA,IAAI,OAAOmD,uBAAuB,KAAK,UAAU,EAAE;AACjDA,MAAAA,uBAAuB,CAAC,IAAI,CAACzB,WAAW,CAAC,CAAA;AAC3C,KAAA;AACF,GAAA;EAGA0B,SAASA,CAACJ,OAAoB,EAAQ;IACpC,IAAI,CAACF,gBAAgB,GAAGE,OAAO,CAACK,gBAAgB,CAC9C,mCACF,CAAC,CAAA;AACH,GAAA;AAGAC,EAAAA,aAAaA,CAACC,KAAa,EAAEZ,KAAsB,EAAQ;AACzD;AACA,IAAA,IAAIA,KAAK,CAACa,YAAY,KAAK,OAAO,EAAE;AAClC,MAAA,OAAA;AACF,KAAA;IACA,IAAID,KAAK,KAAK,OAAO,EAAE;MACrB,IAAI,CAACd,WAAW,GAAG,IAAI,CAAA;AACzB,KAAC,MAAM;MACL,IAAI,CAACA,WAAW,GAAG,KAAK,CAAA;AAC1B,KAAA;AACF,GAAA;EAGAhB,qBAAqBA,CAACkB,KAA0B,EAAQ;AACtD,IAAA,IAAI,CAACT,SAAS,GAAGS,KAAK,CAACd,OAAO,CAAA;;AAE9B;AACA,IAAA,IAAI,CAACH,WAAW,GAAG,CAAC,IAAI,CAACQ,SAAS,CAAA;IAElC,MAAM;AAAEuB,MAAAA,uBAAAA;KAAyB,GAAG,IAAI,CAACzD,IAAI,CAAA;AAE7C,IAAA,IAAI,OAAOyD,uBAAuB,KAAK,UAAU,EAAE;AACjDA,MAAAA,uBAAuB,CAAC,IAAI,CAACvB,SAAS,CAAC,CAAA;AACzC,KAAA;AACF,GAAA;AACF,CAAC,GAAAhC,WAAA,GAAAwD,yBAAA,CAAA9D,MAAA,CAAA+D,SAAA,EAAA,cAAA,EAAA,CA3JEC,OAAO,CAAA,EAAA;EAAAC,YAAA,EAAA,IAAA;EAAAC,UAAA,EAAA,IAAA;EAAAC,QAAA,EAAA,IAAA;AAAAC,EAAAA,WAAA,cAAA;AAAA,IAAA,OAAgB,IAAI,CAAChE,IAAI,CAACiC,YAAY,IAAI,IAAI,CAAA;AAAA,GAAA;AAAA,CAAA9B,CAAAA,EAAAA,YAAA,GAAAuD,yBAAA,CAAA9D,MAAA,CAAA+D,SAAA,kBACrDC,OAAO,CAAA,EAAA;EAAAC,YAAA,EAAA,IAAA;EAAAC,UAAA,EAAA,IAAA;EAAAC,QAAA,EAAA,IAAA;AAAAC,EAAAA,WAAA,cAAA;AAAA,IAAA,OAAe,IAAI,CAAChE,IAAI,CAAC0B,WAAW,IAAI,KAAK,CAAA;AAAA,GAAA;AAAA,CAAAtB,CAAAA,EAAAA,YAAA,GAAAsD,yBAAA,CAAA9D,MAAA,CAAA+D,SAAA,oBACpDC,OAAO,CAAA,EAAA;EAAAC,YAAA,EAAA,IAAA;EAAAC,UAAA,EAAA,IAAA;EAAAC,QAAA,EAAA,IAAA;AAAAC,EAAAA,WAAA,cAAA;AAAA,IAAA,OAAiB,IAAI,CAAChE,IAAI,CAACoC,aAAa,IAAI,KAAK,CAAA;AAAA,GAAA;AAAA,CAAA/B,CAAAA,EAAAA,YAAA,GAAAqD,yBAAA,CAAA9D,MAAA,CAAA+D,SAAA,kBACxDC,OAAO,CAAA,EAAA;EAAAC,YAAA,EAAA,IAAA;EAAAC,UAAA,EAAA,IAAA;EAAAC,QAAA,EAAA,IAAA;AAAAC,EAAAA,WAAA,cAAA;AAAA,IAAA,OAAe,KAAK,CAAA;AAAA,GAAA;AAAA,CAAA1D,CAAAA,EAAAA,YAAA,GAAAoD,yBAAA,CAAA9D,MAAA,CAAA+D,SAAA,gBAC3BC,OAAO,CAAA,EAAA;EAAAC,YAAA,EAAA,IAAA;EAAAC,UAAA,EAAA,IAAA;EAAAC,QAAA,EAAA,IAAA;AAAAC,EAAAA,WAAA,cAAA;AAAA,IAAA,OAAa,IAAI,CAAA;AAAA,GAAA;AAAA,CAAAN,CAAAA,EAAAA,yBAAA,CAAA9D,MAAA,CAAA+D,SAAA,EA4FxBM,aAAAA,EAAAA,CAAAA,MAAM,CAAAC,EAAAA,MAAA,CAAAC,wBAAA,CAAAvE,MAAA,CAAA+D,SAAA,EAAA/D,aAAAA,CAAAA,EAAAA,MAAA,CAAA+D,SAAA,CAAA,EAAAD,yBAAA,CAAA9D,MAAA,CAAA+D,SAAA,EAONM,uBAAAA,EAAAA,CAAAA,MAAM,GAAAC,MAAA,CAAAC,wBAAA,CAAAvE,MAAA,CAAA+D,SAAA,EAAA/D,uBAAAA,CAAAA,EAAAA,MAAA,CAAA+D,SAAA,CAAA,EAAAD,yBAAA,CAAA9D,MAAA,CAAA+D,SAAA,EAAA,WAAA,EAAA,CAmBNM,MAAM,CAAA,EAAAC,MAAA,CAAAC,wBAAA,CAAAvE,MAAA,CAAA+D,SAAA,EAAA,WAAA,CAAA,EAAA/D,MAAA,CAAA+D,SAAA,CAAAD,EAAAA,yBAAA,CAAA9D,MAAA,CAAA+D,SAAA,EAAA,eAAA,EAAA,CAONM,MAAM,CAAAC,EAAAA,MAAA,CAAAC,wBAAA,CAAAvE,MAAA,CAAA+D,SAAA,EAAA,eAAA,CAAA,EAAA/D,MAAA,CAAA+D,SAAA,GAAAD,yBAAA,CAAA9D,MAAA,CAAA+D,SAAA,EAaNM,uBAAAA,EAAAA,CAAAA,MAAM,CAAAC,EAAAA,MAAA,CAAAC,wBAAA,CAAAvE,MAAA,CAAA+D,SAAA,4BAAA/D,MAAA,CAAA+D,SAAA,CAAA,GAAA/D,MAAA,EAAA;AA/I+BwE,oBAAA,CAAAC,QAAA,EAAnB1E,mBAAmB,CAAA;;;;"}
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{{! IMPORTANT: we need to add \\\"squishies\\\" here (~) because otherwise the whitespace added by Ember causes the empty element to still have visible padding - See https://handlebarsjs.com/guide/expressions.html#whitespace-control }}\\n\\n<Hds::SideNav::Base\\n class={{concat this.classNames (unless (has-block \\\"header\\\") \\\" hds-side-nav--is-headerless\\\")}}\\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 withAppHeader?: boolean;\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 // Add class based on the presence of app-header\n if (this.args.withAppHeader) {\n classes.push('hds-side-nav--with-app-header');\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","withAppHeader","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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"}
@@ -3,8 +3,15 @@ export { default as HdsAlert } from './components/hds/alert/index.js';
3
3
  export { default as HdsAppFooter } from './components/hds/app-footer/index.js';
4
4
  export { default as HdsAppFrame } from './components/hds/app-frame/index.js';
5
5
  export { default as HdsApplicationState } from './components/hds/application-state/index.js';
6
+ export { default as HdsApplicationStateBody } from './components/hds/application-state/body.js';
7
+ export { default as HdsApplicationStateFooter } from './components/hds/application-state/footer.js';
8
+ export { default as HdsApplicationStateHeader } from './components/hds/application-state/header.js';
9
+ export { default as HdsApplicationStateMedia } from './components/hds/application-state/media.js';
6
10
  export { default as HdsBadge } from './components/hds/badge/index.js';
7
11
  export { default as HdsBadgeCount } from './components/hds/badge-count/index.js';
12
+ export { default as HdsBreadcrumb } from './components/hds/breadcrumb/index.js';
13
+ export { default as HdsBreadcrumbItem } from './components/hds/breadcrumb/item.js';
14
+ export { default as HdsBreadcrumbTruncation } from './components/hds/breadcrumb/truncation.js';
8
15
  export { default as HdsButton } from './components/hds/button/index.js';
9
16
  export { default as HdsButtonSet } from './components/hds/button-set/index.js';
10
17
  export { default as HdsCard } from './components/hds/card/container.js';
@@ -18,6 +25,7 @@ export { default as HdsDialogPrimitiveOverlay } from './components/hds/dialog-pr
18
25
  export { default as HdsDialogPrimitiveWrapper } from './components/hds/dialog-primitive/wrapper.js';
19
26
  export { default as HdsDisclosurePrimitive } from './components/hds/disclosure-primitive/index.js';
20
27
  export { default as HdsDismissButton } from './components/hds/dismiss-button/index.js';
28
+ export { default as HdsDropdown } from './components/hds/dropdown/index.js';
21
29
  export { default as HdsFlyout } from './components/hds/flyout/index.js';
22
30
  export { default as HdsFlyoutBody } from './components/hds/flyout/body.js';
23
31
  export { default as HdsFlyoutDescription } from './components/hds/flyout/description.js';
@@ -57,6 +65,7 @@ export { default as HdsIconTile } from './components/hds/icon-tile/index.js';
57
65
  export { default as HdsInteractive } from './components/hds/interactive/index.js';
58
66
  export { default as HdsLinkInline } from './components/hds/link/inline.js';
59
67
  export { default as HdsLinkStandalone } from './components/hds/link/standalone.js';
68
+ export { default as HdsMenuPrimitive } from './components/hds/menu-primitive/index.js';
60
69
  export { default as HdsModal } from './components/hds/modal/index.js';
61
70
  export { default as HdsModalBodyComponent } from './components/hds/modal/body.js';
62
71
  export { default as HdsModalFooter } from './components/hds/modal/footer.js';
@@ -65,6 +74,7 @@ export { default as HdsPageHeader } from './components/hds/page-header/index.js'
65
74
  export { default as HdsPopoverPrimitive } from './components/hds/popover-primitive/index.js';
66
75
  export { default as HdsReveal } from './components/hds/reveal/index.js';
67
76
  export { default as HdsRichTooltip } from './components/hds/rich-tooltip/index.js';
77
+ export { default as HdsSegmentedGroup } from './components/hds/segmented-group/index.js';
68
78
  export { default as HdsSeparator } from './components/hds/separator/index.js';
69
79
  export { default as HdsSideNav } from './components/hds/side-nav/index.js';
70
80
  export { default as HdsSideNavBase } from './components/hds/side-nav/base.js';
@@ -1 +1 @@
1
- {"version":3,"file":"components.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"components.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}