@hashicorp/design-system-components 4.4.1 → 4.5.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 (252) hide show
  1. package/declarations/components/hds/alert/index.d.ts +3 -2
  2. package/declarations/components/hds/alert/index.d.ts.map +1 -1
  3. package/declarations/components/hds/alert/types.d.ts +1 -1
  4. package/declarations/components/hds/alert/types.d.ts.map +1 -1
  5. package/declarations/components/hds/app-footer/link.d.ts +2 -1
  6. package/declarations/components/hds/app-footer/link.d.ts.map +1 -1
  7. package/declarations/components/hds/app-footer/status-link.d.ts +4 -3
  8. package/declarations/components/hds/app-footer/status-link.d.ts.map +1 -1
  9. package/declarations/components/hds/app-footer/types.d.ts +2 -1
  10. package/declarations/components/hds/app-footer/types.d.ts.map +1 -1
  11. package/declarations/components/hds/application-state/body.d.ts +16 -1
  12. package/declarations/components/hds/application-state/body.d.ts.map +1 -1
  13. package/declarations/components/hds/application-state/footer.d.ts +21 -3
  14. package/declarations/components/hds/application-state/footer.d.ts.map +1 -1
  15. package/declarations/components/hds/application-state/header.d.ts +16 -1
  16. package/declarations/components/hds/application-state/header.d.ts.map +1 -1
  17. package/declarations/components/hds/application-state/index.d.ts +23 -1
  18. package/declarations/components/hds/application-state/index.d.ts.map +1 -1
  19. package/declarations/components/hds/badge/index.d.ts +3 -2
  20. package/declarations/components/hds/badge/index.d.ts.map +1 -1
  21. package/declarations/components/hds/button/index.d.ts +3 -2
  22. package/declarations/components/hds/button/index.d.ts.map +1 -1
  23. package/declarations/components/hds/copy/button/index.d.ts +1 -1
  24. package/declarations/components/hds/copy/button/index.d.ts.map +1 -1
  25. package/declarations/components/hds/copy/snippet/index.d.ts +1 -1
  26. package/declarations/components/hds/copy/snippet/index.d.ts.map +1 -1
  27. package/declarations/components/hds/dropdown/toggle/icon.d.ts.map +1 -1
  28. package/declarations/components/hds/icon-tile/index.d.ts +6 -5
  29. package/declarations/components/hds/icon-tile/index.d.ts.map +1 -1
  30. package/declarations/components/hds/link/inline.d.ts +2 -1
  31. package/declarations/components/hds/link/inline.d.ts.map +1 -1
  32. package/declarations/components/hds/link/standalone.d.ts +3 -2
  33. package/declarations/components/hds/link/standalone.d.ts.map +1 -1
  34. package/declarations/components/hds/page-header/actions.d.ts +13 -1
  35. package/declarations/components/hds/page-header/actions.d.ts.map +1 -1
  36. package/declarations/components/hds/page-header/badges.d.ts +13 -1
  37. package/declarations/components/hds/page-header/badges.d.ts.map +1 -1
  38. package/declarations/components/hds/page-header/description.d.ts +15 -1
  39. package/declarations/components/hds/page-header/description.d.ts.map +1 -1
  40. package/declarations/components/hds/page-header/index.d.ts +32 -1
  41. package/declarations/components/hds/page-header/index.d.ts.map +1 -1
  42. package/declarations/components/hds/page-header/subtitle.d.ts +15 -1
  43. package/declarations/components/hds/page-header/subtitle.d.ts.map +1 -1
  44. package/declarations/components/hds/page-header/title.d.ts +15 -1
  45. package/declarations/components/hds/page-header/title.d.ts.map +1 -1
  46. package/declarations/components/hds/side-nav/base.d.ts +16 -1
  47. package/declarations/components/hds/side-nav/base.d.ts.map +1 -1
  48. package/declarations/components/hds/side-nav/header/home-link.d.ts +17 -3
  49. package/declarations/components/hds/side-nav/header/home-link.d.ts.map +1 -1
  50. package/declarations/components/hds/side-nav/header/icon-button.d.ts +16 -3
  51. package/declarations/components/hds/side-nav/header/icon-button.d.ts.map +1 -1
  52. package/declarations/components/hds/side-nav/header/index.d.ts +14 -1
  53. package/declarations/components/hds/side-nav/header/index.d.ts.map +1 -1
  54. package/declarations/components/hds/side-nav/index.d.ts +58 -15
  55. package/declarations/components/hds/side-nav/index.d.ts.map +1 -1
  56. package/declarations/components/hds/side-nav/list/back-link.d.ts +14 -1
  57. package/declarations/components/hds/side-nav/list/back-link.d.ts.map +1 -1
  58. package/declarations/components/hds/side-nav/list/index.d.ts +28 -1
  59. package/declarations/components/hds/side-nav/list/index.d.ts.map +1 -1
  60. package/declarations/components/hds/side-nav/list/item.d.ts +13 -1
  61. package/declarations/components/hds/side-nav/list/item.d.ts.map +1 -1
  62. package/declarations/components/hds/side-nav/list/link.d.ts +23 -1
  63. package/declarations/components/hds/side-nav/list/link.d.ts.map +1 -1
  64. package/declarations/components/hds/side-nav/list/title.d.ts +13 -1
  65. package/declarations/components/hds/side-nav/list/title.d.ts.map +1 -1
  66. package/declarations/components/hds/side-nav/portal/index.d.ts +26 -0
  67. package/declarations/components/hds/side-nav/portal/index.d.ts.map +1 -1
  68. package/declarations/components/hds/side-nav/portal/target.d.ts +33 -10
  69. package/declarations/components/hds/side-nav/portal/target.d.ts.map +1 -1
  70. package/declarations/components/hds/side-nav/toggle-button.d.ts +14 -1
  71. package/declarations/components/hds/side-nav/toggle-button.d.ts.map +1 -1
  72. package/declarations/components/hds/stepper/task/indicator.d.ts +2 -2
  73. package/declarations/components/hds/stepper/task/indicator.d.ts.map +1 -1
  74. package/declarations/components/hds/stepper/types.d.ts +2 -1
  75. package/declarations/components/hds/stepper/types.d.ts.map +1 -1
  76. package/declarations/components/hds/tabs/index.d.ts +48 -23
  77. package/declarations/components/hds/tabs/index.d.ts.map +1 -1
  78. package/declarations/components/hds/tabs/panel.d.ts +30 -8
  79. package/declarations/components/hds/tabs/panel.d.ts.map +1 -1
  80. package/declarations/components/hds/tabs/tab.d.ts +31 -8
  81. package/declarations/components/hds/tabs/tab.d.ts.map +1 -1
  82. package/declarations/components/hds/tabs/types.d.ts +8 -0
  83. package/declarations/components/hds/tabs/types.d.ts.map +1 -0
  84. package/declarations/components.d.ts +3 -1
  85. package/declarations/components.d.ts.map +1 -1
  86. package/declarations/template-registry.d.ts +91 -0
  87. package/declarations/template-registry.d.ts.map +1 -1
  88. package/dist/_rollupPluginBabelHelpers-KIi_qCIU.js +51 -0
  89. package/dist/_rollupPluginBabelHelpers-KIi_qCIU.js.map +1 -0
  90. package/dist/components/hds/accordion/item/button.js +1 -1
  91. package/dist/components/hds/accordion/item/index.js +1 -1
  92. package/dist/components/hds/alert/index.js +1 -1
  93. package/dist/components/hds/alert/index.js.map +1 -1
  94. package/dist/components/hds/alert/types.js +1 -1
  95. package/dist/components/hds/alert/types.js.map +1 -1
  96. package/dist/components/hds/app-footer/index.js.map +1 -1
  97. package/dist/components/hds/app-footer/link.js.map +1 -1
  98. package/dist/components/hds/app-footer/status-link.js.map +1 -1
  99. package/dist/components/hds/app-footer/types.js.map +1 -1
  100. package/dist/components/hds/application-state/body.js +8 -2
  101. package/dist/components/hds/application-state/body.js.map +1 -1
  102. package/dist/components/hds/application-state/footer.js +3 -3
  103. package/dist/components/hds/application-state/footer.js.map +1 -1
  104. package/dist/components/hds/application-state/header.js +8 -2
  105. package/dist/components/hds/application-state/header.js.map +1 -1
  106. package/dist/components/hds/application-state/index.js +8 -2
  107. package/dist/components/hds/application-state/index.js.map +1 -1
  108. package/dist/components/hds/badge/index.js.map +1 -1
  109. package/dist/components/hds/badge-count/index.js.map +1 -1
  110. package/dist/components/hds/breadcrumb/item.js.map +1 -1
  111. package/dist/components/hds/button/index.js.map +1 -1
  112. package/dist/components/hds/card/container.js.map +1 -1
  113. package/dist/components/hds/code-block/index.js +1 -1
  114. package/dist/components/hds/code-block/index.js.map +1 -1
  115. package/dist/components/hds/copy/button/index.js +1 -1
  116. package/dist/components/hds/copy/button/index.js.map +1 -1
  117. package/dist/components/hds/copy/snippet/index.js +1 -1
  118. package/dist/components/hds/copy/snippet/index.js.map +1 -1
  119. package/dist/components/hds/disclosure-primitive/index.js +1 -1
  120. package/dist/components/hds/dropdown/index.js +1 -1
  121. package/dist/components/hds/dropdown/index.js.map +1 -1
  122. package/dist/components/hds/dropdown/list-item/interactive.js.map +1 -1
  123. package/dist/components/hds/dropdown/toggle/button.js +1 -1
  124. package/dist/components/hds/dropdown/toggle/button.js.map +1 -1
  125. package/dist/components/hds/dropdown/toggle/icon.js +11 -4
  126. package/dist/components/hds/dropdown/toggle/icon.js.map +1 -1
  127. package/dist/components/hds/flyout/index.js +1 -1
  128. package/dist/components/hds/flyout/index.js.map +1 -1
  129. package/dist/components/hds/form/character-count/index.js.map +1 -1
  130. package/dist/components/hds/form/error/index.js.map +1 -1
  131. package/dist/components/hds/form/field/index.js +1 -1
  132. package/dist/components/hds/form/field/index.js.map +1 -1
  133. package/dist/components/hds/form/fieldset/index.js +1 -1
  134. package/dist/components/hds/form/fieldset/index.js.map +1 -1
  135. package/dist/components/hds/form/helper-text/index.js.map +1 -1
  136. package/dist/components/hds/form/label/index.js.map +1 -1
  137. package/dist/components/hds/form/masked-input/base.js +1 -1
  138. package/dist/components/hds/form/masked-input/base.js.map +1 -1
  139. package/dist/components/hds/form/radio-card/index.js +1 -1
  140. package/dist/components/hds/form/radio-card/index.js.map +1 -1
  141. package/dist/components/hds/form/select/base.js.map +1 -1
  142. package/dist/components/hds/form/super-select/multiple/base.js +1 -1
  143. package/dist/components/hds/form/super-select/multiple/base.js.map +1 -1
  144. package/dist/components/hds/form/super-select/option-group.js +1 -1
  145. package/dist/components/hds/form/super-select/single/base.js +1 -1
  146. package/dist/components/hds/form/super-select/single/base.js.map +1 -1
  147. package/dist/components/hds/form/text-input/base.js.map +1 -1
  148. package/dist/components/hds/form/text-input/field.js +1 -1
  149. package/dist/components/hds/form/textarea/base.js.map +1 -1
  150. package/dist/components/hds/icon-tile/index.js.map +1 -1
  151. package/dist/components/hds/interactive/index.js +1 -1
  152. package/dist/components/hds/link/inline.js.map +1 -1
  153. package/dist/components/hds/link/standalone.js.map +1 -1
  154. package/dist/components/hds/menu-primitive/index.js +1 -1
  155. package/dist/components/hds/modal/index.js +1 -1
  156. package/dist/components/hds/modal/index.js.map +1 -1
  157. package/dist/components/hds/page-header/actions.js +8 -2
  158. package/dist/components/hds/page-header/actions.js.map +1 -1
  159. package/dist/components/hds/page-header/badges.js +8 -2
  160. package/dist/components/hds/page-header/badges.js.map +1 -1
  161. package/dist/components/hds/page-header/description.js +8 -2
  162. package/dist/components/hds/page-header/description.js.map +1 -1
  163. package/dist/components/hds/page-header/index.js +8 -2
  164. package/dist/components/hds/page-header/index.js.map +1 -1
  165. package/dist/components/hds/page-header/subtitle.js +8 -2
  166. package/dist/components/hds/page-header/subtitle.js.map +1 -1
  167. package/dist/components/hds/page-header/title.js +8 -2
  168. package/dist/components/hds/page-header/title.js.map +1 -1
  169. package/dist/components/hds/pagination/compact/index.js +1 -1
  170. package/dist/components/hds/pagination/compact/index.js.map +1 -1
  171. package/dist/components/hds/pagination/nav/arrow.js +1 -1
  172. package/dist/components/hds/pagination/nav/arrow.js.map +1 -1
  173. package/dist/components/hds/pagination/nav/number.js +1 -1
  174. package/dist/components/hds/pagination/nav/number.js.map +1 -1
  175. package/dist/components/hds/pagination/numbered/index.js +1 -1
  176. package/dist/components/hds/pagination/numbered/index.js.map +1 -1
  177. package/dist/components/hds/pagination/size-selector/index.js +1 -1
  178. package/dist/components/hds/pagination/size-selector/index.js.map +1 -1
  179. package/dist/components/hds/popover-primitive/index.js +1 -1
  180. package/dist/components/hds/popover-primitive/index.js.map +1 -1
  181. package/dist/components/hds/reveal/index.js +1 -1
  182. package/dist/components/hds/rich-tooltip/bubble.js.map +1 -1
  183. package/dist/components/hds/rich-tooltip/index.js +1 -1
  184. package/dist/components/hds/rich-tooltip/index.js.map +1 -1
  185. package/dist/components/hds/rich-tooltip/toggle.js.map +1 -1
  186. package/dist/components/hds/separator/index.js.map +1 -1
  187. package/dist/components/hds/side-nav/base.js +8 -2
  188. package/dist/components/hds/side-nav/base.js.map +1 -1
  189. package/dist/components/hds/side-nav/header/home-link.js +2 -2
  190. package/dist/components/hds/side-nav/header/home-link.js.map +1 -1
  191. package/dist/components/hds/side-nav/header/icon-button.js +2 -2
  192. package/dist/components/hds/side-nav/header/icon-button.js.map +1 -1
  193. package/dist/components/hds/side-nav/header/index.js +8 -2
  194. package/dist/components/hds/side-nav/header/index.js.map +1 -1
  195. package/dist/components/hds/side-nav/index.js +14 -10
  196. package/dist/components/hds/side-nav/index.js.map +1 -1
  197. package/dist/components/hds/side-nav/list/back-link.js +8 -2
  198. package/dist/components/hds/side-nav/list/back-link.js.map +1 -1
  199. package/dist/components/hds/side-nav/list/index.js +8 -2
  200. package/dist/components/hds/side-nav/list/index.js.map +1 -1
  201. package/dist/components/hds/side-nav/list/item.js +8 -2
  202. package/dist/components/hds/side-nav/list/item.js.map +1 -1
  203. package/dist/components/hds/side-nav/list/link.js +8 -2
  204. package/dist/components/hds/side-nav/list/link.js.map +1 -1
  205. package/dist/components/hds/side-nav/list/title.js +8 -2
  206. package/dist/components/hds/side-nav/list/title.js.map +1 -1
  207. package/dist/components/hds/side-nav/portal/index.js +10 -4
  208. package/dist/components/hds/side-nav/portal/index.js.map +1 -1
  209. package/dist/components/hds/side-nav/portal/target.js +25 -25
  210. package/dist/components/hds/side-nav/portal/target.js.map +1 -1
  211. package/dist/components/hds/side-nav/toggle-button.js +8 -2
  212. package/dist/components/hds/side-nav/toggle-button.js.map +1 -1
  213. package/dist/components/hds/stepper/step/indicator.js.map +1 -1
  214. package/dist/components/hds/stepper/task/indicator.js.map +1 -1
  215. package/dist/components/hds/stepper/types.js.map +1 -1
  216. package/dist/components/hds/table/index.js +1 -1
  217. package/dist/components/hds/table/index.js.map +1 -1
  218. package/dist/components/hds/table/td.js.map +1 -1
  219. package/dist/components/hds/table/th-button-sort.js +1 -1
  220. package/dist/components/hds/table/th-button-sort.js.map +1 -1
  221. package/dist/components/hds/table/th-button-tooltip.js +1 -1
  222. package/dist/components/hds/table/th-selectable.js +1 -1
  223. package/dist/components/hds/table/th-selectable.js.map +1 -1
  224. package/dist/components/hds/table/th-sort.js +1 -1
  225. package/dist/components/hds/table/th-sort.js.map +1 -1
  226. package/dist/components/hds/table/th.js +1 -1
  227. package/dist/components/hds/table/th.js.map +1 -1
  228. package/dist/components/hds/table/tr.js.map +1 -1
  229. package/dist/components/hds/tabs/index.js +37 -36
  230. package/dist/components/hds/tabs/index.js.map +1 -1
  231. package/dist/components/hds/tabs/panel.js +4 -3
  232. package/dist/components/hds/tabs/panel.js.map +1 -1
  233. package/dist/components/hds/tabs/tab.js +11 -11
  234. package/dist/components/hds/tabs/tab.js.map +1 -1
  235. package/dist/components/hds/tabs/types.js +8 -0
  236. package/dist/components/hds/tabs/types.js.map +1 -0
  237. package/dist/components/hds/tag/index.js.map +1 -1
  238. package/dist/components/hds/text/body.js.map +1 -1
  239. package/dist/components/hds/text/code.js.map +1 -1
  240. package/dist/components/hds/text/display.js.map +1 -1
  241. package/dist/components/hds/text/index.js.map +1 -1
  242. package/dist/components.js +2 -0
  243. package/dist/components.js.map +1 -1
  244. package/dist/modifiers/hds-anchored-position.js.map +1 -1
  245. package/dist/modifiers/hds-clipboard.js.map +1 -1
  246. package/dist/modifiers/hds-tooltip.js +1 -1
  247. package/dist/modifiers/hds-tooltip.js.map +1 -1
  248. package/dist/styles/@hashicorp/design-system-components.css +5 -0
  249. package/dist/styles/components/dropdown.scss +15 -2
  250. package/package.json +18 -18
  251. package/dist/_rollupPluginBabelHelpers-NoJJJNhk.js +0 -76
  252. package/dist/_rollupPluginBabelHelpers-NoJJJNhk.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"hds-clipboard.js","sources":["../../src/modifiers/hds-clipboard.ts"],"sourcesContent":["/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport { modifier } from 'ember-modifier';\nimport { assert, warn } from '@ember/debug';\n\ntype TextToCopy = string | number | bigint;\ntype TargetToCopy = HTMLElement;\n\nexport interface HdsClipboardModifierSignature {\n Element: HTMLElement;\n Args: {\n Named: {\n text?: TextToCopy;\n target?: TargetToCopy;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onSuccess?: (...args: any[]) => void;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onError?: (...args: any[]) => void;\n };\n };\n}\n\nexport const getTextToCopy = (text: TextToCopy) => {\n let textToCopy: string = '';\n\n if (text) {\n if (typeof text === 'string') {\n textToCopy = text;\n } else if (\n // context: https://github.com/hashicorp/design-system/pull/1564\n typeof text === 'number' ||\n typeof text === 'bigint'\n ) {\n textToCopy = text.toString();\n } else {\n assert(\n `\\`hds-clipboard\\` modifier - \\`text\\` argument must be a string - provided: ${typeof text}`\n );\n }\n }\n return textToCopy;\n};\n\nexport const getTargetElement = (target: string | Node) => {\n let targetElement: HTMLElement | null;\n\n if (typeof target === 'string') {\n targetElement = document.querySelector(target);\n\n if (!targetElement) {\n console.error(\n '`hds-clipboard` modifier - `target` selector provided does not point to an existing DOM node, check your selector string',\n targetElement\n );\n return;\n }\n } else if (target instanceof HTMLElement) {\n targetElement = target;\n } else {\n if (target instanceof NodeList) {\n assert(\n '`hds-clipboard` modifier - `target` argument must be a string or a DOM node - provided: a list of DOM nodes'\n );\n } else {\n assert(\n `\\`hds-clipboard\\` modifier - \\`target\\` argument must be a string or a DOM node - provided: ${typeof target}`\n );\n }\n }\n return targetElement;\n};\n\nexport const getTextToCopyFromTargetElement = (targetElement: TargetToCopy) => {\n let textToCopy: string = '';\n\n if (targetElement instanceof HTMLElement) {\n if (\n targetElement instanceof HTMLInputElement || // targetElement.nodeName === 'INPUT' ||\n targetElement instanceof HTMLTextAreaElement || // targetElement.nodeName === 'TEXTAREA' ||\n targetElement instanceof HTMLSelectElement // targetElement.nodeName === 'SELECT'\n ) {\n textToCopy = targetElement.value;\n } else {\n // simplest approach\n textToCopy = targetElement.innerText;\n\n // approach based on text selection (left for backup just in case)\n // var selection = window.getSelection();\n // var range = document.createRange();\n // selection.removeAllRanges();\n // range.selectNodeContents(targetElement);\n // selection.addRange(range);\n // textToCopy = selection.toString();\n // selection.removeAllRanges();\n }\n }\n return textToCopy;\n};\n\nexport const writeTextToClipboard = async (textToCopy: string) => {\n // finally copy the text to the clipboard using the Clipboard API\n // https://developer.mozilla.org/en-US/docs/Web/API/Clipboard_API\n if (textToCopy) {\n try {\n // notice: the \"clipboard-write\" permission is granted automatically to pages when they are in the active tab\n // https://developer.mozilla.org/en-US/docs/Web/API/Clipboard/write\n await navigator.clipboard.writeText(textToCopy);\n // DEBUG uncomment this for easy debugging\n // console.log('success', textToCopy);\n return true;\n } catch (error) {\n // clipboard write failed\n // this probably never happens (see comment above) or happens only for very old browsers that don't for which `navigator.clipboard` is undefined\n warn('copy action failed, please check your browser‘s permissions', {\n id: 'hds-clipboard.write-text-to-clipboard.catch-error',\n });\n return false;\n }\n } else {\n return false;\n }\n};\n\nexport const copyToClipboard = async (\n text?: TextToCopy,\n target?: TargetToCopy\n) => {\n let textToCopy: string = '';\n\n if (text) {\n textToCopy = getTextToCopy(text);\n } else if (target) {\n const targetElement = getTargetElement(target);\n if (targetElement) {\n textToCopy = getTextToCopyFromTargetElement(targetElement);\n }\n } else {\n assert(\n '`hds-clipboard` modifier - either a `text` or a `target` argument is required'\n );\n }\n const success = await writeTextToClipboard(textToCopy);\n return success;\n};\n\n// Notice: we use a function-based modifier here instead of a class-based one\n// because it's quite simple in its logic, and doesn't require injecting services\n// see: https://github.com/ember-modifier/ember-modifier#function-based-modifiers\n\nexport default modifier<HdsClipboardModifierSignature>(\n (element, _positional, named) => {\n assert(\n '`hds-clipboard` modifier - the modifier must be applied to an element',\n element\n );\n\n const { text, target, onSuccess, onError } = named;\n\n const onClick = async (event: MouseEvent) => {\n const trigger = event.currentTarget;\n const success = await copyToClipboard(text, target);\n\n // fire the `onSuccess/onError` callbacks (if provided)\n if (success) {\n if (typeof onSuccess === 'function') {\n onSuccess({ trigger, text, target });\n }\n } else {\n if (typeof onError === 'function') {\n onError({ trigger, text, target });\n }\n }\n };\n\n // add the \"onClick\" event listener to the element\n element.addEventListener('click', onClick);\n\n // this (teardown) function is run when the element is removed\n return () => {\n element.removeEventListener('click', onClick);\n };\n }\n);\n"],"names":["getTextToCopy","text","textToCopy","toString","assert","getTargetElement","target","targetElement","document","querySelector","console","error","HTMLElement","NodeList","getTextToCopyFromTargetElement","HTMLInputElement","HTMLTextAreaElement","HTMLSelectElement","value","innerText","writeTextToClipboard","navigator","clipboard","writeText","warn","id","copyToClipboard","success","modifier","element","_positional","named","onSuccess","onError","onClick","event","trigger","currentTarget","addEventListener","removeEventListener"],"mappings":"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"}
1
+ {"version":3,"file":"hds-clipboard.js","sources":["../../src/modifiers/hds-clipboard.ts"],"sourcesContent":["/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport { modifier } from 'ember-modifier';\nimport { assert, warn } from '@ember/debug';\n\ntype TextToCopy = string | number | bigint;\ntype TargetToCopy = HTMLElement;\n\nexport interface HdsClipboardModifierSignature {\n Element: HTMLElement;\n Args: {\n Named: {\n text?: TextToCopy;\n target?: TargetToCopy;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onSuccess?: (...args: any[]) => void;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onError?: (...args: any[]) => void;\n };\n };\n}\n\nexport const getTextToCopy = (text: TextToCopy) => {\n let textToCopy: string = '';\n\n if (text) {\n if (typeof text === 'string') {\n textToCopy = text;\n } else if (\n // context: https://github.com/hashicorp/design-system/pull/1564\n typeof text === 'number' ||\n typeof text === 'bigint'\n ) {\n textToCopy = text.toString();\n } else {\n assert(\n `\\`hds-clipboard\\` modifier - \\`text\\` argument must be a string - provided: ${typeof text}`\n );\n }\n }\n return textToCopy;\n};\n\nexport const getTargetElement = (target: string | Node) => {\n let targetElement: HTMLElement | null;\n\n if (typeof target === 'string') {\n targetElement = document.querySelector(target);\n\n if (!targetElement) {\n console.error(\n '`hds-clipboard` modifier - `target` selector provided does not point to an existing DOM node, check your selector string',\n targetElement\n );\n return;\n }\n } else if (target instanceof HTMLElement) {\n targetElement = target;\n } else {\n if (target instanceof NodeList) {\n assert(\n '`hds-clipboard` modifier - `target` argument must be a string or a DOM node - provided: a list of DOM nodes'\n );\n } else {\n assert(\n `\\`hds-clipboard\\` modifier - \\`target\\` argument must be a string or a DOM node - provided: ${typeof target}`\n );\n }\n }\n return targetElement;\n};\n\nexport const getTextToCopyFromTargetElement = (targetElement: TargetToCopy) => {\n let textToCopy: string = '';\n\n if (targetElement instanceof HTMLElement) {\n if (\n targetElement instanceof HTMLInputElement || // targetElement.nodeName === 'INPUT' ||\n targetElement instanceof HTMLTextAreaElement || // targetElement.nodeName === 'TEXTAREA' ||\n targetElement instanceof HTMLSelectElement // targetElement.nodeName === 'SELECT'\n ) {\n textToCopy = targetElement.value;\n } else {\n // simplest approach\n textToCopy = targetElement.innerText;\n\n // approach based on text selection (left for backup just in case)\n // var selection = window.getSelection();\n // var range = document.createRange();\n // selection.removeAllRanges();\n // range.selectNodeContents(targetElement);\n // selection.addRange(range);\n // textToCopy = selection.toString();\n // selection.removeAllRanges();\n }\n }\n return textToCopy;\n};\n\nexport const writeTextToClipboard = async (textToCopy: string) => {\n // finally copy the text to the clipboard using the Clipboard API\n // https://developer.mozilla.org/en-US/docs/Web/API/Clipboard_API\n if (textToCopy) {\n try {\n // notice: the \"clipboard-write\" permission is granted automatically to pages when they are in the active tab\n // https://developer.mozilla.org/en-US/docs/Web/API/Clipboard/write\n await navigator.clipboard.writeText(textToCopy);\n // DEBUG uncomment this for easy debugging\n // console.log('success', textToCopy);\n return true;\n } catch (error) {\n // clipboard write failed\n // this probably never happens (see comment above) or happens only for very old browsers that don't for which `navigator.clipboard` is undefined\n warn('copy action failed, please check your browser‘s permissions', {\n id: 'hds-clipboard.write-text-to-clipboard.catch-error',\n });\n return false;\n }\n } else {\n return false;\n }\n};\n\nexport const copyToClipboard = async (\n text?: TextToCopy,\n target?: TargetToCopy\n) => {\n let textToCopy: string = '';\n\n if (text) {\n textToCopy = getTextToCopy(text);\n } else if (target) {\n const targetElement = getTargetElement(target);\n if (targetElement) {\n textToCopy = getTextToCopyFromTargetElement(targetElement);\n }\n } else {\n assert(\n '`hds-clipboard` modifier - either a `text` or a `target` argument is required'\n );\n }\n const success = await writeTextToClipboard(textToCopy);\n return success;\n};\n\n// Notice: we use a function-based modifier here instead of a class-based one\n// because it's quite simple in its logic, and doesn't require injecting services\n// see: https://github.com/ember-modifier/ember-modifier#function-based-modifiers\n\nexport default modifier<HdsClipboardModifierSignature>(\n (element, _positional, named) => {\n assert(\n '`hds-clipboard` modifier - the modifier must be applied to an element',\n element\n );\n\n const { text, target, onSuccess, onError } = named;\n\n const onClick = async (event: MouseEvent) => {\n const trigger = event.currentTarget;\n const success = await copyToClipboard(text, target);\n\n // fire the `onSuccess/onError` callbacks (if provided)\n if (success) {\n if (typeof onSuccess === 'function') {\n onSuccess({ trigger, text, target });\n }\n } else {\n if (typeof onError === 'function') {\n onError({ trigger, text, target });\n }\n }\n };\n\n // add the \"onClick\" event listener to the element\n element.addEventListener('click', onClick);\n\n // this (teardown) function is run when the element is removed\n return () => {\n element.removeEventListener('click', onClick);\n };\n }\n);\n"],"names":["getTextToCopy","text","textToCopy","toString","assert","getTargetElement","target","targetElement","document","querySelector","console","error","HTMLElement","NodeList","getTextToCopyFromTargetElement","HTMLInputElement","HTMLTextAreaElement","HTMLSelectElement","value","innerText","writeTextToClipboard","navigator","clipboard","writeText","warn","id","copyToClipboard","success","modifier","element","_positional","named","onSuccess","onError","onClick","event","trigger","currentTarget","addEventListener","removeEventListener"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { c as _classPrivateMethodInitSpec, a as _defineProperty, d as _assertClassBrand } from '../_rollupPluginBabelHelpers-NoJJJNhk.js';
1
+ import { c as _classPrivateMethodInitSpec, a as _defineProperty, d as _assertClassBrand } from '../_rollupPluginBabelHelpers-KIi_qCIU.js';
2
2
  import Modifier from 'ember-modifier';
3
3
  import { assert } from '@ember/debug';
4
4
  import { registerDestructor } from '@ember/destroyable';
@@ -1 +1 @@
1
- {"version":3,"file":"hds-tooltip.js","sources":["../../src/modifiers/hds-tooltip.js"],"sourcesContent":["/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\n// Note: the majority of this code is a porting of the existing tooltip implementation in Cloud UI\n// (which was initially implemented in Structure)\n\nimport Modifier from 'ember-modifier';\nimport { assert } from '@ember/debug';\nimport { registerDestructor } from '@ember/destroyable';\n\nimport tippy, { followCursor } from 'tippy.js';\n// used by custom SVG arrow:\nimport 'tippy.js/dist/svg-arrow.css';\n\nfunction cleanup(instance) {\n const { interval, needsTabIndex, tooltip } = instance;\n if (needsTabIndex) {\n tooltip?.reference?.removeAttribute('tabindex');\n }\n clearInterval(interval);\n tooltip?.destroy();\n}\n\n/**\n *\n * `Tooltip` implements a modifier that uses Tippy.js to display a tooltip.\n *\n * Sample usage:\n * ```\n * <div {{hds-tooltip 'Text' options=(hash )}}>Hover me!</div>\n * ```\n *\n * @see https://atomiks.github.io/tippyjs\n * @class TooltipModifier\n *\n */\nexport default class HdsTooltipModifier extends Modifier {\n didSetup = false;\n\n interval = null;\n needsTabIndex = false;\n tooltip = null;\n\n constructor(owner, args) {\n super(owner, args);\n registerDestructor(this, cleanup);\n }\n\n hideOnEsc = {\n name: 'hideOnEsc',\n defaultValue: true,\n fn({ hide }) {\n function onKeyDown(event) {\n if (event.keyCode === 27) {\n hide();\n }\n }\n\n return {\n onShow() {\n document.addEventListener('keydown', onKeyDown);\n },\n onHide() {\n document.removeEventListener('keydown', onKeyDown);\n },\n };\n },\n };\n\n modify(element, positional, named) {\n assert('Tooltip must have an element', element);\n\n if (!this.didSetup) {\n this.#setup(element, positional, named);\n this.didSetup = true;\n }\n\n this.#update(element, positional, named);\n }\n\n #setup(element, positional, named) {\n const tooltipProps = this.#getTooltipProps(element, positional, named);\n this.tooltip = tippy(element, tooltipProps);\n }\n\n #update(element, positional, named) {\n const tooltipProps = this.#getTooltipProps(element, positional, named);\n this.tooltip.setProps(tooltipProps);\n }\n\n #getTooltipProps(element, positional, named) {\n const { options = {} } = named;\n let [content] = positional;\n\n let $anchor = element;\n\n // Make it easy to specify the modified element as the actual tooltip.\n if (typeof options.triggerTarget === 'string') {\n const $el = $anchor;\n switch (options.triggerTarget) {\n case 'parentNode':\n $anchor = $anchor.parentNode;\n break;\n default:\n $anchor = $anchor.querySelectorAll(options.triggerTarget);\n }\n content = $anchor.cloneNode(true);\n $el.remove();\n options.triggerTarget = undefined;\n }\n\n // The {{hds-tooltip}} will just use the HTML content.\n if (typeof content === 'undefined') {\n content = $anchor.innerHTML;\n $anchor.innerHTML = '';\n }\n\n if (options.trigger === 'manual') {\n // If we are manually triggering, a out delay means only show for the\n // amount of time specified by the delay.\n const delay = options.delay || [];\n\n if (typeof delay[1] !== 'undefined') {\n options.onShown = (tooltip) => {\n clearInterval(this.interval);\n this.interval = setTimeout(() => {\n tooltip.hide();\n }, delay[1]);\n };\n }\n }\n\n const $trigger = $anchor;\n\n if (!$trigger.hasAttribute('tabindex')) {\n this.needsTabIndex = true;\n $trigger.setAttribute('tabindex', '0');\n }\n\n return {\n theme: 'hds',\n triggerTarget: $trigger,\n arrow: `\n <svg class=\"hds-tooltip-pointer\" width=\"16\" height=\"7\" viewBox=\"0 0 16 7\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M0 7H16L9.11989 0.444571C8.49776 -0.148191 7.50224 -0.148191 6.88011 0.444572L0 7Z\" />\n </svg>`,\n // keeps tooltip itself open on hover:\n interactive: true,\n // fix accessibility features that get messed up with setting interactive: true\n aria: {\n content: 'describedby',\n expanded: null,\n },\n content: () => content,\n plugins: [\n typeof options.followCursor !== 'undefined' ? followCursor : undefined,\n this.hideOnEsc,\n ].filter((item) => Boolean(item)),\n ...options,\n };\n }\n}\n"],"names":["cleanup","instance","interval","needsTabIndex","tooltip","reference","removeAttribute","clearInterval","destroy","_HdsTooltipModifier_brand","WeakSet","HdsTooltipModifier","Modifier","constructor","owner","args","_classPrivateMethodInitSpec","_defineProperty","name","defaultValue","fn","hide","onKeyDown","event","keyCode","onShow","document","addEventListener","onHide","removeEventListener","registerDestructor","modify","element","positional","named","assert","didSetup","_assertClassBrand","_setup","call","_update","tooltipProps","_getTooltipProps","tippy","setProps","options","content","$anchor","triggerTarget","$el","parentNode","querySelectorAll","cloneNode","remove","undefined","innerHTML","trigger","delay","onShown","setTimeout","$trigger","hasAttribute","setAttribute","theme","arrow","interactive","aria","expanded","plugins","followCursor","hideOnEsc","filter","item","Boolean"],"mappings":"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"}
1
+ {"version":3,"file":"hds-tooltip.js","sources":["../../src/modifiers/hds-tooltip.js"],"sourcesContent":["/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\n// Note: the majority of this code is a porting of the existing tooltip implementation in Cloud UI\n// (which was initially implemented in Structure)\n\nimport Modifier from 'ember-modifier';\nimport { assert } from '@ember/debug';\nimport { registerDestructor } from '@ember/destroyable';\n\nimport tippy, { followCursor } from 'tippy.js';\n// used by custom SVG arrow:\nimport 'tippy.js/dist/svg-arrow.css';\n\nfunction cleanup(instance) {\n const { interval, needsTabIndex, tooltip } = instance;\n if (needsTabIndex) {\n tooltip?.reference?.removeAttribute('tabindex');\n }\n clearInterval(interval);\n tooltip?.destroy();\n}\n\n/**\n *\n * `Tooltip` implements a modifier that uses Tippy.js to display a tooltip.\n *\n * Sample usage:\n * ```\n * <div {{hds-tooltip 'Text' options=(hash )}}>Hover me!</div>\n * ```\n *\n * @see https://atomiks.github.io/tippyjs\n * @class TooltipModifier\n *\n */\nexport default class HdsTooltipModifier extends Modifier {\n didSetup = false;\n\n interval = null;\n needsTabIndex = false;\n tooltip = null;\n\n constructor(owner, args) {\n super(owner, args);\n registerDestructor(this, cleanup);\n }\n\n hideOnEsc = {\n name: 'hideOnEsc',\n defaultValue: true,\n fn({ hide }) {\n function onKeyDown(event) {\n if (event.keyCode === 27) {\n hide();\n }\n }\n\n return {\n onShow() {\n document.addEventListener('keydown', onKeyDown);\n },\n onHide() {\n document.removeEventListener('keydown', onKeyDown);\n },\n };\n },\n };\n\n modify(element, positional, named) {\n assert('Tooltip must have an element', element);\n\n if (!this.didSetup) {\n this.#setup(element, positional, named);\n this.didSetup = true;\n }\n\n this.#update(element, positional, named);\n }\n\n #setup(element, positional, named) {\n const tooltipProps = this.#getTooltipProps(element, positional, named);\n this.tooltip = tippy(element, tooltipProps);\n }\n\n #update(element, positional, named) {\n const tooltipProps = this.#getTooltipProps(element, positional, named);\n this.tooltip.setProps(tooltipProps);\n }\n\n #getTooltipProps(element, positional, named) {\n const { options = {} } = named;\n let [content] = positional;\n\n let $anchor = element;\n\n // Make it easy to specify the modified element as the actual tooltip.\n if (typeof options.triggerTarget === 'string') {\n const $el = $anchor;\n switch (options.triggerTarget) {\n case 'parentNode':\n $anchor = $anchor.parentNode;\n break;\n default:\n $anchor = $anchor.querySelectorAll(options.triggerTarget);\n }\n content = $anchor.cloneNode(true);\n $el.remove();\n options.triggerTarget = undefined;\n }\n\n // The {{hds-tooltip}} will just use the HTML content.\n if (typeof content === 'undefined') {\n content = $anchor.innerHTML;\n $anchor.innerHTML = '';\n }\n\n if (options.trigger === 'manual') {\n // If we are manually triggering, a out delay means only show for the\n // amount of time specified by the delay.\n const delay = options.delay || [];\n\n if (typeof delay[1] !== 'undefined') {\n options.onShown = (tooltip) => {\n clearInterval(this.interval);\n this.interval = setTimeout(() => {\n tooltip.hide();\n }, delay[1]);\n };\n }\n }\n\n const $trigger = $anchor;\n\n if (!$trigger.hasAttribute('tabindex')) {\n this.needsTabIndex = true;\n $trigger.setAttribute('tabindex', '0');\n }\n\n return {\n theme: 'hds',\n triggerTarget: $trigger,\n arrow: `\n <svg class=\"hds-tooltip-pointer\" width=\"16\" height=\"7\" viewBox=\"0 0 16 7\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M0 7H16L9.11989 0.444571C8.49776 -0.148191 7.50224 -0.148191 6.88011 0.444572L0 7Z\" />\n </svg>`,\n // keeps tooltip itself open on hover:\n interactive: true,\n // fix accessibility features that get messed up with setting interactive: true\n aria: {\n content: 'describedby',\n expanded: null,\n },\n content: () => content,\n plugins: [\n typeof options.followCursor !== 'undefined' ? followCursor : undefined,\n this.hideOnEsc,\n ].filter((item) => Boolean(item)),\n ...options,\n };\n }\n}\n"],"names":["cleanup","instance","interval","needsTabIndex","tooltip","reference","removeAttribute","clearInterval","destroy","_HdsTooltipModifier_brand","WeakSet","HdsTooltipModifier","Modifier","constructor","owner","args","_classPrivateMethodInitSpec","_defineProperty","name","defaultValue","fn","hide","onKeyDown","event","keyCode","onShow","document","addEventListener","onHide","removeEventListener","registerDestructor","modify","element","positional","named","assert","didSetup","_assertClassBrand","_setup","call","_update","tooltipProps","_getTooltipProps","tippy","setProps","options","content","$anchor","triggerTarget","$el","parentNode","querySelectorAll","cloneNode","remove","undefined","innerHTML","trigger","delay","onShown","setTimeout","$trigger","hasAttribute","setAttribute","theme","arrow","interactive","aria","expanded","plugins","followCursor","hideOnEsc","filter","item","Boolean"],"mappings":"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"}
@@ -2721,6 +2721,7 @@ button.hds-button[href]::after {
2721
2721
  align-items: center;
2722
2722
  justify-content: center;
2723
2723
  padding: 1px;
2724
+ color: var(--token-color-foreground-primary);
2724
2725
  background-color: var(--token-color-surface-faint);
2725
2726
  border: 1px solid var(--token-color-border-strong);
2726
2727
  border-radius: 5px;
@@ -2789,6 +2790,10 @@ button.hds-button[href]::after {
2789
2790
  width: 24px;
2790
2791
  height: 24px;
2791
2792
  }
2793
+ .hds-dropdown-toggle-icon--size-small.hds-dropdown-toggle-icon--has-chevron .flight-icon {
2794
+ width: 12px;
2795
+ height: 12px;
2796
+ }
2792
2797
 
2793
2798
  .hds-dropdown-toggle-icon--size-medium .hds-dropdown-toggle-icon__wrapper {
2794
2799
  width: 32px;
@@ -33,6 +33,9 @@ $hds-dropdown-toggle-border-radius: $hds-button-border-radius;
33
33
  align-items: center;
34
34
  justify-content: center;
35
35
  padding: 1px;
36
+ // this variant mimics the secondary button, but not entirely (eg. it doesn't have an elevation shadow)
37
+ // so we need to provide the same color values but without using the `hds-button-color-secondary()` mixin
38
+ color: var(--token-color-foreground-primary);
36
39
  background-color: var(--token-color-surface-faint);
37
40
  border: 1px solid var(--token-color-border-strong);
38
41
  border-radius: $hds-dropdown-toggle-border-radius;
@@ -73,16 +76,26 @@ $hds-dropdown-toggle-border-radius: $hds-button-border-radius;
73
76
  }
74
77
  }
75
78
 
79
+ // Icon sizes
80
+
76
81
  .hds-dropdown-toggle-icon--size-small {
77
82
  .hds-dropdown-toggle-icon__wrapper {
78
- width: 24px; // same as the `button[small]` minus 2*2px becaus there are a 1px padding and 1px border to take into account
83
+ width: 24px; // we use this element to provide the right size for the parent "button" so it matches the `button[small]`
79
84
  height: 24px;
80
85
  }
86
+
87
+ &.hds-dropdown-toggle-icon--has-chevron {
88
+ // For small variant with chevron, force the icon size to custom (even if the SGV size is `16px`)
89
+ .flight-icon {
90
+ width: 12px;
91
+ height: 12px;
92
+ }
93
+ }
81
94
  }
82
95
 
83
96
  .hds-dropdown-toggle-icon--size-medium {
84
97
  .hds-dropdown-toggle-icon__wrapper {
85
- width: 32px; // same as the `button[medium]` minus 2*2px becaus there are a 1px padding and 1px border to take into account
98
+ width: 32px; // we use this element to provide the right size for the parent "button" so it matches the `button[small]`
86
99
  height: 32px;
87
100
  }
88
101
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hashicorp/design-system-components",
3
- "version": "4.4.1",
3
+ "version": "4.5.0",
4
4
  "description": "Helios Design System Components",
5
5
  "keywords": [
6
6
  "hashicorp",
@@ -22,10 +22,10 @@
22
22
  "build:types": "glint --declaration",
23
23
  "prepublishOnly": "yarn workspace @hashicorp/ember-flight-icons build && yarn build && test -f 'dist/styles/@hashicorp/design-system-components.css' || (echo 'The pre-compiled CSS file was not found' && exit 1)",
24
24
  "start": "rollup --config --watch --environment development",
25
- "lint": "npm-run-all --aggregate-output --continue-on-error --parallel \"lint:!(fix)\"",
26
- "lint:fix": "npm-run-all --aggregate-output --continue-on-error --parallel lint:*:fix",
25
+ "lint": "concurrently \"yarn:lint:*(!fix)\" --names \"lint:\"",
26
+ "lint:fix": "concurrently \"yarn:lint:*:fix\" --names \"fix:\"",
27
27
  "lint:css": "stylelint \"src/styles/**/*.scss\"",
28
- "lint:css:fix": "npm-run-all \"lint:css --fix\"",
28
+ "lint:css:fix": "concurrently \"yarn:lint:css -- --fix\"",
29
29
  "lint:types": "glint",
30
30
  "lint:hbs": "ember-template-lint .",
31
31
  "lint:hbs:fix": "ember-template-lint . --fix",
@@ -39,10 +39,10 @@
39
39
  "@embroider/addon-shim": "^1.8.7",
40
40
  "@floating-ui/dom": "^1.6.3",
41
41
  "@hashicorp/design-system-tokens": "^2.1.0",
42
- "@hashicorp/ember-flight-icons": "^5.0.3",
42
+ "@hashicorp/ember-flight-icons": "^5.1.0",
43
43
  "@oddbird/popover-polyfill": "^0.4.3",
44
44
  "decorator-transforms": "^1.1.0",
45
- "ember-a11y-refocus": "^3.0.2",
45
+ "ember-a11y-refocus": "^4.1.0",
46
46
  "ember-cli-sass": "^11.0.1",
47
47
  "ember-composable-helpers": "^5.0.0",
48
48
  "ember-element-helper": "^0.8.5",
@@ -58,7 +58,7 @@
58
58
  "tippy.js": "^6.3.7"
59
59
  },
60
60
  "devDependencies": {
61
- "@babel/core": "^7.24.5",
61
+ "@babel/core": "^7.24.7",
62
62
  "@babel/plugin-proposal-decorators": "^7.24.1",
63
63
  "@babel/plugin-transform-class-properties": "^7.24.1",
64
64
  "@babel/plugin-transform-private-methods": "^7.24.1",
@@ -72,27 +72,27 @@
72
72
  "@glint/environment-ember-loose": "^1.4.0",
73
73
  "@glint/template": "^1.4.0",
74
74
  "@rollup/plugin-babel": "^6.0.4",
75
- "@tsconfig/ember": "^3.0.6",
75
+ "@tsconfig/ember": "^3.0.8",
76
76
  "@types/ember-qunit": "^6.1.1",
77
77
  "@types/ember-resolver": "^9.0.0",
78
- "@types/qunit": "^2.19.7",
79
- "@types/rsvp": "^4.0.6",
80
- "@typescript-eslint/eslint-plugin": "^6.14.0",
81
- "@typescript-eslint/parser": "^6.14.0",
78
+ "@types/ember__destroyable": "^4.0.5",
79
+ "@types/qunit": "^2.19.10",
80
+ "@types/rsvp": "^4.0.9",
81
+ "@typescript-eslint/eslint-plugin": "^6.21.0",
82
+ "@typescript-eslint/parser": "^6.21.0",
82
83
  "babel-plugin-ember-template-compilation": "^2.2.4",
83
84
  "concurrently": "^8.2.2",
84
85
  "ember-basic-dropdown": "^8.1.0",
85
86
  "ember-concurrency": "^4.0.2",
86
87
  "ember-template-lint": "^4.18.2",
87
88
  "ember-template-lint-plugin-prettier": "^4.2.0",
88
- "eslint": "^8.52.0",
89
- "eslint-config-prettier": "^8.10.0",
90
- "eslint-plugin-ember": "^11.11.1",
89
+ "eslint": "^8.57.0",
90
+ "eslint-config-prettier": "^9.1.0",
91
+ "eslint-plugin-ember": "^11.12.0",
91
92
  "eslint-plugin-import": "^2.29.1",
92
93
  "eslint-plugin-n": "^17.7.0",
93
94
  "eslint-plugin-prettier": "^4.2.1",
94
- "eslint-plugin-qunit": "^8.0.1",
95
- "npm-run-all": "^4.1.5",
95
+ "eslint-plugin-qunit": "^8.1.1",
96
96
  "prettier": "^2.8.8",
97
97
  "rollup": "^4.17.2",
98
98
  "rollup-plugin-copy": "^3.5.0",
@@ -101,7 +101,7 @@
101
101
  "stylelint": "^16.3.1",
102
102
  "stylelint-config-rational-order": "^0.1.2",
103
103
  "stylelint-config-standard-scss": "^13.1.0",
104
- "typescript": "^5.3.3"
104
+ "typescript": "^5.4.5"
105
105
  },
106
106
  "peerDependencies": {
107
107
  "ember-source": "^3.28.0 || ^4.0.0 || ^5.3.0"
@@ -1,76 +0,0 @@
1
- function _assertClassBrand(e, t, n) {
2
- if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n;
3
- throw new TypeError("Private element is not present on this object");
4
- }
5
- function _toPrimitive(t, r) {
6
- if ("object" != typeof t || !t) return t;
7
- var e = t[Symbol.toPrimitive];
8
- if (void 0 !== e) {
9
- var i = e.call(t, r || "default");
10
- if ("object" != typeof i) return i;
11
- throw new TypeError("@@toPrimitive must return a primitive value.");
12
- }
13
- return ("string" === r ? String : Number)(t);
14
- }
15
- function _toPropertyKey(t) {
16
- var i = _toPrimitive(t, "string");
17
- return "symbol" == typeof i ? i : i + "";
18
- }
19
- function _defineProperty(obj, key, value) {
20
- key = _toPropertyKey(key);
21
- if (key in obj) {
22
- Object.defineProperty(obj, key, {
23
- value: value,
24
- enumerable: true,
25
- configurable: true,
26
- writable: true
27
- });
28
- } else {
29
- obj[key] = value;
30
- }
31
- return obj;
32
- }
33
- function _initializerDefineProperty(target, property, descriptor, context) {
34
- if (!descriptor) return;
35
- Object.defineProperty(target, property, {
36
- enumerable: descriptor.enumerable,
37
- configurable: descriptor.configurable,
38
- writable: descriptor.writable,
39
- value: descriptor.initializer ? descriptor.initializer.call(context) : void 0
40
- });
41
- }
42
- function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {
43
- var desc = {};
44
- Object.keys(descriptor).forEach(function (key) {
45
- desc[key] = descriptor[key];
46
- });
47
- desc.enumerable = !!desc.enumerable;
48
- desc.configurable = !!desc.configurable;
49
- if ('value' in desc || desc.initializer) {
50
- desc.writable = true;
51
- }
52
- desc = decorators.slice().reverse().reduce(function (desc, decorator) {
53
- return decorator(target, property, desc) || desc;
54
- }, desc);
55
- if (context && desc.initializer !== void 0) {
56
- desc.value = desc.initializer ? desc.initializer.call(context) : void 0;
57
- desc.initializer = undefined;
58
- }
59
- if (desc.initializer === void 0) {
60
- Object.defineProperty(target, property, desc);
61
- desc = null;
62
- }
63
- return desc;
64
- }
65
- function _checkPrivateRedeclaration(obj, privateCollection) {
66
- if (privateCollection.has(obj)) {
67
- throw new TypeError("Cannot initialize the same private elements twice on an object");
68
- }
69
- }
70
- function _classPrivateMethodInitSpec(obj, privateSet) {
71
- _checkPrivateRedeclaration(obj, privateSet);
72
- privateSet.add(obj);
73
- }
74
-
75
- export { _applyDecoratedDescriptor as _, _defineProperty as a, _initializerDefineProperty as b, _classPrivateMethodInitSpec as c, _assertClassBrand as d };
76
- //# sourceMappingURL=_rollupPluginBabelHelpers-NoJJJNhk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"_rollupPluginBabelHelpers-NoJJJNhk.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}