@luftborn/custom-elements 2.8.2 → 2.8.4

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.
Files changed (20) hide show
  1. package/demo/index.js +301 -81
  2. package/demo/index.min.js +300 -80
  3. package/demo/index.min.js.map +1 -1
  4. package/dist/elements/CustomFormatDateFieldElement/CustomDatepicker/CustomDatepicker.d.ts +4 -0
  5. package/dist/elements/CustomFormatDateFieldElement/CustomDatepicker/CustomDatepicker.js +16 -8
  6. package/dist/elements/CustomFormatDateFieldElement/CustomDatepicker/CustomDatepicker.js.map +1 -1
  7. package/dist/elements/CustomFormatDateFieldElement/CustomDatepicker/CustomDatepickerUtils.d.ts +1 -1
  8. package/dist/elements/CustomFormatDateFieldElement/CustomDatepicker/CustomDatepickerUtils.js +6 -3
  9. package/dist/elements/CustomFormatDateFieldElement/CustomDatepicker/CustomDatepickerUtils.js.map +1 -1
  10. package/dist/elements/CustomFormatDateFieldElement/CustomDatepicker/DatepickerTranslations.d.ts +2 -0
  11. package/dist/elements/CustomFormatDateFieldElement/CustomDatepicker/DatepickerTranslations.js +194 -0
  12. package/dist/elements/CustomFormatDateFieldElement/CustomDatepicker/DatepickerTranslations.js.map +1 -0
  13. package/dist/elements/CustomFormatDateFieldElement/CustomFormatDateFieldElement.d.ts +5 -0
  14. package/dist/elements/CustomFormatDateFieldElement/CustomFormatDateFieldElement.js +15 -1
  15. package/dist/elements/CustomFormatDateFieldElement/CustomFormatDateFieldElement.js.map +1 -1
  16. package/package.json +1 -1
  17. package/src/elements/CustomFormatDateFieldElement/CustomDatepicker/CustomDatepicker.ts +20 -9
  18. package/src/elements/CustomFormatDateFieldElement/CustomDatepicker/CustomDatepickerUtils.ts +6 -3
  19. package/src/elements/CustomFormatDateFieldElement/CustomDatepicker/DatepickerTranslations.ts +188 -0
  20. package/src/elements/CustomFormatDateFieldElement/CustomFormatDateFieldElement.ts +18 -1
@@ -1,9 +1,11 @@
1
1
  import { CustomDatepickerStyles } from "./CustomDatepickerStyles";
2
- import { daysOfWeek, defaultDateFormat, formatDate, isMobileDevice, months, supportedDateFormats } from "./CustomDatepickerUtils";
2
+ import { defaultDateFormat, formatDate, isMobileDevice, supportedDateFormats } from "./CustomDatepickerUtils";
3
+ import { GetMonths, GetWeekdays } from "./DatepickerTranslations";
3
4
 
4
5
  type CustomDatepickerOptions = {
5
6
  input: HTMLInputElement;
6
7
  dateFormat: string;
8
+ language?: string;
7
9
  otherTriggers?: HTMLElement[];
8
10
  parentElement?: ShadowRoot | HTMLElement;
9
11
  }
@@ -33,6 +35,10 @@ export default class CustomDatepicker {
33
35
  private lastDayOfMonth: Date;
34
36
  private firstDay: number;
35
37
  private lastDay: number;
38
+ private language: string;
39
+
40
+ private months: string[] = [];
41
+ private daysOfWeek: string[] = [];
36
42
 
37
43
  private dateFormat: string;
38
44
 
@@ -54,6 +60,10 @@ export default class CustomDatepicker {
54
60
  this.firstDay = this.firstDayOfMonth.getDay();
55
61
  this.lastDay = this.lastDayOfMonth.getDate();
56
62
 
63
+ this.language = options.language || 'en';
64
+ this.months = GetMonths(this.language);
65
+ this.daysOfWeek = GetWeekdays(options.language, 'short');
66
+
57
67
  this.createDatePickerElements();
58
68
  this.renderCalendar();
59
69
  this.initSelectMonthYear();
@@ -143,11 +153,12 @@ export default class CustomDatepicker {
143
153
  }
144
154
 
145
155
  private renderCalendar() {
146
- this.monthYear.innerHTML = months[this.currentMonth] + ' ' + this.currentYear;
156
+ const monthName = this.months[this.currentMonth];
157
+ this.monthYear.innerHTML = monthName.charAt(0).toUpperCase() + monthName.slice(1) + ' ' + this.currentYear;
147
158
  this.weekdays.innerHTML = '';
148
- for (let i = 0; i < daysOfWeek.length; i++) {
159
+ for (let i = 0; i < this.daysOfWeek.length; i++) {
149
160
  let span = document.createElement('span');
150
- span.innerHTML = daysOfWeek[i];
161
+ span.innerHTML = this.daysOfWeek[i];
151
162
  this.weekdays.appendChild(span);
152
163
  }
153
164
  this.days.innerHTML = '';
@@ -191,7 +202,7 @@ export default class CustomDatepicker {
191
202
  }
192
203
  span.classList.add('selected-day');
193
204
 
194
- const formattedDate = formatDate(this.selectedDate, this.dateFormat);
205
+ const formattedDate = formatDate(this.selectedDate, this.dateFormat, this.language);
195
206
  this.input.value = formattedDate;
196
207
 
197
208
  this.showPicker(false);
@@ -211,13 +222,13 @@ export default class CustomDatepicker {
211
222
  this.selectMonthYear.innerHTML = '';
212
223
  let monthsContainer = document.createElement('div');
213
224
  monthsContainer.classList.add('months');
214
- for (let i = 0; i < months.length; i++) {
225
+ for (let i = 0; i < this.months.length; i++) {
215
226
  let span = document.createElement('span');
216
- span.innerHTML = months[i].substring(0, 3);
227
+ span.innerHTML = this.months[i].substring(0, 3);
217
228
  span.classList.add('select-month');
218
229
  monthsContainer.appendChild(span);
219
230
  span.onclick = () => {
220
- this.selectedMonth = months.findIndex(month => month.substring(0, 3) === span.innerHTML);
231
+ this.selectedMonth = this.months.findIndex(month => month.substring(0, 3) === span.innerHTML);
221
232
  let moveMonthSteps = (this.selectedYear - this.currentYear) * 12 + this.selectedMonth - this.currentMonth;
222
233
  this.moveMonth(moveMonthSteps);
223
234
  this.hideSelectMonthYear();
@@ -320,7 +331,7 @@ export default class CustomDatepicker {
320
331
  }
321
332
 
322
333
  private setDateForToday() {
323
- this.input.value = formatDate(this.selectedDate, this.dateFormat);
334
+ this.input.value = formatDate(this.selectedDate, this.dateFormat, this.language);
324
335
  this.showPicker(false);
325
336
  }
326
337
 
@@ -1,3 +1,5 @@
1
+ import { GetMonths } from "./DatepickerTranslations";
2
+
1
3
  export const months: string[] = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
2
4
  export const daysOfWeek: string[] = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'];
3
5
 
@@ -16,11 +18,12 @@ export const supportedDateFormats = [
16
18
  'dd/mm/yy',
17
19
  ];
18
20
 
19
- export function formatDate(date: Date, dateFormat: string): string {
21
+ export function formatDate(date: Date, dateFormat: string, language:string = 'en'): string {
20
22
  const year = date.getFullYear();
21
23
  const month = (date.getMonth() + 1).toString().padStart(2, '0');
22
24
  const day = date.getDate().toString().padStart(2, '0');
23
- const monthName = date.toLocaleString('default', { month: 'long' });
25
+ const monthName = GetMonths(language)[date.getMonth()];
26
+ const capitalizedMonthName = monthName.charAt(0).toUpperCase() + monthName.slice(1);
24
27
 
25
28
  const dateFormats = {
26
29
  'ddmmyyyy': `${day}${month}${year}`,
@@ -31,7 +34,7 @@ export function formatDate(date: Date, dateFormat: string): string {
31
34
  'mm-dd-yyyy': `${month}-${day}-${year}`,
32
35
  'yyyy-mm-dd': `${year}-${month}-${day}`,
33
36
  'yyyy-dd-mm': `${year}-${day}-${month}`,
34
- 'Month dd, yyyy': `${monthName} ${day}, ${year}`,
37
+ 'Month dd, yyyy': `${capitalizedMonthName} ${day}, ${year}`,
35
38
  'mm/dd/yy': `${month}/${day}/${year.toString().slice(-2)}`,
36
39
  'dd/mm/yy': `${day}/${month}/${year.toString().slice(-2)}`,
37
40
  }
@@ -0,0 +1,188 @@
1
+ export function GetWeekdays(language: string = 'en', type: 'short' | 'abbreviated' | 'wide'= 'wide') : string[] {
2
+ language = supportedLanguages.includes(language) ? language : 'en';
3
+ return weekdays[language][type];
4
+ }
5
+
6
+ export function GetMonths(language: string = 'en', type: 'abbreviated' | 'wide' = 'wide') : string[]{
7
+ language = supportedLanguages.includes(language) ? language : 'en';
8
+ return months[language][type];
9
+ }
10
+
11
+ const supportedLanguages = ['en', 'sv', 'de', 'fr', 'it', 'es', 'cs', 'pt', 'pl', 'nl', 'no', 'da', 'el', 'fi', 'is', 'et', 'lv', 'lt', 'hu'];
12
+
13
+ const weekdays = {
14
+ 'en': {
15
+ 'short': ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],
16
+ 'abbreviated': ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
17
+ 'wide': ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']
18
+ },
19
+ 'sv': {
20
+ 'short': ['sö', 'må', 'ti', 'on', 'to', 'fr', 'lö'],
21
+ 'abbreviated': ['sön', 'mån', 'tis', 'ons', 'tor', 'fre', 'lör'],
22
+ 'wide': ['söndag', 'måndag', 'tisdag', 'onsdag', 'torsdag', 'fredag', 'lördag']
23
+ },
24
+ 'de': {
25
+ 'short': ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'],
26
+ 'abbreviated': ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'],
27
+ 'wide': ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag']
28
+ },
29
+ 'fr': {
30
+ 'short': ['Di', 'Lu', 'Ma', 'Me', 'Je', 'Ve', 'Sa'],
31
+ 'abbreviated': ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'],
32
+ 'wide': ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi']
33
+ },
34
+ 'it': {
35
+ 'short': ['do', 'lu', 'ma', 'me', 'gi', 've', 'sa'],
36
+ 'abbreviated': ['dom', 'lun', 'mar', 'mer', 'gio', 'ven', 'sab'],
37
+ 'wide': ['domenica', 'lunedì', 'martedì', 'mercoledì', 'giovedì', 'venerdì', 'sabato']
38
+ },
39
+ 'es': {
40
+ 'short': ['do', 'lu', 'ma', 'mi', 'ju', 'vi', 'sá'],
41
+ 'abbreviated': ['dom', 'lun', 'mar', 'mié', 'jue', 'vie', 'sáb'],
42
+ 'wide': ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado']
43
+ },
44
+ 'cs': {
45
+ 'short': ['ne', 'po', 'út', 'st', 'čt', 'pá', 'so'],
46
+ 'abbreviated': ['ne', 'po', 'út', 'st', 'čt', 'pá', 'so'],
47
+ 'wide': ['neděle', 'pondělí', 'úterý', 'středa', 'čtvrtek', 'pátek', 'sobota']
48
+ },
49
+ 'pt': {
50
+ 'short': ['do', '2ª', '3ª', '4ª', '5ª', '6ª', 'sá'],
51
+ 'abbreviated': ['dom', '2ª', '3ª', '4ª', '5ª', '6ª', 'sáb'],
52
+ 'wide': ['domingo', 'segunda-feira', 'terça-feira', 'quarta-feira', 'quinta-feira', 'sexta-feira', 'sábado']
53
+ },
54
+ 'pl': {
55
+ 'short': ['nd', 'pn', 'wt', 'śr', 'cz', 'pt', 'so'],
56
+ 'abbreviated': ['nd', 'pn', 'wt', 'śr', 'cz', 'pt', 'so'],
57
+ 'wide': ['niedziela', 'poniedziałek', 'wtorek', 'środa', 'czwartek', 'piątek', 'sobota']
58
+ },
59
+ 'nl': {
60
+ 'short': ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'],
61
+ 'abbreviated': ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'],
62
+ 'wide': ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag']
63
+ },
64
+ 'no': {
65
+ 'short': ['sø', 'ma', 'ti', 'on', 'to', 'fr', 'lø'],
66
+ 'abbreviated': ['sø', 'ma', 'ti', 'on', 'to', 'fr', 'lø'],
67
+ 'wide': ['søndag', 'mandag', 'tirsdag', 'onsdag', 'torsdag', 'fredag', 'lørdag']
68
+ },
69
+ 'da': {
70
+ 'short': ['sø', 'ma', 'ti', 'on', 'to', 'fr', 'lø'],
71
+ 'abbreviated': ['sø', 'ma', 'ti', 'on', 'to', 'fr', 'lø'],
72
+ 'wide': ['søndag', 'mandag', 'tirsdag', 'onsdag', 'torsdag', 'fredag', 'lørdag']
73
+ },
74
+ 'el': {
75
+ 'short': ['Κυ', 'Δε', 'Τρ', 'Τε', 'Πε', 'Πα', 'Σα'],
76
+ 'abbreviated': ['Κυρ', 'Δευ', 'Τρί', 'Τετ', 'Πέμ', 'Παρ', 'Σάβ'],
77
+ 'wide': ['Κυριακή', 'Δευτέρα', 'Τρίτη', 'Τετάρτη', 'Πέμπτη', 'Παρασκευή', 'Σάββατο']
78
+ },
79
+ 'fi': {
80
+ 'short': ['su', 'ma', 'ti', 'ke', 'to', 'pe', 'la'],
81
+ 'abbreviated': ['su', 'ma', 'ti', 'ke', 'to', 'pe', 'la'],
82
+ 'wide': ['sunnuntai', 'maanantai', 'tiistai', 'keskiviikko', 'torstai', 'perjantai', 'lauantai']
83
+ },
84
+ 'is': {
85
+ 'short': ['su', 'má', 'þr', 'mi', 'fi', 'fö', 'la'],
86
+ 'abbreviated': ['sun', 'mán', 'þri', 'mið', 'fim', 'fös', 'lau'],
87
+ 'wide': ['sunnudagur', 'mánudagur', 'þriðjudagur', 'miðvikudagur', 'fimmtudagur', 'föstudagur', 'laugardagur']
88
+ },
89
+ 'et': {
90
+ 'short': ['P', 'E', 'T', 'K', 'N', 'R', 'L'],
91
+ 'abbreviated': ['P', 'E', 'T', 'K', 'N', 'R', 'L'],
92
+ 'wide': ['pühapäev', 'esmaspäev', 'teisipäev', 'kolmapäev', 'neljapäev', 'reede', 'laupäev']
93
+ },
94
+ 'lv': {
95
+ 'short': ['Sv', 'P', 'O', 'T', 'C', 'Pk', 'Se'],
96
+ 'abbreviated': ['Sv', 'P', 'O', 'T', 'C', 'Pk', 'Se'],
97
+ 'wide': ['svētdiena', 'pirmdiena', 'otrdiena', 'trešdiena', 'ceturtdiena', 'piektdiena', 'sestdiena']
98
+ },
99
+ 'lt': {
100
+ 'short': ['Sk', 'Pr', 'An', 'Tr', 'Kt', 'Pn', 'Št'],
101
+ 'abbreviated': ['Sk', 'Pr', 'An', 'Tr', 'Kt', 'Pn', 'Št'],
102
+ 'wide': ['sekmadienis', 'pirmadienis', 'antradienis', 'trečiadienis', 'ketvirtadienis', 'penktadienis', 'šeštadienis']
103
+ },
104
+ 'hu': {
105
+ 'short': ['V', 'H', 'K', 'Sze', 'Cs', 'P', 'Szo'],
106
+ 'abbreviated': ['V', 'H', 'K', 'Sze', 'Cs', 'P', 'Szo'],
107
+ 'wide': ['vasárnap', 'hétfő', 'kedd', 'szerda', 'csütörtök', 'péntek', 'szombat']
108
+ },
109
+ };
110
+
111
+ const months = {
112
+ 'en': {
113
+ 'abbreviated': ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
114
+ 'wide': ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']
115
+ },
116
+ 'sv': {
117
+ 'abbreviated': ['jan', 'feb', 'mar', 'apr', 'maj', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'dec'],
118
+ 'wide': ['januari', 'februari', 'mars', 'april', 'maj', 'juni', 'juli', 'augusti', 'september', 'oktober', 'november', 'december']
119
+ },
120
+ 'de': {
121
+ 'abbreviated': ['Jan', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'],
122
+ 'wide': ['Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember']
123
+ },
124
+ 'fr': {
125
+ 'abbreviated': ['janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', 'déc.'],
126
+ 'wide': ['janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre']
127
+ },
128
+ 'it': {
129
+ 'abbreviated': ['gen', 'feb', 'mar', 'apr', 'mag', 'giu', 'lug', 'ago', 'set', 'ott', 'nov', 'dic'],
130
+ 'wide': ['gennaio', 'febbraio', 'marzo', 'aprile', 'maggio', 'giugno', 'luglio', 'agosto', 'settembre', 'ottobre', 'novembre', 'dicembre']
131
+ },
132
+ 'es': {
133
+ 'abbreviated': ['ene', 'feb', 'mar', 'abr', 'may', 'jun', 'jul', 'ago', 'sep', 'oct', 'nov', 'dic'],
134
+ 'wide': ['enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', 'octubre', 'noviembre', 'diciembre']
135
+ },
136
+ 'pt': {
137
+ 'abbreviated': ['jan', 'fev', 'mar', 'abr', 'mai', 'jun', 'jul', 'ago', 'set', 'out', 'nov', 'dez'],
138
+ 'wide': ['janeiro', 'fevereiro', 'março', 'abril', 'maio', 'junho', 'julho', 'agosto', 'setembro', 'outubro', 'novembro', 'dezembro']
139
+ },
140
+ 'cs': {
141
+ 'abbreviated': ['led', 'úno', 'bře', 'dub', 'kvě', 'čer', 'čvc', 'srp', 'zář', 'říj', 'lis', 'pro'],
142
+ 'wide': ['leden', 'únor', 'březen', 'duben', 'květen', 'červen', 'červenec', 'srpen', 'září', 'říjen', 'listopad', 'prosinec']
143
+ },
144
+ 'pl': {
145
+ 'abbreviated': ['sty', 'lut', 'mar', 'kwi', 'maj', 'cze', 'lip', 'sie', 'wrz', 'paź', 'lis', 'gru'],
146
+ 'wide': ['styczeń', 'luty', 'marzec', 'kwiecień', 'maj', 'czerwiec', 'lipiec', 'sierpień', 'wrzesień', 'październik', 'listopad', 'grudzień']
147
+ },
148
+ 'nl': {
149
+ 'abbreviated': ['jan', 'feb', 'mrt', 'apr', 'mei', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'dec'],
150
+ 'wide': ['januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', 'oktober', 'november', 'december']
151
+ },
152
+ 'no': {
153
+ 'abbreviated': ['jan', 'feb', 'mar', 'apr', 'mai', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'des'],
154
+ 'wide': ['januar', 'februar', 'mars', 'april', 'mai', 'juni', 'juli', 'august', 'september', 'oktober', 'november', 'desember']
155
+ },
156
+ 'da': {
157
+ 'abbreviated': ['jan', 'feb', 'mar', 'apr', 'maj', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'dec'],
158
+ 'wide': ['januar', 'februar', 'marts', 'april', 'maj', 'juni', 'juli', 'august', 'september', 'oktober', 'november', 'december']
159
+ },
160
+ 'el': {
161
+ 'abbreviated': ['Ιαν', 'Φεβ', 'Μάρ', 'Απρ', 'Μάι', 'Ιούν', 'Ιούλ', 'Αύγ', 'Σεπ', 'Οκτ', 'Νοέ', 'Δεκ'],
162
+ 'wide': ['Ιανουάριος', 'Φεβρουάριος', 'Μάρτιος', 'Απρίλιος', 'Μάιος', 'Ιούνιος', 'Ιούλιος', 'Αύγουστος', 'Σεπτέμβριος', 'Οκτώβριος', 'Νοέμβριος', 'Δεκέμβριος']
163
+ },
164
+ 'fi': {
165
+ 'abbreviated': ['tammi', 'helmi', 'maalis', 'huhti', 'touko', 'kesä', 'heinä', 'elo', 'syys', 'lok', 'marras', 'joulu'],
166
+ 'wide': ['tammikuu', 'helmikuu', 'maaliskuu', 'huhtikuu', 'toukokuu', 'kesäkuu', 'heinäkuu', 'elokuu', 'syyskuu', 'lokakuu', 'marraskuu', 'joulukuu']
167
+ },
168
+ 'is': {
169
+ 'abbreviated': ['jan', 'feb', 'mar', 'apr', 'maí', 'jún', 'júl', 'ágú', 'sep', 'okt', 'nóv', 'des'],
170
+ 'wide': ['janúar', 'febrúar', 'mars', 'apríl', 'maí', 'júní', 'júlí', 'ágúst', 'september', 'október', 'nóvember', 'desember']
171
+ },
172
+ 'et': {
173
+ 'abbreviated': ['jaan', 'veebr', 'märts', 'apr', 'mai', 'juuni', 'juuli', 'aug', 'sept', 'okt', 'nov', 'dets'],
174
+ 'wide': ['jaanuar', 'veebruar', 'märts', 'aprill', 'mai', 'juuni', 'juuli', 'august', 'september', 'oktoober', 'november', 'detsember']
175
+ },
176
+ 'lv': {
177
+ 'abbreviated': ['jan', 'feb', 'mar', 'apr', 'mai', 'jūn', 'jūl', 'aug', 'sep', 'okt', 'nov', 'dec'],
178
+ 'wide': ['janvāris', 'februāris', 'marts', 'aprīlis', 'maijs', 'jūnijs', 'jūlijs', 'augusts', 'septembris', 'oktobris', 'novembris', 'decembris']
179
+ },
180
+ 'lt': {
181
+ 'abbreviated': ['sau', 'vas', 'kov', 'bal', 'geg', 'bir', 'lie', 'rugp', 'rugs', 'spal', 'lapkr', 'gruod'],
182
+ 'wide': ['sausis', 'vasaris', 'kovas', 'balandis', 'gegužė', 'birželis', 'liepa', 'rugpjūtis', 'rugsėjis', 'spalis', 'lapkritis', 'gruodis']
183
+ },
184
+ 'hu': {
185
+ 'abbreviated': ['jan', 'feb', 'már', 'ápr', 'máj', 'jún', 'júl', 'aug', 'szept', 'okt', 'nov', 'dec'],
186
+ 'wide': ['január', 'február', 'március', 'április', 'május', 'június', 'július', 'augusztus', 'szeptember', 'október', 'november', 'december']
187
+ },
188
+ };
@@ -50,6 +50,8 @@ export class CustomFormatDateFieldElement extends CustomInputElement {
50
50
  date: HTMLInputElement;
51
51
  dateWrapper: HTMLElement;
52
52
  pickerTrigger: HTMLElement;
53
+ language: string;
54
+ datePicker: CustomDatepicker;
53
55
 
54
56
  constructor() {
55
57
  super();
@@ -89,6 +91,7 @@ export class CustomFormatDateFieldElement extends CustomInputElement {
89
91
  this.date.setAttribute('min', this.min);
90
92
  }
91
93
 
94
+ this.language = this.attributes.getNamedItem('language')?.value || 'en';
92
95
  this.initCustomPicker();
93
96
  }
94
97
 
@@ -105,12 +108,26 @@ export class CustomFormatDateFieldElement extends CustomInputElement {
105
108
  );
106
109
  }
107
110
 
111
+ attributeChangedCallback(name: string, oldValue: string, newValue: string): void {
112
+ this.attributeChanged(name, oldValue, newValue);
113
+ }
114
+
115
+ private attributeChanged(name: string, oldValue: string, newValue: string): void {
116
+ switch (name) {
117
+ case 'language':
118
+ this.language = newValue;
119
+ this.initCustomPicker();
120
+ break;
121
+ }
122
+ }
123
+
108
124
  initCustomPicker() {
109
- new CustomDatepicker({
125
+ this.datePicker = new CustomDatepicker({
110
126
  input: this.date,
111
127
  dateFormat: this.dateFormat,
112
128
  otherTriggers: [this.pickerTrigger],
113
129
  parentElement: this,
130
+ language: this.language,
114
131
  })
115
132
  }
116
133
  }