@brightspace-ui/intl 3.13.2 → 3.14.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/lib/common.js CHANGED
@@ -88,6 +88,7 @@ export function validateFormatValue(value) {
88
88
  class DocumentLocaleSettings {
89
89
 
90
90
  constructor() {
91
+ this._cache = new Map();
91
92
  this._htmlElem = window.document.getElementsByTagName('html')[0];
92
93
  this._listeners = [];
93
94
  this._overrides = {};
@@ -101,6 +102,7 @@ class DocumentLocaleSettings {
101
102
  set fallbackLanguage(val) {
102
103
  const normalized = this._normalize(val);
103
104
  if (normalized === this._fallbackLanguage) return;
105
+ this._cache.clear();
104
106
  this._fallbackLanguage = normalized;
105
107
  this._listeners.forEach((cb) => cb());
106
108
  }
@@ -109,6 +111,7 @@ class DocumentLocaleSettings {
109
111
  set language(val) {
110
112
  const normalized = this._normalize(val);
111
113
  if (normalized === this._language) return;
114
+ this._cache.clear();
112
115
  this._language = normalized;
113
116
  this._listeners.forEach((cb) => cb());
114
117
  }
@@ -123,6 +126,7 @@ class DocumentLocaleSettings {
123
126
  delete val.date.formats.timeFormats;
124
127
  }
125
128
  }
129
+ this._cache.clear();
126
130
  this._overrides = val;
127
131
  this._listeners.forEach((cb) => cb());
128
132
  }
@@ -131,6 +135,13 @@ class DocumentLocaleSettings {
131
135
  this._listeners.push(cb);
132
136
  }
133
137
 
138
+ getCacheItem(key, provider) {
139
+ if (!this._cache.has(key)) {
140
+ this._cache.set(key, provider());
141
+ }
142
+ return this._cache.get(key);
143
+ }
144
+
134
145
  removeChangeListener(cb) {
135
146
  const index = this._listeners.indexOf(cb);
136
147
  if (index < 0) return;
@@ -138,6 +149,7 @@ class DocumentLocaleSettings {
138
149
  }
139
150
 
140
151
  reset() {
152
+ this._cache.clear();
141
153
  this._language = this._languageInitial;
142
154
  this._fallbackLanguage = null;
143
155
  this.overrides = {};
package/lib/dateTime.js CHANGED
@@ -691,266 +691,267 @@ export function convertUTCToLocalDateTime(date) {
691
691
  }
692
692
 
693
693
  export function getDateTimeDescriptor() {
694
-
695
- const language = getLanguage();
696
694
  const settings = getDocumentLocaleSettings();
695
+ return settings.getCacheItem('dateTimeDescriptor', () => {
697
696
 
698
- const subtags = language.split('-');
699
- const baseLanguage = subtags[0];
697
+ const language = getLanguage();
698
+ const subtags = language.split('-');
699
+ const baseLanguage = subtags[0];
700
700
 
701
- let hour24 = (hour24locales.indexOf(baseLanguage) > -1);
702
- if (language === 'zh-tw') {
703
- hour24 = false;
704
- }
705
- if (settings.overrides.date && settings.overrides.date.hour24 !== undefined) {
706
- hour24 = settings.overrides.date.hour24;
707
- }
701
+ let hour24 = (hour24locales.indexOf(baseLanguage) > -1);
702
+ if (language === 'zh-tw') {
703
+ hour24 = false;
704
+ }
705
+ if (settings.overrides.date && settings.overrides.date.hour24 !== undefined) {
706
+ hour24 = settings.overrides.date.hour24;
707
+ }
708
708
 
709
- const timeFormat = getTimeFormat(hour24, language, baseLanguage);
710
-
711
- let dateFormats = ['dddd, MMMM d, yyyy', 'MMM d, yyyy', 'M/d/yyyy', 'MMMM yyyy', 'MMMM d', 'MMM d'];
712
- const fullTimeFormat = (baseLanguage === 'zh' && language !== 'zh-tw') ? `ZZZ ${timeFormat}` : `${timeFormat} ZZZ`;
713
- let dayPeriods = ['AM', 'PM'];
714
- let months = [
715
- ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
716
- ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
717
- ];
718
- let days = [
719
- ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
720
- ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
721
- ['S', 'M', 'T', 'W', 'T', 'F', 'S']
722
- ];
723
- let firstDayOfWeek = (mondayFirstDayLocales.indexOf(baseLanguage) > -1) ? 1 : 0;
724
- let weekendStartDay = 6;
725
- let weekendEndDay = 0;
726
-
727
- switch (baseLanguage) {
728
- case 'ar':
729
- dateFormats = ['dddd, d MMMM, yyyy', 'dd MMMM, yyyy', 'dd/MM/yyyy', 'MMMM, yyyy', 'd MMMM', 'd MMM'];
730
- dayPeriods = ['ص', 'م'];
731
- months[0] = months[1] = ['يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوفمبر', 'ديسمبر'];
732
- days = [
733
- ['الأحد', 'الإثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
734
- ['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'],
735
- ['أ', 'إ', 'ث', 'أر', 'خ', 'ج', 'س']
736
- ];
737
- firstDayOfWeek = 6;
738
- weekendStartDay = 4;
739
- weekendEndDay = 5;
740
- break;
741
- case 'cy':
742
- dateFormats = ['dddd, d MMMM yyyy', 'dd MMMM yyyy', 'dd/MM/yyyy', 'MMMM yyyy', 'd MMMM', 'd MMM'];
743
- months = [
744
- ['Ionawr', 'Chwefror', 'Mawrth', 'Ebrill', 'Mai', 'Mehefin', 'Gorffennaf', 'Awst', 'Medi', 'Hydref', 'Tachwedd', 'Rhagfyr'],
745
- ['Ion', 'Chwe', 'Maw', 'Ebr', 'Mai', 'Meh', 'Gor', 'Awst', 'Medi', 'Hyd', 'Tach', 'Rhag']
746
- ];
747
- days = [
748
- ['Dydd Sul', 'Dydd Llun', 'Dydd Mawrth', 'Dydd Mercher', 'Dydd Iau', 'Dydd Gwener', 'Dydd Sadwrn'],
749
- ['Sul', 'Llun', 'Maw', 'Mer', 'Iau', 'Gwe', 'Sad'],
750
- ['Su', 'Ll', 'Ma', 'Me', 'Ia', 'Gw', 'Sa']
751
- ];
752
- break;
753
- case 'da':
754
- dateFormats = ['dddd \'den\' d. MMMM yyyy', 'd. MMM. yyyy', 'dd.MM.yyyy', 'MMMM yyyy', 'd. MMMM', 'd. MMM'];
755
- months = [
756
- ['januar', 'februar', 'marts', 'april', 'maj', 'juni', 'juli', 'august', 'september', 'oktober', 'november', 'december'],
757
- ['jan.', 'feb.', 'mar.', 'apr.', 'maj', 'jun.', 'jul.', 'aug.', 'sep.', 'okt.', 'nov.', 'dec.']
758
- ];
759
- days = [
760
- ['søndag', 'mandag', 'tirsdag', 'onsdag', 'torsdag', 'fredag', 'lørdag'],
761
- ['søn.', 'man.', 'tir.', 'ons.', 'tor.', 'fre.', 'lør.'],
762
- ['S', 'M', 'T', 'O', 'T', 'F', 'L']
763
- ];
764
- break;
765
- case 'de':
766
- dateFormats = ['dddd d. MMMM yyyy', 'd. MMMM yyyy', 'dd.MM.yyyy', 'MMMM yyyy', 'd. MMMM', 'd. MMM'];
767
- months = [
768
- ['Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'],
769
- ['Jan.', 'Feb.', 'März', 'Apr.', 'Mai', 'Juni', 'Juli', 'Aug.', 'Sept.', 'Okt.', 'Nov.', 'Dez.']
770
- ];
771
- days = [
772
- ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'],
773
- ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'],
774
- ['S', 'M', 'D', 'M', 'D', 'F', 'S']
775
- ];
776
- break;
777
- case 'es':
778
- dateFormats = ['dddd d\' de \'MMMM\' de \'yyyy', 'd\' de \'MMMM\' de \'yyyy', 'dd/MM/yyyy', 'MMMM yyyy', 'd\' de \'MMMM', 'd\' de \'MMM'];
779
- dayPeriods = ['a. m.', 'p. m.'];
780
- months = [
781
- ['enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', 'octubre', 'noviembre', 'diciembre'],
782
- ['ene.', 'feb.', 'mar.', 'abr.', 'may.', 'jun.', 'jul.', 'ago.', 'sep.', 'oct.', 'nov.', 'dic.']
783
- ];
784
- days = [
785
- ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'],
786
- ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'],
787
- ['D', 'L', 'M', 'M', 'J', 'V', 'S']
788
- ];
789
- break;
790
- case 'fr':
791
- dateFormats = ['dddd d MMMM yyyy', 'd MMM yyyy', 'dd/MM/yyyy', 'MMMM yyyy', 'd MMMM', 'd MMM'];
792
- months = [
793
- ['janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre'],
794
- ['janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', 'déc.']
795
- ];
796
- days = [
797
- ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'],
798
- ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'],
799
- ['D', 'L', 'M', 'M', 'J', 'V', 'S']
800
- ];
801
- break;
802
- case 'hi':
803
- dateFormats = ['dddd, d MMMM yyyy', 'd MMMM yyyy', 'dd-MM-yyyy', 'MMMM yyyy', 'd MMMM', 'd MMM'];
804
- dayPeriods = ['पूर्वाह्न', 'अपराह्न'];
805
- months = [
806
- ['जनवरी', 'फरवरी', 'मार्च', 'अप्रैल', 'मई', 'जून', 'जुलाई', 'अगस्त', 'सितंबर', 'अक्टूबर', 'नवंबर', 'दिसंबर'],
807
- ['जन', 'फर', 'मार्च', 'अप्रैल', 'मई', 'जून', 'जुलाई', 'अग', 'सितं', 'अक्टू', 'नवं', 'दिसं']
808
- ];
809
- days = [
810
- ['रविवार', 'सोमवार', 'मंगलवार', 'बुधवार', 'गुरूवार', 'शुक्रवार', 'शनिवार'],
811
- ['रवि', 'सोम', 'मंगल', 'बुध', 'गुरु', 'शुक्र', 'शनि'],
812
- ['र', 'सो', 'मं', 'बु', 'गु', 'शु', 'श']
813
- ];
814
- break;
815
- case 'ja':
816
- dateFormats = ['yyyy年M月d日', 'yyyy年M月d日', 'yyyy/MM/dd', 'yyyy年M月', 'M月d日', 'M月d日'];
817
- dayPeriods = ['午前', '午後'];
818
- months[0] = months[1] = ['1 月', '2 月', '3 月', '4 月', '5 月', '6 月', '7 月', '8 月', '9 月', '10 月', '11 月', '12 月'];
819
- days[0] = days[1] = days[2] = ['日', '月', '火', '水', '木', '金', '土'];
820
- break;
821
- case 'ko':
822
- dateFormats = ['yyyy년 M월 d일 dddd', 'yyyy년 M월 d일', 'yyyy-MM-dd', 'yyyy년 M월', 'M월 d일', 'MMM d일'];
823
- dayPeriods = ['오전', '오후'];
824
- months[0] = months[1] = ['1월', '2월', '3월', '4월', '5월', '6월', '7월', '8월', '9월', '10월', '11월', '12월'];
825
- days[0] = ['일요일', '월요일', '화요일', '수요일', '목요일', '금요일', '토요일'];
826
- days[1] = days[2] = ['일', '월', '화', '수', '목', '금', '토'];
827
- break;
828
- case 'nl':
829
- dateFormats = ['dddd d MMMM yyyy', 'd MMMM yyyy', 'dd-MM-yyyy', 'MMMM yyyy', 'd MMMM', 'd MMM'];
830
- dayPeriods = ['a.m.', 'p.m.'];
831
- months = [
832
- ['januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', 'oktober', 'november', 'december'],
833
- ['jan.', 'feb.', 'mrt.', 'apr.', 'mei', 'jun.', 'jul.', 'aug.', 'sep.', 'okt.', 'nov.', 'dec.']
834
- ];
835
- days = [
836
- ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'],
837
- ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'],
838
- ['Z', 'M', 'D', 'W', 'D', 'V', 'Z']
839
- ];
840
- break;
841
- case 'pt':
842
- dateFormats = ['dddd, d\' de \'MMMM\' de \'yyyy', 'd\' de \'MMMM\' de \'yyyy', 'dd/MM/yyyy', 'MMMM\' de \'yyyy', 'dd\' de \'MMMM', 'dd\' de \'MMM'];
843
- months = [
844
- ['janeiro', 'fevereiro', 'março', 'abril', 'maio', 'junho', 'julho', 'agosto', 'setembro', 'outubro', 'novembro', 'dezembro'],
845
- ['jan', 'fev', 'mar', 'abr', 'mai', 'jun', 'jul', 'ago', 'set', 'out', 'nov', 'dez']
846
- ];
847
- days = [
848
- ['domingo', 'segunda-feira', 'terça-feira', 'quarta-feira', 'quinta-feira', 'sexta-feira', 'sábado'],
849
- ['dom', 'seg', 'ter', 'qua', 'qui', 'sex', 'sáb'],
850
- ['D', 'S', 'T', 'Q', 'Q', 'S', 'S']
851
- ];
852
- break;
853
- case 'sv':
854
- dateFormats = ['dddd \'den\' d MMMM yyyy', 'd MMMM yyyy', 'yyyy-MM-dd', 'MMMM yyyy', 'dd MMMM', 'dd MMM'];
855
- dayPeriods = ['fm', 'em'];
856
- months = [
857
- ['januari', 'februari', 'mars', 'april', 'maj', 'juni', 'juli', 'augusti', 'september', 'oktober', 'november', 'december'],
858
- ['jan.', 'feb.', 'mars', 'apr.', 'maj', 'juni', 'juli', 'aug.', 'sep.', 'okt.', 'nov.', 'dec.']
859
- ];
860
- days = [
861
- ['Söndag', 'Måndag', 'Tisdag', 'Onsdag', 'Torsdag', 'Fredag', 'Lördag'],
862
- ['Sön', 'Mån', 'Tis', 'Ons', 'Tor', 'Fre', 'Lör'],
863
- ['S', 'M', 'T', 'O', 'T', 'F', 'L']
864
- ];
865
- break;
866
- case 'tr':
867
- dateFormats = ['dd MMMM yyyy dddd', 'dd MMMM yyyy', 'dd.MM.yyyy', 'MMMM yyyy', 'dd MMMM', 'dd MMM'];
868
- dayPeriods = ['ÖÖ', 'ÖS'];
869
- months = [
870
- ['Ocak', 'Şubat', 'Mart', 'Nisan', 'Mayıs', 'Haziran', 'Temmuz', 'Ağustos', 'Eylül', 'Ekim', 'Kasım', 'Aralık'],
871
- ['Oca', 'Şub', 'Mar', 'Nis', 'May', 'Haz', 'Tem', 'Ağu', 'Eyl', 'Ek', 'Kas', 'Ara']
872
- ];
873
- days = [
874
- ['Pazar', 'Pazartesi', 'Salı', 'Çarşamba', 'Perşembe', 'Cuma', 'Cumartesi'],
875
- ['Paz', 'Pzt', 'Sal', 'Çar', 'Per', 'Cum', 'Cmt'],
876
- ['P', 'P', 'S', 'Ç', 'P', 'C', 'C']
877
- ];
878
- break;
879
- case 'zh':
880
- dateFormats = ['yyyy年M月d日', 'yyyy年M月d日', 'yyyy/M/d', 'yyyy年M月', 'M月d日', 'M月d日'];
881
- dayPeriods = ['上午', '下午'];
882
- months[0] = months[1] = ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'];
883
- days[0] = days[1] = ['週日', '週一', '週二', '週三', '週四', '週五', '週六'];
884
- days[2] = ['日', '一', '二', '三', '四', '五', '六'];
885
- break;
886
- }
709
+ const timeFormat = getTimeFormat(hour24, language, baseLanguage);
710
+
711
+ let dateFormats = ['dddd, MMMM d, yyyy', 'MMM d, yyyy', 'M/d/yyyy', 'MMMM yyyy', 'MMMM d', 'MMM d'];
712
+ const fullTimeFormat = (baseLanguage === 'zh' && language !== 'zh-tw') ? `ZZZ ${timeFormat}` : `${timeFormat} ZZZ`;
713
+ let dayPeriods = ['AM', 'PM'];
714
+ let months = [
715
+ ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
716
+ ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
717
+ ];
718
+ let days = [
719
+ ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
720
+ ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
721
+ ['S', 'M', 'T', 'W', 'T', 'F', 'S']
722
+ ];
723
+ let firstDayOfWeek = (mondayFirstDayLocales.indexOf(baseLanguage) > -1) ? 1 : 0;
724
+ let weekendStartDay = 6;
725
+ let weekendEndDay = 0;
726
+
727
+ switch (baseLanguage) {
728
+ case 'ar':
729
+ dateFormats = ['dddd, d MMMM, yyyy', 'dd MMMM, yyyy', 'dd/MM/yyyy', 'MMMM, yyyy', 'd MMMM', 'd MMM'];
730
+ dayPeriods = ['ص', 'م'];
731
+ months[0] = months[1] = ['يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوفمبر', 'ديسمبر'];
732
+ days = [
733
+ ['الأحد', 'الإثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
734
+ ['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'],
735
+ ['أ', 'إ', 'ث', 'أر', 'خ', 'ج', 'س']
736
+ ];
737
+ firstDayOfWeek = 6;
738
+ weekendStartDay = 4;
739
+ weekendEndDay = 5;
740
+ break;
741
+ case 'cy':
742
+ dateFormats = ['dddd, d MMMM yyyy', 'dd MMMM yyyy', 'dd/MM/yyyy', 'MMMM yyyy', 'd MMMM', 'd MMM'];
743
+ months = [
744
+ ['Ionawr', 'Chwefror', 'Mawrth', 'Ebrill', 'Mai', 'Mehefin', 'Gorffennaf', 'Awst', 'Medi', 'Hydref', 'Tachwedd', 'Rhagfyr'],
745
+ ['Ion', 'Chwe', 'Maw', 'Ebr', 'Mai', 'Meh', 'Gor', 'Awst', 'Medi', 'Hyd', 'Tach', 'Rhag']
746
+ ];
747
+ days = [
748
+ ['Dydd Sul', 'Dydd Llun', 'Dydd Mawrth', 'Dydd Mercher', 'Dydd Iau', 'Dydd Gwener', 'Dydd Sadwrn'],
749
+ ['Sul', 'Llun', 'Maw', 'Mer', 'Iau', 'Gwe', 'Sad'],
750
+ ['Su', 'Ll', 'Ma', 'Me', 'Ia', 'Gw', 'Sa']
751
+ ];
752
+ break;
753
+ case 'da':
754
+ dateFormats = ['dddd \'den\' d. MMMM yyyy', 'd. MMM. yyyy', 'dd.MM.yyyy', 'MMMM yyyy', 'd. MMMM', 'd. MMM'];
755
+ months = [
756
+ ['januar', 'februar', 'marts', 'april', 'maj', 'juni', 'juli', 'august', 'september', 'oktober', 'november', 'december'],
757
+ ['jan.', 'feb.', 'mar.', 'apr.', 'maj', 'jun.', 'jul.', 'aug.', 'sep.', 'okt.', 'nov.', 'dec.']
758
+ ];
759
+ days = [
760
+ ['søndag', 'mandag', 'tirsdag', 'onsdag', 'torsdag', 'fredag', 'lørdag'],
761
+ ['søn.', 'man.', 'tir.', 'ons.', 'tor.', 'fre.', 'lør.'],
762
+ ['S', 'M', 'T', 'O', 'T', 'F', 'L']
763
+ ];
764
+ break;
765
+ case 'de':
766
+ dateFormats = ['dddd d. MMMM yyyy', 'd. MMMM yyyy', 'dd.MM.yyyy', 'MMMM yyyy', 'd. MMMM', 'd. MMM'];
767
+ months = [
768
+ ['Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'],
769
+ ['Jan.', 'Feb.', 'März', 'Apr.', 'Mai', 'Juni', 'Juli', 'Aug.', 'Sept.', 'Okt.', 'Nov.', 'Dez.']
770
+ ];
771
+ days = [
772
+ ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'],
773
+ ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'],
774
+ ['S', 'M', 'D', 'M', 'D', 'F', 'S']
775
+ ];
776
+ break;
777
+ case 'es':
778
+ dateFormats = ['dddd d\' de \'MMMM\' de \'yyyy', 'd\' de \'MMMM\' de \'yyyy', 'dd/MM/yyyy', 'MMMM yyyy', 'd\' de \'MMMM', 'd\' de \'MMM'];
779
+ dayPeriods = ['a. m.', 'p. m.'];
780
+ months = [
781
+ ['enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', 'octubre', 'noviembre', 'diciembre'],
782
+ ['ene.', 'feb.', 'mar.', 'abr.', 'may.', 'jun.', 'jul.', 'ago.', 'sep.', 'oct.', 'nov.', 'dic.']
783
+ ];
784
+ days = [
785
+ ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'],
786
+ ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'],
787
+ ['D', 'L', 'M', 'M', 'J', 'V', 'S']
788
+ ];
789
+ break;
790
+ case 'fr':
791
+ dateFormats = ['dddd d MMMM yyyy', 'd MMM yyyy', 'dd/MM/yyyy', 'MMMM yyyy', 'd MMMM', 'd MMM'];
792
+ months = [
793
+ ['janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre'],
794
+ ['janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', 'déc.']
795
+ ];
796
+ days = [
797
+ ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'],
798
+ ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'],
799
+ ['D', 'L', 'M', 'M', 'J', 'V', 'S']
800
+ ];
801
+ break;
802
+ case 'hi':
803
+ dateFormats = ['dddd, d MMMM yyyy', 'd MMMM yyyy', 'dd-MM-yyyy', 'MMMM yyyy', 'd MMMM', 'd MMM'];
804
+ dayPeriods = ['पूर्वाह्न', 'अपराह्न'];
805
+ months = [
806
+ ['जनवरी', 'फरवरी', 'मार्च', 'अप्रैल', 'मई', 'जून', 'जुलाई', 'अगस्त', 'सितंबर', 'अक्टूबर', 'नवंबर', 'दिसंबर'],
807
+ ['जन', 'फर', 'मार्च', 'अप्रैल', 'मई', 'जून', 'जुलाई', 'अग', 'सितं', 'अक्टू', 'नवं', 'दिसं']
808
+ ];
809
+ days = [
810
+ ['रविवार', 'सोमवार', 'मंगलवार', 'बुधवार', 'गुरूवार', 'शुक्रवार', 'शनिवार'],
811
+ ['रवि', 'सोम', 'मंगल', 'बुध', 'गुरु', 'शुक्र', 'शनि'],
812
+ ['र', 'सो', 'मं', 'बु', 'गु', 'शु', 'श']
813
+ ];
814
+ break;
815
+ case 'ja':
816
+ dateFormats = ['yyyy年M月d日', 'yyyy年M月d日', 'yyyy/MM/dd', 'yyyy年M月', 'M月d日', 'M月d日'];
817
+ dayPeriods = ['午前', '午後'];
818
+ months[0] = months[1] = ['1 月', '2 月', '3 月', '4 月', '5 月', '6 月', '7 月', '8 月', '9 月', '10 月', '11 月', '12 月'];
819
+ days[0] = days[1] = days[2] = ['日', '月', '火', '水', '木', '金', '土'];
820
+ break;
821
+ case 'ko':
822
+ dateFormats = ['yyyy년 M월 d일 dddd', 'yyyy년 M월 d일', 'yyyy-MM-dd', 'yyyy년 M월', 'M월 d일', 'MMM d일'];
823
+ dayPeriods = ['오전', '오후'];
824
+ months[0] = months[1] = ['1월', '2월', '3월', '4월', '5월', '6월', '7월', '8월', '9월', '10월', '11월', '12월'];
825
+ days[0] = ['일요일', '월요일', '화요일', '수요일', '목요일', '금요일', '토요일'];
826
+ days[1] = days[2] = ['일', '월', '화', '수', '목', '금', '토'];
827
+ break;
828
+ case 'nl':
829
+ dateFormats = ['dddd d MMMM yyyy', 'd MMMM yyyy', 'dd-MM-yyyy', 'MMMM yyyy', 'd MMMM', 'd MMM'];
830
+ dayPeriods = ['a.m.', 'p.m.'];
831
+ months = [
832
+ ['januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', 'oktober', 'november', 'december'],
833
+ ['jan.', 'feb.', 'mrt.', 'apr.', 'mei', 'jun.', 'jul.', 'aug.', 'sep.', 'okt.', 'nov.', 'dec.']
834
+ ];
835
+ days = [
836
+ ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'],
837
+ ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'],
838
+ ['Z', 'M', 'D', 'W', 'D', 'V', 'Z']
839
+ ];
840
+ break;
841
+ case 'pt':
842
+ dateFormats = ['dddd, d\' de \'MMMM\' de \'yyyy', 'd\' de \'MMMM\' de \'yyyy', 'dd/MM/yyyy', 'MMMM\' de \'yyyy', 'dd\' de \'MMMM', 'dd\' de \'MMM'];
843
+ months = [
844
+ ['janeiro', 'fevereiro', 'março', 'abril', 'maio', 'junho', 'julho', 'agosto', 'setembro', 'outubro', 'novembro', 'dezembro'],
845
+ ['jan', 'fev', 'mar', 'abr', 'mai', 'jun', 'jul', 'ago', 'set', 'out', 'nov', 'dez']
846
+ ];
847
+ days = [
848
+ ['domingo', 'segunda-feira', 'terça-feira', 'quarta-feira', 'quinta-feira', 'sexta-feira', 'sábado'],
849
+ ['dom', 'seg', 'ter', 'qua', 'qui', 'sex', 'sáb'],
850
+ ['D', 'S', 'T', 'Q', 'Q', 'S', 'S']
851
+ ];
852
+ break;
853
+ case 'sv':
854
+ dateFormats = ['dddd \'den\' d MMMM yyyy', 'd MMMM yyyy', 'yyyy-MM-dd', 'MMMM yyyy', 'dd MMMM', 'dd MMM'];
855
+ dayPeriods = ['fm', 'em'];
856
+ months = [
857
+ ['januari', 'februari', 'mars', 'april', 'maj', 'juni', 'juli', 'augusti', 'september', 'oktober', 'november', 'december'],
858
+ ['jan.', 'feb.', 'mars', 'apr.', 'maj', 'juni', 'juli', 'aug.', 'sep.', 'okt.', 'nov.', 'dec.']
859
+ ];
860
+ days = [
861
+ ['Söndag', 'Måndag', 'Tisdag', 'Onsdag', 'Torsdag', 'Fredag', 'Lördag'],
862
+ ['Sön', 'Mån', 'Tis', 'Ons', 'Tor', 'Fre', 'Lör'],
863
+ ['S', 'M', 'T', 'O', 'T', 'F', 'L']
864
+ ];
865
+ break;
866
+ case 'tr':
867
+ dateFormats = ['dd MMMM yyyy dddd', 'dd MMMM yyyy', 'dd.MM.yyyy', 'MMMM yyyy', 'dd MMMM', 'dd MMM'];
868
+ dayPeriods = ['ÖÖ', 'ÖS'];
869
+ months = [
870
+ ['Ocak', 'Şubat', 'Mart', 'Nisan', 'Mayıs', 'Haziran', 'Temmuz', 'Ağustos', 'Eylül', 'Ekim', 'Kasım', 'Aralık'],
871
+ ['Oca', 'Şub', 'Mar', 'Nis', 'May', 'Haz', 'Tem', 'Ağu', 'Eyl', 'Ek', 'Kas', 'Ara']
872
+ ];
873
+ days = [
874
+ ['Pazar', 'Pazartesi', 'Salı', 'Çarşamba', 'Perşembe', 'Cuma', 'Cumartesi'],
875
+ ['Paz', 'Pzt', 'Sal', 'Çar', 'Per', 'Cum', 'Cmt'],
876
+ ['P', 'P', 'S', 'Ç', 'P', 'C', 'C']
877
+ ];
878
+ break;
879
+ case 'zh':
880
+ dateFormats = ['yyyy年M月d日', 'yyyy年M月d日', 'yyyy/M/d', 'yyyy年M月', 'M月d日', 'M月d日'];
881
+ dayPeriods = ['上午', '下午'];
882
+ months[0] = months[1] = ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'];
883
+ days[0] = days[1] = ['週日', '週一', '週二', '週三', '週四', '週五', '週六'];
884
+ days[2] = ['日', '一', '二', '三', '四', '五', '六'];
885
+ break;
886
+ }
887
887
 
888
- switch (language) {
889
- case 'en-gb':
890
- dateFormats = ['dddd, d MMMM yyyy', 'dd MMMM yyyy', 'dd/MM/yyyy', 'MMMM yyyy', 'd MMMM', 'd MMM'];
891
- break;
892
- case 'fr-ca':
893
- dateFormats[1] = 'MMM d yyyy';
894
- dateFormats[2] = 'yyyy-MM-dd';
895
- dateFormats[4] = 'MMMM d';
896
- dateFormats[5] = 'MMM d';
897
- firstDayOfWeek = 0;
898
- break;
899
- case 'fr-on':
900
- dateFormats[0] = 'dddd\' le \'d MMMM yyyy';
901
- dateFormats[1] = 'MMM d yyyy';
902
- dateFormats[2] = 'yyyy-MM-dd';
903
- firstDayOfWeek = 0;
904
- break;
905
- case 'zh-tw':
906
- days[0] = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'];
907
- break;
908
- }
888
+ switch (language) {
889
+ case 'en-gb':
890
+ dateFormats = ['dddd, d MMMM yyyy', 'dd MMMM yyyy', 'dd/MM/yyyy', 'MMMM yyyy', 'd MMMM', 'd MMM'];
891
+ break;
892
+ case 'fr-ca':
893
+ dateFormats[1] = 'MMM d yyyy';
894
+ dateFormats[2] = 'yyyy-MM-dd';
895
+ dateFormats[4] = 'MMMM d';
896
+ dateFormats[5] = 'MMM d';
897
+ firstDayOfWeek = 0;
898
+ break;
899
+ case 'fr-on':
900
+ dateFormats[0] = 'dddd\' le \'d MMMM yyyy';
901
+ dateFormats[1] = 'MMM d yyyy';
902
+ dateFormats[2] = 'yyyy-MM-dd';
903
+ firstDayOfWeek = 0;
904
+ break;
905
+ case 'zh-tw':
906
+ days[0] = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'];
907
+ break;
908
+ }
909
909
 
910
- const descriptor = {
911
- hour24: hour24,
912
- formats: {
913
- dateFormats: {
914
- 'full': dateFormats[0],
915
- 'medium': dateFormats[1],
916
- 'short': dateFormats[2],
917
- 'monthYear': dateFormats[3],
918
- 'monthDay': dateFormats[4],
919
- 'shortMonthDay': dateFormats[5],
920
- 'longDayOfWeek': 'dddd',
921
- 'shortDayOfWeek': 'ddd',
922
- 'longMonth': 'MMMM',
923
- 'shortMonth': 'MMM'
910
+ const descriptor = {
911
+ hour24: hour24,
912
+ formats: {
913
+ dateFormats: {
914
+ 'full': dateFormats[0],
915
+ 'medium': dateFormats[1],
916
+ 'short': dateFormats[2],
917
+ 'monthYear': dateFormats[3],
918
+ 'monthDay': dateFormats[4],
919
+ 'shortMonthDay': dateFormats[5],
920
+ 'longDayOfWeek': 'dddd',
921
+ 'shortDayOfWeek': 'ddd',
922
+ 'longMonth': 'MMMM',
923
+ 'shortMonth': 'MMM'
924
+ },
925
+ timeFormats: {
926
+ 'full': fullTimeFormat,
927
+ 'medium': timeFormat,
928
+ 'short': timeFormat
929
+ }
924
930
  },
925
- timeFormats: {
926
- 'full': fullTimeFormat,
927
- 'medium': timeFormat,
928
- 'short': timeFormat
931
+ calendar: {
932
+ firstDayOfWeek: firstDayOfWeek,
933
+ weekendStartDay: weekendStartDay,
934
+ weekendEndDay: weekendEndDay,
935
+ months: {
936
+ short: months[1],
937
+ long: months[0]
938
+ },
939
+ days: {
940
+ narrow: days[2],
941
+ short: days[1],
942
+ long: days[0]
943
+ },
944
+ dayPeriods: { am: dayPeriods[0], pm: dayPeriods[1] }
929
945
  }
930
- },
931
- calendar: {
932
- firstDayOfWeek: firstDayOfWeek,
933
- weekendStartDay: weekendStartDay,
934
- weekendEndDay: weekendEndDay,
935
- months: {
936
- short: months[1],
937
- long: months[0]
938
- },
939
- days: {
940
- narrow: days[2],
941
- short: days[1],
942
- long: days[0]
943
- },
944
- dayPeriods: { am: dayPeriods[0], pm: dayPeriods[1] }
945
- }
946
- };
946
+ };
947
947
 
948
- if (settings.overrides.date) {
949
- merge(descriptor, settings.overrides.date);
950
- }
948
+ if (settings.overrides.date) {
949
+ merge(descriptor, settings.overrides.date);
950
+ }
951
951
 
952
- return descriptor;
952
+ return descriptor;
953
953
 
954
+ });
954
955
  }
955
956
 
956
957
  export function formatTime(date, options) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@brightspace-ui/intl",
3
- "version": "3.13.2",
3
+ "version": "3.14.0",
4
4
  "description": "Internationalization APIs for number, date, time and file size formatting and parsing in D2L Brightspace.",
5
5
  "main": "lib/number.js",
6
6
  "scripts": {
@@ -38,11 +38,11 @@
38
38
  "devDependencies": {
39
39
  "@babel/core": "^7",
40
40
  "@babel/eslint-parser": "^7",
41
- "@web/dev-server": "^0.2",
41
+ "@web/dev-server": "^0.3",
42
42
  "chai": "^4",
43
43
  "concurrently": "^8",
44
44
  "eslint": "^8",
45
- "eslint-config-brightspace": "^0.21",
45
+ "eslint-config-brightspace": "^0.25",
46
46
  "http-server": "^14.0",
47
47
  "mocha": "^10",
48
48
  "mocha-headless-chrome": "^4"