@dile/utils 3.2.3 → 3.3.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/components/country-select/src/countriesData.js +14 -2
- package/components/input-phone/__screenshots__/input-phone.spec.js/dile-input-phone-Rendering-preselects-the-prefix-of-the-country-attribute-1.png +0 -0
- package/components/input-phone/__screenshots__/input-phone.spec.js/dile-input-phone-Value-set-from-outside-keeps-the-country-when-it-shares-the-prefix-of-the-value-1.png +0 -0
- package/components/input-phone/__screenshots__/input-phone.spec.js/dile-input-phone-Value-with-prefix-does-not-let-the-prefix-selector-events-escape-as-the-field-own-events-1.png +0 -0
- package/components/input-phone/__screenshots__/input-phone.spec.js/dile-input-phone-Value-with-prefix-updates-the-value-when-the-user-chooses-a-prefix-1.png +0 -0
- package/components/input-phone/index.js +1 -0
- package/components/input-phone/input-phone.js +7 -0
- package/components/input-phone/input-phone.spec.js +345 -0
- package/components/input-phone/src/DileInputPhone.js +294 -0
- package/components/phone-prefix-select/__screenshots__/phone-prefix-select.spec.js/dile-phone-prefix-select-Initial-value-and-country-ignores-a-country-that-does-not-match-the-prefix-1.png +0 -0
- package/components/phone-prefix-select/__screenshots__/phone-prefix-select.spec.js/dile-phone-prefix-select-Searching-compact-gives-the-selected-field-an-accessible-name-with-the-country-1.png +0 -0
- package/components/phone-prefix-select/index.js +10 -0
- package/components/phone-prefix-select/phone-prefix-select.js +7 -0
- package/components/phone-prefix-select/phone-prefix-select.spec.js +257 -0
- package/components/phone-prefix-select/src/DilePhonePrefixSelect.js +213 -0
- package/components/phone-prefix-select/src/phonePrefixesData.js +128 -0
- package/package.json +3 -3
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
import { DileSelectSearch } from '@dile/ui/components/select/index.js';
|
|
2
|
+
import {
|
|
3
|
+
getPhonePrefix,
|
|
4
|
+
getPhonePrefixCountries,
|
|
5
|
+
getMainCountryForPrefix,
|
|
6
|
+
normalizePhonePrefix,
|
|
7
|
+
} from './phonePrefixesData.js';
|
|
8
|
+
|
|
9
|
+
const TEXTS = {
|
|
10
|
+
es: {
|
|
11
|
+
placeholder: 'Busca un país o prefijo...',
|
|
12
|
+
emptyMessage: 'No se encontraron resultados',
|
|
13
|
+
clearSelectionLabel: 'Borrar selección',
|
|
14
|
+
clearSearchLabel: 'Borrar búsqueda',
|
|
15
|
+
},
|
|
16
|
+
en: {
|
|
17
|
+
placeholder: 'Search a country or prefix...',
|
|
18
|
+
emptyMessage: 'No results found',
|
|
19
|
+
clearSelectionLabel: 'Clear selection',
|
|
20
|
+
clearSearchLabel: 'Clear search',
|
|
21
|
+
},
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Searchable select of international phone prefixes.
|
|
26
|
+
*
|
|
27
|
+
* Internally there is one option per country (identified by its ISO code), but the public
|
|
28
|
+
* `value` is the phone prefix ("+34"), which is what usually gets stored. The selected country
|
|
29
|
+
* is available in `country`. When several countries share a prefix (+1, +7, +44...) and only
|
|
30
|
+
* the prefix is known, the main country of that prefix is shown.
|
|
31
|
+
*/
|
|
32
|
+
export class DilePhonePrefixSelect extends DileSelectSearch {
|
|
33
|
+
|
|
34
|
+
static get properties() {
|
|
35
|
+
return {
|
|
36
|
+
/** ISO code of the selected country */
|
|
37
|
+
country: { type: String },
|
|
38
|
+
/** Language of the country names and default texts: 'es' or 'en' */
|
|
39
|
+
language: { type: String },
|
|
40
|
+
/** ISO codes of the countries listed first, separated by "|". Example: "ES|MX|AR" */
|
|
41
|
+
priorityCountries: { type: String, attribute: 'priority-countries' },
|
|
42
|
+
/** Shows the prefix before the country name ("+34 Spain"), so it is still visible when the text is cut in narrow fields */
|
|
43
|
+
prefixFirst: { type: Boolean },
|
|
44
|
+
/** Once selected, shows only the prefix ("+34") instead of the full text, to save space */
|
|
45
|
+
compact: { type: Boolean },
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
constructor() {
|
|
50
|
+
super();
|
|
51
|
+
this.language = 'en';
|
|
52
|
+
this.priorityCountries = '';
|
|
53
|
+
this.prefixFirst = false;
|
|
54
|
+
this.compact = false;
|
|
55
|
+
this.placeholder = undefined;
|
|
56
|
+
this.emptyMessage = undefined;
|
|
57
|
+
this.clearSelectionLabel = undefined;
|
|
58
|
+
this.clearSearchLabel = undefined;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
get selectedTextChangedEventName() {
|
|
62
|
+
return 'dile-phone-prefix-select-selected-text-changed';
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
connectSource() {
|
|
66
|
+
this.readSourceOptions();
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
readSourceOptions() {
|
|
70
|
+
const countries = getPhonePrefixCountries(this.language);
|
|
71
|
+
const priorityIsos = (this.priorityCountries || '')
|
|
72
|
+
.split('|')
|
|
73
|
+
.map(iso => iso.trim().toUpperCase())
|
|
74
|
+
.filter(Boolean);
|
|
75
|
+
const priority = priorityIsos
|
|
76
|
+
.map(iso => countries.find(c => c.iso === iso))
|
|
77
|
+
.filter(Boolean);
|
|
78
|
+
const others = countries.filter(c => !priorityIsos.includes(c.iso));
|
|
79
|
+
this.sourceOptions = [...priority, ...others].map(country => ({
|
|
80
|
+
value: country.iso,
|
|
81
|
+
text: this.formatOptionText(country),
|
|
82
|
+
prefix: country.prefix,
|
|
83
|
+
names: [country.name, ...country.aliases],
|
|
84
|
+
}));
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Template method: text displayed for each country, in the list and once selected.
|
|
89
|
+
* @param {{iso: string, name: string, prefix: string, aliases: string[]}} country
|
|
90
|
+
*/
|
|
91
|
+
formatOptionText(country) {
|
|
92
|
+
if (this.prefixFirst) {
|
|
93
|
+
return `${country.prefix} ${country.name}`;
|
|
94
|
+
}
|
|
95
|
+
return `${country.name} (${country.prefix})`;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Template method: text displayed once a country is selected.
|
|
100
|
+
* @param {{value: string, text: string, prefix: string, names: string[]}} option
|
|
101
|
+
*/
|
|
102
|
+
formatSelectedText(option) {
|
|
103
|
+
return this.compact ? option.prefix : option.text;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/** With compact, the visible text is only the prefix: screen readers also get the country. */
|
|
107
|
+
get selectedAccessibleLabel() {
|
|
108
|
+
if (this.compact && this.selectedFullText) {
|
|
109
|
+
return [this.label, this.selectedFullText].filter(Boolean).join(', ');
|
|
110
|
+
}
|
|
111
|
+
return super.selectedAccessibleLabel;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Numeric keywords ("3", "+34") match the beginning of the prefix.
|
|
116
|
+
* Other keywords match any of the country names, ignoring case and accents.
|
|
117
|
+
*/
|
|
118
|
+
filterOption(option, keyword) {
|
|
119
|
+
const trimmed = keyword.trim();
|
|
120
|
+
if (/^\+?\d+$/.test(trimmed)) {
|
|
121
|
+
return option.prefix.startsWith(normalizePhonePrefix(trimmed));
|
|
122
|
+
}
|
|
123
|
+
const normalizedKeyword = this.normalizeSearchText(trimmed);
|
|
124
|
+
return option.names.some(name => this.normalizeSearchText(name).includes(normalizedKeyword));
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
willUpdate(changedProperties) {
|
|
128
|
+
super.willUpdate?.(changedProperties);
|
|
129
|
+
if (changedProperties.has('language') || changedProperties.has('priorityCountries') || changedProperties.has('prefixFirst') || changedProperties.has('compact')) {
|
|
130
|
+
this.applyLanguageTexts(changedProperties.get('language'));
|
|
131
|
+
this.readSourceOptions();
|
|
132
|
+
this.refreshFromSource();
|
|
133
|
+
}
|
|
134
|
+
// Setting only the country selects its prefix. When value is also set at the same time,
|
|
135
|
+
// value wins: country is then only used to pick among the countries sharing that prefix.
|
|
136
|
+
const countryDrivesValue = !changedProperties.has('value') || !this.value;
|
|
137
|
+
if (changedProperties.has('country') && this.country && countryDrivesValue) {
|
|
138
|
+
const prefix = getPhonePrefix(this.country);
|
|
139
|
+
if (prefix) {
|
|
140
|
+
if (prefix !== normalizePhonePrefix(this.value)) {
|
|
141
|
+
this.value = prefix;
|
|
142
|
+
}
|
|
143
|
+
this.isSelected = true;
|
|
144
|
+
this.resolveSelectedText();
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
updated(changedProperties) {
|
|
150
|
+
super.updated(changedProperties);
|
|
151
|
+
if (changedProperties.has('value') || changedProperties.has('country')) {
|
|
152
|
+
this.dispatchEvent(new CustomEvent('dile-phone-prefix-changed', {
|
|
153
|
+
bubbles: true,
|
|
154
|
+
composed: true,
|
|
155
|
+
detail: { value: this.value, country: this.country },
|
|
156
|
+
}));
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
/** Uses the texts of the language unless they were customized. */
|
|
161
|
+
applyLanguageTexts(previousLanguage) {
|
|
162
|
+
const texts = TEXTS[this.language] || TEXTS.en;
|
|
163
|
+
const previousTexts = TEXTS[previousLanguage] || {};
|
|
164
|
+
Object.keys(texts).forEach(key => {
|
|
165
|
+
if (this[key] === undefined || this[key] === previousTexts[key]) {
|
|
166
|
+
this[key] = texts[key];
|
|
167
|
+
}
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
/** The country for a prefix: the current one if it has that prefix, the main one otherwise. */
|
|
172
|
+
countryForPrefix(prefix) {
|
|
173
|
+
const normalized = normalizePhonePrefix(prefix);
|
|
174
|
+
if (!normalized) {
|
|
175
|
+
return undefined;
|
|
176
|
+
}
|
|
177
|
+
if (this.country && getPhonePrefix(this.country) === normalized) {
|
|
178
|
+
return this.country.toUpperCase();
|
|
179
|
+
}
|
|
180
|
+
return getMainCountryForPrefix(normalized);
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
resolveSelectedText() {
|
|
184
|
+
this.country = this.countryForPrefix(this.value);
|
|
185
|
+
const option = this.sourceOptions.find(o => o.value === this.country);
|
|
186
|
+
this.selectedText = option ? this.formatSelectedText(option) : this.value;
|
|
187
|
+
this.selectedFullText = option ? option.text : this.value;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
selectOptionValue(iso) {
|
|
191
|
+
this.country = iso;
|
|
192
|
+
this.value = getPhonePrefix(iso);
|
|
193
|
+
this.isSelected = true;
|
|
194
|
+
this.resolveSelectedText();
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
onClearSelected() {
|
|
198
|
+
this.country = undefined;
|
|
199
|
+
super.onClearSelected();
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
clear() {
|
|
203
|
+
this.country = undefined;
|
|
204
|
+
super.clear();
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
set(value) {
|
|
208
|
+
if (!value) {
|
|
209
|
+
this.country = undefined;
|
|
210
|
+
}
|
|
211
|
+
super.set(value);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { getCountries } from '../../country-select/src/countriesData.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* International calling code of each country, by ISO 3166-1 alpha-2 code.
|
|
5
|
+
* Countries in the North American Numbering Plan share +1 (the area code is part of the
|
|
6
|
+
* national number). Territories without their own telephone service are not included.
|
|
7
|
+
*/
|
|
8
|
+
export const PHONE_PREFIXES = {
|
|
9
|
+
AD: '+376', AE: '+971', AF: '+93', AG: '+1', AI: '+1', AL: '+355', AM: '+374', AO: '+244',
|
|
10
|
+
AR: '+54', AS: '+1', AT: '+43', AU: '+61', AW: '+297', AX: '+358', AZ: '+994', BA: '+387',
|
|
11
|
+
BB: '+1', BD: '+880', BE: '+32', BF: '+226', BG: '+359', BH: '+973', BI: '+257', BJ: '+229',
|
|
12
|
+
BL: '+590', BM: '+1', BN: '+673', BO: '+591', BR: '+55', BS: '+1', BT: '+975', BW: '+267',
|
|
13
|
+
BY: '+375', BZ: '+501', CA: '+1', CC: '+61', CD: '+243', CF: '+236', CG: '+242', CH: '+41',
|
|
14
|
+
CI: '+225', CK: '+682', CL: '+56', CM: '+237', CN: '+86', CO: '+57', CR: '+506', CU: '+53',
|
|
15
|
+
CV: '+238', CW: '+599', CX: '+61', CY: '+357', CZ: '+420', DE: '+49', DJ: '+253', DK: '+45',
|
|
16
|
+
DM: '+1', DO: '+1', DZ: '+213', EC: '+593', EE: '+372', EG: '+20', EH: '+212', ER: '+291',
|
|
17
|
+
ES: '+34', ET: '+251', FI: '+358', FJ: '+679', FK: '+500', FM: '+691', FO: '+298', FR: '+33',
|
|
18
|
+
GA: '+241', GB: '+44', GD: '+1', GE: '+995', GF: '+594', GG: '+44', GH: '+233', GI: '+350',
|
|
19
|
+
GL: '+299', GM: '+220', GN: '+224', GP: '+590', GQ: '+240', GR: '+30', GS: '+500', GT: '+502',
|
|
20
|
+
GU: '+1', GW: '+245', GY: '+592', HK: '+852', HN: '+504', HR: '+385', HT: '+509', HU: '+36',
|
|
21
|
+
IC: '+34', ID: '+62', IE: '+353', IL: '+972', IM: '+44', IN: '+91', IO: '+246', IQ: '+964',
|
|
22
|
+
IR: '+98', IS: '+354', IT: '+39', JE: '+44', JM: '+1', JO: '+962', JP: '+81', KE: '+254',
|
|
23
|
+
KG: '+996', KH: '+855', KI: '+686', KM: '+269', KN: '+1', KP: '+850', KR: '+82', KW: '+965',
|
|
24
|
+
KY: '+1', KZ: '+7', LA: '+856', LB: '+961', LC: '+1', LI: '+423', LK: '+94', LR: '+231',
|
|
25
|
+
LS: '+266', LT: '+370', LU: '+352', LV: '+371', LY: '+218', MA: '+212', MC: '+377', MD: '+373',
|
|
26
|
+
ME: '+382', MG: '+261', MH: '+692', MK: '+389', ML: '+223', MM: '+95', MN: '+976', MO: '+853',
|
|
27
|
+
MP: '+1', MQ: '+596', MR: '+222', MS: '+1', MT: '+356', MU: '+230', MV: '+960', MW: '+265',
|
|
28
|
+
MX: '+52', MY: '+60', MZ: '+258', NA: '+264', NC: '+687', NE: '+227', NF: '+672', NG: '+234',
|
|
29
|
+
NI: '+505', NL: '+31', NO: '+47', NP: '+977', NR: '+674', NU: '+683', NZ: '+64', OM: '+968',
|
|
30
|
+
PA: '+507', PE: '+51', PF: '+689', PG: '+675', PH: '+63', PK: '+92', PL: '+48', PM: '+508',
|
|
31
|
+
PN: '+64', PR: '+1', PS: '+970', PT: '+351', PW: '+680', PY: '+595', QA: '+974', RE: '+262',
|
|
32
|
+
RO: '+40', RS: '+381', RU: '+7', RW: '+250', SA: '+966', SB: '+677', SC: '+248', SD: '+249',
|
|
33
|
+
SE: '+46', SG: '+65', SH: '+290', SI: '+386', SJ: '+47', SK: '+421', SL: '+232', SM: '+378',
|
|
34
|
+
SN: '+221', SO: '+252', SR: '+597', SS: '+211', ST: '+239', SV: '+503', SX: '+1', SY: '+963',
|
|
35
|
+
SZ: '+268', TC: '+1', TD: '+235', TG: '+228', TH: '+66', TJ: '+992', TK: '+690', TL: '+670',
|
|
36
|
+
TM: '+993', TN: '+216', TO: '+676', TR: '+90', TT: '+1', TV: '+688', TW: '+886', TZ: '+255',
|
|
37
|
+
UA: '+380', UG: '+256', US: '+1', UY: '+598', UZ: '+998', VA: '+39', VC: '+1', VE: '+58',
|
|
38
|
+
VG: '+1', VI: '+1', VN: '+84', VU: '+678', WF: '+681', WS: '+685', XK: '+383', YE: '+967',
|
|
39
|
+
YT: '+262', ZA: '+27', ZM: '+260', ZW: '+263',
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Country shown when a prefix shared by several countries is set without a specific country.
|
|
44
|
+
* Prefixes not listed here belong to a single country.
|
|
45
|
+
*/
|
|
46
|
+
export const MAIN_COUNTRY_BY_PREFIX = {
|
|
47
|
+
'+1': 'US',
|
|
48
|
+
'+7': 'RU',
|
|
49
|
+
'+34': 'ES',
|
|
50
|
+
'+39': 'IT',
|
|
51
|
+
'+44': 'GB',
|
|
52
|
+
'+47': 'NO',
|
|
53
|
+
'+61': 'AU',
|
|
54
|
+
'+64': 'NZ',
|
|
55
|
+
'+212': 'MA',
|
|
56
|
+
'+262': 'RE',
|
|
57
|
+
'+358': 'FI',
|
|
58
|
+
'+500': 'FK',
|
|
59
|
+
'+590': 'GP',
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
export const getPhonePrefix = (iso) => {
|
|
63
|
+
return iso ? PHONE_PREFIXES[String(iso).toUpperCase()] : undefined;
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
/** Accepts prefixes with or without the leading "+" ("34" or "+34"). */
|
|
67
|
+
export const normalizePhonePrefix = (prefix) => {
|
|
68
|
+
if (prefix === undefined || prefix === null || prefix === '') {
|
|
69
|
+
return undefined;
|
|
70
|
+
}
|
|
71
|
+
return '+' + String(prefix).trim().replace(/^\+/, '');
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
export const getMainCountryForPrefix = (prefix) => {
|
|
75
|
+
const normalized = normalizePhonePrefix(prefix);
|
|
76
|
+
if (!normalized) {
|
|
77
|
+
return undefined;
|
|
78
|
+
}
|
|
79
|
+
if (MAIN_COUNTRY_BY_PREFIX[normalized]) {
|
|
80
|
+
return MAIN_COUNTRY_BY_PREFIX[normalized];
|
|
81
|
+
}
|
|
82
|
+
return Object.keys(PHONE_PREFIXES).find(iso => PHONE_PREFIXES[iso] === normalized);
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Countries with a phone prefix, one entry per ISO code: { iso, name, prefix, aliases }.
|
|
87
|
+
* The country lists may contain more than one name for the same ISO code (e.g. "Birmania"
|
|
88
|
+
* and "Myanmar"): the first one is used as the name and the rest are kept as search aliases.
|
|
89
|
+
*/
|
|
90
|
+
export const getPhonePrefixCountries = (language = 'en') => {
|
|
91
|
+
const byIso = new Map();
|
|
92
|
+
getCountries(language).forEach(({ iso, name }) => {
|
|
93
|
+
const prefix = PHONE_PREFIXES[iso];
|
|
94
|
+
if (!prefix) {
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
if (byIso.has(iso)) {
|
|
98
|
+
byIso.get(iso).aliases.push(name);
|
|
99
|
+
} else {
|
|
100
|
+
byIso.set(iso, { iso, name, prefix, aliases: [] });
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
return Array.from(byIso.values());
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
const KNOWN_PREFIXES = new Set(Object.values(PHONE_PREFIXES));
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Splits an international phone number ("+34600123456", "0034 600 123 456") into its prefix
|
|
110
|
+
* and national number: { prefix: '+34', number: '600123456' }. International calling codes
|
|
111
|
+
* are designed so that none of them is the beginning of another, so the split is unambiguous.
|
|
112
|
+
* Returns undefined when the number is not international or its prefix is unknown.
|
|
113
|
+
*/
|
|
114
|
+
export const splitPhoneNumber = (phone) => {
|
|
115
|
+
const raw = String(phone ?? '').trim();
|
|
116
|
+
if (!/^(\+|00)/.test(raw)) {
|
|
117
|
+
return undefined;
|
|
118
|
+
}
|
|
119
|
+
const allDigits = raw.replace(/\D/g, '');
|
|
120
|
+
const digits = raw.startsWith('+') ? allDigits : allDigits.slice(2);
|
|
121
|
+
for (let length = 1; length <= 3; length++) {
|
|
122
|
+
const prefix = '+' + digits.slice(0, length);
|
|
123
|
+
if (KNOWN_PREFIXES.has(prefix)) {
|
|
124
|
+
return { prefix, number: digits.slice(length) };
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
return undefined;
|
|
128
|
+
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dile/utils",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.3.0",
|
|
4
4
|
"description": "Utility Components of Diverse Uses Based on the Lit Library and Web Components Standard.",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"homepage": "https://dile-components.com/",
|
|
22
22
|
"dependencies": {
|
|
23
23
|
"@dile/iconlib": "^2.0.1",
|
|
24
|
-
"@dile/ui": "^3.
|
|
24
|
+
"@dile/ui": "^3.15.0",
|
|
25
25
|
"@lion/ui": "^0.21.0",
|
|
26
26
|
"linkify-string": "^4.1.3",
|
|
27
27
|
"linkifyjs": "^4.1.3",
|
|
@@ -31,5 +31,5 @@
|
|
|
31
31
|
"publishConfig": {
|
|
32
32
|
"access": "public"
|
|
33
33
|
},
|
|
34
|
-
"gitHead": "
|
|
34
|
+
"gitHead": "5ef91e1892e270fade848c64082184fa3fbddb53"
|
|
35
35
|
}
|