@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.
Files changed (24) hide show
  1. package/demo/index.js +680 -2852
  2. package/demo/index.min.js +679 -2851
  3. package/demo/index.min.js.map +1 -1
  4. package/dist/elements/CustomFormatDateFieldElement/CustomDatepicker/CustomDatepicker.d.ts +48 -0
  5. package/dist/elements/CustomFormatDateFieldElement/CustomDatepicker/CustomDatepicker.js +333 -0
  6. package/dist/elements/CustomFormatDateFieldElement/CustomDatepicker/CustomDatepicker.js.map +1 -0
  7. package/dist/elements/CustomFormatDateFieldElement/CustomDatepicker/CustomDatepickerStyles.d.ts +1 -0
  8. package/dist/elements/CustomFormatDateFieldElement/CustomDatepicker/CustomDatepickerStyles.js +5 -0
  9. package/dist/elements/CustomFormatDateFieldElement/CustomDatepicker/CustomDatepickerStyles.js.map +1 -0
  10. package/dist/elements/CustomFormatDateFieldElement/CustomDatepicker/CustomDatepickerUtils.d.ts +6 -0
  11. package/dist/elements/CustomFormatDateFieldElement/CustomDatepicker/CustomDatepickerUtils.js +45 -0
  12. package/dist/elements/CustomFormatDateFieldElement/CustomDatepicker/CustomDatepickerUtils.js.map +1 -0
  13. package/dist/elements/CustomFormatDateFieldElement/CustomDatepicker/DatepickerTranslations.d.ts +2 -0
  14. package/dist/elements/CustomFormatDateFieldElement/CustomDatepicker/DatepickerTranslations.js +194 -0
  15. package/dist/elements/CustomFormatDateFieldElement/CustomDatepicker/DatepickerTranslations.js.map +1 -0
  16. package/dist/elements/CustomFormatDateFieldElement/CustomFormatDateFieldElement.d.ts +7 -6
  17. package/dist/elements/CustomFormatDateFieldElement/CustomFormatDateFieldElement.js +27 -59
  18. package/dist/elements/CustomFormatDateFieldElement/CustomFormatDateFieldElement.js.map +1 -1
  19. package/package.json +2 -6
  20. package/src/elements/CustomFormatDateFieldElement/CustomDatepicker/CustomDatepicker.ts +363 -0
  21. package/src/elements/CustomFormatDateFieldElement/CustomDatepicker/CustomDatepickerStyles.ts +101 -0
  22. package/src/elements/CustomFormatDateFieldElement/CustomDatepicker/CustomDatepickerUtils.ts +44 -0
  23. package/src/elements/CustomFormatDateFieldElement/CustomDatepicker/DatepickerTranslations.ts +188 -0
  24. 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
- const flatpickr = require('flatpickr');
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 flatpickr">
10
- <input type="text" id="date-field" data-input />
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
- datepicker: any;
56
-
57
- private readonly defaultDateFormat = 'yyyy-mm-dd';
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.dateWrapper = super.getChildInput('.flatpickr');
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.initFlatpickr();
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
- initFlatpickr() {
127
- flatpickr(this.dateWrapper, {
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 formatDate(date: Date): string {
142
-
143
- const year = date.getFullYear();
144
- const month = (date.getMonth() + 1).toString().padStart(2, '0');
145
- const day = date.getDate().toString().padStart(2, '0');
146
- const monthName = date.toLocaleString('default', { month: 'long' });
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
- private validateDateFormats() {
166
- if (!this.supportedDateFormats.includes(this.dateFormat)) {
167
- this.dateFormat = this.defaultDateFormat;
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
  }