@lion/ui 0.6.0-alpha.1 → 0.6.0-alpha.2
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/components/validate-messages/src/getLocalizedMessage.js +111 -0
- package/components/validate-messages/src/loadDefaultFeedbackMessagesNoSideEffects.js +9 -179
- package/components/validate-messages/src/per-entrypoint/README.md +16 -0
- package/components/validate-messages/src/per-entrypoint/loadComboboxMessagesNoSideEffects.js +22 -0
- package/components/validate-messages/src/per-entrypoint/loadFormCoreMessagesNoSideEffects.js +77 -0
- package/components/validate-messages/src/per-entrypoint/loadInputTelMessagesNoSideEffects.js +39 -0
- package/custom-elements.json +179 -0
- package/dist-types/components/validate-messages/src/getLocalizedMessage.d.ts +13 -0
- package/dist-types/components/validate-messages/src/getLocalizedMessage.d.ts.map +1 -0
- package/dist-types/components/validate-messages/src/loadDefaultFeedbackMessagesNoSideEffects.d.ts.map +1 -1
- package/dist-types/components/validate-messages/src/per-entrypoint/loadComboboxMessagesNoSideEffects.d.ts +9 -0
- package/dist-types/components/validate-messages/src/per-entrypoint/loadComboboxMessagesNoSideEffects.d.ts.map +1 -0
- package/dist-types/components/validate-messages/src/per-entrypoint/loadFormCoreMessagesNoSideEffects.d.ts +9 -0
- package/dist-types/components/validate-messages/src/per-entrypoint/loadFormCoreMessagesNoSideEffects.d.ts.map +1 -0
- package/dist-types/components/validate-messages/src/per-entrypoint/loadInputTelMessagesNoSideEffects.d.ts +9 -0
- package/dist-types/components/validate-messages/src/per-entrypoint/loadInputTelMessagesNoSideEffects.d.ts.map +1 -0
- package/dist-types/exports/validate-messages-no-side-effects.d.ts +3 -0
- package/dist-types/tsconfig.tsbuildinfo +1 -1
- package/docs/components/checkbox-group/overview.md +2 -2
- package/docs/components/collapsible/overview.md +1 -1
- package/docs/components/combobox/overview.md +1 -1
- package/docs/components/combobox/use-cases.md +1 -1
- package/docs/components/dialog/overview.md +1 -1
- package/docs/components/fieldset/overview.md +5 -5
- package/docs/components/form/overview.md +3 -3
- package/docs/components/icon/use-cases.md +1 -1
- package/docs/components/input/overview.md +1 -1
- package/docs/components/input-amount/overview.md +3 -3
- package/docs/components/input-date/overview.md +3 -3
- package/docs/components/input-datepicker/overview.md +5 -5
- package/docs/components/input-email/overview.md +2 -2
- package/docs/components/input-file/overview.md +1 -1
- package/docs/components/input-iban/overview.md +2 -2
- package/docs/components/input-range/overview.md +2 -2
- package/docs/components/input-stepper/overview.md +1 -1
- package/docs/components/input-tel/overview.md +1 -1
- package/docs/components/input-tel/use-cases.md +6 -6
- package/docs/components/input-tel-dropdown/overview.md +1 -1
- package/docs/components/radio-group/overview.md +3 -3
- package/docs/components/select-rich/use-cases.md +1 -1
- package/docs/components/tabs/examples.md +1 -1
- package/docs/fundamentals/index.md +4 -4
- package/docs/fundamentals/node-tools/providence-analytics/LocalConfiguration.md +1 -1
- package/docs/fundamentals/node-tools/providence-analytics/QueryResult.md +1 -1
- package/docs/fundamentals/node-tools/providence-analytics/analyzer.md +1 -1
- package/docs/fundamentals/node-tools/providence-analytics/dashboard.md +1 -1
- package/docs/fundamentals/node-tools/providence-analytics/overview.md +3 -3
- package/docs/fundamentals/node-tools/publish-docs/overview.md +3 -3
- package/docs/fundamentals/node-tools/rocket-preset-extend-lion-docs/overview.md +2 -2
- package/docs/fundamentals/rationales/accessibility.md +1 -1
- package/docs/fundamentals/systems/core/SlotMixin.md +1 -1
- package/docs/fundamentals/systems/core/overview.md +1 -1
- package/docs/fundamentals/systems/form/formatting-and-parsing.md +4 -4
- package/docs/fundamentals/systems/form/model-value.md +1 -1
- package/docs/fundamentals/systems/form/overview.md +28 -28
- package/docs/fundamentals/systems/form/validate.md +1 -1
- package/docs/fundamentals/systems/localize/overview.md +4 -4
- package/docs/fundamentals/systems/overlays/configuration.md +2 -2
- package/docs/fundamentals/systems/overlays/overview.md +5 -5
- package/docs/fundamentals/systems/overlays/use-cases.md +2 -2
- package/docs/fundamentals/tools/helpers/overview.md +1 -1
- package/docs/fundamentals/tools/singleton-manager/overview.md +4 -4
- package/docs/guides/how-to/create-a-custom-field.md +5 -5
- package/docs/guides/how-to/create-a-form.md +4 -4
- package/docs/guides/how-to/extend-a-native-input.md +2 -2
- package/docs/guides/index.md +8 -8
- package/docs/guides/principles/index.md +5 -5
- package/docs/guides/principles/styling.md +1 -1
- package/exports/validate-messages-no-side-effects.js +3 -0
- package/package.json +1 -1
- package/validate-messages-no-side-effects.js +3 -0
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @typedef {import('../../form-core/types/validate/validate.js').FeedbackMessageData} FeedbackMessageData
|
|
3
|
+
* @typedef {import('@lion/ui/localize.js').LocalizeManager} LocalizeManager
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
/** @type {Promise<void | object>} */
|
|
7
|
+
let pendingPromise;
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* @param {{localize: LocalizeManager}} opts
|
|
11
|
+
*/
|
|
12
|
+
export async function loadValidateNamespace({ localize }) {
|
|
13
|
+
if (pendingPromise) {
|
|
14
|
+
return pendingPromise;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
pendingPromise = localize.loadNamespace(
|
|
18
|
+
{
|
|
19
|
+
'lion-validate': /** @param {string} locale */ locale => {
|
|
20
|
+
switch (locale) {
|
|
21
|
+
case 'bg-BG':
|
|
22
|
+
return import('@lion/ui/validate-messages-translations/bg-BG.js');
|
|
23
|
+
case 'bg':
|
|
24
|
+
return import('@lion/ui/validate-messages-translations/bg.js');
|
|
25
|
+
case 'cs-CZ':
|
|
26
|
+
return import('@lion/ui/validate-messages-translations/cs-CZ.js');
|
|
27
|
+
case 'cs':
|
|
28
|
+
return import('@lion/ui/validate-messages-translations/cs.js');
|
|
29
|
+
case 'de-DE':
|
|
30
|
+
return import('@lion/ui/validate-messages-translations/de-DE.js');
|
|
31
|
+
case 'de':
|
|
32
|
+
return import('@lion/ui/validate-messages-translations/de.js');
|
|
33
|
+
case 'en-AU':
|
|
34
|
+
return import('@lion/ui/validate-messages-translations/en-AU.js');
|
|
35
|
+
case 'en-GB':
|
|
36
|
+
return import('@lion/ui/validate-messages-translations/en-GB.js');
|
|
37
|
+
case 'en-US':
|
|
38
|
+
return import('@lion/ui/validate-messages-translations/en-US.js');
|
|
39
|
+
case 'en-PH':
|
|
40
|
+
return import('@lion/ui/validate-messages-translations/en-PH.js');
|
|
41
|
+
case 'en':
|
|
42
|
+
return import('@lion/ui/validate-messages-translations/en.js');
|
|
43
|
+
case 'es-ES':
|
|
44
|
+
return import('@lion/ui/validate-messages-translations/es-ES.js');
|
|
45
|
+
case 'es':
|
|
46
|
+
return import('@lion/ui/validate-messages-translations/es.js');
|
|
47
|
+
case 'fr-FR':
|
|
48
|
+
return import('@lion/ui/validate-messages-translations/fr-FR.js');
|
|
49
|
+
case 'fr-BE':
|
|
50
|
+
return import('@lion/ui/validate-messages-translations/fr-BE.js');
|
|
51
|
+
case 'fr':
|
|
52
|
+
return import('@lion/ui/validate-messages-translations/fr.js');
|
|
53
|
+
case 'hu-HU':
|
|
54
|
+
return import('@lion/ui/validate-messages-translations/hu-HU.js');
|
|
55
|
+
case 'hu':
|
|
56
|
+
return import('@lion/ui/validate-messages-translations/hu.js');
|
|
57
|
+
case 'it-IT':
|
|
58
|
+
return import('@lion/ui/validate-messages-translations/it-IT.js');
|
|
59
|
+
case 'it':
|
|
60
|
+
return import('@lion/ui/validate-messages-translations/it.js');
|
|
61
|
+
case 'nl-BE':
|
|
62
|
+
return import('@lion/ui/validate-messages-translations/nl-BE.js');
|
|
63
|
+
case 'nl-NL':
|
|
64
|
+
return import('@lion/ui/validate-messages-translations/nl-NL.js');
|
|
65
|
+
case 'nl':
|
|
66
|
+
return import('@lion/ui/validate-messages-translations/nl.js');
|
|
67
|
+
case 'pl-PL':
|
|
68
|
+
return import('@lion/ui/validate-messages-translations/pl-PL.js');
|
|
69
|
+
case 'pl':
|
|
70
|
+
return import('@lion/ui/validate-messages-translations/pl.js');
|
|
71
|
+
case 'ro-RO':
|
|
72
|
+
return import('@lion/ui/validate-messages-translations/ro-RO.js');
|
|
73
|
+
case 'ro':
|
|
74
|
+
return import('@lion/ui/validate-messages-translations/ro.js');
|
|
75
|
+
case 'ru-RU':
|
|
76
|
+
return import('@lion/ui/validate-messages-translations/ru-RU.js');
|
|
77
|
+
case 'ru':
|
|
78
|
+
return import('@lion/ui/validate-messages-translations/ru.js');
|
|
79
|
+
case 'sk-SK':
|
|
80
|
+
return import('@lion/ui/validate-messages-translations/sk-SK.js');
|
|
81
|
+
case 'sk':
|
|
82
|
+
return import('@lion/ui/validate-messages-translations/sk.js');
|
|
83
|
+
case 'uk-UA':
|
|
84
|
+
return import('@lion/ui/validate-messages-translations/uk-UA.js');
|
|
85
|
+
case 'uk':
|
|
86
|
+
return import('@lion/ui/validate-messages-translations/uk.js');
|
|
87
|
+
case 'zh-CN':
|
|
88
|
+
case 'zh':
|
|
89
|
+
return import('@lion/ui/validate-messages-translations/zh.js');
|
|
90
|
+
default:
|
|
91
|
+
return import('@lion/ui/validate-messages-translations/en.js');
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
},
|
|
95
|
+
{ locale: localize.locale },
|
|
96
|
+
);
|
|
97
|
+
|
|
98
|
+
return pendingPromise;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* @param {{data:FeedbackMessageData; localize: LocalizeManager}} opts
|
|
103
|
+
* @returns {Promise<string|Element>}
|
|
104
|
+
*/
|
|
105
|
+
export const getLocalizedMessage = async ({ data, localize }) => {
|
|
106
|
+
await loadValidateNamespace({ localize });
|
|
107
|
+
if (data) {
|
|
108
|
+
return localize.msg(`lion-validate:${data.type}.${data.name}`, data);
|
|
109
|
+
}
|
|
110
|
+
return '';
|
|
111
|
+
};
|
|
@@ -1,197 +1,27 @@
|
|
|
1
1
|
/* eslint-disable import/no-extraneous-dependencies */
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
EqualsLength,
|
|
6
|
-
IsDate,
|
|
7
|
-
IsDateDisabled,
|
|
8
|
-
IsEmail,
|
|
9
|
-
IsNumber,
|
|
10
|
-
MaxDate,
|
|
11
|
-
MaxLength,
|
|
12
|
-
MaxNumber,
|
|
13
|
-
MinDate,
|
|
14
|
-
MinLength,
|
|
15
|
-
MinMaxDate,
|
|
16
|
-
MinMaxLength,
|
|
17
|
-
MinMaxNumber,
|
|
18
|
-
MinNumber,
|
|
19
|
-
Pattern,
|
|
20
|
-
Required,
|
|
21
|
-
} from '@lion/ui/form-core.js';
|
|
22
|
-
import { PhoneNumber } from '@lion/ui/input-tel.js';
|
|
2
|
+
import { loadComboboxMessagesNoSideEffects } from './per-entrypoint/loadComboboxMessagesNoSideEffects.js';
|
|
3
|
+
import { loadFormCoreMessagesNoSideEffects } from './per-entrypoint/loadFormCoreMessagesNoSideEffects.js';
|
|
4
|
+
import { loadInputTelMessagesNoSideEffects } from './per-entrypoint/loadInputTelMessagesNoSideEffects.js';
|
|
23
5
|
|
|
24
6
|
/**
|
|
25
7
|
* @typedef {import('../../form-core/types/validate/validate.js').FeedbackMessageData} FeedbackMessageData
|
|
26
8
|
* @typedef {import('@lion/ui/localize.js').LocalizeManager} LocalizeManager
|
|
27
9
|
*/
|
|
28
10
|
|
|
29
|
-
let
|
|
11
|
+
let isLoaded = false;
|
|
30
12
|
|
|
31
13
|
/**
|
|
32
14
|
* @param {{localize: LocalizeManager}} opts allow multiple lion/extension lib versions to provide their deduped instance of LocalizeManager
|
|
33
15
|
* @returns
|
|
34
16
|
*/
|
|
35
17
|
export function loadDefaultFeedbackMessagesNoSideEffects({ localize }) {
|
|
36
|
-
if (
|
|
18
|
+
if (isLoaded === true) {
|
|
37
19
|
return;
|
|
38
20
|
}
|
|
39
21
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
'lion-validate': /** @param {string} locale */ locale => {
|
|
44
|
-
switch (locale) {
|
|
45
|
-
case 'bg-BG':
|
|
46
|
-
return import('@lion/ui/validate-messages-translations/bg-BG.js');
|
|
47
|
-
case 'bg':
|
|
48
|
-
return import('@lion/ui/validate-messages-translations/bg.js');
|
|
49
|
-
case 'cs-CZ':
|
|
50
|
-
return import('@lion/ui/validate-messages-translations/cs-CZ.js');
|
|
51
|
-
case 'cs':
|
|
52
|
-
return import('@lion/ui/validate-messages-translations/cs.js');
|
|
53
|
-
case 'de-DE':
|
|
54
|
-
return import('@lion/ui/validate-messages-translations/de-DE.js');
|
|
55
|
-
case 'de':
|
|
56
|
-
return import('@lion/ui/validate-messages-translations/de.js');
|
|
57
|
-
case 'en-AU':
|
|
58
|
-
return import('@lion/ui/validate-messages-translations/en-AU.js');
|
|
59
|
-
case 'en-GB':
|
|
60
|
-
return import('@lion/ui/validate-messages-translations/en-GB.js');
|
|
61
|
-
case 'en-US':
|
|
62
|
-
return import('@lion/ui/validate-messages-translations/en-US.js');
|
|
63
|
-
case 'en-PH':
|
|
64
|
-
return import('@lion/ui/validate-messages-translations/en-PH.js');
|
|
65
|
-
case 'en':
|
|
66
|
-
return import('@lion/ui/validate-messages-translations/en.js');
|
|
67
|
-
case 'es-ES':
|
|
68
|
-
return import('@lion/ui/validate-messages-translations/es-ES.js');
|
|
69
|
-
case 'es':
|
|
70
|
-
return import('@lion/ui/validate-messages-translations/es.js');
|
|
71
|
-
case 'fr-FR':
|
|
72
|
-
return import('@lion/ui/validate-messages-translations/fr-FR.js');
|
|
73
|
-
case 'fr-BE':
|
|
74
|
-
return import('@lion/ui/validate-messages-translations/fr-BE.js');
|
|
75
|
-
case 'fr':
|
|
76
|
-
return import('@lion/ui/validate-messages-translations/fr.js');
|
|
77
|
-
case 'hu-HU':
|
|
78
|
-
return import('@lion/ui/validate-messages-translations/hu-HU.js');
|
|
79
|
-
case 'hu':
|
|
80
|
-
return import('@lion/ui/validate-messages-translations/hu.js');
|
|
81
|
-
case 'it-IT':
|
|
82
|
-
return import('@lion/ui/validate-messages-translations/it-IT.js');
|
|
83
|
-
case 'it':
|
|
84
|
-
return import('@lion/ui/validate-messages-translations/it.js');
|
|
85
|
-
case 'nl-BE':
|
|
86
|
-
return import('@lion/ui/validate-messages-translations/nl-BE.js');
|
|
87
|
-
case 'nl-NL':
|
|
88
|
-
return import('@lion/ui/validate-messages-translations/nl-NL.js');
|
|
89
|
-
case 'nl':
|
|
90
|
-
return import('@lion/ui/validate-messages-translations/nl.js');
|
|
91
|
-
case 'pl-PL':
|
|
92
|
-
return import('@lion/ui/validate-messages-translations/pl-PL.js');
|
|
93
|
-
case 'pl':
|
|
94
|
-
return import('@lion/ui/validate-messages-translations/pl.js');
|
|
95
|
-
case 'ro-RO':
|
|
96
|
-
return import('@lion/ui/validate-messages-translations/ro-RO.js');
|
|
97
|
-
case 'ro':
|
|
98
|
-
return import('@lion/ui/validate-messages-translations/ro.js');
|
|
99
|
-
case 'ru-RU':
|
|
100
|
-
return import('@lion/ui/validate-messages-translations/ru-RU.js');
|
|
101
|
-
case 'ru':
|
|
102
|
-
return import('@lion/ui/validate-messages-translations/ru.js');
|
|
103
|
-
case 'sk-SK':
|
|
104
|
-
return import('@lion/ui/validate-messages-translations/sk-SK.js');
|
|
105
|
-
case 'sk':
|
|
106
|
-
return import('@lion/ui/validate-messages-translations/sk.js');
|
|
107
|
-
case 'uk-UA':
|
|
108
|
-
return import('@lion/ui/validate-messages-translations/uk-UA.js');
|
|
109
|
-
case 'uk':
|
|
110
|
-
return import('@lion/ui/validate-messages-translations/uk.js');
|
|
111
|
-
case 'zh-CN':
|
|
112
|
-
case 'zh':
|
|
113
|
-
return import('@lion/ui/validate-messages-translations/zh.js');
|
|
114
|
-
default:
|
|
115
|
-
return import('@lion/ui/validate-messages-translations/en.js');
|
|
116
|
-
}
|
|
117
|
-
},
|
|
118
|
-
},
|
|
119
|
-
{ locale: localize.locale },
|
|
120
|
-
);
|
|
22
|
+
loadComboboxMessagesNoSideEffects({ localize });
|
|
23
|
+
loadFormCoreMessagesNoSideEffects({ localize });
|
|
24
|
+
loadInputTelMessagesNoSideEffects({ localize });
|
|
121
25
|
|
|
122
|
-
|
|
123
|
-
* @param {FeedbackMessageData} data
|
|
124
|
-
* @returns {Promise<string|Element>}
|
|
125
|
-
*/
|
|
126
|
-
const getLocalizedMessage = async data => {
|
|
127
|
-
await forMessagesToBeReady();
|
|
128
|
-
if (data) {
|
|
129
|
-
return localize.msg(`lion-validate:${data.type}.${data.name}`, data);
|
|
130
|
-
}
|
|
131
|
-
return '';
|
|
132
|
-
};
|
|
133
|
-
|
|
134
|
-
/** @param {FeedbackMessageData} data */
|
|
135
|
-
Required.getMessage = async data => getLocalizedMessage(data);
|
|
136
|
-
/** @param {FeedbackMessageData} data */
|
|
137
|
-
EqualsLength.getMessage = async data => getLocalizedMessage(data);
|
|
138
|
-
/** @param {FeedbackMessageData} data */
|
|
139
|
-
MinLength.getMessage = async data => getLocalizedMessage(data);
|
|
140
|
-
/** @param {FeedbackMessageData} data */
|
|
141
|
-
MaxLength.getMessage = async data => getLocalizedMessage(data);
|
|
142
|
-
/** @param {FeedbackMessageData} data */
|
|
143
|
-
MinMaxLength.getMessage = async data => getLocalizedMessage(data);
|
|
144
|
-
/** @param {FeedbackMessageData} data */
|
|
145
|
-
Pattern.getMessage = async data => getLocalizedMessage(data);
|
|
146
|
-
/** @param {FeedbackMessageData} data */
|
|
147
|
-
IsEmail.getMessage = async data => getLocalizedMessage(data);
|
|
148
|
-
/** @param {FeedbackMessageData} data */
|
|
149
|
-
IsNumber.getMessage = async data => getLocalizedMessage(data);
|
|
150
|
-
/** @param {FeedbackMessageData} data */
|
|
151
|
-
MinNumber.getMessage = async data => getLocalizedMessage(data);
|
|
152
|
-
/** @param {FeedbackMessageData} data */
|
|
153
|
-
MaxNumber.getMessage = async data => getLocalizedMessage(data);
|
|
154
|
-
/** @param {FeedbackMessageData} data */
|
|
155
|
-
MinMaxNumber.getMessage = async data => getLocalizedMessage(data);
|
|
156
|
-
/** @param {FeedbackMessageData} data */
|
|
157
|
-
IsDate.getMessage = async data => getLocalizedMessage(data);
|
|
158
|
-
/** @param {FeedbackMessageData} data */
|
|
159
|
-
MinDate.getMessage = async data => getLocalizedMessage(data);
|
|
160
|
-
/** @param {FeedbackMessageData} data */
|
|
161
|
-
MaxDate.getMessage = async data => getLocalizedMessage(data);
|
|
162
|
-
/** @param {FeedbackMessageData} data */
|
|
163
|
-
MinMaxDate.getMessage = async data => getLocalizedMessage(data);
|
|
164
|
-
/** @param {FeedbackMessageData} data */
|
|
165
|
-
IsDateDisabled.getMessage = async data => getLocalizedMessage(data);
|
|
166
|
-
/** @param {FeedbackMessageData} data */
|
|
167
|
-
MatchesOption.getMessage = async data => getLocalizedMessage(data);
|
|
168
|
-
|
|
169
|
-
DefaultSuccess.getMessage = async data => {
|
|
170
|
-
await forMessagesToBeReady();
|
|
171
|
-
const randomKeys = localize.msg('lion-validate:success.RandomOk').split(',');
|
|
172
|
-
const key = randomKeys[Math.floor(Math.random() * randomKeys.length)].trim();
|
|
173
|
-
return localize.msg(`lion-validate:${key}`, data);
|
|
174
|
-
};
|
|
175
|
-
|
|
176
|
-
/** @param {FeedbackMessageData} data */
|
|
177
|
-
// @ts-ignore
|
|
178
|
-
PhoneNumber.getMessage = async data => {
|
|
179
|
-
await forMessagesToBeReady();
|
|
180
|
-
const { type, outcome } = data;
|
|
181
|
-
if (outcome === 'too-long') {
|
|
182
|
-
// TODO: get max-length of country and use MaxLength validator
|
|
183
|
-
return localize.msg(`lion-validate:${type}.Pattern`, data);
|
|
184
|
-
}
|
|
185
|
-
if (outcome === 'too-short') {
|
|
186
|
-
// TODO: get min-length of country and use MinLength validator
|
|
187
|
-
return localize.msg(`lion-validate:${type}.Pattern`, data);
|
|
188
|
-
}
|
|
189
|
-
// TODO: add a more specific message here
|
|
190
|
-
if (outcome === 'invalid-country-code') {
|
|
191
|
-
return localize.msg(`lion-validate:${type}.Pattern`, data);
|
|
192
|
-
}
|
|
193
|
-
return localize.msg(`lion-validate:${type}.Pattern`, data);
|
|
194
|
-
};
|
|
195
|
-
|
|
196
|
-
loaded = true;
|
|
26
|
+
isLoaded = true;
|
|
197
27
|
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
For optimized bundling, it's reccommended to load feedback messages per entrypoint. For instance, when you only use form-core in your app:
|
|
2
|
+
|
|
3
|
+
```js
|
|
4
|
+
import { LionInputTel } from '@lion/ui/input-tel.js';
|
|
5
|
+
import { getLocalizeManager } from '@lion/ui/localize-no-side-effects.js';
|
|
6
|
+
import { loadInputTelMessagesNoSideEffects } from '@lion/ui/validate-messages-no-side-effects.js';
|
|
7
|
+
|
|
8
|
+
export class MyInputTel extends LionInputTel {
|
|
9
|
+
constructor() {
|
|
10
|
+
super();
|
|
11
|
+
loadInputTelMessagesNoSideEffects({ localize: getLocalizeManager() });
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
This prevents you from loading unused entrypoints like input-tel (which loads a full phone validation library) etc.
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/* eslint-disable import/no-extraneous-dependencies */
|
|
2
|
+
import { MatchesOption } from '@lion/ui/combobox.js';
|
|
3
|
+
import { getLocalizedMessage } from '../getLocalizedMessage.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @typedef {import('../../../form-core/types/validate/validate.js').FeedbackMessageData} FeedbackMessageData
|
|
7
|
+
* @typedef {import('@lion/ui/localize.js').LocalizeManager} LocalizeManager
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
let isLoaded = false;
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* @param {{localize: LocalizeManager}} opts allow multiple lion/extension lib versions to provide their deduped instance of LocalizeManager
|
|
14
|
+
*/
|
|
15
|
+
export function loadComboboxMessagesNoSideEffects({ localize }) {
|
|
16
|
+
if (isLoaded === true) return;
|
|
17
|
+
|
|
18
|
+
/** @param {FeedbackMessageData} data */
|
|
19
|
+
MatchesOption.getMessage = async data => getLocalizedMessage({ data, localize });
|
|
20
|
+
|
|
21
|
+
isLoaded = true;
|
|
22
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/* eslint-disable import/no-extraneous-dependencies */
|
|
2
|
+
import {
|
|
3
|
+
DefaultSuccess,
|
|
4
|
+
EqualsLength,
|
|
5
|
+
IsDate,
|
|
6
|
+
IsDateDisabled,
|
|
7
|
+
IsEmail,
|
|
8
|
+
IsNumber,
|
|
9
|
+
MaxDate,
|
|
10
|
+
MaxLength,
|
|
11
|
+
MaxNumber,
|
|
12
|
+
MinDate,
|
|
13
|
+
MinLength,
|
|
14
|
+
MinMaxDate,
|
|
15
|
+
MinMaxLength,
|
|
16
|
+
MinMaxNumber,
|
|
17
|
+
MinNumber,
|
|
18
|
+
Pattern,
|
|
19
|
+
Required,
|
|
20
|
+
} from '@lion/ui/form-core.js';
|
|
21
|
+
import { getLocalizedMessage, loadValidateNamespace } from '../getLocalizedMessage.js';
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* @typedef {import('../../../form-core/types/validate/validate.js').FeedbackMessageData} FeedbackMessageData
|
|
25
|
+
* @typedef {import('@lion/ui/localize.js').LocalizeManager} LocalizeManager
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
let isLoaded = false;
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* @param {{localize: LocalizeManager}} opts allow multiple lion/extension lib versions to provide their deduped instance of LocalizeManager
|
|
32
|
+
*/
|
|
33
|
+
export function loadFormCoreMessagesNoSideEffects({ localize }) {
|
|
34
|
+
if (isLoaded === true) return;
|
|
35
|
+
|
|
36
|
+
/** @param {FeedbackMessageData} data */
|
|
37
|
+
Required.getMessage = async data => getLocalizedMessage({ data, localize });
|
|
38
|
+
/** @param {FeedbackMessageData} data */
|
|
39
|
+
EqualsLength.getMessage = async data => getLocalizedMessage({ data, localize });
|
|
40
|
+
/** @param {FeedbackMessageData} data */
|
|
41
|
+
MinLength.getMessage = async data => getLocalizedMessage({ data, localize });
|
|
42
|
+
/** @param {FeedbackMessageData} data */
|
|
43
|
+
MaxLength.getMessage = async data => getLocalizedMessage({ data, localize });
|
|
44
|
+
/** @param {FeedbackMessageData} data */
|
|
45
|
+
MinMaxLength.getMessage = async data => getLocalizedMessage({ data, localize });
|
|
46
|
+
/** @param {FeedbackMessageData} data */
|
|
47
|
+
Pattern.getMessage = async data => getLocalizedMessage({ data, localize });
|
|
48
|
+
/** @param {FeedbackMessageData} data */
|
|
49
|
+
IsEmail.getMessage = async data => getLocalizedMessage({ data, localize });
|
|
50
|
+
/** @param {FeedbackMessageData} data */
|
|
51
|
+
IsNumber.getMessage = async data => getLocalizedMessage({ data, localize });
|
|
52
|
+
/** @param {FeedbackMessageData} data */
|
|
53
|
+
MinNumber.getMessage = async data => getLocalizedMessage({ data, localize });
|
|
54
|
+
/** @param {FeedbackMessageData} data */
|
|
55
|
+
MaxNumber.getMessage = async data => getLocalizedMessage({ data, localize });
|
|
56
|
+
/** @param {FeedbackMessageData} data */
|
|
57
|
+
MinMaxNumber.getMessage = async data => getLocalizedMessage({ data, localize });
|
|
58
|
+
/** @param {FeedbackMessageData} data */
|
|
59
|
+
IsDate.getMessage = async data => getLocalizedMessage({ data, localize });
|
|
60
|
+
/** @param {FeedbackMessageData} data */
|
|
61
|
+
MinDate.getMessage = async data => getLocalizedMessage({ data, localize });
|
|
62
|
+
/** @param {FeedbackMessageData} data */
|
|
63
|
+
MaxDate.getMessage = async data => getLocalizedMessage({ data, localize });
|
|
64
|
+
/** @param {FeedbackMessageData} data */
|
|
65
|
+
MinMaxDate.getMessage = async data => getLocalizedMessage({ data, localize });
|
|
66
|
+
/** @param {FeedbackMessageData} data */
|
|
67
|
+
IsDateDisabled.getMessage = async data => getLocalizedMessage({ data, localize });
|
|
68
|
+
|
|
69
|
+
DefaultSuccess.getMessage = async data => {
|
|
70
|
+
await loadValidateNamespace({ localize });
|
|
71
|
+
const randomKeys = localize.msg('lion-validate:success.RandomOk').split(',');
|
|
72
|
+
const key = randomKeys[Math.floor(Math.random() * randomKeys.length)].trim();
|
|
73
|
+
return localize.msg(`lion-validate:${key}`, data);
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
isLoaded = true;
|
|
77
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/* eslint-disable import/no-extraneous-dependencies */
|
|
2
|
+
import { PhoneNumber } from '@lion/ui/input-tel.js';
|
|
3
|
+
import { loadValidateNamespace } from '../getLocalizedMessage.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @typedef {import('../../../form-core/types/validate/validate.js').FeedbackMessageData} FeedbackMessageData
|
|
7
|
+
* @typedef {import('@lion/ui/localize.js').LocalizeManager} LocalizeManager
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
let isLoaded = false;
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* @param {{localize: LocalizeManager}} opts allow multiple lion/extension lib versions to provide their deduped instance of LocalizeManager
|
|
14
|
+
*/
|
|
15
|
+
export function loadInputTelMessagesNoSideEffects({ localize }) {
|
|
16
|
+
if (isLoaded === true) return;
|
|
17
|
+
|
|
18
|
+
/** @param {FeedbackMessageData} data */
|
|
19
|
+
// @ts-ignore
|
|
20
|
+
PhoneNumber.getMessage = async data => {
|
|
21
|
+
await loadValidateNamespace({ localize });
|
|
22
|
+
const { type, outcome } = data;
|
|
23
|
+
if (outcome === 'too-long') {
|
|
24
|
+
// TODO: get max-length of country and use MaxLength validator
|
|
25
|
+
return localize.msg(`lion-validate:${type}.Pattern`, data);
|
|
26
|
+
}
|
|
27
|
+
if (outcome === 'too-short') {
|
|
28
|
+
// TODO: get min-length of country and use MinLength validator
|
|
29
|
+
return localize.msg(`lion-validate:${type}.Pattern`, data);
|
|
30
|
+
}
|
|
31
|
+
// TODO: add a more specific message here
|
|
32
|
+
if (outcome === 'invalid-country-code') {
|
|
33
|
+
return localize.msg(`lion-validate:${type}.Pattern`, data);
|
|
34
|
+
}
|
|
35
|
+
return localize.msg(`lion-validate:${type}.Pattern`, data);
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
isLoaded = true;
|
|
39
|
+
}
|
package/custom-elements.json
CHANGED
|
@@ -2028,6 +2028,30 @@
|
|
|
2028
2028
|
"name": "loadDefaultFeedbackMessagesNoSideEffects",
|
|
2029
2029
|
"module": "../components/validate-messages/src/loadDefaultFeedbackMessagesNoSideEffects.js"
|
|
2030
2030
|
}
|
|
2031
|
+
},
|
|
2032
|
+
{
|
|
2033
|
+
"kind": "js",
|
|
2034
|
+
"name": "loadComboboxMessagesNoSideEffects",
|
|
2035
|
+
"declaration": {
|
|
2036
|
+
"name": "loadComboboxMessagesNoSideEffects",
|
|
2037
|
+
"module": "../components/validate-messages/src/per-entrypoint/loadComboboxMessagesNoSideEffects.js"
|
|
2038
|
+
}
|
|
2039
|
+
},
|
|
2040
|
+
{
|
|
2041
|
+
"kind": "js",
|
|
2042
|
+
"name": "loadFormCoreMessagesNoSideEffects",
|
|
2043
|
+
"declaration": {
|
|
2044
|
+
"name": "loadFormCoreMessagesNoSideEffects",
|
|
2045
|
+
"module": "../components/validate-messages/src/per-entrypoint/loadFormCoreMessagesNoSideEffects.js"
|
|
2046
|
+
}
|
|
2047
|
+
},
|
|
2048
|
+
{
|
|
2049
|
+
"kind": "js",
|
|
2050
|
+
"name": "loadInputTelMessagesNoSideEffects",
|
|
2051
|
+
"declaration": {
|
|
2052
|
+
"name": "loadInputTelMessagesNoSideEffects",
|
|
2053
|
+
"module": "../components/validate-messages/src/per-entrypoint/loadInputTelMessagesNoSideEffects.js"
|
|
2054
|
+
}
|
|
2031
2055
|
}
|
|
2032
2056
|
]
|
|
2033
2057
|
},
|
|
@@ -118249,6 +118273,65 @@
|
|
|
118249
118273
|
}
|
|
118250
118274
|
]
|
|
118251
118275
|
},
|
|
118276
|
+
{
|
|
118277
|
+
"kind": "javascript-module",
|
|
118278
|
+
"path": "components/validate-messages/src/getLocalizedMessage.js",
|
|
118279
|
+
"declarations": [
|
|
118280
|
+
{
|
|
118281
|
+
"kind": "function",
|
|
118282
|
+
"name": "loadValidateNamespace",
|
|
118283
|
+
"parameters": [
|
|
118284
|
+
{
|
|
118285
|
+
"name": "{ localize }"
|
|
118286
|
+
},
|
|
118287
|
+
{
|
|
118288
|
+
"name": "opts",
|
|
118289
|
+
"type": {
|
|
118290
|
+
"text": "{localize: LocalizeManager}"
|
|
118291
|
+
}
|
|
118292
|
+
}
|
|
118293
|
+
]
|
|
118294
|
+
},
|
|
118295
|
+
{
|
|
118296
|
+
"kind": "function",
|
|
118297
|
+
"name": "getLocalizedMessage",
|
|
118298
|
+
"parameters": [
|
|
118299
|
+
{
|
|
118300
|
+
"name": "{ data, localize }"
|
|
118301
|
+
},
|
|
118302
|
+
{
|
|
118303
|
+
"name": "opts",
|
|
118304
|
+
"type": {
|
|
118305
|
+
"text": "{data:FeedbackMessageData; localize: LocalizeManager}"
|
|
118306
|
+
}
|
|
118307
|
+
}
|
|
118308
|
+
],
|
|
118309
|
+
"return": {
|
|
118310
|
+
"type": {
|
|
118311
|
+
"text": "Promise<string|Element>"
|
|
118312
|
+
}
|
|
118313
|
+
}
|
|
118314
|
+
}
|
|
118315
|
+
],
|
|
118316
|
+
"exports": [
|
|
118317
|
+
{
|
|
118318
|
+
"kind": "js",
|
|
118319
|
+
"name": "loadValidateNamespace",
|
|
118320
|
+
"declaration": {
|
|
118321
|
+
"name": "loadValidateNamespace",
|
|
118322
|
+
"module": "components/validate-messages/src/getLocalizedMessage.js"
|
|
118323
|
+
}
|
|
118324
|
+
},
|
|
118325
|
+
{
|
|
118326
|
+
"kind": "js",
|
|
118327
|
+
"name": "getLocalizedMessage",
|
|
118328
|
+
"declaration": {
|
|
118329
|
+
"name": "getLocalizedMessage",
|
|
118330
|
+
"module": "components/validate-messages/src/getLocalizedMessage.js"
|
|
118331
|
+
}
|
|
118332
|
+
}
|
|
118333
|
+
]
|
|
118334
|
+
},
|
|
118252
118335
|
{
|
|
118253
118336
|
"kind": "javascript-module",
|
|
118254
118337
|
"path": "components/validate-messages/src/loadDefaultFeedbackMessages.js",
|
|
@@ -135400,6 +135483,102 @@
|
|
|
135400
135483
|
}
|
|
135401
135484
|
]
|
|
135402
135485
|
},
|
|
135486
|
+
{
|
|
135487
|
+
"kind": "javascript-module",
|
|
135488
|
+
"path": "components/validate-messages/src/per-entrypoint/loadComboboxMessagesNoSideEffects.js",
|
|
135489
|
+
"declarations": [
|
|
135490
|
+
{
|
|
135491
|
+
"kind": "function",
|
|
135492
|
+
"name": "loadComboboxMessagesNoSideEffects",
|
|
135493
|
+
"parameters": [
|
|
135494
|
+
{
|
|
135495
|
+
"name": "{ localize }"
|
|
135496
|
+
},
|
|
135497
|
+
{
|
|
135498
|
+
"description": "allow multiple lion/extension lib versions to provide their deduped instance of LocalizeManager",
|
|
135499
|
+
"name": "opts",
|
|
135500
|
+
"type": {
|
|
135501
|
+
"text": "{localize: LocalizeManager}"
|
|
135502
|
+
}
|
|
135503
|
+
}
|
|
135504
|
+
]
|
|
135505
|
+
}
|
|
135506
|
+
],
|
|
135507
|
+
"exports": [
|
|
135508
|
+
{
|
|
135509
|
+
"kind": "js",
|
|
135510
|
+
"name": "loadComboboxMessagesNoSideEffects",
|
|
135511
|
+
"declaration": {
|
|
135512
|
+
"name": "loadComboboxMessagesNoSideEffects",
|
|
135513
|
+
"module": "components/validate-messages/src/per-entrypoint/loadComboboxMessagesNoSideEffects.js"
|
|
135514
|
+
}
|
|
135515
|
+
}
|
|
135516
|
+
]
|
|
135517
|
+
},
|
|
135518
|
+
{
|
|
135519
|
+
"kind": "javascript-module",
|
|
135520
|
+
"path": "components/validate-messages/src/per-entrypoint/loadFormCoreMessagesNoSideEffects.js",
|
|
135521
|
+
"declarations": [
|
|
135522
|
+
{
|
|
135523
|
+
"kind": "function",
|
|
135524
|
+
"name": "loadFormCoreMessagesNoSideEffects",
|
|
135525
|
+
"parameters": [
|
|
135526
|
+
{
|
|
135527
|
+
"name": "{ localize }"
|
|
135528
|
+
},
|
|
135529
|
+
{
|
|
135530
|
+
"description": "allow multiple lion/extension lib versions to provide their deduped instance of LocalizeManager",
|
|
135531
|
+
"name": "opts",
|
|
135532
|
+
"type": {
|
|
135533
|
+
"text": "{localize: LocalizeManager}"
|
|
135534
|
+
}
|
|
135535
|
+
}
|
|
135536
|
+
]
|
|
135537
|
+
}
|
|
135538
|
+
],
|
|
135539
|
+
"exports": [
|
|
135540
|
+
{
|
|
135541
|
+
"kind": "js",
|
|
135542
|
+
"name": "loadFormCoreMessagesNoSideEffects",
|
|
135543
|
+
"declaration": {
|
|
135544
|
+
"name": "loadFormCoreMessagesNoSideEffects",
|
|
135545
|
+
"module": "components/validate-messages/src/per-entrypoint/loadFormCoreMessagesNoSideEffects.js"
|
|
135546
|
+
}
|
|
135547
|
+
}
|
|
135548
|
+
]
|
|
135549
|
+
},
|
|
135550
|
+
{
|
|
135551
|
+
"kind": "javascript-module",
|
|
135552
|
+
"path": "components/validate-messages/src/per-entrypoint/loadInputTelMessagesNoSideEffects.js",
|
|
135553
|
+
"declarations": [
|
|
135554
|
+
{
|
|
135555
|
+
"kind": "function",
|
|
135556
|
+
"name": "loadInputTelMessagesNoSideEffects",
|
|
135557
|
+
"parameters": [
|
|
135558
|
+
{
|
|
135559
|
+
"name": "{ localize }"
|
|
135560
|
+
},
|
|
135561
|
+
{
|
|
135562
|
+
"description": "allow multiple lion/extension lib versions to provide their deduped instance of LocalizeManager",
|
|
135563
|
+
"name": "opts",
|
|
135564
|
+
"type": {
|
|
135565
|
+
"text": "{localize: LocalizeManager}"
|
|
135566
|
+
}
|
|
135567
|
+
}
|
|
135568
|
+
]
|
|
135569
|
+
}
|
|
135570
|
+
],
|
|
135571
|
+
"exports": [
|
|
135572
|
+
{
|
|
135573
|
+
"kind": "js",
|
|
135574
|
+
"name": "loadInputTelMessagesNoSideEffects",
|
|
135575
|
+
"declaration": {
|
|
135576
|
+
"name": "loadInputTelMessagesNoSideEffects",
|
|
135577
|
+
"module": "components/validate-messages/src/per-entrypoint/loadInputTelMessagesNoSideEffects.js"
|
|
135578
|
+
}
|
|
135579
|
+
}
|
|
135580
|
+
]
|
|
135581
|
+
},
|
|
135403
135582
|
{
|
|
135404
135583
|
"kind": "javascript-module",
|
|
135405
135584
|
"path": "components/calendar/test/utils/snapshots/monthTemplate_en-GB_Sunday_2018-12.js",
|