@fieldia/core 0.27.0 → 0.29.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/README.md +148 -5
- package/package.json +1 -1
- package/schema/page.schema.json +266 -7
- package/src/index.d.mts +10 -2
- package/src/index.d.ts +10 -2
- package/src/index.js +33 -2
- package/src/index.js.map +1 -1
- package/src/index.mjs +13 -2
- package/src/index.mjs.map +1 -1
- package/src/lib/format/approval-checks.d.mts +8 -0
- package/src/lib/format/approval-checks.d.ts +8 -0
- package/src/lib/format/approval-checks.js +29 -0
- package/src/lib/format/approval-checks.js.map +1 -0
- package/src/lib/format/approval-checks.mjs +26 -0
- package/src/lib/format/approval-checks.mjs.map +1 -0
- package/src/lib/format/approval.d.mts +20 -0
- package/src/lib/format/approval.d.ts +20 -0
- package/src/lib/format/approval.js +25 -0
- package/src/lib/format/approval.js.map +1 -0
- package/src/lib/format/approval.mjs +22 -0
- package/src/lib/format/approval.mjs.map +1 -0
- package/src/lib/format/assist-checks.d.mts +14 -0
- package/src/lib/format/assist-checks.d.ts +14 -0
- package/src/lib/format/assist-checks.js +68 -0
- package/src/lib/format/assist-checks.js.map +1 -0
- package/src/lib/format/assist-checks.mjs +64 -0
- package/src/lib/format/assist-checks.mjs.map +1 -0
- package/src/lib/format/assist.d.mts +41 -0
- package/src/lib/format/assist.d.ts +41 -0
- package/src/lib/format/assist.js +29 -0
- package/src/lib/format/assist.js.map +1 -0
- package/src/lib/format/assist.mjs +26 -0
- package/src/lib/format/assist.mjs.map +1 -0
- package/src/lib/format/editable-checks.d.mts +8 -0
- package/src/lib/format/editable-checks.d.ts +8 -0
- package/src/lib/format/editable-checks.js +38 -0
- package/src/lib/format/editable-checks.js.map +1 -0
- package/src/lib/format/editable-checks.mjs +35 -0
- package/src/lib/format/editable-checks.mjs.map +1 -0
- package/src/lib/format/field.d.mts +86 -0
- package/src/lib/format/field.d.ts +86 -0
- package/src/lib/format/field.js +56 -10
- package/src/lib/format/field.js.map +1 -1
- package/src/lib/format/field.mjs +55 -9
- package/src/lib/format/field.mjs.map +1 -1
- package/src/lib/format/languages-checks.d.mts +8 -0
- package/src/lib/format/languages-checks.d.ts +8 -0
- package/src/lib/format/languages-checks.js +40 -0
- package/src/lib/format/languages-checks.js.map +1 -0
- package/src/lib/format/languages-checks.mjs +37 -0
- package/src/lib/format/languages-checks.mjs.map +1 -0
- package/src/lib/format/later-checks.d.mts +4 -3
- package/src/lib/format/later-checks.d.ts +4 -3
- package/src/lib/format/later-checks.js +4 -3
- package/src/lib/format/later-checks.js.map +1 -1
- package/src/lib/format/later-checks.mjs +4 -3
- package/src/lib/format/later-checks.mjs.map +1 -1
- package/src/lib/format/layout.d.mts +123 -28
- package/src/lib/format/layout.d.ts +123 -28
- package/src/lib/format/layout.js +20 -4
- package/src/lib/format/layout.js.map +1 -1
- package/src/lib/format/layout.mjs +18 -2
- package/src/lib/format/layout.mjs.map +1 -1
- package/src/lib/format/layout.types.d.mts +2 -1
- package/src/lib/format/layout.types.d.ts +2 -1
- package/src/lib/format/list-editable.d.mts +20 -0
- package/src/lib/format/list-editable.d.ts +20 -0
- package/src/lib/format/list-editable.js +33 -0
- package/src/lib/format/list-editable.js.map +1 -0
- package/src/lib/format/list-editable.mjs +28 -0
- package/src/lib/format/list-editable.mjs.map +1 -0
- package/src/lib/format/page.d.mts +91 -9
- package/src/lib/format/page.d.ts +91 -9
- package/src/lib/format/page.js +4 -0
- package/src/lib/format/page.js.map +1 -1
- package/src/lib/format/page.mjs +4 -0
- package/src/lib/format/page.mjs.map +1 -1
- package/src/lib/format/photos-options.d.mts +29 -0
- package/src/lib/format/photos-options.d.ts +29 -0
- package/src/lib/format/photos-options.js +49 -0
- package/src/lib/format/photos-options.js.map +1 -0
- package/src/lib/format/photos-options.mjs +45 -0
- package/src/lib/format/photos-options.mjs.map +1 -0
- package/src/lib/format/references.js +31 -1
- package/src/lib/format/references.js.map +1 -1
- package/src/lib/format/references.mjs +31 -1
- package/src/lib/format/references.mjs.map +1 -1
- package/src/lib/format/scan-checks.d.mts +12 -0
- package/src/lib/format/scan-checks.d.ts +12 -0
- package/src/lib/format/scan-checks.js +89 -0
- package/src/lib/format/scan-checks.js.map +1 -0
- package/src/lib/format/scan-checks.mjs +86 -0
- package/src/lib/format/scan-checks.mjs.map +1 -0
- package/src/lib/format/scan-options.d.mts +84 -0
- package/src/lib/format/scan-options.d.ts +84 -0
- package/src/lib/format/scan-options.js +58 -0
- package/src/lib/format/scan-options.js.map +1 -0
- package/src/lib/format/scan-options.mjs +54 -0
- package/src/lib/format/scan-options.mjs.map +1 -0
- package/src/lib/format/upgrade.d.mts +4 -1
- package/src/lib/format/upgrade.d.ts +4 -1
- package/src/lib/format/upgrade.js +4 -1
- package/src/lib/format/upgrade.js.map +1 -1
- package/src/lib/format/upgrade.mjs +4 -1
- package/src/lib/format/upgrade.mjs.map +1 -1
- package/src/lib/format/version.d.mts +2 -2
- package/src/lib/format/version.d.ts +2 -2
- package/src/lib/format/version.js +2 -2
- package/src/lib/format/version.js.map +1 -1
- package/src/lib/format/version.mjs +2 -2
- package/src/lib/format/version.mjs.map +1 -1
- package/src/lib/record/approvals-part.d.mts +6 -0
- package/src/lib/record/approvals-part.d.ts +6 -0
- package/src/lib/record/approvals-part.js +14 -0
- package/src/lib/record/approvals-part.js.map +1 -0
- package/src/lib/record/approvals-part.mjs +7 -0
- package/src/lib/record/approvals-part.mjs.map +1 -0
- package/src/lib/record/approving.d.mts +45 -0
- package/src/lib/record/approving.d.ts +45 -0
- package/src/lib/record/approving.js +10 -0
- package/src/lib/record/approving.js.map +1 -0
- package/src/lib/record/approving.mjs +7 -0
- package/src/lib/record/approving.mjs.map +1 -0
- package/src/lib/record/check.js +7 -1
- package/src/lib/record/check.js.map +1 -1
- package/src/lib/record/check.mjs +7 -1
- package/src/lib/record/check.mjs.map +1 -1
- package/src/lib/record/data-source.d.mts +270 -0
- package/src/lib/record/data-source.d.ts +270 -0
- package/src/lib/record/data-source.js.map +1 -1
- package/src/lib/record/data-source.mjs.map +1 -1
- package/src/lib/record/day-words.d.mts +10 -0
- package/src/lib/record/day-words.d.ts +10 -0
- package/src/lib/record/day-words.js +23 -0
- package/src/lib/record/day-words.js.map +1 -0
- package/src/lib/record/day-words.mjs +20 -0
- package/src/lib/record/day-words.mjs.map +1 -0
- package/src/lib/record/files-part.d.mts +7 -0
- package/src/lib/record/files-part.d.ts +7 -0
- package/src/lib/record/files-part.js +167 -0
- package/src/lib/record/files-part.js.map +1 -0
- package/src/lib/record/files-part.mjs +163 -0
- package/src/lib/record/files-part.mjs.map +1 -0
- package/src/lib/record/filter.d.mts +5 -0
- package/src/lib/record/filter.d.ts +5 -0
- package/src/lib/record/filter.js +1 -0
- package/src/lib/record/filter.js.map +1 -1
- package/src/lib/record/filter.mjs +1 -1
- package/src/lib/record/filter.mjs.map +1 -1
- package/src/lib/record/form-approvals.d.mts +47 -0
- package/src/lib/record/form-approvals.d.ts +47 -0
- package/src/lib/record/form-approvals.js +186 -0
- package/src/lib/record/form-approvals.js.map +1 -0
- package/src/lib/record/form-approvals.mjs +180 -0
- package/src/lib/record/form-approvals.mjs.map +1 -0
- package/src/lib/record/form-limits.d.mts +5 -8
- package/src/lib/record/form-limits.d.ts +5 -8
- package/src/lib/record/form-limits.js +20 -21
- package/src/lib/record/form-limits.js.map +1 -1
- package/src/lib/record/form-limits.mjs +21 -22
- package/src/lib/record/form-limits.mjs.map +1 -1
- package/src/lib/record/form.d.mts +41 -8
- package/src/lib/record/form.d.ts +41 -8
- package/src/lib/record/form.js +119 -11
- package/src/lib/record/form.js.map +1 -1
- package/src/lib/record/form.mjs +119 -11
- package/src/lib/record/form.mjs.map +1 -1
- package/src/lib/record/languages-part.d.mts +32 -0
- package/src/lib/record/languages-part.d.ts +32 -0
- package/src/lib/record/languages-part.js +104 -0
- package/src/lib/record/languages-part.js.map +1 -0
- package/src/lib/record/languages-part.mjs +96 -0
- package/src/lib/record/languages-part.mjs.map +1 -0
- package/src/lib/record/languages.d.mts +26 -0
- package/src/lib/record/languages.d.ts +26 -0
- package/src/lib/record/languages.js +20 -0
- package/src/lib/record/languages.js.map +1 -0
- package/src/lib/record/languages.mjs +15 -0
- package/src/lib/record/languages.mjs.map +1 -0
- package/src/lib/record/limits.js +4 -2
- package/src/lib/record/limits.js.map +1 -1
- package/src/lib/record/limits.mjs +4 -2
- package/src/lib/record/limits.mjs.map +1 -1
- package/src/lib/record/locales/ar.js +6 -0
- package/src/lib/record/locales/ar.js.map +1 -1
- package/src/lib/record/locales/ar.mjs +6 -0
- package/src/lib/record/locales/ar.mjs.map +1 -1
- package/src/lib/record/locales/de.js +6 -0
- package/src/lib/record/locales/de.js.map +1 -1
- package/src/lib/record/locales/de.mjs +6 -0
- package/src/lib/record/locales/de.mjs.map +1 -1
- package/src/lib/record/locales/fr.js +6 -0
- package/src/lib/record/locales/fr.js.map +1 -1
- package/src/lib/record/locales/fr.mjs +6 -0
- package/src/lib/record/locales/fr.mjs.map +1 -1
- package/src/lib/record/memory-approvals.d.mts +47 -0
- package/src/lib/record/memory-approvals.d.ts +47 -0
- package/src/lib/record/memory-approvals.js +78 -0
- package/src/lib/record/memory-approvals.js.map +1 -0
- package/src/lib/record/memory-approvals.mjs +75 -0
- package/src/lib/record/memory-approvals.mjs.map +1 -0
- package/src/lib/record/memory-assist.d.mts +53 -0
- package/src/lib/record/memory-assist.d.ts +53 -0
- package/src/lib/record/memory-assist.js +519 -0
- package/src/lib/record/memory-assist.js.map +1 -0
- package/src/lib/record/memory-assist.mjs +513 -0
- package/src/lib/record/memory-assist.mjs.map +1 -0
- package/src/lib/record/memory-clusters.d.mts +18 -0
- package/src/lib/record/memory-clusters.d.ts +18 -0
- package/src/lib/record/memory-clusters.js +83 -0
- package/src/lib/record/memory-clusters.js.map +1 -0
- package/src/lib/record/memory-clusters.mjs +80 -0
- package/src/lib/record/memory-clusters.mjs.map +1 -0
- package/src/lib/record/memory-data-source.d.mts +43 -3
- package/src/lib/record/memory-data-source.d.ts +43 -3
- package/src/lib/record/memory-data-source.js +105 -19
- package/src/lib/record/memory-data-source.js.map +1 -1
- package/src/lib/record/memory-data-source.mjs +105 -19
- package/src/lib/record/memory-data-source.mjs.map +1 -1
- package/src/lib/record/memory-later.d.mts +1 -1
- package/src/lib/record/memory-later.d.ts +1 -1
- package/src/lib/record/memory-later.js +4 -1
- package/src/lib/record/memory-later.js.map +1 -1
- package/src/lib/record/memory-later.mjs +4 -1
- package/src/lib/record/memory-later.mjs.map +1 -1
- package/src/lib/record/messages.d.mts +24 -2
- package/src/lib/record/messages.d.ts +24 -2
- package/src/lib/record/messages.js +8 -4
- package/src/lib/record/messages.js.map +1 -1
- package/src/lib/record/messages.mjs +8 -4
- package/src/lib/record/messages.mjs.map +1 -1
- package/src/lib/record/option-rules.d.mts +7 -1
- package/src/lib/record/option-rules.d.ts +7 -1
- package/src/lib/record/option-rules.js +9 -3
- package/src/lib/record/option-rules.js.map +1 -1
- package/src/lib/record/option-rules.mjs +9 -3
- package/src/lib/record/option-rules.mjs.map +1 -1
- package/src/lib/record/record-words.d.mts +13 -1
- package/src/lib/record/record-words.d.ts +13 -1
- package/src/lib/record/record-words.js +29 -1
- package/src/lib/record/record-words.js.map +1 -1
- package/src/lib/record/record-words.mjs +27 -1
- package/src/lib/record/record-words.mjs.map +1 -1
- package/src/lib/record/uploads.d.mts +35 -9
- package/src/lib/record/uploads.d.ts +35 -9
- package/src/lib/record/uploads.js +49 -169
- package/src/lib/record/uploads.js.map +1 -1
- package/src/lib/record/uploads.mjs +42 -164
- package/src/lib/record/uploads.mjs.map +1 -1
- package/src/lib/record/values.d.mts +23 -0
- package/src/lib/record/values.d.ts +23 -0
- package/src/lib/record/values.js +4 -0
- package/src/lib/record/values.js.map +1 -1
- package/src/lib/record/values.mjs +4 -0
- package/src/lib/record/values.mjs.map +1 -1
- package/src/lib/record/waits.d.mts +7 -5
- package/src/lib/record/waits.d.ts +7 -5
- package/src/lib/record/waits.js +7 -10
- package/src/lib/record/waits.js.map +1 -1
- package/src/lib/record/waits.mjs +7 -10
- package/src/lib/record/waits.mjs.map +1 -1
- package/src/runtime.d.mts +13 -6
- package/src/runtime.d.ts +13 -6
- package/src/runtime.js +22 -3
- package/src/runtime.js.map +1 -1
- package/src/runtime.mjs +11 -2
- package/src/runtime.mjs.map +1 -1
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The languages part's form code (languages.ts, `formLanguagesPart`): a text kept in several languages checked language
|
|
3
|
+
* by language. In the one-tag script it comes in one script with the widgets' switch between its languages, which draws
|
|
4
|
+
* it (fieldia.languages.js), and with its page's checks (format/languages-checks.ts).
|
|
5
|
+
*/
|
|
6
|
+
import type { Field, LineField } from '../format/field.mjs';
|
|
7
|
+
import { type Messages } from './messages.mjs';
|
|
8
|
+
import type { Value } from './values.mjs';
|
|
9
|
+
/** The text a value holds in one language, as typed — or empty. */
|
|
10
|
+
export declare const textOf: (value: unknown, language: string) => string;
|
|
11
|
+
/**
|
|
12
|
+
* A text kept in several languages, as a reader of `reader` reads it: in their language where it was typed there (its
|
|
13
|
+
* tag, or the same language's: "en" for "en-GB"), else in the first of `languages` (the field's order) it was typed in,
|
|
14
|
+
* `other` then. A plain text — a source that gives one language — is itself. Null for none.
|
|
15
|
+
*/
|
|
16
|
+
export declare function textIn(value: unknown, reader: string, languages?: readonly string[]): {
|
|
17
|
+
text: string;
|
|
18
|
+
language?: string;
|
|
19
|
+
other: boolean;
|
|
20
|
+
} | null;
|
|
21
|
+
/** A language's name, as the page's language says it ("Arabic", "العربية"): the browser's, else its tag. */
|
|
22
|
+
export declare function languageName(tag: string, locale: string): string;
|
|
23
|
+
/**
|
|
24
|
+
* A text kept in several languages (`translate`) checked: an object of each language's text — a plain text, from a
|
|
25
|
+
* source that gives one language, as its first language's — typed in every language a required answer is typed in
|
|
26
|
+
* (`requiredIn`, else all): "Title is required in Arabic" while it is typed in some, "Title is required" while in none of
|
|
27
|
+
* them; then each language's text as the field checks one text — its most characters, its pattern — named with its
|
|
28
|
+
* language: "Title (Arabic) is 3 characters over its most". Undefined when it is fine.
|
|
29
|
+
*/
|
|
30
|
+
export declare function checkTranslated(field: Field | LineField, value: Value | undefined, required: boolean, messages?: Messages, today?: string, widget?: string): string | undefined;
|
|
31
|
+
/** Which of a text's languages a problem is in: those a required answer misses, and those whose text the field refuses. */
|
|
32
|
+
export declare function languagesAtFault(field: Field | LineField, value: Value | undefined, required: boolean, messages?: Messages, today?: string): string[];
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The languages part's form code (languages.ts, `formLanguagesPart`): a text kept in several languages checked language
|
|
3
|
+
* by language. In the one-tag script it comes in one script with the widgets' switch between its languages, which draws
|
|
4
|
+
* it (fieldia.languages.js), and with its page's checks (format/languages-checks.ts).
|
|
5
|
+
*/
|
|
6
|
+
import type { Field, LineField } from '../format/field';
|
|
7
|
+
import { type Messages } from './messages';
|
|
8
|
+
import type { Value } from './values';
|
|
9
|
+
/** The text a value holds in one language, as typed — or empty. */
|
|
10
|
+
export declare const textOf: (value: unknown, language: string) => string;
|
|
11
|
+
/**
|
|
12
|
+
* A text kept in several languages, as a reader of `reader` reads it: in their language where it was typed there (its
|
|
13
|
+
* tag, or the same language's: "en" for "en-GB"), else in the first of `languages` (the field's order) it was typed in,
|
|
14
|
+
* `other` then. A plain text — a source that gives one language — is itself. Null for none.
|
|
15
|
+
*/
|
|
16
|
+
export declare function textIn(value: unknown, reader: string, languages?: readonly string[]): {
|
|
17
|
+
text: string;
|
|
18
|
+
language?: string;
|
|
19
|
+
other: boolean;
|
|
20
|
+
} | null;
|
|
21
|
+
/** A language's name, as the page's language says it ("Arabic", "العربية"): the browser's, else its tag. */
|
|
22
|
+
export declare function languageName(tag: string, locale: string): string;
|
|
23
|
+
/**
|
|
24
|
+
* A text kept in several languages (`translate`) checked: an object of each language's text — a plain text, from a
|
|
25
|
+
* source that gives one language, as its first language's — typed in every language a required answer is typed in
|
|
26
|
+
* (`requiredIn`, else all): "Title is required in Arabic" while it is typed in some, "Title is required" while in none of
|
|
27
|
+
* them; then each language's text as the field checks one text — its most characters, its pattern — named with its
|
|
28
|
+
* language: "Title (Arabic) is 3 characters over its most". Undefined when it is fine.
|
|
29
|
+
*/
|
|
30
|
+
export declare function checkTranslated(field: Field | LineField, value: Value | undefined, required: boolean, messages?: Messages, today?: string, widget?: string): string | undefined;
|
|
31
|
+
/** Which of a text's languages a problem is in: those a required answer misses, and those whose text the field refuses. */
|
|
32
|
+
export declare function languagesAtFault(field: Field | LineField, value: Value | undefined, required: boolean, messages?: Messages, today?: string): string[];
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.textOf = void 0;
|
|
4
|
+
exports.textIn = textIn;
|
|
5
|
+
exports.languageName = languageName;
|
|
6
|
+
exports.checkTranslated = checkTranslated;
|
|
7
|
+
exports.languagesAtFault = languagesAtFault;
|
|
8
|
+
const check_1 = require("./check");
|
|
9
|
+
const languages_1 = require("./languages");
|
|
10
|
+
const messages_1 = require("./messages");
|
|
11
|
+
const record_words_1 = require("./record-words");
|
|
12
|
+
/** The text a value holds in one language, as typed — or empty. */
|
|
13
|
+
const textOf = (value, language) => {
|
|
14
|
+
const held = value !== null && typeof value === 'object' && !Array.isArray(value) ? value[language] : undefined;
|
|
15
|
+
return typeof held === 'string' ? held : '';
|
|
16
|
+
};
|
|
17
|
+
exports.textOf = textOf;
|
|
18
|
+
const base = (tag) => tag.toLowerCase().split('-')[0];
|
|
19
|
+
/**
|
|
20
|
+
* A text kept in several languages, as a reader of `reader` reads it: in their language where it was typed there (its
|
|
21
|
+
* tag, or the same language's: "en" for "en-GB"), else in the first of `languages` (the field's order) it was typed in,
|
|
22
|
+
* `other` then. A plain text — a source that gives one language — is itself. Null for none.
|
|
23
|
+
*/
|
|
24
|
+
function textIn(value, reader, languages = []) {
|
|
25
|
+
if (typeof value === 'string')
|
|
26
|
+
return value.trim() ? { text: value, other: false } : null;
|
|
27
|
+
if (value === null || typeof value !== 'object' || Array.isArray(value))
|
|
28
|
+
return null;
|
|
29
|
+
const typed = Object.keys(value).filter((tag) => (0, exports.textOf)(value, tag).trim());
|
|
30
|
+
const own = typed.find((tag) => tag.toLowerCase() === reader.toLowerCase()) ?? typed.find((tag) => base(tag) === base(reader));
|
|
31
|
+
const language = own ?? languages.find((tag) => typed.includes(tag)) ?? typed[0];
|
|
32
|
+
return language ? { text: (0, exports.textOf)(value, language), language, other: !own } : null;
|
|
33
|
+
}
|
|
34
|
+
/** A language's name, as the page's language says it ("Arabic", "العربية"): the browser's, else its tag. */
|
|
35
|
+
function languageName(tag, locale) {
|
|
36
|
+
try {
|
|
37
|
+
const name = new Intl.DisplayNames([locale], { type: 'language' }).of(tag);
|
|
38
|
+
if (name && name !== tag)
|
|
39
|
+
return name;
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
// A browser with no names of languages, or a tag it cannot read.
|
|
43
|
+
}
|
|
44
|
+
return tag.toUpperCase();
|
|
45
|
+
}
|
|
46
|
+
/** Names joined as a sentence joins them, in the page's language: "Arabic and French". */
|
|
47
|
+
function joined(names, locale) {
|
|
48
|
+
try {
|
|
49
|
+
return new Intl.ListFormat(locale, { type: 'conjunction' }).format(names);
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
return names.join(', ');
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* A text kept in several languages (`translate`) checked: an object of each language's text — a plain text, from a
|
|
57
|
+
* source that gives one language, as its first language's — typed in every language a required answer is typed in
|
|
58
|
+
* (`requiredIn`, else all): "Title is required in Arabic" while it is typed in some, "Title is required" while in none of
|
|
59
|
+
* them; then each language's text as the field checks one text — its most characters, its pattern — named with its
|
|
60
|
+
* language: "Title (Arabic) is 3 characters over its most". Undefined when it is fine.
|
|
61
|
+
*/
|
|
62
|
+
function checkTranslated(field, value, required, messages = messages_1.MESSAGES.en, today, widget) {
|
|
63
|
+
const languages = (0, languages_1.languagesOf)(field) ?? [];
|
|
64
|
+
const label = field.label || 'This field';
|
|
65
|
+
const texts = typeof value === 'string' ? { [languages[0]]: value } : value;
|
|
66
|
+
const say = (key, values = {}) => (0, messages_1.fillMessage)(messages, messages[key], { label, ...values });
|
|
67
|
+
if (texts === null || texts === undefined)
|
|
68
|
+
return required ? say((0, record_words_1.isQuestion)(label) ? 'requiredQuestion' : 'required') : undefined;
|
|
69
|
+
if (typeof texts !== 'object' || Array.isArray(texts) || Object.values(texts).some((text) => typeof text !== 'string' && text !== null))
|
|
70
|
+
return say('text');
|
|
71
|
+
const asked = required ? (field.requiredIn ?? languages) : [];
|
|
72
|
+
const missing = asked.filter((tag) => !(0, exports.textOf)(texts, tag).trim());
|
|
73
|
+
if (missing.length) {
|
|
74
|
+
const none = languages.every((tag) => !(0, exports.textOf)(texts, tag).trim());
|
|
75
|
+
if (none && missing.length === languages.length)
|
|
76
|
+
return say((0, record_words_1.isQuestion)(label) ? 'requiredQuestion' : 'required');
|
|
77
|
+
const names = joined(missing.map((tag) => languageName(tag, messages.locale)), messages.locale);
|
|
78
|
+
return say((0, record_words_1.isQuestion)(label) ? 'languagesNeededQuestion' : 'languagesNeeded', { languages: names });
|
|
79
|
+
}
|
|
80
|
+
// Each language's text as one text of the field: its label naming the language.
|
|
81
|
+
const one = { ...field, translate: undefined, requiredIn: undefined };
|
|
82
|
+
for (const tag of languages) {
|
|
83
|
+
const text = (0, exports.textOf)(texts, tag);
|
|
84
|
+
if (!text.trim())
|
|
85
|
+
continue;
|
|
86
|
+
const problem = (0, check_1.checkValue)({ ...one, label: `${label} (${languageName(tag, messages.locale)})` }, text, false, messages, today, widget);
|
|
87
|
+
if (problem)
|
|
88
|
+
return problem;
|
|
89
|
+
}
|
|
90
|
+
return undefined;
|
|
91
|
+
}
|
|
92
|
+
/** Which of a text's languages a problem is in: those a required answer misses, and those whose text the field refuses. */
|
|
93
|
+
function languagesAtFault(field, value, required, messages = messages_1.MESSAGES.en, today) {
|
|
94
|
+
const languages = (0, languages_1.languagesOf)(field) ?? [];
|
|
95
|
+
const asked = required ? (field.requiredIn ?? languages) : [];
|
|
96
|
+
const one = { ...field, translate: undefined, requiredIn: undefined };
|
|
97
|
+
return languages.filter((tag) => {
|
|
98
|
+
const text = typeof value === 'string' ? (tag === languages[0] ? value : '') : (0, exports.textOf)(value, tag);
|
|
99
|
+
if (!text.trim())
|
|
100
|
+
return asked.includes(tag);
|
|
101
|
+
return (0, check_1.checkValue)(one, text, false, messages, today) !== undefined;
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=languages-part.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"languages-part.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/record/languages-part.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { checkValue } from './check.mjs';
|
|
2
|
+
import { languagesOf } from './languages.mjs';
|
|
3
|
+
import { fillMessage, MESSAGES } from './messages.mjs';
|
|
4
|
+
import { isQuestion } from './record-words.mjs';
|
|
5
|
+
/** The text a value holds in one language, as typed — or empty. */
|
|
6
|
+
export const textOf = (value, language) => {
|
|
7
|
+
const held = value !== null && typeof value === 'object' && !Array.isArray(value) ? value[language] : undefined;
|
|
8
|
+
return typeof held === 'string' ? held : '';
|
|
9
|
+
};
|
|
10
|
+
const base = (tag) => tag.toLowerCase().split('-')[0];
|
|
11
|
+
/**
|
|
12
|
+
* A text kept in several languages, as a reader of `reader` reads it: in their language where it was typed there (its
|
|
13
|
+
* tag, or the same language's: "en" for "en-GB"), else in the first of `languages` (the field's order) it was typed in,
|
|
14
|
+
* `other` then. A plain text — a source that gives one language — is itself. Null for none.
|
|
15
|
+
*/
|
|
16
|
+
export function textIn(value, reader, languages = []) {
|
|
17
|
+
if (typeof value === 'string')
|
|
18
|
+
return value.trim() ? { text: value, other: false } : null;
|
|
19
|
+
if (value === null || typeof value !== 'object' || Array.isArray(value))
|
|
20
|
+
return null;
|
|
21
|
+
const typed = Object.keys(value).filter((tag) => textOf(value, tag).trim());
|
|
22
|
+
const own = typed.find((tag) => tag.toLowerCase() === reader.toLowerCase()) ?? typed.find((tag) => base(tag) === base(reader));
|
|
23
|
+
const language = own ?? languages.find((tag) => typed.includes(tag)) ?? typed[0];
|
|
24
|
+
return language ? { text: textOf(value, language), language, other: !own } : null;
|
|
25
|
+
}
|
|
26
|
+
/** A language's name, as the page's language says it ("Arabic", "العربية"): the browser's, else its tag. */
|
|
27
|
+
export function languageName(tag, locale) {
|
|
28
|
+
try {
|
|
29
|
+
const name = new Intl.DisplayNames([locale], { type: 'language' }).of(tag);
|
|
30
|
+
if (name && name !== tag)
|
|
31
|
+
return name;
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
// A browser with no names of languages, or a tag it cannot read.
|
|
35
|
+
}
|
|
36
|
+
return tag.toUpperCase();
|
|
37
|
+
}
|
|
38
|
+
/** Names joined as a sentence joins them, in the page's language: "Arabic and French". */
|
|
39
|
+
function joined(names, locale) {
|
|
40
|
+
try {
|
|
41
|
+
return new Intl.ListFormat(locale, { type: 'conjunction' }).format(names);
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
return names.join(', ');
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* A text kept in several languages (`translate`) checked: an object of each language's text — a plain text, from a
|
|
49
|
+
* source that gives one language, as its first language's — typed in every language a required answer is typed in
|
|
50
|
+
* (`requiredIn`, else all): "Title is required in Arabic" while it is typed in some, "Title is required" while in none of
|
|
51
|
+
* them; then each language's text as the field checks one text — its most characters, its pattern — named with its
|
|
52
|
+
* language: "Title (Arabic) is 3 characters over its most". Undefined when it is fine.
|
|
53
|
+
*/
|
|
54
|
+
export function checkTranslated(field, value, required, messages = MESSAGES.en, today, widget) {
|
|
55
|
+
const languages = languagesOf(field) ?? [];
|
|
56
|
+
const label = field.label || 'This field';
|
|
57
|
+
const texts = typeof value === 'string' ? { [languages[0]]: value } : value;
|
|
58
|
+
const say = (key, values = {}) => fillMessage(messages, messages[key], { label, ...values });
|
|
59
|
+
if (texts === null || texts === undefined)
|
|
60
|
+
return required ? say(isQuestion(label) ? 'requiredQuestion' : 'required') : undefined;
|
|
61
|
+
if (typeof texts !== 'object' || Array.isArray(texts) || Object.values(texts).some((text) => typeof text !== 'string' && text !== null))
|
|
62
|
+
return say('text');
|
|
63
|
+
const asked = required ? (field.requiredIn ?? languages) : [];
|
|
64
|
+
const missing = asked.filter((tag) => !textOf(texts, tag).trim());
|
|
65
|
+
if (missing.length) {
|
|
66
|
+
const none = languages.every((tag) => !textOf(texts, tag).trim());
|
|
67
|
+
if (none && missing.length === languages.length)
|
|
68
|
+
return say(isQuestion(label) ? 'requiredQuestion' : 'required');
|
|
69
|
+
const names = joined(missing.map((tag) => languageName(tag, messages.locale)), messages.locale);
|
|
70
|
+
return say(isQuestion(label) ? 'languagesNeededQuestion' : 'languagesNeeded', { languages: names });
|
|
71
|
+
}
|
|
72
|
+
// Each language's text as one text of the field: its label naming the language.
|
|
73
|
+
const one = { ...field, translate: undefined, requiredIn: undefined };
|
|
74
|
+
for (const tag of languages) {
|
|
75
|
+
const text = textOf(texts, tag);
|
|
76
|
+
if (!text.trim())
|
|
77
|
+
continue;
|
|
78
|
+
const problem = checkValue({ ...one, label: `${label} (${languageName(tag, messages.locale)})` }, text, false, messages, today, widget);
|
|
79
|
+
if (problem)
|
|
80
|
+
return problem;
|
|
81
|
+
}
|
|
82
|
+
return undefined;
|
|
83
|
+
}
|
|
84
|
+
/** Which of a text's languages a problem is in: those a required answer misses, and those whose text the field refuses. */
|
|
85
|
+
export function languagesAtFault(field, value, required, messages = MESSAGES.en, today) {
|
|
86
|
+
const languages = languagesOf(field) ?? [];
|
|
87
|
+
const asked = required ? (field.requiredIn ?? languages) : [];
|
|
88
|
+
const one = { ...field, translate: undefined, requiredIn: undefined };
|
|
89
|
+
return languages.filter((tag) => {
|
|
90
|
+
const text = typeof value === 'string' ? (tag === languages[0] ? value : '') : textOf(value, tag);
|
|
91
|
+
if (!text.trim())
|
|
92
|
+
return asked.includes(tag);
|
|
93
|
+
return checkValue(one, text, false, messages, today) !== undefined;
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=languages-part.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"languages-part.mjs","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/record/languages-part.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { type Part } from '../parts.mjs';
|
|
2
|
+
import type * as LanguagesModule from './languages-part.mjs';
|
|
3
|
+
/**
|
|
4
|
+
* A text kept in several languages (a char, text or html field's `translate`), as people typed each: its value an object
|
|
5
|
+
* of each language's text by its tag, `{ "ar": "فيلا على البحر", "en": "Sea-view villa" }`, a language not typed yet left
|
|
6
|
+
* out. Nothing here translates: a language with no text shows another's, said to be another's, never a machine's guess.
|
|
7
|
+
*/
|
|
8
|
+
export type Translated = Record<string, string>;
|
|
9
|
+
/** The languages a field keeps its text in (`translate`), or undefined for a text in one. */
|
|
10
|
+
export declare const languagesOf: (field: {
|
|
11
|
+
type: string;
|
|
12
|
+
} | undefined) => string[] | undefined;
|
|
13
|
+
/** Whether a page keeps a text of its own in several languages: its form's languages part is asked for. */
|
|
14
|
+
export declare const hasLanguages: (page: {
|
|
15
|
+
fields: Readonly<Record<string, {
|
|
16
|
+
type: string;
|
|
17
|
+
}>>;
|
|
18
|
+
}) => boolean;
|
|
19
|
+
/** The languages part's form code (languages-part.ts). */
|
|
20
|
+
export type FormLanguagesPart = typeof LanguagesModule;
|
|
21
|
+
/**
|
|
22
|
+
* A text in several languages read in the reader's language and checked language by language — required in those the
|
|
23
|
+
* page says, each within the field's most characters and its pattern — loaded before a page with one is drawn; until
|
|
24
|
+
* then a check says nothing of it, and a save waits for it.
|
|
25
|
+
*/
|
|
26
|
+
export declare const formLanguagesPart: Part<FormLanguagesPart>;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { type Part } from '../parts';
|
|
2
|
+
import type * as LanguagesModule from './languages-part';
|
|
3
|
+
/**
|
|
4
|
+
* A text kept in several languages (a char, text or html field's `translate`), as people typed each: its value an object
|
|
5
|
+
* of each language's text by its tag, `{ "ar": "فيلا على البحر", "en": "Sea-view villa" }`, a language not typed yet left
|
|
6
|
+
* out. Nothing here translates: a language with no text shows another's, said to be another's, never a machine's guess.
|
|
7
|
+
*/
|
|
8
|
+
export type Translated = Record<string, string>;
|
|
9
|
+
/** The languages a field keeps its text in (`translate`), or undefined for a text in one. */
|
|
10
|
+
export declare const languagesOf: (field: {
|
|
11
|
+
type: string;
|
|
12
|
+
} | undefined) => string[] | undefined;
|
|
13
|
+
/** Whether a page keeps a text of its own in several languages: its form's languages part is asked for. */
|
|
14
|
+
export declare const hasLanguages: (page: {
|
|
15
|
+
fields: Readonly<Record<string, {
|
|
16
|
+
type: string;
|
|
17
|
+
}>>;
|
|
18
|
+
}) => boolean;
|
|
19
|
+
/** The languages part's form code (languages-part.ts). */
|
|
20
|
+
export type FormLanguagesPart = typeof LanguagesModule;
|
|
21
|
+
/**
|
|
22
|
+
* A text in several languages read in the reader's language and checked language by language — required in those the
|
|
23
|
+
* page says, each within the field's most characters and its pattern — loaded before a page with one is drawn; until
|
|
24
|
+
* then a check says nothing of it, and a save waits for it.
|
|
25
|
+
*/
|
|
26
|
+
export declare const formLanguagesPart: Part<FormLanguagesPart>;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.formLanguagesPart = exports.hasLanguages = exports.languagesOf = void 0;
|
|
4
|
+
const parts_1 = require("../parts");
|
|
5
|
+
/** The languages a field keeps its text in (`translate`), or undefined for a text in one. */
|
|
6
|
+
const languagesOf = (field) => {
|
|
7
|
+
const tags = field?.translate;
|
|
8
|
+
return Array.isArray(tags) && tags.length ? tags : undefined;
|
|
9
|
+
};
|
|
10
|
+
exports.languagesOf = languagesOf;
|
|
11
|
+
/** Whether a page keeps a text of its own in several languages: its form's languages part is asked for. */
|
|
12
|
+
const hasLanguages = (page) => Object.values(page.fields).some((field) => (0, exports.languagesOf)(field));
|
|
13
|
+
exports.hasLanguages = hasLanguages;
|
|
14
|
+
/**
|
|
15
|
+
* A text in several languages read in the reader's language and checked language by language — required in those the
|
|
16
|
+
* page says, each within the field's most characters and its pattern — loaded before a page with one is drawn; until
|
|
17
|
+
* then a check says nothing of it, and a save waits for it.
|
|
18
|
+
*/
|
|
19
|
+
exports.formLanguagesPart = (0, parts_1.lazyPart)('languages', () => Promise.resolve().then(() => require('./languages-part')));
|
|
20
|
+
//# sourceMappingURL=languages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"languages.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/record/languages.ts"],"names":[],"mappings":";;;AAAA,oCAA+C;AAU/C,6FAA6F;AACtF,MAAM,WAAW,GAAG,CAAC,KAAmC,EAAwB,EAAE;IACvF,MAAM,IAAI,GAAI,KAA6C,EAAE,SAAS,CAAC;IACvE,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAE,IAAiB,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7E,CAAC,CAAC;AAHW,QAAA,WAAW,eAGtB;AAEF,2GAA2G;AACpG,MAAM,YAAY,GAAG,CAAC,IAA4D,EAAW,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,mBAAW,EAAC,KAAK,CAAC,CAAC,CAAC;AAAzJ,QAAA,YAAY,gBAA6I;AAKtK;;;;GAIG;AACU,QAAA,iBAAiB,GAA4B,IAAA,gBAAQ,EAAC,WAAW,EAAE,GAAG,EAAE,sCAAQ,kBAAkB,EAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { lazyPart } from '../parts.mjs';
|
|
2
|
+
/** The languages a field keeps its text in (`translate`), or undefined for a text in one. */
|
|
3
|
+
export const languagesOf = (field) => {
|
|
4
|
+
const tags = field?.translate;
|
|
5
|
+
return Array.isArray(tags) && tags.length ? tags : undefined;
|
|
6
|
+
};
|
|
7
|
+
/** Whether a page keeps a text of its own in several languages: its form's languages part is asked for. */
|
|
8
|
+
export const hasLanguages = (page) => Object.values(page.fields).some((field) => languagesOf(field));
|
|
9
|
+
/**
|
|
10
|
+
* A text in several languages read in the reader's language and checked language by language — required in those the
|
|
11
|
+
* page says, each within the field's most characters and its pattern — loaded before a page with one is drawn; until
|
|
12
|
+
* then a check says nothing of it, and a save waits for it.
|
|
13
|
+
*/
|
|
14
|
+
export const formLanguagesPart = lazyPart('languages', () => import('./languages-part.mjs'));
|
|
15
|
+
//# sourceMappingURL=languages.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"languages.mjs","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/record/languages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAa,MAAM,UAAU,CAAC;AAU/C,6FAA6F;AAC7F,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAmC,EAAwB,EAAE;IACvF,MAAM,IAAI,GAAI,KAA6C,EAAE,SAAS,CAAC;IACvE,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAE,IAAiB,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7E,CAAC,CAAC;AAEF,2GAA2G;AAC3G,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,IAA4D,EAAW,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;AAKtK;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAA4B,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC"}
|
package/src/lib/record/limits.js
CHANGED
|
@@ -5,6 +5,7 @@ exports.checkDay = checkDay;
|
|
|
5
5
|
const functions_1 = require("../expression/functions");
|
|
6
6
|
const zones_1 = require("./zones");
|
|
7
7
|
const messages_1 = require("./messages");
|
|
8
|
+
const day_words_1 = require("./day-words");
|
|
8
9
|
/**
|
|
9
10
|
* A date's limits: its earliest and latest day (`min`, `max`), each a day
|
|
10
11
|
* ("2026-03-02") or one counted from the day the form is opened ("today",
|
|
@@ -20,7 +21,7 @@ function dayOf(limit, today = (0, functions_1.localDay)(new Date())) {
|
|
|
20
21
|
const [y, m, d] = today.split('-').map(Number);
|
|
21
22
|
return new Date(Date.UTC(y, m - 1, d + Number(counted[1] ?? 0))).toISOString().slice(0, 10);
|
|
22
23
|
}
|
|
23
|
-
/** A
|
|
24
|
+
/** A weekday in words, in the messages' language: "Friday", "الجمعة". */
|
|
24
25
|
const written = (options, messages, at) => new Intl.DateTimeFormat(messages.locale, { ...options, timeZone: 'UTC', numberingSystem: 'latn' }).format(at);
|
|
25
26
|
/** What a day breaks of its field's limits, or undefined: before its earliest, after its latest, on a day of the week it may not fall on. */
|
|
26
27
|
function checkDay(field, value, today, messages) {
|
|
@@ -29,7 +30,8 @@ function checkDay(field, value, today, messages) {
|
|
|
29
30
|
// A date and time by the day it falls on in its zone (the page's, written into it), else where the person is.
|
|
30
31
|
const day = field.type === 'date' ? value : (0, zones_1.dayIn)(Date.parse(value), field.timeZone);
|
|
31
32
|
const say = (key, limit) => (0, messages_1.fillMessage)(messages, messages[key], { label: field.label, min: limit, max: limit, days: limit });
|
|
32
|
-
|
|
33
|
+
// As the page's date boxes write a day: its order, its language (`dayWords`).
|
|
34
|
+
const words = (limit) => (0, day_words_1.dayWords)(limit, messages);
|
|
33
35
|
const min = field.min && dayOf(field.min, today);
|
|
34
36
|
const max = field.max && dayOf(field.max, today);
|
|
35
37
|
if (min && day < min)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"limits.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/record/limits.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"limits.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/record/limits.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { localDay } from '../expression/functions.mjs';
|
|
2
2
|
import { dayIn } from './zones.mjs';
|
|
3
3
|
import { fillMessage } from './messages.mjs';
|
|
4
|
+
import { dayWords } from './day-words.mjs';
|
|
4
5
|
/**
|
|
5
6
|
* A date's limits: its earliest and latest day (`min`, `max`), each a day
|
|
6
7
|
* ("2026-03-02") or one counted from the day the form is opened ("today",
|
|
@@ -16,7 +17,7 @@ export function dayOf(limit, today = localDay(new Date())) {
|
|
|
16
17
|
const [y, m, d] = today.split('-').map(Number);
|
|
17
18
|
return new Date(Date.UTC(y, m - 1, d + Number(counted[1] ?? 0))).toISOString().slice(0, 10);
|
|
18
19
|
}
|
|
19
|
-
/** A
|
|
20
|
+
/** A weekday in words, in the messages' language: "Friday", "الجمعة". */
|
|
20
21
|
const written = (options, messages, at) => new Intl.DateTimeFormat(messages.locale, { ...options, timeZone: 'UTC', numberingSystem: 'latn' }).format(at);
|
|
21
22
|
/** What a day breaks of its field's limits, or undefined: before its earliest, after its latest, on a day of the week it may not fall on. */
|
|
22
23
|
export function checkDay(field, value, today, messages) {
|
|
@@ -25,7 +26,8 @@ export function checkDay(field, value, today, messages) {
|
|
|
25
26
|
// A date and time by the day it falls on in its zone (the page's, written into it), else where the person is.
|
|
26
27
|
const day = field.type === 'date' ? value : dayIn(Date.parse(value), field.timeZone);
|
|
27
28
|
const say = (key, limit) => fillMessage(messages, messages[key], { label: field.label, min: limit, max: limit, days: limit });
|
|
28
|
-
|
|
29
|
+
// As the page's date boxes write a day: its order, its language (`dayWords`).
|
|
30
|
+
const words = (limit) => dayWords(limit, messages);
|
|
29
31
|
const min = field.min && dayOf(field.min, today);
|
|
30
32
|
const max = field.max && dayOf(field.max, today);
|
|
31
33
|
if (min && day < min)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"limits.mjs","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/record/limits.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,WAAW,EAAiB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"limits.mjs","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/record/limits.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@ exports.ar = void 0;
|
|
|
4
4
|
/** The validation messages in Arabic. */
|
|
5
5
|
exports.ar = {
|
|
6
6
|
required: '{label} مطلوب',
|
|
7
|
+
requiredQuestion: 'يُرجى الإجابة عن {label}',
|
|
7
8
|
maxLength: '{label}: لا يزيد عدد الأحرف على {max}',
|
|
8
9
|
pattern: 'صيغة {label} غير صحيحة',
|
|
9
10
|
text: 'يجب أن يكون {label} نصًا',
|
|
@@ -85,6 +86,11 @@ exports.ar = {
|
|
|
85
86
|
formSent: 'لقد أرسلت إجاباتك على هذا النموذج من قبل.',
|
|
86
87
|
choiceFull: 'لا أماكن متبقية في {option}',
|
|
87
88
|
choiceFilled: 'امتلأ {option} الآن: اختر غيره',
|
|
89
|
+
approvalLocked: 'مقفل ما دام ينتظر الموافقة',
|
|
90
|
+
approvalReasonNeeded: 'اذكر سبب الرفض',
|
|
91
|
+
approvalNotYours: 'ليس لك أن تقرّر في {level} الآن',
|
|
92
|
+
languagesNeeded: '{label} مطلوب باللغة {languages}',
|
|
93
|
+
languagesNeededQuestion: 'يُرجى الإجابة عن {label} باللغة {languages}',
|
|
88
94
|
locale: 'ar',
|
|
89
95
|
};
|
|
90
96
|
//# sourceMappingURL=ar.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ar.js","sourceRoot":"","sources":["../../../../../../../libs/core/src/lib/record/locales/ar.ts"],"names":[],"mappings":";;;AAEA,yCAAyC;AAC5B,QAAA,EAAE,GAAa;IAC1B,QAAQ,EAAE,eAAe;IACzB,SAAS,EAAE,uCAAuC;IAClD,OAAO,EAAE,wBAAwB;IACjC,IAAI,EAAE,0BAA0B;IAChC,MAAM,EAAE,2BAA2B;IACnC,OAAO,EAAE,kCAAkC;IAC3C,GAAG,EAAE,8BAA8B;IACnC,GAAG,EAAE,+BAA+B;IACpC,QAAQ,EAAE,0CAA0C;IACpD,WAAW,EAAE,uCAAuC;IACpD,WAAW,EAAE,qCAAqC;IAClD,YAAY,EAAE,0CAA0C;IACxD,MAAM,EAAE,sCAAsC;IAC9C,WAAW,EAAE,0DAA0D;IACvE,OAAO,EAAE,+BAA+B;IACxC,UAAU,EAAE,6CAA6C;IACzD,WAAW,EAAE,yCAAyC;IACtD,cAAc,EAAE,6DAA6D;IAC7E,eAAe,EAAE,2BAA2B;IAC5C,MAAM,EAAE,wCAAwC;IAChD,aAAa,EAAE,uDAAuD;IACtE,MAAM,EAAE,2BAA2B;IACnC,SAAS,EAAE,mBAAmB;IAC9B,UAAU,EAAE,wBAAwB;IACpC,OAAO,EAAE,oCAAoC;IAC7C,MAAM,EAAE,2BAA2B;IACnC,OAAO,EAAE,iCAAiC;IAC1C,SAAS,EAAE,kCAAkC;IAC7C,IAAI,EAAE,2BAA2B;IACjC,QAAQ,EAAE,4BAA4B;IACtC,QAAQ,EAAE,iCAAiC;IAC3C,QAAQ,EAAE,6CAA6C;IACvD,QAAQ,EAAE,sCAAsC;IAChD,WAAW,EAAE,uCAAuC;IACpD,eAAe,EAAE,gDAAgD;IACjE,WAAW,EAAE,2BAA2B;IACxC,SAAS,EAAE,oCAAoC;IAC/C,QAAQ,EAAE,kCAAkC;IAC5C,OAAO,EAAE,iCAAiC;IAC1C,MAAM,EAAE,kCAAkC;IAC1C,QAAQ,EAAE,+BAA+B;IACzC,UAAU,EAAE,iCAAiC;IAC7C,KAAK,EAAE,oCAAoC;IAC3C,QAAQ,EAAE,6CAA6C;IACvD,EAAE,EAAE,IAAI;IACR,IAAI,EAAE,iCAAiC;IACvC,KAAK,EAAE,8CAA8C;IACrD,GAAG,EAAE,kCAAkC;IACvC,KAAK,EAAE,iDAAiD;IACxD,IAAI,EAAE,uBAAuB;IAC7B,MAAM,EAAE,mCAAmC;IAC3C,KAAK,EAAE,mCAAmC;IAC1C,OAAO,EAAE,oCAAoC;IAC7C,QAAQ,EAAE,oCAAoC;IAC9C,QAAQ,EAAE,iCAAiC;IAC3C,YAAY,EAAE,6EAA6E;IAC3F,cAAc,EAAE,kCAAkC;IAClD,aAAa,EAAE,gCAAgC;IAC/C,UAAU,EAAE,6CAA6C;IACzD,aAAa,EAAE,2BAA2B;IAC1C,eAAe,EAAE,6BAA6B;IAC9C,YAAY,EAAE,yBAAyB;IACvC,YAAY,EAAE,oGAAoG;IAClH,cAAc,EAAE,yBAAyB;IACzC,cAAc,EAAE,kDAAkD;IAClE,MAAM,EAAE,oDAAoD;IAC5D,SAAS,EAAE,2CAA2C;IACtD,QAAQ,EAAE,iEAAiE;IAC3E,SAAS,EAAE,0CAA0C;IACrD,cAAc,EAAE,mCAAmC;IACnD,QAAQ,EAAE,iEAAiE;IAC3E,aAAa,EAAE,iCAAiC;IAChD,cAAc,EAAE,2BAA2B;IAC3C,YAAY,EAAE,+BAA+B;IAC7C,aAAa,EAAE,8BAA8B;IAC7C,iBAAiB,EAAE,8BAA8B;IACjD,SAAS,EAAE,8BAA8B;IACzC,UAAU,EAAE,8BAA8B;IAC1C,QAAQ,EAAE,2CAA2C;IACrD,QAAQ,EAAE,2CAA2C;IACrD,UAAU,EAAE,6BAA6B;IACzC,YAAY,EAAE,gCAAgC;IAC9C,MAAM,EAAE,IAAI;CACb,CAAC"}
|
|
1
|
+
{"version":3,"file":"ar.js","sourceRoot":"","sources":["../../../../../../../libs/core/src/lib/record/locales/ar.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/** The validation messages in Arabic. */
|
|
2
2
|
export const ar = {
|
|
3
3
|
required: '{label} مطلوب',
|
|
4
|
+
requiredQuestion: 'يُرجى الإجابة عن {label}',
|
|
4
5
|
maxLength: '{label}: لا يزيد عدد الأحرف على {max}',
|
|
5
6
|
pattern: 'صيغة {label} غير صحيحة',
|
|
6
7
|
text: 'يجب أن يكون {label} نصًا',
|
|
@@ -82,6 +83,11 @@ export const ar = {
|
|
|
82
83
|
formSent: 'لقد أرسلت إجاباتك على هذا النموذج من قبل.',
|
|
83
84
|
choiceFull: 'لا أماكن متبقية في {option}',
|
|
84
85
|
choiceFilled: 'امتلأ {option} الآن: اختر غيره',
|
|
86
|
+
approvalLocked: 'مقفل ما دام ينتظر الموافقة',
|
|
87
|
+
approvalReasonNeeded: 'اذكر سبب الرفض',
|
|
88
|
+
approvalNotYours: 'ليس لك أن تقرّر في {level} الآن',
|
|
89
|
+
languagesNeeded: '{label} مطلوب باللغة {languages}',
|
|
90
|
+
languagesNeededQuestion: 'يُرجى الإجابة عن {label} باللغة {languages}',
|
|
85
91
|
locale: 'ar',
|
|
86
92
|
};
|
|
87
93
|
//# sourceMappingURL=ar.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ar.mjs","sourceRoot":"","sources":["../../../../../../../libs/core/src/lib/record/locales/ar.ts"],"names":[],"mappings":"AAEA,yCAAyC;AACzC,MAAM,CAAC,MAAM,EAAE,GAAa;IAC1B,QAAQ,EAAE,eAAe;IACzB,SAAS,EAAE,uCAAuC;IAClD,OAAO,EAAE,wBAAwB;IACjC,IAAI,EAAE,0BAA0B;IAChC,MAAM,EAAE,2BAA2B;IACnC,OAAO,EAAE,kCAAkC;IAC3C,GAAG,EAAE,8BAA8B;IACnC,GAAG,EAAE,+BAA+B;IACpC,QAAQ,EAAE,0CAA0C;IACpD,WAAW,EAAE,uCAAuC;IACpD,WAAW,EAAE,qCAAqC;IAClD,YAAY,EAAE,0CAA0C;IACxD,MAAM,EAAE,sCAAsC;IAC9C,WAAW,EAAE,0DAA0D;IACvE,OAAO,EAAE,+BAA+B;IACxC,UAAU,EAAE,6CAA6C;IACzD,WAAW,EAAE,yCAAyC;IACtD,cAAc,EAAE,6DAA6D;IAC7E,eAAe,EAAE,2BAA2B;IAC5C,MAAM,EAAE,wCAAwC;IAChD,aAAa,EAAE,uDAAuD;IACtE,MAAM,EAAE,2BAA2B;IACnC,SAAS,EAAE,mBAAmB;IAC9B,UAAU,EAAE,wBAAwB;IACpC,OAAO,EAAE,oCAAoC;IAC7C,MAAM,EAAE,2BAA2B;IACnC,OAAO,EAAE,iCAAiC;IAC1C,SAAS,EAAE,kCAAkC;IAC7C,IAAI,EAAE,2BAA2B;IACjC,QAAQ,EAAE,4BAA4B;IACtC,QAAQ,EAAE,iCAAiC;IAC3C,QAAQ,EAAE,6CAA6C;IACvD,QAAQ,EAAE,sCAAsC;IAChD,WAAW,EAAE,uCAAuC;IACpD,eAAe,EAAE,gDAAgD;IACjE,WAAW,EAAE,2BAA2B;IACxC,SAAS,EAAE,oCAAoC;IAC/C,QAAQ,EAAE,kCAAkC;IAC5C,OAAO,EAAE,iCAAiC;IAC1C,MAAM,EAAE,kCAAkC;IAC1C,QAAQ,EAAE,+BAA+B;IACzC,UAAU,EAAE,iCAAiC;IAC7C,KAAK,EAAE,oCAAoC;IAC3C,QAAQ,EAAE,6CAA6C;IACvD,EAAE,EAAE,IAAI;IACR,IAAI,EAAE,iCAAiC;IACvC,KAAK,EAAE,8CAA8C;IACrD,GAAG,EAAE,kCAAkC;IACvC,KAAK,EAAE,iDAAiD;IACxD,IAAI,EAAE,uBAAuB;IAC7B,MAAM,EAAE,mCAAmC;IAC3C,KAAK,EAAE,mCAAmC;IAC1C,OAAO,EAAE,oCAAoC;IAC7C,QAAQ,EAAE,oCAAoC;IAC9C,QAAQ,EAAE,iCAAiC;IAC3C,YAAY,EAAE,6EAA6E;IAC3F,cAAc,EAAE,kCAAkC;IAClD,aAAa,EAAE,gCAAgC;IAC/C,UAAU,EAAE,6CAA6C;IACzD,aAAa,EAAE,2BAA2B;IAC1C,eAAe,EAAE,6BAA6B;IAC9C,YAAY,EAAE,yBAAyB;IACvC,YAAY,EAAE,oGAAoG;IAClH,cAAc,EAAE,yBAAyB;IACzC,cAAc,EAAE,kDAAkD;IAClE,MAAM,EAAE,oDAAoD;IAC5D,SAAS,EAAE,2CAA2C;IACtD,QAAQ,EAAE,iEAAiE;IAC3E,SAAS,EAAE,0CAA0C;IACrD,cAAc,EAAE,mCAAmC;IACnD,QAAQ,EAAE,iEAAiE;IAC3E,aAAa,EAAE,iCAAiC;IAChD,cAAc,EAAE,2BAA2B;IAC3C,YAAY,EAAE,+BAA+B;IAC7C,aAAa,EAAE,8BAA8B;IAC7C,iBAAiB,EAAE,8BAA8B;IACjD,SAAS,EAAE,8BAA8B;IACzC,UAAU,EAAE,8BAA8B;IAC1C,QAAQ,EAAE,2CAA2C;IACrD,QAAQ,EAAE,2CAA2C;IACrD,UAAU,EAAE,6BAA6B;IACzC,YAAY,EAAE,gCAAgC;IAC9C,MAAM,EAAE,IAAI;CACb,CAAC"}
|
|
1
|
+
{"version":3,"file":"ar.mjs","sourceRoot":"","sources":["../../../../../../../libs/core/src/lib/record/locales/ar.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@ exports.de = void 0;
|
|
|
4
4
|
/** The validation messages in German. */
|
|
5
5
|
exports.de = {
|
|
6
6
|
required: '{label} ist erforderlich',
|
|
7
|
+
requiredQuestion: 'Bitte beantworten Sie {label}',
|
|
7
8
|
maxLength: '{label} hat höchstens {max} Zeichen',
|
|
8
9
|
pattern: '{label} hat nicht das erwartete Format',
|
|
9
10
|
text: '{label} muss Text sein',
|
|
@@ -87,6 +88,11 @@ exports.de = {
|
|
|
87
88
|
formSent: 'Sie haben Ihre Antworten auf dieses Formular bereits gesendet.',
|
|
88
89
|
choiceFull: '{option} ist ausgebucht',
|
|
89
90
|
choiceFilled: '{option} ist jetzt ausgebucht: Wählen Sie etwas anderes',
|
|
91
|
+
approvalLocked: 'Gesperrt, solange es auf die Genehmigung wartet',
|
|
92
|
+
approvalReasonNeeded: 'Geben Sie an, warum es abgelehnt wird',
|
|
93
|
+
approvalNotYours: 'Über {level} entscheiden Sie jetzt nicht',
|
|
94
|
+
languagesNeeded: '{label} ist auf {languages} erforderlich',
|
|
95
|
+
languagesNeededQuestion: 'Bitte beantworten Sie {label} auf {languages}',
|
|
90
96
|
locale: 'de',
|
|
91
97
|
};
|
|
92
98
|
//# sourceMappingURL=de.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"de.js","sourceRoot":"","sources":["../../../../../../../libs/core/src/lib/record/locales/de.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"de.js","sourceRoot":"","sources":["../../../../../../../libs/core/src/lib/record/locales/de.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/** The validation messages in German. */
|
|
2
2
|
export const de = {
|
|
3
3
|
required: '{label} ist erforderlich',
|
|
4
|
+
requiredQuestion: 'Bitte beantworten Sie {label}',
|
|
4
5
|
maxLength: '{label} hat höchstens {max} Zeichen',
|
|
5
6
|
pattern: '{label} hat nicht das erwartete Format',
|
|
6
7
|
text: '{label} muss Text sein',
|
|
@@ -84,6 +85,11 @@ export const de = {
|
|
|
84
85
|
formSent: 'Sie haben Ihre Antworten auf dieses Formular bereits gesendet.',
|
|
85
86
|
choiceFull: '{option} ist ausgebucht',
|
|
86
87
|
choiceFilled: '{option} ist jetzt ausgebucht: Wählen Sie etwas anderes',
|
|
88
|
+
approvalLocked: 'Gesperrt, solange es auf die Genehmigung wartet',
|
|
89
|
+
approvalReasonNeeded: 'Geben Sie an, warum es abgelehnt wird',
|
|
90
|
+
approvalNotYours: 'Über {level} entscheiden Sie jetzt nicht',
|
|
91
|
+
languagesNeeded: '{label} ist auf {languages} erforderlich',
|
|
92
|
+
languagesNeededQuestion: 'Bitte beantworten Sie {label} auf {languages}',
|
|
87
93
|
locale: 'de',
|
|
88
94
|
};
|
|
89
95
|
//# sourceMappingURL=de.mjs.map
|