@hokulea/ember 0.11.0 → 0.12.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.
@@ -0,0 +1,2 @@
1
+ export { Alert as default } from './feedback/alert';
2
+ //# sourceMappingURL=alert.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alert.d.ts","sourceRoot":"","sources":["../../src/components/alert.gts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,IAAI,OAAO,EAAE,MAAM,sBAAsB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"text-area.d.ts","sourceRoot":"","sources":["../../../src/components/controls/text-area.gts"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,gCAAgC,CAAC;AAE1D,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,mBAAmB,CAAC;IAC7B,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;CACzB;AAED,eAAO,MAAM,QAAQ,EAAE,GAAG,CAAC,iBAAiB,CAqB1C,CAAC"}
1
+ {"version":3,"file":"text-area.d.ts","sourceRoot":"","sources":["../../../src/components/controls/text-area.gts"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,gCAAgC,CAAC;AAE1D,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,mBAAmB,CAAC;IAC7B,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;CACzB;AAED,eAAO,MAAM,QAAQ,EAAE,GAAG,CAAC,iBAAiB,CAmB1C,CAAC"}
@@ -0,0 +1,27 @@
1
+ import Component from '@glimmer/component';
2
+ import { type Importance, Indicator } from '@hokulea/tokens';
3
+ import type { ComponentLike } from '@glint/template';
4
+ export interface AlertSignature<E extends Element = HTMLDivElement> {
5
+ Element: E;
6
+ Args: {
7
+ element?: ComponentLike<{
8
+ Element: HTMLElement;
9
+ }>;
10
+ indicator?: Indicator;
11
+ importance?: Importance;
12
+ icon?: string | ComponentLike;
13
+ title?: string;
14
+ };
15
+ Blocks: {
16
+ default?: [];
17
+ title?: [];
18
+ content?: [];
19
+ actions?: [];
20
+ };
21
+ }
22
+ export declare class Alert<E extends Element = HTMLDivElement> extends Component<AlertSignature<E>> {
23
+ get icon(): string | ComponentLike;
24
+ get role(): "alert" | "alertdialog" | undefined;
25
+ hasTitle: (titleBlock: boolean) => string | true | undefined;
26
+ }
27
+ //# sourceMappingURL=alert.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alert.d.ts","sourceRoot":"","sources":["../../../src/components/feedback/alert.gts"],"names":[],"mappings":"AAmIA,OAAO,SAAS,MAAM,oBAAoB,CAAC;AAK3C,OAAO,EAAE,KAAK,UAAU,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAI7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AA2BrD,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,OAAO,GAAG,cAAc;IAChE,OAAO,EAAE,CAAC,CAAC;IACX,IAAI,EAAE;QACJ,OAAO,CAAC,EAAE,aAAa,CAAC;YAAE,OAAO,EAAE,WAAW,CAAA;SAAE,CAAC,CAAC;QAClD,SAAS,CAAC,EAAE,SAAS,CAAC;QACtB,UAAU,CAAC,EAAE,UAAU,CAAC;QACxB,IAAI,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC;QAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,MAAM,EAAE;QACN,OAAO,CAAC,EAAE,EAAE,CAAC;QACb,KAAK,CAAC,EAAE,EAAE,CAAC;QACX,OAAO,CAAC,EAAE,EAAE,CAAC;QACb,OAAO,CAAC,EAAE,EAAE,CAAC;KACd,CAAC;CACH;AAED,qBAAa,KAAK,CAAC,CAAC,SAAS,OAAO,GAAG,cAAc,CAAE,SAAQ,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IACzF,IAAI,IAAI,2BAkBP;IAED,IAAI,IAAI,wCAQP;IAED,QAAQ,GAAI,YAAY,OAAO,+BAE7B;CAsFH"}
@@ -17,6 +17,7 @@ export { Tabs } from './components/controls/tabs';
17
17
  export { TextArea } from './components/controls/text-area';
18
18
  export { TextInput } from './components/controls/text-input';
19
19
  export { DataTable } from './components/data/data-table';
20
+ export { Alert } from './components/feedback/alert';
20
21
  export type { FieldValidationHandler, FormBuilder, FormValidationHandler, SubmitHandler, ValidatedHandler, ValidationResult } from './components/form/index.ts';
21
22
  export { Form } from './components/form/index.ts';
22
23
  export { Avatar } from './components/graphics/avatar';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,sCAAsC,CAAC;AAGlE,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AACvE,OAAO,EAAE,IAAI,EAAE,MAAM,gCAAgC,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,MAAM,gCAAgC,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AACnE,OAAO,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AACnE,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,gCAAgC,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AAGjE,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAG7D,YAAY,EACV,sBAAsB,EACtB,WAAW,EACX,qBAAqB,EACrB,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,4BAA4B,CAAC;AAGlD,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,gCAAgC,CAAC;AAGtD,OAAO,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AACnE,OAAO,EAAE,IAAI,EAAE,MAAM,kCAAkC,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAC;AAGpE,OAAO,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,MAAM,+BAA+B,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAGxE,OAAO,EAAE,GAAG,EAAE,MAAM,8BAA8B,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,+BAA+B,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAG3D,OAAO,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAG/C,OAAO;AACL,gBAAgB;AAChB,OAAO,IAAI,cAAc,EAC1B,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,sCAAsC,CAAC;AAGlE,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AACvE,OAAO,EAAE,IAAI,EAAE,MAAM,gCAAgC,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,MAAM,gCAAgC,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AACnE,OAAO,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AACnE,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,gCAAgC,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AAGjE,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAG7D,OAAO,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAC;AAGxD,YAAY,EACV,sBAAsB,EACtB,WAAW,EACX,qBAAqB,EACrB,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,4BAA4B,CAAC;AAGlD,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,gCAAgC,CAAC;AAGtD,OAAO,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AACnE,OAAO,EAAE,IAAI,EAAE,MAAM,kCAAkC,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAC;AAGpE,OAAO,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,MAAM,+BAA+B,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAGxE,OAAO,EAAE,GAAG,EAAE,MAAM,8BAA8B,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,+BAA+B,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAG3D,OAAO,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAG/C,OAAO;AACL,gBAAgB;AAChB,OAAO,IAAI,cAAc,EAC1B,MAAM,wBAAwB,CAAC"}
@@ -21,6 +21,7 @@ import type { Tabs } from './components/controls/tabs';
21
21
  import type { TextArea } from './components/controls/text-area';
22
22
  import type { TextInput } from './components/controls/text-input';
23
23
  import type DataTable from './components/data-table';
24
+ import type { Alert } from './components/feedback/alert';
24
25
  import type { Form } from './components/form/form';
25
26
  import type { Icon } from './components/graphics/icon';
26
27
  import type { FocusPage } from './components/layouts/focus-page';
@@ -55,6 +56,7 @@ export default interface HokuleaRegistry {
55
56
  TextArea: typeof TextArea;
56
57
  TextInput: typeof TextInput;
57
58
  DataTable: typeof DataTable;
59
+ Alert: typeof Alert;
58
60
  Form: typeof Form;
59
61
  Avatar: typeof Avatar;
60
62
  Icon: typeof Icon;
@@ -1 +1 @@
1
- {"version":3,"file":"template-registry.d.ts","sourceRoot":"","sources":["../src/template-registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"template-registry.d.ts","sourceRoot":"","sources":["../src/template-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,KAAK,MAAM,MAAM,yBAAyB,CAAC;AAClD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,+BAA+B,CAAC;AAC1D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AAC9E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AACtE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AAC5E,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAC;AAC1E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AAC9E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AACxE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AACxE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAC/D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AACtE,OAAO,KAAK,SAAS,MAAM,6BAA6B,CAAC;AACzD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,+BAA+B,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,KAAK,IAAI,MAAM,uBAAuB,CAAC;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAClF,OAAO,KAAK,UAAU,MAAM,6BAA6B,CAAC;AAC1D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAEpD,MAAM,CAAC,OAAO,WAAW,eAAe;IAEtC,MAAM,EAAE,OAAO,MAAM,CAAC;IACtB,UAAU,EAAE,OAAO,UAAU,CAAC;IAG9B,GAAG,EAAE,OAAO,GAAG,CAAC;IAChB,IAAI,EAAE,OAAO,IAAI,CAAC;IAClB,OAAO,EAAE,OAAO,OAAO,CAAC;IAGxB,QAAQ,EAAE,OAAO,QAAQ,CAAC;IAC1B,aAAa,EAAE,OAAO,aAAa,CAAC;IACpC,SAAS,EAAE,OAAO,SAAS,CAAC;IAC5B,UAAU,EAAE,OAAO,UAAU,CAAC;IAC9B,YAAY,EAAE,OAAO,YAAY,CAAC;IAClC,IAAI,EAAE,OAAO,IAAI,CAAC;IAClB,IAAI,EAAE,OAAO,IAAI,CAAC;IAClB,WAAW,EAAE,OAAO,WAAW,CAAC;IAChC,aAAa,EAAE,OAAO,aAAa,CAAC;IACpC,UAAU,EAAE,OAAO,UAAU,CAAC;IAC9B,KAAK,EAAE,OAAO,KAAK,CAAC;IACpB,UAAU,EAAE,OAAO,UAAU,CAAC;IAC9B,MAAM,EAAE,OAAO,MAAM,CAAC;IACtB,IAAI,EAAE,OAAO,IAAI,CAAC;IAClB,QAAQ,EAAE,OAAO,QAAQ,CAAC;IAC1B,SAAS,EAAE,OAAO,SAAS,CAAC;IAG5B,SAAS,EAAE,OAAO,SAAS,CAAC;IAG5B,KAAK,EAAE,OAAO,KAAK,CAAC;IAGpB,IAAI,EAAE,OAAO,IAAI,CAAC;IAGlB,MAAM,EAAE,OAAO,MAAM,CAAC;IACtB,IAAI,EAAE,OAAO,IAAI,CAAC;IAGlB,IAAI,EAAE,OAAO,IAAI,CAAC;IAClB,SAAS,EAAE,OAAO,SAAS,CAAC;IAC5B,aAAa,EAAE,OAAO,aAAa,CAAC;IAGpC,SAAS,EAAE,OAAO,SAAS,CAAC;IAC5B,IAAI,EAAE,OAAO,IAAI,CAAC;IAClB,cAAc,EAAE,OAAO,cAAc,CAAC;IACtC,UAAU,EAAE,OAAO,UAAU,CAAC;IAG9B,OAAO,EAAE,OAAO,OAAO,CAAC;IACxB,OAAO,EAAE,OAAO,OAAO,CAAC;CACzB"}
@@ -1,3 +1,4 @@
1
+ export { AlertPageObject } from './page-objects/alert.ts';
1
2
  export { AppHeaderPageObject } from './page-objects/app-header.ts';
2
3
  export { AvatarPageObject } from './page-objects/avatar.ts';
3
4
  export { ButtonPageObject } from './page-objects/button.ts';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/test-support/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,KAAK,UAAU,EAAE,cAAc,EAAE,KAAK,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAChG,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAC9E,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjF,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/test-support/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,KAAK,UAAU,EAAE,cAAc,EAAE,KAAK,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAChG,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAC9E,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjF,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { PageObject } from 'fractal-page-object';
2
+ import type { ElementLike } from 'fractal-page-object';
3
+ export declare class AlertPageObject extends PageObject<HTMLButtonElement | HTMLAnchorElement | HTMLSpanElement> {
4
+ static SELECTOR: string;
5
+ constructor(selector?: string, parent?: PageObject | ElementLike | null, index?: number | null);
6
+ get indicator(): string | null | undefined;
7
+ get importance(): string | null | undefined;
8
+ $icon: PageObject<HTMLSpanElement>;
9
+ $title: PageObject<HTMLSpanElement>;
10
+ $content: PageObject<HTMLSpanElement>;
11
+ $actions: PageObject<HTMLSpanElement>;
12
+ }
13
+ //# sourceMappingURL=alert.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alert.d.ts","sourceRoot":"","sources":["../../../src/test-support/page-objects/alert.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAmB,MAAM,qBAAqB,CAAC;AAElE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,qBAAa,eAAgB,SAAQ,UAAU,CAC7C,iBAAiB,GAAG,iBAAiB,GAAG,eAAe,CACxD;IACC,MAAM,CAAC,QAAQ,SAA0B;gBAE7B,QAAQ,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,UAAU,GAAG,WAAW,GAAG,IAAI,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IAI9F,IAAI,SAAS,IAAI,MAAM,GAAG,IAAI,GAAG,SAAS,CAEzC;IAED,IAAI,UAAU,IAAI,MAAM,GAAG,IAAI,GAAG,SAAS,CAE1C;IAED,KAAK,8BAAyC;IAC9C,MAAM,8BAA0C;IAChD,QAAQ,8BAA4C;IACpD,QAAQ,8BAA4C;CACrD"}
@@ -0,0 +1 @@
1
+ export { default } from "@hokulea/ember/components/alert";
@@ -0,0 +1,73 @@
1
+ import Component from '@glimmer/component';
2
+ import { uniqueId } from '@ember/helper';
3
+ import { element } from 'ember-element-helper';
4
+ import { Indicator } from '@hokulea/tokens';
5
+ import { I as Icon } from './icon-rlG6O1ps.js';
6
+ import { precompileTemplate } from '@ember/template-compilation';
7
+ import { setComponentTemplate } from '@ember/component';
8
+
9
+ const Info = `<svg xmlns="http://www.w3.org/2000/svg" width="256" height="256"
10
+ viewBox="0 0 256 256"><path fill="currentColor" d="M128 24a104 104 0 1 0 104
11
+ 104A104.11 104.11 0 0 0 128 24m-4 48a12 12 0 1 1-12 12a12 12 0 0 1 12-12m12
12
+ 112a16 16 0 0 1-16-16v-40a8 8 0 0 1 0-16a16 16 0 0 1 16 16v40a8 8 0 0 1 0
13
+ 16"/></svg>`;
14
+ const Success = `<svg xmlns="http://www.w3.org/2000/svg" width="256"
15
+ height="256" viewBox="0 0 256 256"><path fill="currentColor" d="M128 24a104 104
16
+ 0 1 0 104 104A104.11 104.11 0 0 0 128 24m45.66 85.66l-56 56a8 8 0 0 1-11.32
17
+ 0l-24-24a8 8 0 0 1 11.32-11.32L112 148.69l50.34-50.35a8 8 0 0 1 11.32
18
+ 11.32"/></svg>`;
19
+ const Warning = `<svg xmlns="http://www.w3.org/2000/svg" width="256"
20
+ height="256" viewBox="0 0 256 256"><path fill="currentColor" d="M236.8
21
+ 188.09L149.35 36.22a24.76 24.76 0 0 0-42.7 0L19.2 188.09a23.51 23.51 0 0 0 0
22
+ 23.72A24.35 24.35 0 0 0 40.55 224h174.9a24.35 24.35 0 0 0 21.33-12.19a23.51
23
+ 23.51 0 0 0 .02-23.72M120 104a8 8 0 0 1 16 0v40a8 8 0 0 1-16 0Zm8 88a12 12 0 1 1
24
+ 12-12a12 12 0 0 1-12 12"/></svg>`;
25
+ const Error = `<svg xmlns="http://www.w3.org/2000/svg" width="256" height="256"
26
+ viewBox="0 0 256 256"><path fill="currentColor" d="m227.31
27
+ 80.23l-51.54-51.54A16.13 16.13 0 0 0 164.45 24h-72.9a16.13 16.13 0 0 0-11.32
28
+ 4.69L28.69 80.23A16.13 16.13 0 0 0 24 91.55v72.9a16.13 16.13 0 0 0 4.69
29
+ 11.32l51.54 51.54A16.13 16.13 0 0 0 91.55 232h72.9a16.13 16.13 0 0 0
30
+ 11.32-4.69l51.54-51.54a16.13 16.13 0 0 0 4.69-11.32v-72.9a16.13 16.13 0 0
31
+ 0-4.69-11.32M120 80a8 8 0 0 1 16 0v56a8 8 0 0 1-16 0Zm8 104a12 12 0 1 1 12-12a12
32
+ 12 0 0 1-12 12"/></svg>`;
33
+ class Alert extends Component {
34
+ get icon() {
35
+ if (this.args.icon) {
36
+ return this.args.icon;
37
+ }
38
+ if (this.args.indicator === Indicator.Error) {
39
+ return Error;
40
+ }
41
+ if (this.args.indicator === Indicator.Warning) {
42
+ return Warning;
43
+ }
44
+ if (this.args.indicator === Indicator.Success) {
45
+ return Success;
46
+ }
47
+ return Info;
48
+ }
49
+ get role() {
50
+ if (this.args.indicator === Indicator.Success || this.args.indicator === Indicator.Warning) {
51
+ return 'alert';
52
+ }
53
+ if (this.args.indicator === Indicator.Error) {
54
+ return 'alertdialog';
55
+ }
56
+ }
57
+ hasTitle = titleBlock => {
58
+ return titleBlock || this.args.title;
59
+ };
60
+ static {
61
+ setComponentTemplate(precompileTemplate("\n {{#let (if @element @element (element \"div\")) (this.hasTitle (has-block \"title\")) (uniqueId) as |Element titlePresent titleId|}}\n <Element class=\"alert\" role={{this.role}} aria-labelledby={{if titlePresent titleId}} data-indicator={{if @indicator @indicator \"neutral\"}} data-importance={{if @importance @importance \"supreme\"}} data-test-feedback ...attributes>\n <Icon @icon={{this.icon}} part=\"icon\" />\n\n {{#if titlePresent}}\n <span part=\"title\" id={{titleId}}>\n {{#if (has-block \"title\")}}\n {{yield to=\"title\"}}\n {{else if @title}}\n {{@title}}\n {{/if}}\n </span>\n {{/if}}\n\n <div part=\"content\">\n {{#if (has-block \"content\")}}\n {{yield to=\"content\"}}\n {{else}}\n {{yield}}\n {{/if}}\n </div>\n\n {{#if (has-block \"actions\")}}\n <div part=\"actions\">\n {{yield to=\"actions\"}}\n </div>\n {{/if}}\n </Element>\n {{/let}}\n ", {
62
+ strictMode: true,
63
+ scope: () => ({
64
+ element,
65
+ uniqueId,
66
+ Icon
67
+ })
68
+ }), this);
69
+ }
70
+ }
71
+
72
+ export { Alert as A };
73
+ //# sourceMappingURL=alert-DmCWMMRr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alert-DmCWMMRr.js","sources":["../src/components/feedback/alert.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { uniqueId } from '@ember/helper';\n\nimport { element } from 'ember-element-helper';\n\nimport { type Importance, Indicator } from '@hokulea/tokens';\n\nimport { Icon } from '../graphics/icon.gts';\n\nimport type { ComponentLike } from '@glint/template';\n\nconst Info = `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"256\" height=\"256\"\nviewBox=\"0 0 256 256\"><path fill=\"currentColor\" d=\"M128 24a104 104 0 1 0 104\n104A104.11 104.11 0 0 0 128 24m-4 48a12 12 0 1 1-12 12a12 12 0 0 1 12-12m12\n112a16 16 0 0 1-16-16v-40a8 8 0 0 1 0-16a16 16 0 0 1 16 16v40a8 8 0 0 1 0\n16\"/></svg>`;\nconst Success = `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"256\"\nheight=\"256\" viewBox=\"0 0 256 256\"><path fill=\"currentColor\" d=\"M128 24a104 104\n0 1 0 104 104A104.11 104.11 0 0 0 128 24m45.66 85.66l-56 56a8 8 0 0 1-11.32\n0l-24-24a8 8 0 0 1 11.32-11.32L112 148.69l50.34-50.35a8 8 0 0 1 11.32\n11.32\"/></svg>`;\nconst Warning = `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"256\"\nheight=\"256\" viewBox=\"0 0 256 256\"><path fill=\"currentColor\" d=\"M236.8\n188.09L149.35 36.22a24.76 24.76 0 0 0-42.7 0L19.2 188.09a23.51 23.51 0 0 0 0\n23.72A24.35 24.35 0 0 0 40.55 224h174.9a24.35 24.35 0 0 0 21.33-12.19a23.51\n23.51 0 0 0 .02-23.72M120 104a8 8 0 0 1 16 0v40a8 8 0 0 1-16 0Zm8 88a12 12 0 1 1\n12-12a12 12 0 0 1-12 12\"/></svg>`;\nconst Error = `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"256\" height=\"256\"\nviewBox=\"0 0 256 256\"><path fill=\"currentColor\" d=\"m227.31\n80.23l-51.54-51.54A16.13 16.13 0 0 0 164.45 24h-72.9a16.13 16.13 0 0 0-11.32\n4.69L28.69 80.23A16.13 16.13 0 0 0 24 91.55v72.9a16.13 16.13 0 0 0 4.69\n11.32l51.54 51.54A16.13 16.13 0 0 0 91.55 232h72.9a16.13 16.13 0 0 0\n11.32-4.69l51.54-51.54a16.13 16.13 0 0 0 4.69-11.32v-72.9a16.13 16.13 0 0\n0-4.69-11.32M120 80a8 8 0 0 1 16 0v56a8 8 0 0 1-16 0Zm8 104a12 12 0 1 1 12-12a12\n12 0 0 1-12 12\"/></svg>`;\n\nexport interface AlertSignature<E extends Element = HTMLDivElement> {\n Element: E;\n Args: {\n element?: ComponentLike<{ Element: HTMLElement }>;\n indicator?: Indicator;\n importance?: Importance;\n icon?: string | ComponentLike;\n title?: string;\n };\n Blocks: {\n default?: [];\n title?: [];\n content?: [];\n actions?: [];\n };\n}\n\nexport class Alert<E extends Element = HTMLDivElement> extends Component<AlertSignature<E>> {\n get icon() {\n if (this.args.icon) {\n return this.args.icon;\n }\n\n if (this.args.indicator === Indicator.Error) {\n return Error;\n }\n\n if (this.args.indicator === Indicator.Warning) {\n return Warning;\n }\n\n if (this.args.indicator === Indicator.Success) {\n return Success;\n }\n\n return Info;\n }\n\n get role() {\n if (this.args.indicator === Indicator.Success || this.args.indicator === Indicator.Warning) {\n return 'alert';\n }\n\n if (this.args.indicator === Indicator.Error) {\n return 'alertdialog';\n }\n }\n\n hasTitle = (titleBlock: boolean) => {\n return titleBlock || this.args.title;\n };\n\n <template>\n {{#let\n (if @element @element (element \"div\")) (this.hasTitle (has-block \"title\")) (uniqueId)\n as |Element titlePresent titleId|\n }}\n <Element\n class=\"alert\"\n role={{this.role}}\n aria-labelledby={{if titlePresent titleId}}\n data-indicator={{if @indicator @indicator \"neutral\"}}\n data-importance={{if @importance @importance \"supreme\"}}\n data-test-feedback\n ...attributes\n >\n <Icon @icon={{this.icon}} part=\"icon\" />\n\n {{#if titlePresent}}\n <span part=\"title\" id={{titleId}}>\n {{#if (has-block \"title\")}}\n {{yield to=\"title\"}}\n {{else if @title}}\n {{@title}}\n {{/if}}\n </span>\n {{/if}}\n\n <div part=\"content\">\n {{#if (has-block \"content\")}}\n {{yield to=\"content\"}}\n {{else}}\n {{yield}}\n {{/if}}\n </div>\n\n {{#if (has-block \"actions\")}}\n <div part=\"actions\">\n {{yield to=\"actions\"}}\n </div>\n {{/if}}\n </Element>\n {{/let}}\n </template>\n}\n"],"names":["Info","Success","Warning","Error","Alert","Component","icon","args","indicator","Indicator","role","hasTitle","titleBlock","title","setComponentTemplate","precompileTemplate","strictMode","scope","element","uniqueId","Icon"],"mappings":";;;;;;;;AAWA,MAAMA,OAAO,CAAA;;;;YAID;AACZ,MAAMC,UAAU,CAAA;;;;eAID;AACf,MAAMC,UAAU,CAAA;;;;;iCAKiB;AACjC,MAAMC,QAAQ,CAAA;;;;;;;wBAOU;AAmBjB,MAAMC,KAAA,SAAkDC,UAAyB;EACtF,IAAIC,IAAAA,GAAO;AACT,IAAA,IAAI,IAAI,CAACC,IAAI,CAACD,IAAI,EAAE;AAClB,MAAA,OAAO,IAAI,CAACC,IAAI,CAACD,IAAI;AACvB,IAAA;IAEA,IAAI,IAAI,CAACC,IAAI,CAACC,SAAS,KAAKC,SAAA,CAAUN,KAAK,EAAE;AAC3C,MAAA,OAAOA,KAAA;AACT,IAAA;IAEA,IAAI,IAAI,CAACI,IAAI,CAACC,SAAS,KAAKC,SAAA,CAAUP,OAAO,EAAE;AAC7C,MAAA,OAAOA,OAAA;AACT,IAAA;IAEA,IAAI,IAAI,CAACK,IAAI,CAACC,SAAS,KAAKC,SAAA,CAAUR,OAAO,EAAE;AAC7C,MAAA,OAAOA,OAAA;AACT,IAAA;AAEA,IAAA,OAAOD,IAAA;AACT,EAAA;EAEA,IAAIU,IAAAA,GAAO;AACT,IAAA,IAAI,IAAI,CAACH,IAAI,CAACC,SAAS,KAAKC,SAAA,CAAUR,OAAO,IAAI,IAAI,CAACM,IAAI,CAACC,SAAS,KAAKC,SAAA,CAAUP,OAAO,EAAE;AAC1F,MAAA,OAAO,OAAA;AACT,IAAA;IAEA,IAAI,IAAI,CAACK,IAAI,CAACC,SAAS,KAAKC,SAAA,CAAUN,KAAK,EAAE;AAC3C,MAAA,OAAO,aAAA;AACT,IAAA;AACF,EAAA;EAEAQ,QAAA,GAAYC,UAAmB,IAAA;AAC7B,IAAA,OAAOA,UAAA,IAAc,IAAI,CAACL,IAAI,CAACM,KAAK;EACtC,CAAA;AAEA,EAAA;IAAAC,oBAAA,CAAAC,kBAAA,CAAA,mkCAAA,EAyCA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,OAAA;QAAAC,QAAA;AAAAC,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"}
@@ -0,0 +1,2 @@
1
+ export { A as default } from '../alert-DmCWMMRr.js';
2
+ //# sourceMappingURL=alert.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alert.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,2 +1,2 @@
1
- export { F as default } from '../form-CoJgUXR6.js';
1
+ export { F as default } from '../form-CXvWQbiY.js';
2
2
  //# sourceMappingURL=form.js.map
@@ -1,2 +1,2 @@
1
- export { T as default } from '../text-area-CLRp3q_-.js';
1
+ export { T as default } from '../text-area-BsDD1dpV.js';
2
2
  //# sourceMappingURL=text-area.js.map
@@ -23,7 +23,7 @@ import { R as RangeInput } from './range-input-Bosd7QI2.js';
23
23
  import { S as Select } from './select-DWOHAUfQ.js';
24
24
  import { R as Radio } from './radio-BQvSPyDT.js';
25
25
  import { T as TextInput } from './text-input-BntDzi8S.js';
26
- import { T as TextArea } from './text-area-CLRp3q_-.js';
26
+ import { T as TextArea } from './text-area-BsDD1dpV.js';
27
27
  import { d as disabled } from './disabled-B_FQ0Z51.js';
28
28
 
29
29
  const Description = setComponentTemplate(precompileTemplate("\n <p class=\"form-description\" data-test-description ...attributes>\n {{yield}}\n </p>\n", {
@@ -497,4 +497,4 @@ class Form extends Component {
497
497
  }
498
498
 
499
499
  export { Form as F };
500
- //# sourceMappingURL=form-CoJgUXR6.js.map
500
+ //# sourceMappingURL=form-CXvWQbiY.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"form-CoJgUXR6.js","sources":["../src/components/form/description.gts","../src/components/form/errors.gts","../src/components/form/label.gts","../src/components/form/rules.gts","../src/components/form/field.gts","../src/components/form/manage-validation.ts","../src/components/form/fields/checkbox.gts","../src/components/form/fields/currency.gts","../src/components/form/fields/date.gts","../src/components/form/fields/email.gts","../src/components/form/fields/list.gts","../src/components/form/fields/multiple-choice.gts","../src/components/form/fields/number.gts","../src/components/form/fields/password.gts","../src/components/form/fields/phone.gts","../src/components/form/fields/range.gts","../src/components/form/fields/select.gts","../src/components/form/fields/singular-choice.gts","../src/components/form/fields/text.gts","../src/components/form/fields/text-area.gts","../src/components/form/reset.gts","../src/components/form/submit.gts","../src/components/form/form.gts"],"sourcesContent":["import type { TOC } from '@ember/component/template-only';\n\nexport interface DescriptionSignature {\n Element: HTMLParagraphElement;\n Blocks: {\n default: [];\n };\n}\n\nexport const Description: TOC<DescriptionSignature> = <template>\n <p class=\"form-description\" data-test-description ...attributes>\n {{yield}}\n </p>\n</template>;\n","import type { TOC } from '@ember/component/template-only';\n// import Icon from '../../../components/icon';\nimport type { Issue } from '@hokulea/ember-pahu';\n\nexport interface ErrorsSignature {\n Element: HTMLDivElement;\n Args: {\n // the following are private arguments curried by the component helper, so users will never have to use those\n\n /*\n * @internal\n */\n errors: Issue[];\n\n /*\n * @internal\n */\n id: string;\n };\n Blocks: {\n default?: [Issue[]];\n };\n}\n\nexport const Errors: TOC<ErrorsSignature> = <template>\n <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\n data-test-error\n data-test-error-type=\"{{e.type}}\"\n data-test-error-value=\"{{e.value}}\"\n >{{e.message}}</p>\n {{/if}}\n {{/each}}\n </div>\n {{/if}}\n </div>\n</template>;\n","import { element } from 'ember-element-helper';\n\nimport type { TOC } from '@ember/component/template-only';\nimport type { ComponentLike } from '@glint/template';\n\nexport interface LabelSignature {\n Element: HTMLLabelElement;\n Args: {\n element?: ComponentLike<{ Element: HTMLElement }>;\n };\n Blocks: {\n default: [];\n };\n}\n\nexport const Label: TOC<LabelSignature> = <template>\n {{#let (if @element @element (element \"label\")) as |Element|}}\n <Element class=\"form-label\" data-test-label ...attributes>\n {{yield}}\n </Element>\n {{/let}}\n</template>;\n","import Component from '@glimmer/component';\n\nimport { Icon } from '../graphics/icon.gts';\n\nimport type Owner from '@ember/owner';\nimport type { WithBoundArgs } from '@glint/template';\nimport type { Issue } from '@hokulea/ember-pahu';\n\nconst ErrorIcon = `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"256\"\nheight=\"256\" viewBox=\"0 0 256 256\"><path fill=\"currentColor\" d=\"M208.49\n191.51a12 12 0 0 1-17 17L128 145l-63.51 63.49a12 12 0 0 1-17-17L111 128L47.51\n64.49a12 12 0 0 1 17-17L128 111l63.51-63.52a12 12 0 0 1 17 17L145\n128Z\"/></svg>`;\nconst ValidIcon = `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"256\"\nheight=\"256\" viewBox=\"0 0 256 256\"><path fill=\"currentColor\" d=\"m232.49\n80.49l-128 128a12 12 0 0 1-17 0l-56-56a12 12 0 1 1 17-17L96 183L215.51 63.51a12\n12 0 0 1 17 17Z\"/></svg>`;\n\ninterface RuleSignature {\n Args: {\n key: string;\n value: unknown;\n errors?: Issue[];\n };\n Blocks: {\n default: [];\n };\n}\n\nclass Rule extends Component<RuleSignature> {\n isInvalid = () => {\n return this.args.errors?.some(\n (i) => this.args.key in i && i[this.args.key] === this.args.value\n );\n };\n\n <template>\n <p data-test-rule data-test-rule-invalid={{(this.isInvalid)}}>\n <Icon\n @icon={{if (this.isInvalid) ErrorIcon ValidIcon}}\n data-invalid={{(this.isInvalid)}}\n data-icon\n />\n\n <span>{{yield}}</span>\n </p>\n </template>\n}\n\nexport interface RulesBlock {\n rules: [WithBoundArgs<typeof Rule, 'errors'>];\n}\n\nexport interface RulesSignature {\n Element: HTMLDivElement;\n Args: {\n useRules: (useRules: boolean) => void;\n\n /*\n * @internal\n */\n errors: Issue[];\n\n /*\n * @internal\n */\n id: string;\n };\n Blocks: {\n default: [WithBoundArgs<typeof Rule, 'errors'>];\n };\n}\n\nexport class Rules extends Component<RulesSignature> {\n constructor(owner: Owner, args: RulesSignature['Args']) {\n super(owner, args);\n\n args.useRules(true);\n }\n\n <template>\n <div id={{@id}} aria-live=\"assertive\" class=\"form-rules\" ...attributes>\n {{yield (component Rule errors=@errors)}}\n </div>\n </template>\n}\n","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { hash, uniqueId } from '@ember/helper';\nimport { next } from '@ember/runloop';\n\nimport { element } from 'ember-element-helper';\n\nimport { and } from '../../-private/helpers.ts';\nimport { Description } from './description.gts';\nimport { Errors } from './errors.gts';\nimport { Label } from './label.gts';\nimport { Rules } from './rules.gts';\n\nimport type { LabelSignature } from './label.gts';\nimport type { AttrValue, ComponentLike, WithBoundArgs } from '@glint/template';\nimport type {\n FieldAPI,\n FieldConfig,\n FieldNames,\n FieldValue,\n FormAPI,\n Issue,\n UserData\n} from '@hokulea/ember-pahu';\n\nexport type BoundField<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> = WithBoundArgs<typeof Field<DATA, NAME, VALUE>, 'form'>;\n\nexport type FieldArgs<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> = FieldConfig<DATA, NAME, VALUE> & {\n /**\n * The label for your field.\n *\n * Alternatively you can use `<:label>` block for more fine-control (which\n * takes precendence if both are given)\n */\n label: string;\n\n /**\n * The description for your field.\n *\n * Alternatively you can use `<:description>` block for more fine-control (which\n * takes precendence if both are given)\n */\n description?: string;\n};\n\nexport interface FieldBlock<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> {\n /**\n * The field's current value.\n *\n * If you don't use one of the supplied control components, then use this to pass the value to your custom component.\n */\n value?: FieldValue<DATA, NAME, VALUE>;\n\n /**\n * Action to update the (internal) form data for this field.\n *\n * If you don't use one of the supplied control components, then use this to update the value whenever your custom component's value has changed.\n */\n setValue: (value: FieldValue<DATA, NAME, VALUE>) => void;\n\n /**\n * Unique ID of this field, used to associate the control with its label.\n *\n * If you don't use the supplied components, then you can use this as the `id` of the control and the `for` attribute of the `<label>`.\n */\n id: string;\n\n /**\n * Unique error ID of this field, used to associate the control with its validation error message.\n *\n * If you don't use the supplied components, then you can use this as the `id` of the validation error element and the `aria-errormessage` or `aria-describedby` attribute of the control.\n */\n errorId: string;\n\n /**\n * Will be `true` when validation was triggered and this field is invalid.\n *\n * You can use this to customize your markup, e.g. apply HTML classes for error styling.\n */\n invalid: boolean;\n\n registerElement: FieldAPI<DATA, NAME, VALUE>['registerElement'];\n\n showErrors: boolean;\n\n /**\n * An array of raw ValidationError objects, for custom rendering of error output\n */\n issues: Issue[];\n\n /**\n * When calling this action, validation will be triggered.\n *\n * Can be used for custom controls that don't emit the `@validateOn` events that would normally trigger a dynamic validation.\n */\n validate: FieldAPI<DATA, NAME, VALUE>['validate'];\n\n Rules: WithBoundArgs<typeof Rules, 'useRules' | 'errors' | 'id'>;\n}\n\nexport type MultipleFieldBlock<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> = Omit<FieldBlock<DATA, NAME, VALUE>, 'value' | 'setValue'> & {\n /**\n * The current value of the field's form data.\n *\n * If you don't use one of the supplied control components, then use this to pass the value to your custom component.\n */\n value?: FieldValue<DATA, NAME, VALUE>[];\n\n /**\n * Action to update the (internal) form data for this field.\n *\n * If you don't use one of the supplied control components, then use this to update the value whenever your custom component's value has changed.\n */\n setValue: (value: FieldValue<DATA, NAME, VALUE>[]) => void;\n};\n\nexport interface FieldSignature<\n DATA extends UserData,\n NAME extends string,\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> {\n Element: HTMLDivElement;\n Args: Omit<FieldArgs<DATA, NAME, VALUE>, 'element'> & {\n /** @internal */\n form: FormAPI<DATA>;\n\n /** @internal */\n element?: ComponentLike<{ Element: HTMLElement; Blocks: { default: [] } }>;\n\n /** @internal */\n labelComponent?: ComponentLike<LabelSignature>;\n\n showErrors?: boolean;\n };\n Blocks: {\n default: [FieldBlock<DATA, NAME, VALUE>];\n };\n}\n\nexport class Field<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> extends Component<FieldSignature<DATA, NAME, VALUE>> {\n @tracked rulesUsed = false;\n #field?: FieldAPI<DATA, NAME, VALUE>;\n\n get validateOn() {\n return this.rulesUsed ? 'input' : this.args.validateOn;\n }\n\n get revalidateOn() {\n return this.rulesUsed ? 'input' : this.args.revalidateOn;\n }\n\n createOrUpdateField = (config: FieldConfig<DATA, NAME, VALUE>): FieldAPI<DATA, NAME, VALUE> => {\n const filteredConfig = Object.fromEntries(\n Object.entries(config).filter(([_, v]) => v !== undefined)\n ) as FieldConfig<DATA, NAME, VALUE>;\n\n if (this.#field) {\n this.#field.updateConfig(filteredConfig);\n } else {\n this.#field = this.args.form.createField<NAME, VALUE>(filteredConfig);\n }\n\n return this.#field;\n };\n\n useRules = (useRules: boolean) => {\n // eslint-disable-next-line ember/no-runloop\n next(async () => {\n this.rulesUsed = useRules;\n\n if (useRules) {\n await this.#field?.validate();\n }\n });\n };\n\n get showErrors() {\n return !this.rulesUsed && this.args.showErrors !== false;\n }\n\n <template>\n {{#let\n (uniqueId)\n (uniqueId)\n (if @element @element (element \"div\"))\n (this.createOrUpdateField\n name=@name\n ignoreNativeValidation=@ignoreNativeValidation\n linkedField=@linkedField\n validateOn=this.validateOn\n revalidateOn=this.revalidateOn\n validate=@validate\n validated=@validated\n value=@value\n )\n (component Rules useRules=this.useRules)\n as |fieldId errorId Element field WiredRules|\n }}\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\n (hash\n value=field.value\n setValue=field.setValue\n id=fieldId\n errorId=errorId\n invalid=field.invalid\n registerElement=field.registerElement\n issues=field.issues\n validate=field.validate\n showErrors=this.showErrors\n Rules=(component WiredRules id=errorId errors=field.issues)\n )\n }}\n\n {{#if (and this.showErrors field.issues)}}\n <Errors @id={{errorId}} @errors={{field.issues}} />\n {{/if}}\n </Element>\n {{/let}}\n </template>\n}\n","import { modifier } from 'ember-modifier';\n\nexport interface NamedOptions {\n /** @internal */\n invalid: boolean;\n\n /** @internal */\n errorMessageId: string;\n\n /** @internal */\n showErrors?: boolean;\n}\n\ntype ValidationElements =\n | HTMLInputElement\n | HTMLSelectElement\n | HTMLTextAreaElement\n | HTMLDivElement;\n\nexport const manageValidation = modifier(\n (element: ValidationElements, _: [], { showErrors, invalid, errorMessageId }: NamedOptions) => {\n if (showErrors !== false) {\n element.ariaInvalid = invalid ? 'true' : 'false';\n\n if (invalid) {\n element.setAttribute('aria-errormessage', errorMessageId);\n } else {\n element.removeAttribute('aria-errormessage');\n }\n\n if (element.parentElement && 'inputBuilder' in element.parentElement.dataset) {\n element.parentElement.dataset.invalid = invalid ? 'true' : 'false';\n }\n }\n\n return;\n }\n);\n","import Component from '@glimmer/component';\n\nimport { asBoolean } from '../../../-private/helpers.ts';\nimport { Checkbox } from '../../controls/checkbox.gts';\nimport { Description } from '../description.gts';\nimport { Label } from '../label.gts';\nimport { manageValidation } from '../manage-validation.ts';\n\nimport type { CheckboxSignature } from '../../controls/checkbox.gts';\nimport type { BoundField, FieldArgs } from '../field.gts';\nimport type { AttrValue } from '@glint/template';\nimport type { FieldNames, FieldValue, UserData } from '@hokulea/ember-pahu';\n\nexport interface CheckboxFieldSignature<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> {\n Element: CheckboxSignature['Element'];\n Args: FieldArgs<DATA, NAME, VALUE> &\n Omit<CheckboxSignature['Args'], 'value' | 'update'> & {\n Field: BoundField<DATA, NAME, VALUE>;\n };\n}\n\nexport class CheckboxField<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> extends Component<CheckboxFieldSignature<DATA, NAME, VALUE>> {\n Field = this.args.Field;\n\n setBooleanValue = (setValue: (value: FieldValue<DATA, NAME, VALUE>) => void) => {\n return (value: boolean) => setValue(value as FieldValue<DATA, NAME, VALUE>);\n };\n\n <template>\n <this.Field\n @label=\"\"\n @name={{@name}}\n @value={{@value}}\n @ignoreNativeValidation={{@ignoreNativeValidation}}\n @validateOn={{@validateOn}}\n @revalidateOn={{@revalidateOn}}\n @validate={{@validate}}\n @validated={{@validated}}\n as |f|\n >\n <div class=\"form-choices\">\n <div class=\"form-choice\">\n <span>\n <Checkbox\n @value={{asBoolean f.value}}\n @update={{this.setBooleanValue f.setValue}}\n @disabled={{@disabled}}\n id={{f.id}}\n name={{@name}}\n {{f.registerElement}}\n {{manageValidation\n errorMessageId=f.errorId\n invalid=f.invalid\n showErrors=f.showErrors\n }}\n ...attributes\n />\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>\n </template>\n}\n","import Component from '@glimmer/component';\n\nimport { asNumber } from '../../../-private/helpers.ts';\nimport { CurrencyInput } from '../../controls/currency-input.gts';\nimport { manageValidation } from '../manage-validation.ts';\n\nimport type { CurrencyInputSignature } from '../../controls/currency-input.gts';\nimport type { BoundField, FieldArgs } from '../field.gts';\nimport type { AttrValue } from '@glint/template';\nimport type { FieldNames, FieldValue, UserData } from '@hokulea/ember-pahu';\n\nexport interface CurrencyFieldSignature<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> {\n Element: CurrencyInputSignature['Element'];\n Args: FieldArgs<DATA, NAME, VALUE> &\n Omit<CurrencyInputSignature['Args'], 'value' | 'update'> & {\n Field: BoundField<DATA, NAME, VALUE>;\n };\n}\n\nexport class CurrencyField<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> extends Component<CurrencyFieldSignature<DATA, NAME, VALUE>> {\n Field = this.args.Field;\n\n setNumberValue = (setValue: (value: FieldValue<DATA, NAME, VALUE>) => void) => {\n return (value: number) => setValue(value as FieldValue<DATA, NAME, VALUE>);\n };\n\n <template>\n <this.Field\n @name={{@name}}\n @label={{@label}}\n @description={{@description}}\n @value={{@value}}\n @ignoreNativeValidation={{@ignoreNativeValidation}}\n @validateOn={{@validateOn}}\n @revalidateOn={{@revalidateOn}}\n @validate={{@validate}}\n @validated={{@validated}}\n as |f|\n >\n <CurrencyInput\n @value={{asNumber f.value}}\n @update={{this.setNumberValue f.setValue}}\n @disabled={{@disabled}}\n name={{@name}}\n id={{f.id}}\n {{f.registerElement}}\n {{manageValidation errorMessageId=f.errorId invalid=f.invalid showErrors=f.showErrors}}\n ...attributes\n />\n </this.Field>\n </template>\n}\n","import Component from '@glimmer/component';\n\nimport { asString } from '../../../-private/helpers.ts';\nimport { DateInput } from '../../controls/date-input.gts';\nimport { manageValidation } from '../manage-validation.ts';\n\nimport type { DateInputSignature } from '../../controls/date-input.gts';\nimport type { BoundField, FieldArgs } from '../field.gts';\nimport type { AttrValue } from '@glint/template';\nimport type { FieldNames, FieldValue, UserData } from '@hokulea/ember-pahu';\n\nexport interface DateFieldSignature<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> {\n Element: DateInputSignature['Element'];\n Args: FieldArgs<DATA, NAME, VALUE> &\n Omit<DateInputSignature['Args'], 'value' | 'update'> & {\n Field: BoundField<DATA, NAME, VALUE>;\n };\n}\n\nexport class DateField<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> extends Component<DateFieldSignature<DATA, NAME, VALUE>> {\n Field = this.args.Field;\n\n setStringValue = (setValue: (value: FieldValue<DATA, NAME, VALUE>) => void) => {\n return (value: string) => setValue(value as FieldValue<DATA, NAME, VALUE>);\n };\n\n <template>\n <this.Field\n @name={{@name}}\n @label={{@label}}\n @description={{@description}}\n @value={{@value}}\n @ignoreNativeValidation={{@ignoreNativeValidation}}\n @validateOn={{@validateOn}}\n @revalidateOn={{@revalidateOn}}\n @validate={{@validate}}\n @validated={{@validated}}\n as |f|\n >\n <DateInput\n @value={{asString f.value}}\n @update={{this.setStringValue f.setValue}}\n @disabled={{@disabled}}\n name={{@name}}\n id={{f.id}}\n {{f.registerElement}}\n {{manageValidation errorMessageId=f.errorId invalid=f.invalid showErrors=f.showErrors}}\n ...attributes\n />\n </this.Field>\n </template>\n}\n","import Component from '@glimmer/component';\n\nimport { asString } from '../../../-private/helpers.ts';\nimport { EmailInput } from '../../controls/email-input.gts';\nimport { manageValidation } from '../manage-validation.ts';\n\nimport type { EmailInputSignature } from '../../controls/email-input.gts';\nimport type { BoundField, FieldArgs } from '../field.gts';\nimport type { AttrValue } from '@glint/template';\nimport type { FieldNames, FieldValue, UserData } from '@hokulea/ember-pahu';\n\nexport interface EmailFieldSignature<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> {\n Element: EmailInputSignature['Element'];\n Args: FieldArgs<DATA, NAME, VALUE> &\n Omit<EmailInputSignature['Args'], 'value' | 'update'> & {\n Field: BoundField<DATA, NAME, VALUE>;\n };\n}\n\nexport class EmailField<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> extends Component<EmailFieldSignature<DATA, NAME, VALUE>> {\n Field = this.args.Field;\n\n setStringValue = (setValue: (value: FieldValue<DATA, NAME, VALUE>) => void) => {\n return (value: string) => setValue(value as FieldValue<DATA, NAME, VALUE>);\n };\n\n <template>\n <this.Field\n @name={{@name}}\n @label={{@label}}\n @description={{@description}}\n @value={{@value}}\n @ignoreNativeValidation={{@ignoreNativeValidation}}\n @validateOn={{@validateOn}}\n @revalidateOn={{@revalidateOn}}\n @validate={{@validate}}\n @validated={{@validated}}\n as |f|\n >\n <EmailInput\n @value={{asString f.value}}\n @update={{this.setStringValue f.setValue}}\n @disabled={{@disabled}}\n name={{@name}}\n id={{f.id}}\n {{f.registerElement}}\n {{manageValidation errorMessageId=f.errorId invalid=f.invalid showErrors=f.showErrors}}\n ...attributes\n />\n </this.Field>\n </template>\n}\n","import Component from '@glimmer/component';\nimport { uniqueId } from '@ember/helper';\n\nimport { element } from 'ember-element-helper';\n\nimport { List } from '../../controls/list.gts';\nimport { Label } from '../label.gts';\nimport { manageValidation } from '../manage-validation.ts';\n\nimport type { ListSignature } from '../../controls/list.gts';\nimport type { BoundField, FieldArgs } from '../field.gts';\nimport type { TOC } from '@ember/component/template-only';\nimport type { AttrValue } from '@glint/template';\nimport type { FieldNames, FieldValue, UserData } from '@hokulea/ember-pahu';\n\ninterface ListLabelSignature {\n Element: HTMLLabelElement;\n Args: {\n id: string;\n };\n Blocks: {\n default: [];\n };\n}\n\nconst ListLabel: TOC<ListLabelSignature> = <template>\n <Label @element={{element \"span\"}} id={{@id}}>{{yield}}</Label>\n</template>;\n\nexport interface ListFieldSignature<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> {\n Element: ListSignature<FieldValue<DATA, NAME, VALUE>>['Element'];\n Args: FieldArgs<DATA, NAME, VALUE> &\n Omit<ListSignature<FieldValue<DATA, NAME, VALUE>>['Args'], 'selection' | 'update'> & {\n Field: BoundField<DATA, NAME, VALUE>;\n };\n Blocks: ListSignature<FieldValue<DATA, NAME, VALUE>>['Blocks'];\n}\n\nexport class ListField<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> extends Component<ListFieldSignature<DATA, NAME, VALUE>> {\n Field = this.args.Field;\n List = List<FieldValue<DATA, NAME, VALUE>>;\n\n setValue = (setValue: (value: FieldValue<DATA, NAME, VALUE>) => void) => {\n return (value: FieldValue<DATA, NAME, VALUE> | FieldValue<DATA, NAME, VALUE>[]) =>\n setValue(value as FieldValue<DATA, NAME, VALUE>);\n };\n\n asValue = (value: unknown) => value as FieldValue<DATA, NAME, VALUE>;\n\n <template>\n {{#let (uniqueId) as |labelId|}}\n <this.Field\n @name={{@name}}\n @label={{@label}}\n @labelComponent={{component ListLabel id=labelId}}\n @description={{@description}}\n @value={{@value}}\n @ignoreNativeValidation={{@ignoreNativeValidation}}\n @validateOn={{@validateOn}}\n @revalidateOn={{@revalidateOn}}\n @validate={{@validate}}\n @validated={{@validated}}\n as |f|\n >\n <this.List\n @value={{this.asValue f.value}}\n @update={{this.setValue f.setValue}}\n @disabled={{@disabled}}\n {{!-- name={{@name}} --}}\n aria-labelledby={{labelId}}\n {{f.registerElement}}\n {{manageValidation errorMessageId=f.errorId invalid=f.invalid}}\n ...attributes\n as |s|\n >\n {{yield s}}\n </this.List>\n </this.Field>\n {{/let}}\n </template>\n}\n","import Component from '@glimmer/component';\nimport { hash, uniqueId } from '@ember/helper';\n\nimport { element } from 'ember-element-helper';\n\nimport { Checkbox } from '../../controls/checkbox.gts';\nimport { Description } from '../description.gts';\nimport { Errors } from '../errors.gts';\nimport { Label } from '../label.gts';\nimport { manageValidation } from '../manage-validation.ts';\n\nimport type { RadioSignature } from '../../controls/radio.gts';\nimport type { BoundField, FieldArgs, FieldBlock, MultipleFieldBlock } from '../field';\nimport type { AttrValue, WithBoundArgs } from '@glint/template';\nimport type { FieldNames, FieldValue, UserData } from '@hokulea/ember-pahu';\n\nexport interface OptionSignature<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> {\n Element: RadioSignature['Element'];\n Args: {\n value: string;\n label: string;\n description?: string;\n\n /** @internal */\n name: string;\n\n /** @internal */\n disabled?: boolean;\n\n /** @internal */\n field: MultipleFieldBlock<DATA, NAME, VALUE>;\n };\n Blocks: {\n default: [];\n };\n}\n\nclass Option<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> extends Component<OptionSignature<DATA, NAME, VALUE>> {\n select = (checked: boolean) => {\n if (checked) {\n this.args.field.setValue([...(this.args.field.value ?? []), this.args.value] as FieldValue<\n DATA,\n NAME,\n VALUE\n >[]);\n } else {\n const values = this.args.field.value;\n const index = this.args.field.value?.indexOf(\n this.args.value as FieldValue<DATA, NAME, VALUE>\n );\n\n if (Array.isArray(values) && index) {\n values.splice(index, 1);\n\n this.args.field.setValue(values);\n }\n }\n };\n\n get checked() {\n return this.args.field.value?.includes(this.args.value as FieldValue<DATA, NAME, VALUE>);\n }\n\n get issues() {\n return this.args.field.issues.filter((i) => 'value' in i && i.value === this.args.value);\n }\n\n get invalid() {\n return this.issues.length > 0;\n }\n\n <template>\n {{#let (uniqueId) (uniqueId) as |id errorId|}}\n <div class=\"form-choice\" data-test-option>\n <span>\n <Checkbox\n @value={{this.checked}}\n @update={{this.select}}\n @disabled={{@disabled}}\n id={{id}}\n name={{@name}}\n value={{@value}}\n {{@field.registerElement}}\n {{manageValidation errorMessageId=errorId invalid=this.invalid}}\n ...attributes\n />\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}}\n </template>\n}\n\nexport interface MultipleChoiceFieldSignature<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> {\n Args: FieldArgs<DATA, NAME, VALUE> & {\n disabled?: boolean;\n Field: BoundField<DATA, NAME, VALUE>;\n };\n Blocks: {\n default: [\n {\n Option: WithBoundArgs<typeof Option<DATA, NAME, VALUE>, 'field' | 'name'>;\n }\n ];\n };\n}\n\nexport class MultipleChoiceField<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> extends Component<MultipleChoiceFieldSignature<DATA, NAME, VALUE>> {\n Field = this.args.Field;\n Option = Option<DATA, NAME, VALUE>;\n\n asMultiField = (field: FieldBlock<DATA, NAME, VALUE>) => {\n return field as MultipleFieldBlock<DATA, NAME, VALUE>;\n };\n\n <template>\n <this.Field\n @element={{element \"fieldset\"}}\n @showErrors={{false}}\n @labelComponent={{component Label element=(element \"legend\")}}\n @name={{@name}}\n @label={{@label}}\n @description={{@description}}\n @value={{@value}}\n @ignoreNativeValidation={{@ignoreNativeValidation}}\n @validateOn={{@validateOn}}\n @revalidateOn={{@revalidateOn}}\n @validate={{@validate}}\n @validated={{@validated}}\n as |f|\n >\n <div class=\"form-choices\" data-test-choices>\n {{yield\n (hash\n Option=(component this.Option field=(this.asMultiField f) name=@name disabled=@disabled)\n )\n }}\n </div>\n </this.Field>\n </template>\n}\n","import Component from '@glimmer/component';\n\nimport { asNumber } from '../../../-private/helpers.ts';\nimport { NumberInput } from '../../controls/number-input.gts';\nimport { manageValidation } from '../manage-validation.ts';\n\nimport type { NumberInputSignature } from '../../controls/number-input.gts';\nimport type { BoundField, FieldArgs } from '../field.gts';\nimport type { AttrValue } from '@glint/template';\nimport type { FieldNames, FieldValue, UserData } from '@hokulea/ember-pahu';\n\nexport interface NumberFieldSignature<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> {\n Element: NumberInputSignature['Element'];\n Args: FieldArgs<DATA, NAME, VALUE> &\n Omit<NumberInputSignature['Args'], 'value' | 'update'> & {\n Field: BoundField<DATA, NAME, VALUE>;\n };\n}\n\nexport class NumberField<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> extends Component<NumberFieldSignature<DATA, NAME, VALUE>> {\n Field = this.args.Field;\n\n setNumberValue = (setValue: (value: FieldValue<DATA, NAME, VALUE>) => void) => {\n return (value: number) => setValue(value as FieldValue<DATA, NAME, VALUE>);\n };\n\n <template>\n <this.Field\n @name={{@name}}\n @label={{@label}}\n @description={{@description}}\n @value={{@value}}\n @ignoreNativeValidation={{@ignoreNativeValidation}}\n @validateOn={{@validateOn}}\n @revalidateOn={{@revalidateOn}}\n @validate={{@validate}}\n @validated={{@validated}}\n as |f|\n >\n <NumberInput\n @value={{asNumber f.value}}\n @update={{this.setNumberValue f.setValue}}\n @disabled={{@disabled}}\n name={{@name}}\n id={{f.id}}\n {{f.registerElement}}\n {{manageValidation errorMessageId=f.errorId invalid=f.invalid showErrors=f.showErrors}}\n ...attributes\n />\n </this.Field>\n </template>\n}\n","import Component from '@glimmer/component';\n\nimport { asString } from '../../../-private/helpers.ts';\nimport { PasswordInput } from '../../controls/password-input.gts';\nimport { manageValidation } from '../manage-validation.ts';\n\nimport type { PasswordInputSignature } from '../../controls/password-input.gts';\nimport type { BoundField, FieldArgs } from '../field.gts';\nimport type { RulesBlock } from '../rules.gts';\nimport type { AttrValue } from '@glint/template';\nimport type { FieldNames, FieldValue, UserData } from '@hokulea/ember-pahu';\n\nexport interface PasswordFieldSignature<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> {\n Element: PasswordInputSignature['Element'];\n Args: FieldArgs<DATA, NAME, VALUE> &\n Omit<PasswordInputSignature['Args'], 'value' | 'update'> & {\n Field: BoundField<DATA, NAME, VALUE>;\n };\n Blocks: RulesBlock;\n}\n\nexport class PasswordField<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> extends Component<PasswordFieldSignature<DATA, NAME, VALUE>> {\n Field = this.args.Field;\n\n setStringValue = (setValue: (value: FieldValue<DATA, NAME, VALUE>) => void) => {\n return (value: string) => setValue(value as FieldValue<DATA, NAME, VALUE>);\n };\n\n <template>\n <this.Field\n @name={{@name}}\n @label={{@label}}\n @description={{@description}}\n @value={{@value}}\n @ignoreNativeValidation={{@ignoreNativeValidation}}\n @validateOn={{@validateOn}}\n @revalidateOn={{@revalidateOn}}\n @validate={{@validate}}\n @validated={{@validated}}\n as |f|\n >\n <PasswordInput\n @value={{asString f.value}}\n @update={{this.setStringValue f.setValue}}\n @disabled={{@disabled}}\n name={{@name}}\n id={{f.id}}\n {{f.registerElement}}\n {{manageValidation errorMessageId=f.errorId invalid=f.invalid showErrors=f.showErrors}}\n ...attributes\n />\n\n {{#if (has-block \"rules\")}}\n <f.Rules as |Rule|>\n {{yield Rule to=\"rules\"}}\n </f.Rules>\n {{/if}}\n </this.Field>\n </template>\n}\n","import Component from '@glimmer/component';\n\nimport { asString } from '../../../-private/helpers.ts';\nimport { PhoneInput } from '../../controls/phone-input.gts';\nimport { manageValidation } from '../manage-validation.ts';\n\nimport type { PhoneInputSignature } from '../../controls/phone-input.gts';\nimport type { BoundField, FieldArgs } from '../field.gts';\nimport type { RulesBlock } from '../rules.gts';\nimport type { AttrValue } from '@glint/template';\nimport type { FieldNames, FieldValue, UserData } from '@hokulea/ember-pahu';\n\nexport interface PhoneFieldSignature<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> {\n Element: PhoneInputSignature['Element'];\n Args: FieldArgs<DATA, NAME, VALUE> &\n Omit<PhoneInputSignature['Args'], 'value' | 'update'> & {\n Field: BoundField<DATA, NAME, VALUE>;\n };\n Blocks: RulesBlock;\n}\n\nexport class PhoneField<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> extends Component<PhoneFieldSignature<DATA, NAME, VALUE>> {\n Field = this.args.Field;\n\n setStringValue = (setValue: (value: FieldValue<DATA, NAME, VALUE>) => void) => {\n return (value: string) => setValue(value as FieldValue<DATA, NAME, VALUE>);\n };\n\n <template>\n <this.Field\n @name={{@name}}\n @label={{@label}}\n @description={{@description}}\n @value={{@value}}\n @ignoreNativeValidation={{@ignoreNativeValidation}}\n @validateOn={{@validateOn}}\n @revalidateOn={{@revalidateOn}}\n @validate={{@validate}}\n @validated={{@validated}}\n as |f|\n >\n <PhoneInput\n @value={{asString f.value}}\n @update={{this.setStringValue f.setValue}}\n @disabled={{@disabled}}\n name={{@name}}\n id={{f.id}}\n {{f.registerElement}}\n {{manageValidation errorMessageId=f.errorId invalid=f.invalid showErrors=f.showErrors}}\n ...attributes\n />\n\n {{#if (has-block \"rules\")}}\n <f.Rules as |Rule|>\n {{yield Rule to=\"rules\"}}\n </f.Rules>\n {{/if}}\n </this.Field>\n </template>\n}\n","import Component from '@glimmer/component';\n\nimport { asNumber } from '../../../-private/helpers.ts';\nimport { RangeInput } from '../../controls/range-input.gts';\nimport { manageValidation } from '../manage-validation.ts';\n\nimport type { RangeInputSignature } from '../../controls/range-input.gts';\nimport type { BoundField, FieldArgs } from '../field.gts';\nimport type { AttrValue } from '@glint/template';\nimport type { FieldNames, FieldValue, UserData } from '@hokulea/ember-pahu';\n\nexport interface RangeFieldSignature<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> {\n Element: RangeInputSignature['Element'];\n Args: FieldArgs<DATA, NAME, VALUE> &\n Omit<RangeInputSignature['Args'], 'value' | 'update'> & {\n Field: BoundField<DATA, NAME, VALUE>;\n };\n}\n\nexport class RangeField<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> extends Component<RangeFieldSignature<DATA, NAME, VALUE>> {\n Field = this.args.Field;\n\n setNumberValue = (setValue: (value: FieldValue<DATA, NAME, VALUE>) => void) => {\n return (value: number) => setValue(value as FieldValue<DATA, NAME, VALUE>);\n };\n\n <template>\n <this.Field\n @name={{@name}}\n @label={{@label}}\n @description={{@description}}\n @value={{@value}}\n @ignoreNativeValidation={{@ignoreNativeValidation}}\n @validateOn={{@validateOn}}\n @revalidateOn={{@revalidateOn}}\n @validate={{@validate}}\n @validated={{@validated}}\n as |f|\n >\n <RangeInput\n @value={{asNumber f.value}}\n @update={{this.setNumberValue f.setValue}}\n @disabled={{@disabled}}\n @orientation={{@orientation}}\n @min={{@min}}\n @max={{@max}}\n @step={{@step}}\n name={{@name}}\n id={{f.id}}\n {{f.registerElement}}\n {{manageValidation errorMessageId=f.errorId invalid=f.invalid showErrors=f.showErrors}}\n ...attributes\n />\n </this.Field>\n </template>\n}\n","import Component from '@glimmer/component';\n\nimport { asString } from '../../../-private/helpers.ts';\nimport { Select } from '../../controls/select.gts';\nimport { manageValidation } from '../manage-validation.ts';\n\nimport type { SelectSignature, Value } from '../../controls/select.gts';\nimport type { BoundField, FieldArgs } from '../field.gts';\nimport type { AttrValue } from '@glint/template';\nimport type { FieldNames, FieldValue, UserData } from '@hokulea/ember-pahu';\n\nexport interface SelectFieldSignature<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> {\n Element: SelectSignature['Element'];\n Args: FieldArgs<DATA, NAME, VALUE> &\n Omit<SelectSignature['Args'], 'selection' | 'update'> & {\n Field: BoundField<DATA, NAME, VALUE>;\n };\n Blocks: SelectSignature['Blocks'];\n}\n\nexport class SelectField<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> extends Component<SelectFieldSignature<DATA, NAME, VALUE>> {\n Field = this.args.Field;\n\n setValue = (setValue: (value: FieldValue<DATA, NAME, VALUE>) => void) => {\n return (value: Value | Value[]) => setValue(value as FieldValue<DATA, NAME, VALUE>);\n };\n\n <template>\n <this.Field\n @name={{@name}}\n @label={{@label}}\n @description={{@description}}\n @value={{@value}}\n @ignoreNativeValidation={{@ignoreNativeValidation}}\n @validateOn={{@validateOn}}\n @revalidateOn={{@revalidateOn}}\n @validate={{@validate}}\n @validated={{@validated}}\n as |f|\n >\n <Select\n @value={{asString f.value}}\n @update={{this.setValue f.setValue}}\n @disabled={{@disabled}}\n name={{@name}}\n id={{f.id}}\n {{f.registerElement}}\n {{manageValidation errorMessageId=f.errorId invalid=f.invalid showErrors=f.showErrors}}\n ...attributes\n as |s|\n >\n {{yield s}}\n </Select>\n </this.Field>\n </template>\n}\n","import Component from '@glimmer/component';\nimport { hash, uniqueId } from '@ember/helper';\n\nimport { element } from 'ember-element-helper';\n\nimport { eq } from '../../../-private/helpers.ts';\nimport { Radio } from '../../controls/radio.gts';\nimport { Description } from '../description.gts';\nimport { Label } from '../label.gts';\n\nimport type { RadioSignature } from '../../controls/radio.gts';\nimport type { BoundField, FieldArgs, FieldBlock } from '../field';\nimport type { AttrValue, WithBoundArgs } from '@glint/template';\nimport type { FieldNames, FieldValue, UserData } from '@hokulea/ember-pahu';\n\nexport interface OptionSignature<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> {\n Element: RadioSignature['Element'];\n Args: {\n value: string;\n label: string;\n description?: string;\n\n /** @internal */\n name: string;\n\n /** @internal */\n disabled?: boolean;\n\n /** @internal */\n field: FieldBlock<DATA, NAME, VALUE>;\n };\n Blocks: {\n default: [];\n };\n}\n\nclass Option<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> extends Component<OptionSignature<DATA, NAME, VALUE>> {\n select = () => {\n this.args.field.setValue(this.args.value as FieldValue<DATA, NAME, VALUE>);\n };\n\n <template>\n {{#let (uniqueId) as |id|}}\n <div class=\"form-choice\" data-test-option>\n <span>\n <Radio\n @value={{eq @field.value @value}}\n @update={{this.select}}\n @disabled={{@disabled}}\n id={{id}}\n name={{@name}}\n value={{@value}}\n {{@field.registerElement}}\n ...attributes\n />\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}}\n </template>\n}\n\nexport interface SingularChoiceFieldSignature<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> {\n Args: FieldArgs<DATA, NAME, VALUE> & {\n disabled?: boolean;\n Field: BoundField<DATA, NAME, VALUE>;\n };\n Blocks: {\n default: [\n {\n Option: WithBoundArgs<typeof Option<DATA, NAME, VALUE>, 'field' | 'name'>;\n }\n ];\n };\n}\n\nexport class SingularChoiceField<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> extends Component<SingularChoiceFieldSignature<DATA, NAME, VALUE>> {\n Field = this.args.Field;\n Option = Option<DATA, NAME, VALUE>;\n\n <template>\n <this.Field\n @element={{element \"fieldset\"}}\n @labelComponent={{component Label element=(element \"legend\")}}\n @name={{@name}}\n @label={{@label}}\n @description={{@description}}\n @value={{@value}}\n @ignoreNativeValidation={{@ignoreNativeValidation}}\n @validateOn={{@validateOn}}\n @revalidateOn={{@revalidateOn}}\n @validate={{@validate}}\n @validated={{@validated}}\n as |f|\n >\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>\n </template>\n}\n","import Component from '@glimmer/component';\n\nimport { asString } from '../../../-private/helpers.ts';\nimport { TextInput } from '../../controls/text-input.gts';\nimport { manageValidation } from '../manage-validation.ts';\n\nimport type { TextInputSignature } from '../../controls/text-input.gts';\nimport type { BoundField, FieldArgs } from '../field.gts';\nimport type { RulesBlock } from '../rules.gts';\nimport type { AttrValue } from '@glint/template';\nimport type { FieldNames, FieldValue, UserData } from '@hokulea/ember-pahu';\n\nexport interface TextFieldSignature<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> {\n Element: TextInputSignature['Element'];\n Args: FieldArgs<DATA, NAME, VALUE> &\n Omit<TextInputSignature['Args'], 'value' | 'update'> & {\n Field: BoundField<DATA, NAME, VALUE>;\n };\n Blocks: RulesBlock;\n}\n\nexport class TextField<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> extends Component<TextFieldSignature<DATA, NAME, VALUE>> {\n Field = this.args.Field;\n\n setStringValue = (setValue: (value: FieldValue<DATA, NAME, VALUE>) => void) => {\n return (value: string) => setValue(value as FieldValue<DATA, NAME, VALUE>);\n };\n\n <template>\n <@Field\n @name={{@name}}\n @label={{@label}}\n @description={{@description}}\n @value={{@value}}\n @ignoreNativeValidation={{@ignoreNativeValidation}}\n @validateOn={{@validateOn}}\n @revalidateOn={{@revalidateOn}}\n @validate={{@validate}}\n @validated={{@validated}}\n as |f|\n >\n <TextInput\n @value={{asString f.value}}\n @update={{this.setStringValue f.setValue}}\n @disabled={{@disabled}}\n name={{@name}}\n id={{f.id}}\n {{f.registerElement}}\n {{manageValidation errorMessageId=f.errorId invalid=f.invalid showErrors=f.showErrors}}\n ...attributes\n />\n\n {{#if (has-block \"rules\")}}\n <f.Rules as |Rule|>\n {{yield Rule to=\"rules\"}}\n </f.Rules>\n {{/if}}\n </@Field>\n </template>\n}\n","import Component from '@glimmer/component';\n\nimport { asString } from '../../../-private/helpers.ts';\nimport { TextArea } from '../../controls/text-area.gts';\nimport { manageValidation } from '../manage-validation.ts';\n\nimport type { TextAreaSignature } from '../../controls/text-area.gts';\nimport type { BoundField, FieldArgs } from '../field.gts';\nimport type { AttrValue } from '@glint/template';\nimport type { FieldNames, FieldValue, UserData } from '@hokulea/ember-pahu';\n\nexport interface TextAreaFieldSignature<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> {\n Element: TextAreaSignature['Element'];\n Args: FieldArgs<DATA, NAME, VALUE> &\n Omit<TextAreaSignature['Args'], 'value' | 'update'> & {\n Field: BoundField<DATA, NAME, VALUE>;\n };\n}\n\nexport class TextAreaField<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> extends Component<TextAreaFieldSignature<DATA, NAME, VALUE>> {\n Field = this.args.Field;\n\n setStringValue = (setValue: (value: FieldValue<DATA, NAME, VALUE>) => void) => {\n return (value: string) => setValue(value as FieldValue<DATA, NAME, VALUE>);\n };\n\n <template>\n <this.Field\n @name={{@name}}\n @label={{@label}}\n @description={{@description}}\n @value={{@value}}\n @ignoreNativeValidation={{@ignoreNativeValidation}}\n @validateOn={{@validateOn}}\n @revalidateOn={{@revalidateOn}}\n @validate={{@validate}}\n @validated={{@validated}}\n as |f|\n >\n <TextArea\n @value={{asString f.value}}\n @update={{this.setStringValue f.setValue}}\n @disabled={{@disabled}}\n name={{@name}}\n id={{f.id}}\n {{f.registerElement}}\n {{manageValidation errorMessageId=f.errorId invalid=f.invalid showErrors=f.showErrors}}\n ...attributes\n />\n </this.Field>\n </template>\n}\n","import disabled from '../../-private/modifiers/disabled.ts';\n\nimport type { TOC } from '@ember/component/template-only';\nimport type { Importance, Intent, Spacing } from '@hokulea/tokens';\n\nexport interface ResetSignature {\n Element: HTMLButtonElement;\n Args: {\n intent?: Intent;\n importance?: Importance;\n spacing?: Spacing;\n disabled?: boolean;\n };\n Blocks: {\n /** The label for the button */\n default: [];\n\n /** The label for the button */\n label: [];\n\n /** A slot in front of the label */\n before: [];\n\n /** A slot after the label */\n after: [];\n };\n}\n\nexport const Reset: TOC<ResetSignature> = <template>\n <button\n type=\"reset\"\n class=\"button\"\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","import disabled from '../../-private/modifiers/disabled.ts';\n\nimport type { TOC } from '@ember/component/template-only';\nimport type { Importance, Intent, Spacing } from '@hokulea/tokens';\n\nexport interface SubmitSignature {\n Element: HTMLButtonElement;\n Args: {\n intent?: Intent;\n importance?: Importance;\n spacing?: Spacing;\n disabled?: boolean;\n };\n Blocks: {\n /** The label for the button */\n default: [];\n\n /** The label for the button */\n label: [];\n\n /** A slot in front of the label */\n before: [];\n\n /** A slot after the label */\n after: [];\n };\n}\n\nexport const Submit: TOC<SubmitSignature> = <template>\n <button\n type=\"submit\"\n class=\"button\"\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","import Component from '@glimmer/component';\nimport { hash } from '@ember/helper';\n\nimport { createForm } from '@hokulea/ember-pahu';\n\nimport { Field } from './field.gts';\nimport { CheckboxField } from './fields/checkbox.gts';\nimport { CurrencyField } from './fields/currency.gts';\nimport { DateField } from './fields/date.gts';\nimport { EmailField } from './fields/email.gts';\nimport { ListField } from './fields/list.gts';\nimport { MultipleChoiceField } from './fields/multiple-choice.gts';\nimport { NumberField } from './fields/number.gts';\nimport { PasswordField } from './fields/password.gts';\nimport { PhoneField } from './fields/phone.gts';\nimport { RangeField } from './fields/range.gts';\nimport { SelectField } from './fields/select.gts';\nimport { SingularChoiceField } from './fields/singular-choice.gts';\nimport { TextField } from './fields/text.gts';\nimport { TextAreaField } from './fields/text-area.gts';\nimport { Reset } from './reset.gts';\nimport { Submit } from './submit.gts';\n\nimport type { BoundField } from './field.gts';\nimport type { WithBoundArgs } from '@glint/template';\nimport type { FormAPI, FormConfig, UserData } from '@hokulea/ember-pahu';\n\nexport interface FormBuilder<DATA extends UserData> {\n Checkbox: WithBoundArgs<typeof CheckboxField<DATA>, 'Field'>;\n Currency: WithBoundArgs<typeof CurrencyField<DATA>, 'Field'>;\n Date: WithBoundArgs<typeof DateField<DATA>, 'Field'>;\n Email: WithBoundArgs<typeof EmailField<DATA>, 'Field'>;\n List: WithBoundArgs<typeof ListField<DATA>, 'Field'>;\n MultipleChoice: WithBoundArgs<typeof MultipleChoiceField<DATA>, 'Field'>;\n Number: WithBoundArgs<typeof NumberField<DATA>, 'Field'>;\n Range: WithBoundArgs<typeof RangeField<DATA>, 'Field'>;\n Password: WithBoundArgs<typeof PasswordField<DATA>, 'Field'>;\n Phone: WithBoundArgs<typeof PhoneField<DATA>, 'Field'>;\n Select: WithBoundArgs<typeof SelectField<DATA>, 'Field'>;\n SingularChoice: WithBoundArgs<typeof SingularChoiceField<DATA>, 'Field'>;\n Text: WithBoundArgs<typeof TextField<DATA>, 'Field'>;\n TextArea: WithBoundArgs<typeof TextAreaField<DATA>, 'Field'>;\n Field: BoundField<DATA>;\n Submit: typeof Submit;\n Reset: typeof Reset;\n\n /**\n * Will be true if at least one form field is invalid.\n */\n invalid: boolean;\n\n /**\n * Yielded action that will trigger form validation and submission, same as when triggering the native `submit` event on the form.\n */\n submit: FormAPI<DATA>['submit'];\n\n /**\n * Yielded action that will reset form state, same as when triggering the native `reset` event on the form.\n */\n reset: FormAPI<DATA>['reset'];\n\n /**\n * Trigger validation on the form\n */\n validate: FormAPI<DATA>['validate'];\n\n /* @TODO: Remove, for debug only */\n form: ReturnType<typeof createForm<DATA>>;\n}\n\nexport interface FormSignature<DATA extends UserData> {\n Element: HTMLFormElement;\n Args: FormConfig<DATA>;\n Blocks: {\n default: [FormBuilder<DATA>];\n };\n}\n\nexport class Form<DATA extends UserData> extends Component<FormSignature<DATA>> {\n Field = Field<DATA>;\n CheckboxField = CheckboxField<DATA>;\n CurrencyField = CurrencyField<DATA>;\n DateField = DateField<DATA>;\n EmailField = EmailField<DATA>;\n ListField = ListField<DATA>;\n MultipleChoiceField = MultipleChoiceField<DATA>;\n NumberField = NumberField<DATA>;\n PasswordField = PasswordField<DATA>;\n PhoneField = PhoneField<DATA>;\n RangeField = RangeField<DATA>;\n SelectField = SelectField<DATA>;\n SingularChoiceField = SingularChoiceField<DATA>;\n TextAreaField = TextAreaField<DATA>;\n TextField = TextField<DATA>;\n\n <template>\n {{#let\n (createForm\n data=@data\n ignoreNativeValidation=@ignoreNativeValidation\n validateOn=@validateOn\n revalidateOn=@revalidateOn\n submit=@submit\n validate=@validate\n validated=@validated\n )\n as |f|\n }}\n <form novalidate class=\"form\" data-test-form ...attributes {{f.registerElement}}>\n {{#let (component this.Field form=f) as |WiredField|}}\n {{yield\n (hash\n invalid=f.invalid\n submit=f.submit\n Field=WiredField\n Checkbox=(component this.CheckboxField Field=WiredField)\n Currency=(component this.CurrencyField Field=WiredField)\n Date=(component this.DateField Field=WiredField)\n Email=(component this.EmailField Field=WiredField)\n List=(component this.ListField Field=WiredField)\n MultipleChoice=(component this.MultipleChoiceField Field=WiredField)\n Number=(component this.NumberField Field=WiredField)\n Password=(component this.PasswordField Field=WiredField)\n Phone=(component this.PhoneField Field=WiredField)\n Range=(component this.RangeField Field=WiredField)\n Select=(component this.SelectField Field=WiredField)\n SingularChoice=(component this.SingularChoiceField Field=WiredField)\n TextArea=(component this.TextAreaField Field=WiredField)\n Text=(component this.TextField Field=WiredField)\n Submit=Submit\n Reset=Reset\n form=f\n )\n }}\n {{/let}}\n </form>\n {{/let}}\n </template>\n}\n"],"names":["Description","setComponentTemplate","precompileTemplate","strictMode","templateOnly","Errors","Label","scope","element","ErrorIcon","ValidIcon","Rule","Component","isInvalid","args","errors","some","i","key","value","Icon","Rules","constructor","owner","useRules","Field","g","prototype","tracked","void 0","validateOn","rulesUsed","revalidateOn","createOrUpdateField","config","filteredConfig","Object","fromEntries","entries","filter","_","v","undefined","updateConfig","form","createField","next","validate","showErrors","uniqueId","hash","and","manageValidation","modifier","invalid","errorMessageId","ariaInvalid","setAttribute","removeAttribute","parentElement","dataset","CheckboxField","setBooleanValue","setValue","Checkbox","asBoolean","CurrencyField","setNumberValue","CurrencyInput","asNumber","DateField","setStringValue","DateInput","asString","EmailField","EmailInput","ListLabel","ListField","List","asValue","Option","select","checked","field","values","index","indexOf","Array","isArray","splice","includes","issues","length","MultipleChoiceField","asMultiField","NumberField","NumberInput","PasswordField","PasswordInput","PhoneField","PhoneInput","RangeField","RangeInput","SelectField","Select","Radio","eq","SingularChoiceField","TextField","TextInput","TextAreaField","TextArea","Reset","disabled","Submit","Form","createForm"],"mappings":"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"}
1
+ {"version":3,"file":"form-CXvWQbiY.js","sources":["../src/components/form/description.gts","../src/components/form/errors.gts","../src/components/form/label.gts","../src/components/form/rules.gts","../src/components/form/field.gts","../src/components/form/manage-validation.ts","../src/components/form/fields/checkbox.gts","../src/components/form/fields/currency.gts","../src/components/form/fields/date.gts","../src/components/form/fields/email.gts","../src/components/form/fields/list.gts","../src/components/form/fields/multiple-choice.gts","../src/components/form/fields/number.gts","../src/components/form/fields/password.gts","../src/components/form/fields/phone.gts","../src/components/form/fields/range.gts","../src/components/form/fields/select.gts","../src/components/form/fields/singular-choice.gts","../src/components/form/fields/text.gts","../src/components/form/fields/text-area.gts","../src/components/form/reset.gts","../src/components/form/submit.gts","../src/components/form/form.gts"],"sourcesContent":["import type { TOC } from '@ember/component/template-only';\n\nexport interface DescriptionSignature {\n Element: HTMLParagraphElement;\n Blocks: {\n default: [];\n };\n}\n\nexport const Description: TOC<DescriptionSignature> = <template>\n <p class=\"form-description\" data-test-description ...attributes>\n {{yield}}\n </p>\n</template>;\n","import type { TOC } from '@ember/component/template-only';\n// import Icon from '../../../components/icon';\nimport type { Issue } from '@hokulea/ember-pahu';\n\nexport interface ErrorsSignature {\n Element: HTMLDivElement;\n Args: {\n // the following are private arguments curried by the component helper, so users will never have to use those\n\n /*\n * @internal\n */\n errors: Issue[];\n\n /*\n * @internal\n */\n id: string;\n };\n Blocks: {\n default?: [Issue[]];\n };\n}\n\nexport const Errors: TOC<ErrorsSignature> = <template>\n <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\n data-test-error\n data-test-error-type=\"{{e.type}}\"\n data-test-error-value=\"{{e.value}}\"\n >{{e.message}}</p>\n {{/if}}\n {{/each}}\n </div>\n {{/if}}\n </div>\n</template>;\n","import { element } from 'ember-element-helper';\n\nimport type { TOC } from '@ember/component/template-only';\nimport type { ComponentLike } from '@glint/template';\n\nexport interface LabelSignature {\n Element: HTMLLabelElement;\n Args: {\n element?: ComponentLike<{ Element: HTMLElement }>;\n };\n Blocks: {\n default: [];\n };\n}\n\nexport const Label: TOC<LabelSignature> = <template>\n {{#let (if @element @element (element \"label\")) as |Element|}}\n <Element class=\"form-label\" data-test-label ...attributes>\n {{yield}}\n </Element>\n {{/let}}\n</template>;\n","import Component from '@glimmer/component';\n\nimport { Icon } from '../graphics/icon.gts';\n\nimport type Owner from '@ember/owner';\nimport type { WithBoundArgs } from '@glint/template';\nimport type { Issue } from '@hokulea/ember-pahu';\n\nconst ErrorIcon = `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"256\"\nheight=\"256\" viewBox=\"0 0 256 256\"><path fill=\"currentColor\" d=\"M208.49\n191.51a12 12 0 0 1-17 17L128 145l-63.51 63.49a12 12 0 0 1-17-17L111 128L47.51\n64.49a12 12 0 0 1 17-17L128 111l63.51-63.52a12 12 0 0 1 17 17L145\n128Z\"/></svg>`;\nconst ValidIcon = `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"256\"\nheight=\"256\" viewBox=\"0 0 256 256\"><path fill=\"currentColor\" d=\"m232.49\n80.49l-128 128a12 12 0 0 1-17 0l-56-56a12 12 0 1 1 17-17L96 183L215.51 63.51a12\n12 0 0 1 17 17Z\"/></svg>`;\n\ninterface RuleSignature {\n Args: {\n key: string;\n value: unknown;\n errors?: Issue[];\n };\n Blocks: {\n default: [];\n };\n}\n\nclass Rule extends Component<RuleSignature> {\n isInvalid = () => {\n return this.args.errors?.some(\n (i) => this.args.key in i && i[this.args.key] === this.args.value\n );\n };\n\n <template>\n <p data-test-rule data-test-rule-invalid={{(this.isInvalid)}}>\n <Icon\n @icon={{if (this.isInvalid) ErrorIcon ValidIcon}}\n data-invalid={{(this.isInvalid)}}\n data-icon\n />\n\n <span>{{yield}}</span>\n </p>\n </template>\n}\n\nexport interface RulesBlock {\n rules: [WithBoundArgs<typeof Rule, 'errors'>];\n}\n\nexport interface RulesSignature {\n Element: HTMLDivElement;\n Args: {\n useRules: (useRules: boolean) => void;\n\n /*\n * @internal\n */\n errors: Issue[];\n\n /*\n * @internal\n */\n id: string;\n };\n Blocks: {\n default: [WithBoundArgs<typeof Rule, 'errors'>];\n };\n}\n\nexport class Rules extends Component<RulesSignature> {\n constructor(owner: Owner, args: RulesSignature['Args']) {\n super(owner, args);\n\n args.useRules(true);\n }\n\n <template>\n <div id={{@id}} aria-live=\"assertive\" class=\"form-rules\" ...attributes>\n {{yield (component Rule errors=@errors)}}\n </div>\n </template>\n}\n","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { hash, uniqueId } from '@ember/helper';\nimport { next } from '@ember/runloop';\n\nimport { element } from 'ember-element-helper';\n\nimport { and } from '../../-private/helpers.ts';\nimport { Description } from './description.gts';\nimport { Errors } from './errors.gts';\nimport { Label } from './label.gts';\nimport { Rules } from './rules.gts';\n\nimport type { LabelSignature } from './label.gts';\nimport type { AttrValue, ComponentLike, WithBoundArgs } from '@glint/template';\nimport type {\n FieldAPI,\n FieldConfig,\n FieldNames,\n FieldValue,\n FormAPI,\n Issue,\n UserData\n} from '@hokulea/ember-pahu';\n\nexport type BoundField<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> = WithBoundArgs<typeof Field<DATA, NAME, VALUE>, 'form'>;\n\nexport type FieldArgs<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> = FieldConfig<DATA, NAME, VALUE> & {\n /**\n * The label for your field.\n *\n * Alternatively you can use `<:label>` block for more fine-control (which\n * takes precendence if both are given)\n */\n label: string;\n\n /**\n * The description for your field.\n *\n * Alternatively you can use `<:description>` block for more fine-control (which\n * takes precendence if both are given)\n */\n description?: string;\n};\n\nexport interface FieldBlock<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> {\n /**\n * The field's current value.\n *\n * If you don't use one of the supplied control components, then use this to pass the value to your custom component.\n */\n value?: FieldValue<DATA, NAME, VALUE>;\n\n /**\n * Action to update the (internal) form data for this field.\n *\n * If you don't use one of the supplied control components, then use this to update the value whenever your custom component's value has changed.\n */\n setValue: (value: FieldValue<DATA, NAME, VALUE>) => void;\n\n /**\n * Unique ID of this field, used to associate the control with its label.\n *\n * If you don't use the supplied components, then you can use this as the `id` of the control and the `for` attribute of the `<label>`.\n */\n id: string;\n\n /**\n * Unique error ID of this field, used to associate the control with its validation error message.\n *\n * If you don't use the supplied components, then you can use this as the `id` of the validation error element and the `aria-errormessage` or `aria-describedby` attribute of the control.\n */\n errorId: string;\n\n /**\n * Will be `true` when validation was triggered and this field is invalid.\n *\n * You can use this to customize your markup, e.g. apply HTML classes for error styling.\n */\n invalid: boolean;\n\n registerElement: FieldAPI<DATA, NAME, VALUE>['registerElement'];\n\n showErrors: boolean;\n\n /**\n * An array of raw ValidationError objects, for custom rendering of error output\n */\n issues: Issue[];\n\n /**\n * When calling this action, validation will be triggered.\n *\n * Can be used for custom controls that don't emit the `@validateOn` events that would normally trigger a dynamic validation.\n */\n validate: FieldAPI<DATA, NAME, VALUE>['validate'];\n\n Rules: WithBoundArgs<typeof Rules, 'useRules' | 'errors' | 'id'>;\n}\n\nexport type MultipleFieldBlock<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> = Omit<FieldBlock<DATA, NAME, VALUE>, 'value' | 'setValue'> & {\n /**\n * The current value of the field's form data.\n *\n * If you don't use one of the supplied control components, then use this to pass the value to your custom component.\n */\n value?: FieldValue<DATA, NAME, VALUE>[];\n\n /**\n * Action to update the (internal) form data for this field.\n *\n * If you don't use one of the supplied control components, then use this to update the value whenever your custom component's value has changed.\n */\n setValue: (value: FieldValue<DATA, NAME, VALUE>[]) => void;\n};\n\nexport interface FieldSignature<\n DATA extends UserData,\n NAME extends string,\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> {\n Element: HTMLDivElement;\n Args: Omit<FieldArgs<DATA, NAME, VALUE>, 'element'> & {\n /** @internal */\n form: FormAPI<DATA>;\n\n /** @internal */\n element?: ComponentLike<{ Element: HTMLElement; Blocks: { default: [] } }>;\n\n /** @internal */\n labelComponent?: ComponentLike<LabelSignature>;\n\n showErrors?: boolean;\n };\n Blocks: {\n default: [FieldBlock<DATA, NAME, VALUE>];\n };\n}\n\nexport class Field<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> extends Component<FieldSignature<DATA, NAME, VALUE>> {\n @tracked rulesUsed = false;\n #field?: FieldAPI<DATA, NAME, VALUE>;\n\n get validateOn() {\n return this.rulesUsed ? 'input' : this.args.validateOn;\n }\n\n get revalidateOn() {\n return this.rulesUsed ? 'input' : this.args.revalidateOn;\n }\n\n createOrUpdateField = (config: FieldConfig<DATA, NAME, VALUE>): FieldAPI<DATA, NAME, VALUE> => {\n const filteredConfig = Object.fromEntries(\n Object.entries(config).filter(([_, v]) => v !== undefined)\n ) as FieldConfig<DATA, NAME, VALUE>;\n\n if (this.#field) {\n this.#field.updateConfig(filteredConfig);\n } else {\n this.#field = this.args.form.createField<NAME, VALUE>(filteredConfig);\n }\n\n return this.#field;\n };\n\n useRules = (useRules: boolean) => {\n // eslint-disable-next-line ember/no-runloop\n next(async () => {\n this.rulesUsed = useRules;\n\n if (useRules) {\n await this.#field?.validate();\n }\n });\n };\n\n get showErrors() {\n return !this.rulesUsed && this.args.showErrors !== false;\n }\n\n <template>\n {{#let\n (uniqueId)\n (uniqueId)\n (if @element @element (element \"div\"))\n (this.createOrUpdateField\n name=@name\n ignoreNativeValidation=@ignoreNativeValidation\n linkedField=@linkedField\n validateOn=this.validateOn\n revalidateOn=this.revalidateOn\n validate=@validate\n validated=@validated\n value=@value\n )\n (component Rules useRules=this.useRules)\n as |fieldId errorId Element field WiredRules|\n }}\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\n (hash\n value=field.value\n setValue=field.setValue\n id=fieldId\n errorId=errorId\n invalid=field.invalid\n registerElement=field.registerElement\n issues=field.issues\n validate=field.validate\n showErrors=this.showErrors\n Rules=(component WiredRules id=errorId errors=field.issues)\n )\n }}\n\n {{#if (and this.showErrors field.issues)}}\n <Errors @id={{errorId}} @errors={{field.issues}} />\n {{/if}}\n </Element>\n {{/let}}\n </template>\n}\n","import { modifier } from 'ember-modifier';\n\nexport interface NamedOptions {\n /** @internal */\n invalid: boolean;\n\n /** @internal */\n errorMessageId: string;\n\n /** @internal */\n showErrors?: boolean;\n}\n\ntype ValidationElements =\n | HTMLInputElement\n | HTMLSelectElement\n | HTMLTextAreaElement\n | HTMLDivElement;\n\nexport const manageValidation = modifier(\n (element: ValidationElements, _: [], { showErrors, invalid, errorMessageId }: NamedOptions) => {\n if (showErrors !== false) {\n element.ariaInvalid = invalid ? 'true' : 'false';\n\n if (invalid) {\n element.setAttribute('aria-errormessage', errorMessageId);\n } else {\n element.removeAttribute('aria-errormessage');\n }\n\n if (element.parentElement && 'inputBuilder' in element.parentElement.dataset) {\n element.parentElement.dataset.invalid = invalid ? 'true' : 'false';\n }\n }\n\n return;\n }\n);\n","import Component from '@glimmer/component';\n\nimport { asBoolean } from '../../../-private/helpers.ts';\nimport { Checkbox } from '../../controls/checkbox.gts';\nimport { Description } from '../description.gts';\nimport { Label } from '../label.gts';\nimport { manageValidation } from '../manage-validation.ts';\n\nimport type { CheckboxSignature } from '../../controls/checkbox.gts';\nimport type { BoundField, FieldArgs } from '../field.gts';\nimport type { AttrValue } from '@glint/template';\nimport type { FieldNames, FieldValue, UserData } from '@hokulea/ember-pahu';\n\nexport interface CheckboxFieldSignature<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> {\n Element: CheckboxSignature['Element'];\n Args: FieldArgs<DATA, NAME, VALUE> &\n Omit<CheckboxSignature['Args'], 'value' | 'update'> & {\n Field: BoundField<DATA, NAME, VALUE>;\n };\n}\n\nexport class CheckboxField<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> extends Component<CheckboxFieldSignature<DATA, NAME, VALUE>> {\n Field = this.args.Field;\n\n setBooleanValue = (setValue: (value: FieldValue<DATA, NAME, VALUE>) => void) => {\n return (value: boolean) => setValue(value as FieldValue<DATA, NAME, VALUE>);\n };\n\n <template>\n <this.Field\n @label=\"\"\n @name={{@name}}\n @value={{@value}}\n @ignoreNativeValidation={{@ignoreNativeValidation}}\n @validateOn={{@validateOn}}\n @revalidateOn={{@revalidateOn}}\n @validate={{@validate}}\n @validated={{@validated}}\n as |f|\n >\n <div class=\"form-choices\">\n <div class=\"form-choice\">\n <span>\n <Checkbox\n @value={{asBoolean f.value}}\n @update={{this.setBooleanValue f.setValue}}\n @disabled={{@disabled}}\n id={{f.id}}\n name={{@name}}\n {{f.registerElement}}\n {{manageValidation\n errorMessageId=f.errorId\n invalid=f.invalid\n showErrors=f.showErrors\n }}\n ...attributes\n />\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>\n </template>\n}\n","import Component from '@glimmer/component';\n\nimport { asNumber } from '../../../-private/helpers.ts';\nimport { CurrencyInput } from '../../controls/currency-input.gts';\nimport { manageValidation } from '../manage-validation.ts';\n\nimport type { CurrencyInputSignature } from '../../controls/currency-input.gts';\nimport type { BoundField, FieldArgs } from '../field.gts';\nimport type { AttrValue } from '@glint/template';\nimport type { FieldNames, FieldValue, UserData } from '@hokulea/ember-pahu';\n\nexport interface CurrencyFieldSignature<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> {\n Element: CurrencyInputSignature['Element'];\n Args: FieldArgs<DATA, NAME, VALUE> &\n Omit<CurrencyInputSignature['Args'], 'value' | 'update'> & {\n Field: BoundField<DATA, NAME, VALUE>;\n };\n}\n\nexport class CurrencyField<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> extends Component<CurrencyFieldSignature<DATA, NAME, VALUE>> {\n Field = this.args.Field;\n\n setNumberValue = (setValue: (value: FieldValue<DATA, NAME, VALUE>) => void) => {\n return (value: number) => setValue(value as FieldValue<DATA, NAME, VALUE>);\n };\n\n <template>\n <this.Field\n @name={{@name}}\n @label={{@label}}\n @description={{@description}}\n @value={{@value}}\n @ignoreNativeValidation={{@ignoreNativeValidation}}\n @validateOn={{@validateOn}}\n @revalidateOn={{@revalidateOn}}\n @validate={{@validate}}\n @validated={{@validated}}\n as |f|\n >\n <CurrencyInput\n @value={{asNumber f.value}}\n @update={{this.setNumberValue f.setValue}}\n @disabled={{@disabled}}\n name={{@name}}\n id={{f.id}}\n {{f.registerElement}}\n {{manageValidation errorMessageId=f.errorId invalid=f.invalid showErrors=f.showErrors}}\n ...attributes\n />\n </this.Field>\n </template>\n}\n","import Component from '@glimmer/component';\n\nimport { asString } from '../../../-private/helpers.ts';\nimport { DateInput } from '../../controls/date-input.gts';\nimport { manageValidation } from '../manage-validation.ts';\n\nimport type { DateInputSignature } from '../../controls/date-input.gts';\nimport type { BoundField, FieldArgs } from '../field.gts';\nimport type { AttrValue } from '@glint/template';\nimport type { FieldNames, FieldValue, UserData } from '@hokulea/ember-pahu';\n\nexport interface DateFieldSignature<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> {\n Element: DateInputSignature['Element'];\n Args: FieldArgs<DATA, NAME, VALUE> &\n Omit<DateInputSignature['Args'], 'value' | 'update'> & {\n Field: BoundField<DATA, NAME, VALUE>;\n };\n}\n\nexport class DateField<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> extends Component<DateFieldSignature<DATA, NAME, VALUE>> {\n Field = this.args.Field;\n\n setStringValue = (setValue: (value: FieldValue<DATA, NAME, VALUE>) => void) => {\n return (value: string) => setValue(value as FieldValue<DATA, NAME, VALUE>);\n };\n\n <template>\n <this.Field\n @name={{@name}}\n @label={{@label}}\n @description={{@description}}\n @value={{@value}}\n @ignoreNativeValidation={{@ignoreNativeValidation}}\n @validateOn={{@validateOn}}\n @revalidateOn={{@revalidateOn}}\n @validate={{@validate}}\n @validated={{@validated}}\n as |f|\n >\n <DateInput\n @value={{asString f.value}}\n @update={{this.setStringValue f.setValue}}\n @disabled={{@disabled}}\n name={{@name}}\n id={{f.id}}\n {{f.registerElement}}\n {{manageValidation errorMessageId=f.errorId invalid=f.invalid showErrors=f.showErrors}}\n ...attributes\n />\n </this.Field>\n </template>\n}\n","import Component from '@glimmer/component';\n\nimport { asString } from '../../../-private/helpers.ts';\nimport { EmailInput } from '../../controls/email-input.gts';\nimport { manageValidation } from '../manage-validation.ts';\n\nimport type { EmailInputSignature } from '../../controls/email-input.gts';\nimport type { BoundField, FieldArgs } from '../field.gts';\nimport type { AttrValue } from '@glint/template';\nimport type { FieldNames, FieldValue, UserData } from '@hokulea/ember-pahu';\n\nexport interface EmailFieldSignature<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> {\n Element: EmailInputSignature['Element'];\n Args: FieldArgs<DATA, NAME, VALUE> &\n Omit<EmailInputSignature['Args'], 'value' | 'update'> & {\n Field: BoundField<DATA, NAME, VALUE>;\n };\n}\n\nexport class EmailField<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> extends Component<EmailFieldSignature<DATA, NAME, VALUE>> {\n Field = this.args.Field;\n\n setStringValue = (setValue: (value: FieldValue<DATA, NAME, VALUE>) => void) => {\n return (value: string) => setValue(value as FieldValue<DATA, NAME, VALUE>);\n };\n\n <template>\n <this.Field\n @name={{@name}}\n @label={{@label}}\n @description={{@description}}\n @value={{@value}}\n @ignoreNativeValidation={{@ignoreNativeValidation}}\n @validateOn={{@validateOn}}\n @revalidateOn={{@revalidateOn}}\n @validate={{@validate}}\n @validated={{@validated}}\n as |f|\n >\n <EmailInput\n @value={{asString f.value}}\n @update={{this.setStringValue f.setValue}}\n @disabled={{@disabled}}\n name={{@name}}\n id={{f.id}}\n {{f.registerElement}}\n {{manageValidation errorMessageId=f.errorId invalid=f.invalid showErrors=f.showErrors}}\n ...attributes\n />\n </this.Field>\n </template>\n}\n","import Component from '@glimmer/component';\nimport { uniqueId } from '@ember/helper';\n\nimport { element } from 'ember-element-helper';\n\nimport { List } from '../../controls/list.gts';\nimport { Label } from '../label.gts';\nimport { manageValidation } from '../manage-validation.ts';\n\nimport type { ListSignature } from '../../controls/list.gts';\nimport type { BoundField, FieldArgs } from '../field.gts';\nimport type { TOC } from '@ember/component/template-only';\nimport type { AttrValue } from '@glint/template';\nimport type { FieldNames, FieldValue, UserData } from '@hokulea/ember-pahu';\n\ninterface ListLabelSignature {\n Element: HTMLLabelElement;\n Args: {\n id: string;\n };\n Blocks: {\n default: [];\n };\n}\n\nconst ListLabel: TOC<ListLabelSignature> = <template>\n <Label @element={{element \"span\"}} id={{@id}}>{{yield}}</Label>\n</template>;\n\nexport interface ListFieldSignature<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> {\n Element: ListSignature<FieldValue<DATA, NAME, VALUE>>['Element'];\n Args: FieldArgs<DATA, NAME, VALUE> &\n Omit<ListSignature<FieldValue<DATA, NAME, VALUE>>['Args'], 'selection' | 'update'> & {\n Field: BoundField<DATA, NAME, VALUE>;\n };\n Blocks: ListSignature<FieldValue<DATA, NAME, VALUE>>['Blocks'];\n}\n\nexport class ListField<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> extends Component<ListFieldSignature<DATA, NAME, VALUE>> {\n Field = this.args.Field;\n List = List<FieldValue<DATA, NAME, VALUE>>;\n\n setValue = (setValue: (value: FieldValue<DATA, NAME, VALUE>) => void) => {\n return (value: FieldValue<DATA, NAME, VALUE> | FieldValue<DATA, NAME, VALUE>[]) =>\n setValue(value as FieldValue<DATA, NAME, VALUE>);\n };\n\n asValue = (value: unknown) => value as FieldValue<DATA, NAME, VALUE>;\n\n <template>\n {{#let (uniqueId) as |labelId|}}\n <this.Field\n @name={{@name}}\n @label={{@label}}\n @labelComponent={{component ListLabel id=labelId}}\n @description={{@description}}\n @value={{@value}}\n @ignoreNativeValidation={{@ignoreNativeValidation}}\n @validateOn={{@validateOn}}\n @revalidateOn={{@revalidateOn}}\n @validate={{@validate}}\n @validated={{@validated}}\n as |f|\n >\n <this.List\n @value={{this.asValue f.value}}\n @update={{this.setValue f.setValue}}\n @disabled={{@disabled}}\n {{!-- name={{@name}} --}}\n aria-labelledby={{labelId}}\n {{f.registerElement}}\n {{manageValidation errorMessageId=f.errorId invalid=f.invalid}}\n ...attributes\n as |s|\n >\n {{yield s}}\n </this.List>\n </this.Field>\n {{/let}}\n </template>\n}\n","import Component from '@glimmer/component';\nimport { hash, uniqueId } from '@ember/helper';\n\nimport { element } from 'ember-element-helper';\n\nimport { Checkbox } from '../../controls/checkbox.gts';\nimport { Description } from '../description.gts';\nimport { Errors } from '../errors.gts';\nimport { Label } from '../label.gts';\nimport { manageValidation } from '../manage-validation.ts';\n\nimport type { RadioSignature } from '../../controls/radio.gts';\nimport type { BoundField, FieldArgs, FieldBlock, MultipleFieldBlock } from '../field';\nimport type { AttrValue, WithBoundArgs } from '@glint/template';\nimport type { FieldNames, FieldValue, UserData } from '@hokulea/ember-pahu';\n\nexport interface OptionSignature<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> {\n Element: RadioSignature['Element'];\n Args: {\n value: string;\n label: string;\n description?: string;\n\n /** @internal */\n name: string;\n\n /** @internal */\n disabled?: boolean;\n\n /** @internal */\n field: MultipleFieldBlock<DATA, NAME, VALUE>;\n };\n Blocks: {\n default: [];\n };\n}\n\nclass Option<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> extends Component<OptionSignature<DATA, NAME, VALUE>> {\n select = (checked: boolean) => {\n if (checked) {\n this.args.field.setValue([...(this.args.field.value ?? []), this.args.value] as FieldValue<\n DATA,\n NAME,\n VALUE\n >[]);\n } else {\n const values = this.args.field.value;\n const index = this.args.field.value?.indexOf(\n this.args.value as FieldValue<DATA, NAME, VALUE>\n );\n\n if (Array.isArray(values) && index) {\n values.splice(index, 1);\n\n this.args.field.setValue(values);\n }\n }\n };\n\n get checked() {\n return this.args.field.value?.includes(this.args.value as FieldValue<DATA, NAME, VALUE>);\n }\n\n get issues() {\n return this.args.field.issues.filter((i) => 'value' in i && i.value === this.args.value);\n }\n\n get invalid() {\n return this.issues.length > 0;\n }\n\n <template>\n {{#let (uniqueId) (uniqueId) as |id errorId|}}\n <div class=\"form-choice\" data-test-option>\n <span>\n <Checkbox\n @value={{this.checked}}\n @update={{this.select}}\n @disabled={{@disabled}}\n id={{id}}\n name={{@name}}\n value={{@value}}\n {{@field.registerElement}}\n {{manageValidation errorMessageId=errorId invalid=this.invalid}}\n ...attributes\n />\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}}\n </template>\n}\n\nexport interface MultipleChoiceFieldSignature<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> {\n Args: FieldArgs<DATA, NAME, VALUE> & {\n disabled?: boolean;\n Field: BoundField<DATA, NAME, VALUE>;\n };\n Blocks: {\n default: [\n {\n Option: WithBoundArgs<typeof Option<DATA, NAME, VALUE>, 'field' | 'name'>;\n }\n ];\n };\n}\n\nexport class MultipleChoiceField<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> extends Component<MultipleChoiceFieldSignature<DATA, NAME, VALUE>> {\n Field = this.args.Field;\n Option = Option<DATA, NAME, VALUE>;\n\n asMultiField = (field: FieldBlock<DATA, NAME, VALUE>) => {\n return field as MultipleFieldBlock<DATA, NAME, VALUE>;\n };\n\n <template>\n <this.Field\n @element={{element \"fieldset\"}}\n @showErrors={{false}}\n @labelComponent={{component Label element=(element \"legend\")}}\n @name={{@name}}\n @label={{@label}}\n @description={{@description}}\n @value={{@value}}\n @ignoreNativeValidation={{@ignoreNativeValidation}}\n @validateOn={{@validateOn}}\n @revalidateOn={{@revalidateOn}}\n @validate={{@validate}}\n @validated={{@validated}}\n as |f|\n >\n <div class=\"form-choices\" data-test-choices>\n {{yield\n (hash\n Option=(component this.Option field=(this.asMultiField f) name=@name disabled=@disabled)\n )\n }}\n </div>\n </this.Field>\n </template>\n}\n","import Component from '@glimmer/component';\n\nimport { asNumber } from '../../../-private/helpers.ts';\nimport { NumberInput } from '../../controls/number-input.gts';\nimport { manageValidation } from '../manage-validation.ts';\n\nimport type { NumberInputSignature } from '../../controls/number-input.gts';\nimport type { BoundField, FieldArgs } from '../field.gts';\nimport type { AttrValue } from '@glint/template';\nimport type { FieldNames, FieldValue, UserData } from '@hokulea/ember-pahu';\n\nexport interface NumberFieldSignature<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> {\n Element: NumberInputSignature['Element'];\n Args: FieldArgs<DATA, NAME, VALUE> &\n Omit<NumberInputSignature['Args'], 'value' | 'update'> & {\n Field: BoundField<DATA, NAME, VALUE>;\n };\n}\n\nexport class NumberField<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> extends Component<NumberFieldSignature<DATA, NAME, VALUE>> {\n Field = this.args.Field;\n\n setNumberValue = (setValue: (value: FieldValue<DATA, NAME, VALUE>) => void) => {\n return (value: number) => setValue(value as FieldValue<DATA, NAME, VALUE>);\n };\n\n <template>\n <this.Field\n @name={{@name}}\n @label={{@label}}\n @description={{@description}}\n @value={{@value}}\n @ignoreNativeValidation={{@ignoreNativeValidation}}\n @validateOn={{@validateOn}}\n @revalidateOn={{@revalidateOn}}\n @validate={{@validate}}\n @validated={{@validated}}\n as |f|\n >\n <NumberInput\n @value={{asNumber f.value}}\n @update={{this.setNumberValue f.setValue}}\n @disabled={{@disabled}}\n name={{@name}}\n id={{f.id}}\n {{f.registerElement}}\n {{manageValidation errorMessageId=f.errorId invalid=f.invalid showErrors=f.showErrors}}\n ...attributes\n />\n </this.Field>\n </template>\n}\n","import Component from '@glimmer/component';\n\nimport { asString } from '../../../-private/helpers.ts';\nimport { PasswordInput } from '../../controls/password-input.gts';\nimport { manageValidation } from '../manage-validation.ts';\n\nimport type { PasswordInputSignature } from '../../controls/password-input.gts';\nimport type { BoundField, FieldArgs } from '../field.gts';\nimport type { RulesBlock } from '../rules.gts';\nimport type { AttrValue } from '@glint/template';\nimport type { FieldNames, FieldValue, UserData } from '@hokulea/ember-pahu';\n\nexport interface PasswordFieldSignature<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> {\n Element: PasswordInputSignature['Element'];\n Args: FieldArgs<DATA, NAME, VALUE> &\n Omit<PasswordInputSignature['Args'], 'value' | 'update'> & {\n Field: BoundField<DATA, NAME, VALUE>;\n };\n Blocks: RulesBlock;\n}\n\nexport class PasswordField<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> extends Component<PasswordFieldSignature<DATA, NAME, VALUE>> {\n Field = this.args.Field;\n\n setStringValue = (setValue: (value: FieldValue<DATA, NAME, VALUE>) => void) => {\n return (value: string) => setValue(value as FieldValue<DATA, NAME, VALUE>);\n };\n\n <template>\n <this.Field\n @name={{@name}}\n @label={{@label}}\n @description={{@description}}\n @value={{@value}}\n @ignoreNativeValidation={{@ignoreNativeValidation}}\n @validateOn={{@validateOn}}\n @revalidateOn={{@revalidateOn}}\n @validate={{@validate}}\n @validated={{@validated}}\n as |f|\n >\n <PasswordInput\n @value={{asString f.value}}\n @update={{this.setStringValue f.setValue}}\n @disabled={{@disabled}}\n name={{@name}}\n id={{f.id}}\n {{f.registerElement}}\n {{manageValidation errorMessageId=f.errorId invalid=f.invalid showErrors=f.showErrors}}\n ...attributes\n />\n\n {{#if (has-block \"rules\")}}\n <f.Rules as |Rule|>\n {{yield Rule to=\"rules\"}}\n </f.Rules>\n {{/if}}\n </this.Field>\n </template>\n}\n","import Component from '@glimmer/component';\n\nimport { asString } from '../../../-private/helpers.ts';\nimport { PhoneInput } from '../../controls/phone-input.gts';\nimport { manageValidation } from '../manage-validation.ts';\n\nimport type { PhoneInputSignature } from '../../controls/phone-input.gts';\nimport type { BoundField, FieldArgs } from '../field.gts';\nimport type { RulesBlock } from '../rules.gts';\nimport type { AttrValue } from '@glint/template';\nimport type { FieldNames, FieldValue, UserData } from '@hokulea/ember-pahu';\n\nexport interface PhoneFieldSignature<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> {\n Element: PhoneInputSignature['Element'];\n Args: FieldArgs<DATA, NAME, VALUE> &\n Omit<PhoneInputSignature['Args'], 'value' | 'update'> & {\n Field: BoundField<DATA, NAME, VALUE>;\n };\n Blocks: RulesBlock;\n}\n\nexport class PhoneField<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> extends Component<PhoneFieldSignature<DATA, NAME, VALUE>> {\n Field = this.args.Field;\n\n setStringValue = (setValue: (value: FieldValue<DATA, NAME, VALUE>) => void) => {\n return (value: string) => setValue(value as FieldValue<DATA, NAME, VALUE>);\n };\n\n <template>\n <this.Field\n @name={{@name}}\n @label={{@label}}\n @description={{@description}}\n @value={{@value}}\n @ignoreNativeValidation={{@ignoreNativeValidation}}\n @validateOn={{@validateOn}}\n @revalidateOn={{@revalidateOn}}\n @validate={{@validate}}\n @validated={{@validated}}\n as |f|\n >\n <PhoneInput\n @value={{asString f.value}}\n @update={{this.setStringValue f.setValue}}\n @disabled={{@disabled}}\n name={{@name}}\n id={{f.id}}\n {{f.registerElement}}\n {{manageValidation errorMessageId=f.errorId invalid=f.invalid showErrors=f.showErrors}}\n ...attributes\n />\n\n {{#if (has-block \"rules\")}}\n <f.Rules as |Rule|>\n {{yield Rule to=\"rules\"}}\n </f.Rules>\n {{/if}}\n </this.Field>\n </template>\n}\n","import Component from '@glimmer/component';\n\nimport { asNumber } from '../../../-private/helpers.ts';\nimport { RangeInput } from '../../controls/range-input.gts';\nimport { manageValidation } from '../manage-validation.ts';\n\nimport type { RangeInputSignature } from '../../controls/range-input.gts';\nimport type { BoundField, FieldArgs } from '../field.gts';\nimport type { AttrValue } from '@glint/template';\nimport type { FieldNames, FieldValue, UserData } from '@hokulea/ember-pahu';\n\nexport interface RangeFieldSignature<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> {\n Element: RangeInputSignature['Element'];\n Args: FieldArgs<DATA, NAME, VALUE> &\n Omit<RangeInputSignature['Args'], 'value' | 'update'> & {\n Field: BoundField<DATA, NAME, VALUE>;\n };\n}\n\nexport class RangeField<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> extends Component<RangeFieldSignature<DATA, NAME, VALUE>> {\n Field = this.args.Field;\n\n setNumberValue = (setValue: (value: FieldValue<DATA, NAME, VALUE>) => void) => {\n return (value: number) => setValue(value as FieldValue<DATA, NAME, VALUE>);\n };\n\n <template>\n <this.Field\n @name={{@name}}\n @label={{@label}}\n @description={{@description}}\n @value={{@value}}\n @ignoreNativeValidation={{@ignoreNativeValidation}}\n @validateOn={{@validateOn}}\n @revalidateOn={{@revalidateOn}}\n @validate={{@validate}}\n @validated={{@validated}}\n as |f|\n >\n <RangeInput\n @value={{asNumber f.value}}\n @update={{this.setNumberValue f.setValue}}\n @disabled={{@disabled}}\n @orientation={{@orientation}}\n @min={{@min}}\n @max={{@max}}\n @step={{@step}}\n name={{@name}}\n id={{f.id}}\n {{f.registerElement}}\n {{manageValidation errorMessageId=f.errorId invalid=f.invalid showErrors=f.showErrors}}\n ...attributes\n />\n </this.Field>\n </template>\n}\n","import Component from '@glimmer/component';\n\nimport { asString } from '../../../-private/helpers.ts';\nimport { Select } from '../../controls/select.gts';\nimport { manageValidation } from '../manage-validation.ts';\n\nimport type { SelectSignature, Value } from '../../controls/select.gts';\nimport type { BoundField, FieldArgs } from '../field.gts';\nimport type { AttrValue } from '@glint/template';\nimport type { FieldNames, FieldValue, UserData } from '@hokulea/ember-pahu';\n\nexport interface SelectFieldSignature<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> {\n Element: SelectSignature['Element'];\n Args: FieldArgs<DATA, NAME, VALUE> &\n Omit<SelectSignature['Args'], 'selection' | 'update'> & {\n Field: BoundField<DATA, NAME, VALUE>;\n };\n Blocks: SelectSignature['Blocks'];\n}\n\nexport class SelectField<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> extends Component<SelectFieldSignature<DATA, NAME, VALUE>> {\n Field = this.args.Field;\n\n setValue = (setValue: (value: FieldValue<DATA, NAME, VALUE>) => void) => {\n return (value: Value | Value[]) => setValue(value as FieldValue<DATA, NAME, VALUE>);\n };\n\n <template>\n <this.Field\n @name={{@name}}\n @label={{@label}}\n @description={{@description}}\n @value={{@value}}\n @ignoreNativeValidation={{@ignoreNativeValidation}}\n @validateOn={{@validateOn}}\n @revalidateOn={{@revalidateOn}}\n @validate={{@validate}}\n @validated={{@validated}}\n as |f|\n >\n <Select\n @value={{asString f.value}}\n @update={{this.setValue f.setValue}}\n @disabled={{@disabled}}\n name={{@name}}\n id={{f.id}}\n {{f.registerElement}}\n {{manageValidation errorMessageId=f.errorId invalid=f.invalid showErrors=f.showErrors}}\n ...attributes\n as |s|\n >\n {{yield s}}\n </Select>\n </this.Field>\n </template>\n}\n","import Component from '@glimmer/component';\nimport { hash, uniqueId } from '@ember/helper';\n\nimport { element } from 'ember-element-helper';\n\nimport { eq } from '../../../-private/helpers.ts';\nimport { Radio } from '../../controls/radio.gts';\nimport { Description } from '../description.gts';\nimport { Label } from '../label.gts';\n\nimport type { RadioSignature } from '../../controls/radio.gts';\nimport type { BoundField, FieldArgs, FieldBlock } from '../field';\nimport type { AttrValue, WithBoundArgs } from '@glint/template';\nimport type { FieldNames, FieldValue, UserData } from '@hokulea/ember-pahu';\n\nexport interface OptionSignature<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> {\n Element: RadioSignature['Element'];\n Args: {\n value: string;\n label: string;\n description?: string;\n\n /** @internal */\n name: string;\n\n /** @internal */\n disabled?: boolean;\n\n /** @internal */\n field: FieldBlock<DATA, NAME, VALUE>;\n };\n Blocks: {\n default: [];\n };\n}\n\nclass Option<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> extends Component<OptionSignature<DATA, NAME, VALUE>> {\n select = () => {\n this.args.field.setValue(this.args.value as FieldValue<DATA, NAME, VALUE>);\n };\n\n <template>\n {{#let (uniqueId) as |id|}}\n <div class=\"form-choice\" data-test-option>\n <span>\n <Radio\n @value={{eq @field.value @value}}\n @update={{this.select}}\n @disabled={{@disabled}}\n id={{id}}\n name={{@name}}\n value={{@value}}\n {{@field.registerElement}}\n ...attributes\n />\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}}\n </template>\n}\n\nexport interface SingularChoiceFieldSignature<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> {\n Args: FieldArgs<DATA, NAME, VALUE> & {\n disabled?: boolean;\n Field: BoundField<DATA, NAME, VALUE>;\n };\n Blocks: {\n default: [\n {\n Option: WithBoundArgs<typeof Option<DATA, NAME, VALUE>, 'field' | 'name'>;\n }\n ];\n };\n}\n\nexport class SingularChoiceField<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> extends Component<SingularChoiceFieldSignature<DATA, NAME, VALUE>> {\n Field = this.args.Field;\n Option = Option<DATA, NAME, VALUE>;\n\n <template>\n <this.Field\n @element={{element \"fieldset\"}}\n @labelComponent={{component Label element=(element \"legend\")}}\n @name={{@name}}\n @label={{@label}}\n @description={{@description}}\n @value={{@value}}\n @ignoreNativeValidation={{@ignoreNativeValidation}}\n @validateOn={{@validateOn}}\n @revalidateOn={{@revalidateOn}}\n @validate={{@validate}}\n @validated={{@validated}}\n as |f|\n >\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>\n </template>\n}\n","import Component from '@glimmer/component';\n\nimport { asString } from '../../../-private/helpers.ts';\nimport { TextInput } from '../../controls/text-input.gts';\nimport { manageValidation } from '../manage-validation.ts';\n\nimport type { TextInputSignature } from '../../controls/text-input.gts';\nimport type { BoundField, FieldArgs } from '../field.gts';\nimport type { RulesBlock } from '../rules.gts';\nimport type { AttrValue } from '@glint/template';\nimport type { FieldNames, FieldValue, UserData } from '@hokulea/ember-pahu';\n\nexport interface TextFieldSignature<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> {\n Element: TextInputSignature['Element'];\n Args: FieldArgs<DATA, NAME, VALUE> &\n Omit<TextInputSignature['Args'], 'value' | 'update'> & {\n Field: BoundField<DATA, NAME, VALUE>;\n };\n Blocks: RulesBlock;\n}\n\nexport class TextField<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> extends Component<TextFieldSignature<DATA, NAME, VALUE>> {\n Field = this.args.Field;\n\n setStringValue = (setValue: (value: FieldValue<DATA, NAME, VALUE>) => void) => {\n return (value: string) => setValue(value as FieldValue<DATA, NAME, VALUE>);\n };\n\n <template>\n <@Field\n @name={{@name}}\n @label={{@label}}\n @description={{@description}}\n @value={{@value}}\n @ignoreNativeValidation={{@ignoreNativeValidation}}\n @validateOn={{@validateOn}}\n @revalidateOn={{@revalidateOn}}\n @validate={{@validate}}\n @validated={{@validated}}\n as |f|\n >\n <TextInput\n @value={{asString f.value}}\n @update={{this.setStringValue f.setValue}}\n @disabled={{@disabled}}\n name={{@name}}\n id={{f.id}}\n {{f.registerElement}}\n {{manageValidation errorMessageId=f.errorId invalid=f.invalid showErrors=f.showErrors}}\n ...attributes\n />\n\n {{#if (has-block \"rules\")}}\n <f.Rules as |Rule|>\n {{yield Rule to=\"rules\"}}\n </f.Rules>\n {{/if}}\n </@Field>\n </template>\n}\n","import Component from '@glimmer/component';\n\nimport { asString } from '../../../-private/helpers.ts';\nimport { TextArea } from '../../controls/text-area.gts';\nimport { manageValidation } from '../manage-validation.ts';\n\nimport type { TextAreaSignature } from '../../controls/text-area.gts';\nimport type { BoundField, FieldArgs } from '../field.gts';\nimport type { AttrValue } from '@glint/template';\nimport type { FieldNames, FieldValue, UserData } from '@hokulea/ember-pahu';\n\nexport interface TextAreaFieldSignature<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> {\n Element: TextAreaSignature['Element'];\n Args: FieldArgs<DATA, NAME, VALUE> &\n Omit<TextAreaSignature['Args'], 'value' | 'update'> & {\n Field: BoundField<DATA, NAME, VALUE>;\n };\n}\n\nexport class TextAreaField<\n DATA extends UserData,\n NAME extends string = FieldNames<DATA> | (string & {}),\n VALUE = NAME extends keyof DATA ? DATA[NAME] : AttrValue\n> extends Component<TextAreaFieldSignature<DATA, NAME, VALUE>> {\n Field = this.args.Field;\n\n setStringValue = (setValue: (value: FieldValue<DATA, NAME, VALUE>) => void) => {\n return (value: string) => setValue(value as FieldValue<DATA, NAME, VALUE>);\n };\n\n <template>\n <this.Field\n @name={{@name}}\n @label={{@label}}\n @description={{@description}}\n @value={{@value}}\n @ignoreNativeValidation={{@ignoreNativeValidation}}\n @validateOn={{@validateOn}}\n @revalidateOn={{@revalidateOn}}\n @validate={{@validate}}\n @validated={{@validated}}\n as |f|\n >\n <TextArea\n @value={{asString f.value}}\n @update={{this.setStringValue f.setValue}}\n @disabled={{@disabled}}\n name={{@name}}\n id={{f.id}}\n {{f.registerElement}}\n {{manageValidation errorMessageId=f.errorId invalid=f.invalid showErrors=f.showErrors}}\n ...attributes\n />\n </this.Field>\n </template>\n}\n","import disabled from '../../-private/modifiers/disabled.ts';\n\nimport type { TOC } from '@ember/component/template-only';\nimport type { Importance, Intent, Spacing } from '@hokulea/tokens';\n\nexport interface ResetSignature {\n Element: HTMLButtonElement;\n Args: {\n intent?: Intent;\n importance?: Importance;\n spacing?: Spacing;\n disabled?: boolean;\n };\n Blocks: {\n /** The label for the button */\n default: [];\n\n /** The label for the button */\n label: [];\n\n /** A slot in front of the label */\n before: [];\n\n /** A slot after the label */\n after: [];\n };\n}\n\nexport const Reset: TOC<ResetSignature> = <template>\n <button\n type=\"reset\"\n class=\"button\"\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","import disabled from '../../-private/modifiers/disabled.ts';\n\nimport type { TOC } from '@ember/component/template-only';\nimport type { Importance, Intent, Spacing } from '@hokulea/tokens';\n\nexport interface SubmitSignature {\n Element: HTMLButtonElement;\n Args: {\n intent?: Intent;\n importance?: Importance;\n spacing?: Spacing;\n disabled?: boolean;\n };\n Blocks: {\n /** The label for the button */\n default: [];\n\n /** The label for the button */\n label: [];\n\n /** A slot in front of the label */\n before: [];\n\n /** A slot after the label */\n after: [];\n };\n}\n\nexport const Submit: TOC<SubmitSignature> = <template>\n <button\n type=\"submit\"\n class=\"button\"\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","import Component from '@glimmer/component';\nimport { hash } from '@ember/helper';\n\nimport { createForm } from '@hokulea/ember-pahu';\n\nimport { Field } from './field.gts';\nimport { CheckboxField } from './fields/checkbox.gts';\nimport { CurrencyField } from './fields/currency.gts';\nimport { DateField } from './fields/date.gts';\nimport { EmailField } from './fields/email.gts';\nimport { ListField } from './fields/list.gts';\nimport { MultipleChoiceField } from './fields/multiple-choice.gts';\nimport { NumberField } from './fields/number.gts';\nimport { PasswordField } from './fields/password.gts';\nimport { PhoneField } from './fields/phone.gts';\nimport { RangeField } from './fields/range.gts';\nimport { SelectField } from './fields/select.gts';\nimport { SingularChoiceField } from './fields/singular-choice.gts';\nimport { TextField } from './fields/text.gts';\nimport { TextAreaField } from './fields/text-area.gts';\nimport { Reset } from './reset.gts';\nimport { Submit } from './submit.gts';\n\nimport type { BoundField } from './field.gts';\nimport type { WithBoundArgs } from '@glint/template';\nimport type { FormAPI, FormConfig, UserData } from '@hokulea/ember-pahu';\n\nexport interface FormBuilder<DATA extends UserData> {\n Checkbox: WithBoundArgs<typeof CheckboxField<DATA>, 'Field'>;\n Currency: WithBoundArgs<typeof CurrencyField<DATA>, 'Field'>;\n Date: WithBoundArgs<typeof DateField<DATA>, 'Field'>;\n Email: WithBoundArgs<typeof EmailField<DATA>, 'Field'>;\n List: WithBoundArgs<typeof ListField<DATA>, 'Field'>;\n MultipleChoice: WithBoundArgs<typeof MultipleChoiceField<DATA>, 'Field'>;\n Number: WithBoundArgs<typeof NumberField<DATA>, 'Field'>;\n Range: WithBoundArgs<typeof RangeField<DATA>, 'Field'>;\n Password: WithBoundArgs<typeof PasswordField<DATA>, 'Field'>;\n Phone: WithBoundArgs<typeof PhoneField<DATA>, 'Field'>;\n Select: WithBoundArgs<typeof SelectField<DATA>, 'Field'>;\n SingularChoice: WithBoundArgs<typeof SingularChoiceField<DATA>, 'Field'>;\n Text: WithBoundArgs<typeof TextField<DATA>, 'Field'>;\n TextArea: WithBoundArgs<typeof TextAreaField<DATA>, 'Field'>;\n Field: BoundField<DATA>;\n Submit: typeof Submit;\n Reset: typeof Reset;\n\n /**\n * Will be true if at least one form field is invalid.\n */\n invalid: boolean;\n\n /**\n * Yielded action that will trigger form validation and submission, same as when triggering the native `submit` event on the form.\n */\n submit: FormAPI<DATA>['submit'];\n\n /**\n * Yielded action that will reset form state, same as when triggering the native `reset` event on the form.\n */\n reset: FormAPI<DATA>['reset'];\n\n /**\n * Trigger validation on the form\n */\n validate: FormAPI<DATA>['validate'];\n\n /* @TODO: Remove, for debug only */\n form: ReturnType<typeof createForm<DATA>>;\n}\n\nexport interface FormSignature<DATA extends UserData> {\n Element: HTMLFormElement;\n Args: FormConfig<DATA>;\n Blocks: {\n default: [FormBuilder<DATA>];\n };\n}\n\nexport class Form<DATA extends UserData> extends Component<FormSignature<DATA>> {\n Field = Field<DATA>;\n CheckboxField = CheckboxField<DATA>;\n CurrencyField = CurrencyField<DATA>;\n DateField = DateField<DATA>;\n EmailField = EmailField<DATA>;\n ListField = ListField<DATA>;\n MultipleChoiceField = MultipleChoiceField<DATA>;\n NumberField = NumberField<DATA>;\n PasswordField = PasswordField<DATA>;\n PhoneField = PhoneField<DATA>;\n RangeField = RangeField<DATA>;\n SelectField = SelectField<DATA>;\n SingularChoiceField = SingularChoiceField<DATA>;\n TextAreaField = TextAreaField<DATA>;\n TextField = TextField<DATA>;\n\n <template>\n {{#let\n (createForm\n data=@data\n ignoreNativeValidation=@ignoreNativeValidation\n validateOn=@validateOn\n revalidateOn=@revalidateOn\n submit=@submit\n validate=@validate\n validated=@validated\n )\n as |f|\n }}\n <form novalidate class=\"form\" data-test-form ...attributes {{f.registerElement}}>\n {{#let (component this.Field form=f) as |WiredField|}}\n {{yield\n (hash\n invalid=f.invalid\n submit=f.submit\n Field=WiredField\n Checkbox=(component this.CheckboxField Field=WiredField)\n Currency=(component this.CurrencyField Field=WiredField)\n Date=(component this.DateField Field=WiredField)\n Email=(component this.EmailField Field=WiredField)\n List=(component this.ListField Field=WiredField)\n MultipleChoice=(component this.MultipleChoiceField Field=WiredField)\n Number=(component this.NumberField Field=WiredField)\n Password=(component this.PasswordField Field=WiredField)\n Phone=(component this.PhoneField Field=WiredField)\n Range=(component this.RangeField Field=WiredField)\n Select=(component this.SelectField Field=WiredField)\n SingularChoice=(component this.SingularChoiceField Field=WiredField)\n TextArea=(component this.TextAreaField Field=WiredField)\n Text=(component this.TextField Field=WiredField)\n Submit=Submit\n Reset=Reset\n form=f\n )\n }}\n {{/let}}\n </form>\n {{/let}}\n </template>\n}\n"],"names":["Description","setComponentTemplate","precompileTemplate","strictMode","templateOnly","Errors","Label","scope","element","ErrorIcon","ValidIcon","Rule","Component","isInvalid","args","errors","some","i","key","value","Icon","Rules","constructor","owner","useRules","Field","g","prototype","tracked","void 0","validateOn","rulesUsed","revalidateOn","createOrUpdateField","config","filteredConfig","Object","fromEntries","entries","filter","_","v","undefined","updateConfig","form","createField","next","validate","showErrors","uniqueId","hash","and","manageValidation","modifier","invalid","errorMessageId","ariaInvalid","setAttribute","removeAttribute","parentElement","dataset","CheckboxField","setBooleanValue","setValue","Checkbox","asBoolean","CurrencyField","setNumberValue","CurrencyInput","asNumber","DateField","setStringValue","DateInput","asString","EmailField","EmailInput","ListLabel","ListField","List","asValue","Option","select","checked","field","values","index","indexOf","Array","isArray","splice","includes","issues","length","MultipleChoiceField","asMultiField","NumberField","NumberInput","PasswordField","PasswordInput","PhoneField","PhoneInput","RangeField","RangeInput","SelectField","Select","Radio","eq","SingularChoiceField","TextField","TextInput","TextAreaField","TextArea","Reset","disabled","Submit","Form","createForm"],"mappings":"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"}
package/dist/index.js CHANGED
@@ -14,10 +14,11 @@ export { R as Radio } from './radio-BQvSPyDT.js';
14
14
  export { R as RangeInput } from './range-input-Bosd7QI2.js';
15
15
  export { S as Select } from './select-DWOHAUfQ.js';
16
16
  export { T as Tabs } from './tabs-e_cUi6pL.js';
17
- export { T as TextArea } from './text-area-CLRp3q_-.js';
17
+ export { T as TextArea } from './text-area-BsDD1dpV.js';
18
18
  export { T as TextInput } from './text-input-BntDzi8S.js';
19
19
  export { D as DataTable } from './data-table-ZliVM1td.js';
20
- export { F as Form } from './form-CoJgUXR6.js';
20
+ export { A as Alert } from './alert-DmCWMMRr.js';
21
+ export { F as Form } from './form-CXvWQbiY.js';
21
22
  export { A as Avatar } from './avatar-DTqwlbny.js';
22
23
  export { I as Icon } from './icon-rlG6O1ps.js';
23
24
  export { A as AppHeader } from './app-header-DKlDPWSe.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -3,6 +3,23 @@ import { click, select, triggerEvent } from '@ember/test-helpers';
3
3
  import { selectListbox, selectTab } from 'ember-aria-voyager/test-support';
4
4
  import { a as TabValue } from '../tabs-e_cUi6pL.js';
5
5
 
6
+ class AlertPageObject extends PageObject {
7
+ static SELECTOR = '[data-test-feedback]';
8
+ constructor(selector, parent, index) {
9
+ super(selector ?? AlertPageObject.SELECTOR, parent, index);
10
+ }
11
+ get indicator() {
12
+ return this.element?.getAttribute('data-indicator');
13
+ }
14
+ get importance() {
15
+ return this.element?.getAttribute('data-importance');
16
+ }
17
+ $icon = selector('[part="icon"]');
18
+ $title = selector('[part="title"]');
19
+ $content = selector('[part="content"]');
20
+ $actions = selector('[part="actions"]');
21
+ }
22
+
6
23
  class IconPageObject extends PageObject {
7
24
  static SELECTOR = '[data-test-icon]';
8
25
  constructor(selector, parent, index) {
@@ -471,5 +488,5 @@ class TabsPageObject extends PageObject {
471
488
  }
472
489
  }
473
490
 
474
- export { 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 };
491
+ 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 };
475
492
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/test-support/page-objects/icon.ts","../../src/test-support/page-objects/icon-button.ts","../../src/test-support/page-objects/menu.ts","../../src/test-support/page-objects/app-header.ts","../../src/test-support/page-objects/avatar.ts","../../src/test-support/page-objects/button.ts","../../src/test-support/page-objects/choice.ts","../../src/test-support/page-objects/input.ts","../../src/test-support/page-objects/select.ts","../../src/test-support/page-objects/pagination.ts","../../src/test-support/page-objects/data-table.ts","../../src/test-support/page-objects/input-builder.ts","../../src/test-support/page-objects/list.ts","../../src/test-support/page-objects/text-area.ts","../../src/test-support/page-objects/-private/choices.ts","../../src/test-support/page-objects/-private/field.ts","../../src/test-support/page-objects/form.ts","../../src/test-support/page-objects/-navigation.ts","../../src/test-support/page-objects/navigation-list.ts","../../src/test-support/page-objects/page.ts","../../src/test-support/page-objects/pill-button.ts","../../src/test-support/page-objects/popover.ts","../../src/test-support/page-objects/section.ts","../../src/test-support/page-objects/tabs.ts"],"sourcesContent":["import { PageObject, selector as sel } from 'fractal-page-object';\n\nimport type { ElementLike } from 'fractal-page-object';\n\nexport class IconPageObject extends PageObject<HTMLSpanElement> {\n static SELECTOR = '[data-test-icon]';\n\n constructor(selector?: string, parent?: PageObject | ElementLike | null, index?: number | null) {\n super(selector ?? IconPageObject.SELECTOR, parent, index);\n }\n\n $svg = sel<SVGSVGElement>('svg');\n // $svg = sel<HTMLElement>('svg');\n}\n","import { click } from '@ember/test-helpers';\n\nimport { PageObject, selector as sel } from 'fractal-page-object';\n\nimport { IconPageObject } from './icon.ts';\n\nimport type { ElementLike } from 'fractal-page-object';\n\nexport class IconButtonPageObject extends PageObject<\n HTMLButtonElement | HTMLAnchorElement | HTMLSpanElement\n> {\n static SELECTOR = '[data-test-icon-button]';\n\n constructor(selector?: string, parent?: PageObject | ElementLike | null, index?: number | null) {\n super(selector ?? IconButtonPageObject.SELECTOR, parent, index);\n }\n\n get intent(): string | null | undefined {\n return this.element?.getAttribute('data-intent');\n }\n\n get importance(): string | null | undefined {\n return this.element?.getAttribute('data-importance');\n }\n\n get spacing(): string | null | undefined {\n return this.element?.getAttribute('data-spacing');\n }\n\n async push() {\n if (this.element) {\n await click(this.element);\n }\n }\n\n $icon = sel('[data-test-icon-button=\"icon\"]', IconPageObject);\n}\n","import { globalSelector, PageObject, selector as sel } from 'fractal-page-object';\n\nimport type { Menu, MenuElement, MenuItem, MenuItemElement } from './-menu.ts';\nimport type { ElementLike } from 'fractal-page-object';\n\nexport class MenuItemPageObject extends PageObject<MenuItemElement> implements MenuItem {\n static SELECTOR = '[role=\"menuitem\"]';\n\n constructor(selector?: string, parent?: PageObject | ElementLike | null, index?: number | null) {\n super(selector ?? MenuItemPageObject.SELECTOR, parent, index);\n }\n\n get disabled() {\n return Boolean(this.element?.hasAttribute('aria-disabled'));\n }\n\n get expanded(): boolean {\n return Boolean(this.menu?.element?.matches(':popover-open'));\n }\n\n hasMenu() {\n return this.element?.getAttribute('aria-haspopup') === 'menu';\n }\n\n protected get menuId() {\n return this.element?.getAttribute('popovertarget');\n }\n\n protected get menu(): Menu | undefined {\n return this.menuId\n ? // eslint-disable-next-line @typescript-eslint/no-use-before-define\n globalSelector<MenuElement, Menu>(`#${this.menuId}`, MenuPageObject)\n : undefined;\n }\n\n get $menu() {\n return this.menu;\n }\n}\n\nexport class MenuPageObject extends PageObject<MenuElement> implements Menu {\n static SELECTOR = '[data-test-menu]';\n\n constructor(selector?: string, parent?: PageObject | ElementLike | null, index?: number | null) {\n super(selector ?? MenuPageObject.SELECTOR, parent, index);\n }\n\n get control() {\n return this.element as HTMLDivElement;\n }\n\n $item = sel<MenuItemElement, MenuItem>(MenuItemPageObject.SELECTOR, MenuItemPageObject);\n}\n","import { PageObject, selector as sel } from 'fractal-page-object';\n\nimport { IconButtonPageObject } from './icon-button.ts';\nimport { MenuItemPageObject } from './menu.ts';\n\nimport type { Menu, MenuItem, MenuItemElement } from './-menu.ts';\nimport type { ElementLike } from 'fractal-page-object';\n\nclass AppNavPageObject extends PageObject<HTMLElement> implements Menu<HTMLElement> {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n $item = sel<MenuItemElement, MenuItem>(NavItemPageObject.SELECTOR, NavItemPageObject);\n}\n\nexport class NavItemPageObject extends MenuItemPageObject implements MenuItem {\n static SELECTOR = '[part=\"item\"]';\n\n constructor(selector?: string, parent?: PageObject | ElementLike | null, index?: number | null) {\n super(selector ?? NavItemPageObject.SELECTOR, parent, index);\n }\n\n hasMenu() {\n return super.hasMenu() || this.element?.tagName.toLowerCase() === 'summary';\n }\n\n isPopupNavItem() {\n return (\n this.element?.tagName.toLowerCase() === 'summary' ||\n this.element?.parentElement?.tagName === 'details'\n );\n }\n\n get expanded() {\n return Boolean(\n this.isPopupNavItem()\n ? (this.element?.parentElement as HTMLElement).matches('[open]')\n : super.expanded\n );\n }\n\n get $menu(): Menu | undefined {\n if (this.isPopupNavItem()) {\n return sel<HTMLElement, Menu>('+ div', AppNavPageObject);\n }\n\n return this.menu;\n }\n}\n\nexport class AppHeaderPageObject extends PageObject<HTMLElement> {\n static SELECTOR = '[data-test-app-header]';\n\n constructor(selector?: string, parent?: PageObject | ElementLike | null, index?: number | null) {\n super(selector ?? AppHeaderPageObject.SELECTOR, parent, index);\n }\n\n get #prefix() {\n if (this.$menu.element) {\n return '[part=\"menu\"]';\n }\n\n return '';\n }\n\n get $brand() {\n return sel<HTMLDivElement>(`${this.#prefix} [part=\"brand\"]`);\n }\n\n get $nav() {\n return sel(`${this.#prefix} nav`, AppNavPageObject);\n }\n\n get $aux() {\n return sel(`${this.#prefix} [part=\"aux\"]`, AppNavPageObject);\n }\n\n $menu = sel(\n '[part=\"menu\"]',\n class extends PageObject<HTMLSpanElement> {\n $toggle = sel('[data-test-toggle]', IconButtonPageObject);\n\n $popover = sel(\n '[popover]',\n class extends PageObject<HTMLElement> {\n get expanded() {\n return Boolean(this.element?.matches(':popover-open'));\n }\n }\n );\n }\n );\n}\n","import { PageObject, selector as sel } from 'fractal-page-object';\n\nimport type { ElementLike } from 'fractal-page-object';\n\nexport class AvatarPageObject extends PageObject<HTMLSpanElement> {\n static SELECTOR = '[data-test-avatar]';\n\n constructor(selector?: string, parent?: PageObject | ElementLike | null, index?: number | null) {\n super(selector ?? AvatarPageObject.SELECTOR, parent, index);\n }\n\n $svg = sel<SVGSVGElement>('svg');\n $img = sel<HTMLImageElement>('img');\n}\n","import { click } from '@ember/test-helpers';\n\nimport { PageObject, selector as sel } from 'fractal-page-object';\n\nimport type { ElementLike } from 'fractal-page-object';\n\nexport class ButtonPageObject extends PageObject<\n HTMLButtonElement | HTMLAnchorElement | HTMLSpanElement\n> {\n static SELECTOR = '[data-test-button]';\n\n constructor(selector?: string, parent?: PageObject | ElementLike | null, index?: number | null) {\n super(selector ?? ButtonPageObject.SELECTOR, parent, index);\n }\n\n get intent(): string | null | undefined {\n return this.element?.getAttribute('data-intent');\n }\n\n get importance(): string | null | undefined {\n return this.element?.getAttribute('data-importance');\n }\n\n get spacing(): string | null | undefined {\n return this.element?.getAttribute('data-spacing');\n }\n\n $before = sel<HTMLSpanElement>('[data-test-button=\"before\"]');\n $label = sel<HTMLSpanElement>('[data-test-button=\"label\"]');\n $after = sel<HTMLSpanElement>('[data-test-button=\"after\"]');\n\n async push() {\n if (this.element) {\n await click(this.element);\n }\n }\n}\n","import { PageObject } from 'fractal-page-object';\n\nimport type { Input } from './input.ts';\nimport type { ElementLike } from 'fractal-page-object';\n\nclass ChoicePageObject extends PageObject<HTMLInputElement> implements Input {\n static SELECTOR = '[data-test-choice]';\n\n constructor(selector?: string, parent?: PageObject | ElementLike | null, index?: number | null) {\n super(selector ?? ChoicePageObject.SELECTOR, parent, index);\n }\n\n get control() {\n return this.element as HTMLInputElement;\n }\n}\n\nexport const RadioPageObject = ChoicePageObject;\nexport const CheckboxPageObject = ChoicePageObject;\n","import { PageObject } from 'fractal-page-object';\n\nimport type { ElementLike } from 'fractal-page-object';\n\nexport interface Input extends PageObject {\n control: HTMLInputElement;\n}\n\nexport class InputPageObject extends PageObject<HTMLInputElement> implements Input {\n static SELECTOR = '[data-test-input]';\n\n constructor(selector?: string, parent?: PageObject | ElementLike | null, index?: number | null) {\n super(selector ?? InputPageObject.SELECTOR, parent, index);\n }\n\n get control() {\n return this.element as HTMLInputElement;\n }\n\n get spacing(): string | null | undefined {\n return this.element?.getAttribute('data-spacing');\n }\n}\n\nexport class RangeInputPageObject extends InputPageObject {\n get orientation(): string | undefined {\n return this.control.dataset.orientation;\n }\n}\n\nexport const NumberInputPageObject = InputPageObject;\nexport const TextInputPageObject = InputPageObject;\nexport const PhoneInputPageObject = InputPageObject;\nexport const DateInputPageObject = InputPageObject;\nexport const EmailInputPageObject = InputPageObject;\nexport const PasswordInputPageObject = InputPageObject;\n","import { select } from '@ember/test-helpers';\n\nimport { PageObject, selector as sel } from 'fractal-page-object';\n\nimport type { Target } from '@ember/test-helpers';\nimport type { ElementLike } from 'fractal-page-object';\n\nexport class SelectPageObject extends PageObject<HTMLSelectElement> {\n static SELECTOR = '[data-test-select]';\n\n constructor(selector?: string, parent?: PageObject | ElementLike | null, index?: number | null) {\n super(selector ?? SelectPageObject.SELECTOR, parent, index);\n }\n\n get spacing(): string | null | undefined {\n return this.element?.getAttribute('data-spacing');\n }\n\n get control() {\n return this.element as HTMLSelectElement;\n }\n\n $option = sel<HTMLOptionElement>('option');\n\n async select(options: string | string[], keepPreviouslySelected?: boolean) {\n await select(this.element as Target, options, keepPreviouslySelected);\n }\n}\n","import { PageObject, selector as sel } from 'fractal-page-object';\n\nimport { IconButtonPageObject } from './icon-button.ts';\nimport { NumberInputPageObject } from './input.ts';\nimport { SelectPageObject } from './select.ts';\n\nimport type { ElementLike } from 'fractal-page-object';\n\nexport class PaginationPageObject extends PageObject<HTMLDivElement> {\n static SELECTOR = '[data-test-pagination]';\n\n constructor(selector?: string, parent?: PageObject | ElementLike | null, index?: number | null) {\n super(selector ?? PaginationPageObject.SELECTOR, parent, index);\n }\n\n $pageSize = sel(\n '[part=\"page-size\"]',\n class extends PageObject<HTMLElement> {\n $select = sel(SelectPageObject.SELECTOR, SelectPageObject);\n }\n );\n\n $page = sel(\n '[part=\"page\"]',\n class extends PageObject<HTMLElement> {\n $select = sel(SelectPageObject.SELECTOR, SelectPageObject);\n $input = sel(NumberInputPageObject.SELECTOR, NumberInputPageObject);\n }\n );\n\n $items = sel<HTMLElement>('[part=\"items\"]');\n\n $prev = sel('[data-test-prev]', IconButtonPageObject);\n $next = sel('[data-test-next]', IconButtonPageObject);\n}\n","import { PageObject, selector as sel } from 'fractal-page-object';\n\nimport { PaginationPageObject } from './pagination.ts';\n\nimport type { ElementLike } from 'fractal-page-object';\n\nexport class DataTablePageObject extends PageObject<HTMLSpanElement> {\n static SELECTOR = '[data-test-data-table]';\n\n constructor(selector?: string, parent?: PageObject | ElementLike | null, index?: number | null) {\n super(selector ?? DataTablePageObject.SELECTOR, parent, index);\n }\n\n $col = sel<HTMLTableCellElement>('thead th');\n $rows = sel<HTMLTableRowElement>('tbody tr');\n $paginationFooter = sel(\n '[data-pagination]',\n class extends PageObject<HTMLTableCellElement> {\n $pagination = sel(PaginationPageObject.SELECTOR, PaginationPageObject);\n }\n );\n}\n","import { PageObject, selector as sel } from 'fractal-page-object';\n\nimport { InputPageObject } from './input.ts';\n\nimport type { Input } from './input.ts';\nimport type { ElementLike } from 'fractal-page-object';\n\nexport class InputBuilderPageObject extends PageObject<HTMLInputElement> implements Input {\n static SELECTOR = '[data-test-input-builder]';\n\n constructor(selector?: string, parent?: PageObject | ElementLike | null, index?: number | null) {\n super(selector ?? InputBuilderPageObject.SELECTOR, parent, index);\n }\n\n $prefix = sel<HTMLSpanElement>('[data-test-input-builder=\"prefix\"]');\n $affix = sel<HTMLSpanElement>('[data-test-input-builder=\"affix\"]');\n $suffix = sel<HTMLSpanElement>('[data-test-input-builder=\"suffix\"]');\n $input = sel(InputPageObject.SELECTOR, InputPageObject);\n\n get control() {\n return this.$input.element as HTMLInputElement;\n }\n}\n\nexport const CurrencyInputPageObject = InputBuilderPageObject;\n","import { PageObject, selector as sel } from 'fractal-page-object';\n\nimport { selectListbox } from 'ember-aria-voyager/test-support';\n\nimport type { Target } from '@ember/test-helpers';\nimport type { ElementLike } from 'fractal-page-object';\n\nexport class ListPageObject extends PageObject<HTMLDivElement> {\n static SELECTOR = '[data-test-list]';\n\n constructor(selector?: string, parent?: PageObject | ElementLike | null, index?: number | null) {\n super(selector ?? ListPageObject.SELECTOR, parent, index);\n }\n\n get control() {\n return this.element as HTMLDivElement;\n }\n\n $option = sel<HTMLOptionElement>('[role=\"option\"]');\n\n async select(options: string | string[]) {\n await selectListbox(this.element as Target, options);\n }\n}\n","import { PageObject } from 'fractal-page-object';\n\nimport type { Input } from './input.ts';\nimport type { ElementLike } from 'fractal-page-object';\n\nexport class TextAreaPageObject extends PageObject<HTMLInputElement> implements Input {\n static SELECTOR = '[data-test-textarea]';\n\n constructor(selector?: string, parent?: PageObject | ElementLike | null, index?: number | null) {\n super(selector ?? TextAreaPageObject.SELECTOR, parent, index);\n }\n\n get control() {\n return this.element as HTMLInputElement;\n }\n}\n","import { PageObject, selector as sel } from 'fractal-page-object';\n\nimport type { ElementLike } from 'fractal-page-object';\n\nexport class OptionPageObject extends PageObject<HTMLDivElement> {\n $label = sel<HTMLLabelElement | HTMLLegendElement>('[data-test-label]');\n $description = sel<HTMLParagraphElement>('[data-test-description]');\n $control = sel<HTMLInputElement>('input');\n}\n\nexport class ChoicesPageObject extends PageObject<HTMLDivElement | HTMLFieldSetElement> {\n static SELECTOR = '[data-test-choices]';\n\n constructor(selector?: string, parent?: PageObject | ElementLike | null, index?: number | null) {\n super(selector ?? ChoicesPageObject.SELECTOR, parent, index);\n }\n\n $options = sel('[data-test-option]', OptionPageObject);\n\n option(value: string) {\n return this.$options.find(\n (option) => option.$control.element?.value === value\n ) as OptionPageObject;\n }\n}\n","import { PageObject, selector as sel } from 'fractal-page-object';\n\nimport { CheckboxPageObject } from '../choice.ts';\nimport { InputPageObject } from '../input.ts';\nimport { InputBuilderPageObject } from '../input-builder.ts';\nimport { ListPageObject } from '../list.ts';\nimport { SelectPageObject } from '../select.ts';\nimport { TextAreaPageObject } from '../text-area.ts';\nimport { ChoicesPageObject } from './choices.ts';\n\nimport type { RangeInputPageObject } from '../input';\nimport type { ElementLike } from 'fractal-page-object';\n\nexport class FieldError extends PageObject<HTMLDivElement> {\n get type() {\n return this.element?.getAttribute('data-test-error-type');\n }\n\n get value() {\n return this.element?.getAttribute('data-test-error-value');\n }\n}\n\nexport class FieldRule extends PageObject<HTMLParagraphElement> {\n get invalid() {\n return Boolean(this.element?.getAttribute('data-test-rule-invalid'));\n }\n}\n\nexport class FieldPageObject extends PageObject<HTMLDivElement | HTMLFieldSetElement> {\n static SELECTOR = '[data-test-field]';\n\n constructor(selector?: string, parent?: PageObject | ElementLike | null, index?: number | null) {\n super(selector ?? FieldPageObject.SELECTOR, parent, index);\n }\n\n $label = sel<HTMLLabelElement | HTMLLegendElement>('[data-test-label]');\n $description = sel<HTMLParagraphElement>('[data-test-description]');\n // $control = sel<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>(\n // 'input,select,textarea'\n // );\n\n // controls\n\n private $input = sel(InputPageObject.SELECTOR, InputPageObject);\n private $inputBuilder = sel(InputBuilderPageObject.SELECTOR, InputBuilderPageObject);\n private $select = sel(SelectPageObject.SELECTOR, SelectPageObject);\n private $textArea = sel(TextAreaPageObject.SELECTOR, TextAreaPageObject);\n private $checkbox = sel(CheckboxPageObject.SELECTOR, CheckboxPageObject);\n private $list = sel(ListPageObject.SELECTOR, ListPageObject);\n\n $choices = sel(ChoicesPageObject.SELECTOR, ChoicesPageObject);\n $errors = sel('[data-test-error]', FieldError);\n $rules = sel('[data-test-rule]', FieldRule);\n\n get $control():\n | InputPageObject\n | RangeInputPageObject\n | InputBuilderPageObject\n | SelectPageObject\n | TextAreaPageObject\n | ListPageObject {\n if (this.$inputBuilder.element) {\n return this.$inputBuilder;\n }\n\n if (this.$checkbox.element) {\n return this.$checkbox;\n }\n\n if (this.$input.element?.type === 'range') {\n return this.$input as RangeInputPageObject;\n }\n\n if (this.$input.element) {\n return this.$input;\n }\n\n if (this.$select.element) {\n return this.$select;\n }\n\n if (this.$textArea.element) {\n return this.$textArea;\n }\n\n if (this.$list.element) {\n return this.$list;\n }\n\n return this.$input; // @TODO bad fallback for now\n }\n\n get name() {\n return this.element?.getAttribute('data-test-field');\n }\n}\n","import { triggerEvent } from '@ember/test-helpers';\n\nimport { PageObject, selector as sel } from 'fractal-page-object';\n\nimport { FieldPageObject } from './-private/field.ts';\nimport { ButtonPageObject } from './button.ts';\n\nimport type { ElementLike } from 'fractal-page-object';\n\nexport type { OptionPageObject } from './-private/choices.ts';\nexport type { FieldError } from './-private/field.ts';\n\nexport class FormPageObject extends PageObject<HTMLFormElement> {\n static SELECTOR = '[data-test-form]';\n\n constructor(selector?: string, parent?: PageObject | ElementLike | null, index?: number | null) {\n super(selector ?? FormPageObject.SELECTOR, parent, index);\n }\n\n $submit = sel('button[type=\"submit\"]', ButtonPageObject);\n $reset = sel('button[type=\"reset\"]', ButtonPageObject);\n\n $fields = sel(FieldPageObject.SELECTOR, FieldPageObject);\n\n field(name: string) {\n return this.$fields.find((field) => field.name === name) as FieldPageObject;\n }\n\n async submit() {\n await triggerEvent(this.element as HTMLFormElement, 'submit');\n }\n\n async reset() {\n await triggerEvent(this.element as HTMLFormElement, 'reset');\n }\n}\n","import { PageObject, selector as sel } from 'fractal-page-object';\n\nimport { IconPageObject } from './icon.ts';\n\nimport type { ElementLike } from 'fractal-page-object';\n\nexport class NavLinkPageObject extends PageObject<\n HTMLButtonElement | HTMLAnchorElement | HTMLSpanElement\n> {\n static SELECTOR = '[part=\"item\"]';\n\n constructor(selector?: string, parent?: PageObject | ElementLike | null, index?: number | null) {\n super(selector ?? NavLinkPageObject.SELECTOR, parent, index);\n }\n\n $icon = sel(IconPageObject.SELECTOR, IconPageObject);\n}\n","import { PageObject, selector as sel } from 'fractal-page-object';\n\nimport { NavLinkPageObject } from './-navigation.ts';\n\nimport type { ElementLike } from 'fractal-page-object';\n\nexport class NavigationListPageObject extends PageObject<HTMLDivElement> {\n static SELECTOR = '[data-test-navigation-list]';\n\n constructor(selector?: string, parent?: PageObject | ElementLike | null, index?: number | null) {\n super(selector ?? NavigationListPageObject.SELECTOR, parent, index);\n }\n\n $items = sel('[part=\"item\"]', NavLinkPageObject);\n $titles = sel<HTMLElement>('[part=\"title\"]');\n}\n","import { PageObject, selector as sel } from 'fractal-page-object';\n\nimport type { ElementLike } from 'fractal-page-object';\n\nexport class PagePageObject extends PageObject<\n HTMLButtonElement | HTMLAnchorElement | HTMLSpanElement\n> {\n static SELECTOR = '[data-test-page]';\n\n constructor(selector?: string, parent?: PageObject | ElementLike | null, index?: number | null) {\n super(selector ?? PagePageObject.SELECTOR, parent, index);\n }\n\n $header = sel<HTMLElement>('header');\n\n $title = sel<HTMLHeadingElement>('header > h1');\n $description = sel<HTMLParagraphElement>('header > p');\n\n $content = sel<HTMLElement>('[part=\"content\"]');\n}\n\nexport class SectionedPagePageObject extends PagePageObject {\n $nav = sel<HTMLElement>('header > nav');\n}\n","import { click } from '@ember/test-helpers';\n\nimport { PageObject, selector as sel } from 'fractal-page-object';\n\nimport type { ElementLike } from 'fractal-page-object';\n\nexport class PillButtonPageObject extends PageObject<\n HTMLButtonElement | HTMLAnchorElement | HTMLSpanElement\n> {\n static SELECTOR = '[data-test-pill-button]';\n\n constructor(selector?: string, parent?: PageObject | ElementLike | null, index?: number | null) {\n super(selector ?? PillButtonPageObject.SELECTOR, parent, index);\n }\n\n get intent(): string | null | undefined {\n return this.element?.getAttribute('data-intent');\n }\n\n get importance(): string | null | undefined {\n return this.element?.getAttribute('data-importance');\n }\n\n get spacing(): string | null | undefined {\n return this.element?.getAttribute('data-spacing');\n }\n\n $before = sel<HTMLSpanElement>('[data-test-button=\"before\"]');\n $label = sel<HTMLSpanElement>('[data-test-button=\"label\"]');\n $after = sel<HTMLSpanElement>('[data-test-button=\"after\"]');\n\n async push() {\n if (this.element) {\n await click(this.element);\n }\n }\n}\n","import { PageObject } from 'fractal-page-object';\n\nimport type { ElementLike } from 'fractal-page-object';\n\nexport class PopoverPageObject extends PageObject<\n HTMLButtonElement | HTMLAnchorElement | HTMLSpanElement\n> {\n static SELECTOR = '[data-test-popover]';\n\n constructor(selector?: string, parent?: PageObject | ElementLike | null, index?: number | null) {\n super(selector ?? PopoverPageObject.SELECTOR, parent, index);\n }\n}\n","import { PageObject, selector as sel } from 'fractal-page-object';\n\nimport type { ElementLike } from 'fractal-page-object';\n\nexport class SectionPageObject extends PageObject<\n HTMLButtonElement | HTMLAnchorElement | HTMLSpanElement\n> {\n static SELECTOR = '[data-test-section]';\n\n constructor(selector?: string, parent?: PageObject | ElementLike | null, index?: number | null) {\n super(selector ?? SectionPageObject.SELECTOR, parent, index);\n }\n\n $header = sel('[data-test-section=\"header\"]');\n $title = sel('[data-test-section=\"title\"]');\n}\n","import { PageObject, selector as sel } from 'fractal-page-object';\n\nimport { selectTab } from 'ember-aria-voyager/test-support';\n\nimport { TabValue } from '../../components/controls/tabs.gts';\n\nimport type { ElementLike } from 'fractal-page-object';\n\nexport class TabsPageObject extends PageObject<HTMLDivElement> {\n static SELECTOR = '[data-test-tabs]';\n\n constructor(selector?: string, parent?: PageObject | ElementLike | null, index?: number | null) {\n super(selector ?? TabsPageObject.SELECTOR, parent, index);\n }\n\n get control() {\n return this.$tablist.element as HTMLDivElement;\n }\n\n $tablist = sel<HTMLDivElement>('[role=\"tablist\"]');\n $tab = sel<HTMLButtonElement>('[role=\"tab\"]');\n $tabpanel = sel<HTMLElement>('[role=\"tabpanel\"]');\n\n async select(value: unknown) {\n // @ts-expect-error this is internal API\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const tab = this.$tab.find((t) => t.element[TabValue] === value);\n\n if (tab) {\n await selectTab(tab);\n }\n }\n}\n"],"names":["IconPageObject","PageObject","SELECTOR","constructor","selector","parent","index","$svg","sel","IconButtonPageObject","intent","element","getAttribute","importance","spacing","push","click","$icon","MenuItemPageObject","disabled","Boolean","hasAttribute","expanded","menu","matches","hasMenu","menuId","globalSelector","MenuPageObject","undefined","$menu","control","$item","AppNavPageObject","NavItemPageObject","tagName","toLowerCase","isPopupNavItem","parentElement","AppHeaderPageObject","#prefix","$brand","$nav","$aux","$toggle","$popover","AvatarPageObject","$img","ButtonPageObject","$before","$label","$after","ChoicePageObject","RadioPageObject","CheckboxPageObject","InputPageObject","RangeInputPageObject","orientation","dataset","NumberInputPageObject","TextInputPageObject","PhoneInputPageObject","DateInputPageObject","EmailInputPageObject","PasswordInputPageObject","SelectPageObject","$option","select","options","keepPreviouslySelected","PaginationPageObject","$pageSize","$select","$page","$input","$items","$prev","$next","DataTablePageObject","$col","$rows","$paginationFooter","$pagination","InputBuilderPageObject","$prefix","$affix","$suffix","CurrencyInputPageObject","ListPageObject","selectListbox","TextAreaPageObject","OptionPageObject","$description","$control","ChoicesPageObject","$options","option","value","find","FieldError","type","FieldRule","invalid","FieldPageObject","$inputBuilder","$textArea","$checkbox","$list","$choices","$errors","$rules","name","FormPageObject","$submit","$reset","$fields","field","submit","triggerEvent","reset","NavLinkPageObject","NavigationListPageObject","$titles","PagePageObject","$header","$title","$content","SectionedPagePageObject","PillButtonPageObject","PopoverPageObject","SectionPageObject","TabsPageObject","$tablist","$tab","$tabpanel","tab","t","TabValue","selectTab"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../src/test-support/page-objects/alert.ts","../../src/test-support/page-objects/icon.ts","../../src/test-support/page-objects/icon-button.ts","../../src/test-support/page-objects/menu.ts","../../src/test-support/page-objects/app-header.ts","../../src/test-support/page-objects/avatar.ts","../../src/test-support/page-objects/button.ts","../../src/test-support/page-objects/choice.ts","../../src/test-support/page-objects/input.ts","../../src/test-support/page-objects/select.ts","../../src/test-support/page-objects/pagination.ts","../../src/test-support/page-objects/data-table.ts","../../src/test-support/page-objects/input-builder.ts","../../src/test-support/page-objects/list.ts","../../src/test-support/page-objects/text-area.ts","../../src/test-support/page-objects/-private/choices.ts","../../src/test-support/page-objects/-private/field.ts","../../src/test-support/page-objects/form.ts","../../src/test-support/page-objects/-navigation.ts","../../src/test-support/page-objects/navigation-list.ts","../../src/test-support/page-objects/page.ts","../../src/test-support/page-objects/pill-button.ts","../../src/test-support/page-objects/popover.ts","../../src/test-support/page-objects/section.ts","../../src/test-support/page-objects/tabs.ts"],"sourcesContent":["import { PageObject, selector as sel } from 'fractal-page-object';\n\nimport type { ElementLike } from 'fractal-page-object';\n\nexport class AlertPageObject extends PageObject<\n HTMLButtonElement | HTMLAnchorElement | HTMLSpanElement\n> {\n static SELECTOR = '[data-test-feedback]';\n\n constructor(selector?: string, parent?: PageObject | ElementLike | null, index?: number | null) {\n super(selector ?? AlertPageObject.SELECTOR, parent, index);\n }\n\n get indicator(): string | null | undefined {\n return this.element?.getAttribute('data-indicator');\n }\n\n get importance(): string | null | undefined {\n return this.element?.getAttribute('data-importance');\n }\n\n $icon = sel<HTMLSpanElement>('[part=\"icon\"]');\n $title = sel<HTMLSpanElement>('[part=\"title\"]');\n $content = sel<HTMLSpanElement>('[part=\"content\"]');\n $actions = sel<HTMLSpanElement>('[part=\"actions\"]');\n}\n","import { PageObject, selector as sel } from 'fractal-page-object';\n\nimport type { ElementLike } from 'fractal-page-object';\n\nexport class IconPageObject extends PageObject<HTMLSpanElement> {\n static SELECTOR = '[data-test-icon]';\n\n constructor(selector?: string, parent?: PageObject | ElementLike | null, index?: number | null) {\n super(selector ?? IconPageObject.SELECTOR, parent, index);\n }\n\n $svg = sel<SVGSVGElement>('svg');\n // $svg = sel<HTMLElement>('svg');\n}\n","import { click } from '@ember/test-helpers';\n\nimport { PageObject, selector as sel } from 'fractal-page-object';\n\nimport { IconPageObject } from './icon.ts';\n\nimport type { ElementLike } from 'fractal-page-object';\n\nexport class IconButtonPageObject extends PageObject<\n HTMLButtonElement | HTMLAnchorElement | HTMLSpanElement\n> {\n static SELECTOR = '[data-test-icon-button]';\n\n constructor(selector?: string, parent?: PageObject | ElementLike | null, index?: number | null) {\n super(selector ?? IconButtonPageObject.SELECTOR, parent, index);\n }\n\n get intent(): string | null | undefined {\n return this.element?.getAttribute('data-intent');\n }\n\n get importance(): string | null | undefined {\n return this.element?.getAttribute('data-importance');\n }\n\n get spacing(): string | null | undefined {\n return this.element?.getAttribute('data-spacing');\n }\n\n async push() {\n if (this.element) {\n await click(this.element);\n }\n }\n\n $icon = sel('[data-test-icon-button=\"icon\"]', IconPageObject);\n}\n","import { globalSelector, PageObject, selector as sel } from 'fractal-page-object';\n\nimport type { Menu, MenuElement, MenuItem, MenuItemElement } from './-menu.ts';\nimport type { ElementLike } from 'fractal-page-object';\n\nexport class MenuItemPageObject extends PageObject<MenuItemElement> implements MenuItem {\n static SELECTOR = '[role=\"menuitem\"]';\n\n constructor(selector?: string, parent?: PageObject | ElementLike | null, index?: number | null) {\n super(selector ?? MenuItemPageObject.SELECTOR, parent, index);\n }\n\n get disabled() {\n return Boolean(this.element?.hasAttribute('aria-disabled'));\n }\n\n get expanded(): boolean {\n return Boolean(this.menu?.element?.matches(':popover-open'));\n }\n\n hasMenu() {\n return this.element?.getAttribute('aria-haspopup') === 'menu';\n }\n\n protected get menuId() {\n return this.element?.getAttribute('popovertarget');\n }\n\n protected get menu(): Menu | undefined {\n return this.menuId\n ? // eslint-disable-next-line @typescript-eslint/no-use-before-define\n globalSelector<MenuElement, Menu>(`#${this.menuId}`, MenuPageObject)\n : undefined;\n }\n\n get $menu() {\n return this.menu;\n }\n}\n\nexport class MenuPageObject extends PageObject<MenuElement> implements Menu {\n static SELECTOR = '[data-test-menu]';\n\n constructor(selector?: string, parent?: PageObject | ElementLike | null, index?: number | null) {\n super(selector ?? MenuPageObject.SELECTOR, parent, index);\n }\n\n get control() {\n return this.element as HTMLDivElement;\n }\n\n $item = sel<MenuItemElement, MenuItem>(MenuItemPageObject.SELECTOR, MenuItemPageObject);\n}\n","import { PageObject, selector as sel } from 'fractal-page-object';\n\nimport { IconButtonPageObject } from './icon-button.ts';\nimport { MenuItemPageObject } from './menu.ts';\n\nimport type { Menu, MenuItem, MenuItemElement } from './-menu.ts';\nimport type { ElementLike } from 'fractal-page-object';\n\nclass AppNavPageObject extends PageObject<HTMLElement> implements Menu<HTMLElement> {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n $item = sel<MenuItemElement, MenuItem>(NavItemPageObject.SELECTOR, NavItemPageObject);\n}\n\nexport class NavItemPageObject extends MenuItemPageObject implements MenuItem {\n static SELECTOR = '[part=\"item\"]';\n\n constructor(selector?: string, parent?: PageObject | ElementLike | null, index?: number | null) {\n super(selector ?? NavItemPageObject.SELECTOR, parent, index);\n }\n\n hasMenu() {\n return super.hasMenu() || this.element?.tagName.toLowerCase() === 'summary';\n }\n\n isPopupNavItem() {\n return (\n this.element?.tagName.toLowerCase() === 'summary' ||\n this.element?.parentElement?.tagName === 'details'\n );\n }\n\n get expanded() {\n return Boolean(\n this.isPopupNavItem()\n ? (this.element?.parentElement as HTMLElement).matches('[open]')\n : super.expanded\n );\n }\n\n get $menu(): Menu | undefined {\n if (this.isPopupNavItem()) {\n return sel<HTMLElement, Menu>('+ div', AppNavPageObject);\n }\n\n return this.menu;\n }\n}\n\nexport class AppHeaderPageObject extends PageObject<HTMLElement> {\n static SELECTOR = '[data-test-app-header]';\n\n constructor(selector?: string, parent?: PageObject | ElementLike | null, index?: number | null) {\n super(selector ?? AppHeaderPageObject.SELECTOR, parent, index);\n }\n\n get #prefix() {\n if (this.$menu.element) {\n return '[part=\"menu\"]';\n }\n\n return '';\n }\n\n get $brand() {\n return sel<HTMLDivElement>(`${this.#prefix} [part=\"brand\"]`);\n }\n\n get $nav() {\n return sel(`${this.#prefix} nav`, AppNavPageObject);\n }\n\n get $aux() {\n return sel(`${this.#prefix} [part=\"aux\"]`, AppNavPageObject);\n }\n\n $menu = sel(\n '[part=\"menu\"]',\n class extends PageObject<HTMLSpanElement> {\n $toggle = sel('[data-test-toggle]', IconButtonPageObject);\n\n $popover = sel(\n '[popover]',\n class extends PageObject<HTMLElement> {\n get expanded() {\n return Boolean(this.element?.matches(':popover-open'));\n }\n }\n );\n }\n );\n}\n","import { PageObject, selector as sel } from 'fractal-page-object';\n\nimport type { ElementLike } from 'fractal-page-object';\n\nexport class AvatarPageObject extends PageObject<HTMLSpanElement> {\n static SELECTOR = '[data-test-avatar]';\n\n constructor(selector?: string, parent?: PageObject | ElementLike | null, index?: number | null) {\n super(selector ?? AvatarPageObject.SELECTOR, parent, index);\n }\n\n $svg = sel<SVGSVGElement>('svg');\n $img = sel<HTMLImageElement>('img');\n}\n","import { click } from '@ember/test-helpers';\n\nimport { PageObject, selector as sel } from 'fractal-page-object';\n\nimport type { ElementLike } from 'fractal-page-object';\n\nexport class ButtonPageObject extends PageObject<\n HTMLButtonElement | HTMLAnchorElement | HTMLSpanElement\n> {\n static SELECTOR = '[data-test-button]';\n\n constructor(selector?: string, parent?: PageObject | ElementLike | null, index?: number | null) {\n super(selector ?? ButtonPageObject.SELECTOR, parent, index);\n }\n\n get intent(): string | null | undefined {\n return this.element?.getAttribute('data-intent');\n }\n\n get importance(): string | null | undefined {\n return this.element?.getAttribute('data-importance');\n }\n\n get spacing(): string | null | undefined {\n return this.element?.getAttribute('data-spacing');\n }\n\n $before = sel<HTMLSpanElement>('[data-test-button=\"before\"]');\n $label = sel<HTMLSpanElement>('[data-test-button=\"label\"]');\n $after = sel<HTMLSpanElement>('[data-test-button=\"after\"]');\n\n async push() {\n if (this.element) {\n await click(this.element);\n }\n }\n}\n","import { PageObject } from 'fractal-page-object';\n\nimport type { Input } from './input.ts';\nimport type { ElementLike } from 'fractal-page-object';\n\nclass ChoicePageObject extends PageObject<HTMLInputElement> implements Input {\n static SELECTOR = '[data-test-choice]';\n\n constructor(selector?: string, parent?: PageObject | ElementLike | null, index?: number | null) {\n super(selector ?? ChoicePageObject.SELECTOR, parent, index);\n }\n\n get control() {\n return this.element as HTMLInputElement;\n }\n}\n\nexport const RadioPageObject = ChoicePageObject;\nexport const CheckboxPageObject = ChoicePageObject;\n","import { PageObject } from 'fractal-page-object';\n\nimport type { ElementLike } from 'fractal-page-object';\n\nexport interface Input extends PageObject {\n control: HTMLInputElement;\n}\n\nexport class InputPageObject extends PageObject<HTMLInputElement> implements Input {\n static SELECTOR = '[data-test-input]';\n\n constructor(selector?: string, parent?: PageObject | ElementLike | null, index?: number | null) {\n super(selector ?? InputPageObject.SELECTOR, parent, index);\n }\n\n get control() {\n return this.element as HTMLInputElement;\n }\n\n get spacing(): string | null | undefined {\n return this.element?.getAttribute('data-spacing');\n }\n}\n\nexport class RangeInputPageObject extends InputPageObject {\n get orientation(): string | undefined {\n return this.control.dataset.orientation;\n }\n}\n\nexport const NumberInputPageObject = InputPageObject;\nexport const TextInputPageObject = InputPageObject;\nexport const PhoneInputPageObject = InputPageObject;\nexport const DateInputPageObject = InputPageObject;\nexport const EmailInputPageObject = InputPageObject;\nexport const PasswordInputPageObject = InputPageObject;\n","import { select } from '@ember/test-helpers';\n\nimport { PageObject, selector as sel } from 'fractal-page-object';\n\nimport type { Target } from '@ember/test-helpers';\nimport type { ElementLike } from 'fractal-page-object';\n\nexport class SelectPageObject extends PageObject<HTMLSelectElement> {\n static SELECTOR = '[data-test-select]';\n\n constructor(selector?: string, parent?: PageObject | ElementLike | null, index?: number | null) {\n super(selector ?? SelectPageObject.SELECTOR, parent, index);\n }\n\n get spacing(): string | null | undefined {\n return this.element?.getAttribute('data-spacing');\n }\n\n get control() {\n return this.element as HTMLSelectElement;\n }\n\n $option = sel<HTMLOptionElement>('option');\n\n async select(options: string | string[], keepPreviouslySelected?: boolean) {\n await select(this.element as Target, options, keepPreviouslySelected);\n }\n}\n","import { PageObject, selector as sel } from 'fractal-page-object';\n\nimport { IconButtonPageObject } from './icon-button.ts';\nimport { NumberInputPageObject } from './input.ts';\nimport { SelectPageObject } from './select.ts';\n\nimport type { ElementLike } from 'fractal-page-object';\n\nexport class PaginationPageObject extends PageObject<HTMLDivElement> {\n static SELECTOR = '[data-test-pagination]';\n\n constructor(selector?: string, parent?: PageObject | ElementLike | null, index?: number | null) {\n super(selector ?? PaginationPageObject.SELECTOR, parent, index);\n }\n\n $pageSize = sel(\n '[part=\"page-size\"]',\n class extends PageObject<HTMLElement> {\n $select = sel(SelectPageObject.SELECTOR, SelectPageObject);\n }\n );\n\n $page = sel(\n '[part=\"page\"]',\n class extends PageObject<HTMLElement> {\n $select = sel(SelectPageObject.SELECTOR, SelectPageObject);\n $input = sel(NumberInputPageObject.SELECTOR, NumberInputPageObject);\n }\n );\n\n $items = sel<HTMLElement>('[part=\"items\"]');\n\n $prev = sel('[data-test-prev]', IconButtonPageObject);\n $next = sel('[data-test-next]', IconButtonPageObject);\n}\n","import { PageObject, selector as sel } from 'fractal-page-object';\n\nimport { PaginationPageObject } from './pagination.ts';\n\nimport type { ElementLike } from 'fractal-page-object';\n\nexport class DataTablePageObject extends PageObject<HTMLSpanElement> {\n static SELECTOR = '[data-test-data-table]';\n\n constructor(selector?: string, parent?: PageObject | ElementLike | null, index?: number | null) {\n super(selector ?? DataTablePageObject.SELECTOR, parent, index);\n }\n\n $col = sel<HTMLTableCellElement>('thead th');\n $rows = sel<HTMLTableRowElement>('tbody tr');\n $paginationFooter = sel(\n '[data-pagination]',\n class extends PageObject<HTMLTableCellElement> {\n $pagination = sel(PaginationPageObject.SELECTOR, PaginationPageObject);\n }\n );\n}\n","import { PageObject, selector as sel } from 'fractal-page-object';\n\nimport { InputPageObject } from './input.ts';\n\nimport type { Input } from './input.ts';\nimport type { ElementLike } from 'fractal-page-object';\n\nexport class InputBuilderPageObject extends PageObject<HTMLInputElement> implements Input {\n static SELECTOR = '[data-test-input-builder]';\n\n constructor(selector?: string, parent?: PageObject | ElementLike | null, index?: number | null) {\n super(selector ?? InputBuilderPageObject.SELECTOR, parent, index);\n }\n\n $prefix = sel<HTMLSpanElement>('[data-test-input-builder=\"prefix\"]');\n $affix = sel<HTMLSpanElement>('[data-test-input-builder=\"affix\"]');\n $suffix = sel<HTMLSpanElement>('[data-test-input-builder=\"suffix\"]');\n $input = sel(InputPageObject.SELECTOR, InputPageObject);\n\n get control() {\n return this.$input.element as HTMLInputElement;\n }\n}\n\nexport const CurrencyInputPageObject = InputBuilderPageObject;\n","import { PageObject, selector as sel } from 'fractal-page-object';\n\nimport { selectListbox } from 'ember-aria-voyager/test-support';\n\nimport type { Target } from '@ember/test-helpers';\nimport type { ElementLike } from 'fractal-page-object';\n\nexport class ListPageObject extends PageObject<HTMLDivElement> {\n static SELECTOR = '[data-test-list]';\n\n constructor(selector?: string, parent?: PageObject | ElementLike | null, index?: number | null) {\n super(selector ?? ListPageObject.SELECTOR, parent, index);\n }\n\n get control() {\n return this.element as HTMLDivElement;\n }\n\n $option = sel<HTMLOptionElement>('[role=\"option\"]');\n\n async select(options: string | string[]) {\n await selectListbox(this.element as Target, options);\n }\n}\n","import { PageObject } from 'fractal-page-object';\n\nimport type { Input } from './input.ts';\nimport type { ElementLike } from 'fractal-page-object';\n\nexport class TextAreaPageObject extends PageObject<HTMLInputElement> implements Input {\n static SELECTOR = '[data-test-textarea]';\n\n constructor(selector?: string, parent?: PageObject | ElementLike | null, index?: number | null) {\n super(selector ?? TextAreaPageObject.SELECTOR, parent, index);\n }\n\n get control() {\n return this.element as HTMLInputElement;\n }\n}\n","import { PageObject, selector as sel } from 'fractal-page-object';\n\nimport type { ElementLike } from 'fractal-page-object';\n\nexport class OptionPageObject extends PageObject<HTMLDivElement> {\n $label = sel<HTMLLabelElement | HTMLLegendElement>('[data-test-label]');\n $description = sel<HTMLParagraphElement>('[data-test-description]');\n $control = sel<HTMLInputElement>('input');\n}\n\nexport class ChoicesPageObject extends PageObject<HTMLDivElement | HTMLFieldSetElement> {\n static SELECTOR = '[data-test-choices]';\n\n constructor(selector?: string, parent?: PageObject | ElementLike | null, index?: number | null) {\n super(selector ?? ChoicesPageObject.SELECTOR, parent, index);\n }\n\n $options = sel('[data-test-option]', OptionPageObject);\n\n option(value: string) {\n return this.$options.find(\n (option) => option.$control.element?.value === value\n ) as OptionPageObject;\n }\n}\n","import { PageObject, selector as sel } from 'fractal-page-object';\n\nimport { CheckboxPageObject } from '../choice.ts';\nimport { InputPageObject } from '../input.ts';\nimport { InputBuilderPageObject } from '../input-builder.ts';\nimport { ListPageObject } from '../list.ts';\nimport { SelectPageObject } from '../select.ts';\nimport { TextAreaPageObject } from '../text-area.ts';\nimport { ChoicesPageObject } from './choices.ts';\n\nimport type { RangeInputPageObject } from '../input';\nimport type { ElementLike } from 'fractal-page-object';\n\nexport class FieldError extends PageObject<HTMLDivElement> {\n get type() {\n return this.element?.getAttribute('data-test-error-type');\n }\n\n get value() {\n return this.element?.getAttribute('data-test-error-value');\n }\n}\n\nexport class FieldRule extends PageObject<HTMLParagraphElement> {\n get invalid() {\n return Boolean(this.element?.getAttribute('data-test-rule-invalid'));\n }\n}\n\nexport class FieldPageObject extends PageObject<HTMLDivElement | HTMLFieldSetElement> {\n static SELECTOR = '[data-test-field]';\n\n constructor(selector?: string, parent?: PageObject | ElementLike | null, index?: number | null) {\n super(selector ?? FieldPageObject.SELECTOR, parent, index);\n }\n\n $label = sel<HTMLLabelElement | HTMLLegendElement>('[data-test-label]');\n $description = sel<HTMLParagraphElement>('[data-test-description]');\n // $control = sel<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>(\n // 'input,select,textarea'\n // );\n\n // controls\n\n private $input = sel(InputPageObject.SELECTOR, InputPageObject);\n private $inputBuilder = sel(InputBuilderPageObject.SELECTOR, InputBuilderPageObject);\n private $select = sel(SelectPageObject.SELECTOR, SelectPageObject);\n private $textArea = sel(TextAreaPageObject.SELECTOR, TextAreaPageObject);\n private $checkbox = sel(CheckboxPageObject.SELECTOR, CheckboxPageObject);\n private $list = sel(ListPageObject.SELECTOR, ListPageObject);\n\n $choices = sel(ChoicesPageObject.SELECTOR, ChoicesPageObject);\n $errors = sel('[data-test-error]', FieldError);\n $rules = sel('[data-test-rule]', FieldRule);\n\n get $control():\n | InputPageObject\n | RangeInputPageObject\n | InputBuilderPageObject\n | SelectPageObject\n | TextAreaPageObject\n | ListPageObject {\n if (this.$inputBuilder.element) {\n return this.$inputBuilder;\n }\n\n if (this.$checkbox.element) {\n return this.$checkbox;\n }\n\n if (this.$input.element?.type === 'range') {\n return this.$input as RangeInputPageObject;\n }\n\n if (this.$input.element) {\n return this.$input;\n }\n\n if (this.$select.element) {\n return this.$select;\n }\n\n if (this.$textArea.element) {\n return this.$textArea;\n }\n\n if (this.$list.element) {\n return this.$list;\n }\n\n return this.$input; // @TODO bad fallback for now\n }\n\n get name() {\n return this.element?.getAttribute('data-test-field');\n }\n}\n","import { triggerEvent } from '@ember/test-helpers';\n\nimport { PageObject, selector as sel } from 'fractal-page-object';\n\nimport { FieldPageObject } from './-private/field.ts';\nimport { ButtonPageObject } from './button.ts';\n\nimport type { ElementLike } from 'fractal-page-object';\n\nexport type { OptionPageObject } from './-private/choices.ts';\nexport type { FieldError } from './-private/field.ts';\n\nexport class FormPageObject extends PageObject<HTMLFormElement> {\n static SELECTOR = '[data-test-form]';\n\n constructor(selector?: string, parent?: PageObject | ElementLike | null, index?: number | null) {\n super(selector ?? FormPageObject.SELECTOR, parent, index);\n }\n\n $submit = sel('button[type=\"submit\"]', ButtonPageObject);\n $reset = sel('button[type=\"reset\"]', ButtonPageObject);\n\n $fields = sel(FieldPageObject.SELECTOR, FieldPageObject);\n\n field(name: string) {\n return this.$fields.find((field) => field.name === name) as FieldPageObject;\n }\n\n async submit() {\n await triggerEvent(this.element as HTMLFormElement, 'submit');\n }\n\n async reset() {\n await triggerEvent(this.element as HTMLFormElement, 'reset');\n }\n}\n","import { PageObject, selector as sel } from 'fractal-page-object';\n\nimport { IconPageObject } from './icon.ts';\n\nimport type { ElementLike } from 'fractal-page-object';\n\nexport class NavLinkPageObject extends PageObject<\n HTMLButtonElement | HTMLAnchorElement | HTMLSpanElement\n> {\n static SELECTOR = '[part=\"item\"]';\n\n constructor(selector?: string, parent?: PageObject | ElementLike | null, index?: number | null) {\n super(selector ?? NavLinkPageObject.SELECTOR, parent, index);\n }\n\n $icon = sel(IconPageObject.SELECTOR, IconPageObject);\n}\n","import { PageObject, selector as sel } from 'fractal-page-object';\n\nimport { NavLinkPageObject } from './-navigation.ts';\n\nimport type { ElementLike } from 'fractal-page-object';\n\nexport class NavigationListPageObject extends PageObject<HTMLDivElement> {\n static SELECTOR = '[data-test-navigation-list]';\n\n constructor(selector?: string, parent?: PageObject | ElementLike | null, index?: number | null) {\n super(selector ?? NavigationListPageObject.SELECTOR, parent, index);\n }\n\n $items = sel('[part=\"item\"]', NavLinkPageObject);\n $titles = sel<HTMLElement>('[part=\"title\"]');\n}\n","import { PageObject, selector as sel } from 'fractal-page-object';\n\nimport type { ElementLike } from 'fractal-page-object';\n\nexport class PagePageObject extends PageObject<\n HTMLButtonElement | HTMLAnchorElement | HTMLSpanElement\n> {\n static SELECTOR = '[data-test-page]';\n\n constructor(selector?: string, parent?: PageObject | ElementLike | null, index?: number | null) {\n super(selector ?? PagePageObject.SELECTOR, parent, index);\n }\n\n $header = sel<HTMLElement>('header');\n\n $title = sel<HTMLHeadingElement>('header > h1');\n $description = sel<HTMLParagraphElement>('header > p');\n\n $content = sel<HTMLElement>('[part=\"content\"]');\n}\n\nexport class SectionedPagePageObject extends PagePageObject {\n $nav = sel<HTMLElement>('header > nav');\n}\n","import { click } from '@ember/test-helpers';\n\nimport { PageObject, selector as sel } from 'fractal-page-object';\n\nimport type { ElementLike } from 'fractal-page-object';\n\nexport class PillButtonPageObject extends PageObject<\n HTMLButtonElement | HTMLAnchorElement | HTMLSpanElement\n> {\n static SELECTOR = '[data-test-pill-button]';\n\n constructor(selector?: string, parent?: PageObject | ElementLike | null, index?: number | null) {\n super(selector ?? PillButtonPageObject.SELECTOR, parent, index);\n }\n\n get intent(): string | null | undefined {\n return this.element?.getAttribute('data-intent');\n }\n\n get importance(): string | null | undefined {\n return this.element?.getAttribute('data-importance');\n }\n\n get spacing(): string | null | undefined {\n return this.element?.getAttribute('data-spacing');\n }\n\n $before = sel<HTMLSpanElement>('[data-test-button=\"before\"]');\n $label = sel<HTMLSpanElement>('[data-test-button=\"label\"]');\n $after = sel<HTMLSpanElement>('[data-test-button=\"after\"]');\n\n async push() {\n if (this.element) {\n await click(this.element);\n }\n }\n}\n","import { PageObject } from 'fractal-page-object';\n\nimport type { ElementLike } from 'fractal-page-object';\n\nexport class PopoverPageObject extends PageObject<\n HTMLButtonElement | HTMLAnchorElement | HTMLSpanElement\n> {\n static SELECTOR = '[data-test-popover]';\n\n constructor(selector?: string, parent?: PageObject | ElementLike | null, index?: number | null) {\n super(selector ?? PopoverPageObject.SELECTOR, parent, index);\n }\n}\n","import { PageObject, selector as sel } from 'fractal-page-object';\n\nimport type { ElementLike } from 'fractal-page-object';\n\nexport class SectionPageObject extends PageObject<\n HTMLButtonElement | HTMLAnchorElement | HTMLSpanElement\n> {\n static SELECTOR = '[data-test-section]';\n\n constructor(selector?: string, parent?: PageObject | ElementLike | null, index?: number | null) {\n super(selector ?? SectionPageObject.SELECTOR, parent, index);\n }\n\n $header = sel('[data-test-section=\"header\"]');\n $title = sel('[data-test-section=\"title\"]');\n}\n","import { PageObject, selector as sel } from 'fractal-page-object';\n\nimport { selectTab } from 'ember-aria-voyager/test-support';\n\nimport { TabValue } from '../../components/controls/tabs.gts';\n\nimport type { ElementLike } from 'fractal-page-object';\n\nexport class TabsPageObject extends PageObject<HTMLDivElement> {\n static SELECTOR = '[data-test-tabs]';\n\n constructor(selector?: string, parent?: PageObject | ElementLike | null, index?: number | null) {\n super(selector ?? TabsPageObject.SELECTOR, parent, index);\n }\n\n get control() {\n return this.$tablist.element as HTMLDivElement;\n }\n\n $tablist = sel<HTMLDivElement>('[role=\"tablist\"]');\n $tab = sel<HTMLButtonElement>('[role=\"tab\"]');\n $tabpanel = sel<HTMLElement>('[role=\"tabpanel\"]');\n\n async select(value: unknown) {\n // @ts-expect-error this is internal API\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const tab = this.$tab.find((t) => t.element[TabValue] === value);\n\n if (tab) {\n await selectTab(tab);\n }\n }\n}\n"],"names":["AlertPageObject","PageObject","SELECTOR","constructor","selector","parent","index","indicator","element","getAttribute","importance","$icon","sel","$title","$content","$actions","IconPageObject","$svg","IconButtonPageObject","intent","spacing","push","click","MenuItemPageObject","disabled","Boolean","hasAttribute","expanded","menu","matches","hasMenu","menuId","globalSelector","MenuPageObject","undefined","$menu","control","$item","AppNavPageObject","NavItemPageObject","tagName","toLowerCase","isPopupNavItem","parentElement","AppHeaderPageObject","#prefix","$brand","$nav","$aux","$toggle","$popover","AvatarPageObject","$img","ButtonPageObject","$before","$label","$after","ChoicePageObject","RadioPageObject","CheckboxPageObject","InputPageObject","RangeInputPageObject","orientation","dataset","NumberInputPageObject","TextInputPageObject","PhoneInputPageObject","DateInputPageObject","EmailInputPageObject","PasswordInputPageObject","SelectPageObject","$option","select","options","keepPreviouslySelected","PaginationPageObject","$pageSize","$select","$page","$input","$items","$prev","$next","DataTablePageObject","$col","$rows","$paginationFooter","$pagination","InputBuilderPageObject","$prefix","$affix","$suffix","CurrencyInputPageObject","ListPageObject","selectListbox","TextAreaPageObject","OptionPageObject","$description","$control","ChoicesPageObject","$options","option","value","find","FieldError","type","FieldRule","invalid","FieldPageObject","$inputBuilder","$textArea","$checkbox","$list","$choices","$errors","$rules","name","FormPageObject","$submit","$reset","$fields","field","submit","triggerEvent","reset","NavLinkPageObject","NavigationListPageObject","$titles","PagePageObject","$header","SectionedPagePageObject","PillButtonPageObject","PopoverPageObject","SectionPageObject","TabsPageObject","$tablist","$tab","$tabpanel","tab","t","TabValue","selectTab"],"mappings":"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"}
@@ -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 TextArea = setComponentTemplate(precompileTemplate("\n <textarea class=\"textarea\" type=\"text\" disabled={{@disabled}} data-spacing={{@spacing}} data-test-textarea {{on \"input\" (pick \"target.value\" @update) capture=true}} ...attributes>{{@value}}</textarea>\n", {
7
+ const TextArea = setComponentTemplate(precompileTemplate("\n <textarea class=\"textarea\" disabled={{@disabled}} data-spacing={{@spacing}} data-test-textarea {{on \"input\" (pick \"target.value\" @update) capture=true}} ...attributes>{{@value}}</textarea>\n", {
8
8
  strictMode: true,
9
9
  scope: () => ({
10
10
  on,
@@ -13,4 +13,4 @@ const TextArea = setComponentTemplate(precompileTemplate("\n <textarea class=\"
13
13
  }), templateOnly());
14
14
 
15
15
  export { TextArea as T };
16
- //# sourceMappingURL=text-area-CLRp3q_-.js.map
16
+ //# sourceMappingURL=text-area-BsDD1dpV.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-area-BsDD1dpV.js","sources":["../src/components/controls/text-area.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 TextAreaSignature {\n Element: HTMLTextAreaElement;\n Args: InputArgs<string>;\n}\n\nexport const TextArea: TOC<TextAreaSignature> = <template>\n <textarea\n class=\"textarea\"\n disabled={{@disabled}}\n data-spacing={{@spacing}}\n data-test-textarea\n {{on \"input\" (pick \"target.value\" @update) capture=true}}\n ...attributes\n >{{@value}}</textarea>\n</template>;\n"],"names":["TextArea","setComponentTemplate","precompileTemplate","strictMode","scope","on","pick","templateOnly"],"mappings":";;;;;;MAYaA,QAAc,GAAAC,oBAAA,CAAqBC,kBAAA,CAAA,0MAAA,EAShD;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,EAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hokulea/ember",
3
- "version": "0.11.0",
3
+ "version": "0.12.0",
4
4
  "description": "Hokulea Design System for Ember",
5
5
  "license": "MIT",
6
6
  "keywords": [
@@ -45,13 +45,14 @@
45
45
  "dependencies": {
46
46
  "@embroider/addon-shim": "^1.10.0",
47
47
  "@floating-ui/dom": "^1.7.1",
48
- "@hokulea/ember-pahu": "^0.0.1",
48
+ "@hokulea/ember-pahu": "^0.0.2",
49
49
  "decorator-transforms": "^2.3.0",
50
50
  "ember-aria-voyager": "^0.2.4",
51
51
  "ember-stargate": "^1.0.1",
52
52
  "ember-strict-application-resolver": "^0.1.0",
53
53
  "tracked-built-ins": "^4.0.0",
54
- "@hokulea/core": "0.8.0"
54
+ "@hokulea/core": "0.9.0",
55
+ "@hokulea/tokens": "0.2.0"
55
56
  },
56
57
  "peerDependencies": {
57
58
  "@ember/test-helpers": "^5.0.0",
@@ -80,12 +81,12 @@
80
81
  "@ember/render-modifiers": "^3.0.0",
81
82
  "@ember/test-helpers": "5.4.0",
82
83
  "@embroider/addon-dev": "^8.1.0",
83
- "@embroider/compat": "^4.1.8",
84
- "@embroider/core": "^4.2.5",
85
- "@embroider/macros": "^1.19.2",
86
- "@embroider/vite": "^1.3.6",
84
+ "@embroider/compat": "^4.1.10",
85
+ "@embroider/core": "^4.2.7",
86
+ "@embroider/macros": "^1.19.4",
87
+ "@embroider/vite": "^1.4.1",
87
88
  "@glimmer/component": "^2.0.0",
88
- "@glint/ember-tsc": "^1.0.4",
89
+ "@glint/ember-tsc": "^1.0.7",
89
90
  "@glint/template": "^1.6.2",
90
91
  "@gossi/config-eslint": "^1.3.1",
91
92
  "@gossi/config-prettier": "^1.1.1",
@@ -110,7 +111,7 @@
110
111
  "ember-qunit": "^9.0.4",
111
112
  "ember-scoped-css": "^1.1.0",
112
113
  "ember-set-helper": "^3.1.0",
113
- "ember-source": "6.8.0",
114
+ "ember-source": "6.8.1",
114
115
  "ember-template-imports": "4.3.0",
115
116
  "ember-template-lint": "^7.9.3",
116
117
  "eslint": "^9.38.0",
@@ -132,9 +133,8 @@
132
133
  "unplugin-icons": "^22.5.0",
133
134
  "valibot": "^1.1.0",
134
135
  "vite": "^7.1.12",
135
- "@hokulea/theme-moana": "0.3.0",
136
- "@hokulea/tokens": "0.1.2",
137
- "@hokulea/core": "0.8.0"
136
+ "@hokulea/theme-moana": "0.4.0",
137
+ "@hokulea/core": "0.9.0"
138
138
  },
139
139
  "ember": {
140
140
  "edition": "octane"
@@ -147,6 +147,7 @@
147
147
  "type": "addon",
148
148
  "main": "addon-main.cjs",
149
149
  "app-js": {
150
+ "./components/alert.js": "./dist/_app_/components/alert.js",
150
151
  "./components/app-header.js": "./dist/_app_/components/app-header.js",
151
152
  "./components/avatar.js": "./dist/_app_/components/avatar.js",
152
153
  "./components/box.js": "./dist/_app_/components/box.js",
@@ -1 +0,0 @@
1
- {"version":3,"file":"text-area-CLRp3q_-.js","sources":["../src/components/controls/text-area.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 TextAreaSignature {\n Element: HTMLTextAreaElement;\n Args: InputArgs<string>;\n}\n\nexport const TextArea: TOC<TextAreaSignature> = <template>\n <textarea\n class=\"textarea\"\n type=\"text\"\n disabled={{@disabled}}\n data-spacing={{@spacing}}\n data-test-textarea\n {{on \"input\" (pick \"target.value\" @update) capture=true}}\n ...attributes\n >{{@value}}</textarea>\n</template>;\n"],"names":["TextArea","setComponentTemplate","precompileTemplate","strictMode","scope","on","pick","templateOnly"],"mappings":";;;;;;MAYaA,QAAc,GAAAC,oBAAA,CAAqBC,kBAAA,CAAA,wNAAA,EAUhD;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,EAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}