@texaryn/web-components 0.3.4 → 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,54 @@
1
1
  # @texaryn/web-components
2
2
 
3
+ ## 0.4.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 3f19d2c: `mountErrorSummary(container, form)` renders a jump-linked list of the
8
+ runtime's visible errors over the `Mount` that `mountForm` returned, which now
9
+ carries `runtime` and `idPrefix`, so every link resolves inside the namespace
10
+ the form was mounted under. Both are required members of the exported `Mount`
11
+ interface, so a hand-written `Mount` or a test double supplies them.
12
+ `<texaryn-form error-summary>` and the `errorSummary` property mount it as the
13
+ first child of the element's form. It is not a live region: the fields already
14
+ announce their own errors.
15
+ - 191787c: `mountForm(container, runtime, { registry, idPrefix, messages })` replaces the
16
+ four positional parameters, and the returned `Mount` gains `setMessages`. The
17
+ element gains a `messages` property that switches a mounted form in place.
18
+ `RenderContext.messages` is what a custom widget reads.
19
+
20
+ The options object is a break for callers of `mountForm`. Migration:
21
+
22
+ before
23
+
24
+ mountForm(container, runtime, registry, idPrefix)
25
+
26
+ after
27
+
28
+ mountForm(container, runtime, { registry, idPrefix })
29
+
30
+ A locale change recompiles no document, so `setMessages` reconciles the mounted
31
+ tree itself rather than unmounting it; focus, selection and caret position
32
+ survive the switch.
33
+ - aa5dd6f: The error summary is a named group with an `h2` heading and takes focus once
34
+ a failed submit settles, once per attempt; a successful submit, a validation
35
+ exception and blur or change validation move nothing.
36
+ `mountErrorSummary(container, form, { focus: false })` keeps it passive, for
37
+ an application that renders one runtime twice and wants one focusing summary,
38
+ and `ErrorSummaryMount.setMessages` follows a locale switch in place. `Mount`
39
+ exposes `messages`, the set in force. On the element, `error-summary` is
40
+ enumerated: present with any value other than `no-focus` focuses,
41
+ `error-summary="no-focus"` does not, and `errorSummaryFocus` reflects it. The
42
+ heading and the text after each link come from `errorSummaryHeading` and
43
+ `errorSummaryDetail` in `FormMessages`.
44
+
45
+ ### Patch Changes
46
+
47
+ - Updated dependencies [191787c]
48
+ - Updated dependencies [aa5dd6f]
49
+ - Updated dependencies [3f19d2c]
50
+ - @texaryn/core@0.12.0
51
+
3
52
  ## 0.3.4
4
53
 
5
54
  ### Patch Changes
package/README.md CHANGED
@@ -33,6 +33,7 @@ const port = await createJsonSchemaAdapter({
33
33
 
34
34
  const form = document.createElement('texaryn-form') as TexarynFormElement
35
35
  form.registry = createDefaultRegistry()
36
+ form.errorSummary = true
36
37
  form.options = { initialData: { name: '' }, onSubmit: (data) => console.log(data) }
37
38
  form.port = port
38
39
  document.body.append(form)
@@ -80,22 +81,53 @@ Every id is `<prefix>-<nodeId>-<suffix>`, where the prefix is the element's own
80
81
  one page therefore share no ids, and every `for` and `aria-describedby`
81
82
  resolves inside its own element.
82
83
 
84
+ ## Messages
85
+
86
+ `messages` on the element, or in `mountForm`'s options, takes a whole
87
+ `FormMessages` set from `@texaryn/core` and replaces every word the built-in
88
+ widgets invent. Setting it on a mounted element switches the copy in place.
89
+ Custom widgets read `ctx.messages` on the render context.
90
+
91
+ ## Error summary
92
+
93
+ `mountErrorSummary(container, form, { focus })` renders a named group, headed
94
+ by an `h2`, listing the runtime's visible errors as the first child of
95
+ `container`, and nothing while there are none. It takes the `Mount` that
96
+ `mountForm` returned, so its links share the namespace the form was mounted
97
+ under: `#<prefix>-<nodeId>-input`, the id the built-in widgets give their
98
+ control, which a custom widget that wants summary navigation gives its own.
99
+ It takes focus once a failed submit settles, once per attempt; `focus: false`
100
+ keeps it passive, for all but one summary when one runtime is rendered twice.
101
+ `setMessages` on the returned mount follows a locale switch in place, and
102
+ unmounting the summary leaves the form mounted. A caller composing the two
103
+ primitives calls `setMessages` on both mounts; the element does that for its
104
+ own.
105
+
106
+ On the element, `error-summary` present mounts the summary as the first child
107
+ of the element's `<form>` and `error-summary="no-focus"` mounts it passive;
108
+ `errorSummary` and `errorSummaryFocus` reflect the attribute and its value.
109
+ Toggling either applies live, and a value set while the element is detached
110
+ applies when it next mounts. The summary is not a live region: the fields
111
+ already announce their own errors, and the focus move is what speaks the
112
+ heading.
113
+
83
114
  ## Key exports
84
115
 
85
116
  - `defineTexarynForm`
86
117
  - `TexarynFormElement`
87
118
  - `createDefaultRegistry`
88
- - `mountForm`
119
+ - `mountForm(container, runtime, { registry, idPrefix, messages })`, returning a `Mount` carrying `runtime`, `idPrefix` and `setMessages`
120
+ - `mountErrorSummary(container, form, { focus })`, returning an `ErrorSummaryMount` with `setMessages`
89
121
  - `makeId`
90
122
  - `textInput`, `numberInput`, `checkbox`, `select`, `textarea`
91
123
  - `objectLayout`, `arrayControl`
92
- - types: `DomWidget`, `WidgetFactory`, `NodeBinding`, `RenderContext`, `Mount`
124
+ - types: `DomWidget`, `WidgetFactory`, `NodeBinding`, `RenderContext`, `Mount`, `ErrorSummaryOptions`, `ErrorSummaryMount`
93
125
 
94
126
  ## Not in this release
95
127
 
96
128
  Shadow DOM, `formAssociated` and `ElementInternals`, nesting inside another
97
- `<form>`, group and layout containers beyond objects and arrays, text and
98
- action nodes, and focus management after a failed submit.
129
+ `<form>`, group and layout containers beyond objects and arrays, and text and
130
+ action nodes.
99
131
 
100
132
  ## Related packages
101
133
 
@@ -1 +1 @@
1
- {"version":3,"file":"containers.d.ts","sourceRoot":"","sources":["../src/containers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA+B,MAAM,EAAE,MAAM,eAAe,CAAA;AACxE,OAAO,KAAK,EAAE,SAAS,EAAe,aAAa,EAAE,MAAM,aAAa,CAAA;AA6ExE,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,GAAG,SAAS,CAqE3E;AAUD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,GAAG,SAAS,CAqG3E"}
1
+ {"version":3,"file":"containers.d.ts","sourceRoot":"","sources":["../src/containers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA+B,MAAM,EAAE,MAAM,eAAe,CAAA;AACxE,OAAO,KAAK,EAAE,SAAS,EAAe,aAAa,EAAE,MAAM,aAAa,CAAA;AA4ExE,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,GAAG,SAAS,CAqE3E;AAUD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,GAAG,SAAS,CAiH3E"}
@@ -1,4 +1,3 @@
1
- import { addActionName, moveUpActionName, removeActionName } from './action-names.js';
2
1
  function currentNodes(ctx) {
3
2
  return ctx.runtime.document.getSnapshot().nodes;
4
3
  }
@@ -154,7 +153,7 @@ export function arrayControl(initial, ctx) {
154
153
  const root = document.createElement('div');
155
154
  root.className = 'texaryn-array';
156
155
  const list = document.createElement('div');
157
- const add = button('Add', () => {
156
+ const add = button('', () => {
158
157
  ctx.runtime.dispatch({
159
158
  type: 'InsertItem',
160
159
  containerId: node.id,
@@ -171,13 +170,13 @@ export function arrayControl(initial, ctx) {
171
170
  element.className = 'texaryn-array-item';
172
171
  element.dataset.itemId = itemId;
173
172
  const slot = document.createElement('div');
174
- const up = button('Up', () => {
173
+ const up = button('', () => {
175
174
  const index = indexOf(itemId);
176
175
  if (index > 0) {
177
176
  ctx.runtime.dispatch({ type: 'MoveItem', containerId: node.id, from: index, to: index - 1 });
178
177
  }
179
178
  });
180
- const remove = button('Remove', () => {
179
+ const remove = button('', () => {
181
180
  const index = indexOf(itemId);
182
181
  if (index >= 0)
183
182
  ctx.runtime.dispatch({ type: 'RemoveItem', containerId: node.id, index });
@@ -219,10 +218,17 @@ export function arrayControl(initial, ctx) {
219
218
  // Named here rather than in createRow: a row survives a move, so the
220
219
  // position in its name is only correct if it is rewritten every pass,
221
220
  // the same reason the click handlers resolve their index at click time.
222
- const itemTitle = child?.annotations.title;
223
- const arrayTitle = node.annotations.title;
224
- row.remove.setAttribute('aria-label', removeActionName(index + 1, itemTitle, arrayTitle));
225
- row.up.setAttribute('aria-label', moveUpActionName(index + 1, itemTitle, arrayTitle));
221
+ const context = {
222
+ position: index + 1,
223
+ itemTitle: child?.annotations.title,
224
+ containerTitle: node.annotations.title,
225
+ };
226
+ const remove = ctx.messages.removeItem(context);
227
+ row.remove.textContent = remove.label;
228
+ row.remove.setAttribute('aria-label', remove.accessibleName);
229
+ const up = ctx.messages.moveItemUp(context);
230
+ row.up.textContent = up.label;
231
+ row.up.setAttribute('aria-label', up.accessibleName);
226
232
  elements.push(row.element);
227
233
  });
228
234
  for (const [itemId, row] of rows) {
@@ -236,7 +242,12 @@ export function arrayControl(initial, ctx) {
236
242
  add.hidden = !(meta?.canAdd ?? false);
237
243
  // The item template's title, not the first row's: a row may not exist yet,
238
244
  // which is when naming this matters most.
239
- add.setAttribute('aria-label', addActionName(meta?.itemTitle, node.annotations.title));
245
+ const addMessage = ctx.messages.addItem({
246
+ itemTemplateTitle: meta?.itemTitle,
247
+ containerTitle: node.annotations.title,
248
+ });
249
+ add.textContent = addMessage.label;
250
+ add.setAttribute('aria-label', addMessage.accessibleName);
240
251
  }
241
252
  reconcile(node);
242
253
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"containers.js","sourceRoot":"","sources":["../src/containers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"containers.js","sourceRoot":"","sources":["../src/containers.ts"],"names":[],"mappings":"AAGA,SAAS,YAAY,CAAC,GAAkB;IACtC,OAAO,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,KAAK,CAAA;AACjD,CAAC;AAID;;;;;;GAMG;AACH,SAAS,KAAK,CAAC,MAAe,EAAE,EAAe,EAAE,GAAgB;IAC/D,IAAI,EAAE,CAAC,UAAU,KAAK,MAAM,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;QACxE,MAAM,CAAC,UAAU,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA;IAC5B,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,YAAY,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA;IAC9B,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAS,OAAO,CAAC,MAAmB,EAAE,MAAqB;IACzD,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAA;IACrC,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAC/E,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;QACpB,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE;YAC3B,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAA;YACzC,IAAI,EAAE,KAAK,EAAE;gBAAE,KAAK,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;QACtC,CAAC,CAAC,CAAA;QACF,OAAM;IACR,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,CAAA;IAClC,IAAI,GAAG,GAAS,MAAM,CAAA;IACtB,KAAK,IAAI,CAAC,GAAG,WAAW,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;QACpB,IAAI,EAAE,CAAC,WAAW,KAAK,GAAG;YAAE,KAAK,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,CAAC,CAAA;QAClD,GAAG,GAAG,EAAE,CAAA;IACV,CAAC;IACD,IAAI,IAAI,GAAY,MAAM,CAAA;IAC1B,KAAK,IAAI,CAAC,GAAG,WAAW,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrD,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;QACpB,IAAI,IAAI,CAAC,WAAW,KAAK,EAAE;YAAE,KAAK,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAA;QAChE,IAAI,GAAG,EAAE,CAAA;IACX,CAAC;AACH,CAAC;AAED,SAAS,MAAM,CAAC,KAAa,EAAE,OAAmB;IAChD,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;IAChD,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAA;IACvB,OAAO,CAAC,WAAW,GAAG,KAAK,CAAA;IAC3B,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IAC1C,OAAO,OAAO,CAAA;AAChB,CAAC;AAED;;;;;;GAMG;AACH,SAAS,QAAQ,CAAC,IAAY;IAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAA;IAChC,IAAI,OAAO,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC,EAAE,CAAA;IACnC,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;IACtC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAA;AACxD,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,OAAe,EAAE,GAAkB;IAC9D,4EAA4E;IAC5E,yEAAyE;IACzE,uEAAuE;IACvE,6DAA6D;IAC7D,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,KAAK,IAAI,CAAA;IACxC,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;IAChE,IAAI,CAAC,SAAS,GAAG,gBAAgB,CAAA;IACjC,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAC/D,qFAAqF;IACrF,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAC1D,IAAI,IAAI,KAAK,IAAI;QAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACpC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAuB,CAAA;IAE/C,wFAAwF;IACxF,SAAS,aAAa,CAAC,IAAY;QACjC,IAAI,CAAC,MAAM;YAAE,OAAM;QACnB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAA;QACpC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,CAAC,MAAM,EAAE,CAAA;YACf,8DAA8D;YAC9D,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;YACjC,OAAM;QACR,CAAC;QACD,MAAM,CAAC,WAAW,GAAG,KAAK,CAAA;QAC1B,uDAAuD;QACvD,IAAI,IAAI,CAAC,UAAU,KAAK,MAAM;YAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QACpD,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAA;IAC9B,CAAC;IAED,SAAS,SAAS,CAAC,IAAmB;QACpC,aAAa,CAAC,IAAI,CAAC,CAAA;QACnB,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,CAAA;QAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAA;QACzF,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAA;QAC9B,MAAM,QAAQ,GAAkB,EAAE,CAAA;QAClC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;YAC3B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YACb,IAAI,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YAC/B,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YACvB,CAAC;iBAAM,CAAC;gBACN,OAAO,GAAG,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;gBAC/B,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;YAC5B,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QAChC,CAAC;QACD,KAAK,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,QAAQ,EAAE,CAAC;YACtC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,SAAQ;YAC3B,OAAO,CAAC,OAAO,EAAE,CAAA;YACjB,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,CAAA;YACxB,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QACtB,CAAC;QACD,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;IACzB,CAAC;IAED,SAAS,CAAC,OAAwB,CAAC,CAAA;IAEnC,OAAO;QACL,OAAO,EAAE,IAAI;QACb,MAAM,CAAC,IAAI;YACT,SAAS,CAAC,IAAqB,CAAC,CAAA;QAClC,CAAC;QACD,OAAO;YACL,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,MAAM,EAAE;gBAAE,OAAO,CAAC,OAAO,EAAE,CAAA;YAC1D,QAAQ,CAAC,KAAK,EAAE,CAAA;QAClB,CAAC;KACF,CAAA;AACH,CAAC;AAUD;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,OAAe,EAAE,GAAkB;IAC9D,IAAI,IAAI,GAAG,OAAwB,CAAA;IACnC,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;IAC1C,IAAI,CAAC,SAAS,GAAG,eAAe,CAAA;IAChC,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;IAC1C,MAAM,GAAG,GAAG,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE;QAC1B,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC;YACnB,IAAI,EAAE,YAAY;YAClB,WAAW,EAAE,IAAI,CAAC,EAAE;YACpB,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,MAAM,IAAI,CAAC;SAC3C,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IACF,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;IACtB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAqB,CAAA;IAEzC,SAAS,OAAO,CAAC,MAAoB;QACnC,OAAO,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;IACtD,CAAC;IAED,SAAS,SAAS,CAAC,MAAoB;QACrC,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;QAC7C,OAAO,CAAC,SAAS,GAAG,oBAAoB,CAAA;QACxC,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAA;QAC/B,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;QAC1C,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE;YACzB,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;YAC7B,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;gBACd,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAA;YAC9F,CAAC;QACH,CAAC,CAAC,CAAA;QACF,MAAM,MAAM,GAAG,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE;YAC7B,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;YAC7B,IAAI,KAAK,IAAI,CAAC;gBAAE,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;QAC3F,CAAC,CAAC,CAAA;QACF,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,MAAM,CAAC,CAAA;QAChC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,CAAA;IACrD,CAAC;IAED,SAAS,SAAS,CAAC,IAAmB;QACpC,IAAI,GAAG,IAAI,CAAA;QACX,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAA;QAC3B,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,CAAA;QAC/B,MAAM,OAAO,GAAG,IAAI,EAAE,OAAO,IAAI,EAAE,CAAA;QACnC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAgB,CAAA;QACpC,MAAM,QAAQ,GAAkB,EAAE,CAAA;QAClC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YAChC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;YAChB,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;YAC1B,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC,CAAA;gBACvB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;YACvB,CAAC;YACD,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAA;YACzC,IAAI,KAAK,EAAE,CAAC;gBACV,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;oBAChB,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;gBAC3B,CAAC;qBAAM,CAAC;oBACN,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;oBACnC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;gBACtC,CAAC;YACH,CAAC;iBAAM,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;gBACvB,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,CAAA;gBACrB,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,CAAA;gBAC5B,GAAG,CAAC,OAAO,GAAG,IAAI,CAAA;YACpB,CAAC;YACD,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,SAAS,IAAI,KAAK,CAAC,CAAA;YAC/C,GAAG,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,UAAU,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,CAAA;YAC3D,qEAAqE;YACrE,sEAAsE;YACtE,wEAAwE;YACxE,MAAM,OAAO,GAAG;gBACd,QAAQ,EAAE,KAAK,GAAG,CAAC;gBACnB,SAAS,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK;gBACnC,cAAc,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK;aACvC,CAAA;YACD,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;YAC/C,GAAG,CAAC,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,KAAK,CAAA;YACrC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,cAAc,CAAC,CAAA;YAC5D,MAAM,EAAE,GAAG,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;YAC3C,GAAG,CAAC,EAAE,CAAC,WAAW,GAAG,EAAE,CAAC,KAAK,CAAA;YAC7B,GAAG,CAAC,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,EAAE,CAAC,cAAc,CAAC,CAAA;YACpD,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QAC5B,CAAC,CAAC,CAAA;QACF,KAAK,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;YACjC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;gBAAE,SAAQ;YAC9B,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,CAAA;YACtB,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,CAAA;YACpB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QACrB,CAAC;QACD,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;QACvB,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,IAAI,KAAK,CAAC,CAAA;QACrC,2EAA2E;QAC3E,0CAA0C;QAC1C,MAAM,UAAU,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC;YACtC,iBAAiB,EAAE,IAAI,EAAE,SAAS;YAClC,cAAc,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK;SACvC,CAAC,CAAA;QACF,GAAG,CAAC,WAAW,GAAG,UAAU,CAAC,KAAK,CAAA;QAClC,GAAG,CAAC,YAAY,CAAC,YAAY,EAAE,UAAU,CAAC,cAAc,CAAC,CAAA;IAC3D,CAAC;IAED,SAAS,CAAC,IAAI,CAAC,CAAA;IAEf,OAAO;QACL,OAAO,EAAE,IAAI;QACb,MAAM,CAAC,IAAI;YACT,SAAS,CAAC,IAAqB,CAAC,CAAA;QAClC,CAAC;QACD,OAAO;YACL,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE;gBAAE,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,CAAA;YACvD,IAAI,CAAC,KAAK,EAAE,CAAA;QACd,CAAC;KACF,CAAA;AACH,CAAC"}
package/dist/element.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { FormRuntime, FormRuntimeOptions, RendererRegistry, SchemaEvaluationPort } from '@texaryn/core';
1
+ import type { FormMessages, FormRuntime, FormRuntimeOptions, RendererRegistry, SchemaEvaluationPort } from '@texaryn/core';
2
2
  import type { WidgetFactory } from './widget.js';
3
3
  /**
4
4
  * `runtime` is the primitive input: an external runtime the element renders
@@ -14,7 +14,13 @@ export interface TexarynFormElement extends HTMLElement {
14
14
  /** Read when the managed runtime is created, so set it before `port`. */
15
15
  options: FormRuntimeOptions;
16
16
  registry: RendererRegistry<WidgetFactory> | null;
17
+ /** The whole set, or English. Setting it on a mounted element switches the copy in place. */
18
+ messages: FormMessages;
17
19
  readonly idPrefix: string;
20
+ /** Reflected to the `error-summary` attribute. While true, the summary is the first child of the element's form. */
21
+ errorSummary: boolean;
22
+ /** Reflected as the `error-summary` value `no-focus`. Off for all but one summary when one runtime is rendered twice. */
23
+ errorSummaryFocus: boolean;
18
24
  }
19
25
  /**
20
26
  * Builds the class on first use rather than at module load. It extends
@@ -1 +1 @@
1
- {"version":3,"file":"element.d.ts","sourceRoot":"","sources":["../src/element.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,WAAW,EACX,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACrB,MAAM,eAAe,CAAA;AAItB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEhD;;;;;GAKG;AACH,MAAM,WAAW,kBAAmB,SAAQ,WAAW;IACrD,qFAAqF;IACrF,OAAO,EAAE,WAAW,GAAG,IAAI,CAAA;IAC3B,kFAAkF;IAClF,IAAI,EAAE,oBAAoB,GAAG,IAAI,CAAA;IACjC,yEAAyE;IACzE,OAAO,EAAE,kBAAkB,CAAA;IAC3B,QAAQ,EAAE,gBAAgB,CAAC,aAAa,CAAC,GAAG,IAAI,CAAA;IAChD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAC1B;AAID;;;;;GAKG;AACH,wBAAgB,uBAAuB,IAAI,wBAAwB,CA8IlE"}
1
+ {"version":3,"file":"element.d.ts","sourceRoot":"","sources":["../src/element.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,YAAY,EACZ,WAAW,EACX,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACrB,MAAM,eAAe,CAAA;AAMtB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEhD;;;;;GAKG;AACH,MAAM,WAAW,kBAAmB,SAAQ,WAAW;IACrD,qFAAqF;IACrF,OAAO,EAAE,WAAW,GAAG,IAAI,CAAA;IAC3B,kFAAkF;IAClF,IAAI,EAAE,oBAAoB,GAAG,IAAI,CAAA;IACjC,yEAAyE;IACzE,OAAO,EAAE,kBAAkB,CAAA;IAC3B,QAAQ,EAAE,gBAAgB,CAAC,aAAa,CAAC,GAAG,IAAI,CAAA;IAChD,6FAA6F;IAC7F,QAAQ,EAAE,YAAY,CAAA;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,oHAAoH;IACpH,YAAY,EAAE,OAAO,CAAA;IACrB,yHAAyH;IACzH,iBAAiB,EAAE,OAAO,CAAA;CAC3B;AAID;;;;;GAKG;AACH,wBAAgB,uBAAuB,IAAI,wBAAwB,CAkNlE"}
package/dist/element.js CHANGED
@@ -1,6 +1,7 @@
1
- import { createFormRuntime } from '@texaryn/core';
1
+ import { createFormRuntime, englishMessages } from '@texaryn/core';
2
2
  import { nextInstancePrefix } from './ids.js';
3
3
  import { mountForm } from './mount.js';
4
+ import { mountErrorSummary } from './summary.js';
4
5
  let elementClass = null;
5
6
  /**
6
7
  * Builds the class on first use rather than at module load. It extends
@@ -12,17 +13,24 @@ export function texarynFormElementClass() {
12
13
  if (elementClass)
13
14
  return elementClass;
14
15
  class TexarynForm extends HTMLElement {
16
+ static get observedAttributes() {
17
+ return ['error-summary'];
18
+ }
15
19
  #external = null;
16
20
  #owned = null;
17
21
  #port = null;
18
22
  #options = {};
19
23
  #registry = null;
24
+ #messages = englishMessages;
20
25
  #form = null;
21
26
  #mount = null;
22
27
  #mountedRuntime = null;
23
28
  #mountedRegistry = null;
24
29
  #unsubscribe = [];
25
30
  #prefix = null;
31
+ #errorSummary = false;
32
+ #summary = null;
33
+ #errorSummaryFocus = true;
26
34
  /** The element's own id when it has one on first use, else an allocated `texaryn-<n>`; fixed for the element's lifetime. */
27
35
  get idPrefix() {
28
36
  this.#prefix ??= this.id || nextInstancePrefix();
@@ -67,6 +75,51 @@ export function texarynFormElementClass() {
67
75
  this.#registry = registry;
68
76
  this.#render();
69
77
  }
78
+ get messages() {
79
+ return this.#messages;
80
+ }
81
+ set messages(messages) {
82
+ this.#messages = messages ?? englishMessages;
83
+ this.#mount?.setMessages(this.#messages);
84
+ this.#summary?.setMessages(this.#messages);
85
+ }
86
+ get errorSummary() {
87
+ return this.#errorSummary;
88
+ }
89
+ set errorSummary(on) {
90
+ const next = Boolean(on);
91
+ if (next === this.#errorSummary)
92
+ return;
93
+ this.#errorSummary = next;
94
+ if (next)
95
+ this.setAttribute('error-summary', this.#errorSummaryFocus ? '' : 'no-focus');
96
+ else
97
+ this.removeAttribute('error-summary');
98
+ this.#reconcileSummary();
99
+ }
100
+ get errorSummaryFocus() {
101
+ return this.#errorSummaryFocus;
102
+ }
103
+ set errorSummaryFocus(on) {
104
+ const next = Boolean(on);
105
+ if (next === this.#errorSummaryFocus)
106
+ return;
107
+ this.#errorSummaryFocus = next;
108
+ if (this.#errorSummary)
109
+ this.setAttribute('error-summary', next ? '' : 'no-focus');
110
+ if (this.#summary) {
111
+ this.#summary.unmount();
112
+ this.#summary = null;
113
+ this.#reconcileSummary();
114
+ }
115
+ }
116
+ attributeChangedCallback(name, _old, value) {
117
+ if (name !== 'error-summary')
118
+ return;
119
+ if (value !== null)
120
+ this.errorSummaryFocus = value !== 'no-focus';
121
+ this.errorSummary = value !== null;
122
+ }
70
123
  connectedCallback() {
71
124
  this.#render();
72
125
  }
@@ -92,9 +145,14 @@ export function texarynFormElementClass() {
92
145
  }
93
146
  this.#unmount();
94
147
  const form = this.#ensureForm();
95
- this.#mount = mountForm(form, runtime, this.#registry, this.idPrefix);
148
+ this.#mount = mountForm(form, runtime, {
149
+ registry: this.#registry,
150
+ idPrefix: this.idPrefix,
151
+ messages: this.#messages,
152
+ });
96
153
  this.#mountedRuntime = runtime;
97
154
  this.#mountedRegistry = this.#registry;
155
+ this.#reconcileSummary();
98
156
  this.#unsubscribe.push(runtime.data.subscribe(() => {
99
157
  this.dispatchEvent(new CustomEvent('texaryn-data-change', { detail: runtime.data.getSnapshot(), bubbles: true }));
100
158
  }), runtime.submission.subscribe(() => {
@@ -121,11 +179,23 @@ export function texarynFormElementClass() {
121
179
  for (const off of this.#unsubscribe)
122
180
  off();
123
181
  this.#unsubscribe = [];
182
+ this.#summary?.unmount();
183
+ this.#summary = null;
124
184
  this.#mount?.unmount();
125
185
  this.#mount = null;
126
186
  this.#mountedRuntime = null;
127
187
  this.#mountedRegistry = null;
128
188
  }
189
+ #reconcileSummary() {
190
+ const wanted = this.#errorSummary && this.#mount !== null && this.#form !== null;
191
+ if (wanted && !this.#summary) {
192
+ this.#summary = mountErrorSummary(this.#form, this.#mount, { focus: this.#errorSummaryFocus });
193
+ }
194
+ if (!wanted && this.#summary) {
195
+ this.#summary.unmount();
196
+ this.#summary = null;
197
+ }
198
+ }
129
199
  #dispose() {
130
200
  this.#unmount();
131
201
  if (this.#owned) {
@@ -1 +1 @@
1
- {"version":3,"file":"element.js","sourceRoot":"","sources":["../src/element.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"element.js","sourceRoot":"","sources":["../src/element.ts"],"names":[],"mappings":"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"}
package/dist/fields.d.ts CHANGED
@@ -1,8 +1,5 @@
1
1
  import type { UINode } from '@texaryn/core';
2
2
  import type { DomWidget, RenderContext } from './widget.js';
3
- /** HTML honours `readonly` on text-like controls only; the rest need ARIA. */
4
- /** The wording every binding uses, so a custom widget can match it. */
5
- export declare const REQUIRED_INDICATOR = "(required)";
6
3
  export declare const textInput: (node: UINode, ctx: RenderContext) => DomWidget;
7
4
  export declare const numberInput: (node: UINode, ctx: RenderContext) => DomWidget;
8
5
  export declare const checkbox: (node: UINode, ctx: RenderContext) => DomWidget;
@@ -1 +1 @@
1
- {"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../src/fields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAa,MAAM,EAAE,MAAM,eAAe,CAAA;AAGtD,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAmB3D,8EAA8E;AAC9E,uEAAuE;AACvE,eAAO,MAAM,kBAAkB,eAAe,CAAA;AA+K9C,eAAO,MAAM,SAAS,GAAI,MAAM,MAAM,EAAE,KAAK,aAAa,KAAG,SAA6C,CAAA;AAC1G,eAAO,MAAM,WAAW,GAAI,MAAM,MAAM,EAAE,KAAK,aAAa,KAAG,SAA6C,CAAA;AAC5G,eAAO,MAAM,QAAQ,GAAI,MAAM,MAAM,EAAE,KAAK,aAAa,KAAG,SAA8C,CAAA;AAC1G,eAAO,MAAM,MAAM,GAAI,MAAM,MAAM,EAAE,KAAK,aAAa,KAAG,SAA2C,CAAA;AACrG,eAAO,MAAM,QAAQ,GAAI,MAAM,MAAM,EAAE,KAAK,aAAa,KAAG,SAA+C,CAAA"}
1
+ {"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../src/fields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA2B,MAAM,EAAE,MAAM,eAAe,CAAA;AAGpE,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AA2L3D,eAAO,MAAM,SAAS,GAAI,MAAM,MAAM,EAAE,KAAK,aAAa,KAAG,SAA6C,CAAA;AAC1G,eAAO,MAAM,WAAW,GAAI,MAAM,MAAM,EAAE,KAAK,aAAa,KAAG,SAA6C,CAAA;AAC5G,eAAO,MAAM,QAAQ,GAAI,MAAM,MAAM,EAAE,KAAK,aAAa,KAAG,SAA8C,CAAA;AAC1G,eAAO,MAAM,MAAM,GAAI,MAAM,MAAM,EAAE,KAAK,aAAa,KAAG,SAA2C,CAAA;AACrG,eAAO,MAAM,QAAQ,GAAI,MAAM,MAAM,EAAE,KAAK,aAAa,KAAG,SAA+C,CAAA"}
package/dist/fields.js CHANGED
@@ -13,29 +13,22 @@ function coerce(kind, node, raw) {
13
13
  function display(value) {
14
14
  return value == null ? '' : String(value);
15
15
  }
16
- /** HTML honours `readonly` on text-like controls only; the rest need ARIA. */
17
- /** The wording every binding uses, so a custom widget can match it. */
18
- export const REQUIRED_INDICATOR = '(required)';
19
- /**
20
- * Three separate channels carry one fact and must not be collapsed. The
21
- * sighted user reads "(required)"; the accessible name stays the label alone,
22
- * because aria-required already reports the state and naming it too makes some
23
- * screen readers say it twice; and the indicator says the word rather than an
24
- * asterisk, so nobody has to be told elsewhere what a marker means.
25
- *
26
- * Rebuilt on every render because a conditional schema can make a field
27
- * required or optional at any recompile.
28
- */
29
- function writeLabel(label, text, required) {
16
+ /** The marker stays out of the accessible name: aria-required already reports the state, and some screen readers would say it twice. */
17
+ function writeLabel(label, text, required, messages) {
30
18
  const children = [document.createTextNode(text)];
31
19
  if (required) {
20
+ const indicator = messages.requiredIndicator();
32
21
  const marker = document.createElement('span');
33
22
  marker.setAttribute('aria-hidden', 'true');
34
- marker.textContent = ` ${REQUIRED_INDICATOR}`;
35
- children.push(marker);
23
+ marker.textContent = indicator.placement === 'after' ? ` ${indicator.text}` : `${indicator.text} `;
24
+ if (indicator.placement === 'after')
25
+ children.push(marker);
26
+ else
27
+ children.unshift(marker);
36
28
  }
37
29
  label.replaceChildren(...children);
38
30
  }
31
+ /** HTML honours `readonly` on text-like controls only; the rest need ARIA. */
39
32
  function hasNativeReadOnly(kind) {
40
33
  return kind === 'string' || kind === 'number' || kind === 'textarea';
41
34
  }
@@ -112,7 +105,7 @@ function fieldWidget(kind, initial, ctx) {
112
105
  }));
113
106
  }
114
107
  function render() {
115
- writeLabel(label, node.annotations.title ?? node.dataPointer ?? node.id, node.constraints.required === true);
108
+ writeLabel(label, node.annotations.title ?? node.dataPointer ?? node.id, node.constraints.required === true, ctx.messages);
116
109
  renderOptions();
117
110
  const value = state.value;
118
111
  if (control instanceof HTMLInputElement && kind === 'boolean') {
@@ -1 +1 @@
1
- {"version":3,"file":"fields.js","sourceRoot":"","sources":["../src/fields.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fields.js","sourceRoot":"","sources":["../src/fields.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,7 +1,9 @@
1
1
  export type { TexarynFormElement } from './element.js';
2
2
  export { defineTexarynForm } from './define.js';
3
3
  export { mountForm } from './mount.js';
4
- export type { Mount } from './mount.js';
4
+ export type { Mount, MountOptions } from './mount.js';
5
+ export { mountErrorSummary } from './summary.js';
6
+ export type { ErrorSummaryMount, ErrorSummaryOptions } from './summary.js';
5
7
  export { createDefaultRegistry } from './registry.js';
6
8
  export { textInput, numberInput, checkbox, select, textarea } from './fields.js';
7
9
  export { objectLayout, arrayControl } from './containers.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AACtC,YAAY,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAChF,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AACtC,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAChD,YAAY,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAChF,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA"}
package/dist/index.js CHANGED
@@ -1,5 +1,6 @@
1
1
  export { defineTexarynForm } from './define.js';
2
2
  export { mountForm } from './mount.js';
3
+ export { mountErrorSummary } from './summary.js';
3
4
  export { createDefaultRegistry } from './registry.js';
4
5
  export { textInput, numberInput, checkbox, select, textarea } from './fields.js';
5
6
  export { objectLayout, arrayControl } from './containers.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAEtC,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAChF,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAEtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAEhD,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAChF,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA"}
package/dist/mount.d.ts CHANGED
@@ -1,6 +1,18 @@
1
- import type { FormRuntime, RendererRegistry } from '@texaryn/core';
1
+ import type { FormMessages, FormRuntime, RendererRegistry } from '@texaryn/core';
2
2
  import type { WidgetFactory } from './widget.js';
3
+ export interface MountOptions {
4
+ registry: RendererRegistry<WidgetFactory>;
5
+ idPrefix: string;
6
+ /** The whole set, or English. */
7
+ messages?: FormMessages;
8
+ }
3
9
  export interface Mount {
10
+ readonly runtime: FormRuntime;
11
+ readonly idPrefix: string;
12
+ /** The set in force, after any setMessages. */
13
+ readonly messages: FormMessages;
14
+ /** A locale change recompiles no document, so this reconciles in place; unmounting would drop focus and caret. */
15
+ setMessages(messages: FormMessages): void;
4
16
  unmount(): void;
5
17
  }
6
18
  /**
@@ -8,5 +20,5 @@ export interface Mount {
8
20
  * by updating the root binding in place. The runtime is borrowed: unmounting
9
21
  * releases subscriptions and DOM, never the runtime.
10
22
  */
11
- export declare function mountForm(container: HTMLElement, runtime: FormRuntime, registry: RendererRegistry<WidgetFactory>, idPrefix: string): Mount;
23
+ export declare function mountForm(container: HTMLElement, runtime: FormRuntime, options: MountOptions): Mount;
12
24
  //# sourceMappingURL=mount.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mount.d.ts","sourceRoot":"","sources":["../src/mount.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAElE,OAAO,KAAK,EAA8B,aAAa,EAAE,MAAM,aAAa,CAAA;AAE5E,MAAM,WAAW,KAAK;IACpB,OAAO,IAAI,IAAI,CAAA;CAChB;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CACvB,SAAS,EAAE,WAAW,EACtB,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,gBAAgB,CAAC,aAAa,CAAC,EACzC,QAAQ,EAAE,MAAM,GACf,KAAK,CAgCP"}
1
+ {"version":3,"file":"mount.d.ts","sourceRoot":"","sources":["../src/mount.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAEhF,OAAO,KAAK,EAA8B,aAAa,EAAE,MAAM,aAAa,CAAA;AAE5E,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,gBAAgB,CAAC,aAAa,CAAC,CAAA;IACzC,QAAQ,EAAE,MAAM,CAAA;IAChB,iCAAiC;IACjC,QAAQ,CAAC,EAAE,YAAY,CAAA;CACxB;AAED,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAA;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,+CAA+C;IAC/C,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAA;IAC/B,kHAAkH;IAClH,WAAW,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAA;IACzC,OAAO,IAAI,IAAI,CAAA;CAChB;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,GAAG,KAAK,CAgDpG"}
package/dist/mount.js CHANGED
@@ -1,19 +1,23 @@
1
+ import { englishMessages } from '@texaryn/core';
1
2
  import { createNodeBinding } from './binding.js';
2
3
  /**
3
4
  * Renders a runtime's document into a container and follows every recompile
4
5
  * by updating the root binding in place. The runtime is borrowed: unmounting
5
6
  * releases subscriptions and DOM, never the runtime.
6
7
  */
7
- export function mountForm(container, runtime, registry, idPrefix) {
8
+ export function mountForm(container, runtime, options) {
9
+ const { registry, idPrefix, messages = englishMessages } = options;
8
10
  const ctx = {
9
11
  runtime,
10
12
  registry,
11
13
  idPrefix,
14
+ messages,
12
15
  mountChild: (node) => createNodeBinding(node, ctx),
13
16
  };
14
17
  let doc = runtime.document.getSnapshot();
15
18
  let root = createNodeBinding(doc.nodes[doc.rootId], ctx);
16
19
  container.append(root.element);
20
+ let live = true;
17
21
  const unsubscribe = runtime.document.subscribe(() => {
18
22
  const next = runtime.document.getSnapshot();
19
23
  const rootNode = next.nodes[next.rootId];
@@ -29,7 +33,22 @@ export function mountForm(container, runtime, registry, idPrefix) {
29
33
  doc = next;
30
34
  });
31
35
  return {
36
+ runtime,
37
+ idPrefix,
38
+ get messages() {
39
+ return ctx.messages;
40
+ },
41
+ setMessages(next) {
42
+ if (!live)
43
+ return;
44
+ if (next === ctx.messages)
45
+ return;
46
+ ctx.messages = next;
47
+ const snapshot = runtime.document.getSnapshot();
48
+ root.update(snapshot.nodes[snapshot.rootId]);
49
+ },
32
50
  unmount() {
51
+ live = false;
33
52
  unsubscribe();
34
53
  root.destroy();
35
54
  root.element.remove();
package/dist/mount.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"mount.js","sourceRoot":"","sources":["../src/mount.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAOhD;;;;GAIG;AACH,MAAM,UAAU,SAAS,CACvB,SAAsB,EACtB,OAAoB,EACpB,QAAyC,EACzC,QAAgB;IAEhB,MAAM,GAAG,GAAkB;QACzB,OAAO;QACP,QAAQ;QACR,QAAQ;QACR,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,GAAG,CAAC;KACnD,CAAA;IACD,IAAI,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAA;IACxC,IAAI,IAAI,GAAgB,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAA;IACrE,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAE9B,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE;QAClD,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAA;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACxC,IAAI,IAAI,CAAC,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC;YAC/B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QACvB,CAAC;aAAM,CAAC;YACN,MAAM,WAAW,GAAG,iBAAiB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAA;YACpD,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;YAC7C,IAAI,CAAC,OAAO,EAAE,CAAA;YACd,IAAI,GAAG,WAAW,CAAA;QACpB,CAAC;QACD,GAAG,GAAG,IAAI,CAAA;IACZ,CAAC,CAAC,CAAA;IAEF,OAAO;QACL,OAAO;YACL,WAAW,EAAE,CAAA;YACb,IAAI,CAAC,OAAO,EAAE,CAAA;YACd,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAA;QACvB,CAAC;KACF,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"mount.js","sourceRoot":"","sources":["../src/mount.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAE/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAoBhD;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,SAAsB,EAAE,OAAoB,EAAE,OAAqB;IAC3F,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,GAAG,eAAe,EAAE,GAAG,OAAO,CAAA;IAClE,MAAM,GAAG,GAAkB;QACzB,OAAO;QACP,QAAQ;QACR,QAAQ;QACR,QAAQ;QACR,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,GAAG,CAAC;KACnD,CAAA;IACD,IAAI,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAA;IACxC,IAAI,IAAI,GAAgB,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAA;IACrE,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC9B,IAAI,IAAI,GAAG,IAAI,CAAA;IAEf,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE;QAClD,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAA;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACxC,IAAI,IAAI,CAAC,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC;YAC/B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QACvB,CAAC;aAAM,CAAC;YACN,MAAM,WAAW,GAAG,iBAAiB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAA;YACpD,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;YAC7C,IAAI,CAAC,OAAO,EAAE,CAAA;YACd,IAAI,GAAG,WAAW,CAAA;QACpB,CAAC;QACD,GAAG,GAAG,IAAI,CAAA;IACZ,CAAC,CAAC,CAAA;IAEF,OAAO;QACL,OAAO;QACP,QAAQ;QACR,IAAI,QAAQ;YACV,OAAO,GAAG,CAAC,QAAQ,CAAA;QACrB,CAAC;QACD,WAAW,CAAC,IAAI;YACd,IAAI,CAAC,IAAI;gBAAE,OAAM;YACjB,IAAI,IAAI,KAAK,GAAG,CAAC,QAAQ;gBAAE,OAAM;YACjC,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAA;YACnB,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAA;YAC/C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA;QAC9C,CAAC;QACD,OAAO;YACL,IAAI,GAAG,KAAK,CAAA;YACZ,WAAW,EAAE,CAAA;YACb,IAAI,CAAC,OAAO,EAAE,CAAA;YACd,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAA;QACvB,CAAC;KACF,CAAA;AACH,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { FormMessages } from '@texaryn/core';
2
+ import type { Mount } from './mount.js';
3
+ export interface ErrorSummaryOptions {
4
+ /** Off for all but one summary when one runtime is rendered twice. */
5
+ focus?: boolean;
6
+ }
7
+ export interface ErrorSummaryMount {
8
+ setMessages(messages: FormMessages): void;
9
+ unmount(): void;
10
+ }
11
+ /** Takes the Mount, not a runtime and a prefix, so the links cannot name a namespace the form was not mounted under. */
12
+ export declare function mountErrorSummary(container: HTMLElement, form: Mount, options?: ErrorSummaryOptions): ErrorSummaryMount;
13
+ //# sourceMappingURL=summary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"summary.d.ts","sourceRoot":"","sources":["../src/summary.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAwB,MAAM,eAAe,CAAA;AAEvE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAEvC,MAAM,WAAW,mBAAmB;IAClC,sEAAsE;IACtE,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,WAAW,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAA;IACzC,OAAO,IAAI,IAAI,CAAA;CAChB;AAgBD,wHAAwH;AACxH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,WAAW,EACtB,IAAI,EAAE,KAAK,EACX,OAAO,GAAE,mBAAwB,GAChC,iBAAiB,CAyEnB"}
@@ -0,0 +1,94 @@
1
+ import { createFailedSubmitTracker, visibleErrorLabel, visibleErrorMessages } from '@texaryn/core';
2
+ import { makeId } from './ids.js';
3
+ function updateItem(li, entry, idPrefix, messages) {
4
+ const link = li.firstChild;
5
+ link.href = `#${makeId(idPrefix, entry.nodeId, 'input')}`;
6
+ link.textContent = visibleErrorLabel(entry);
7
+ li.lastChild.textContent = messages.errorSummaryDetail({ messages: visibleErrorMessages(entry) });
8
+ }
9
+ function item(entry, idPrefix, messages) {
10
+ const li = document.createElement('li');
11
+ li.append(document.createElement('a'), document.createTextNode(''));
12
+ updateItem(li, entry, idPrefix, messages);
13
+ return li;
14
+ }
15
+ /** Takes the Mount, not a runtime and a prefix, so the links cannot name a namespace the form was not mounted under. */
16
+ export function mountErrorSummary(container, form, options = {}) {
17
+ const { runtime, idPrefix } = form;
18
+ const { focus = true } = options;
19
+ let messages = form.messages;
20
+ const root = document.createElement('div');
21
+ root.setAttribute('role', 'group');
22
+ root.tabIndex = -1;
23
+ const heading = document.createElement('h2');
24
+ heading.id = makeId(idPrefix, 'error-summary', 'heading');
25
+ root.setAttribute('aria-labelledby', heading.id);
26
+ const list = document.createElement('ul');
27
+ root.append(heading, list);
28
+ const items = new Map();
29
+ const tracker = createFailedSubmitTracker(runtime.submission.getSnapshot());
30
+ let live = true;
31
+ const render = (errors) => {
32
+ if (errors.length === 0) {
33
+ root.remove();
34
+ return;
35
+ }
36
+ heading.textContent = messages.errorSummaryHeading({ count: errors.length });
37
+ const seen = new Set();
38
+ const ordered = errors.map((entry) => {
39
+ seen.add(entry.nodeId);
40
+ const existing = items.get(entry.nodeId);
41
+ if (existing) {
42
+ updateItem(existing, entry, idPrefix, messages);
43
+ return existing;
44
+ }
45
+ const li = item(entry, idPrefix, messages);
46
+ items.set(entry.nodeId, li);
47
+ return li;
48
+ });
49
+ for (const [nodeId, li] of items) {
50
+ if (seen.has(nodeId))
51
+ continue;
52
+ li.remove();
53
+ items.delete(nodeId);
54
+ }
55
+ let anchor = list.firstChild;
56
+ for (const li of ordered) {
57
+ if (li === anchor) {
58
+ anchor = anchor.nextSibling;
59
+ }
60
+ else {
61
+ list.insertBefore(li, anchor);
62
+ }
63
+ }
64
+ if (root.parentNode !== container)
65
+ container.prepend(root);
66
+ };
67
+ const reconcile = () => {
68
+ const errors = runtime.visibleErrors.getSnapshot();
69
+ render(errors);
70
+ if (!tracker.settle(runtime.submission.getSnapshot(), errors))
71
+ return;
72
+ if (focus && root.isConnected)
73
+ root.focus();
74
+ };
75
+ reconcile();
76
+ const unsubscribe = [runtime.visibleErrors.subscribe(reconcile), runtime.submission.subscribe(reconcile)];
77
+ return {
78
+ setMessages(next) {
79
+ if (!live)
80
+ return;
81
+ if (next === messages)
82
+ return;
83
+ messages = next;
84
+ render(runtime.visibleErrors.getSnapshot());
85
+ },
86
+ unmount() {
87
+ live = false;
88
+ for (const off of unsubscribe)
89
+ off();
90
+ root.remove();
91
+ },
92
+ };
93
+ }
94
+ //# sourceMappingURL=summary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"summary.js","sourceRoot":"","sources":["../src/summary.ts"],"names":[],"mappings":"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"}
package/dist/widget.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { FormRuntime, RendererRegistry, UINode } from '@texaryn/core';
1
+ import type { FormMessages, FormRuntime, RendererRegistry, UINode } from '@texaryn/core';
2
2
  /**
3
3
  * A widget owns one DOM subtree for one node. `update` may hand it a
4
4
  * different node than it mounted with: after an array move the row keeps
@@ -19,6 +19,8 @@ export interface RenderContext {
19
19
  runtime: FormRuntime;
20
20
  registry: RendererRegistry<WidgetFactory>;
21
21
  idPrefix: string;
22
+ /** Replaced whole by `Mount.setMessages`; widgets read it on every render rather than capturing it. */
23
+ messages: FormMessages;
22
24
  mountChild(node: UINode): NodeBinding;
23
25
  }
24
26
  //# sourceMappingURL=widget.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"widget.d.ts","sourceRoot":"","sources":["../src/widget.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAE1E;;;;GAIG;AACH,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,WAAW,CAAA;IACpB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,OAAO,IAAI,IAAI,CAAA;CAChB;AAED,MAAM,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,KAAK,SAAS,CAAA;AAE3E,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAA;IAC7B,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,OAAO,IAAI,IAAI,CAAA;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,WAAW,CAAA;IACpB,QAAQ,EAAE,gBAAgB,CAAC,aAAa,CAAC,CAAA;IACzC,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAAA;CACtC"}
1
+ {"version":3,"file":"widget.d.ts","sourceRoot":"","sources":["../src/widget.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAExF;;;;GAIG;AACH,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,WAAW,CAAA;IACpB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,OAAO,IAAI,IAAI,CAAA;CAChB;AAED,MAAM,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,KAAK,SAAS,CAAA;AAE3E,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAA;IAC7B,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,OAAO,IAAI,IAAI,CAAA;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,WAAW,CAAA;IACpB,QAAQ,EAAE,gBAAgB,CAAC,aAAa,CAAC,CAAA;IACzC,QAAQ,EAAE,MAAM,CAAA;IAChB,uGAAuG;IACvG,QAAQ,EAAE,YAAY,CAAA;IACtB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAAA;CACtC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@texaryn/web-components",
3
- "version": "0.3.4",
3
+ "version": "0.4.0",
4
4
  "description": "A <texaryn-form> custom element over the Texaryn runtime, with native default widgets",
5
5
  "keywords": [
6
6
  "web-components",
@@ -43,11 +43,11 @@
43
43
  "CHANGELOG.md"
44
44
  ],
45
45
  "dependencies": {
46
- "@texaryn/core": "^0.11.0"
46
+ "@texaryn/core": "^0.12.0"
47
47
  },
48
48
  "devDependencies": {
49
49
  "jsdom": "^25.0.0",
50
- "@texaryn/schema-json": "0.6.0"
50
+ "@texaryn/schema-json": "0.6.1"
51
51
  },
52
52
  "scripts": {
53
53
  "build": "tsc --build"
@@ -1,17 +0,0 @@
1
- /**
2
- * Accessible names for the controls an array renders.
3
- *
4
- * A deliberate reimplementation rather than an import: this package depends on
5
- * no other binding. Nothing here is renderer specific, and it is now the third
6
- * copy, so a framework-neutral home is overdue; that move belongs in its own
7
- * change rather than riding along with an accessibility fix.
8
- *
9
- * The name carries the current 1-based position, because that is what a person
10
- * means by "the second contact"; the stable item id is implementation identity.
11
- * The row's own value is deliberately unused: mutable, often blank, frequently
12
- * duplicated, sometimes sensitive.
13
- */
14
- export declare function removeActionName(position: number, itemTitle: string | undefined, arrayTitle: string | undefined): string;
15
- export declare function moveUpActionName(position: number, itemTitle: string | undefined, arrayTitle: string | undefined): string;
16
- export declare function addActionName(itemTitle: string | undefined, arrayTitle: string | undefined): string;
17
- //# 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;;;;;;;;;;;;GAYG;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,28 +0,0 @@
1
- /**
2
- * Accessible names for the controls an array renders.
3
- *
4
- * A deliberate reimplementation rather than an import: this package depends on
5
- * no other binding. Nothing here is renderer specific, and it is now the third
6
- * copy, so a framework-neutral home is overdue; that move belongs in its own
7
- * change rather than riding along with an accessibility fix.
8
- *
9
- * The name carries the current 1-based position, because that is what a person
10
- * means by "the second contact"; the stable item id is implementation identity.
11
- * The row's own value is deliberately unused: mutable, often blank, frequently
12
- * duplicated, sometimes sensitive.
13
- */
14
- export function removeActionName(position, itemTitle, arrayTitle) {
15
- return withContainer(`Remove ${itemTitle ?? 'item'} ${position}`, 'from', arrayTitle);
16
- }
17
- export function moveUpActionName(position, itemTitle, arrayTitle) {
18
- return withContainer(`Move up ${itemTitle ?? 'item'} ${position}`, 'in', arrayTitle);
19
- }
20
- export function addActionName(itemTitle, arrayTitle) {
21
- if (arrayTitle !== undefined)
22
- return `Add item to ${arrayTitle}`;
23
- return itemTitle === undefined ? 'Add item' : `Add ${itemTitle}`;
24
- }
25
- function withContainer(name, preposition, arrayTitle) {
26
- return arrayTitle === undefined ? name : `${name} ${preposition} ${arrayTitle}`;
27
- }
28
- //# sourceMappingURL=action-names.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"action-names.js","sourceRoot":"","sources":["../src/action-names.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;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"}