@texaryn/vue 0.3.3 → 0.4.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,53 @@
1
1
  # @texaryn/vue
2
2
 
3
+ ## 0.4.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 3f19d2c: `ErrorSummary` renders a jump-linked list of the runtime's visible errors,
8
+ placed by the application above `FormRoot` the way React's is. Each link
9
+ targets the input the renderer mounted, inside the namespace
10
+ `provideFormRuntime` opened. It is not a live region: the fields already
11
+ announce their own errors.
12
+ - 191787c: `provideFormRuntime(runtime, { messages })` takes a whole `FormMessages` set as
13
+ a value, a ref or a getter, and every built-in widget renders from it.
14
+ `useFormMessages()` returns it as a computed for a custom widget, and
15
+ `FieldWidget` carries it as `messages`.
16
+
17
+ Removed: `removeActionName`, `moveUpActionName` and `addActionName`, for the
18
+ reason given for the React binding: a helper that ignores the configuration
19
+ leaves one widget in English while the form translates. Migration:
20
+
21
+ before
22
+
23
+ removeActionName(position, itemTitle, arrayTitle)
24
+
25
+ after
26
+
27
+ const messages = useFormMessages()
28
+ messages.value.removeItem({ position, itemTitle, containerTitle: arrayTitle }).accessibleName
29
+ - aa5dd6f: `ErrorSummary` is a named group with an `h2` heading and takes focus once a
30
+ failed submit settles, once per attempt; a successful submit, a validation
31
+ exception and blur or change validation move nothing. `:focus="false"` keeps
32
+ it passive, for an application that renders one runtime twice and wants one
33
+ focusing summary. The heading and the text after each link come from
34
+ `errorSummaryHeading` and `errorSummaryDetail` in `FormMessages`.
35
+
36
+ ### Patch Changes
37
+
38
+ - Updated dependencies [191787c]
39
+ - Updated dependencies [aa5dd6f]
40
+ - Updated dependencies [3f19d2c]
41
+ - @texaryn/core@0.12.0
42
+
43
+ ## 0.3.4
44
+
45
+ ### Patch Changes
46
+
47
+ - Updated dependencies [8f2a2cd]
48
+ - Updated dependencies [20d977f]
49
+ - @texaryn/core@0.11.0
50
+
3
51
  ## 0.3.3
4
52
 
5
53
  ### Patch Changes
package/README.md CHANGED
@@ -18,7 +18,7 @@ pnpm add @texaryn/core @texaryn/schema-json @texaryn/vue vue
18
18
  ```vue
19
19
  <script setup lang="ts">
20
20
  import { createJsonSchemaAdapter } from '@texaryn/schema-json'
21
- import { FormRoot, useForm, provideFormRuntime, createDefaultRegistry } from '@texaryn/vue'
21
+ import { ErrorSummary, FormRoot, useForm, provideFormRuntime, createDefaultRegistry } from '@texaryn/vue'
22
22
 
23
23
  const schema = {
24
24
  $schema: 'https://json-schema.org/draft/2020-12/schema',
@@ -35,11 +35,24 @@ const registry = createDefaultRegistry()
35
35
  </script>
36
36
 
37
37
  <template>
38
- <!-- FormRoot has to be a descendant, not this component itself -->
38
+ <!-- Both have to be descendants, not this component itself -->
39
+ <ErrorSummary />
39
40
  <FormRoot :registry="registry" />
40
41
  </template>
41
42
  ```
42
43
 
44
+ `provideFormRuntime(runtime, { messages })` takes a whole `FormMessages` set
45
+ from `@texaryn/core`, as a value, a ref or a getter, and replaces every word
46
+ the built-in widgets invent. Custom widgets read it with `useFormMessages()`,
47
+ which returns a computed.
48
+
49
+ `ErrorSummary` renders a named group, headed by an `h2`, listing every visible
50
+ error with a link to the input the renderer mounted, `#<prefix>-<nodeId>-input`,
51
+ and nothing while there are none. It takes focus once a failed submit settles,
52
+ once per attempt; pass `:focus="false"` on all but one summary when one
53
+ runtime is rendered twice. It is not a live region: the fields already
54
+ announce their own errors, and the focus move is what speaks the heading.
55
+
43
56
  `useForm` creates the runtime and ties it to the calling scope. Providing is a
44
57
  separate call rather than a side effect of construction: React's equivalent is
45
58
  `<FormProvider>` in the template, and Vue's is a setup call.
@@ -0,0 +1,19 @@
1
+ /** Not a live region: the fields announce their own errors, so the focus move after a failed submit is what speaks the heading. */
2
+ export declare const ErrorSummary: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
3
+ /** Off for all but one summary when one runtime is rendered twice. */
4
+ focus: {
5
+ type: BooleanConstructor;
6
+ default: boolean;
7
+ };
8
+ }>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
9
+ [key: string]: any;
10
+ }> | null, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
11
+ /** Off for all but one summary when one runtime is rendered twice. */
12
+ focus: {
13
+ type: BooleanConstructor;
14
+ default: boolean;
15
+ };
16
+ }>> & Readonly<{}>, {
17
+ focus: boolean;
18
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
19
+ //# sourceMappingURL=ErrorSummary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ErrorSummary.d.ts","sourceRoot":"","sources":["../../src/components/ErrorSummary.ts"],"names":[],"mappings":"AAUA,mIAAmI;AACnI,eAAO,MAAM,YAAY;IAGrB,sEAAsE;;;;;;;;IAAtE,sEAAsE;;;;;;;4EAsCxE,CAAA"}
@@ -0,0 +1,41 @@
1
+ import { defineComponent, h, ref, watch } from 'vue';
2
+ import { createFailedSubmitTracker, visibleErrorLabel, visibleErrorMessages } from '@texaryn/core';
3
+ import { useFormMessages, useFormRuntime } from '../context.js';
4
+ import { makeId } from '../field-props.js';
5
+ import { useFormIdPrefix } from '../id-prefix.js';
6
+ import { useStore } from '../use-store.js';
7
+ const NONE = [];
8
+ /** Not a live region: the fields announce their own errors, so the focus move after a failed submit is what speaks the heading. */
9
+ export const ErrorSummary = defineComponent({
10
+ name: 'ErrorSummary',
11
+ props: {
12
+ /** Off for all but one summary when one runtime is rendered twice. */
13
+ focus: { type: Boolean, default: true },
14
+ },
15
+ setup(props) {
16
+ const runtime = useFormRuntime();
17
+ const idPrefix = useFormIdPrefix();
18
+ const messages = useFormMessages();
19
+ const visibleErrors = useStore(runtime.visibleErrors, NONE);
20
+ const submission = useStore(runtime.submission, runtime.submission.getSnapshot());
21
+ const container = ref(null);
22
+ const tracker = createFailedSubmitTracker(runtime.submission.getSnapshot());
23
+ const headingId = makeId(idPrefix, 'error-summary', 'heading');
24
+ watch([submission, visibleErrors], ([current, errors]) => {
25
+ if (!tracker.settle(current, errors))
26
+ return;
27
+ if (props.focus && container.value?.isConnected)
28
+ container.value.focus();
29
+ }, { flush: 'post' });
30
+ return () => visibleErrors.value.length === 0
31
+ ? null
32
+ : h('div', { role: 'group', tabindex: -1, 'aria-labelledby': headingId, ref: container }, [
33
+ h('h2', { id: headingId }, messages.value.errorSummaryHeading({ count: visibleErrors.value.length })),
34
+ h('ul', visibleErrors.value.map((entry) => h('li', { key: entry.nodeId }, [
35
+ h('a', { href: `#${makeId(idPrefix, entry.nodeId, 'input')}` }, visibleErrorLabel(entry)),
36
+ messages.value.errorSummaryDetail({ messages: visibleErrorMessages(entry) }),
37
+ ]))),
38
+ ]);
39
+ },
40
+ });
41
+ //# sourceMappingURL=ErrorSummary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ErrorSummary.js","sourceRoot":"","sources":["../../src/components/ErrorSummary.ts"],"names":[],"mappings":"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"}
package/dist/context.d.ts CHANGED
@@ -1,9 +1,14 @@
1
1
  import type { ComputedRef, InjectionKey, MaybeRefOrGetter } from 'vue';
2
- import type { FormRuntime, RendererRegistry } from '@texaryn/core';
2
+ import type { FormMessages, FormRuntime, RendererRegistry } from '@texaryn/core';
3
3
  import type { WidgetComponent } from './widget.js';
4
4
  export declare const FormRuntimeKey: InjectionKey<FormRuntime>;
5
5
  export declare const RendererRegistryKey: InjectionKey<ComputedRef<RendererRegistry<WidgetComponent>>>;
6
- export declare function provideFormRuntime(runtime: FormRuntime): void;
6
+ export declare const FormMessagesKey: InjectionKey<ComputedRef<FormMessages>>;
7
+ export interface ProvideFormRuntimeOptions {
8
+ messages?: MaybeRefOrGetter<FormMessages | undefined>;
9
+ }
10
+ /** A computed, as the registry is: Vue provides once, so a plain value would freeze the locale at mount. */
11
+ export declare function provideFormRuntime(runtime: FormRuntime, options?: ProvideFormRuntimeOptions): void;
7
12
  export declare function useFormRuntime(): FormRuntime;
8
13
  /**
9
14
  * The registry is provided as a computed rather than a value, so a caller
@@ -26,4 +31,6 @@ export declare function provideRendererRegistry(registry: MaybeRefOrGetter<Rende
26
31
  * an injection scope per node for no gain.
27
32
  */
28
33
  export declare function useRendererRegistry(): ComputedRef<RendererRegistry<WidgetComponent>>;
34
+ /** English when nothing is provided: unlike a missing id prefix, a missing locale has a safe answer. */
35
+ export declare function useFormMessages(): ComputedRef<FormMessages>;
29
36
  //# sourceMappingURL=context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,KAAK,CAAA;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAClE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAGlD,eAAO,MAAM,cAAc,EAAE,YAAY,CAAC,WAAW,CAA6B,CAAA;AAClF,eAAO,MAAM,mBAAmB,EAAE,YAAY,CAAC,WAAW,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC,CACjE,CAAA;AAE5B,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAG7D;AAED,wBAAgB,cAAc,IAAI,WAAW,CAM5C;AAED;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC,GAC5D,IAAI,CAEN;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,IAAI,WAAW,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC,CAMpF"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,KAAK,CAAA;AAEtE,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAChF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAGlD,eAAO,MAAM,cAAc,EAAE,YAAY,CAAC,WAAW,CAA6B,CAAA;AAClF,eAAO,MAAM,mBAAmB,EAAE,YAAY,CAAC,WAAW,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC,CACjE,CAAA;AAC5B,eAAO,MAAM,eAAe,EAAE,YAAY,CAAC,WAAW,CAAC,YAAY,CAAC,CAA8B,CAAA;AAElG,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,EAAE,gBAAgB,CAAC,YAAY,GAAG,SAAS,CAAC,CAAA;CACtD;AAED,4GAA4G;AAC5G,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,GAAE,yBAA8B,GAAG,IAAI,CAOtG;AAED,wBAAgB,cAAc,IAAI,WAAW,CAM5C;AAED;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC,GAC5D,IAAI,CAEN;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,IAAI,WAAW,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC,CAMpF;AAID,wGAAwG;AACxG,wBAAgB,eAAe,IAAI,WAAW,CAAC,YAAY,CAAC,CAE3D"}
package/dist/context.js CHANGED
@@ -1,9 +1,13 @@
1
1
  import { computed, inject, provide, toValue } from 'vue';
2
+ import { englishMessages } from '@texaryn/core';
2
3
  import { provideIdPrefix } from './id-prefix.js';
3
4
  export const FormRuntimeKey = Symbol('texaryn.runtime');
4
5
  export const RendererRegistryKey = Symbol('texaryn.registry');
5
- export function provideFormRuntime(runtime) {
6
+ export const FormMessagesKey = Symbol('texaryn.messages');
7
+ /** A computed, as the registry is: Vue provides once, so a plain value would freeze the locale at mount. */
8
+ export function provideFormRuntime(runtime, options = {}) {
6
9
  provide(FormRuntimeKey, runtime);
10
+ provide(FormMessagesKey, computed(() => toValue(options.messages) ?? englishMessages));
7
11
  provideIdPrefix();
8
12
  }
9
13
  export function useFormRuntime() {
@@ -42,4 +46,9 @@ export function useRendererRegistry() {
42
46
  }
43
47
  return registry;
44
48
  }
49
+ const ENGLISH = computed(() => englishMessages);
50
+ /** English when nothing is provided: unlike a missing id prefix, a missing locale has a safe answer. */
51
+ export function useFormMessages() {
52
+ return inject(FormMessagesKey, ENGLISH);
53
+ }
45
54
  //# sourceMappingURL=context.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,KAAK,CAAA;AAIxD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAEhD,MAAM,CAAC,MAAM,cAAc,GAA8B,MAAM,CAAC,iBAAiB,CAAC,CAAA;AAClF,MAAM,CAAC,MAAM,mBAAmB,GAC9B,MAAM,CAAC,kBAAkB,CAAC,CAAA;AAE5B,MAAM,UAAU,kBAAkB,CAAC,OAAoB;IACrD,OAAO,CAAC,cAAc,EAAE,OAAO,CAAC,CAAA;IAChC,eAAe,EAAE,CAAA;AACnB,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,MAAM,OAAO,GAAG,MAAM,CAAC,cAAc,EAAE,IAAI,CAAC,CAAA;IAC5C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,8EAA8E,CAAC,CAAA;IACjG,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,uBAAuB,CACrC,QAA6D;IAE7D,OAAO,CAAC,mBAAmB,EAAE,QAAQ,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;AACjE,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,mBAAmB;IACjC,MAAM,QAAQ,GAAG,MAAM,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAA;IAClD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAA;IAC5E,CAAC;IACD,OAAO,QAAQ,CAAA;AACjB,CAAC"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,KAAK,CAAA;AAExD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAG/C,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAEhD,MAAM,CAAC,MAAM,cAAc,GAA8B,MAAM,CAAC,iBAAiB,CAAC,CAAA;AAClF,MAAM,CAAC,MAAM,mBAAmB,GAC9B,MAAM,CAAC,kBAAkB,CAAC,CAAA;AAC5B,MAAM,CAAC,MAAM,eAAe,GAA4C,MAAM,CAAC,kBAAkB,CAAC,CAAA;AAMlG,4GAA4G;AAC5G,MAAM,UAAU,kBAAkB,CAAC,OAAoB,EAAE,UAAqC,EAAE;IAC9F,OAAO,CAAC,cAAc,EAAE,OAAO,CAAC,CAAA;IAChC,OAAO,CACL,eAAe,EACf,QAAQ,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,eAAe,CAAC,CAC7D,CAAA;IACD,eAAe,EAAE,CAAA;AACnB,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,MAAM,OAAO,GAAG,MAAM,CAAC,cAAc,EAAE,IAAI,CAAC,CAAA;IAC5C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,8EAA8E,CAAC,CAAA;IACjG,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,uBAAuB,CACrC,QAA6D;IAE7D,OAAO,CAAC,mBAAmB,EAAE,QAAQ,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;AACjE,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,mBAAmB;IACjC,MAAM,QAAQ,GAAG,MAAM,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAA;IAClD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAA;IAC5E,CAAC;IACD,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,MAAM,OAAO,GAA8B,QAAQ,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,CAAA;AAE1E,wGAAwG;AACxG,MAAM,UAAU,eAAe;IAC7B,OAAO,MAAM,CAAC,eAAe,EAAE,OAAO,CAAC,CAAA;AACzC,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,7 +1,8 @@
1
1
  export { useStore } from './use-store.js';
2
2
  export { useForm } from './use-form.js';
3
3
  export type { UseFormReturn } from './use-form.js';
4
- export { FormRuntimeKey, RendererRegistryKey, provideFormRuntime, provideRendererRegistry, useFormRuntime, useRendererRegistry, } from './context.js';
4
+ export { FormRuntimeKey, RendererRegistryKey, FormMessagesKey, provideFormRuntime, provideRendererRegistry, useFormRuntime, useFormMessages, useRendererRegistry, } from './context.js';
5
+ export type { ProvideFormRuntimeOptions } from './context.js';
5
6
  export { useField } from './use-field.js';
6
7
  export type { UseFieldReturn } from './use-field.js';
7
8
  export { useFieldArray } from './use-field-array.js';
@@ -9,11 +10,11 @@ export type { FieldArrayItem, UseFieldArrayReturn } from './use-field-array.js';
9
10
  export { useFieldWidget } from './use-field-widget.js';
10
11
  export type { FieldKind, FieldWidget } from './use-field-widget.js';
11
12
  export { fieldAria, fieldLabel, makeId } from './field-props.js';
12
- export { removeActionName, moveUpActionName, addActionName } from './action-names.js';
13
13
  export { useFormIdPrefix } from './id-prefix.js';
14
14
  export type { FieldAria } from './field-props.js';
15
15
  export type { WidgetComponent } from './widget.js';
16
16
  export { FormRoot } from './components/FormRoot.js';
17
+ export { ErrorSummary } from './components/ErrorSummary.js';
17
18
  export { NodeRenderer } from './components/NodeRenderer.js';
18
19
  export { FieldErrors } from './widgets/FieldErrors.js';
19
20
  export { Checkbox, NumberInput, Select, Textarea, TextInput } from './widgets/inputs.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAElD,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,kBAAkB,EAClB,uBAAuB,EACvB,cAAc,EACd,mBAAmB,GACpB,MAAM,cAAc,CAAA;AAErB,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,YAAY,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAC/E,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAEnE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAChE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACrF,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAChD,YAAY,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAEjD,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAE3D,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AACxF,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAElD,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,eAAe,EACf,kBAAkB,EAClB,uBAAuB,EACvB,cAAc,EACd,eAAe,EACf,mBAAmB,GACpB,MAAM,cAAc,CAAA;AACrB,YAAY,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAA;AAE7D,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,YAAY,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAC/E,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAEnE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAChD,YAAY,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAEjD,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAE3D,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AACxF,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAA"}
package/dist/index.js CHANGED
@@ -1,13 +1,13 @@
1
1
  export { useStore } from './use-store.js';
2
2
  export { useForm } from './use-form.js';
3
- export { FormRuntimeKey, RendererRegistryKey, provideFormRuntime, provideRendererRegistry, useFormRuntime, useRendererRegistry, } from './context.js';
3
+ export { FormRuntimeKey, RendererRegistryKey, FormMessagesKey, provideFormRuntime, provideRendererRegistry, useFormRuntime, useFormMessages, useRendererRegistry, } from './context.js';
4
4
  export { useField } from './use-field.js';
5
5
  export { useFieldArray } from './use-field-array.js';
6
6
  export { useFieldWidget } from './use-field-widget.js';
7
7
  export { fieldAria, fieldLabel, makeId } from './field-props.js';
8
- export { removeActionName, moveUpActionName, addActionName } from './action-names.js';
9
8
  export { useFormIdPrefix } from './id-prefix.js';
10
9
  export { FormRoot } from './components/FormRoot.js';
10
+ export { ErrorSummary } from './components/ErrorSummary.js';
11
11
  export { NodeRenderer } from './components/NodeRenderer.js';
12
12
  export { FieldErrors } from './widgets/FieldErrors.js';
13
13
  export { Checkbox, NumberInput, Select, Textarea, TextInput } from './widgets/inputs.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAGvC,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,kBAAkB,EAClB,uBAAuB,EACvB,cAAc,EACd,mBAAmB,GACpB,MAAM,cAAc,CAAA;AAErB,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAEzC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAEpD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAGtD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAChE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACrF,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAIhD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAE3D,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AACxF,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAGvC,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,eAAe,EACf,kBAAkB,EAClB,uBAAuB,EACvB,cAAc,EACd,eAAe,EACf,mBAAmB,GACpB,MAAM,cAAc,CAAA;AAGrB,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAEzC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAEpD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAGtD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAIhD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAE3D,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AACxF,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import type { ComputedRef, MaybeRefOrGetter, Ref } from 'vue';
2
- import type { FieldNode, ValidationError } from '@texaryn/core';
2
+ import type { FieldNode, FormMessages, ValidationError } from '@texaryn/core';
3
3
  import type { FieldAria } from './field-props.js';
4
4
  export type FieldKind = 'enum' | 'boolean' | 'number' | 'string';
5
5
  export declare function fieldKind(node: FieldNode): FieldKind;
@@ -16,6 +16,8 @@ export interface FieldWidget {
16
16
  errorId: ComputedRef<string>;
17
17
  labelFor: ComputedRef<string>;
18
18
  aria: ComputedRef<FieldAria>;
19
+ /** The configured set, English when none is provided. */
20
+ messages: ComputedRef<FormMessages>;
19
21
  /** Visible errors only: empty until the display policy says to show them. */
20
22
  errors: ComputedRef<readonly ValidationError[]>;
21
23
  invalid: ComputedRef<boolean>;
@@ -1 +1 @@
1
- {"version":3,"file":"use-field-widget.d.ts","sourceRoot":"","sources":["../src/use-field-widget.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AAE7D,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAG/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAKjD,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAGhE,wBAAgB,SAAS,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,CAKpD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAI7E;AAED,wBAAgB,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAO7E;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,WAAW,CAAC,SAAS,CAAC,CAAA;IAC5B,IAAI,EAAE,WAAW,CAAC,SAAS,CAAC,CAAA;IAC5B,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;IACnB,OAAO,EAAE,WAAW,CAAC,MAAM,GAAG,MAAM,CAAC,CAAA;IACrC,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IAC1B,WAAW,EAAE,WAAW,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;IAC5C,aAAa,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IAClC,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IAC5B,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IAC7B,IAAI,EAAE,WAAW,CAAC,SAAS,CAAC,CAAA;IAC5B,6EAA6E;IAC7E,MAAM,EAAE,WAAW,CAAC,SAAS,eAAe,EAAE,CAAC,CAAA;IAC/C,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,CAAA;IAC7B,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAA;IAC9B,MAAM,IAAI,IAAI,CAAA;CACf;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,gBAAgB,CAAC,SAAS,CAAC,GAAG,WAAW,CA8CnF"}
1
+ {"version":3,"file":"use-field-widget.d.ts","sourceRoot":"","sources":["../src/use-field-widget.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AAE7D,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAI7E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAKjD,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAGhE,wBAAgB,SAAS,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,CAKpD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAI7E;AAED,wBAAgB,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAO7E;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,WAAW,CAAC,SAAS,CAAC,CAAA;IAC5B,IAAI,EAAE,WAAW,CAAC,SAAS,CAAC,CAAA;IAC5B,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;IACnB,OAAO,EAAE,WAAW,CAAC,MAAM,GAAG,MAAM,CAAC,CAAA;IACrC,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IAC1B,WAAW,EAAE,WAAW,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;IAC5C,aAAa,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IAClC,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IAC5B,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IAC7B,IAAI,EAAE,WAAW,CAAC,SAAS,CAAC,CAAA;IAC5B,yDAAyD;IACzD,QAAQ,EAAE,WAAW,CAAC,YAAY,CAAC,CAAA;IACnC,6EAA6E;IAC7E,MAAM,EAAE,WAAW,CAAC,SAAS,eAAe,EAAE,CAAC,CAAA;IAC/C,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,CAAA;IAC7B,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAA;IAC9B,MAAM,IAAI,IAAI,CAAA;CACf;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,gBAAgB,CAAC,SAAS,CAAC,GAAG,WAAW,CA+CnF"}
@@ -1,6 +1,7 @@
1
1
  import { computed } from 'vue';
2
2
  import { toValue } from 'vue';
3
3
  import { useField } from './use-field.js';
4
+ import { useFormMessages } from './context.js';
4
5
  import { fieldAria, fieldLabel, makeId } from './field-props.js';
5
6
  import { useFormIdPrefix } from './id-prefix.js';
6
7
  const NO_ERRORS = Object.freeze([]);
@@ -58,6 +59,7 @@ export function useFieldWidget(nodeSource) {
58
59
  showErrors: field.showErrors.value,
59
60
  errors: field.errors.value,
60
61
  }, idPrefix, kind.value !== 'enum' && kind.value !== 'boolean')),
62
+ messages: useFormMessages(),
61
63
  errors,
62
64
  invalid,
63
65
  // The runtime rejects the write too. Stopping here as well keeps the DOM
@@ -1 +1 @@
1
- {"version":3,"file":"use-field-widget.js","sourceRoot":"","sources":["../src/use-field-widget.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"use-field-widget.js","sourceRoot":"","sources":["../src/use-field-widget.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"containers.d.ts","sourceRoot":"","sources":["../../src/widgets/containers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAA;AACnC,OAAO,KAAK,EAAiB,MAAM,EAAE,MAAM,eAAe,CAAA;AAS1D,eAAO,MAAM,YAAY;;uBAFkB,QAAQ,CAAC,MAAM,CAAC;;;;;;;uBAAhB,QAAQ,CAAC,MAAM,CAAC;;;iGAyCzD,CAAA;AAEF,eAAO,MAAM,YAAY;;uBA3CkB,QAAQ,CAAC,MAAM,CAAC;;;;;;;uBAAhB,QAAQ,CAAC,MAAM,CAAC;;;iGAiHzD,CAAA"}
1
+ {"version":3,"file":"containers.d.ts","sourceRoot":"","sources":["../../src/widgets/containers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAA;AACnC,OAAO,KAAK,EAAiB,MAAM,EAAE,MAAM,eAAe,CAAA;AAQ1D,eAAO,MAAM,YAAY;;uBAFkB,QAAQ,CAAC,MAAM,CAAC;;;;;;;uBAAhB,QAAQ,CAAC,MAAM,CAAC;;;iGAyCzD,CAAA;AAEF,eAAO,MAAM,YAAY;;uBA3CkB,QAAQ,CAAC,MAAM,CAAC;;;;;;;uBAAhB,QAAQ,CAAC,MAAM,CAAC;;;iGA0HzD,CAAA"}
@@ -1,9 +1,8 @@
1
1
  import { computed, defineComponent, h } from 'vue';
2
- import { useFormRuntime } from '../context.js';
2
+ import { useFormMessages, useFormRuntime } from '../context.js';
3
3
  import { useStore } from '../use-store.js';
4
4
  import { useFieldArray } from '../use-field-array.js';
5
5
  import { NodeRenderer } from '../components/NodeRenderer.js';
6
- import { addActionName, moveUpActionName, removeActionName } from '../action-names.js';
7
6
  const nodeProp = { node: { type: Object, required: true } };
8
7
  export const ObjectLayout = defineComponent({
9
8
  name: 'ObjectLayout',
@@ -44,6 +43,7 @@ export const ArrayControl = defineComponent({
44
43
  const runtime = useFormRuntime();
45
44
  const document = useStore(runtime.document, runtime.document.getSnapshot());
46
45
  const array = useFieldArray(() => props.node.id);
46
+ const messages = useFormMessages();
47
47
  // Read from the document so a title added by a recompile reaches the name.
48
48
  const currentArray = computed(() => (document.value.nodes[props.node.id] ?? props.node));
49
49
  const arrayTitle = computed(() => currentArray.value.annotations.title);
@@ -62,29 +62,37 @@ export const ArrayControl = defineComponent({
62
62
  // The visible word stays short; the distinguishing name goes in
63
63
  // aria-label, which contains it so speech input still works.
64
64
  array.canRemove.value
65
- ? h('button', {
66
- type: 'button',
67
- 'aria-label': removeActionName(index + 1, itemTitle, arrayTitle.value),
68
- onClick: () => array.remove(index),
69
- }, 'Remove')
65
+ ? (() => {
66
+ const remove = messages.value.removeItem({
67
+ position: index + 1,
68
+ itemTitle,
69
+ containerTitle: arrayTitle.value,
70
+ });
71
+ return h('button', { type: 'button', 'aria-label': remove.accessibleName, onClick: () => array.remove(index) }, remove.label);
72
+ })()
70
73
  : null,
71
74
  array.canReorder.value && index > 0
72
- ? h('button', {
73
- type: 'button',
74
- 'aria-label': moveUpActionName(index + 1, itemTitle, arrayTitle.value),
75
- onClick: () => array.move(index, index - 1),
76
- }, 'Up')
75
+ ? (() => {
76
+ const up = messages.value.moveItemUp({
77
+ position: index + 1,
78
+ itemTitle,
79
+ containerTitle: arrayTitle.value,
80
+ });
81
+ return h('button', { type: 'button', 'aria-label': up.accessibleName, onClick: () => array.move(index, index - 1) }, up.label);
82
+ })()
77
83
  : null,
78
84
  ]);
79
85
  }),
80
86
  array.canAdd.value
81
- ? h('button', {
82
- type: 'button',
87
+ ? (() => {
83
88
  // The item template's title, not the first row's: a row may
84
89
  // not exist yet, which is when naming this matters most.
85
- 'aria-label': addActionName(itemTemplateTitle.value, arrayTitle.value),
86
- onClick: () => array.add(),
87
- }, 'Add')
90
+ const add = messages.value.addItem({
91
+ itemTemplateTitle: itemTemplateTitle.value,
92
+ containerTitle: arrayTitle.value,
93
+ });
94
+ return h('button', { type: 'button', 'aria-label': add.accessibleName, onClick: () => array.add() }, add.label);
95
+ })()
88
96
  : null,
89
97
  ]);
90
98
  },
@@ -1 +1 @@
1
- {"version":3,"file":"containers.js","sourceRoot":"","sources":["../../src/widgets/containers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"containers.js","sourceRoot":"","sources":["../../src/widgets/containers.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,5 @@
1
1
  import type { PropType, VNode } from 'vue';
2
2
  import type { UINode } from '@texaryn/core';
3
- /** The wording every binding uses, so a custom widget can match it. */
4
- export declare const REQUIRED_INDICATOR = "(required)";
5
3
  export declare const TextInput: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
6
4
  readonly node: {
7
5
  readonly type: PropType<UINode>;
@@ -1 +1 @@
1
- {"version":3,"file":"inputs.d.ts","sourceRoot":"","sources":["../../src/widgets/inputs.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,KAAK,CAAA;AAC1C,OAAO,KAAK,EAAa,MAAM,EAAE,MAAM,eAAe,CAAA;AAOtD,uEAAuE;AACvE,eAAO,MAAM,kBAAkB,eAAe,CAAA;AAyC9C,eAAO,MAAM,SAAS;;uBA5CqB,QAAQ,CAAC,MAAM,CAAC;;;;;;;uBAAhB,QAAQ,CAAC,MAAM,CAAC;;;iGA6DzD,CAAA;AAEF,eAAO,MAAM,WAAW;;uBA/DmB,QAAQ,CAAC,MAAM,CAAC;;;;;;;uBAAhB,QAAQ,CAAC,MAAM,CAAC;;;iGAgFzD,CAAA;AAEF,eAAO,MAAM,QAAQ;;uBAlFsB,QAAQ,CAAC,MAAM,CAAC;;;;;;;uBAAhB,QAAQ,CAAC,MAAM,CAAC;;;iGAkGzD,CAAA;AAEF,eAAO,MAAM,QAAQ;;uBApGsB,QAAQ,CAAC,MAAM,CAAC;;;;;;;uBAAhB,QAAQ,CAAC,MAAM,CAAC;;;iGAqHzD,CAAA;AAEF,eAAO,MAAM,MAAM;;uBAvHwB,QAAQ,CAAC,MAAM,CAAC;;;;;;;uBAAhB,QAAQ,CAAC,MAAM,CAAC;;;iGAiJzD,CAAA"}
1
+ {"version":3,"file":"inputs.d.ts","sourceRoot":"","sources":["../../src/widgets/inputs.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,KAAK,CAAA;AAC1C,OAAO,KAAK,EAAa,MAAM,EAAE,MAAM,eAAe,CAAA;AAiDtD,eAAO,MAAM,SAAS;;uBA5CqB,QAAQ,CAAC,MAAM,CAAC;;;;;;;uBAAhB,QAAQ,CAAC,MAAM,CAAC;;;iGA6DzD,CAAA;AAEF,eAAO,MAAM,WAAW;;uBA/DmB,QAAQ,CAAC,MAAM,CAAC;;;;;;;uBAAhB,QAAQ,CAAC,MAAM,CAAC;;;iGAgFzD,CAAA;AAEF,eAAO,MAAM,QAAQ;;uBAlFsB,QAAQ,CAAC,MAAM,CAAC;;;;;;;uBAAhB,QAAQ,CAAC,MAAM,CAAC;;;iGAkGzD,CAAA;AAEF,eAAO,MAAM,QAAQ;;uBApGsB,QAAQ,CAAC,MAAM,CAAC;;;;;;;uBAAhB,QAAQ,CAAC,MAAM,CAAC;;;iGAqHzD,CAAA;AAEF,eAAO,MAAM,MAAM;;uBAvHwB,QAAQ,CAAC,MAAM,CAAC;;;;;;;uBAAhB,QAAQ,CAAC,MAAM,CAAC;;;iGAiJzD,CAAA"}
@@ -2,21 +2,19 @@ import { defineComponent, h } from 'vue';
2
2
  import { useFieldWidget } from '../use-field-widget.js';
3
3
  import { FieldErrors } from './FieldErrors.js';
4
4
  const nodeProp = { node: { type: Object, required: true } };
5
- /** The wording every binding uses, so a custom widget can match it. */
6
- export const REQUIRED_INDICATOR = '(required)';
7
5
  /**
8
6
  * Three separate channels carry one fact and must not be collapsed. The
9
- * sighted user reads "(required)"; the accessible name stays the label alone,
7
+ * sighted user reads the indicator; the accessible name stays the label alone,
10
8
  * because aria-required already reports the state and naming it too makes some
11
- * screen readers say it twice; and the indicator says the word rather than an
12
- * asterisk, so nobody has to be told elsewhere what a marker means.
9
+ * screen readers say it twice. The message decides the wording and the side;
10
+ * this function decides that it is aria-hidden.
13
11
  */
14
12
  function labelContent(field) {
15
- const content = [field.label.value];
16
- if (field.aria.value['aria-required']) {
17
- content.push(h('span', { 'aria-hidden': 'true' }, ` ${REQUIRED_INDICATOR}`));
18
- }
19
- return content;
13
+ if (!field.aria.value['aria-required'])
14
+ return [field.label.value];
15
+ const indicator = field.messages.value.requiredIndicator();
16
+ const marker = h('span', { 'aria-hidden': 'true' }, indicator.placement === 'after' ? ` ${indicator.text}` : `${indicator.text} `);
17
+ return indicator.placement === 'after' ? [field.label.value, marker] : [marker, field.label.value];
20
18
  }
21
19
  function fieldShell(field, control) {
22
20
  return h('div', [
@@ -1 +1 @@
1
- {"version":3,"file":"inputs.js","sourceRoot":"","sources":["../../src/widgets/inputs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGxC,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAEvD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAE9C,MAAM,QAAQ,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,MAA0B,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAW,CAAA;AAExF,uEAAuE;AACvE,MAAM,CAAC,MAAM,kBAAkB,GAAG,YAAY,CAAA;AAE9C;;;;;;GAMG;AACH,SAAS,YAAY,CAAC,KAAkB;IACtC,MAAM,OAAO,GAA0B,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAC1D,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC;QACtC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,IAAI,kBAAkB,EAAE,CAAC,CAAC,CAAA;IAC9E,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,SAAS,UAAU,CAAC,KAAkB,EAAE,OAAc;IACpD,OAAO,CAAC,CAAC,KAAK,EAAE;QACd,CAAC,CACC,OAAO,EACP,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,QAAQ,EAAE,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,EAClE,YAAY,CAAC,KAAK,CAAC,CACpB;QACD,OAAO;QACP,KAAK,CAAC,WAAW,CAAC,KAAK;YACrB,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC;YACtE,CAAC,CAAC,IAAI;QACR,CAAC,CAAC,WAAW,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;KACxE,CAAC,CAAA;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,OAAO,CAAC,KAAuB;IACtC,OAAO,cAAc,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,IAAiB,CAAC,CAAA;AACtD,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,eAAe,CAAC;IACvC,IAAI,EAAE,WAAW;IACjB,KAAK,EAAE,QAAQ;IACf,KAAK,CAAC,KAAK;QACT,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;QAC5B,OAAO,GAAG,EAAE,CACV,UAAU,CACR,KAAK,EACL,CAAC,CAAC,OAAO,EAAE;YACT,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK;YACnB,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK;YAC1B,OAAO,EAAE,CAAC,KAAY,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAE,KAAK,CAAC,MAA2B,CAAC,KAAK,CAAC;YACjF,MAAM,EAAE,KAAK,CAAC,MAAM;SACrB,CAAC,CACH,CAAA;IACL,CAAC;CACF,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,eAAe,CAAC;IACzC,IAAI,EAAE,aAAa;IACnB,KAAK,EAAE,QAAQ;IACf,KAAK,CAAC,KAAK;QACT,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;QAC5B,OAAO,GAAG,EAAE,CACV,UAAU,CACR,KAAK,EACL,CAAC,CAAC,OAAO,EAAE;YACT,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK;YACnB,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK;YAC1B,OAAO,EAAE,CAAC,KAAY,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAE,KAAK,CAAC,MAA2B,CAAC,KAAK,CAAC;YACjF,MAAM,EAAE,KAAK,CAAC,MAAM;SACrB,CAAC,CACH,CAAA;IACL,CAAC;CACF,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,eAAe,CAAC;IACtC,IAAI,EAAE,UAAU;IAChB,KAAK,EAAE,QAAQ;IACf,KAAK,CAAC,KAAK;QACT,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;QAC5B,OAAO,GAAG,EAAE,CACV,UAAU,CACR,KAAK,EACL,CAAC,CAAC,UAAU,EAAE;YACZ,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK;YACnB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK;YAC1B,OAAO,EAAE,CAAC,KAAY,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAE,KAAK,CAAC,MAA8B,CAAC,KAAK,CAAC;YACpF,MAAM,EAAE,KAAK,CAAC,MAAM;SACrB,CAAC,CACH,CAAA;IACL,CAAC;CACF,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,eAAe,CAAC;IACtC,IAAI,EAAE,UAAU;IAChB,KAAK,EAAE,QAAQ;IACf,KAAK,CAAC,KAAK;QACT,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;QAC5B,OAAO,GAAG,EAAE,CACV,UAAU,CACR,KAAK,EACL,CAAC,CAAC,OAAO,EAAE;YACT,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK;YACnB,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;YACnC,QAAQ,EAAE,CAAC,KAAY,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAE,KAAK,CAAC,MAA2B,CAAC,OAAO,CAAC;YACtF,MAAM,EAAE,KAAK,CAAC,MAAM;SACrB,CAAC,CACH,CAAA;IACL,CAAC;CACF,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,MAAM,GAAG,eAAe,CAAC;IACpC,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,QAAQ;IACf,KAAK,CAAC,KAAK;QACT,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;QAC5B,OAAO,GAAG,EAAE,CACV,UAAU,CACR,KAAK,EACL,CAAC,CACC,QAAQ,EACR;YACE,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK;YACnB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK;YAC1B,QAAQ,EAAE,CAAC,KAAY,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAE,KAAK,CAAC,MAA4B,CAAC,KAAK,CAAC;YACnF,MAAM,EAAE,KAAK,CAAC,MAAM;SACrB,EACD;YACE,CAAC,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;YAC9B,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CACpD,CAAC,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EACpE,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CACxC;SACF,CACF,CACF,CAAA;IACL,CAAC;CACF,CAAC,CAAA"}
1
+ {"version":3,"file":"inputs.js","sourceRoot":"","sources":["../../src/widgets/inputs.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@texaryn/vue",
3
- "version": "0.3.3",
3
+ "version": "0.4.0",
4
4
  "description": "Vue 3 bindings, composables, and default widgets for Texaryn",
5
5
  "keywords": [
6
6
  "vue",
@@ -44,7 +44,7 @@
44
44
  "CHANGELOG.md"
45
45
  ],
46
46
  "dependencies": {
47
- "@texaryn/core": "^0.10.0"
47
+ "@texaryn/core": "^0.12.0"
48
48
  },
49
49
  "peerDependencies": {
50
50
  "vue": ">=3.5.0"
@@ -55,7 +55,7 @@
55
55
  "jsdom": "^25.0.0",
56
56
  "vue": "^3.5.0",
57
57
  "@texaryn/examples": "0.0.0",
58
- "@texaryn/schema-json": "0.5.1"
58
+ "@texaryn/schema-json": "0.6.1"
59
59
  },
60
60
  "scripts": {
61
61
  "build": "tsc --build"
@@ -1,20 +0,0 @@
1
- /**
2
- * Accessible names for the controls an array renders.
3
- *
4
- * A deliberate reimplementation of `@texaryn/react`'s helper rather than an
5
- * import of it, for the same reason `fieldAria` is: this package must not
6
- * depend on the React binding. Web Components carries the third copy. Nothing
7
- * here is Vue specific, and extraction waits for a boundary rather than a copy
8
- * count: configurable or localized wording, or another renderer-neutral
9
- * presentation rule that needs the same home. Putting English control copy in
10
- * the headless runtime would be the wrong home.
11
- *
12
- * The name carries the current 1-based position, because that is what a person
13
- * means by "the second contact"; the stable item id is implementation identity.
14
- * The row's own value is deliberately unused: mutable, often blank, frequently
15
- * duplicated, sometimes sensitive.
16
- */
17
- export declare function removeActionName(position: number, itemTitle: string | undefined, arrayTitle: string | undefined): string;
18
- export declare function moveUpActionName(position: number, itemTitle: string | undefined, arrayTitle: string | undefined): string;
19
- export declare function addActionName(itemTitle: string | undefined, arrayTitle: string | undefined): string;
20
- //# sourceMappingURL=action-names.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"action-names.d.ts","sourceRoot":"","sources":["../src/action-names.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,UAAU,EAAE,MAAM,GAAG,SAAS,GAC7B,MAAM,CAER;AAED,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,UAAU,EAAE,MAAM,GAAG,SAAS,GAC7B,MAAM,CAER;AAED,wBAAgB,aAAa,CAC3B,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,UAAU,EAAE,MAAM,GAAG,SAAS,GAC7B,MAAM,CAGR"}
@@ -1,31 +0,0 @@
1
- /**
2
- * Accessible names for the controls an array renders.
3
- *
4
- * A deliberate reimplementation of `@texaryn/react`'s helper rather than an
5
- * import of it, for the same reason `fieldAria` is: this package must not
6
- * depend on the React binding. Web Components carries the third copy. Nothing
7
- * here is Vue specific, and extraction waits for a boundary rather than a copy
8
- * count: configurable or localized wording, or another renderer-neutral
9
- * presentation rule that needs the same home. Putting English control copy in
10
- * the headless runtime would be the wrong home.
11
- *
12
- * The name carries the current 1-based position, because that is what a person
13
- * means by "the second contact"; the stable item id is implementation identity.
14
- * The row's own value is deliberately unused: mutable, often blank, frequently
15
- * duplicated, sometimes sensitive.
16
- */
17
- export function removeActionName(position, itemTitle, arrayTitle) {
18
- return withContainer(`Remove ${itemTitle ?? 'item'} ${position}`, 'from', arrayTitle);
19
- }
20
- export function moveUpActionName(position, itemTitle, arrayTitle) {
21
- return withContainer(`Move up ${itemTitle ?? 'item'} ${position}`, 'in', arrayTitle);
22
- }
23
- export function addActionName(itemTitle, arrayTitle) {
24
- if (arrayTitle !== undefined)
25
- return `Add item to ${arrayTitle}`;
26
- return itemTitle === undefined ? 'Add item' : `Add ${itemTitle}`;
27
- }
28
- function withContainer(name, preposition, arrayTitle) {
29
- return arrayTitle === undefined ? name : `${name} ${preposition} ${arrayTitle}`;
30
- }
31
- //# sourceMappingURL=action-names.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"action-names.js","sourceRoot":"","sources":["../src/action-names.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,gBAAgB,CAC9B,QAAgB,EAChB,SAA6B,EAC7B,UAA8B;IAE9B,OAAO,aAAa,CAAC,UAAU,SAAS,IAAI,MAAM,IAAI,QAAQ,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,CAAA;AACvF,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,QAAgB,EAChB,SAA6B,EAC7B,UAA8B;IAE9B,OAAO,aAAa,CAAC,WAAW,SAAS,IAAI,MAAM,IAAI,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,CAAC,CAAA;AACtF,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,SAA6B,EAC7B,UAA8B;IAE9B,IAAI,UAAU,KAAK,SAAS;QAAE,OAAO,eAAe,UAAU,EAAE,CAAA;IAChE,OAAO,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,SAAS,EAAE,CAAA;AAClE,CAAC;AAED,SAAS,aAAa,CAAC,IAAY,EAAE,WAAmB,EAAE,UAA8B;IACtF,OAAO,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,WAAW,IAAI,UAAU,EAAE,CAAA;AACjF,CAAC"}