@luftborn/custom-elements 2.8.1 → 2.8.3
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/demo/index.js +680 -2852
- package/demo/index.min.js +679 -2851
- package/demo/index.min.js.map +1 -1
- package/dist/elements/CustomFormatDateFieldElement/CustomDatepicker/CustomDatepicker.d.ts +48 -0
- package/dist/elements/CustomFormatDateFieldElement/CustomDatepicker/CustomDatepicker.js +333 -0
- package/dist/elements/CustomFormatDateFieldElement/CustomDatepicker/CustomDatepicker.js.map +1 -0
- package/dist/elements/CustomFormatDateFieldElement/CustomDatepicker/CustomDatepickerStyles.d.ts +1 -0
- package/dist/elements/CustomFormatDateFieldElement/CustomDatepicker/CustomDatepickerStyles.js +5 -0
- package/dist/elements/CustomFormatDateFieldElement/CustomDatepicker/CustomDatepickerStyles.js.map +1 -0
- package/dist/elements/CustomFormatDateFieldElement/CustomDatepicker/CustomDatepickerUtils.d.ts +6 -0
- package/dist/elements/CustomFormatDateFieldElement/CustomDatepicker/CustomDatepickerUtils.js +45 -0
- package/dist/elements/CustomFormatDateFieldElement/CustomDatepicker/CustomDatepickerUtils.js.map +1 -0
- package/dist/elements/CustomFormatDateFieldElement/CustomDatepicker/DatepickerTranslations.d.ts +2 -0
- package/dist/elements/CustomFormatDateFieldElement/CustomDatepicker/DatepickerTranslations.js +194 -0
- package/dist/elements/CustomFormatDateFieldElement/CustomDatepicker/DatepickerTranslations.js.map +1 -0
- package/dist/elements/CustomFormatDateFieldElement/CustomFormatDateFieldElement.d.ts +7 -6
- package/dist/elements/CustomFormatDateFieldElement/CustomFormatDateFieldElement.js +27 -59
- package/dist/elements/CustomFormatDateFieldElement/CustomFormatDateFieldElement.js.map +1 -1
- package/package.json +2 -6
- package/src/elements/CustomFormatDateFieldElement/CustomDatepicker/CustomDatepicker.ts +363 -0
- package/src/elements/CustomFormatDateFieldElement/CustomDatepicker/CustomDatepickerStyles.ts +101 -0
- package/src/elements/CustomFormatDateFieldElement/CustomDatepicker/CustomDatepickerUtils.ts +44 -0
- package/src/elements/CustomFormatDateFieldElement/CustomDatepicker/DatepickerTranslations.ts +188 -0
- package/src/elements/CustomFormatDateFieldElement/CustomFormatDateFieldElement.ts +30 -67
|
@@ -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
|
+
};
|
|
@@ -1,20 +1,23 @@
|
|
|
1
1
|
import CustomElement from '../../framework/custom-element.decorator';
|
|
2
2
|
import { CustomInputElement } from '../../framework/CustomInputElement';
|
|
3
3
|
import { CustomElementEventArgs } from '../../framework/CustomEvents';
|
|
4
|
-
|
|
4
|
+
import CustomDatepicker from './CustomDatepicker/CustomDatepicker';
|
|
5
|
+
import { defaultDateFormat, supportedDateFormats } from './CustomDatepicker/CustomDatepickerUtils';
|
|
5
6
|
|
|
6
7
|
@CustomElement({
|
|
7
8
|
selector: 'custom-format-date-element',
|
|
8
9
|
template: `
|
|
9
|
-
<div class="wrapper
|
|
10
|
-
<input type="text" id="date-field"
|
|
10
|
+
<div class="wrapper">
|
|
11
|
+
<input type="text" id="date-field" readonly />
|
|
11
12
|
<svg id="picker-trigger" data-toggle viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><rect x="2" y="4" width="20" height="18" rx="1" fill="#000"/><rect x="4" y="8" width="16" height="12" fill="white"/><path d="M4 10H20" stroke="#000" stroke-width="1"/><circle cx="16" cy="14" r="2" fill="#F44336"/><rect x="6" y="2" width="3" height="4" rx=".5" fill="#000"/><rect x="15" y="2" width="3" height="4" rx=".5" fill="#000"/></svg>
|
|
12
13
|
</div>`,
|
|
13
14
|
style: `
|
|
14
|
-
@import '../../../node_modules/flatpickr/dist/flatpickr.min.css';
|
|
15
15
|
:host{
|
|
16
16
|
width:100%;
|
|
17
17
|
}
|
|
18
|
+
* {
|
|
19
|
+
box-sizing: border-box;
|
|
20
|
+
}
|
|
18
21
|
.wrapper{
|
|
19
22
|
display:flex;
|
|
20
23
|
position: relative;
|
|
@@ -40,34 +43,15 @@ const flatpickr = require('flatpickr');
|
|
|
40
43
|
right: 2px;
|
|
41
44
|
top: 15%;
|
|
42
45
|
}
|
|
43
|
-
.flatpickr-calendar {
|
|
44
|
-
position: fixed !important; /* Use fixed positioning */
|
|
45
|
-
top: 50% !important; /* Center vertically */
|
|
46
|
-
left: 50% !important; /* Center horizontally */
|
|
47
|
-
z-index: 1000 !important; /* Ensure it's above other content */
|
|
48
|
-
}
|
|
49
46
|
`,
|
|
50
47
|
useShadow: true,
|
|
51
48
|
})
|
|
52
49
|
export class CustomFormatDateFieldElement extends CustomInputElement {
|
|
53
50
|
date: HTMLInputElement;
|
|
54
51
|
dateWrapper: HTMLElement;
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
private readonly supportedDateFormats = [
|
|
59
|
-
'ddmmyyyy',
|
|
60
|
-
'mmddyyyy',
|
|
61
|
-
'dd/mm/yyyy',
|
|
62
|
-
'mm/dd/yyyy',
|
|
63
|
-
'dd-mm-yyyy',
|
|
64
|
-
'mm-dd-yyyy',
|
|
65
|
-
'yyyy-mm-dd',
|
|
66
|
-
'yyyy-dd-mm',
|
|
67
|
-
'Month dd, yyyy',
|
|
68
|
-
'mm/dd/yy',
|
|
69
|
-
'dd/mm/yy',
|
|
70
|
-
];
|
|
52
|
+
pickerTrigger: HTMLElement;
|
|
53
|
+
language: string;
|
|
54
|
+
datePicker: CustomDatepicker;
|
|
71
55
|
|
|
72
56
|
constructor() {
|
|
73
57
|
super();
|
|
@@ -91,9 +75,9 @@ export class CustomFormatDateFieldElement extends CustomInputElement {
|
|
|
91
75
|
|
|
92
76
|
initChildInputs() {
|
|
93
77
|
this.date = super.getChildInput('#date-field');
|
|
94
|
-
this.
|
|
95
|
-
this.validateDateFormats();
|
|
78
|
+
this.pickerTrigger = this.getChildElement('#picker-trigger');
|
|
96
79
|
|
|
80
|
+
this.dateFormat = supportedDateFormats.includes(this.dateFormat) ? this.dateFormat : defaultDateFormat;
|
|
97
81
|
this.date.placeholder = this.dateFormat;
|
|
98
82
|
|
|
99
83
|
this.date.addEventListener('change', this.change.bind(this));
|
|
@@ -107,7 +91,8 @@ export class CustomFormatDateFieldElement extends CustomInputElement {
|
|
|
107
91
|
this.date.setAttribute('min', this.min);
|
|
108
92
|
}
|
|
109
93
|
|
|
110
|
-
this.
|
|
94
|
+
this.language = this.attributes.getNamedItem('language')?.value || 'en';
|
|
95
|
+
this.initCustomPicker();
|
|
111
96
|
}
|
|
112
97
|
|
|
113
98
|
// events
|
|
@@ -123,48 +108,26 @@ export class CustomFormatDateFieldElement extends CustomInputElement {
|
|
|
123
108
|
);
|
|
124
109
|
}
|
|
125
110
|
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
wrap: true,
|
|
129
|
-
altInput: true,
|
|
130
|
-
appendTo: this.shadowRoot.querySelector('.wrapper'),
|
|
131
|
-
disableMobile: true,
|
|
132
|
-
parseDate: (datestr) => {
|
|
133
|
-
return new Date(datestr);
|
|
134
|
-
},
|
|
135
|
-
formatDate: (date, format) => {
|
|
136
|
-
return this.formatDate(date);
|
|
137
|
-
}
|
|
138
|
-
});
|
|
111
|
+
attributeChangedCallback(name: string, oldValue: string, newValue: string): void {
|
|
112
|
+
this.attributeChanged(name, oldValue, newValue);
|
|
139
113
|
}
|
|
140
114
|
|
|
141
|
-
private
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
const dateFormats = {
|
|
149
|
-
'ddmmyyyy': `${day}${month}${year}`,
|
|
150
|
-
'mmddyyyy': `${month}${day}${year}`,
|
|
151
|
-
'dd/mm/yyyy': `${day}/${month}/${year}`,
|
|
152
|
-
'mm/dd/yyyy': `${month}/${day}/${year}`,
|
|
153
|
-
'dd-mm-yyyy': `${day}-${month}-${year}`,
|
|
154
|
-
'mm-dd-yyyy': `${month}-${day}-${year}`,
|
|
155
|
-
'yyyy-mm-dd': `${year}-${month}-${day}`,
|
|
156
|
-
'yyyy-dd-mm': `${year}-${day}-${month}`,
|
|
157
|
-
'Month dd, yyyy': `${monthName} ${day}, ${year}`,
|
|
158
|
-
'mm/dd/yy': `${month}/${day}/${year.toString().slice(-2)}`,
|
|
159
|
-
'dd/mm/yy': `${day}/${month}/${year.toString().slice(-2)}`,
|
|
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;
|
|
160
121
|
}
|
|
161
|
-
|
|
162
|
-
return dateFormats[this.dateFormat];
|
|
163
122
|
}
|
|
164
123
|
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
124
|
+
initCustomPicker() {
|
|
125
|
+
this.datePicker = new CustomDatepicker({
|
|
126
|
+
input: this.date,
|
|
127
|
+
dateFormat: this.dateFormat,
|
|
128
|
+
otherTriggers: [this.pickerTrigger],
|
|
129
|
+
parentElement: this,
|
|
130
|
+
language: this.language,
|
|
131
|
+
})
|
|
169
132
|
}
|
|
170
133
|
}
|