@hokulea/ember 0.13.0 → 0.15.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 (197) hide show
  1. package/declarations/components/actions/-button.d.ts +31 -0
  2. package/declarations/components/actions/-button.d.ts.map +1 -1
  3. package/declarations/components/actions/button-group.d.ts +10 -0
  4. package/declarations/components/actions/button-group.d.ts.map +1 -0
  5. package/declarations/components/actions/button.d.ts +7 -17
  6. package/declarations/components/actions/button.d.ts.map +1 -1
  7. package/declarations/components/actions/icon-button.d.ts +6 -13
  8. package/declarations/components/actions/icon-button.d.ts.map +1 -1
  9. package/declarations/components/actions/radio-button-group.d.ts +57 -0
  10. package/declarations/components/actions/radio-button-group.d.ts.map +1 -0
  11. package/declarations/components/button-group.d.ts +2 -0
  12. package/declarations/components/button-group.d.ts.map +1 -0
  13. package/declarations/components/controls/menu.d.ts +0 -3
  14. package/declarations/components/controls/menu.d.ts.map +1 -1
  15. package/declarations/components/layouts/sectioned-page.d.ts +1 -1
  16. package/declarations/components/layouts/sectioned-page.d.ts.map +1 -1
  17. package/declarations/components/navigation/app-header.d.ts +2 -2
  18. package/declarations/components/navigation/app-header.d.ts.map +1 -1
  19. package/declarations/components/navigation/nav-link.d.ts.map +1 -1
  20. package/declarations/components/navigation/tab-nav.d.ts +12 -0
  21. package/declarations/components/navigation/tab-nav.d.ts.map +1 -0
  22. package/declarations/components/radio-button-group.d.ts +2 -0
  23. package/declarations/components/radio-button-group.d.ts.map +1 -0
  24. package/declarations/components/tab-nav.d.ts +2 -0
  25. package/declarations/components/tab-nav.d.ts.map +1 -0
  26. package/declarations/helpers/-position.d.ts +12 -0
  27. package/declarations/helpers/-position.d.ts.map +1 -0
  28. package/declarations/helpers/popover.d.ts +23 -2
  29. package/declarations/helpers/popover.d.ts.map +1 -1
  30. package/declarations/index.d.ts +3 -0
  31. package/declarations/index.d.ts.map +1 -1
  32. package/declarations/template-registry.d.ts +4 -0
  33. package/declarations/template-registry.d.ts.map +1 -1
  34. package/declarations/test-support/index.d.ts +3 -0
  35. package/declarations/test-support/index.d.ts.map +1 -1
  36. package/declarations/test-support/page-objects/-menu.d.ts.map +1 -1
  37. package/declarations/test-support/page-objects/-private/error.d.ts +2 -2
  38. package/declarations/test-support/page-objects/-private/error.d.ts.map +1 -1
  39. package/declarations/test-support/page-objects/-private/field.d.ts +1 -1
  40. package/declarations/test-support/page-objects/-private/field.d.ts.map +1 -1
  41. package/declarations/test-support/page-objects/button-group.d.ts +9 -0
  42. package/declarations/test-support/page-objects/button-group.d.ts.map +1 -0
  43. package/declarations/test-support/page-objects/button.d.ts.map +1 -1
  44. package/declarations/test-support/page-objects/navigation-list.d.ts +1 -1
  45. package/declarations/test-support/page-objects/navigation-list.d.ts.map +1 -1
  46. package/declarations/test-support/page-objects/radio-button-group.d.ts +33 -0
  47. package/declarations/test-support/page-objects/radio-button-group.d.ts.map +1 -0
  48. package/declarations/test-support/page-objects/tab-nav.d.ts +9 -0
  49. package/declarations/test-support/page-objects/tab-nav.d.ts.map +1 -0
  50. package/dist/{-button-KUaJCQaB.js → -button-zstwNwHq.js} +8 -2
  51. package/dist/-button-zstwNwHq.js.map +1 -0
  52. package/dist/_app_/components/button-group.js +1 -0
  53. package/dist/_app_/components/radio-button-group.js +1 -0
  54. package/dist/_app_/components/tab-nav.js +1 -0
  55. package/dist/{alert-Dn7ePQlD.js → alert-CHUcylXU.js} +3 -3
  56. package/dist/{alert-Dn7ePQlD.js.map → alert-CHUcylXU.js.map} +1 -1
  57. package/dist/{app-header-Bb7kHBL2.js → app-header-zFoKDgm0.js} +8 -8
  58. package/dist/app-header-zFoKDgm0.js.map +1 -0
  59. package/dist/{avatar-DTqwlbny.js → avatar-CKkZu7w3.js} +2 -2
  60. package/dist/{avatar-DTqwlbny.js.map → avatar-CKkZu7w3.js.map} +1 -1
  61. package/dist/{box-COwjh1Rb.js → box-6Zf3RnAO.js} +2 -2
  62. package/dist/{box-COwjh1Rb.js.map → box-6Zf3RnAO.js.map} +1 -1
  63. package/dist/button-DCEeKVJE.js +25 -0
  64. package/dist/button-DCEeKVJE.js.map +1 -0
  65. package/dist/button-group-L-yIZgQe.js +14 -0
  66. package/dist/button-group-L-yIZgQe.js.map +1 -0
  67. package/dist/card-Wzo-S04B.js +14 -0
  68. package/dist/{card-Bq4sLW1m.js.map → card-Wzo-S04B.js.map} +1 -1
  69. package/dist/{checkbox-C9-RZtWK.js → checkbox-Dq-Ba0eG.js} +2 -2
  70. package/dist/{checkbox-C9-RZtWK.js.map → checkbox-Dq-Ba0eG.js.map} +1 -1
  71. package/dist/components/alert.js +1 -1
  72. package/dist/components/app-header.js +1 -1
  73. package/dist/components/avatar.js +1 -1
  74. package/dist/components/box.js +1 -1
  75. package/dist/components/button-group.js +2 -0
  76. package/dist/components/button-group.js.map +1 -0
  77. package/dist/components/button.js +1 -1
  78. package/dist/components/card.js +1 -1
  79. package/dist/components/checkbox.js +1 -1
  80. package/dist/components/currency-input.js +1 -1
  81. package/dist/components/data-table.js +1 -1
  82. package/dist/components/date-input.js +1 -1
  83. package/dist/components/email-input.js +1 -1
  84. package/dist/components/focus-page.js +1 -1
  85. package/dist/components/form.js +1 -1
  86. package/dist/components/icon-button.js +1 -1
  87. package/dist/components/icon.js +1 -1
  88. package/dist/components/input-builder.js +1 -1
  89. package/dist/components/link.js +1 -1
  90. package/dist/components/list.js +1 -1
  91. package/dist/components/menu.js +1 -1
  92. package/dist/components/navigation-list.js +1 -1
  93. package/dist/components/number-input.js +1 -1
  94. package/dist/components/page.js +1 -1
  95. package/dist/components/pagination.js +1 -1
  96. package/dist/components/password-input.js +1 -1
  97. package/dist/components/phone-input.js +1 -1
  98. package/dist/components/popover.js +1 -1
  99. package/dist/components/radio-button-group.js +2 -0
  100. package/dist/components/radio-button-group.js.map +1 -0
  101. package/dist/components/radio.js +1 -1
  102. package/dist/components/range-input.js +1 -1
  103. package/dist/components/section.js +1 -1
  104. package/dist/components/sectioned-page.js +1 -1
  105. package/dist/components/select.js +1 -1
  106. package/dist/components/tab-nav.js +2 -0
  107. package/dist/components/tab-nav.js.map +1 -0
  108. package/dist/components/tabs.js +1 -1
  109. package/dist/components/text-area.js +1 -1
  110. package/dist/components/text-input.js +1 -1
  111. package/dist/currency-input-BXZynbgP.js +20 -0
  112. package/dist/{currency-input-BqNb3IcU.js.map → currency-input-BXZynbgP.js.map} +1 -1
  113. package/dist/data-table-DgPcWpgQ.js +16 -0
  114. package/dist/{data-table-ZliVM1td.js.map → data-table-DgPcWpgQ.js.map} +1 -1
  115. package/dist/{date-input-DxDpVu3A.js → date-input-Do_gdYif.js} +2 -2
  116. package/dist/{date-input-DxDpVu3A.js.map → date-input-Do_gdYif.js.map} +1 -1
  117. package/dist/{email-input-84impWbH.js → email-input-C3DQI5CS.js} +2 -2
  118. package/dist/{email-input-84impWbH.js.map → email-input-C3DQI5CS.js.map} +1 -1
  119. package/dist/focus-page-De0KXI-m.js +19 -0
  120. package/dist/{focus-page-Boq96jK3.js.map → focus-page-De0KXI-m.js.map} +1 -1
  121. package/dist/form-VcfCjgct.js +508 -0
  122. package/dist/{form-B9MShV4J.js.map → form-VcfCjgct.js.map} +1 -1
  123. package/dist/helpers/popover.js +11 -20
  124. package/dist/helpers/popover.js.map +1 -1
  125. package/dist/icon-button-C1YrOLFe.js +38 -0
  126. package/dist/icon-button-C1YrOLFe.js.map +1 -0
  127. package/dist/{icon-rlG6O1ps.js → icon-ej-3ZqQt.js} +2 -2
  128. package/dist/{icon-rlG6O1ps.js.map → icon-ej-3ZqQt.js.map} +1 -1
  129. package/dist/index.js +38 -35
  130. package/dist/index.js.map +1 -1
  131. package/dist/input-builder-DpIzsgxI.js +18 -0
  132. package/dist/{input-builder-C6GkddCw.js.map → input-builder-DpIzsgxI.js.map} +1 -1
  133. package/dist/{link-bqsg26Cc.js → link-4Kc0K38u.js} +3 -3
  134. package/dist/{link-bqsg26Cc.js.map → link-4Kc0K38u.js.map} +1 -1
  135. package/dist/{list-C86dLtuk.js → list-CIQXPiUH.js} +3 -3
  136. package/dist/{list-C86dLtuk.js.map → list-CIQXPiUH.js.map} +1 -1
  137. package/dist/{menu-BR3G9OgU.js → menu-Dcc72jZp.js} +5 -15
  138. package/dist/menu-Dcc72jZp.js.map +1 -0
  139. package/dist/nav-link-KZJghY_q.js +22 -0
  140. package/dist/{nav-link-DL59IUt0.js.map → nav-link-KZJghY_q.js.map} +1 -1
  141. package/dist/{navigation-list-Dt-WaMyp.js → navigation-list-DkWUXH9a.js} +4 -4
  142. package/dist/{navigation-list-Dt-WaMyp.js.map → navigation-list-DkWUXH9a.js.map} +1 -1
  143. package/dist/{number-input-CDMSp7qk.js → number-input-C3nCdLGj.js} +2 -2
  144. package/dist/{number-input-CDMSp7qk.js.map → number-input-C3nCdLGj.js.map} +1 -1
  145. package/dist/page-BlSv_2Xh.js +19 -0
  146. package/dist/{page-DNrVa_Zo.js.map → page-BlSv_2Xh.js.map} +1 -1
  147. package/dist/{pagination-BYiNuWz8.js → pagination-CjkoHYcN.js} +5 -5
  148. package/dist/{pagination-BYiNuWz8.js.map → pagination-CjkoHYcN.js.map} +1 -1
  149. package/dist/{password-input-BYvLH8gQ.js → password-input-DRa3El-5.js} +2 -2
  150. package/dist/{password-input-BYvLH8gQ.js.map → password-input-DRa3El-5.js.map} +1 -1
  151. package/dist/{phone-input-8N_lOkZ2.js → phone-input-D3AIkLe8.js} +2 -2
  152. package/dist/{phone-input-8N_lOkZ2.js.map → phone-input-D3AIkLe8.js.map} +1 -1
  153. package/dist/{popover-wLRNTIPC.js → popover-CaKubr0X.js} +2 -2
  154. package/dist/{popover-wLRNTIPC.js.map → popover-CaKubr0X.js.map} +1 -1
  155. package/dist/push-C8z1Qw41.js +24 -0
  156. package/dist/{push-DnJFFc_p.js.map → push-C8z1Qw41.js.map} +1 -1
  157. package/dist/{radio-BQvSPyDT.js → radio-BQ_nDgm0.js} +2 -2
  158. package/dist/{radio-BQvSPyDT.js.map → radio-BQ_nDgm0.js.map} +1 -1
  159. package/dist/radio-button-group-D7LjyINa.js +91 -0
  160. package/dist/radio-button-group-D7LjyINa.js.map +1 -0
  161. package/dist/{range-input-Bosd7QI2.js → range-input-Oc8Z7tsH.js} +2 -2
  162. package/dist/{range-input-Bosd7QI2.js.map → range-input-Oc8Z7tsH.js.map} +1 -1
  163. package/dist/{section-B_1poNPX.js → section-DbYzqbWp.js} +2 -2
  164. package/dist/{section-B_1poNPX.js.map → section-DbYzqbWp.js.map} +1 -1
  165. package/dist/sectioned-page-Ba06ASAC.js +21 -0
  166. package/dist/sectioned-page-Ba06ASAC.js.map +1 -0
  167. package/dist/{select-DWOHAUfQ.js → select-CrdsGEgR.js} +3 -3
  168. package/dist/{select-DWOHAUfQ.js.map → select-CrdsGEgR.js.map} +1 -1
  169. package/dist/tab-nav-pvb2XhOD.js +16 -0
  170. package/dist/tab-nav-pvb2XhOD.js.map +1 -0
  171. package/dist/{tabs-e_cUi6pL.js → tabs-DdGp_ET2.js} +3 -3
  172. package/dist/{tabs-e_cUi6pL.js.map → tabs-DdGp_ET2.js.map} +1 -1
  173. package/dist/test-support/index.js +48 -20
  174. package/dist/test-support/index.js.map +1 -1
  175. package/dist/{text-area-BsDD1dpV.js → text-area-BBLWOU6L.js} +2 -2
  176. package/dist/{text-area-BsDD1dpV.js.map → text-area-BBLWOU6L.js.map} +1 -1
  177. package/dist/{text-input-BntDzi8S.js → text-input-B5cPU_e-.js} +2 -2
  178. package/dist/{text-input-BntDzi8S.js.map → text-input-B5cPU_e-.js.map} +1 -1
  179. package/package.json +41 -41
  180. package/dist/-button-KUaJCQaB.js.map +0 -1
  181. package/dist/app-header-Bb7kHBL2.js.map +0 -1
  182. package/dist/button-BAtG9lC0.js +0 -24
  183. package/dist/button-BAtG9lC0.js.map +0 -1
  184. package/dist/card-Bq4sLW1m.js +0 -14
  185. package/dist/currency-input-BqNb3IcU.js +0 -20
  186. package/dist/data-table-ZliVM1td.js +0 -16
  187. package/dist/focus-page-Boq96jK3.js +0 -19
  188. package/dist/form-B9MShV4J.js +0 -508
  189. package/dist/icon-button-hS8-Jo0v.js +0 -36
  190. package/dist/icon-button-hS8-Jo0v.js.map +0 -1
  191. package/dist/input-builder-C6GkddCw.js +0 -18
  192. package/dist/menu-BR3G9OgU.js.map +0 -1
  193. package/dist/nav-link-DL59IUt0.js +0 -22
  194. package/dist/page-DNrVa_Zo.js +0 -19
  195. package/dist/push-DnJFFc_p.js +0 -24
  196. package/dist/sectioned-page-D9Xxr97R.js +0 -21
  197. package/dist/sectioned-page-D9Xxr97R.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"popover-wLRNTIPC.js","sources":["../src/components/windows/popover.gts"],"sourcesContent":["import type { TOC } from '@ember/component/template-only';\n\nexport interface PopoverSignature {\n Element: HTMLDivElement;\n Blocks: {\n default: [];\n };\n}\n\nexport const Popover: TOC<PopoverSignature> = <template>\n <div class=\"popover\" data-test-popover ...attributes>\n {{yield}}\n </div>\n</template>;\n"],"names":["Popover","setComponentTemplate","precompileTemplate","strictMode","templateOnly"],"mappings":";;;;MASaA,OAAa,GAAAC,oBAAA,CAAoBC,kBAAA,CAAA,wFAAA,EAI9C;EAAAC,UAAA,EAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
1
+ {"version":3,"file":"popover-CaKubr0X.js","sources":["../src/components/windows/popover.gts"],"sourcesContent":["import type { TOC } from '@ember/component/template-only';\n\nexport interface PopoverSignature {\n Element: HTMLDivElement;\n Blocks: {\n default: [];\n };\n}\n\nexport const Popover: TOC<PopoverSignature> = <template>\n <div class=\"popover\" data-test-popover ...attributes>\n {{yield}}\n </div>\n</template>;\n"],"names":["Popover","setComponentTemplate","precompileTemplate","strictMode","templateOnly"],"mappings":";;;;MASaA,OAAa,GAAAC,oBAAA,CAAoBC,kBAAA,CAAA,8EAAA,EAI9C;EAAAC,UAAA,EAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
@@ -0,0 +1,24 @@
1
+ import { on } from '@ember/modifier';
2
+ import { CommandElement } from 'ember-command';
3
+ import { element } from 'ember-element-helper';
4
+ import { link, Link } from 'ember-link';
5
+ import { precompileTemplate } from '@ember/template-compilation';
6
+ import { setComponentTemplate } from '@ember/component';
7
+ import templateOnly from '@ember/component/template-only';
8
+
9
+ const isActive = commandable => {
10
+ return commandable instanceof Link && commandable.isActive;
11
+ };
12
+ const PushElement = setComponentTemplate(precompileTemplate("{{#if @href}}\n {{#let (link @href) as |l|}}\n <a href={{l.url}} {{on \"click\" l.open}} aria-current=\"{{if (isActive l) \"page\"}}\" ...attributes>\n {{yield}}\n </a>\n {{/let}}\n{{else if @push}}\n <CommandElement @element={{@element}} @command={{@push}} aria-current=\"{{if (isActive @push) \"page\"}}\" ...attributes>\n {{yield}}\n </CommandElement>\n{{else}}\n {{#let (if @element @element (element \"span\")) as |Element|}}\n <Element ...attributes>\n {{yield}}\n </Element>\n {{/let}}\n{{/if}}", {
13
+ strictMode: true,
14
+ scope: () => ({
15
+ link,
16
+ isActive,
17
+ on,
18
+ CommandElement,
19
+ element
20
+ })
21
+ }), templateOnly());
22
+
23
+ export { PushElement as P, isActive as i };
24
+ //# sourceMappingURL=push-C8z1Qw41.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"push-DnJFFc_p.js","sources":["../src/-private/push.gts"],"sourcesContent":["import { on } from '@ember/modifier';\n\nimport { type CommandAction, CommandElement } from 'ember-command';\nimport { element, type ElementFromTagName, type ElementSignature } from 'ember-element-helper';\nimport { Link, link } from 'ember-link';\n\nimport type { TOC } from '@ember/component/template-only';\n\nexport const isActive = (commandable: CommandAction) => {\n return commandable instanceof Link && commandable.isActive;\n};\n\nexport interface PushArgs {\n push?: CommandAction;\n href?: string;\n}\n\ninterface PushSignature<T extends string = 'span'> {\n Element: HTMLButtonElement | HTMLAnchorElement | ElementFromTagName<T>;\n Args: PushArgs & {\n element?: ElementSignature<'a' | 'button' | T>['Return'];\n };\n Blocks: {\n default: [];\n };\n}\n\nexport const PushElement: TOC<PushSignature> = <template>\n {{#if @href}}\n {{#let (link @href) as |l|}}\n <a\n href={{l.url}}\n {{on \"click\" l.open}}\n aria-current=\"{{if (isActive l) 'page'}}\"\n ...attributes\n >\n {{yield}}\n </a>\n {{/let}}\n {{else if @push}}\n <CommandElement\n @element={{@element}}\n @command={{@push}}\n aria-current=\"{{if (isActive @push) 'page'}}\"\n ...attributes\n >\n {{yield}}\n </CommandElement>\n {{else}}\n {{#let (if @element @element (element \"span\")) as |Element|}}\n <Element ...attributes>\n {{yield}}\n </Element>\n {{/let}}\n {{/if}}\n</template>;\n"],"names":["isActive","commandable","Link","PushElement","setComponentTemplate","precompileTemplate","strictMode","scope","link","on","CommandElement","element","templateOnly"],"mappings":";;;;;;;;AAQO,MAAMA,QAAA,GAAYC,WAAa,IAAA;AACpC,EAAA,OAAOA,WAAA,YAAuBC,IAAA,IAAQD,WAAA,CAAYD,QAAQ;AAC5D;MAiBaG,WAAiB,GAAAC,oBAAA,CAAiBC,kBAAA,CAAA,4jBAAA,EA4B/C;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,IAAA;IAAAR,QAAA;IAAAS,EAAA;IAAAC,cAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
1
+ {"version":3,"file":"push-C8z1Qw41.js","sources":["../src/-private/push.gts"],"sourcesContent":["import { on } from '@ember/modifier';\n\nimport { type CommandAction, CommandElement } from 'ember-command';\nimport { element, type ElementFromTagName, type ElementSignature } from 'ember-element-helper';\nimport { Link, link } from 'ember-link';\n\nimport type { TOC } from '@ember/component/template-only';\n\nexport const isActive = (commandable: CommandAction) => {\n return commandable instanceof Link && commandable.isActive;\n};\n\nexport interface PushArgs {\n push?: CommandAction;\n href?: string;\n}\n\ninterface PushSignature<T extends string = 'span'> {\n Element: HTMLButtonElement | HTMLAnchorElement | ElementFromTagName<T>;\n Args: PushArgs & {\n element?: ElementSignature<'a' | 'button' | T>['Return'];\n };\n Blocks: {\n default: [];\n };\n}\n\nexport const PushElement: TOC<PushSignature> = <template>\n {{#if @href}}\n {{#let (link @href) as |l|}}\n <a\n href={{l.url}}\n {{on \"click\" l.open}}\n aria-current=\"{{if (isActive l) 'page'}}\"\n ...attributes\n >\n {{yield}}\n </a>\n {{/let}}\n {{else if @push}}\n <CommandElement\n @element={{@element}}\n @command={{@push}}\n aria-current=\"{{if (isActive @push) 'page'}}\"\n ...attributes\n >\n {{yield}}\n </CommandElement>\n {{else}}\n {{#let (if @element @element (element \"span\")) as |Element|}}\n <Element ...attributes>\n {{yield}}\n </Element>\n {{/let}}\n {{/if}}\n</template>;\n"],"names":["isActive","commandable","Link","PushElement","setComponentTemplate","precompileTemplate","strictMode","scope","link","on","CommandElement","element","templateOnly"],"mappings":";;;;;;;;AAQO,MAAMA,QAAA,GAAYC,WAAa,IAAA;AACpC,EAAA,OAAOA,WAAA,YAAuBC,IAAA,IAAQD,WAAA,CAAYD,QAAQ;AAC5D;MAiBaG,WAAiB,GAAAC,oBAAA,CAAiBC,kBAAA,CAAA,shBAAA,EA4B/C;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,IAAA;IAAAR,QAAA;IAAAS,EAAA;IAAAC,cAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
@@ -4,7 +4,7 @@ import { precompileTemplate } from '@ember/template-compilation';
4
4
  import { setComponentTemplate } from '@ember/component';
5
5
  import templateOnly from '@ember/component/template-only';
6
6
 
7
- const Radio = setComponentTemplate(precompileTemplate("\n <input class=\"input\" type=\"radio\" checked={{@value}} disabled={{@disabled}} data-spacing={{@spacing}} data-test-choice {{on \"input\" (pick \"target.checked\" @update) capture=true}} ...attributes />\n", {
7
+ const Radio = setComponentTemplate(precompileTemplate("<input class=\"input\" type=\"radio\" checked={{@value}} disabled={{@disabled}} data-spacing={{@spacing}} data-test-choice {{on \"input\" (pick \"target.checked\" @update) capture=true}} ...attributes />", {
8
8
  strictMode: true,
9
9
  scope: () => ({
10
10
  on,
@@ -13,4 +13,4 @@ const Radio = setComponentTemplate(precompileTemplate("\n <input class=\"input\
13
13
  }), templateOnly());
14
14
 
15
15
  export { Radio as R };
16
- //# sourceMappingURL=radio-BQvSPyDT.js.map
16
+ //# sourceMappingURL=radio-BQ_nDgm0.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"radio-BQvSPyDT.js","sources":["../src/components/controls/radio.gts"],"sourcesContent":["import { on } from '@ember/modifier';\n\nimport { pick } from '../../-private/helpers.ts';\n\nimport type { InputArgs } from './-input.ts';\nimport type { TOC } from '@ember/component/template-only';\n\nexport interface RadioSignature {\n Element: HTMLInputElement;\n Args: InputArgs<boolean>;\n}\n\nexport const Radio: TOC<RadioSignature> = <template>\n <input\n class=\"input\"\n type=\"radio\"\n checked={{@value}}\n disabled={{@disabled}}\n data-spacing={{@spacing}}\n data-test-choice\n {{on \"input\" (pick \"target.checked\" @update) capture=true}}\n ...attributes\n />\n</template>;\n"],"names":["Radio","setComponentTemplate","precompileTemplate","strictMode","scope","on","pick","templateOnly"],"mappings":";;;;;;MAYaA,KAAW,GAAAC,oBAAA,CAAkBC,kBAAA,CAAA,mNAAA,EAW1C;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,EAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
1
+ {"version":3,"file":"radio-BQ_nDgm0.js","sources":["../src/components/controls/radio.gts"],"sourcesContent":["import { on } from '@ember/modifier';\n\nimport { pick } from '../../-private/helpers.ts';\n\nimport type { InputArgs } from './-input.ts';\nimport type { TOC } from '@ember/component/template-only';\n\nexport interface RadioSignature {\n Element: HTMLInputElement;\n Args: InputArgs<boolean>;\n}\n\nexport const Radio: TOC<RadioSignature> = <template>\n <input\n class=\"input\"\n type=\"radio\"\n checked={{@value}}\n disabled={{@disabled}}\n data-spacing={{@spacing}}\n data-test-choice\n {{on \"input\" (pick \"target.checked\" @update) capture=true}}\n ...attributes\n />\n</template>;\n"],"names":["Radio","setComponentTemplate","precompileTemplate","strictMode","scope","on","pick","templateOnly"],"mappings":";;;;;;MAYaA,KAAW,GAAAC,oBAAA,CAAkBC,kBAAA,CAAA,6MAAA,EAW1C;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,EAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
@@ -0,0 +1,91 @@
1
+ import Component from '@glimmer/component';
2
+ import { assert } from '@ember/debug';
3
+ import { registerDestructor } from '@ember/destroyable';
4
+ import { hash } from '@ember/helper';
5
+ import { next } from '@ember/runloop';
6
+ import { ariaRadioGroup } from 'ember-aria-voyager';
7
+ import { TrackedArray } from 'tracked-built-ins';
8
+ import { d as disabled } from './disabled-B_FQ0Z51.js';
9
+ import { I as Icon } from './icon-ej-3ZqQt.js';
10
+ import { precompileTemplate } from '@ember/template-compilation';
11
+ import { setComponentTemplate } from '@ember/component';
12
+
13
+ class RadioButton extends Component {
14
+ constructor(owner, args) {
15
+ super(owner, args);
16
+ args.register(args.value);
17
+ registerDestructor(this, () => {
18
+ args.unregister(args.value);
19
+ });
20
+ }
21
+ static {
22
+ setComponentTemplate(precompileTemplate("<button type=\"button\" role=\"radio\" class=\"button\" aria-checked={{if (@isSelected @value) \"true\" \"false\"}} data-intent={{if @intent @intent \"action\"}} data-importance={{if @importance @importance \"supreme\"}} data-spacing={{@spacing}} {{disabled when=(if @disabled @disabled false)}} data-test-button ...attributes>\n {{#if (has-block \"before\")}}\n <span data-test-button=\"before\">\n {{yield to=\"before\"}}\n </span>\n {{/if}}\n\n <span data-test-button=\"label\">\n {{#if (has-block \"label\")}}\n {{yield to=\"label\"}}\n {{/if}}\n\n {{#if (has-block)}}\n {{yield}}\n {{/if}}\n </span>\n\n {{#if (has-block \"after\")}}\n <span data-test-button=\"after\">\n {{yield to=\"after\"}}\n </span>\n {{/if}}\n</button>", {
23
+ strictMode: true,
24
+ scope: () => ({
25
+ disabled
26
+ })
27
+ }), this);
28
+ }
29
+ }
30
+ class RadioIconButton extends Component {
31
+ constructor(owner, args) {
32
+ super(owner, args);
33
+ args.register(args.value);
34
+ registerDestructor(this, () => {
35
+ args.unregister(args.value);
36
+ });
37
+ }
38
+ get label() {
39
+ assert('Please provide a `@label` to `<IconButton>` for accessibility reasons.',
40
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
41
+ this.args.label !== undefined);
42
+ return this.args.label;
43
+ }
44
+ static {
45
+ setComponentTemplate(precompileTemplate("<button type=\"button\" role=\"radio\" class=\"icon-button\" aria-checked={{if (@isSelected @value) \"true\" \"false\"}} data-intent={{if @intent @intent \"action\"}} data-importance={{if @importance @importance \"supreme\"}} data-spacing={{@spacing}} aria-label={{this.label}} {{disabled when=(if @disabled @disabled false)}} data-test-icon-button ...attributes>\n {{!-- role=\"presentation\" to make glint happy for no reason --}}\n <Icon @icon={{@icon}} role=\"presentation\" data-test-icon-button=\"icon\" />\n</button>", {
46
+ strictMode: true,
47
+ scope: () => ({
48
+ disabled,
49
+ Icon
50
+ })
51
+ }), this);
52
+ }
53
+ }
54
+ class RadioButtonGroup extends Component {
55
+ Button = RadioButton;
56
+ IconButton = RadioIconButton;
57
+ items = new TrackedArray();
58
+ register = item => {
59
+ // eslint-disable-next-line ember/no-runloop
60
+ next(() => {
61
+ this.items.push(item);
62
+ });
63
+ };
64
+ unregister = item => {
65
+ // eslint-disable-next-line ember/no-runloop
66
+ next(() => {
67
+ this.items.splice(this.items.indexOf(item), 1);
68
+ });
69
+ };
70
+ isChecked = value => {
71
+ return this.args.value === value;
72
+ };
73
+ select = value => {
74
+ // eslint-disable-next-line ember/no-runloop
75
+ next(() => {
76
+ this.args.update?.(value);
77
+ });
78
+ };
79
+ static {
80
+ setComponentTemplate(precompileTemplate("<div class=\"button-group\" {{ariaRadioGroup items=this.items selection=@value select=this.select}}>\n {{yield (hash Button=(component this.Button register=this.register unregister=this.unregister isSelected=this.isChecked) IconButton=(component this.IconButton register=this.register unregister=this.unregister isSelected=this.isChecked))}}\n</div>", {
81
+ strictMode: true,
82
+ scope: () => ({
83
+ ariaRadioGroup,
84
+ hash
85
+ })
86
+ }), this);
87
+ }
88
+ }
89
+
90
+ export { RadioButtonGroup as R };
91
+ //# sourceMappingURL=radio-button-group-D7LjyINa.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radio-button-group-D7LjyINa.js","sources":["../src/components/actions/radio-button-group.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { assert } from '@ember/debug';\nimport { registerDestructor } from '@ember/destroyable';\nimport { hash } from '@ember/helper';\nimport { next } from '@ember/runloop';\n\nimport { ariaRadioGroup } from 'ember-aria-voyager';\n// at some point this. For compatibility reasons, this isn't used yet\n// import { trackedArray } from '@ember/reactive/collections';\nimport { TrackedArray } from 'tracked-built-ins';\n\nimport disabled from '../../-private/modifiers/disabled.ts';\nimport { Icon } from '../graphics/icon.gts';\n\nimport type { ButtonArgs, ButtonBlocks, IconButtonArgs } from './-button.ts';\nimport type Owner from '@ember/owner';\nimport type { WithBoundArgs } from '@glint/template';\n\ninterface RadioArgs<V> {\n value: V;\n register: (button: V) => void;\n unregister: (button: V) => void;\n isSelected: (value: V) => boolean;\n}\n\ninterface RadioButtonSignature<V> {\n Element: HTMLButtonElement;\n Args: ButtonArgs & RadioArgs<V>;\n Blocks: ButtonBlocks;\n}\n\nclass RadioButton<V> extends Component<RadioButtonSignature<V>> {\n constructor(owner: Owner, args: RadioButtonSignature<V>['Args']) {\n super(owner, args);\n\n args.register(args.value);\n\n registerDestructor(this, () => {\n args.unregister(args.value);\n });\n }\n\n <template>\n <button\n type=\"button\"\n role=\"radio\"\n class=\"button\"\n aria-checked={{if (@isSelected @value) \"true\" \"false\"}}\n data-intent={{if @intent @intent \"action\"}}\n data-importance={{if @importance @importance \"supreme\"}}\n data-spacing={{@spacing}}\n {{disabled when=(if @disabled @disabled false)}}\n data-test-button\n ...attributes\n >\n {{#if (has-block \"before\")}}\n <span data-test-button=\"before\">\n {{yield to=\"before\"}}\n </span>\n {{/if}}\n\n <span data-test-button=\"label\">\n {{#if (has-block \"label\")}}\n {{yield to=\"label\"}}\n {{/if}}\n\n {{#if (has-block)}}\n {{yield}}\n {{/if}}\n </span>\n\n {{#if (has-block \"after\")}}\n <span data-test-button=\"after\">\n {{yield to=\"after\"}}\n </span>\n {{/if}}\n </button>\n </template>\n}\n\ninterface RadioIconButtonSignature<V> {\n Element: HTMLButtonElement;\n Args: ButtonArgs & IconButtonArgs & RadioArgs<V>;\n Blocks: ButtonBlocks;\n}\n\nclass RadioIconButton<V> extends Component<RadioIconButtonSignature<V>> {\n constructor(owner: Owner, args: RadioIconButtonSignature<V>['Args']) {\n super(owner, args);\n\n args.register(args.value);\n\n registerDestructor(this, () => {\n args.unregister(args.value);\n });\n }\n\n get label() {\n assert(\n 'Please provide a `@label` to `<IconButton>` for accessibility reasons.',\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n this.args.label !== undefined\n );\n\n return this.args.label;\n }\n\n <template>\n <button\n type=\"button\"\n role=\"radio\"\n class=\"icon-button\"\n aria-checked={{if (@isSelected @value) \"true\" \"false\"}}\n data-intent={{if @intent @intent \"action\"}}\n data-importance={{if @importance @importance \"supreme\"}}\n data-spacing={{@spacing}}\n aria-label={{this.label}}\n {{disabled when=(if @disabled @disabled false)}}\n data-test-icon-button\n ...attributes\n >\n {{! role=\"presentation\" to make glint happy for no reason }}\n <Icon @icon={{@icon}} role=\"presentation\" data-test-icon-button=\"icon\" />\n </button>\n </template>\n}\n\ntype RadioButtonGroupSignature<V> = {\n Element: HTMLDivElement;\n Args: {\n value: V;\n update?: (value: V) => void;\n };\n Blocks: {\n default: [\n {\n Button: WithBoundArgs<typeof RadioButton<V>, 'register' | 'unregister' | 'isSelected'>;\n IconButton: WithBoundArgs<\n typeof RadioIconButton<V>,\n 'register' | 'unregister' | 'isSelected'\n >;\n }\n ];\n };\n};\n\nexport class RadioButtonGroup<V> extends Component<RadioButtonGroupSignature<V>> {\n Button = RadioButton<V>;\n IconButton = RadioIconButton<V>;\n\n items: V[] = new TrackedArray();\n\n register = (item: V) => {\n // eslint-disable-next-line ember/no-runloop\n next(() => {\n this.items.push(item);\n });\n };\n\n unregister = (item: V) => {\n // eslint-disable-next-line ember/no-runloop\n next(() => {\n this.items.splice(this.items.indexOf(item), 1);\n });\n };\n\n isChecked = (value: V) => {\n return this.args.value === value;\n };\n\n select = (value: V) => {\n // eslint-disable-next-line ember/no-runloop\n next(() => {\n this.args.update?.(value);\n });\n };\n\n <template>\n <div\n class=\"button-group\"\n {{ariaRadioGroup items=this.items selection=@value select=this.select}}\n >\n {{yield\n (hash\n Button=(component\n this.Button register=this.register unregister=this.unregister isSelected=this.isChecked\n )\n IconButton=(component\n this.IconButton\n register=this.register\n unregister=this.unregister\n isSelected=this.isChecked\n )\n )\n }}\n </div>\n </template>\n}\n"],"names":["RadioButton","Component","constructor","owner","args","register","value","registerDestructor","unregister","setComponentTemplate","precompileTemplate","strictMode","scope","disabled","RadioIconButton","label","assert","undefined","Icon","RadioButtonGroup","Button","IconButton","items","TrackedArray","item","next","push","splice","indexOf","isChecked","select","update","ariaRadioGroup","hash"],"mappings":";;;;;;;;;;;;AA+BA,MAAMA,WAAA,SAAuBC,SAAA,CAA+B;AAC1DC,EAAAA,WAAAA,CAAYC,KAAY,EAAEC,IAAqC,EAAE;AAC/D,IAAA,KAAK,CAACD,KAAA,EAAOC,IAAA,CAAA;AAEbA,IAAAA,IAAA,CAAKC,QAAQ,CAACD,IAAA,CAAKE,KAAK,CAAA;IAExBC,kBAAA,CAAmB,IAAI,EAAE,MAAA;AACvBH,MAAAA,IAAA,CAAKI,UAAU,CAACJ,IAAA,CAAKE,KAAK,CAAA;AAC5B,IAAA,CAAA,CAAA;AACF,EAAA;AAEA,EAAA;IAAAG,oBAAA,CAAAC,kBAAA,CAAA,8wBAAA,EAmCA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;AAAAC,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;AAQA,MAAMC,eAAA,SAA2Bb,SAAA,CAAmC;AAClEC,EAAAA,WAAAA,CAAYC,KAAY,EAAEC,IAAyC,EAAE;AACnE,IAAA,KAAK,CAACD,KAAA,EAAOC,IAAA,CAAA;AAEbA,IAAAA,IAAA,CAAKC,QAAQ,CAACD,IAAA,CAAKE,KAAK,CAAA;IAExBC,kBAAA,CAAmB,IAAI,EAAE,MAAA;AACvBH,MAAAA,IAAA,CAAKI,UAAU,CAACJ,IAAA,CAAKE,KAAK,CAAA;AAC5B,IAAA,CAAA,CAAA;AACF,EAAA;EAEA,IAAIS,KAAAA,GAAQ;AACVC,IAAAA,MAAA,CACE;AAEA;AACA,IAAA,IAAI,CAACZ,IAAI,CAACW,KAAK,KAAKE,SAAA,CAAA;AAGtB,IAAA,OAAO,IAAI,CAACb,IAAI,CAACW,KAAK;AACxB,EAAA;AAEA,EAAA;IAAAN,oBAAA,CAAAC,kBAAA,CAAA,+gBAAA,EAiBA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,QAAA;AAAAK,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;AAqBO,MAAMC,gBAAA,SAA4BlB,SAAA,CAAoC;AAC3EmB,EAAAA,MAAA,GAASpB;AACTqB,EAAAA,UAAA,GAAaP;AAEbQ,EAAAA,KAAA,GAAa,IAAIC,YAAA,EAAA;EAEjBlB,QAAA,GAAYmB,IAAM,IAAA;AAChB;AACAC,IAAAA,IAAA,CAAK,MAAA;AACH,MAAA,IAAI,CAACH,KAAK,CAACI,IAAI,CAACF,IAAA,CAAA;AAClB,IAAA,CAAA,CAAA;EACF,CAAA;EAEAhB,UAAA,GAAcgB,IAAM,IAAA;AAClB;AACAC,IAAAA,IAAA,CAAK,MAAA;AACH,MAAA,IAAI,CAACH,KAAK,CAACK,MAAM,CAAC,IAAI,CAACL,KAAK,CAACM,OAAO,CAACJ,IAAA,CAAA,EAAO,CAAA,CAAA;AAC9C,IAAA,CAAA,CAAA;EACF,CAAA;EAEAK,SAAA,GAAavB,KAAO,IAAA;AAClB,IAAA,OAAO,IAAI,CAACF,IAAI,CAACE,KAAK,KAAKA,KAAA;EAC7B,CAAA;EAEAwB,MAAA,GAAUxB,KAAO,IAAA;AACf;AACAmB,IAAAA,IAAA,CAAK,MAAA;AACH,MAAA,IAAI,CAACrB,IAAI,CAAC2B,MAAM,GAAGzB,KAAA,CAAA;AACrB,IAAA,CAAA,CAAA;EACF,CAAA;AAEA,EAAA;IAAAG,oBAAA,CAAAC,kBAAA,CAAA,gWAAA,EAmBA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAoB,cAAA;AAAAC,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"}
@@ -21,7 +21,7 @@ const progressStyle = modifier((element, [value]) => {
21
21
  element.addEventListener('input', listenForProgressChange);
22
22
  return () => element.removeEventListener('input', listenForProgressChange);
23
23
  });
24
- const RangeInput = setComponentTemplate(precompileTemplate("\n <input class=\"input\" type=\"range\" value={{@value}} disabled={{@disabled}} data-test-input data-orientation={{@orientation}} {{on \"input\" (pick \"target.value\" (pickAsNumber @update)) capture=true}} {{progressStyle @value}} ...attributes />\n", {
24
+ const RangeInput = setComponentTemplate(precompileTemplate("<input class=\"input\" type=\"range\" value={{@value}} disabled={{@disabled}} data-test-input data-orientation={{@orientation}} {{on \"input\" (pick \"target.value\" (pickAsNumber @update)) capture=true}} {{progressStyle @value}} ...attributes />", {
25
25
  strictMode: true,
26
26
  scope: () => ({
27
27
  on,
@@ -32,4 +32,4 @@ const RangeInput = setComponentTemplate(precompileTemplate("\n <input class=\"i
32
32
  }), templateOnly());
33
33
 
34
34
  export { RangeInput as R };
35
- //# sourceMappingURL=range-input-Bosd7QI2.js.map
35
+ //# sourceMappingURL=range-input-Oc8Z7tsH.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"range-input-Bosd7QI2.js","sources":["../src/components/controls/range-input.gts"],"sourcesContent":["import { on } from '@ember/modifier';\n\nimport { modifier } from 'ember-modifier';\n\nimport { pick } from '../../-private/helpers.ts';\nimport { pickAsNumber } from './-input.ts';\n\nimport type { InputArgs } from './-input.ts';\nimport type { TOC } from '@ember/component/template-only';\n\nfunction applyProgressStyle(range: HTMLInputElement, value?: number) {\n const min = Number.parseFloat(range.min) || 0;\n const max = Number.parseFloat(range.max) || 100;\n const currentVal = value ?? Number.parseFloat(range.value);\n const progress = ((currentVal - min) / (max - min)) * 100;\n\n range.style.setProperty('--_hokulea-slider-progress', `${progress}%`);\n}\n\nconst progressStyle = modifier((element: HTMLInputElement, [value]: [number?]) => {\n applyProgressStyle(element, value);\n\n const listenForProgressChange = () => {\n applyProgressStyle(element);\n };\n\n element.addEventListener('input', listenForProgressChange);\n\n return () => element.removeEventListener('input', listenForProgressChange);\n});\n\nexport interface RangeInputSignature {\n Element: HTMLInputElement;\n Args: Omit<InputArgs<number>, 'spacing'> & {\n min?: number;\n max?: number;\n step?: number | 'any';\n orientation?: 'horizontal' | 'vertical';\n };\n}\n\nexport const RangeInput: TOC<RangeInputSignature> = <template>\n <input\n class=\"input\"\n type=\"range\"\n value={{@value}}\n disabled={{@disabled}}\n data-test-input\n data-orientation={{@orientation}}\n {{on \"input\" (pick \"target.value\" (pickAsNumber @update)) capture=true}}\n {{progressStyle @value}}\n ...attributes\n />\n</template>;\n"],"names":["applyProgressStyle","range","value","min","Number","parseFloat","max","currentVal","progress","style","setProperty","progressStyle","modifier","element","listenForProgressChange","addEventListener","removeEventListener","RangeInput","setComponentTemplate","precompileTemplate","strictMode","scope","on","pick","pickAsNumber","templateOnly"],"mappings":";;;;;;;;AAUA,SAASA,kBAAAA,CAAmBC,KAAuB,EAAEC,KAAc,EAAA;EACjE,MAAMC,MAAMC,MAAA,CAAOC,UAAU,CAACJ,KAAA,CAAME,GAAG,CAAA,IAAK,CAAA;EAC5C,MAAMG,MAAMF,MAAA,CAAOC,UAAU,CAACJ,KAAA,CAAMK,GAAG,CAAA,IAAK,GAAA;EAC5C,MAAMC,aAAaL,KAAA,IAASE,MAAA,CAAOC,UAAU,CAACJ,MAAMC,KAAK,CAAA;AACzD,EAAA,MAAMM,QAAA,GAAY,CAACD,UAAA,GAAaJ,GAAG,KAAKG,GAAA,GAAMH,GAAG,CAAC,GAAI,GAAA;EAEtDF,KAAA,CAAMQ,KAAK,CAACC,WAAW,CAAC,8BAA8B,CAAA,EAAGF,QAAA,CAAA,CAAA,CAAW,CAAA;AACtE;AAEA,MAAMG,aAAA,GAAgBC,SAAS,CAACC,SAA2B,CAACX,KAAA,CAAiB,KAAA;AAC3EF,EAAAA,kBAAA,CAAmBa,OAAA,EAASX,KAAA,CAAA;EAE5B,MAAMY,uBAAA,GAA0BA,MAAA;IAC9Bd,kBAAA,CAAmBa,OAAA,CAAA;EACrB,CAAA;AAEAA,EAAAA,OAAA,CAAQE,gBAAgB,CAAC,OAAA,EAASD,uBAAA,CAAA;EAElC,OAAO,MAAMD,OAAA,CAAQG,mBAAmB,CAAC,OAAA,EAASF,uBAAA,CAAA;AACpD,CAAA,CAAA;MAYaG,UAAgB,GAAAC,oBAAA,CAAuBC,kBAAA,CAAA,8PAAA,EAYpD;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,EAAA;IAAAC,IAAA;IAAAC,YAAA;AAAAb,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAc,YAAA,EAAA;;;;"}
1
+ {"version":3,"file":"range-input-Oc8Z7tsH.js","sources":["../src/components/controls/range-input.gts"],"sourcesContent":["import { on } from '@ember/modifier';\n\nimport { modifier } from 'ember-modifier';\n\nimport { pick } from '../../-private/helpers.ts';\nimport { pickAsNumber } from './-input.ts';\n\nimport type { InputArgs } from './-input.ts';\nimport type { TOC } from '@ember/component/template-only';\n\nfunction applyProgressStyle(range: HTMLInputElement, value?: number) {\n const min = Number.parseFloat(range.min) || 0;\n const max = Number.parseFloat(range.max) || 100;\n const currentVal = value ?? Number.parseFloat(range.value);\n const progress = ((currentVal - min) / (max - min)) * 100;\n\n range.style.setProperty('--_hokulea-slider-progress', `${progress}%`);\n}\n\nconst progressStyle = modifier((element: HTMLInputElement, [value]: [number?]) => {\n applyProgressStyle(element, value);\n\n const listenForProgressChange = () => {\n applyProgressStyle(element);\n };\n\n element.addEventListener('input', listenForProgressChange);\n\n return () => element.removeEventListener('input', listenForProgressChange);\n});\n\nexport interface RangeInputSignature {\n Element: HTMLInputElement;\n Args: Omit<InputArgs<number>, 'spacing'> & {\n min?: number;\n max?: number;\n step?: number | 'any';\n orientation?: 'horizontal' | 'vertical';\n };\n}\n\nexport const RangeInput: TOC<RangeInputSignature> = <template>\n <input\n class=\"input\"\n type=\"range\"\n value={{@value}}\n disabled={{@disabled}}\n data-test-input\n data-orientation={{@orientation}}\n {{on \"input\" (pick \"target.value\" (pickAsNumber @update)) capture=true}}\n {{progressStyle @value}}\n ...attributes\n />\n</template>;\n"],"names":["applyProgressStyle","range","value","min","Number","parseFloat","max","currentVal","progress","style","setProperty","progressStyle","modifier","element","listenForProgressChange","addEventListener","removeEventListener","RangeInput","setComponentTemplate","precompileTemplate","strictMode","scope","on","pick","pickAsNumber","templateOnly"],"mappings":";;;;;;;;AAUA,SAASA,kBAAAA,CAAmBC,KAAuB,EAAEC,KAAc,EAAA;EACjE,MAAMC,MAAMC,MAAA,CAAOC,UAAU,CAACJ,KAAA,CAAME,GAAG,CAAA,IAAK,CAAA;EAC5C,MAAMG,MAAMF,MAAA,CAAOC,UAAU,CAACJ,KAAA,CAAMK,GAAG,CAAA,IAAK,GAAA;EAC5C,MAAMC,aAAaL,KAAA,IAASE,MAAA,CAAOC,UAAU,CAACJ,MAAMC,KAAK,CAAA;AACzD,EAAA,MAAMM,QAAA,GAAY,CAACD,UAAA,GAAaJ,GAAG,KAAKG,GAAA,GAAMH,GAAG,CAAC,GAAI,GAAA;EAEtDF,KAAA,CAAMQ,KAAK,CAACC,WAAW,CAAC,8BAA8B,CAAA,EAAGF,QAAA,CAAA,CAAA,CAAW,CAAA;AACtE;AAEA,MAAMG,aAAA,GAAgBC,SAAS,CAACC,SAA2B,CAACX,KAAA,CAAiB,KAAA;AAC3EF,EAAAA,kBAAA,CAAmBa,OAAA,EAASX,KAAA,CAAA;EAE5B,MAAMY,uBAAA,GAA0BA,MAAA;IAC9Bd,kBAAA,CAAmBa,OAAA,CAAA;EACrB,CAAA;AAEAA,EAAAA,OAAA,CAAQE,gBAAgB,CAAC,OAAA,EAASD,uBAAA,CAAA;EAElC,OAAO,MAAMD,OAAA,CAAQG,mBAAmB,CAAC,OAAA,EAASF,uBAAA,CAAA;AACpD,CAAA,CAAA;MAYaG,UAAgB,GAAAC,oBAAA,CAAuBC,kBAAA,CAAA,wPAAA,EAYpD;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,EAAA;IAAAC,IAAA;IAAAC,YAAA;AAAAb,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAc,YAAA,EAAA;;;;"}
@@ -9,7 +9,7 @@ function elementForLevel(level) {
9
9
  assert(`@level for <Section> must be between 1 and 6, received '${lvl}'`, lvl >= 1 && lvl <= 6);
10
10
  return `h${lvl}`;
11
11
  }
12
- const Section = setComponentTemplate(precompileTemplate("\n <section class=\"section flow\" data-test-section ...attributes>\n {{#if @title}}\n <header data-test-section=\"header\" part=\"header\">\n {{#if @title}}\n {{#let (element (elementForLevel @level)) as |Headline|}}\n <Headline data-test-section=\"title\" part=\"title\">{{@title}}</Headline>\n {{/let}}\n {{/if}}\n </header>\n {{/if}}\n\n {{#if (has-block)}}\n {{yield}}\n {{/if}}\n </section>\n", {
12
+ const Section = setComponentTemplate(precompileTemplate("<section class=\"section flow\" data-test-section ...attributes>\n {{#if @title}}\n <header data-test-section=\"header\" part=\"header\">\n {{#if @title}}\n {{#let (element (elementForLevel @level)) as |Headline|}}\n <Headline data-test-section=\"title\" part=\"title\">{{@title}}</Headline>\n {{/let}}\n {{/if}}\n </header>\n {{/if}}\n\n {{#if (has-block)}}\n {{yield}}\n {{/if}}\n</section>", {
13
13
  strictMode: true,
14
14
  scope: () => ({
15
15
  element,
@@ -18,4 +18,4 @@ const Section = setComponentTemplate(precompileTemplate("\n <section class=\"se
18
18
  }), templateOnly());
19
19
 
20
20
  export { Section as S };
21
- //# sourceMappingURL=section-B_1poNPX.js.map
21
+ //# sourceMappingURL=section-DbYzqbWp.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"section-B_1poNPX.js","sources":["../src/components/content/section.gts"],"sourcesContent":["import { assert } from '@ember/debug';\n\nimport { element } from 'ember-element-helper';\n\nimport type { TOC } from '@ember/component/template-only';\n\nexport interface SectionSignature {\n Element: HTMLElement;\n Args: {\n title?: string;\n /**\n * The level of the component, 1-6 as in `<h1>` to `<h6>`\n *\n * @defaultValue 2\n */\n level?: string;\n };\n Blocks: {\n default: [];\n };\n}\n\nfunction elementForLevel(level?: string) {\n const lvl = level ? Number.parseInt(level) : 2;\n\n assert(`@level for <Section> must be between 1 and 6, received '${lvl}'`, lvl >= 1 && lvl <= 6);\n\n return `h${lvl}`;\n}\n\nexport const Section: TOC<SectionSignature> = <template>\n <section class=\"section flow\" data-test-section ...attributes>\n {{#if @title}}\n <header data-test-section=\"header\" part=\"header\">\n {{#if @title}}\n {{#let (element (elementForLevel @level)) as |Headline|}}\n <Headline data-test-section=\"title\" part=\"title\">{{@title}}</Headline>\n {{/let}}\n {{/if}}\n </header>\n {{/if}}\n\n {{#if (has-block)}}\n {{yield}}\n {{/if}}\n </section>\n</template>;\n"],"names":["elementForLevel","level","lvl","Number","parseInt","assert","Section","setComponentTemplate","precompileTemplate","strictMode","scope","element","templateOnly"],"mappings":";;;;;;AAsBA,SAASA,eAAAA,CAAgBC,KAAc,EAAA;EACrC,MAAMC,GAAA,GAAMD,KAAA,GAAQE,MAAA,CAAOC,QAAQ,CAACH,KAAA,CAAA,GAAS,CAAA;AAE7CI,EAAAA,MAAA,CAAO,CAAA,wDAAA,EAA2DH,GAAA,CAAA,CAAA,CAAM,EAAEA,GAAA,IAAO,CAAA,IAAKA,GAAA,IAAO,CAAA,CAAA;EAE7F,OAAO,CAAA,CAAA,EAAIA,GAAA,CAAA,CAAK;AAClB;MAEaI,OAAa,GAAAC,oBAAA,CAAoBC,kBAAA,CAAA,wdAAA,EAgB9C;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,OAAA;AAAAX,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAY,YAAA,EAAA;;;;"}
1
+ {"version":3,"file":"section-DbYzqbWp.js","sources":["../src/components/content/section.gts"],"sourcesContent":["import { assert } from '@ember/debug';\n\nimport { element } from 'ember-element-helper';\n\nimport type { TOC } from '@ember/component/template-only';\n\nexport interface SectionSignature {\n Element: HTMLElement;\n Args: {\n title?: string;\n /**\n * The level of the component, 1-6 as in `<h1>` to `<h6>`\n *\n * @defaultValue 2\n */\n level?: string;\n };\n Blocks: {\n default: [];\n };\n}\n\nfunction elementForLevel(level?: string) {\n const lvl = level ? Number.parseInt(level) : 2;\n\n assert(`@level for <Section> must be between 1 and 6, received '${lvl}'`, lvl >= 1 && lvl <= 6);\n\n return `h${lvl}`;\n}\n\nexport const Section: TOC<SectionSignature> = <template>\n <section class=\"section flow\" data-test-section ...attributes>\n {{#if @title}}\n <header data-test-section=\"header\" part=\"header\">\n {{#if @title}}\n {{#let (element (elementForLevel @level)) as |Headline|}}\n <Headline data-test-section=\"title\" part=\"title\">{{@title}}</Headline>\n {{/let}}\n {{/if}}\n </header>\n {{/if}}\n\n {{#if (has-block)}}\n {{yield}}\n {{/if}}\n </section>\n</template>;\n"],"names":["elementForLevel","level","lvl","Number","parseInt","assert","Section","setComponentTemplate","precompileTemplate","strictMode","scope","element","templateOnly"],"mappings":";;;;;;AAsBA,SAASA,eAAAA,CAAgBC,KAAc,EAAA;EACrC,MAAMC,GAAA,GAAMD,KAAA,GAAQE,MAAA,CAAOC,QAAQ,CAACH,KAAA,CAAA,GAAS,CAAA;AAE7CI,EAAAA,MAAA,CAAO,CAAA,wDAAA,EAA2DH,GAAA,CAAA,CAAA,CAAM,EAAEA,GAAA,IAAO,CAAA,IAAKA,GAAA,IAAO,CAAA,CAAA;EAE7F,OAAO,CAAA,CAAA,EAAIA,GAAA,CAAA,CAAK;AAClB;MAEaI,OAAa,GAAAC,oBAAA,CAAoBC,kBAAA,CAAA,wbAAA,EAgB9C;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,OAAA;AAAAX,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAY,YAAA,EAAA;;;;"}
@@ -0,0 +1,21 @@
1
+ import { element } from 'ember-element-helper';
2
+ import { o as or } from './helpers-D4So5-uK.js';
3
+ import { T as TabNav } from './tab-nav-pvb2XhOD.js';
4
+ import { P as PageDestructor, a as PageElement } from './pages-DgHJEvSy.js';
5
+ import { precompileTemplate } from '@ember/template-compilation';
6
+ import { setComponentTemplate } from '@ember/component';
7
+ import templateOnly from '@ember/component/template-only';
8
+
9
+ const SectionedPage = setComponentTemplate(precompileTemplate("{{#let (if @element @element (element (pageElement))) as |Element|}}\n <Element class=\"sectioned-page\" {{pageDestructor}} ...attributes data-test-page>\n {{#if (or @title @description (has-block \"title\") (has-block \"description\") (has-block \"nav\"))}}\n <header class=\"page-content\">\n <h1 class=\"typography-display\">\n {{#if (has-block \"title\")}}\n {{yield to=\"title\"}}\n {{else if @title}}\n {{@title}}\n {{/if}}\n </h1>\n\n {{#if (or (has-block \"description\") @description)}}\n <p>\n {{#if (has-block \"description\")}}\n {{yield to=\"description\"}}\n {{else if @description}}\n {{@description}}\n {{/if}}\n </p>\n {{/if}}\n\n {{#if (has-block \"nav\")}}\n <TabNav as |n|>\n {{yield n.Item to=\"nav\"}}\n </TabNav>\n {{/if}}\n </header>\n {{/if}}\n\n <div class=\"page-content flow\" part=\"content\">\n {{#if (has-block \"content\")}}\n {{yield to=\"content\"}}\n {{else if (has-block)}}\n {{yield}}\n {{/if}}\n </div>\n </Element>\n{{/let}}", {
10
+ strictMode: true,
11
+ scope: () => ({
12
+ element,
13
+ pageElement: PageElement,
14
+ pageDestructor: PageDestructor,
15
+ or,
16
+ TabNav
17
+ })
18
+ }), templateOnly());
19
+
20
+ export { SectionedPage as S };
21
+ //# sourceMappingURL=sectioned-page-Ba06ASAC.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sectioned-page-Ba06ASAC.js","sources":["../src/components/layouts/sectioned-page.gts"],"sourcesContent":["import { element } from 'ember-element-helper';\n\nimport { or } from '../../-private/helpers.ts';\nimport TabNav from '../tab-nav.gts';\nimport { pageDestructor, pageElement } from './pages.ts';\n\nimport type { NavLink } from '../navigation/nav-link.gts';\nimport type { TOC } from '@ember/component/template-only';\nimport type { ComponentLike } from '@glint/template';\n\ninterface SectionedPageSignature {\n Element: HTMLElement;\n Args: {\n title?: string;\n description?: string;\n element?: ComponentLike<{ Element: HTMLElement; Blocks: { default: [] } }>;\n };\n Blocks: {\n title?: [];\n description?: [];\n nav?: [typeof NavLink];\n content?: [];\n default?: [];\n };\n}\n\nexport const SectionedPage: TOC<SectionedPageSignature> = <template>\n {{#let (if @element @element (element (pageElement))) as |Element|}}\n <Element class=\"sectioned-page\" {{pageDestructor}} ...attributes data-test-page>\n {{#if\n (or @title @description (has-block \"title\") (has-block \"description\") (has-block \"nav\"))\n }}\n <header class=\"page-content\">\n <h1 class=\"typography-display\">\n {{#if (has-block \"title\")}}\n {{yield to=\"title\"}}\n {{else if @title}}\n {{@title}}\n {{/if}}\n </h1>\n\n {{#if (or (has-block \"description\") @description)}}\n <p>\n {{#if (has-block \"description\")}}\n {{yield to=\"description\"}}\n {{else if @description}}\n {{@description}}\n {{/if}}\n </p>\n {{/if}}\n\n {{#if (has-block \"nav\")}}\n <TabNav as |n|>\n {{yield n.Item to=\"nav\"}}\n </TabNav>\n {{/if}}\n </header>\n {{/if}}\n\n <div class=\"page-content flow\" part=\"content\">\n {{#if (has-block \"content\")}}\n {{yield to=\"content\"}}\n {{else if (has-block)}}\n {{yield}}\n {{/if}}\n </div>\n </Element>\n {{/let}}\n</template>;\n"],"names":["SectionedPage","setComponentTemplate","precompileTemplate","strictMode","scope","element","pageElement","pageDestructor","or","TabNav","templateOnly"],"mappings":";;;;;;;;MA0BaA,aAAmB,GAAAC,oBAAA,CAA0BC,kBAAA,CAAA,+rCAAA,EA0C1D;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,OAAA;iBAAAC,WAAA;oBAAAC,cAAA;IAAAC,EAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
@@ -5,7 +5,7 @@ import { precompileTemplate } from '@ember/template-compilation';
5
5
  import { setComponentTemplate } from '@ember/component';
6
6
  import templateOnly from '@ember/component/template-only';
7
7
 
8
- const Option = setComponentTemplate(precompileTemplate("\n <option value={{@value}} selected={{@isSelected @value}} ...attributes>\n {{#if (has-block)}}\n {{yield}}\n {{else}}\n {{@value}}\n {{/if}}\n </option>\n", {
8
+ const Option = setComponentTemplate(precompileTemplate("<option value={{@value}} selected={{@isSelected @value}} ...attributes>\n {{#if (has-block)}}\n {{yield}}\n {{else}}\n {{@value}}\n {{/if}}\n</option>", {
9
9
  strictMode: true
10
10
  }), templateOnly());
11
11
  class Select extends Component {
@@ -25,7 +25,7 @@ class Select extends Component {
25
25
  return this.args.spacing ?? 1;
26
26
  }
27
27
  static {
28
- setComponentTemplate(precompileTemplate("\n <span class=\"select\" data-spacing={{this.spacing}}>\n <select disabled={{@disabled}} data-test-select {{on \"input\" this.select capture=true}} ...attributes>\n {{yield (hash Option=(component Option isSelected=this.isSelected))}}\n </select>\n </span>\n ", {
28
+ setComponentTemplate(precompileTemplate("<span class=\"select\" data-spacing={{this.spacing}}>\n <select disabled={{@disabled}} data-test-select {{on \"input\" this.select capture=true}} ...attributes>\n {{yield (hash Option=(component Option isSelected=this.isSelected))}}\n </select>\n</span>", {
29
29
  strictMode: true,
30
30
  scope: () => ({
31
31
  on,
@@ -37,4 +37,4 @@ class Select extends Component {
37
37
  }
38
38
 
39
39
  export { Select as S };
40
- //# sourceMappingURL=select-DWOHAUfQ.js.map
40
+ //# sourceMappingURL=select-CrdsGEgR.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"select-DWOHAUfQ.js","sources":["../src/components/controls/select.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { hash } from '@ember/helper';\nimport { on } from '@ember/modifier';\n\nimport type { TOC } from '@ember/component/template-only';\nimport type { WithBoundArgs } from '@glint/template';\nimport type { Spacing } from '@hokulea/tokens';\n\nexport type Value = string | number;\n\nexport interface OptionSignature {\n Element: HTMLOptionElement;\n Args: {\n value: Value;\n isSelected: (option: Value) => boolean;\n };\n Blocks: {\n default: [];\n };\n}\n\nconst Option: TOC<OptionSignature> = <template>\n <option value={{@value}} selected={{@isSelected @value}} ...attributes>\n {{#if (has-block)}}\n {{yield}}\n {{else}}\n {{@value}}\n {{/if}}\n </option>\n</template>;\n\nexport interface SelectSignature {\n Element: HTMLSelectElement;\n Args: {\n value?: Value | Value[];\n update?: (value: Value | Value[]) => void;\n disabled?: boolean;\n spacing?: Spacing;\n };\n Blocks: {\n default: [\n {\n Option: WithBoundArgs<typeof Option, 'isSelected'>;\n }\n ];\n };\n}\n\nexport class Select extends Component<SelectSignature> {\n isSelected = (option: Value) => {\n if (Array.isArray(this.args.value)) {\n return this.args.value.includes(option);\n }\n\n return String(option) === String(this.args.value);\n };\n\n select = (event: Event) => {\n const select = event.target as HTMLSelectElement;\n const selection = Array.of(...select.selectedOptions).map((option) => option.value);\n const value = selection.length === 1 ? (selection[0] as Value) : (selection as Value[]);\n\n this.args.update?.(value);\n };\n\n get spacing() {\n return this.args.spacing ?? 1;\n }\n\n <template>\n <span class=\"select\" data-spacing={{this.spacing}}>\n <select\n disabled={{@disabled}}\n data-test-select\n {{on \"input\" this.select capture=true}}\n ...attributes\n >\n {{yield (hash Option=(component Option isSelected=this.isSelected))}}\n </select>\n </span>\n </template>\n}\n"],"names":["Option","setComponentTemplate","precompileTemplate","strictMode","templateOnly","Select","Component","isSelected","option","Array","isArray","args","value","includes","String","select","event","target","selection","of","selectedOptions","map","length","update","spacing","scope","on","hash"],"mappings":";;;;;;;AAqBA,MAAMA,MAAY,GAAAC,oBAAA,CAAmBC,kBAAA,CAAA,mLAAA,EAQrC;EAAAC,UAAA,EAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA,CAAA;AAmBH,MAAMC,eAAeC,SAAA,CAAU;EACpCC,UAAA,GAAcC,MAAQ,IAAA;IACpB,IAAIC,KAAA,CAAMC,OAAO,CAAC,IAAI,CAACC,IAAI,CAACC,KAAK,CAAA,EAAG;MAClC,OAAO,IAAI,CAACD,IAAI,CAACC,KAAK,CAACC,QAAQ,CAACL,MAAA,CAAA;AAClC,IAAA;AAEA,IAAA,OAAOM,OAAON,MAAA,CAAA,KAAYM,MAAA,CAAO,IAAI,CAACH,IAAI,CAACC,KAAK,CAAA;EAClD,CAAA;EAEAG,MAAA,GAAUC,KAAO,IAAA;AACf,IAAA,MAAMD,MAAA,GAASC,KAAA,CAAMC,MAAU;AAC/B,IAAA,MAAMC,SAAA,GAAYT,KAAA,CAAMU,EAAE,CAAA,GAAIJ,MAAA,CAAOK,eAAe,CAAA,CAAEC,GAAG,CAAEb,MAAA,IAAWA,MAAA,CAAOI,KAAK,CAAA;AAClF,IAAA,MAAMA,KAAA,GAAQM,SAAA,CAAUI,MAAM,KAAK,IAAKJ,SAAS,CAAC,CAAA,CAAE,GAAcA,SAAoB;AAEtF,IAAA,IAAI,CAACP,IAAI,CAACY,MAAM,GAAGX,KAAA,CAAA;EACrB,CAAA;EAEA,IAAIY,OAAAA,GAAU;AACZ,IAAA,OAAO,IAAI,CAACb,IAAI,CAACa,OAAO,IAAI,CAAA;AAC9B,EAAA;AAEA,EAAA;IAAAvB,oBAAA,CAAAC,kBAAA,CAAA,8RAAA,EAWA;MAAAC,UAAA,EAAA,IAAA;AAAAsB,MAAAA,KAAA,EAAAA,OAAA;QAAAC,EAAA;QAAAC,IAAA;AAAA3B,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"}
1
+ {"version":3,"file":"select-CrdsGEgR.js","sources":["../src/components/controls/select.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { hash } from '@ember/helper';\nimport { on } from '@ember/modifier';\n\nimport type { TOC } from '@ember/component/template-only';\nimport type { WithBoundArgs } from '@glint/template';\nimport type { Spacing } from '@hokulea/tokens';\n\nexport type Value = string | number;\n\nexport interface OptionSignature {\n Element: HTMLOptionElement;\n Args: {\n value: Value;\n isSelected: (option: Value) => boolean;\n };\n Blocks: {\n default: [];\n };\n}\n\nconst Option: TOC<OptionSignature> = <template>\n <option value={{@value}} selected={{@isSelected @value}} ...attributes>\n {{#if (has-block)}}\n {{yield}}\n {{else}}\n {{@value}}\n {{/if}}\n </option>\n</template>;\n\nexport interface SelectSignature {\n Element: HTMLSelectElement;\n Args: {\n value?: Value | Value[];\n update?: (value: Value | Value[]) => void;\n disabled?: boolean;\n spacing?: Spacing;\n };\n Blocks: {\n default: [\n {\n Option: WithBoundArgs<typeof Option, 'isSelected'>;\n }\n ];\n };\n}\n\nexport class Select extends Component<SelectSignature> {\n isSelected = (option: Value) => {\n if (Array.isArray(this.args.value)) {\n return this.args.value.includes(option);\n }\n\n return String(option) === String(this.args.value);\n };\n\n select = (event: Event) => {\n const select = event.target as HTMLSelectElement;\n const selection = Array.of(...select.selectedOptions).map((option) => option.value);\n const value = selection.length === 1 ? (selection[0] as Value) : (selection as Value[]);\n\n this.args.update?.(value);\n };\n\n get spacing() {\n return this.args.spacing ?? 1;\n }\n\n <template>\n <span class=\"select\" data-spacing={{this.spacing}}>\n <select\n disabled={{@disabled}}\n data-test-select\n {{on \"input\" this.select capture=true}}\n ...attributes\n >\n {{yield (hash Option=(component Option isSelected=this.isSelected))}}\n </select>\n </span>\n </template>\n}\n"],"names":["Option","setComponentTemplate","precompileTemplate","strictMode","templateOnly","Select","Component","isSelected","option","Array","isArray","args","value","includes","String","select","event","target","selection","of","selectedOptions","map","length","update","spacing","scope","on","hash"],"mappings":";;;;;;;AAqBA,MAAMA,MAAY,GAAAC,oBAAA,CAAmBC,kBAAA,CAAA,iKAAA,EAQrC;EAAAC,UAAA,EAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA,CAAA;AAmBH,MAAMC,eAAeC,SAAA,CAAU;EACpCC,UAAA,GAAcC,MAAQ,IAAA;IACpB,IAAIC,KAAA,CAAMC,OAAO,CAAC,IAAI,CAACC,IAAI,CAACC,KAAK,CAAA,EAAG;MAClC,OAAO,IAAI,CAACD,IAAI,CAACC,KAAK,CAACC,QAAQ,CAACL,MAAA,CAAA;AAClC,IAAA;AAEA,IAAA,OAAOM,OAAON,MAAA,CAAA,KAAYM,MAAA,CAAO,IAAI,CAACH,IAAI,CAACC,KAAK,CAAA;EAClD,CAAA;EAEAG,MAAA,GAAUC,KAAO,IAAA;AACf,IAAA,MAAMD,MAAA,GAASC,KAAA,CAAMC,MAAU;AAC/B,IAAA,MAAMC,SAAA,GAAYT,KAAA,CAAMU,EAAE,CAAA,GAAIJ,MAAA,CAAOK,eAAe,CAAA,CAAEC,GAAG,CAAEb,MAAA,IAAWA,MAAA,CAAOI,KAAK,CAAA;AAClF,IAAA,MAAMA,KAAA,GAAQM,SAAA,CAAUI,MAAM,KAAK,IAAKJ,SAAS,CAAC,CAAA,CAAE,GAAcA,SAAoB;AAEtF,IAAA,IAAI,CAACP,IAAI,CAACY,MAAM,GAAGX,KAAA,CAAA;EACrB,CAAA;EAEA,IAAIY,OAAAA,GAAU;AACZ,IAAA,OAAO,IAAI,CAACb,IAAI,CAACa,OAAO,IAAI,CAAA;AAC9B,EAAA;AAEA,EAAA;IAAAvB,oBAAA,CAAAC,kBAAA,CAAA,oQAAA,EAWA;MAAAC,UAAA,EAAA,IAAA;AAAAsB,MAAAA,KAAA,EAAAA,OAAA;QAAAC,EAAA;QAAAC,IAAA;AAAA3B,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"}
@@ -0,0 +1,16 @@
1
+ import { hash } from '@ember/helper';
2
+ import { N as NavLink } from './nav-link-KZJghY_q.js';
3
+ import { precompileTemplate } from '@ember/template-compilation';
4
+ import { setComponentTemplate } from '@ember/component';
5
+ import templateOnly from '@ember/component/template-only';
6
+
7
+ const TabNav = setComponentTemplate(precompileTemplate("<nav class=\"tab-nav\" data-test-tab-nav ...attributes>\n {{yield (hash Item=NavLink)}}\n</nav>", {
8
+ strictMode: true,
9
+ scope: () => ({
10
+ hash,
11
+ NavLink
12
+ })
13
+ }), templateOnly());
14
+
15
+ export { TabNav as T };
16
+ //# sourceMappingURL=tab-nav-pvb2XhOD.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tab-nav-pvb2XhOD.js","sources":["../src/components/navigation/tab-nav.gts"],"sourcesContent":["import { hash } from '@ember/helper';\n\nimport { NavLink } from './nav-link.gts';\n\nimport type { TOC } from '@ember/component/template-only';\n\nexport interface TabNavSignature {\n Element: HTMLElement;\n Blocks: {\n default?: [{ Item: typeof NavLink }];\n };\n}\n\nexport const TabNav: TOC<TabNavSignature> = <template>\n <nav class=\"tab-nav\" data-test-tab-nav ...attributes>\n {{yield (hash Item=NavLink)}}\n </nav>\n</template>;\n"],"names":["TabNav","setComponentTemplate","precompileTemplate","strictMode","scope","hash","NavLink","templateOnly"],"mappings":";;;;;;MAaaA,MAAY,GAAAC,oBAAA,CAAmBC,kBAAA,CAAA,kGAAA,EAI5C;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,IAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
@@ -36,7 +36,7 @@ class Tab extends Component {
36
36
  n(this.prototype, "id", [cached]);
37
37
  }
38
38
  static {
39
- setComponentTemplate(precompileTemplate("\n {{#let (uniqueId) (hash active=(eq this.id @activeItem) selected=(eq this.id @selection)) as |id state|}}\n <Portal @target={{@tablist}}>\n {{!-- template-lint-disable require-context-role --}}\n <button type=\"button\" role=\"tab\" aria-controls={{id}} aria-selected={{if state.selected \"true\"}} id=\"{{id}}-label\" {{attachValue @value}}>\n <span>\n {{#if (has-block \"label\")}}\n {{yield state to=\"label\"}}\n {{else}}\n {{@label}}\n {{/if}}\n </span>\n </button>\n </Portal>\n\n <section id={{id}} role=\"tabpanel\" aria-labelledby=\"{{id}}-label\" local-class=\"content\" hidden={{not state.selected}}>\n {{#if (has-block \"content\")}}\n {{yield state to=\"content\"}}\n {{else}}\n {{yield state}}\n {{/if}}\n </section>\n {{/let}}\n ", {
39
+ setComponentTemplate(precompileTemplate("{{#let (uniqueId) (hash active=(eq this.id @activeItem) selected=(eq this.id @selection)) as |id state|}}\n <Portal @target={{@tablist}}>\n {{!-- template-lint-disable require-context-role --}}\n <button type=\"button\" role=\"tab\" aria-controls={{id}} aria-selected={{if state.selected \"true\"}} id=\"{{id}}-label\" {{attachValue @value}}>\n <span>\n {{#if (has-block \"label\")}}\n {{yield state to=\"label\"}}\n {{else}}\n {{@label}}\n {{/if}}\n </span>\n </button>\n </Portal>\n\n <section id={{id}} role=\"tabpanel\" aria-labelledby=\"{{id}}-label\" local-class=\"content\" hidden={{not state.selected}}>\n {{#if (has-block \"content\")}}\n {{yield state to=\"content\"}}\n {{else}}\n {{yield state}}\n {{/if}}\n </section>\n{{/let}}", {
40
40
  strictMode: true,
41
41
  scope: () => ({
42
42
  uniqueId,
@@ -92,7 +92,7 @@ class Tabs extends Component {
92
92
  this.activeItem = id;
93
93
  };
94
94
  static {
95
- setComponentTemplate(precompileTemplate("\n <div class=\"tabs\" data-test-tabs>\n {{#let (uniqueId) as |tablistId|}}\n <PortalTarget @name={{tablistId}} @multiple={{true}} role=\"tablist\" {{ariaTablist items=this.items select=this.select selection=this.selection activateItem=this.activateItem disabled=@disabled behavior=@behavior orientation=@orientation}} />\n\n {{yield (hash Tab=(component Tab register=this.register unregister=this.unregister tablist=tablistId selection=this.selection activeItem=this.activeItem))}}\n {{/let}}\n </div>\n ", {
95
+ setComponentTemplate(precompileTemplate("<div class=\"tabs\" data-test-tabs>\n {{#let (uniqueId) as |tablistId|}}\n <PortalTarget @name={{tablistId}} @multiple={{true}} role=\"tablist\" {{ariaTablist items=this.items select=this.select selection=this.selection activateItem=this.activateItem disabled=@disabled behavior=@behavior orientation=@orientation}} />\n\n {{yield (hash Tab=(component Tab register=this.register unregister=this.unregister tablist=tablistId selection=this.selection activeItem=this.activeItem))}}\n {{/let}}\n</div>", {
96
96
  strictMode: true,
97
97
  scope: () => ({
98
98
  uniqueId,
@@ -106,4 +106,4 @@ class Tabs extends Component {
106
106
  }
107
107
 
108
108
  export { Tabs as T, TabValue as a };
109
- //# sourceMappingURL=tabs-e_cUi6pL.js.map
109
+ //# sourceMappingURL=tabs-DdGp_ET2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tabs-e_cUi6pL.js","sources":["../src/components/controls/tabs.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { cached, tracked } from '@glimmer/tracking';\nimport { registerDestructor } from '@ember/destroyable';\nimport { hash, uniqueId } from '@ember/helper';\nimport { guidFor } from '@ember/object/internals';\nimport { next } from '@ember/runloop';\n\nimport { ariaTablist, type Orientation, type TablistBehavior } from 'ember-aria-voyager';\nimport { modifier } from 'ember-modifier';\nimport Portal from 'ember-stargate/components/portal';\nimport PortalTarget from 'ember-stargate/components/portal-target';\nimport { TrackedArray } from 'tracked-built-ins';\n\nimport { eq, not } from '../../-private/helpers.ts';\n\nimport type Owner from '@ember/owner';\nimport type { WithBoundArgs } from '@glint/template';\n\nexport const TabValue = Symbol('TabValue');\n\nconst attachValue = modifier((element, [value]) => {\n if (value) {\n // @ts-expect-error this is internal API\n element[TabValue] = value;\n }\n});\n\ninterface State {\n active: boolean;\n selected: boolean;\n}\n\ntype Item = string & {};\n\ntype TabSignature = {\n Element: HTMLDivElement;\n Args: {\n tablist: string;\n register: (tab: Tab) => void;\n unregister: (tab: Tab) => void;\n label?: string;\n value?: unknown;\n selection?: unknown;\n activeItem?: Item;\n };\n Blocks: {\n default?: [State];\n label?: [State];\n content?: [State];\n };\n};\n\nclass Tab extends Component<TabSignature> {\n constructor(owner: Owner, args: TabSignature['Args']) {\n super(owner, args);\n\n args.register(this);\n\n registerDestructor(this, () => {\n args.unregister(this);\n });\n }\n\n @cached\n get id() {\n return this.args.value ?? this.args.label ?? guidFor(this);\n }\n\n <template>\n {{#let\n (uniqueId) (hash active=(eq this.id @activeItem) selected=(eq this.id @selection))\n as |id state|\n }}\n <Portal @target={{@tablist}}>\n {{! template-lint-disable require-context-role }}\n <button\n type=\"button\"\n role=\"tab\"\n aria-controls={{id}}\n aria-selected={{if state.selected \"true\"}}\n id=\"{{id}}-label\"\n {{attachValue @value}}\n >\n <span>\n {{#if (has-block \"label\")}}\n {{yield state to=\"label\"}}\n {{else}}\n {{@label}}\n {{/if}}\n </span>\n </button>\n </Portal>\n\n <section\n id={{id}}\n role=\"tabpanel\"\n aria-labelledby=\"{{id}}-label\"\n local-class=\"content\"\n hidden={{not state.selected}}\n >\n {{#if (has-block \"content\")}}\n {{yield state to=\"content\"}}\n {{else}}\n {{yield state}}\n {{/if}}\n </section>\n {{/let}}\n </template>\n}\n\ninterface TabsSignature {\n Element: HTMLDivElement;\n Args: {\n disabled?: boolean;\n selection?: unknown;\n update?: (value: unknown) => void;\n behavior?: TablistBehavior;\n orientation?: Orientation;\n };\n Blocks: {\n default: [\n {\n Tab: WithBoundArgs<\n typeof Tab,\n 'selection' | 'activeItem' | 'tablist' | 'register' | 'unregister'\n >;\n }\n ];\n };\n}\n\nexport class Tabs extends Component<TabsSignature> {\n @tracked tabs: Tab[] = new TrackedArray();\n @tracked internalSelection?: Tab;\n @tracked activeItem?: Item;\n\n get items() {\n return this.tabs.map((t) => t.id);\n }\n\n get selection() {\n return this.args.selection ?? this.internalSelection?.id;\n }\n\n register = (tab: Tab) => {\n // eslint-disable-next-line ember/no-runloop\n next(() => {\n this.tabs.push(tab);\n });\n };\n\n unregister = (tab: Tab) => {\n // eslint-disable-next-line ember/no-runloop\n next(() => {\n this.tabs.splice(this.tabs.indexOf(tab), 1);\n });\n };\n\n select = (id: Item) => {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const tab = this.tabs.find((t) => t.id === id)!;\n\n this.internalSelection = tab;\n this.args.update?.(tab.args.value ?? tab.args.label ?? undefined);\n };\n\n activateItem = (id: Item) => {\n this.activeItem = id;\n };\n\n <template>\n <div class=\"tabs\" data-test-tabs>\n {{#let (uniqueId) as |tablistId|}}\n <PortalTarget\n @name={{tablistId}}\n @multiple={{true}}\n role=\"tablist\"\n {{ariaTablist\n items=this.items\n select=this.select\n selection=this.selection\n activateItem=this.activateItem\n disabled=@disabled\n behavior=@behavior\n orientation=@orientation\n }}\n />\n\n {{yield\n (hash\n Tab=(component\n Tab\n register=this.register\n unregister=this.unregister\n tablist=tablistId\n selection=this.selection\n activeItem=this.activeItem\n )\n )\n }}\n {{/let}}\n </div>\n </template>\n}\n"],"names":["TabValue","Symbol","attachValue","modifier","element","value","Tab","Component","constructor","owner","args","register","registerDestructor","unregister","id","label","guidFor","n","prototype","cached","setComponentTemplate","precompileTemplate","strictMode","scope","uniqueId","hash","eq","Portal","not","Tabs","g","tracked","TrackedArray","i","void 0","items","tabs","map","t","selection","internalSelection","tab","next","push","splice","indexOf","select","find","update","undefined","activateItem","activeItem","PortalTarget","ariaTablist"],"mappings":"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"}
1
+ {"version":3,"file":"tabs-DdGp_ET2.js","sources":["../src/components/controls/tabs.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { cached, tracked } from '@glimmer/tracking';\nimport { registerDestructor } from '@ember/destroyable';\nimport { hash, uniqueId } from '@ember/helper';\nimport { guidFor } from '@ember/object/internals';\nimport { next } from '@ember/runloop';\n\nimport { ariaTablist, type Orientation, type TablistBehavior } from 'ember-aria-voyager';\nimport { modifier } from 'ember-modifier';\nimport Portal from 'ember-stargate/components/portal';\nimport PortalTarget from 'ember-stargate/components/portal-target';\nimport { TrackedArray } from 'tracked-built-ins';\n\nimport { eq, not } from '../../-private/helpers.ts';\n\nimport type Owner from '@ember/owner';\nimport type { WithBoundArgs } from '@glint/template';\n\nexport const TabValue = Symbol('TabValue');\n\nconst attachValue = modifier((element, [value]) => {\n if (value) {\n // @ts-expect-error this is internal API\n element[TabValue] = value;\n }\n});\n\ninterface State {\n active: boolean;\n selected: boolean;\n}\n\ntype Item = string & {};\n\ntype TabSignature = {\n Element: HTMLDivElement;\n Args: {\n tablist: string;\n register: (tab: Tab) => void;\n unregister: (tab: Tab) => void;\n label?: string;\n value?: unknown;\n selection?: unknown;\n activeItem?: Item;\n };\n Blocks: {\n default?: [State];\n label?: [State];\n content?: [State];\n };\n};\n\nclass Tab extends Component<TabSignature> {\n constructor(owner: Owner, args: TabSignature['Args']) {\n super(owner, args);\n\n args.register(this);\n\n registerDestructor(this, () => {\n args.unregister(this);\n });\n }\n\n @cached\n get id() {\n return this.args.value ?? this.args.label ?? guidFor(this);\n }\n\n <template>\n {{#let\n (uniqueId) (hash active=(eq this.id @activeItem) selected=(eq this.id @selection))\n as |id state|\n }}\n <Portal @target={{@tablist}}>\n {{! template-lint-disable require-context-role }}\n <button\n type=\"button\"\n role=\"tab\"\n aria-controls={{id}}\n aria-selected={{if state.selected \"true\"}}\n id=\"{{id}}-label\"\n {{attachValue @value}}\n >\n <span>\n {{#if (has-block \"label\")}}\n {{yield state to=\"label\"}}\n {{else}}\n {{@label}}\n {{/if}}\n </span>\n </button>\n </Portal>\n\n <section\n id={{id}}\n role=\"tabpanel\"\n aria-labelledby=\"{{id}}-label\"\n local-class=\"content\"\n hidden={{not state.selected}}\n >\n {{#if (has-block \"content\")}}\n {{yield state to=\"content\"}}\n {{else}}\n {{yield state}}\n {{/if}}\n </section>\n {{/let}}\n </template>\n}\n\ninterface TabsSignature {\n Element: HTMLDivElement;\n Args: {\n disabled?: boolean;\n selection?: unknown;\n update?: (value: unknown) => void;\n behavior?: TablistBehavior;\n orientation?: Orientation;\n };\n Blocks: {\n default: [\n {\n Tab: WithBoundArgs<\n typeof Tab,\n 'selection' | 'activeItem' | 'tablist' | 'register' | 'unregister'\n >;\n }\n ];\n };\n}\n\nexport class Tabs extends Component<TabsSignature> {\n @tracked tabs: Tab[] = new TrackedArray();\n @tracked internalSelection?: Tab;\n @tracked activeItem?: Item;\n\n get items() {\n return this.tabs.map((t) => t.id);\n }\n\n get selection() {\n return this.args.selection ?? this.internalSelection?.id;\n }\n\n register = (tab: Tab) => {\n // eslint-disable-next-line ember/no-runloop\n next(() => {\n this.tabs.push(tab);\n });\n };\n\n unregister = (tab: Tab) => {\n // eslint-disable-next-line ember/no-runloop\n next(() => {\n this.tabs.splice(this.tabs.indexOf(tab), 1);\n });\n };\n\n select = (id: Item) => {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const tab = this.tabs.find((t) => t.id === id)!;\n\n this.internalSelection = tab;\n this.args.update?.(tab.args.value ?? tab.args.label ?? undefined);\n };\n\n activateItem = (id: Item) => {\n this.activeItem = id;\n };\n\n <template>\n <div class=\"tabs\" data-test-tabs>\n {{#let (uniqueId) as |tablistId|}}\n <PortalTarget\n @name={{tablistId}}\n @multiple={{true}}\n role=\"tablist\"\n {{ariaTablist\n items=this.items\n select=this.select\n selection=this.selection\n activateItem=this.activateItem\n disabled=@disabled\n behavior=@behavior\n orientation=@orientation\n }}\n />\n\n {{yield\n (hash\n Tab=(component\n Tab\n register=this.register\n unregister=this.unregister\n tablist=tablistId\n selection=this.selection\n activeItem=this.activeItem\n )\n )\n }}\n {{/let}}\n </div>\n </template>\n}\n"],"names":["TabValue","Symbol","attachValue","modifier","element","value","Tab","Component","constructor","owner","args","register","registerDestructor","unregister","id","label","guidFor","n","prototype","cached","setComponentTemplate","precompileTemplate","strictMode","scope","uniqueId","hash","eq","Portal","not","Tabs","g","tracked","TrackedArray","i","void 0","items","tabs","map","t","selection","internalSelection","tab","next","push","splice","indexOf","select","find","update","undefined","activateItem","activeItem","PortalTarget","ariaTablist"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { PageObject, selector, globalSelector } from 'fractal-page-object';
2
2
  import { click, select, triggerEvent } from '@ember/test-helpers';
3
3
  import { selectListbox, selectTab } from 'ember-aria-voyager/test-support';
4
- import { a as TabValue } from '../tabs-e_cUi6pL.js';
4
+ import { a as TabValue } from '../tabs-DdGp_ET2.js';
5
5
 
6
6
  class AlertPageObject extends PageObject {
7
7
  static SELECTOR = '[data-test-feedback]';
@@ -9,10 +9,10 @@ class AlertPageObject extends PageObject {
9
9
  super(selector ?? AlertPageObject.SELECTOR, parent, index);
10
10
  }
11
11
  get indicator() {
12
- return this.element?.getAttribute('data-indicator');
12
+ return this.element?.dataset.indicator;
13
13
  }
14
14
  get importance() {
15
- return this.element?.getAttribute('data-importance');
15
+ return this.element?.dataset.importance;
16
16
  }
17
17
  $icon = selector('[part="icon"]');
18
18
  $title = selector('[part="title"]');
@@ -35,13 +35,13 @@ class IconButtonPageObject extends PageObject {
35
35
  super(selector ?? IconButtonPageObject.SELECTOR, parent, index);
36
36
  }
37
37
  get intent() {
38
- return this.element?.getAttribute('data-intent');
38
+ return this.element?.dataset.intent;
39
39
  }
40
40
  get importance() {
41
- return this.element?.getAttribute('data-importance');
41
+ return this.element?.dataset.importance;
42
42
  }
43
43
  get spacing() {
44
- return this.element?.getAttribute('data-spacing');
44
+ return this.element?.dataset.spacing;
45
45
  }
46
46
  async push() {
47
47
  if (this.element) {
@@ -153,18 +153,18 @@ class AvatarPageObject extends PageObject {
153
153
  }
154
154
 
155
155
  class ButtonPageObject extends PageObject {
156
- static SELECTOR = '[data-test-button]';
156
+ static SELECTOR = '[data-test-button=""]';
157
157
  constructor(selector, parent, index) {
158
158
  super(selector ?? ButtonPageObject.SELECTOR, parent, index);
159
159
  }
160
160
  get intent() {
161
- return this.element?.getAttribute('data-intent');
161
+ return this.element?.dataset.intent;
162
162
  }
163
163
  get importance() {
164
- return this.element?.getAttribute('data-importance');
164
+ return this.element?.dataset.importance;
165
165
  }
166
166
  get spacing() {
167
- return this.element?.getAttribute('data-spacing');
167
+ return this.element?.dataset.spacing;
168
168
  }
169
169
  $before = selector('[data-test-button="before"]');
170
170
  $label = selector('[data-test-button="label"]');
@@ -176,6 +176,14 @@ class ButtonPageObject extends PageObject {
176
176
  }
177
177
  }
178
178
 
179
+ class ButtonGroupPageObject extends PageObject {
180
+ static SELECTOR = '[data-test-button-group]';
181
+ constructor(selector, parent, index) {
182
+ super(selector ?? ButtonGroupPageObject.SELECTOR, parent, index);
183
+ }
184
+ $button = selector(ButtonPageObject.SELECTOR, ButtonPageObject);
185
+ }
186
+
179
187
  class ChoicePageObject extends PageObject {
180
188
  static SELECTOR = '[data-test-choice]';
181
189
  constructor(selector, parent, index) {
@@ -197,7 +205,7 @@ class InputPageObject extends PageObject {
197
205
  return this.element;
198
206
  }
199
207
  get spacing() {
200
- return this.element?.getAttribute('data-spacing');
208
+ return this.element?.dataset.spacing;
201
209
  }
202
210
  }
203
211
  class RangeInputPageObject extends InputPageObject {
@@ -218,7 +226,7 @@ class SelectPageObject extends PageObject {
218
226
  super(selector ?? SelectPageObject.SELECTOR, parent, index);
219
227
  }
220
228
  get spacing() {
221
- return this.element?.getAttribute('data-spacing');
229
+ return this.element?.dataset.spacing;
222
230
  }
223
231
  get control() {
224
232
  return this.element;
@@ -261,10 +269,10 @@ class DataTablePageObject extends PageObject {
261
269
  class Error extends PageObject {
262
270
  static SELECTOR = '[data-test-error]';
263
271
  get type() {
264
- return this.element?.getAttribute('data-test-error-type');
272
+ return this.element?.dataset.testErrorType;
265
273
  }
266
274
  get value() {
267
- return this.element?.getAttribute('data-test-error-value');
275
+ return this.element?.dataset.testErrorValue;
268
276
  }
269
277
  }
270
278
 
@@ -325,7 +333,7 @@ class ChoicesPageObject extends PageObject {
325
333
 
326
334
  class FieldRule extends PageObject {
327
335
  get invalid() {
328
- return Boolean(this.element?.getAttribute('data-test-rule-invalid'));
336
+ return Boolean(this.element?.dataset.testRuleInvalid);
329
337
  }
330
338
  }
331
339
  class FieldPageObject extends PageObject {
@@ -375,7 +383,7 @@ class FieldPageObject extends PageObject {
375
383
  return this.$input; // @TODO bad fallback for now
376
384
  }
377
385
  get name() {
378
- return this.element?.getAttribute('data-test-field');
386
+ return this.element?.dataset.testField;
379
387
  }
380
388
  }
381
389
 
@@ -436,13 +444,13 @@ class PillButtonPageObject extends PageObject {
436
444
  super(selector ?? PillButtonPageObject.SELECTOR, parent, index);
437
445
  }
438
446
  get intent() {
439
- return this.element?.getAttribute('data-intent');
447
+ return this.element?.dataset.intent;
440
448
  }
441
449
  get importance() {
442
- return this.element?.getAttribute('data-importance');
450
+ return this.element?.dataset.importance;
443
451
  }
444
452
  get spacing() {
445
- return this.element?.getAttribute('data-spacing');
453
+ return this.element?.dataset.spacing;
446
454
  }
447
455
  $before = selector('[data-test-button="before"]');
448
456
  $label = selector('[data-test-button="label"]');
@@ -461,6 +469,18 @@ class PopoverPageObject extends PageObject {
461
469
  }
462
470
  }
463
471
 
472
+ class RadioButtonGroupPageObject extends PageObject {
473
+ static SELECTOR = '[role="radiogroup"]';
474
+ constructor(selector, parent, index) {
475
+ super(selector ?? RadioButtonGroupPageObject.SELECTOR, parent, index);
476
+ }
477
+ $option = selector('[role="radio"]', class extends PageObject {
478
+ get checked() {
479
+ return this.element?.getAttribute('aria-checked');
480
+ }
481
+ });
482
+ }
483
+
464
484
  class SectionPageObject extends PageObject {
465
485
  static SELECTOR = '[data-test-section]';
466
486
  constructor(selector, parent, index) {
@@ -470,6 +490,14 @@ class SectionPageObject extends PageObject {
470
490
  $title = selector('[data-test-section="title"]');
471
491
  }
472
492
 
493
+ class TabNavPageObject extends PageObject {
494
+ static SELECTOR = '[data-test-tab-nav]';
495
+ constructor(selector, parent, index) {
496
+ super(selector ?? TabNavPageObject.SELECTOR, parent, index);
497
+ }
498
+ $items = selector('[part="item"]', NavLinkPageObject);
499
+ }
500
+
473
501
  class TabsPageObject extends PageObject {
474
502
  static SELECTOR = '[data-test-tabs]';
475
503
  constructor(selector, parent, index) {
@@ -491,5 +519,5 @@ class TabsPageObject extends PageObject {
491
519
  }
492
520
  }
493
521
 
494
- export { AlertPageObject, AppHeaderPageObject, AvatarPageObject, ButtonPageObject, CheckboxPageObject, CurrencyInputPageObject, DataTablePageObject, DateInputPageObject, EmailInputPageObject, FormPageObject, IconButtonPageObject, IconPageObject, ListPageObject, MenuPageObject, NavigationListPageObject, NumberInputPageObject, PagePageObject, PaginationPageObject, PasswordInputPageObject, PhoneInputPageObject, PillButtonPageObject, PopoverPageObject, RadioPageObject, RangeInputPageObject, SectionPageObject, SectionedPagePageObject, SelectPageObject, TabsPageObject, TextAreaPageObject, TextInputPageObject };
522
+ export { AlertPageObject, AppHeaderPageObject, AvatarPageObject, ButtonGroupPageObject, ButtonPageObject, CheckboxPageObject, CurrencyInputPageObject, DataTablePageObject, DateInputPageObject, EmailInputPageObject, FormPageObject, IconButtonPageObject, IconPageObject, ListPageObject, MenuPageObject, NavigationListPageObject, NumberInputPageObject, PagePageObject, PaginationPageObject, PasswordInputPageObject, PhoneInputPageObject, PillButtonPageObject, PopoverPageObject, RadioButtonGroupPageObject, RadioPageObject, RangeInputPageObject, SectionPageObject, SectionedPagePageObject, SelectPageObject, TabNavPageObject, TabsPageObject, TextAreaPageObject, TextInputPageObject };
495
523
  //# sourceMappingURL=index.js.map