@fieldia/widgets 0.9.2 → 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 +172 -60
- package/src/lib/styles.js.map +1 -1
- package/src/lib/styles.mjs +172 -60
- 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,101 @@
|
|
|
1
|
+
/** The widgets’ own words in French. */
|
|
2
|
+
export const fr = {
|
|
3
|
+
search: 'Rechercher…',
|
|
4
|
+
noResults: 'Aucun résultat',
|
|
5
|
+
remove: 'Retirer {name}',
|
|
6
|
+
clear: 'Effacer {label}',
|
|
7
|
+
addLine: 'Ajouter une ligne',
|
|
8
|
+
addSection: 'Ajouter une section',
|
|
9
|
+
addNote: 'Ajouter une note',
|
|
10
|
+
deleteLine: 'Supprimer la ligne',
|
|
11
|
+
lineN: 'ligne {n}',
|
|
12
|
+
total: 'Total',
|
|
13
|
+
lineProblem: 'Ligne {n} : {message}',
|
|
14
|
+
moreProblems: 'et {n} de plus',
|
|
15
|
+
chooseColumns: 'Choisir les colonnes',
|
|
16
|
+
createNamed: 'Créer « {name} »',
|
|
17
|
+
createAndEdit: 'Créer et modifier…',
|
|
18
|
+
searchMore: 'Rechercher plus…',
|
|
19
|
+
openNamed: 'Ouvrir {name}',
|
|
20
|
+
openLine: 'Ouvrir la ligne',
|
|
21
|
+
chooseDate: 'Choisir une date',
|
|
22
|
+
other: 'Autre :',
|
|
23
|
+
otherAnswer: 'Votre propre réponse',
|
|
24
|
+
clearSelection: 'Effacer la sélection',
|
|
25
|
+
previousMonth: 'Mois précédent',
|
|
26
|
+
nextMonth: 'Mois suivant',
|
|
27
|
+
weekShort: 'Sem.',
|
|
28
|
+
week: 'Semaine',
|
|
29
|
+
formatting: 'Mise en forme',
|
|
30
|
+
bold: 'Gras',
|
|
31
|
+
italic: 'Italique',
|
|
32
|
+
underline: 'Souligné',
|
|
33
|
+
textStyle: 'Style du texte',
|
|
34
|
+
paragraph: 'Paragraphe',
|
|
35
|
+
heading: 'Titre',
|
|
36
|
+
subheading: 'Sous-titre',
|
|
37
|
+
bulletList: 'Liste à puces',
|
|
38
|
+
numberList: 'Liste numérotée',
|
|
39
|
+
alignLeft: 'Aligner à gauche',
|
|
40
|
+
alignCenter: 'Centrer',
|
|
41
|
+
alignRight: 'Aligner à droite',
|
|
42
|
+
link: 'Lien',
|
|
43
|
+
linkAddress: 'Adresse du lien',
|
|
44
|
+
applyLink: 'Appliquer',
|
|
45
|
+
removeLink: 'Supprimer le lien',
|
|
46
|
+
upload: 'Téléverser un fichier',
|
|
47
|
+
uploadImage: 'Ajouter une photo',
|
|
48
|
+
replace: 'Remplacer',
|
|
49
|
+
removeFile: 'Retirer',
|
|
50
|
+
dropHere: 'ou déposez-le ici',
|
|
51
|
+
addFiles: 'Ajouter des fichiers',
|
|
52
|
+
addPhotos: 'Ajouter des photos',
|
|
53
|
+
dropThem: 'ou déposez-les ici',
|
|
54
|
+
upToSize: 'jusqu’à {size}',
|
|
55
|
+
upToEach: 'jusqu’à {size} par fichier',
|
|
56
|
+
upToFiles: 'jusqu’à {max} fichiers',
|
|
57
|
+
fileCount: '{n} fichiers',
|
|
58
|
+
oneFile: '1 fichier',
|
|
59
|
+
fileCountOf: '{n} fichiers sur {max}',
|
|
60
|
+
tooMany: '{max} fichiers au plus : {n} non ajouté(s)',
|
|
61
|
+
alreadyAdded: '{name} : déjà ajouté',
|
|
62
|
+
removeAsk: 'Retirer {name} ?',
|
|
63
|
+
keep: 'Garder',
|
|
64
|
+
previous: 'Précédent',
|
|
65
|
+
next: 'Suivant',
|
|
66
|
+
download: 'Télécharger',
|
|
67
|
+
close: 'Fermer',
|
|
68
|
+
fileAt: '{n} sur {total}',
|
|
69
|
+
noPreview: 'Pas d’aperçu pour ce type de fichier',
|
|
70
|
+
invalidJson: 'JSON invalide',
|
|
71
|
+
signaturePad: 'Zone de signature : dessinez votre signature',
|
|
72
|
+
signHere: 'Signez ici',
|
|
73
|
+
typeSignature: 'Ou tapez votre nom',
|
|
74
|
+
clearDrawing: 'Effacer',
|
|
75
|
+
undo: 'Annuler',
|
|
76
|
+
uploadSignature: 'Importer une image',
|
|
77
|
+
notAnswered: 'Pas de réponse',
|
|
78
|
+
moveUp: 'Monter {label}',
|
|
79
|
+
moveDown: 'Descendre {label}',
|
|
80
|
+
movedTo: '{label} est maintenant en position {n} sur {total}',
|
|
81
|
+
addressStreet: 'Adresse',
|
|
82
|
+
addressCity: 'Ville',
|
|
83
|
+
addressLine2: 'Complément d’adresse',
|
|
84
|
+
addressRegion: 'État ou région',
|
|
85
|
+
addressPostcode: 'Code postal',
|
|
86
|
+
addressCountry: 'Pays',
|
|
87
|
+
entry: 'Entrée {n}',
|
|
88
|
+
addAnother: 'En ajouter un autre',
|
|
89
|
+
copy: 'Copier {name}',
|
|
90
|
+
removed: '{name} retiré',
|
|
91
|
+
loadingChoices: 'Chargement des choix…',
|
|
92
|
+
choicesFailed: 'Recharger les choix',
|
|
93
|
+
notOffered: '{name} : plus proposé',
|
|
94
|
+
yes: 'Oui',
|
|
95
|
+
no: 'Non',
|
|
96
|
+
upTo: 'Jusqu’à {n}',
|
|
97
|
+
keepOrder: 'Garder cet ordre',
|
|
98
|
+
ofMax: '{n} sur {max}',
|
|
99
|
+
charactersLeft: 'Caractères restants : {n}',
|
|
100
|
+
};
|
|
101
|
+
//# sourceMappingURL=fr.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fr.mjs","sourceRoot":"","sources":["../../../../../../libs/widgets/src/lib/locales/fr.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { WidgetFactory } from './widgets.mjs';
|
|
2
|
+
/**
|
|
3
|
+
* A matrix question: rows down the side, columns across — a Likert grid. Each
|
|
4
|
+
* row is a group of radios (or of boxes when several may be chosen), named by
|
|
5
|
+
* its row for screen readers, so the arrow keys move within a row. On a phone
|
|
6
|
+
* each row is a card, its answers listed with their columns' words.
|
|
7
|
+
* `options.shuffle` shows the rows in an order of the form's own; with
|
|
8
|
+
* `onePerColumn`, a column picked in one row leaves the row that had it.
|
|
9
|
+
*/
|
|
10
|
+
export declare const matrixWidget: WidgetFactory;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { WidgetFactory } from './widgets';
|
|
2
|
+
/**
|
|
3
|
+
* A matrix question: rows down the side, columns across — a Likert grid. Each
|
|
4
|
+
* row is a group of radios (or of boxes when several may be chosen), named by
|
|
5
|
+
* its row for screen readers, so the arrow keys move within a row. On a phone
|
|
6
|
+
* each row is a card, its answers listed with their columns' words.
|
|
7
|
+
* `options.shuffle` shows the rows in an order of the form's own; with
|
|
8
|
+
* `onePerColumn`, a column picked in one row leaves the row that had it.
|
|
9
|
+
*/
|
|
10
|
+
export declare const matrixWidget: WidgetFactory;
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.matrixWidget = void 0;
|
|
4
|
+
const kind_parts_1 = require("./kind-parts");
|
|
5
|
+
const shuffle_1 = require("./shuffle");
|
|
6
|
+
/**
|
|
7
|
+
* A matrix question: rows down the side, columns across — a Likert grid. Each
|
|
8
|
+
* row is a group of radios (or of boxes when several may be chosen), named by
|
|
9
|
+
* its row for screen readers, so the arrow keys move within a row. On a phone
|
|
10
|
+
* each row is a card, its answers listed with their columns' words.
|
|
11
|
+
* `options.shuffle` shows the rows in an order of the form's own; with
|
|
12
|
+
* `onePerColumn`, a column picked in one row leaves the row that had it.
|
|
13
|
+
*/
|
|
14
|
+
const matrixWidget = ({ form, name, field, node, id, document }) => {
|
|
15
|
+
const def = field;
|
|
16
|
+
const kind = def.multiple ? 'checkbox' : 'radio';
|
|
17
|
+
const make = (tag, attrs = {}, ...children) => {
|
|
18
|
+
const element = document.createElement(tag);
|
|
19
|
+
for (const [key, value] of Object.entries(attrs))
|
|
20
|
+
element.setAttribute(key, value);
|
|
21
|
+
element.append(...children);
|
|
22
|
+
return element;
|
|
23
|
+
};
|
|
24
|
+
const table = make('table', { id, class: 'fd-matrix-table' });
|
|
25
|
+
table.append(make('thead', {}, make('tr', {}, make('th', { scope: 'col' }), ...def.columns.map((c) => make('th', { scope: 'col' }, c.label)))));
|
|
26
|
+
const body = make('tbody');
|
|
27
|
+
const inputs = [];
|
|
28
|
+
const rows = [];
|
|
29
|
+
for (const row of (0, shuffle_1.shownOptions)(def.rows, form, name, node)) {
|
|
30
|
+
const tr = make('tr', { role: kind === 'radio' ? 'radiogroup' : 'group', 'aria-label': row.label });
|
|
31
|
+
rows.push(tr);
|
|
32
|
+
tr.append(make('th', { scope: 'row' }, row.label));
|
|
33
|
+
for (const column of def.columns) {
|
|
34
|
+
const input = make('input', { type: kind, name: `${id}-${row.value}`, value: String(column.value), 'data-row': String(row.value), 'aria-label': `${row.label}: ${column.label}` });
|
|
35
|
+
input.addEventListener('change', () => {
|
|
36
|
+
if (def.onePerColumn && input.checked)
|
|
37
|
+
for (const other of inputs)
|
|
38
|
+
if (other.value === input.value && other !== input)
|
|
39
|
+
other.checked = false;
|
|
40
|
+
save();
|
|
41
|
+
});
|
|
42
|
+
inputs.push(input);
|
|
43
|
+
// The column's words beside the box, seen on a phone's card.
|
|
44
|
+
tr.append(make('td', {}, make('label', { class: 'fd-matrix-pick' }, input, make('span', { class: 'fd-matrix-column' }, column.label))));
|
|
45
|
+
}
|
|
46
|
+
body.append(tr);
|
|
47
|
+
}
|
|
48
|
+
table.append(body);
|
|
49
|
+
const element = make('div', { class: 'fd-matrix' }, table);
|
|
50
|
+
/** Column values come back as written: a number stays a number. */
|
|
51
|
+
const columnValue = (text) => def.columns.find((c) => String(c.value) === text)?.value ?? text;
|
|
52
|
+
function save() {
|
|
53
|
+
const value = {};
|
|
54
|
+
for (const row of def.rows) {
|
|
55
|
+
const picked = inputs.filter((i) => i.dataset['row'] === String(row.value) && i.checked).map((i) => columnValue(i.value));
|
|
56
|
+
if (def.multiple ? picked.length : picked.length === 1)
|
|
57
|
+
value[String(row.value)] = (def.multiple ? picked : picked[0]);
|
|
58
|
+
}
|
|
59
|
+
form.setValue(name, Object.keys(value).length ? value : null);
|
|
60
|
+
}
|
|
61
|
+
return {
|
|
62
|
+
element,
|
|
63
|
+
focus: () => (inputs.find((i) => i.checked) ?? inputs[0])?.focus(),
|
|
64
|
+
update(state) {
|
|
65
|
+
const value = state.value && typeof state.value === 'object' && !Array.isArray(state.value) ? state.value : {};
|
|
66
|
+
for (const input of inputs) {
|
|
67
|
+
const answer = value[input.dataset['row'] ?? ''];
|
|
68
|
+
const chosen = Array.isArray(answer) ? answer.map(String) : answer === undefined || answer === null ? [] : [String(answer)];
|
|
69
|
+
input.checked = chosen.includes(input.value);
|
|
70
|
+
input.disabled = state.readonly;
|
|
71
|
+
}
|
|
72
|
+
table.setAttribute('aria-invalid', String(state.invalid));
|
|
73
|
+
// A row of radios is a radio group, which ARIA lets say it is required.
|
|
74
|
+
if (kind === 'radio')
|
|
75
|
+
for (const tr of rows)
|
|
76
|
+
(0, kind_parts_1.setAttr)(tr, 'aria-required', String(state.required));
|
|
77
|
+
// A table cannot be marked required in ARIA; the question's label says it.
|
|
78
|
+
if (state.describedBy)
|
|
79
|
+
table.setAttribute('aria-describedby', state.describedBy);
|
|
80
|
+
else
|
|
81
|
+
table.removeAttribute('aria-describedby');
|
|
82
|
+
},
|
|
83
|
+
};
|
|
84
|
+
};
|
|
85
|
+
exports.matrixWidget = matrixWidget;
|
|
86
|
+
//# sourceMappingURL=matrix.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"matrix.js","sourceRoot":"","sources":["../../../../../libs/widgets/src/lib/matrix.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { setAttr } from './kind-parts.mjs';
|
|
2
|
+
import { shownOptions } from './shuffle.mjs';
|
|
3
|
+
/**
|
|
4
|
+
* A matrix question: rows down the side, columns across — a Likert grid. Each
|
|
5
|
+
* row is a group of radios (or of boxes when several may be chosen), named by
|
|
6
|
+
* its row for screen readers, so the arrow keys move within a row. On a phone
|
|
7
|
+
* each row is a card, its answers listed with their columns' words.
|
|
8
|
+
* `options.shuffle` shows the rows in an order of the form's own; with
|
|
9
|
+
* `onePerColumn`, a column picked in one row leaves the row that had it.
|
|
10
|
+
*/
|
|
11
|
+
export const matrixWidget = ({ form, name, field, node, id, document }) => {
|
|
12
|
+
const def = field;
|
|
13
|
+
const kind = def.multiple ? 'checkbox' : 'radio';
|
|
14
|
+
const make = (tag, attrs = {}, ...children) => {
|
|
15
|
+
const element = document.createElement(tag);
|
|
16
|
+
for (const [key, value] of Object.entries(attrs))
|
|
17
|
+
element.setAttribute(key, value);
|
|
18
|
+
element.append(...children);
|
|
19
|
+
return element;
|
|
20
|
+
};
|
|
21
|
+
const table = make('table', { id, class: 'fd-matrix-table' });
|
|
22
|
+
table.append(make('thead', {}, make('tr', {}, make('th', { scope: 'col' }), ...def.columns.map((c) => make('th', { scope: 'col' }, c.label)))));
|
|
23
|
+
const body = make('tbody');
|
|
24
|
+
const inputs = [];
|
|
25
|
+
const rows = [];
|
|
26
|
+
for (const row of shownOptions(def.rows, form, name, node)) {
|
|
27
|
+
const tr = make('tr', { role: kind === 'radio' ? 'radiogroup' : 'group', 'aria-label': row.label });
|
|
28
|
+
rows.push(tr);
|
|
29
|
+
tr.append(make('th', { scope: 'row' }, row.label));
|
|
30
|
+
for (const column of def.columns) {
|
|
31
|
+
const input = make('input', { type: kind, name: `${id}-${row.value}`, value: String(column.value), 'data-row': String(row.value), 'aria-label': `${row.label}: ${column.label}` });
|
|
32
|
+
input.addEventListener('change', () => {
|
|
33
|
+
if (def.onePerColumn && input.checked)
|
|
34
|
+
for (const other of inputs)
|
|
35
|
+
if (other.value === input.value && other !== input)
|
|
36
|
+
other.checked = false;
|
|
37
|
+
save();
|
|
38
|
+
});
|
|
39
|
+
inputs.push(input);
|
|
40
|
+
// The column's words beside the box, seen on a phone's card.
|
|
41
|
+
tr.append(make('td', {}, make('label', { class: 'fd-matrix-pick' }, input, make('span', { class: 'fd-matrix-column' }, column.label))));
|
|
42
|
+
}
|
|
43
|
+
body.append(tr);
|
|
44
|
+
}
|
|
45
|
+
table.append(body);
|
|
46
|
+
const element = make('div', { class: 'fd-matrix' }, table);
|
|
47
|
+
/** Column values come back as written: a number stays a number. */
|
|
48
|
+
const columnValue = (text) => def.columns.find((c) => String(c.value) === text)?.value ?? text;
|
|
49
|
+
function save() {
|
|
50
|
+
const value = {};
|
|
51
|
+
for (const row of def.rows) {
|
|
52
|
+
const picked = inputs.filter((i) => i.dataset['row'] === String(row.value) && i.checked).map((i) => columnValue(i.value));
|
|
53
|
+
if (def.multiple ? picked.length : picked.length === 1)
|
|
54
|
+
value[String(row.value)] = (def.multiple ? picked : picked[0]);
|
|
55
|
+
}
|
|
56
|
+
form.setValue(name, Object.keys(value).length ? value : null);
|
|
57
|
+
}
|
|
58
|
+
return {
|
|
59
|
+
element,
|
|
60
|
+
focus: () => (inputs.find((i) => i.checked) ?? inputs[0])?.focus(),
|
|
61
|
+
update(state) {
|
|
62
|
+
const value = state.value && typeof state.value === 'object' && !Array.isArray(state.value) ? state.value : {};
|
|
63
|
+
for (const input of inputs) {
|
|
64
|
+
const answer = value[input.dataset['row'] ?? ''];
|
|
65
|
+
const chosen = Array.isArray(answer) ? answer.map(String) : answer === undefined || answer === null ? [] : [String(answer)];
|
|
66
|
+
input.checked = chosen.includes(input.value);
|
|
67
|
+
input.disabled = state.readonly;
|
|
68
|
+
}
|
|
69
|
+
table.setAttribute('aria-invalid', String(state.invalid));
|
|
70
|
+
// A row of radios is a radio group, which ARIA lets say it is required.
|
|
71
|
+
if (kind === 'radio')
|
|
72
|
+
for (const tr of rows)
|
|
73
|
+
setAttr(tr, 'aria-required', String(state.required));
|
|
74
|
+
// A table cannot be marked required in ARIA; the question's label says it.
|
|
75
|
+
if (state.describedBy)
|
|
76
|
+
table.setAttribute('aria-describedby', state.describedBy);
|
|
77
|
+
else
|
|
78
|
+
table.removeAttribute('aria-describedby');
|
|
79
|
+
},
|
|
80
|
+
};
|
|
81
|
+
};
|
|
82
|
+
//# sourceMappingURL=matrix.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"matrix.mjs","sourceRoot":"","sources":["../../../../../libs/widgets/src/lib/matrix.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAGzC;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,YAAY,GAAkB,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;IACvF,MAAM,GAAG,GAAG,KAA2C,CAAC;IACxD,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC;IACjD,MAAM,IAAI,GAAG,CAAwC,GAAM,EAAE,QAAgC,EAAE,EAAE,GAAG,QAA2B,EAAE,EAAE;QACjI,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAC5C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,OAAO,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACnF,OAAO,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC;QAC5B,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;IACF,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC,CAAC;IAC9D,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChJ,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3B,MAAM,MAAM,GAAuB,EAAE,CAAC;IACtC,MAAM,IAAI,GAAkB,EAAE,CAAC;IAC/B,KAAK,MAAM,GAAG,IAAI,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;QAC3D,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;QACpG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QACnD,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YACjC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,GAAG,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,YAAY,EAAE,GAAG,GAAG,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,EAAE,EAAE,CAAqB,CAAC;YACvM,KAAK,CAAC,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE;gBACpC,IAAI,GAAG,CAAC,YAAY,IAAI,KAAK,CAAC,OAAO;oBAAE,KAAK,MAAM,KAAK,IAAI,MAAM;wBAAE,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,IAAI,KAAK,KAAK,KAAK;4BAAE,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;gBAC7I,IAAI,EAAE,CAAC;YACT,CAAC,CAAC,CAAC;YACH,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnB,6DAA6D;YAC7D,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1I,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IACD,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACnB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,KAAK,CAAC,CAAC;IAE3D,mEAAmE;IACnE,MAAM,WAAW,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC;IACvG,SAAS,IAAI;QACX,MAAM,KAAK,GAA0B,EAAE,CAAC;QACxC,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YAC1H,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;gBAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAU,CAAC;QAClI,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAE,KAAe,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC3E,CAAC;IAED,OAAO;QACL,OAAO;QACP,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE;QAClE,MAAM,CAAC,KAAK;YACV,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAE,KAAK,CAAC,KAAiC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5I,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;gBACjD,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC5H,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAC7C,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;YAClC,CAAC;YACD,KAAK,CAAC,YAAY,CAAC,cAAc,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YAC1D,wEAAwE;YACxE,IAAI,IAAI,KAAK,OAAO;gBAAE,KAAK,MAAM,EAAE,IAAI,IAAI;oBAAE,OAAO,CAAC,EAAE,EAAE,eAAe,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;YAClG,2EAA2E;YAC3E,IAAI,KAAK,CAAC,WAAW;gBAAE,KAAK,CAAC,YAAY,CAAC,kBAAkB,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;;gBAC5E,KAAK,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC;QACjD,CAAC;KACF,CAAC;AACJ,CAAC,CAAC"}
|
package/src/lib/numbers.d.mts
CHANGED
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
import type { Locale } from '@fieldia/core';
|
|
2
|
+
/**
|
|
3
|
+
* An amount with its currency, as the page's language writes money: the
|
|
4
|
+
* symbol before or after, grouped, in Latin digits ("E£425,000.00",
|
|
5
|
+
* "1.850.000,50 €"). A currency named by words that are no code is written
|
|
6
|
+
* before the amount as it is.
|
|
7
|
+
*/
|
|
8
|
+
export declare function formatMoney(value: number, currency: string, decimals: number, locale?: Locale): string;
|
|
2
9
|
/** A number at rest: "1,850,000.50", "1.850.000,50". */
|
|
3
10
|
export declare function formatNumber(value: number, decimals: number, locale?: Locale): string;
|
|
4
11
|
/**
|
package/src/lib/numbers.d.ts
CHANGED
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
import type { Locale } from '@fieldia/core';
|
|
2
|
+
/**
|
|
3
|
+
* An amount with its currency, as the page's language writes money: the
|
|
4
|
+
* symbol before or after, grouped, in Latin digits ("E£425,000.00",
|
|
5
|
+
* "1.850.000,50 €"). A currency named by words that are no code is written
|
|
6
|
+
* before the amount as it is.
|
|
7
|
+
*/
|
|
8
|
+
export declare function formatMoney(value: number, currency: string, decimals: number, locale?: Locale): string;
|
|
2
9
|
/** A number at rest: "1,850,000.50", "1.850.000,50". */
|
|
3
10
|
export declare function formatNumber(value: number, decimals: number, locale?: Locale): string;
|
|
4
11
|
/**
|
package/src/lib/numbers.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.formatMoney = formatMoney;
|
|
3
4
|
exports.formatNumber = formatNumber;
|
|
4
5
|
exports.normalizeNumber = normalizeNumber;
|
|
5
6
|
/**
|
|
@@ -18,6 +19,20 @@ function format(locale, decimals) {
|
|
|
18
19
|
}
|
|
19
20
|
return found;
|
|
20
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* An amount with its currency, as the page's language writes money: the
|
|
24
|
+
* symbol before or after, grouped, in Latin digits ("E£425,000.00",
|
|
25
|
+
* "1.850.000,50 €"). A currency named by words that are no code is written
|
|
26
|
+
* before the amount as it is.
|
|
27
|
+
*/
|
|
28
|
+
function formatMoney(value, currency, decimals, locale = 'en') {
|
|
29
|
+
try {
|
|
30
|
+
return new Intl.NumberFormat(locale, { style: 'currency', currency, currencyDisplay: 'narrowSymbol', numberingSystem: 'latn', minimumFractionDigits: decimals, maximumFractionDigits: decimals }).format(value);
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
return `${currency} ${formatNumber(value, decimals, locale)}`;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
21
36
|
/** The language's grouping and decimal marks. */
|
|
22
37
|
function marks(locale) {
|
|
23
38
|
const parts = format(locale, 1).formatToParts(12345.6);
|
package/src/lib/numbers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"numbers.js","sourceRoot":"","sources":["../../../../../libs/widgets/src/lib/numbers.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"numbers.js","sourceRoot":"","sources":["../../../../../libs/widgets/src/lib/numbers.ts"],"names":[],"mappings":"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"}
|
package/src/lib/numbers.mjs
CHANGED
|
@@ -14,6 +14,20 @@ function format(locale, decimals) {
|
|
|
14
14
|
}
|
|
15
15
|
return found;
|
|
16
16
|
}
|
|
17
|
+
/**
|
|
18
|
+
* An amount with its currency, as the page's language writes money: the
|
|
19
|
+
* symbol before or after, grouped, in Latin digits ("E£425,000.00",
|
|
20
|
+
* "1.850.000,50 €"). A currency named by words that are no code is written
|
|
21
|
+
* before the amount as it is.
|
|
22
|
+
*/
|
|
23
|
+
export function formatMoney(value, currency, decimals, locale = 'en') {
|
|
24
|
+
try {
|
|
25
|
+
return new Intl.NumberFormat(locale, { style: 'currency', currency, currencyDisplay: 'narrowSymbol', numberingSystem: 'latn', minimumFractionDigits: decimals, maximumFractionDigits: decimals }).format(value);
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
return `${currency} ${formatNumber(value, decimals, locale)}`;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
17
31
|
/** The language's grouping and decimal marks. */
|
|
18
32
|
function marks(locale) {
|
|
19
33
|
const parts = format(locale, 1).formatToParts(12345.6);
|
package/src/lib/numbers.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"numbers.mjs","sourceRoot":"","sources":["../../../../../libs/widgets/src/lib/numbers.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AAEH,MAAM,OAAO,GAAG,IAAI,GAAG,EAA6B,CAAC;AACrD,SAAS,MAAM,CAAC,MAAc,EAAE,QAAgB;IAC9C,MAAM,GAAG,GAAG,GAAG,MAAM,IAAI,QAAQ,EAAE,CAAC;IACpC,IAAI,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,KAAK,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE,qBAAqB,EAAE,QAAQ,EAAE,qBAAqB,EAAE,QAAQ,EAAE,CAAC,CAAC;QACrI,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,iDAAiD;AACjD,SAAS,KAAK,CAAC,MAAc;IAC3B,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACvD,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,EAAE,KAAK,IAAI,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,EAAE,KAAK,IAAI,GAAG,EAAE,CAAC;AACxI,CAAC;AAED,wDAAwD;AACxD,MAAM,UAAU,YAAY,CAAC,KAAa,EAAE,QAAgB,EAAE,SAAiB,IAAI;IACjF,OAAO,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,SAAiB,IAAI;IACjE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IACzC,IAAI,GAAG,GAAG,IAAI;SACX,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;SAC1D,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;SAC1D,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACxB,8EAA8E;IAC9E,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;IAC3C,IAAI,KAAK,CAAC,IAAI,EAAE;QAAE,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClD,OAAO,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC9D,CAAC"}
|
|
1
|
+
{"version":3,"file":"numbers.mjs","sourceRoot":"","sources":["../../../../../libs/widgets/src/lib/numbers.ts"],"names":[],"mappings":"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"}
|
package/src/lib/progress.js
CHANGED
|
@@ -6,7 +6,7 @@ const widgets_1 = require("./widgets");
|
|
|
6
6
|
* A number shown as a bar that fills towards a maximum, coloured by how far
|
|
7
7
|
* it has come: red under 30 %, yellow under 70 %, green from there. Options:
|
|
8
8
|
*
|
|
9
|
-
* max the maximum, 100
|
|
9
|
+
* max the maximum: the field's own, else 100 (min: the field's own, else 0)
|
|
10
10
|
* maxField a number field that holds the maximum instead
|
|
11
11
|
* color "auto", or always "success", "warning", "danger" or "info"
|
|
12
12
|
* showPercent false to leave the percentage off the bar
|
|
@@ -22,10 +22,14 @@ function percent(value, locale) {
|
|
|
22
22
|
return format.format(value / 100);
|
|
23
23
|
}
|
|
24
24
|
const progressbarWidget = (context) => {
|
|
25
|
-
const { node, id, document, locale = 'en' } = context;
|
|
25
|
+
const { field, node, id, document, locale = 'en' } = context;
|
|
26
26
|
const options = node.options ?? {};
|
|
27
|
-
const
|
|
28
|
-
|
|
27
|
+
const range = (key, usual) => {
|
|
28
|
+
const set = options[key] ?? field[key];
|
|
29
|
+
return typeof set === 'number' ? set : usual;
|
|
30
|
+
};
|
|
31
|
+
const min = range('min', 0);
|
|
32
|
+
const fixedMax = range('max', 100);
|
|
29
33
|
const maxField = typeof options['maxField'] === 'string' ? options['maxField'] : null;
|
|
30
34
|
const color = typeof options['color'] === 'string' ? options['color'] : 'auto';
|
|
31
35
|
const showPercent = options['showPercent'] !== false;
|
package/src/lib/progress.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"progress.js","sourceRoot":"","sources":["../../../../../libs/widgets/src/lib/progress.ts"],"names":[],"mappings":";;;AACA,uCAA0E;AAE1E;;;;;;;;;GASG;AAEH,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA6B,CAAC;AACtD,SAAS,OAAO,CAAC,KAAa,EAAE,MAAc;IAC5C,IAAI,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAClC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,qBAAqB,EAAE,CAAC,EAAE,eAAe,EAAE,MAAM,EAAE,CAAC,CAAC;QAChH,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC;AACpC,CAAC;AAEM,MAAM,iBAAiB,GAAkB,CAAC,OAAO,EAAE,EAAE;IAC1D,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"progress.js","sourceRoot":"","sources":["../../../../../libs/widgets/src/lib/progress.ts"],"names":[],"mappings":"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"}
|
package/src/lib/progress.mjs
CHANGED
|
@@ -3,7 +3,7 @@ import { createWidget } from './widgets.mjs';
|
|
|
3
3
|
* A number shown as a bar that fills towards a maximum, coloured by how far
|
|
4
4
|
* it has come: red under 30 %, yellow under 70 %, green from there. Options:
|
|
5
5
|
*
|
|
6
|
-
* max the maximum, 100
|
|
6
|
+
* max the maximum: the field's own, else 100 (min: the field's own, else 0)
|
|
7
7
|
* maxField a number field that holds the maximum instead
|
|
8
8
|
* color "auto", or always "success", "warning", "danger" or "info"
|
|
9
9
|
* showPercent false to leave the percentage off the bar
|
|
@@ -19,10 +19,14 @@ function percent(value, locale) {
|
|
|
19
19
|
return format.format(value / 100);
|
|
20
20
|
}
|
|
21
21
|
export const progressbarWidget = (context) => {
|
|
22
|
-
const { node, id, document, locale = 'en' } = context;
|
|
22
|
+
const { field, node, id, document, locale = 'en' } = context;
|
|
23
23
|
const options = node.options ?? {};
|
|
24
|
-
const
|
|
25
|
-
|
|
24
|
+
const range = (key, usual) => {
|
|
25
|
+
const set = options[key] ?? field[key];
|
|
26
|
+
return typeof set === 'number' ? set : usual;
|
|
27
|
+
};
|
|
28
|
+
const min = range('min', 0);
|
|
29
|
+
const fixedMax = range('max', 100);
|
|
26
30
|
const maxField = typeof options['maxField'] === 'string' ? options['maxField'] : null;
|
|
27
31
|
const color = typeof options['color'] === 'string' ? options['color'] : 'auto';
|
|
28
32
|
const showPercent = options['showPercent'] !== false;
|
package/src/lib/progress.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"progress.mjs","sourceRoot":"","sources":["../../../../../libs/widgets/src/lib/progress.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAmC,MAAM,WAAW,CAAC;AAE1E;;;;;;;;;GASG;AAEH,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA6B,CAAC;AACtD,SAAS,OAAO,CAAC,KAAa,EAAE,MAAc;IAC5C,IAAI,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAClC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,qBAAqB,EAAE,CAAC,EAAE,eAAe,EAAE,MAAM,EAAE,CAAC,CAAC;QAChH,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAkB,CAAC,OAAO,EAAE,EAAE;IAC1D,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"progress.mjs","sourceRoot":"","sources":["../../../../../libs/widgets/src/lib/progress.ts"],"names":[],"mappings":"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"}
|