@hokulea/ember 0.12.0 → 0.14.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 (172) hide show
  1. package/declarations/components/controls/-menu.d.ts +2 -2
  2. package/declarations/components/controls/-menu.d.ts.map +1 -1
  3. package/declarations/components/controls/menu.d.ts +0 -3
  4. package/declarations/components/controls/menu.d.ts.map +1 -1
  5. package/declarations/components/feedback/alert.d.ts +3 -2
  6. package/declarations/components/feedback/alert.d.ts.map +1 -1
  7. package/declarations/components/form/form.d.ts +9 -3
  8. package/declarations/components/form/form.d.ts.map +1 -1
  9. package/declarations/components/graphics/icon.d.ts +4 -1
  10. package/declarations/components/graphics/icon.d.ts.map +1 -1
  11. package/declarations/components/layouts/sectioned-page.d.ts +1 -1
  12. package/declarations/components/layouts/sectioned-page.d.ts.map +1 -1
  13. package/declarations/components/navigation/app-header.d.ts +2 -2
  14. package/declarations/components/navigation/app-header.d.ts.map +1 -1
  15. package/declarations/components/navigation/nav-link.d.ts.map +1 -1
  16. package/declarations/components/navigation/tab-nav.d.ts +12 -0
  17. package/declarations/components/navigation/tab-nav.d.ts.map +1 -0
  18. package/declarations/components/tab-nav.d.ts +2 -0
  19. package/declarations/components/tab-nav.d.ts.map +1 -0
  20. package/declarations/helpers/-position.d.ts +12 -0
  21. package/declarations/helpers/-position.d.ts.map +1 -0
  22. package/declarations/helpers/popover.d.ts +23 -2
  23. package/declarations/helpers/popover.d.ts.map +1 -1
  24. package/declarations/index.d.ts +3 -0
  25. package/declarations/index.d.ts.map +1 -1
  26. package/declarations/test-support/index.d.ts +1 -0
  27. package/declarations/test-support/index.d.ts.map +1 -1
  28. package/declarations/test-support/page-objects/-menu.d.ts.map +1 -1
  29. package/declarations/test-support/page-objects/-private/error.d.ts +7 -0
  30. package/declarations/test-support/page-objects/-private/error.d.ts.map +1 -0
  31. package/declarations/test-support/page-objects/-private/field.d.ts +3 -6
  32. package/declarations/test-support/page-objects/-private/field.d.ts.map +1 -1
  33. package/declarations/test-support/page-objects/form.d.ts +3 -1
  34. package/declarations/test-support/page-objects/form.d.ts.map +1 -1
  35. package/declarations/test-support/page-objects/navigation-list.d.ts +1 -1
  36. package/declarations/test-support/page-objects/navigation-list.d.ts.map +1 -1
  37. package/declarations/test-support/page-objects/tab-nav.d.ts +9 -0
  38. package/declarations/test-support/page-objects/tab-nav.d.ts.map +1 -0
  39. package/dist/_app_/components/tab-nav.js +1 -0
  40. package/dist/{alert-DmCWMMRr.js → alert-CHUcylXU.js} +4 -3
  41. package/dist/alert-CHUcylXU.js.map +1 -0
  42. package/dist/{app-header-DKlDPWSe.js → app-header-B9BWy4HI.js} +8 -8
  43. package/dist/app-header-B9BWy4HI.js.map +1 -0
  44. package/dist/{avatar-DTqwlbny.js → avatar-CKkZu7w3.js} +2 -2
  45. package/dist/{avatar-DTqwlbny.js.map → avatar-CKkZu7w3.js.map} +1 -1
  46. package/dist/{box-COwjh1Rb.js → box-6Zf3RnAO.js} +2 -2
  47. package/dist/{box-COwjh1Rb.js.map → box-6Zf3RnAO.js.map} +1 -1
  48. package/dist/button-CRe5grz4.js +24 -0
  49. package/dist/{button-BAtG9lC0.js.map → button-CRe5grz4.js.map} +1 -1
  50. package/dist/card-Wzo-S04B.js +14 -0
  51. package/dist/{card-Bq4sLW1m.js.map → card-Wzo-S04B.js.map} +1 -1
  52. package/dist/{checkbox-C9-RZtWK.js → checkbox-Dq-Ba0eG.js} +2 -2
  53. package/dist/{checkbox-C9-RZtWK.js.map → checkbox-Dq-Ba0eG.js.map} +1 -1
  54. package/dist/components/alert.js +1 -1
  55. package/dist/components/app-header.js +1 -1
  56. package/dist/components/avatar.js +1 -1
  57. package/dist/components/box.js +1 -1
  58. package/dist/components/button.js +1 -1
  59. package/dist/components/card.js +1 -1
  60. package/dist/components/checkbox.js +1 -1
  61. package/dist/components/currency-input.js +1 -1
  62. package/dist/components/data-table.js +1 -1
  63. package/dist/components/date-input.js +1 -1
  64. package/dist/components/email-input.js +1 -1
  65. package/dist/components/focus-page.js +1 -1
  66. package/dist/components/form.js +1 -1
  67. package/dist/components/icon-button.js +1 -1
  68. package/dist/components/icon.js +1 -1
  69. package/dist/components/input-builder.js +1 -1
  70. package/dist/components/link.js +1 -1
  71. package/dist/components/list.js +1 -1
  72. package/dist/components/menu.js +1 -1
  73. package/dist/components/navigation-list.js +1 -1
  74. package/dist/components/number-input.js +1 -1
  75. package/dist/components/page.js +1 -1
  76. package/dist/components/pagination.js +1 -1
  77. package/dist/components/password-input.js +1 -1
  78. package/dist/components/phone-input.js +1 -1
  79. package/dist/components/popover.js +1 -1
  80. package/dist/components/radio.js +1 -1
  81. package/dist/components/range-input.js +1 -1
  82. package/dist/components/section.js +1 -1
  83. package/dist/components/sectioned-page.js +1 -1
  84. package/dist/components/select.js +1 -1
  85. package/dist/components/tab-nav.js +2 -0
  86. package/dist/components/tab-nav.js.map +1 -0
  87. package/dist/components/tabs.js +1 -1
  88. package/dist/components/text-area.js +1 -1
  89. package/dist/components/text-input.js +1 -1
  90. package/dist/currency-input-BXZynbgP.js +20 -0
  91. package/dist/{currency-input-BqNb3IcU.js.map → currency-input-BXZynbgP.js.map} +1 -1
  92. package/dist/data-table-DgPcWpgQ.js +16 -0
  93. package/dist/{data-table-ZliVM1td.js.map → data-table-DgPcWpgQ.js.map} +1 -1
  94. package/dist/{date-input-DxDpVu3A.js → date-input-Do_gdYif.js} +2 -2
  95. package/dist/{date-input-DxDpVu3A.js.map → date-input-Do_gdYif.js.map} +1 -1
  96. package/dist/{email-input-84impWbH.js → email-input-C3DQI5CS.js} +2 -2
  97. package/dist/{email-input-84impWbH.js.map → email-input-C3DQI5CS.js.map} +1 -1
  98. package/dist/focus-page-De0KXI-m.js +19 -0
  99. package/dist/{focus-page-Boq96jK3.js.map → focus-page-De0KXI-m.js.map} +1 -1
  100. package/dist/form-VcfCjgct.js +508 -0
  101. package/dist/{form-CXvWQbiY.js.map → form-VcfCjgct.js.map} +1 -1
  102. package/dist/helpers/popover.js +11 -20
  103. package/dist/helpers/popover.js.map +1 -1
  104. package/dist/{icon-button-hS8-Jo0v.js → icon-button-ClE5SC8Y.js} +4 -4
  105. package/dist/{icon-button-hS8-Jo0v.js.map → icon-button-ClE5SC8Y.js.map} +1 -1
  106. package/dist/{icon-rlG6O1ps.js → icon-ej-3ZqQt.js} +2 -2
  107. package/dist/icon-ej-3ZqQt.js.map +1 -0
  108. package/dist/index.js +36 -35
  109. package/dist/index.js.map +1 -1
  110. package/dist/input-builder-DpIzsgxI.js +18 -0
  111. package/dist/{input-builder-C6GkddCw.js.map → input-builder-DpIzsgxI.js.map} +1 -1
  112. package/dist/{link-bqsg26Cc.js → link-4Kc0K38u.js} +3 -3
  113. package/dist/{link-bqsg26Cc.js.map → link-4Kc0K38u.js.map} +1 -1
  114. package/dist/{list-C86dLtuk.js → list-CIQXPiUH.js} +3 -3
  115. package/dist/{list-C86dLtuk.js.map → list-CIQXPiUH.js.map} +1 -1
  116. package/dist/{menu-DCDUaqYZ.js → menu-Dcc72jZp.js} +5 -15
  117. package/dist/menu-Dcc72jZp.js.map +1 -0
  118. package/dist/nav-link-KZJghY_q.js +22 -0
  119. package/dist/{nav-link-DL59IUt0.js.map → nav-link-KZJghY_q.js.map} +1 -1
  120. package/dist/{navigation-list-Dt-WaMyp.js → navigation-list-DkWUXH9a.js} +4 -4
  121. package/dist/{navigation-list-Dt-WaMyp.js.map → navigation-list-DkWUXH9a.js.map} +1 -1
  122. package/dist/{number-input-CDMSp7qk.js → number-input-C3nCdLGj.js} +2 -2
  123. package/dist/{number-input-CDMSp7qk.js.map → number-input-C3nCdLGj.js.map} +1 -1
  124. package/dist/page-BlSv_2Xh.js +19 -0
  125. package/dist/{page-DNrVa_Zo.js.map → page-BlSv_2Xh.js.map} +1 -1
  126. package/dist/{pagination-BYiNuWz8.js → pagination-Mgv860Cf.js} +5 -5
  127. package/dist/{pagination-BYiNuWz8.js.map → pagination-Mgv860Cf.js.map} +1 -1
  128. package/dist/{password-input-BYvLH8gQ.js → password-input-DRa3El-5.js} +2 -2
  129. package/dist/{password-input-BYvLH8gQ.js.map → password-input-DRa3El-5.js.map} +1 -1
  130. package/dist/{phone-input-8N_lOkZ2.js → phone-input-D3AIkLe8.js} +2 -2
  131. package/dist/{phone-input-8N_lOkZ2.js.map → phone-input-D3AIkLe8.js.map} +1 -1
  132. package/dist/{popover-wLRNTIPC.js → popover-CaKubr0X.js} +2 -2
  133. package/dist/{popover-wLRNTIPC.js.map → popover-CaKubr0X.js.map} +1 -1
  134. package/dist/push-C8z1Qw41.js +24 -0
  135. package/dist/{push-DnJFFc_p.js.map → push-C8z1Qw41.js.map} +1 -1
  136. package/dist/{radio-BQvSPyDT.js → radio-BQ_nDgm0.js} +2 -2
  137. package/dist/{radio-BQvSPyDT.js.map → radio-BQ_nDgm0.js.map} +1 -1
  138. package/dist/{range-input-Bosd7QI2.js → range-input-Oc8Z7tsH.js} +2 -2
  139. package/dist/{range-input-Bosd7QI2.js.map → range-input-Oc8Z7tsH.js.map} +1 -1
  140. package/dist/{section-B_1poNPX.js → section-DbYzqbWp.js} +2 -2
  141. package/dist/{section-B_1poNPX.js.map → section-DbYzqbWp.js.map} +1 -1
  142. package/dist/sectioned-page-Ba06ASAC.js +21 -0
  143. package/dist/sectioned-page-Ba06ASAC.js.map +1 -0
  144. package/dist/{select-DWOHAUfQ.js → select-CrdsGEgR.js} +3 -3
  145. package/dist/{select-DWOHAUfQ.js.map → select-CrdsGEgR.js.map} +1 -1
  146. package/dist/tab-nav-pvb2XhOD.js +16 -0
  147. package/dist/tab-nav-pvb2XhOD.js.map +1 -0
  148. package/dist/{tabs-e_cUi6pL.js → tabs-DdGp_ET2.js} +3 -3
  149. package/dist/{tabs-e_cUi6pL.js.map → tabs-DdGp_ET2.js.map} +1 -1
  150. package/dist/test-support/index.js +37 -26
  151. package/dist/test-support/index.js.map +1 -1
  152. package/dist/{text-area-BsDD1dpV.js → text-area-BBLWOU6L.js} +2 -2
  153. package/dist/{text-area-BsDD1dpV.js.map → text-area-BBLWOU6L.js.map} +1 -1
  154. package/dist/{text-input-BntDzi8S.js → text-input-B5cPU_e-.js} +2 -2
  155. package/dist/{text-input-BntDzi8S.js.map → text-input-B5cPU_e-.js.map} +1 -1
  156. package/package.json +45 -46
  157. package/dist/alert-DmCWMMRr.js.map +0 -1
  158. package/dist/app-header-DKlDPWSe.js.map +0 -1
  159. package/dist/button-BAtG9lC0.js +0 -24
  160. package/dist/card-Bq4sLW1m.js +0 -14
  161. package/dist/currency-input-BqNb3IcU.js +0 -20
  162. package/dist/data-table-ZliVM1td.js +0 -16
  163. package/dist/focus-page-Boq96jK3.js +0 -19
  164. package/dist/form-CXvWQbiY.js +0 -500
  165. package/dist/icon-rlG6O1ps.js.map +0 -1
  166. package/dist/input-builder-C6GkddCw.js +0 -18
  167. package/dist/menu-DCDUaqYZ.js.map +0 -1
  168. package/dist/nav-link-DL59IUt0.js +0 -22
  169. package/dist/page-DNrVa_Zo.js +0 -19
  170. package/dist/push-DnJFFc_p.js +0 -24
  171. package/dist/sectioned-page-D9Xxr97R.js +0 -21
  172. package/dist/sectioned-page-D9Xxr97R.js.map +0 -1
@@ -0,0 +1,508 @@
1
+ import Component from '@glimmer/component';
2
+ import { hash, uniqueId } from '@ember/helper';
3
+ import { createForm } from '@hokulea/ember-pahu';
4
+ import { precompileTemplate } from '@ember/template-compilation';
5
+ import { setComponentTemplate } from '@ember/component';
6
+ import templateOnly from '@ember/component/template-only';
7
+ import { tracked } from '@glimmer/tracking';
8
+ import { next } from '@ember/runloop';
9
+ import { element } from 'ember-element-helper';
10
+ import { a as and, b as asBoolean, c as asNumber, d as asString, e as eq } from './helpers-D4So5-uK.js';
11
+ import { I as Icon } from './icon-ej-3ZqQt.js';
12
+ import { g, i } from 'decorator-transforms/runtime-esm';
13
+ import { C as Checkbox } from './checkbox-Dq-Ba0eG.js';
14
+ import { modifier } from 'ember-modifier';
15
+ import { C as CurrencyInput } from './currency-input-BXZynbgP.js';
16
+ import { D as DateInput } from './date-input-Do_gdYif.js';
17
+ import { E as EmailInput } from './email-input-C3DQI5CS.js';
18
+ import { L as List } from './list-CIQXPiUH.js';
19
+ import { N as NumberInput } from './number-input-C3nCdLGj.js';
20
+ import { P as PasswordInput } from './password-input-DRa3El-5.js';
21
+ import { P as PhoneInput } from './phone-input-D3AIkLe8.js';
22
+ import { R as RangeInput } from './range-input-Oc8Z7tsH.js';
23
+ import { S as Select } from './select-CrdsGEgR.js';
24
+ import { R as Radio } from './radio-BQ_nDgm0.js';
25
+ import { T as TextInput } from './text-input-B5cPU_e-.js';
26
+ import { T as TextArea } from './text-area-BBLWOU6L.js';
27
+ import { d as disabled } from './disabled-B_FQ0Z51.js';
28
+
29
+ // import Icon from '../../../components/icon';
30
+ const Errors = setComponentTemplate(precompileTemplate("<div id={{@id}} aria-live=\"assertive\" class=\"form-errors\" ...attributes>\n {{!-- <span><Icon @icon='dismiss-circle' @style='filled' /></span> --}}\n {{#if (has-block)}}\n {{yield @errors}}\n {{else}}\n <div>\n {{#each @errors as |e|}}\n {{#if e.message}}\n <p data-test-error data-test-error-type=\"{{e.type}}\" data-test-error-value=\"{{e.value}}\">{{e.message}}</p>\n {{/if}}\n {{/each}}\n </div>\n {{/if}}\n</div>", {
31
+ strictMode: true
32
+ }), templateOnly());
33
+
34
+ const Description = setComponentTemplate(precompileTemplate("<p class=\"form-description\" data-test-description ...attributes>\n {{yield}}\n</p>", {
35
+ strictMode: true
36
+ }), templateOnly());
37
+
38
+ const Label = setComponentTemplate(precompileTemplate("{{#let (if @element @element (element \"label\")) as |Element|}}\n <Element class=\"form-label\" data-test-label ...attributes>\n {{yield}}\n </Element>\n{{/let}}", {
39
+ strictMode: true,
40
+ scope: () => ({
41
+ element
42
+ })
43
+ }), templateOnly());
44
+
45
+ const ErrorIcon = `<svg xmlns="http://www.w3.org/2000/svg" width="256"
46
+ height="256" viewBox="0 0 256 256"><path fill="currentColor" d="M208.49
47
+ 191.51a12 12 0 0 1-17 17L128 145l-63.51 63.49a12 12 0 0 1-17-17L111 128L47.51
48
+ 64.49a12 12 0 0 1 17-17L128 111l63.51-63.52a12 12 0 0 1 17 17L145
49
+ 128Z"/></svg>`;
50
+ const ValidIcon = `<svg xmlns="http://www.w3.org/2000/svg" width="256"
51
+ height="256" viewBox="0 0 256 256"><path fill="currentColor" d="m232.49
52
+ 80.49l-128 128a12 12 0 0 1-17 0l-56-56a12 12 0 1 1 17-17L96 183L215.51 63.51a12
53
+ 12 0 0 1 17 17Z"/></svg>`;
54
+ class Rule extends Component {
55
+ isInvalid = () => {
56
+ return this.args.errors?.some(i => this.args.key in i && i[this.args.key] === this.args.value);
57
+ };
58
+ static {
59
+ setComponentTemplate(precompileTemplate("<p data-test-rule data-test-rule-invalid={{(this.isInvalid)}}>\n <Icon @icon={{if (this.isInvalid) ErrorIcon ValidIcon}} data-invalid={{(this.isInvalid)}} data-icon />\n\n <span>{{yield}}</span>\n</p>", {
60
+ strictMode: true,
61
+ scope: () => ({
62
+ Icon,
63
+ ErrorIcon,
64
+ ValidIcon
65
+ })
66
+ }), this);
67
+ }
68
+ }
69
+ class Rules extends Component {
70
+ constructor(owner, args) {
71
+ super(owner, args);
72
+ args.useRules(true);
73
+ }
74
+ static {
75
+ setComponentTemplate(precompileTemplate("<div id={{@id}} aria-live=\"assertive\" class=\"form-rules\" ...attributes>\n {{yield (component Rule errors=@errors)}}\n</div>", {
76
+ strictMode: true,
77
+ scope: () => ({
78
+ Rule
79
+ })
80
+ }), this);
81
+ }
82
+ }
83
+
84
+ class Field extends Component {
85
+ static {
86
+ g(this.prototype, "rulesUsed", [tracked], function () {
87
+ return false;
88
+ });
89
+ }
90
+ #rulesUsed = (i(this, "rulesUsed"), void 0);
91
+ #field;
92
+ get validateOn() {
93
+ return this.rulesUsed ? 'input' : this.args.validateOn;
94
+ }
95
+ get revalidateOn() {
96
+ return this.rulesUsed ? 'input' : this.args.revalidateOn;
97
+ }
98
+ createOrUpdateField = config => {
99
+ const filteredConfig = Object.fromEntries(Object.entries(config).filter(([_, v]) => v !== undefined));
100
+ if (this.#field) {
101
+ this.#field.updateConfig(filteredConfig);
102
+ } else {
103
+ this.#field = this.args.form.createField(filteredConfig);
104
+ }
105
+ return this.#field;
106
+ };
107
+ useRules = useRules => {
108
+ // eslint-disable-next-line ember/no-runloop
109
+ next(async () => {
110
+ this.rulesUsed = useRules;
111
+ if (useRules) {
112
+ await this.#field?.validate();
113
+ }
114
+ });
115
+ };
116
+ get showErrors() {
117
+ return !this.rulesUsed && this.args.showErrors !== false;
118
+ }
119
+ static {
120
+ setComponentTemplate(precompileTemplate("{{#let (uniqueId) (uniqueId) (if @element @element (element \"div\")) (this.createOrUpdateField name=@name ignoreNativeValidation=@ignoreNativeValidation linkedField=@linkedField validateOn=this.validateOn revalidateOn=this.revalidateOn validate=@validate validated=@validated value=@value) (component Rules useRules=this.useRules) as |fieldId errorId Element field WiredRules|}}\n <Element class=\"form-field\" data-test-field={{@name}}>\n {{#if @label}}\n {{#let (if @labelComponent @labelComponent Label) as |L|}}\n <L for={{unless @labelComponent fieldId}}>{{@label}}</L>\n {{/let}}\n {{/if}}\n\n {{#if @description}}\n <Description>{{@description}}</Description>\n {{/if}}\n\n {{yield (hash value=field.value setValue=field.setValue id=fieldId errorId=errorId invalid=field.invalid registerElement=field.registerElement issues=field.issues validate=field.validate showErrors=this.showErrors Rules=(component WiredRules id=errorId errors=field.issues))}}\n\n {{#if (and this.showErrors field.issues)}}\n <Errors @id={{errorId}} @errors={{field.issues}} />\n {{/if}}\n </Element>\n{{/let}}", {
121
+ strictMode: true,
122
+ scope: () => ({
123
+ uniqueId,
124
+ element,
125
+ Rules,
126
+ Label,
127
+ Description,
128
+ hash,
129
+ and,
130
+ Errors
131
+ })
132
+ }), this);
133
+ }
134
+ }
135
+
136
+ const manageValidation = modifier((element, _, {
137
+ showErrors,
138
+ invalid,
139
+ errorMessageId
140
+ }) => {
141
+ if (showErrors !== false) {
142
+ element.ariaInvalid = invalid ? 'true' : 'false';
143
+ if (invalid) {
144
+ element.setAttribute('aria-errormessage', errorMessageId);
145
+ } else {
146
+ element.removeAttribute('aria-errormessage');
147
+ }
148
+ if (element.parentElement && 'inputBuilder' in element.parentElement.dataset) {
149
+ element.parentElement.dataset.invalid = invalid ? 'true' : 'false';
150
+ }
151
+ }
152
+ return;
153
+ });
154
+
155
+ class CheckboxField extends Component {
156
+ Field = this.args.Field;
157
+ setBooleanValue = setValue => {
158
+ return value => setValue(value);
159
+ };
160
+ static {
161
+ setComponentTemplate(precompileTemplate("<this.Field @label @name={{@name}} @value={{@value}} @ignoreNativeValidation={{@ignoreNativeValidation}} @validateOn={{@validateOn}} @revalidateOn={{@revalidateOn}} @validate={{@validate}} @validated={{@validated}} as |f|>\n <div class=\"form-choices\">\n <div class=\"form-choice\">\n <span>\n <Checkbox @value={{asBoolean f.value}} @update={{this.setBooleanValue f.setValue}} @disabled={{@disabled}} id={{f.id}} name={{@name}} {{f.registerElement}} {{manageValidation errorMessageId=f.errorId invalid=f.invalid showErrors=f.showErrors}} ...attributes />\n </span>\n\n <div>\n <Label for={{f.id}}>{{@label}}</Label>\n\n {{#if @description}}\n <Description>{{@description}}</Description>\n {{/if}}\n </div>\n </div>\n </div>\n</this.Field>", {
162
+ strictMode: true,
163
+ scope: () => ({
164
+ Checkbox,
165
+ asBoolean,
166
+ manageValidation,
167
+ Label,
168
+ Description
169
+ })
170
+ }), this);
171
+ }
172
+ }
173
+
174
+ class CurrencyField extends Component {
175
+ Field = this.args.Field;
176
+ setNumberValue = setValue => {
177
+ return value => setValue(value);
178
+ };
179
+ static {
180
+ setComponentTemplate(precompileTemplate("<this.Field @name={{@name}} @label={{@label}} @description={{@description}} @value={{@value}} @ignoreNativeValidation={{@ignoreNativeValidation}} @validateOn={{@validateOn}} @revalidateOn={{@revalidateOn}} @validate={{@validate}} @validated={{@validated}} as |f|>\n <CurrencyInput @value={{asNumber f.value}} @update={{this.setNumberValue f.setValue}} @disabled={{@disabled}} name={{@name}} id={{f.id}} {{f.registerElement}} {{manageValidation errorMessageId=f.errorId invalid=f.invalid showErrors=f.showErrors}} ...attributes />\n</this.Field>", {
181
+ strictMode: true,
182
+ scope: () => ({
183
+ CurrencyInput,
184
+ asNumber,
185
+ manageValidation
186
+ })
187
+ }), this);
188
+ }
189
+ }
190
+
191
+ class DateField extends Component {
192
+ Field = this.args.Field;
193
+ setStringValue = setValue => {
194
+ return value => setValue(value);
195
+ };
196
+ static {
197
+ setComponentTemplate(precompileTemplate("<this.Field @name={{@name}} @label={{@label}} @description={{@description}} @value={{@value}} @ignoreNativeValidation={{@ignoreNativeValidation}} @validateOn={{@validateOn}} @revalidateOn={{@revalidateOn}} @validate={{@validate}} @validated={{@validated}} as |f|>\n <DateInput @value={{asString f.value}} @update={{this.setStringValue f.setValue}} @disabled={{@disabled}} name={{@name}} id={{f.id}} {{f.registerElement}} {{manageValidation errorMessageId=f.errorId invalid=f.invalid showErrors=f.showErrors}} ...attributes />\n</this.Field>", {
198
+ strictMode: true,
199
+ scope: () => ({
200
+ DateInput,
201
+ asString,
202
+ manageValidation
203
+ })
204
+ }), this);
205
+ }
206
+ }
207
+
208
+ class EmailField extends Component {
209
+ Field = this.args.Field;
210
+ setStringValue = setValue => {
211
+ return value => setValue(value);
212
+ };
213
+ static {
214
+ setComponentTemplate(precompileTemplate("<this.Field @name={{@name}} @label={{@label}} @description={{@description}} @value={{@value}} @ignoreNativeValidation={{@ignoreNativeValidation}} @validateOn={{@validateOn}} @revalidateOn={{@revalidateOn}} @validate={{@validate}} @validated={{@validated}} as |f|>\n <EmailInput @value={{asString f.value}} @update={{this.setStringValue f.setValue}} @disabled={{@disabled}} name={{@name}} id={{f.id}} {{f.registerElement}} {{manageValidation errorMessageId=f.errorId invalid=f.invalid showErrors=f.showErrors}} ...attributes />\n</this.Field>", {
215
+ strictMode: true,
216
+ scope: () => ({
217
+ EmailInput,
218
+ asString,
219
+ manageValidation
220
+ })
221
+ }), this);
222
+ }
223
+ }
224
+
225
+ const ListLabel = setComponentTemplate(precompileTemplate("<Label @element={{element \"span\"}} id={{@id}}>{{yield}}</Label>", {
226
+ strictMode: true,
227
+ scope: () => ({
228
+ Label,
229
+ element
230
+ })
231
+ }), templateOnly());
232
+ class ListField extends Component {
233
+ Field = this.args.Field;
234
+ List = List;
235
+ setValue = setValue => {
236
+ return value => setValue(value);
237
+ };
238
+ asValue = value => value;
239
+ static {
240
+ setComponentTemplate(precompileTemplate("{{#let (uniqueId) as |labelId|}}\n <this.Field @name={{@name}} @label={{@label}} @labelComponent={{component ListLabel id=labelId}} @description={{@description}} @value={{@value}} @ignoreNativeValidation={{@ignoreNativeValidation}} @validateOn={{@validateOn}} @revalidateOn={{@revalidateOn}} @validate={{@validate}} @validated={{@validated}} as |f|>\n <this.List @value={{this.asValue f.value}} @update={{this.setValue f.setValue}} @disabled={{@disabled}} {{!-- name={{@name}} --}} aria-labelledby={{labelId}} {{f.registerElement}} {{manageValidation errorMessageId=f.errorId invalid=f.invalid}} ...attributes as |s|>\n {{yield s}}\n </this.List>\n </this.Field>\n{{/let}}", {
241
+ strictMode: true,
242
+ scope: () => ({
243
+ uniqueId,
244
+ ListLabel,
245
+ manageValidation
246
+ })
247
+ }), this);
248
+ }
249
+ }
250
+
251
+ let Option$1 = class Option extends Component {
252
+ select = checked => {
253
+ if (checked) {
254
+ this.args.field.setValue([...(this.args.field.value ?? []), this.args.value]);
255
+ } else {
256
+ const values = this.args.field.value;
257
+ const index = this.args.field.value?.indexOf(this.args.value);
258
+ if (Array.isArray(values) && index) {
259
+ values.splice(index, 1);
260
+ this.args.field.setValue(values);
261
+ }
262
+ }
263
+ };
264
+ get checked() {
265
+ return this.args.field.value?.includes(this.args.value);
266
+ }
267
+ get issues() {
268
+ return this.args.field.issues.filter(i => 'value' in i && i.value === this.args.value);
269
+ }
270
+ get invalid() {
271
+ return this.issues.length > 0;
272
+ }
273
+ static {
274
+ setComponentTemplate(precompileTemplate("{{#let (uniqueId) (uniqueId) as |id errorId|}}\n <div class=\"form-choice\" data-test-option>\n <span>\n <Checkbox @value={{this.checked}} @update={{this.select}} @disabled={{@disabled}} id={{id}} name={{@name}} value={{@value}} {{@field.registerElement}} {{manageValidation errorMessageId=errorId invalid=this.invalid}} ...attributes />\n </span>\n\n <div>\n <Label for={{id}}>{{@label}}</Label>\n\n {{#if @description}}\n <Description>{{@description}}</Description>\n {{/if}}\n\n {{yield}}\n\n {{#if this.issues}}\n <Errors @id={{errorId}} @errors={{this.issues}} />\n {{/if}}\n\n </div>\n </div>\n{{/let}}", {
275
+ strictMode: true,
276
+ scope: () => ({
277
+ uniqueId,
278
+ Checkbox,
279
+ manageValidation,
280
+ Label,
281
+ Description,
282
+ Errors
283
+ })
284
+ }), this);
285
+ }
286
+ };
287
+ class MultipleChoiceField extends Component {
288
+ Field = this.args.Field;
289
+ Option = Option$1;
290
+ asMultiField = field => {
291
+ return field;
292
+ };
293
+ static {
294
+ setComponentTemplate(precompileTemplate("<this.Field @element={{element \"fieldset\"}} @showErrors={{false}} @labelComponent={{component Label element=(element \"legend\")}} @name={{@name}} @label={{@label}} @description={{@description}} @value={{@value}} @ignoreNativeValidation={{@ignoreNativeValidation}} @validateOn={{@validateOn}} @revalidateOn={{@revalidateOn}} @validate={{@validate}} @validated={{@validated}} as |f|>\n <div class=\"form-choices\" data-test-choices>\n {{yield (hash Option=(component this.Option field=(this.asMultiField f) name=@name disabled=@disabled))}}\n </div>\n</this.Field>", {
295
+ strictMode: true,
296
+ scope: () => ({
297
+ element,
298
+ Label,
299
+ hash
300
+ })
301
+ }), this);
302
+ }
303
+ }
304
+
305
+ class NumberField extends Component {
306
+ Field = this.args.Field;
307
+ setNumberValue = setValue => {
308
+ return value => setValue(value);
309
+ };
310
+ static {
311
+ setComponentTemplate(precompileTemplate("<this.Field @name={{@name}} @label={{@label}} @description={{@description}} @value={{@value}} @ignoreNativeValidation={{@ignoreNativeValidation}} @validateOn={{@validateOn}} @revalidateOn={{@revalidateOn}} @validate={{@validate}} @validated={{@validated}} as |f|>\n <NumberInput @value={{asNumber f.value}} @update={{this.setNumberValue f.setValue}} @disabled={{@disabled}} name={{@name}} id={{f.id}} {{f.registerElement}} {{manageValidation errorMessageId=f.errorId invalid=f.invalid showErrors=f.showErrors}} ...attributes />\n</this.Field>", {
312
+ strictMode: true,
313
+ scope: () => ({
314
+ NumberInput,
315
+ asNumber,
316
+ manageValidation
317
+ })
318
+ }), this);
319
+ }
320
+ }
321
+
322
+ class PasswordField extends Component {
323
+ Field = this.args.Field;
324
+ setStringValue = setValue => {
325
+ return value => setValue(value);
326
+ };
327
+ static {
328
+ setComponentTemplate(precompileTemplate("<this.Field @name={{@name}} @label={{@label}} @description={{@description}} @value={{@value}} @ignoreNativeValidation={{@ignoreNativeValidation}} @validateOn={{@validateOn}} @revalidateOn={{@revalidateOn}} @validate={{@validate}} @validated={{@validated}} as |f|>\n <PasswordInput @value={{asString f.value}} @update={{this.setStringValue f.setValue}} @disabled={{@disabled}} name={{@name}} id={{f.id}} {{f.registerElement}} {{manageValidation errorMessageId=f.errorId invalid=f.invalid showErrors=f.showErrors}} ...attributes />\n\n {{#if (has-block \"rules\")}}\n <f.Rules as |Rule|>\n {{yield Rule to=\"rules\"}}\n </f.Rules>\n {{/if}}\n</this.Field>", {
329
+ strictMode: true,
330
+ scope: () => ({
331
+ PasswordInput,
332
+ asString,
333
+ manageValidation
334
+ })
335
+ }), this);
336
+ }
337
+ }
338
+
339
+ class PhoneField extends Component {
340
+ Field = this.args.Field;
341
+ setStringValue = setValue => {
342
+ return value => setValue(value);
343
+ };
344
+ static {
345
+ setComponentTemplate(precompileTemplate("<this.Field @name={{@name}} @label={{@label}} @description={{@description}} @value={{@value}} @ignoreNativeValidation={{@ignoreNativeValidation}} @validateOn={{@validateOn}} @revalidateOn={{@revalidateOn}} @validate={{@validate}} @validated={{@validated}} as |f|>\n <PhoneInput @value={{asString f.value}} @update={{this.setStringValue f.setValue}} @disabled={{@disabled}} name={{@name}} id={{f.id}} {{f.registerElement}} {{manageValidation errorMessageId=f.errorId invalid=f.invalid showErrors=f.showErrors}} ...attributes />\n\n {{#if (has-block \"rules\")}}\n <f.Rules as |Rule|>\n {{yield Rule to=\"rules\"}}\n </f.Rules>\n {{/if}}\n</this.Field>", {
346
+ strictMode: true,
347
+ scope: () => ({
348
+ PhoneInput,
349
+ asString,
350
+ manageValidation
351
+ })
352
+ }), this);
353
+ }
354
+ }
355
+
356
+ class RangeField extends Component {
357
+ Field = this.args.Field;
358
+ setNumberValue = setValue => {
359
+ return value => setValue(value);
360
+ };
361
+ static {
362
+ setComponentTemplate(precompileTemplate("<this.Field @name={{@name}} @label={{@label}} @description={{@description}} @value={{@value}} @ignoreNativeValidation={{@ignoreNativeValidation}} @validateOn={{@validateOn}} @revalidateOn={{@revalidateOn}} @validate={{@validate}} @validated={{@validated}} as |f|>\n <RangeInput @value={{asNumber f.value}} @update={{this.setNumberValue f.setValue}} @disabled={{@disabled}} @orientation={{@orientation}} @min={{@min}} @max={{@max}} @step={{@step}} name={{@name}} id={{f.id}} {{f.registerElement}} {{manageValidation errorMessageId=f.errorId invalid=f.invalid showErrors=f.showErrors}} ...attributes />\n</this.Field>", {
363
+ strictMode: true,
364
+ scope: () => ({
365
+ RangeInput,
366
+ asNumber,
367
+ manageValidation
368
+ })
369
+ }), this);
370
+ }
371
+ }
372
+
373
+ class SelectField extends Component {
374
+ Field = this.args.Field;
375
+ setValue = setValue => {
376
+ return value => setValue(value);
377
+ };
378
+ static {
379
+ setComponentTemplate(precompileTemplate("<this.Field @name={{@name}} @label={{@label}} @description={{@description}} @value={{@value}} @ignoreNativeValidation={{@ignoreNativeValidation}} @validateOn={{@validateOn}} @revalidateOn={{@revalidateOn}} @validate={{@validate}} @validated={{@validated}} as |f|>\n <Select @value={{asString f.value}} @update={{this.setValue f.setValue}} @disabled={{@disabled}} name={{@name}} id={{f.id}} {{f.registerElement}} {{manageValidation errorMessageId=f.errorId invalid=f.invalid showErrors=f.showErrors}} ...attributes as |s|>\n {{yield s}}\n </Select>\n</this.Field>", {
380
+ strictMode: true,
381
+ scope: () => ({
382
+ Select,
383
+ asString,
384
+ manageValidation
385
+ })
386
+ }), this);
387
+ }
388
+ }
389
+
390
+ class Option extends Component {
391
+ select = () => {
392
+ this.args.field.setValue(this.args.value);
393
+ };
394
+ static {
395
+ setComponentTemplate(precompileTemplate("{{#let (uniqueId) as |id|}}\n <div class=\"form-choice\" data-test-option>\n <span>\n <Radio @value={{eq @field.value @value}} @update={{this.select}} @disabled={{@disabled}} id={{id}} name={{@name}} value={{@value}} {{@field.registerElement}} ...attributes />\n </span>\n\n <div>\n <Label for={{id}}>{{@label}}</Label>\n\n {{#if @description}}\n <Description>{{@description}}</Description>\n {{/if}}\n\n {{yield}}\n </div>\n </div>\n{{/let}}", {
396
+ strictMode: true,
397
+ scope: () => ({
398
+ uniqueId,
399
+ Radio,
400
+ eq,
401
+ Label,
402
+ Description
403
+ })
404
+ }), this);
405
+ }
406
+ }
407
+ class SingularChoiceField extends Component {
408
+ Field = this.args.Field;
409
+ Option = Option;
410
+ static {
411
+ setComponentTemplate(precompileTemplate("<this.Field @element={{element \"fieldset\"}} @labelComponent={{component Label element=(element \"legend\")}} @name={{@name}} @label={{@label}} @description={{@description}} @value={{@value}} @ignoreNativeValidation={{@ignoreNativeValidation}} @validateOn={{@validateOn}} @revalidateOn={{@revalidateOn}} @validate={{@validate}} @validated={{@validated}} as |f|>\n <div class=\"form-choices\" data-test-choices>\n {{yield (hash Option=(component this.Option field=f name=@name disabled=@disabled))}}\n </div>\n</this.Field>", {
412
+ strictMode: true,
413
+ scope: () => ({
414
+ element,
415
+ Label,
416
+ hash
417
+ })
418
+ }), this);
419
+ }
420
+ }
421
+
422
+ class TextField extends Component {
423
+ Field = this.args.Field;
424
+ setStringValue = setValue => {
425
+ return value => setValue(value);
426
+ };
427
+ static {
428
+ setComponentTemplate(precompileTemplate("<@Field @name={{@name}} @label={{@label}} @description={{@description}} @value={{@value}} @ignoreNativeValidation={{@ignoreNativeValidation}} @validateOn={{@validateOn}} @revalidateOn={{@revalidateOn}} @validate={{@validate}} @validated={{@validated}} as |f|>\n <TextInput @value={{asString f.value}} @update={{this.setStringValue f.setValue}} @disabled={{@disabled}} name={{@name}} id={{f.id}} {{f.registerElement}} {{manageValidation errorMessageId=f.errorId invalid=f.invalid showErrors=f.showErrors}} ...attributes />\n\n {{#if (has-block \"rules\")}}\n <f.Rules as |Rule|>\n {{yield Rule to=\"rules\"}}\n </f.Rules>\n {{/if}}\n</@Field>", {
429
+ strictMode: true,
430
+ scope: () => ({
431
+ TextInput,
432
+ asString,
433
+ manageValidation
434
+ })
435
+ }), this);
436
+ }
437
+ }
438
+
439
+ class TextAreaField extends Component {
440
+ Field = this.args.Field;
441
+ setStringValue = setValue => {
442
+ return value => setValue(value);
443
+ };
444
+ static {
445
+ setComponentTemplate(precompileTemplate("<this.Field @name={{@name}} @label={{@label}} @description={{@description}} @value={{@value}} @ignoreNativeValidation={{@ignoreNativeValidation}} @validateOn={{@validateOn}} @revalidateOn={{@revalidateOn}} @validate={{@validate}} @validated={{@validated}} as |f|>\n <TextArea @value={{asString f.value}} @update={{this.setStringValue f.setValue}} @disabled={{@disabled}} name={{@name}} id={{f.id}} {{f.registerElement}} {{manageValidation errorMessageId=f.errorId invalid=f.invalid showErrors=f.showErrors}} ...attributes />\n</this.Field>", {
446
+ strictMode: true,
447
+ scope: () => ({
448
+ TextArea,
449
+ asString,
450
+ manageValidation
451
+ })
452
+ }), this);
453
+ }
454
+ }
455
+
456
+ const Reset = setComponentTemplate(precompileTemplate("<button type=\"reset\" class=\"button\" 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>", {
457
+ strictMode: true,
458
+ scope: () => ({
459
+ disabled
460
+ })
461
+ }), templateOnly());
462
+
463
+ const Submit = setComponentTemplate(precompileTemplate("<button type=\"submit\" class=\"button\" 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>", {
464
+ strictMode: true,
465
+ scope: () => ({
466
+ disabled
467
+ })
468
+ }), templateOnly());
469
+
470
+ const FormErrors = setComponentTemplate(precompileTemplate("{{#if @errors}}\n <Errors @errors={{@errors}} @id={{(uniqueId)}} />\n{{/if}}", {
471
+ strictMode: true,
472
+ scope: () => ({
473
+ Errors,
474
+ uniqueId
475
+ })
476
+ }), templateOnly());
477
+ class Form extends Component {
478
+ Field = Field;
479
+ CheckboxField = CheckboxField;
480
+ CurrencyField = CurrencyField;
481
+ DateField = DateField;
482
+ EmailField = EmailField;
483
+ ListField = ListField;
484
+ MultipleChoiceField = MultipleChoiceField;
485
+ NumberField = NumberField;
486
+ PasswordField = PasswordField;
487
+ PhoneField = PhoneField;
488
+ RangeField = RangeField;
489
+ SelectField = SelectField;
490
+ SingularChoiceField = SingularChoiceField;
491
+ TextAreaField = TextAreaField;
492
+ TextField = TextField;
493
+ static {
494
+ setComponentTemplate(precompileTemplate("{{#let (createForm data=@data ignoreNativeValidation=@ignoreNativeValidation validateOn=@validateOn revalidateOn=@revalidateOn submit=@submit validate=@validate validated=@validated) as |f|}}\n <form novalidate class=\"form\" data-test-form ...attributes {{f.registerElement}}>\n {{#let (component this.Field form=f) as |WiredField|}}\n {{yield (hash invalid=f.invalid submit=f.submit Field=WiredField Checkbox=(component this.CheckboxField Field=WiredField) Currency=(component this.CurrencyField Field=WiredField) Date=(component this.DateField Field=WiredField) Email=(component this.EmailField Field=WiredField) List=(component this.ListField Field=WiredField) MultipleChoice=(component this.MultipleChoiceField Field=WiredField) Number=(component this.NumberField Field=WiredField) Password=(component this.PasswordField Field=WiredField) Phone=(component this.PhoneField Field=WiredField) Range=(component this.RangeField Field=WiredField) Select=(component this.SelectField Field=WiredField) SingularChoice=(component this.SingularChoiceField Field=WiredField) TextArea=(component this.TextAreaField Field=WiredField) Text=(component this.TextField Field=WiredField) Errors=(component FormErrors errors=f.issues) Submit=Submit Reset=Reset)}}\n {{/let}}\n </form>\n{{/let}}", {
495
+ strictMode: true,
496
+ scope: () => ({
497
+ createForm,
498
+ hash,
499
+ FormErrors,
500
+ Submit,
501
+ Reset
502
+ })
503
+ }), this);
504
+ }
505
+ }
506
+
507
+ export { Form as F };
508
+ //# sourceMappingURL=form-VcfCjgct.js.map