@texaryn/vue 0.3.4 → 0.4.1
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 +50 -0
- package/README.md +15 -2
- package/dist/components/ErrorSummary.d.ts +19 -0
- package/dist/components/ErrorSummary.d.ts.map +1 -0
- package/dist/components/ErrorSummary.js +41 -0
- package/dist/components/ErrorSummary.js.map +1 -0
- package/dist/context.d.ts +9 -2
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +10 -1
- package/dist/context.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/use-field-widget.d.ts +3 -1
- package/dist/use-field-widget.d.ts.map +1 -1
- package/dist/use-field-widget.js +2 -0
- package/dist/use-field-widget.js.map +1 -1
- package/dist/widgets/containers.d.ts.map +1 -1
- package/dist/widgets/containers.js +25 -17
- package/dist/widgets/containers.js.map +1 -1
- package/dist/widgets/inputs.d.ts +0 -2
- package/dist/widgets/inputs.d.ts.map +1 -1
- package/dist/widgets/inputs.js +8 -10
- package/dist/widgets/inputs.js.map +1 -1
- package/package.json +4 -4
- package/dist/action-names.d.ts +0 -20
- package/dist/action-names.d.ts.map +0 -1
- package/dist/action-names.js +0 -31
- package/dist/action-names.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,55 @@
|
|
|
1
1
|
# @texaryn/vue
|
|
2
2
|
|
|
3
|
+
## 0.4.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- d3ea7a8: `homepage` points at the documentation site, https://texaryn.github.io/texaryn/,
|
|
8
|
+
instead of the GitHub README. No code changes.
|
|
9
|
+
- Updated dependencies [d3ea7a8]
|
|
10
|
+
- Updated dependencies [d3ea7a8]
|
|
11
|
+
- @texaryn/core@0.12.1
|
|
12
|
+
|
|
13
|
+
## 0.4.0
|
|
14
|
+
|
|
15
|
+
### Minor Changes
|
|
16
|
+
|
|
17
|
+
- 3f19d2c: `ErrorSummary` renders a jump-linked list of the runtime's visible errors,
|
|
18
|
+
placed by the application above `FormRoot` the way React's is. Each link
|
|
19
|
+
targets the input the renderer mounted, inside the namespace
|
|
20
|
+
`provideFormRuntime` opened. It is not a live region: the fields already
|
|
21
|
+
announce their own errors.
|
|
22
|
+
- 191787c: `provideFormRuntime(runtime, { messages })` takes a whole `FormMessages` set as
|
|
23
|
+
a value, a ref or a getter, and every built-in widget renders from it.
|
|
24
|
+
`useFormMessages()` returns it as a computed for a custom widget, and
|
|
25
|
+
`FieldWidget` carries it as `messages`.
|
|
26
|
+
|
|
27
|
+
Removed: `removeActionName`, `moveUpActionName` and `addActionName`, for the
|
|
28
|
+
reason given for the React binding: a helper that ignores the configuration
|
|
29
|
+
leaves one widget in English while the form translates. Migration:
|
|
30
|
+
|
|
31
|
+
before
|
|
32
|
+
|
|
33
|
+
removeActionName(position, itemTitle, arrayTitle)
|
|
34
|
+
|
|
35
|
+
after
|
|
36
|
+
|
|
37
|
+
const messages = useFormMessages()
|
|
38
|
+
messages.value.removeItem({ position, itemTitle, containerTitle: arrayTitle }).accessibleName
|
|
39
|
+
- aa5dd6f: `ErrorSummary` is a named group with an `h2` heading and takes focus once a
|
|
40
|
+
failed submit settles, once per attempt; a successful submit, a validation
|
|
41
|
+
exception and blur or change validation move nothing. `:focus="false"` keeps
|
|
42
|
+
it passive, for an application that renders one runtime twice and wants one
|
|
43
|
+
focusing summary. The heading and the text after each link come from
|
|
44
|
+
`errorSummaryHeading` and `errorSummaryDetail` in `FormMessages`.
|
|
45
|
+
|
|
46
|
+
### Patch Changes
|
|
47
|
+
|
|
48
|
+
- Updated dependencies [191787c]
|
|
49
|
+
- Updated dependencies [aa5dd6f]
|
|
50
|
+
- Updated dependencies [3f19d2c]
|
|
51
|
+
- @texaryn/core@0.12.0
|
|
52
|
+
|
|
3
53
|
## 0.3.4
|
|
4
54
|
|
|
5
55
|
### 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
|
-
<!--
|
|
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
|
|
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
|
package/dist/context.d.ts.map
CHANGED
|
@@ -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;
|
|
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
|
|
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
|
package/dist/context.js.map
CHANGED
|
@@ -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;
|
|
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';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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;
|
|
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;
|
|
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;
|
|
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"}
|
package/dist/use-field-widget.js
CHANGED
|
@@ -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":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAA;AAE9B,OAAO,EAAE,OAAO,EAAE,MAAM,KAAK,CAAA;AAE7B,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAEhE,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAEhD,MAAM,SAAS,GAA+B,MAAM,CAAC,MAAM,CAAoB,EAAE,CAAC,CAAA;AAIlF,4EAA4E;AAC5E,MAAM,UAAU,SAAS,CAAC,IAAe;IACvC,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,MAAM,CAAA;IACxE,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS;QAAE,OAAO,SAAS,CAAA;IAClD,IAAI,IAAI,CAAC,SAAS,KAAK,QAAQ,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAA;IAChF,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAe,EAAE,KAAc;IAC1D,IAAI,IAAI,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IAChE,IAAI,IAAI,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IAChE,OAAO,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AAC3C,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,IAAe,EAAE,IAAe,EAAE,GAAW;IAClE,IAAI,IAAI,KAAK,QAAQ;QAAE,OAAO,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IAClE,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACpB,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAA;QAC3E,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAA;IACpC,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;
|
|
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;
|
|
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
|
-
?
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
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
|
-
?
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
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
|
-
?
|
|
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
|
-
|
|
86
|
-
|
|
87
|
-
|
|
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":"AAAA,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGlD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"containers.js","sourceRoot":"","sources":["../../src/widgets/containers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGlD,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAA;AAE5D,MAAM,QAAQ,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,MAA0B,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAW,CAAA;AAExF,MAAM,CAAC,MAAM,YAAY,GAAG,eAAe,CAAC;IAC1C,IAAI,EAAE,cAAc;IACpB,KAAK,EAAE,QAAQ;IACf,KAAK,CAAC,KAAK;QACT,MAAM,OAAO,GAAG,cAAc,EAAE,CAAA;QAChC,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAA;QAC3E,uEAAuE;QACvE,qEAAqE;QACrE,wEAAwE;QACxE,qEAAqE;QACrE,6BAA6B;QAC7B,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAA;QAC3C,MAAM,OAAO,GAAG,QAAQ,CACtB,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,IAAI,CAAkB,CAC3E,CAAA;QACD,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;QAC7D,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,EAAE,CAC7B,OAAO,CAAC,KAAK,CAAC,QAAQ;aACnB,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;aACrC,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,CACrD,CAAA;QAED,OAAO,GAAG,EAAE;YACV,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;YAC/F,IAAI,CAAC,MAAM;gBAAE,OAAO,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;YACtC,qEAAqE;YACrE,wEAAwE;YACxE,kEAAkE;YAClE,yBAAyB;YACzB,OAAO,CAAC,CACN,UAAU,EACV,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAAE,EACxD;gBACE,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;gBAChE,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC;aACnB,CACF,CAAA;QACH,CAAC,CAAA;IACH,CAAC;CACF,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,eAAe,CAAC;IAC1C,IAAI,EAAE,cAAc;IACpB,KAAK,EAAE,QAAQ;IACf,KAAK,CAAC,KAAK;QACT,MAAM,OAAO,GAAG,cAAc,EAAE,CAAA;QAChC,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAA;QAC3E,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAChD,MAAM,QAAQ,GAAG,eAAe,EAAE,CAAA;QAClC,2EAA2E;QAC3E,MAAM,YAAY,GAAG,QAAQ,CAC3B,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,IAAI,CAAkB,CAC3E,CAAA;QACD,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;QACvE,MAAM,iBAAiB,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;QAEjF,OAAO,GAAG,EAAE,CACV,CAAC,CAAC,KAAK,EAAE;YACP,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;gBACvC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;gBACzE,MAAM,SAAS,GAAG,KAAK,EAAE,WAAW,CAAC,KAAK,CAAA;gBAC1C,OAAO,CAAC,CACN,KAAK;gBACL,kEAAkE;gBAClE,iEAAiE;gBACjE,8DAA8D;gBAC9D,+CAA+C;gBAC/C,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,EAChB;oBACE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI;oBAC/C,gEAAgE;oBAChE,6DAA6D;oBAC7D,KAAK,CAAC,SAAS,CAAC,KAAK;wBACnB,CAAC,CAAC,CAAC,GAAG,EAAE;4BACJ,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC;gCACvC,QAAQ,EAAE,KAAK,GAAG,CAAC;gCACnB,SAAS;gCACT,cAAc,EAAE,UAAU,CAAC,KAAK;6BACjC,CAAC,CAAA;4BACF,OAAO,CAAC,CACN,QAAQ,EACR,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,CAAC,cAAc,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAC3F,MAAM,CAAC,KAAK,CACb,CAAA;wBACH,CAAC,CAAC,EAAE;wBACN,CAAC,CAAC,IAAI;oBACR,KAAK,CAAC,UAAU,CAAC,KAAK,IAAI,KAAK,GAAG,CAAC;wBACjC,CAAC,CAAC,CAAC,GAAG,EAAE;4BACJ,MAAM,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC;gCACnC,QAAQ,EAAE,KAAK,GAAG,CAAC;gCACnB,SAAS;gCACT,cAAc,EAAE,UAAU,CAAC,KAAK;6BACjC,CAAC,CAAA;4BACF,OAAO,CAAC,CACN,QAAQ,EACR,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,CAAC,cAAc,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,EAChG,EAAE,CAAC,KAAK,CACT,CAAA;wBACH,CAAC,CAAC,EAAE;wBACN,CAAC,CAAC,IAAI;iBACT,CACF,CAAA;YACH,CAAC,CAAC;YACF,KAAK,CAAC,MAAM,CAAC,KAAK;gBAChB,CAAC,CAAC,CAAC,GAAG,EAAE;oBACJ,4DAA4D;oBAC5D,yDAAyD;oBACzD,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC;wBACjC,iBAAiB,EAAE,iBAAiB,CAAC,KAAK;wBAC1C,cAAc,EAAE,UAAU,CAAC,KAAK;qBACjC,CAAC,CAAA;oBACF,OAAO,CAAC,CACN,QAAQ,EACR,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,CAAC,cAAc,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,EAChF,GAAG,CAAC,KAAK,CACV,CAAA;gBACH,CAAC,CAAC,EAAE;gBACN,CAAC,CAAC,IAAI;SACT,CAAC,CAAA;IACN,CAAC;CACF,CAAC,CAAA"}
|
package/dist/widgets/inputs.d.ts
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/widgets/inputs.js
CHANGED
|
@@ -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
|
|
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
|
|
12
|
-
*
|
|
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
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
}
|
|
19
|
-
return
|
|
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
|
|
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
|
+
"version": "0.4.1",
|
|
4
4
|
"description": "Vue 3 bindings, composables, and default widgets for Texaryn",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"vue",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"url": "git+https://github.com/texaryn/texaryn.git",
|
|
25
25
|
"directory": "packages/vue"
|
|
26
26
|
},
|
|
27
|
-
"homepage": "https://github.
|
|
27
|
+
"homepage": "https://texaryn.github.io/texaryn/",
|
|
28
28
|
"bugs": {
|
|
29
29
|
"url": "https://github.com/texaryn/texaryn/issues"
|
|
30
30
|
},
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"CHANGELOG.md"
|
|
45
45
|
],
|
|
46
46
|
"dependencies": {
|
|
47
|
-
"@texaryn/core": "^0.
|
|
47
|
+
"@texaryn/core": "^0.12.1"
|
|
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.6.
|
|
58
|
+
"@texaryn/schema-json": "0.6.2"
|
|
59
59
|
},
|
|
60
60
|
"scripts": {
|
|
61
61
|
"build": "tsc --build"
|
package/dist/action-names.d.ts
DELETED
|
@@ -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"}
|
package/dist/action-names.js
DELETED
|
@@ -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
|
package/dist/action-names.js.map
DELETED
|
@@ -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"}
|