@fieldia/widgets 0.9.1 → 0.10.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/package.json +2 -2
- package/src/index.d.mts +2 -0
- package/src/index.d.ts +2 -0
- package/src/index.js +4 -0
- package/src/index.js.map +1 -1
- package/src/index.mjs +2 -0
- package/src/index.mjs.map +1 -1
- package/src/lib/address.d.mts +4 -0
- package/src/lib/address.d.ts +4 -0
- package/src/lib/address.js +105 -0
- package/src/lib/address.js.map +1 -0
- package/src/lib/address.mjs +100 -0
- package/src/lib/address.mjs.map +1 -0
- package/src/lib/cards.d.mts +2 -0
- package/src/lib/cards.d.ts +2 -0
- package/src/lib/cards.js +152 -0
- package/src/lib/cards.js.map +1 -0
- package/src/lib/cards.mjs +148 -0
- package/src/lib/cards.mjs.map +1 -0
- package/src/lib/choice-images.d.mts +2 -0
- package/src/lib/choice-images.d.ts +2 -0
- package/src/lib/choice-images.js +99 -0
- package/src/lib/choice-images.js.map +1 -0
- package/src/lib/choice-images.mjs +95 -0
- package/src/lib/choice-images.mjs.map +1 -0
- package/src/lib/choice-rules.d.mts +22 -0
- package/src/lib/choice-rules.d.ts +22 -0
- package/src/lib/choice-rules.js +46 -0
- package/src/lib/choice-rules.js.map +1 -0
- package/src/lib/choice-rules.mjs +41 -0
- package/src/lib/choice-rules.mjs.map +1 -0
- package/src/lib/choice-tags.d.mts +17 -0
- package/src/lib/choice-tags.d.ts +17 -0
- package/src/lib/choice-tags.js +187 -0
- package/src/lib/choice-tags.js.map +1 -0
- package/src/lib/choice-tags.mjs +182 -0
- package/src/lib/choice-tags.mjs.map +1 -0
- package/src/lib/choices-from.d.mts +8 -0
- package/src/lib/choices-from.d.ts +8 -0
- package/src/lib/choices-from.js +63 -0
- package/src/lib/choices-from.js.map +1 -0
- package/src/lib/choices-from.mjs +60 -0
- package/src/lib/choices-from.mjs.map +1 -0
- package/src/lib/display.js +4 -3
- package/src/lib/display.js.map +1 -1
- package/src/lib/display.mjs +5 -4
- package/src/lib/display.mjs.map +1 -1
- package/src/lib/extras.js +8 -4
- package/src/lib/extras.js.map +1 -1
- package/src/lib/extras.mjs +8 -4
- package/src/lib/extras.mjs.map +1 -1
- package/src/lib/files.d.mts +2 -0
- package/src/lib/files.d.ts +2 -0
- package/src/lib/files.js +180 -80
- package/src/lib/files.js.map +1 -1
- package/src/lib/files.mjs +179 -80
- package/src/lib/files.mjs.map +1 -1
- package/src/lib/focus-trap.d.mts +7 -0
- package/src/lib/focus-trap.d.ts +7 -0
- package/src/lib/focus-trap.js +26 -0
- package/src/lib/focus-trap.js.map +1 -0
- package/src/lib/focus-trap.mjs +23 -0
- package/src/lib/focus-trap.mjs.map +1 -0
- package/src/lib/icons.js +1 -0
- package/src/lib/icons.js.map +1 -1
- package/src/lib/icons.mjs +1 -0
- package/src/lib/icons.mjs.map +1 -1
- package/src/lib/kind-parts.d.mts +56 -0
- package/src/lib/kind-parts.d.ts +56 -0
- package/src/lib/kind-parts.js +121 -0
- package/src/lib/kind-parts.js.map +1 -0
- package/src/lib/kind-parts.mjs +107 -0
- package/src/lib/kind-parts.mjs.map +1 -0
- package/src/lib/labels.d.mts +80 -0
- package/src/lib/labels.d.ts +80 -0
- package/src/lib/labels.js +107 -189
- package/src/lib/labels.js.map +1 -1
- package/src/lib/labels.mjs +107 -189
- package/src/lib/labels.mjs.map +1 -1
- package/src/lib/layout-styles.d.mts +11 -0
- package/src/lib/layout-styles.d.ts +11 -0
- package/src/lib/layout-styles.js +176 -0
- package/src/lib/layout-styles.js.map +1 -0
- package/src/lib/layout-styles.mjs +173 -0
- package/src/lib/layout-styles.mjs.map +1 -0
- package/src/lib/limits.d.mts +20 -0
- package/src/lib/limits.d.ts +20 -0
- package/src/lib/limits.js +71 -0
- package/src/lib/limits.js.map +1 -0
- package/src/lib/limits.mjs +66 -0
- package/src/lib/limits.mjs.map +1 -0
- package/src/lib/line-moves.d.mts +8 -0
- package/src/lib/line-moves.d.ts +8 -0
- package/src/lib/line-moves.js +20 -0
- package/src/lib/line-moves.js.map +1 -0
- package/src/lib/line-moves.mjs +17 -0
- package/src/lib/line-moves.mjs.map +1 -0
- package/src/lib/lines.js +85 -7
- package/src/lib/lines.js.map +1 -1
- package/src/lib/lines.mjs +86 -8
- package/src/lib/lines.mjs.map +1 -1
- package/src/lib/locales/all.d.mts +8 -0
- package/src/lib/locales/all.d.ts +8 -0
- package/src/lib/locales/all.js +13 -0
- package/src/lib/locales/all.js.map +1 -0
- package/src/lib/locales/all.mjs +10 -0
- package/src/lib/locales/all.mjs.map +1 -0
- package/src/lib/locales/ar.d.mts +3 -0
- package/src/lib/locales/ar.d.ts +3 -0
- package/src/lib/locales/ar.js +104 -0
- package/src/lib/locales/ar.js.map +1 -0
- package/src/lib/locales/ar.mjs +101 -0
- package/src/lib/locales/ar.mjs.map +1 -0
- package/src/lib/locales/de.d.mts +3 -0
- package/src/lib/locales/de.d.ts +3 -0
- package/src/lib/locales/de.js +104 -0
- package/src/lib/locales/de.js.map +1 -0
- package/src/lib/locales/de.mjs +101 -0
- package/src/lib/locales/de.mjs.map +1 -0
- package/src/lib/locales/fr.d.mts +3 -0
- package/src/lib/locales/fr.d.ts +3 -0
- package/src/lib/locales/fr.js +104 -0
- package/src/lib/locales/fr.js.map +1 -0
- package/src/lib/locales/fr.mjs +101 -0
- package/src/lib/locales/fr.mjs.map +1 -0
- package/src/lib/matrix.d.mts +10 -0
- package/src/lib/matrix.d.ts +10 -0
- package/src/lib/matrix.js +86 -0
- package/src/lib/matrix.js.map +1 -0
- package/src/lib/matrix.mjs +82 -0
- package/src/lib/matrix.mjs.map +1 -0
- package/src/lib/numbers.d.mts +7 -0
- package/src/lib/numbers.d.ts +7 -0
- package/src/lib/numbers.js +15 -0
- package/src/lib/numbers.js.map +1 -1
- package/src/lib/numbers.mjs +14 -0
- package/src/lib/numbers.mjs.map +1 -1
- package/src/lib/progress.js +8 -4
- package/src/lib/progress.js.map +1 -1
- package/src/lib/progress.mjs +8 -4
- package/src/lib/progress.mjs.map +1 -1
- package/src/lib/ranking.d.mts +2 -0
- package/src/lib/ranking.d.ts +2 -0
- package/src/lib/ranking.js +172 -0
- package/src/lib/ranking.js.map +1 -0
- package/src/lib/ranking.mjs +168 -0
- package/src/lib/ranking.mjs.map +1 -0
- package/src/lib/relations.d.mts +1 -1
- package/src/lib/relations.d.ts +1 -1
- package/src/lib/relations.js +43 -18
- package/src/lib/relations.js.map +1 -1
- package/src/lib/relations.mjs +43 -18
- package/src/lib/relations.mjs.map +1 -1
- package/src/lib/shuffle.d.mts +7 -0
- package/src/lib/shuffle.d.ts +7 -0
- package/src/lib/shuffle.js +60 -0
- package/src/lib/shuffle.js.map +1 -0
- package/src/lib/shuffle.mjs +57 -0
- package/src/lib/shuffle.mjs.map +1 -0
- package/src/lib/signature.d.mts +2 -0
- package/src/lib/signature.d.ts +2 -0
- package/src/lib/signature.js +223 -0
- package/src/lib/signature.js.map +1 -0
- package/src/lib/signature.mjs +219 -0
- package/src/lib/signature.mjs.map +1 -0
- package/src/lib/slider.d.mts +10 -0
- package/src/lib/slider.d.ts +10 -0
- package/src/lib/slider.js +57 -0
- package/src/lib/slider.js.map +1 -0
- package/src/lib/slider.mjs +53 -0
- package/src/lib/slider.mjs.map +1 -0
- package/src/lib/styles-choices.d.mts +7 -0
- package/src/lib/styles-choices.d.ts +7 -0
- package/src/lib/styles-choices.js +47 -0
- package/src/lib/styles-choices.js.map +1 -0
- package/src/lib/styles-choices.mjs +44 -0
- package/src/lib/styles-choices.mjs.map +1 -0
- package/src/lib/styles-inputs.d.mts +9 -0
- package/src/lib/styles-inputs.d.ts +9 -0
- package/src/lib/styles-inputs.js +41 -0
- package/src/lib/styles-inputs.js.map +1 -0
- package/src/lib/styles-inputs.mjs +38 -0
- package/src/lib/styles-inputs.mjs.map +1 -0
- package/src/lib/styles-kinds.d.mts +7 -0
- package/src/lib/styles-kinds.d.ts +7 -0
- package/src/lib/styles-kinds.js +119 -0
- package/src/lib/styles-kinds.js.map +1 -0
- package/src/lib/styles-kinds.mjs +116 -0
- package/src/lib/styles-kinds.mjs.map +1 -0
- package/src/lib/styles.d.mts +2 -14
- package/src/lib/styles.d.ts +2 -14
- package/src/lib/styles.js +180 -66
- package/src/lib/styles.js.map +1 -1
- package/src/lib/styles.mjs +180 -66
- package/src/lib/styles.mjs.map +1 -1
- package/src/lib/units.d.mts +10 -0
- package/src/lib/units.d.ts +10 -0
- package/src/lib/units.js +19 -0
- package/src/lib/units.js.map +1 -0
- package/src/lib/units.mjs +16 -0
- package/src/lib/units.mjs.map +1 -0
- package/src/lib/widgets.js +215 -57
- package/src/lib/widgets.js.map +1 -1
- package/src/lib/widgets.mjs +215 -57
- package/src/lib/widgets.mjs.map +1 -1
- package/src/lib/yes-no.d.mts +9 -0
- package/src/lib/yes-no.d.ts +9 -0
- package/src/lib/yes-no.js +58 -0
- package/src/lib/yes-no.js.map +1 -0
- package/src/lib/yes-no.mjs +54 -0
- package/src/lib/yes-no.mjs.map +1 -0
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.rightToLeft = exports.fillIn = exports.wordsFor = void 0;
|
|
4
|
+
exports.maker = maker;
|
|
5
|
+
exports.setAttr = setAttr;
|
|
6
|
+
exports.setHidden = setHidden;
|
|
7
|
+
exports.setText = setText;
|
|
8
|
+
exports.describeState = describeState;
|
|
9
|
+
exports.announcer = announcer;
|
|
10
|
+
exports.clearSelection = clearSelection;
|
|
11
|
+
exports.askFirst = askFirst;
|
|
12
|
+
const labels_1 = require("./labels");
|
|
13
|
+
/** An element with its attributes and children, in one call. */
|
|
14
|
+
function maker(document) {
|
|
15
|
+
return (tag, attrs = {}, ...children) => {
|
|
16
|
+
const element = document.createElement(tag);
|
|
17
|
+
for (const [name, value] of Object.entries(attrs))
|
|
18
|
+
if (value !== undefined)
|
|
19
|
+
element.setAttribute(name, value);
|
|
20
|
+
element.append(...children);
|
|
21
|
+
return element;
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
/** The words a widget shows: the page's, its language's, or English (a language the one-tag script was not given). */
|
|
25
|
+
const wordsFor = (labels, locale) => labels ?? labels_1.WIDGET_LABELS[locale ?? 'en'] ?? labels_1.WIDGET_LABELS.en;
|
|
26
|
+
exports.wordsFor = wordsFor;
|
|
27
|
+
/** `{name}` and the like filled in. */
|
|
28
|
+
const fillIn = (template, values) => template.replace(/\{(\w+)\}/g, (match, key) => (key in values ? String(values[key]) : match));
|
|
29
|
+
exports.fillIn = fillIn;
|
|
30
|
+
/**
|
|
31
|
+
* An attribute set, or taken away with null, only when that changes it.
|
|
32
|
+
* Every field is brought up to date at each change of a form; writing what is
|
|
33
|
+
* there already still has the browser look at the page anew, which on a big
|
|
34
|
+
* page is most of the time a key takes.
|
|
35
|
+
*/
|
|
36
|
+
function setAttr(element, name, value) {
|
|
37
|
+
if (element.getAttribute(name) === value)
|
|
38
|
+
return;
|
|
39
|
+
if (value === null)
|
|
40
|
+
element.removeAttribute(name);
|
|
41
|
+
else
|
|
42
|
+
element.setAttribute(name, value);
|
|
43
|
+
}
|
|
44
|
+
/** Shown or hidden, written only when that changes. */
|
|
45
|
+
function setHidden(element, hidden) {
|
|
46
|
+
if (element.hidden !== hidden)
|
|
47
|
+
element.hidden = hidden;
|
|
48
|
+
}
|
|
49
|
+
/** Words written only when they change: written again, they would be new words to lay out. */
|
|
50
|
+
function setText(element, text) {
|
|
51
|
+
if (element.textContent !== text)
|
|
52
|
+
element.textContent = text;
|
|
53
|
+
}
|
|
54
|
+
/** Whether the answer is wrong, and the help and error that describe it, on the element assistive technology reads. */
|
|
55
|
+
function describeState(element, state) {
|
|
56
|
+
setAttr(element, 'aria-invalid', String(state.invalid));
|
|
57
|
+
setAttr(element, 'aria-describedby', state.describedBy || null);
|
|
58
|
+
}
|
|
59
|
+
/** Words said to screen readers when something moves or goes, without taking the focus. */
|
|
60
|
+
function announcer(make) {
|
|
61
|
+
const element = make('div', { class: 'fd-announce', role: 'status', 'aria-live': 'polite' });
|
|
62
|
+
return {
|
|
63
|
+
element,
|
|
64
|
+
say(text) {
|
|
65
|
+
// The same words twice are still said: the region is emptied first.
|
|
66
|
+
element.textContent = '';
|
|
67
|
+
element.textContent = text;
|
|
68
|
+
},
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
/** Whether the element sits in a right-to-left page, where left is forward. */
|
|
72
|
+
const rightToLeft = (element) => element.closest('[dir]')?.getAttribute('dir') === 'rtl';
|
|
73
|
+
exports.rightToLeft = rightToLeft;
|
|
74
|
+
/**
|
|
75
|
+
* "Clear selection", as Google Forms has it: under a single choice that need not be answered, once something is
|
|
76
|
+
* picked — a radio, once picked, cannot be unpicked; nor can a slider, once slid.
|
|
77
|
+
*/
|
|
78
|
+
function clearSelection(document, words, clear) {
|
|
79
|
+
const button = maker(document)('button', { type: 'button', class: 'fd-choice-clear', hidden: '' }, words.clearSelection);
|
|
80
|
+
button.addEventListener('click', clear);
|
|
81
|
+
let open = false;
|
|
82
|
+
return {
|
|
83
|
+
button,
|
|
84
|
+
/** Whether the answer may be left out: not required, and not read-only. */
|
|
85
|
+
allow(state) {
|
|
86
|
+
open = !state.required && !state.readonly;
|
|
87
|
+
},
|
|
88
|
+
show(picked) {
|
|
89
|
+
setHidden(button, !(open && picked));
|
|
90
|
+
},
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Removing asks first, in place: "Remove report.pdf? Remove · Keep", the
|
|
95
|
+
* focus on Keep, Escape keeping it. `ask` shows the question; `then` hears
|
|
96
|
+
* the answer, true to remove.
|
|
97
|
+
*/
|
|
98
|
+
function askFirst(make, words) {
|
|
99
|
+
const question = make('span');
|
|
100
|
+
const yes = make('button', { type: 'button', class: 'fd-button fd-button-link' }, words.removeFile);
|
|
101
|
+
const no = make('button', { type: 'button', class: 'fd-button fd-button-link' }, words.keep);
|
|
102
|
+
const element = make('div', { class: 'fd-file-confirm', hidden: '' }, question, yes, no);
|
|
103
|
+
let then = (_remove) => undefined;
|
|
104
|
+
const answered = (remove) => {
|
|
105
|
+
element.hidden = true;
|
|
106
|
+
then(remove);
|
|
107
|
+
};
|
|
108
|
+
yes.addEventListener('click', () => answered(true));
|
|
109
|
+
no.addEventListener('click', () => answered(false));
|
|
110
|
+
element.addEventListener('keydown', (event) => event.key === 'Escape' && answered(false));
|
|
111
|
+
return {
|
|
112
|
+
element,
|
|
113
|
+
ask(text, answer) {
|
|
114
|
+
question.textContent = text;
|
|
115
|
+
then = answer;
|
|
116
|
+
element.hidden = false;
|
|
117
|
+
no.focus();
|
|
118
|
+
},
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=kind-parts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kind-parts.js","sourceRoot":"","sources":["../../../../../libs/widgets/src/lib/kind-parts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { WIDGET_LABELS } from './labels.mjs';
|
|
2
|
+
/** An element with its attributes and children, in one call. */
|
|
3
|
+
export function maker(document) {
|
|
4
|
+
return (tag, attrs = {}, ...children) => {
|
|
5
|
+
const element = document.createElement(tag);
|
|
6
|
+
for (const [name, value] of Object.entries(attrs))
|
|
7
|
+
if (value !== undefined)
|
|
8
|
+
element.setAttribute(name, value);
|
|
9
|
+
element.append(...children);
|
|
10
|
+
return element;
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
/** The words a widget shows: the page's, its language's, or English (a language the one-tag script was not given). */
|
|
14
|
+
export const wordsFor = (labels, locale) => labels ?? WIDGET_LABELS[locale ?? 'en'] ?? WIDGET_LABELS.en;
|
|
15
|
+
/** `{name}` and the like filled in. */
|
|
16
|
+
export const fillIn = (template, values) => template.replace(/\{(\w+)\}/g, (match, key) => (key in values ? String(values[key]) : match));
|
|
17
|
+
/**
|
|
18
|
+
* An attribute set, or taken away with null, only when that changes it.
|
|
19
|
+
* Every field is brought up to date at each change of a form; writing what is
|
|
20
|
+
* there already still has the browser look at the page anew, which on a big
|
|
21
|
+
* page is most of the time a key takes.
|
|
22
|
+
*/
|
|
23
|
+
export function setAttr(element, name, value) {
|
|
24
|
+
if (element.getAttribute(name) === value)
|
|
25
|
+
return;
|
|
26
|
+
if (value === null)
|
|
27
|
+
element.removeAttribute(name);
|
|
28
|
+
else
|
|
29
|
+
element.setAttribute(name, value);
|
|
30
|
+
}
|
|
31
|
+
/** Shown or hidden, written only when that changes. */
|
|
32
|
+
export function setHidden(element, hidden) {
|
|
33
|
+
if (element.hidden !== hidden)
|
|
34
|
+
element.hidden = hidden;
|
|
35
|
+
}
|
|
36
|
+
/** Words written only when they change: written again, they would be new words to lay out. */
|
|
37
|
+
export function setText(element, text) {
|
|
38
|
+
if (element.textContent !== text)
|
|
39
|
+
element.textContent = text;
|
|
40
|
+
}
|
|
41
|
+
/** Whether the answer is wrong, and the help and error that describe it, on the element assistive technology reads. */
|
|
42
|
+
export function describeState(element, state) {
|
|
43
|
+
setAttr(element, 'aria-invalid', String(state.invalid));
|
|
44
|
+
setAttr(element, 'aria-describedby', state.describedBy || null);
|
|
45
|
+
}
|
|
46
|
+
/** Words said to screen readers when something moves or goes, without taking the focus. */
|
|
47
|
+
export function announcer(make) {
|
|
48
|
+
const element = make('div', { class: 'fd-announce', role: 'status', 'aria-live': 'polite' });
|
|
49
|
+
return {
|
|
50
|
+
element,
|
|
51
|
+
say(text) {
|
|
52
|
+
// The same words twice are still said: the region is emptied first.
|
|
53
|
+
element.textContent = '';
|
|
54
|
+
element.textContent = text;
|
|
55
|
+
},
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
/** Whether the element sits in a right-to-left page, where left is forward. */
|
|
59
|
+
export const rightToLeft = (element) => element.closest('[dir]')?.getAttribute('dir') === 'rtl';
|
|
60
|
+
/**
|
|
61
|
+
* "Clear selection", as Google Forms has it: under a single choice that need not be answered, once something is
|
|
62
|
+
* picked — a radio, once picked, cannot be unpicked; nor can a slider, once slid.
|
|
63
|
+
*/
|
|
64
|
+
export function clearSelection(document, words, clear) {
|
|
65
|
+
const button = maker(document)('button', { type: 'button', class: 'fd-choice-clear', hidden: '' }, words.clearSelection);
|
|
66
|
+
button.addEventListener('click', clear);
|
|
67
|
+
let open = false;
|
|
68
|
+
return {
|
|
69
|
+
button,
|
|
70
|
+
/** Whether the answer may be left out: not required, and not read-only. */
|
|
71
|
+
allow(state) {
|
|
72
|
+
open = !state.required && !state.readonly;
|
|
73
|
+
},
|
|
74
|
+
show(picked) {
|
|
75
|
+
setHidden(button, !(open && picked));
|
|
76
|
+
},
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Removing asks first, in place: "Remove report.pdf? Remove · Keep", the
|
|
81
|
+
* focus on Keep, Escape keeping it. `ask` shows the question; `then` hears
|
|
82
|
+
* the answer, true to remove.
|
|
83
|
+
*/
|
|
84
|
+
export function askFirst(make, words) {
|
|
85
|
+
const question = make('span');
|
|
86
|
+
const yes = make('button', { type: 'button', class: 'fd-button fd-button-link' }, words.removeFile);
|
|
87
|
+
const no = make('button', { type: 'button', class: 'fd-button fd-button-link' }, words.keep);
|
|
88
|
+
const element = make('div', { class: 'fd-file-confirm', hidden: '' }, question, yes, no);
|
|
89
|
+
let then = (_remove) => undefined;
|
|
90
|
+
const answered = (remove) => {
|
|
91
|
+
element.hidden = true;
|
|
92
|
+
then(remove);
|
|
93
|
+
};
|
|
94
|
+
yes.addEventListener('click', () => answered(true));
|
|
95
|
+
no.addEventListener('click', () => answered(false));
|
|
96
|
+
element.addEventListener('keydown', (event) => event.key === 'Escape' && answered(false));
|
|
97
|
+
return {
|
|
98
|
+
element,
|
|
99
|
+
ask(text, answer) {
|
|
100
|
+
question.textContent = text;
|
|
101
|
+
then = answer;
|
|
102
|
+
element.hidden = false;
|
|
103
|
+
no.focus();
|
|
104
|
+
},
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=kind-parts.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kind-parts.mjs","sourceRoot":"","sources":["../../../../../libs/widgets/src/lib/kind-parts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAqB,MAAM,UAAU,CAAC;AAU5D,gEAAgE;AAChE,MAAM,UAAU,KAAK,CAAC,QAAkB;IACtC,OAAO,CAAC,GAAG,EAAE,KAAK,GAAG,EAAE,EAAE,GAAG,QAAQ,EAAE,EAAE;QACtC,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAC5C,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,IAAI,KAAK,KAAK,SAAS;gBAAE,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC9G,OAAO,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC;QAC5B,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;AACJ,CAAC;AAED,sHAAsH;AACtH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,MAAgC,EAAE,MAA0B,EAAgB,EAAE,CAAC,MAAM,IAAI,aAAa,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,aAAa,CAAC,EAAE,CAAC;AAEpK,uCAAuC;AACvC,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,QAAgB,EAAE,MAAuC,EAAE,EAAE,CAClF,QAAQ,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,GAAW,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAExG;;;;;GAKG;AACH,MAAM,UAAU,OAAO,CAAC,OAAgB,EAAE,IAAY,EAAE,KAAoB;IAC1E,IAAI,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,KAAK;QAAE,OAAO;IACjD,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;;QAC7C,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACzC,CAAC;AAED,uDAAuD;AACvD,MAAM,UAAU,SAAS,CAAC,OAAoB,EAAE,MAAe;IAC7D,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM;QAAE,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;AACzD,CAAC;AAED,8FAA8F;AAC9F,MAAM,UAAU,OAAO,CAAC,OAAa,EAAE,IAAY;IACjD,IAAI,OAAO,CAAC,WAAW,KAAK,IAAI;QAAE,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;AAC/D,CAAC;AAED,uHAAuH;AACvH,MAAM,UAAU,aAAa,CAAC,OAAoB,EAAE,KAAiD;IACnG,OAAO,CAAC,OAAO,EAAE,cAAc,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IACxD,OAAO,CAAC,OAAO,EAAE,kBAAkB,EAAE,KAAK,CAAC,WAAW,IAAI,IAAI,CAAC,CAAC;AAClE,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,SAAS,CAAC,IAAU;IAClC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC7F,OAAO;QACL,OAAO;QACP,GAAG,CAAC,IAAY;YACd,oEAAoE;YACpE,OAAO,CAAC,WAAW,GAAG,EAAE,CAAC;YACzB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;QAC7B,CAAC;KACF,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,OAAgB,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC;AAEzG;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,QAAkB,EAAE,KAAmB,EAAE,KAAiB;IACvF,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;IACzH,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACxC,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,OAAO;QACL,MAAM;QACN,2EAA2E;QAC3E,KAAK,CAAC,KAAkB;YACtB,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC5C,CAAC;QACD,IAAI,CAAC,MAAe;YAClB,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC;QACvC,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,QAAQ,CAAC,IAAU,EAAE,KAAmB;IACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,0BAA0B,EAAE,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IACpG,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,0BAA0B,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7F,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;IACzF,IAAI,IAAI,GAAG,CAAC,OAAgB,EAAE,EAAE,CAAC,SAAiB,CAAC;IACnD,MAAM,QAAQ,GAAG,CAAC,MAAe,EAAE,EAAE;QACnC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,MAAM,CAAC,CAAC;IACf,CAAC,CAAC;IACF,GAAG,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IACpD,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IACpD,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1F,OAAO;QACL,OAAO;QACP,GAAG,CAAC,IAAY,EAAE,MAAiC;YACjD,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC;YAC5B,IAAI,GAAG,MAAM,CAAC;YACd,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC;YACvB,EAAE,CAAC,KAAK,EAAE,CAAC;QACb,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/src/lib/labels.d.mts
CHANGED
|
@@ -9,6 +9,8 @@ export interface WidgetLabels {
|
|
|
9
9
|
addSection: string;
|
|
10
10
|
addNote: string;
|
|
11
11
|
deleteLine: string;
|
|
12
|
+
/** A line of a table, as a person is told of it: `{n}` counts from 1. */
|
|
13
|
+
lineN: string;
|
|
12
14
|
/** Heads the row that adds up a table's number columns. */
|
|
13
15
|
total: string;
|
|
14
16
|
/** A problem on one line of a table, under the table. `{n}` counts from 1. */
|
|
@@ -27,6 +29,11 @@ export interface WidgetLabels {
|
|
|
27
29
|
chooseColumns: string;
|
|
28
30
|
/** The button beside a date that opens its calendar. */
|
|
29
31
|
chooseDate: string;
|
|
32
|
+
/** The choice after the options for an answer of one's own, and its box. */
|
|
33
|
+
other: string;
|
|
34
|
+
otherAnswer: string;
|
|
35
|
+
/** Under a single choice that need not be answered, once one is picked: takes the pick back. */
|
|
36
|
+
clearSelection: string;
|
|
30
37
|
previousMonth: string;
|
|
31
38
|
nextMonth: string;
|
|
32
39
|
/** Heads the column of week numbers: short, and in full. */
|
|
@@ -55,6 +62,79 @@ export interface WidgetLabels {
|
|
|
55
62
|
replace: string;
|
|
56
63
|
removeFile: string;
|
|
57
64
|
dropHere: string;
|
|
65
|
+
/**
|
|
66
|
+
* Several files: the picker's words, an image field's, and the drop zone's;
|
|
67
|
+
* the limits said before anyone tries (`{size}`, `{max}`); how many there are
|
|
68
|
+
* (`{n}`); why some were not added (`{name}`); removing one, asked first.
|
|
69
|
+
*/
|
|
70
|
+
addFiles: string;
|
|
71
|
+
addPhotos: string;
|
|
72
|
+
dropThem: string;
|
|
73
|
+
upToSize: string;
|
|
74
|
+
upToEach: string;
|
|
75
|
+
upToFiles: string;
|
|
76
|
+
fileCount: string;
|
|
77
|
+
oneFile: string;
|
|
78
|
+
fileCountOf: string;
|
|
79
|
+
tooMany: string;
|
|
80
|
+
alreadyAdded: string;
|
|
81
|
+
removeAsk: string;
|
|
82
|
+
keep: string;
|
|
83
|
+
/** A file opened to look at: going through them, which one of how many (`{n}` of `{total}`), and what has no preview. */
|
|
84
|
+
previous: string;
|
|
85
|
+
next: string;
|
|
86
|
+
download: string;
|
|
87
|
+
close: string;
|
|
88
|
+
fileAt: string;
|
|
89
|
+
noPreview: string;
|
|
58
90
|
invalidJson: string;
|
|
91
|
+
/** A signature: the pad, the words on it while it is blank, the box to type a name in instead, and wiping it. */
|
|
92
|
+
signaturePad: string;
|
|
93
|
+
signHere: string;
|
|
94
|
+
typeSignature: string;
|
|
95
|
+
clearDrawing: string;
|
|
96
|
+
/** Takes the last stroke away; a picture of a signature, uploaded instead. */
|
|
97
|
+
undo: string;
|
|
98
|
+
uploadSignature: string;
|
|
99
|
+
/** A slider not slid yet, as a screen reader reads it. */
|
|
100
|
+
notAnswered: string;
|
|
101
|
+
/** A ranking's buttons for a line (`{label}`), and where it went, said aloud: `{n}` of `{total}`, counted from 1. */
|
|
102
|
+
moveUp: string;
|
|
103
|
+
moveDown: string;
|
|
104
|
+
movedTo: string;
|
|
105
|
+
/** An address's parts. */
|
|
106
|
+
addressStreet: string;
|
|
107
|
+
addressCity: string;
|
|
108
|
+
addressLine2: string;
|
|
109
|
+
addressRegion: string;
|
|
110
|
+
addressPostcode: string;
|
|
111
|
+
addressCountry: string;
|
|
112
|
+
/** A repeating group: a card's title (`{n}` counts from 1), the button that adds one, and a card gone, said aloud. */
|
|
113
|
+
entry: string;
|
|
114
|
+
addAnother: string;
|
|
115
|
+
/** A repeating group's card copied right after it: `{name}` is its title. */
|
|
116
|
+
copy: string;
|
|
117
|
+
removed: string;
|
|
118
|
+
/** Choices from the app's list: while they load, a button to load them again, and a value the list no longer has (`{name}`). */
|
|
119
|
+
loadingChoices: string;
|
|
120
|
+
choicesFailed: string;
|
|
121
|
+
notOffered: string;
|
|
122
|
+
/** A yes or no as two buttons. */
|
|
123
|
+
yes: string;
|
|
124
|
+
no: string;
|
|
125
|
+
/** Said once as many boxes are ticked as a question takes (`{n}`). */
|
|
126
|
+
upTo: string;
|
|
127
|
+
/** A ranking: taking the order shown as the answer. */
|
|
128
|
+
keepOrder: string;
|
|
129
|
+
/** A rating's point, as a screen reader names it: `{n}` of `{max}`. */
|
|
130
|
+
ofMax: string;
|
|
131
|
+
/** How many more characters a box with a most takes, said to a screen reader once typing pauses. */
|
|
132
|
+
charactersLeft: string;
|
|
59
133
|
}
|
|
134
|
+
/**
|
|
135
|
+
* The widgets' words in every language Fieldia has. This package holds all
|
|
136
|
+
* four; the one-tag script holds English alone, and a page adds another
|
|
137
|
+
* language with that language's script (fieldia.ar.js, …), through the
|
|
138
|
+
* viewer's `addLanguage`.
|
|
139
|
+
*/
|
|
60
140
|
export declare const WIDGET_LABELS: Record<Locale, WidgetLabels>;
|
package/src/lib/labels.d.ts
CHANGED
|
@@ -9,6 +9,8 @@ export interface WidgetLabels {
|
|
|
9
9
|
addSection: string;
|
|
10
10
|
addNote: string;
|
|
11
11
|
deleteLine: string;
|
|
12
|
+
/** A line of a table, as a person is told of it: `{n}` counts from 1. */
|
|
13
|
+
lineN: string;
|
|
12
14
|
/** Heads the row that adds up a table's number columns. */
|
|
13
15
|
total: string;
|
|
14
16
|
/** A problem on one line of a table, under the table. `{n}` counts from 1. */
|
|
@@ -27,6 +29,11 @@ export interface WidgetLabels {
|
|
|
27
29
|
chooseColumns: string;
|
|
28
30
|
/** The button beside a date that opens its calendar. */
|
|
29
31
|
chooseDate: string;
|
|
32
|
+
/** The choice after the options for an answer of one's own, and its box. */
|
|
33
|
+
other: string;
|
|
34
|
+
otherAnswer: string;
|
|
35
|
+
/** Under a single choice that need not be answered, once one is picked: takes the pick back. */
|
|
36
|
+
clearSelection: string;
|
|
30
37
|
previousMonth: string;
|
|
31
38
|
nextMonth: string;
|
|
32
39
|
/** Heads the column of week numbers: short, and in full. */
|
|
@@ -55,6 +62,79 @@ export interface WidgetLabels {
|
|
|
55
62
|
replace: string;
|
|
56
63
|
removeFile: string;
|
|
57
64
|
dropHere: string;
|
|
65
|
+
/**
|
|
66
|
+
* Several files: the picker's words, an image field's, and the drop zone's;
|
|
67
|
+
* the limits said before anyone tries (`{size}`, `{max}`); how many there are
|
|
68
|
+
* (`{n}`); why some were not added (`{name}`); removing one, asked first.
|
|
69
|
+
*/
|
|
70
|
+
addFiles: string;
|
|
71
|
+
addPhotos: string;
|
|
72
|
+
dropThem: string;
|
|
73
|
+
upToSize: string;
|
|
74
|
+
upToEach: string;
|
|
75
|
+
upToFiles: string;
|
|
76
|
+
fileCount: string;
|
|
77
|
+
oneFile: string;
|
|
78
|
+
fileCountOf: string;
|
|
79
|
+
tooMany: string;
|
|
80
|
+
alreadyAdded: string;
|
|
81
|
+
removeAsk: string;
|
|
82
|
+
keep: string;
|
|
83
|
+
/** A file opened to look at: going through them, which one of how many (`{n}` of `{total}`), and what has no preview. */
|
|
84
|
+
previous: string;
|
|
85
|
+
next: string;
|
|
86
|
+
download: string;
|
|
87
|
+
close: string;
|
|
88
|
+
fileAt: string;
|
|
89
|
+
noPreview: string;
|
|
58
90
|
invalidJson: string;
|
|
91
|
+
/** A signature: the pad, the words on it while it is blank, the box to type a name in instead, and wiping it. */
|
|
92
|
+
signaturePad: string;
|
|
93
|
+
signHere: string;
|
|
94
|
+
typeSignature: string;
|
|
95
|
+
clearDrawing: string;
|
|
96
|
+
/** Takes the last stroke away; a picture of a signature, uploaded instead. */
|
|
97
|
+
undo: string;
|
|
98
|
+
uploadSignature: string;
|
|
99
|
+
/** A slider not slid yet, as a screen reader reads it. */
|
|
100
|
+
notAnswered: string;
|
|
101
|
+
/** A ranking's buttons for a line (`{label}`), and where it went, said aloud: `{n}` of `{total}`, counted from 1. */
|
|
102
|
+
moveUp: string;
|
|
103
|
+
moveDown: string;
|
|
104
|
+
movedTo: string;
|
|
105
|
+
/** An address's parts. */
|
|
106
|
+
addressStreet: string;
|
|
107
|
+
addressCity: string;
|
|
108
|
+
addressLine2: string;
|
|
109
|
+
addressRegion: string;
|
|
110
|
+
addressPostcode: string;
|
|
111
|
+
addressCountry: string;
|
|
112
|
+
/** A repeating group: a card's title (`{n}` counts from 1), the button that adds one, and a card gone, said aloud. */
|
|
113
|
+
entry: string;
|
|
114
|
+
addAnother: string;
|
|
115
|
+
/** A repeating group's card copied right after it: `{name}` is its title. */
|
|
116
|
+
copy: string;
|
|
117
|
+
removed: string;
|
|
118
|
+
/** Choices from the app's list: while they load, a button to load them again, and a value the list no longer has (`{name}`). */
|
|
119
|
+
loadingChoices: string;
|
|
120
|
+
choicesFailed: string;
|
|
121
|
+
notOffered: string;
|
|
122
|
+
/** A yes or no as two buttons. */
|
|
123
|
+
yes: string;
|
|
124
|
+
no: string;
|
|
125
|
+
/** Said once as many boxes are ticked as a question takes (`{n}`). */
|
|
126
|
+
upTo: string;
|
|
127
|
+
/** A ranking: taking the order shown as the answer. */
|
|
128
|
+
keepOrder: string;
|
|
129
|
+
/** A rating's point, as a screen reader names it: `{n}` of `{max}`. */
|
|
130
|
+
ofMax: string;
|
|
131
|
+
/** How many more characters a box with a most takes, said to a screen reader once typing pauses. */
|
|
132
|
+
charactersLeft: string;
|
|
59
133
|
}
|
|
134
|
+
/**
|
|
135
|
+
* The widgets' words in every language Fieldia has. This package holds all
|
|
136
|
+
* four; the one-tag script holds English alone, and a page adds another
|
|
137
|
+
* language with that language's script (fieldia.ar.js, …), through the
|
|
138
|
+
* viewer's `addLanguage`.
|
|
139
|
+
*/
|
|
60
140
|
export declare const WIDGET_LABELS: Record<Locale, WidgetLabels>;
|