Skip to content

Commit 5c32052

Browse files
committed
feat(weekStart): adding weekStart property to define when the week should start
closes #11
1 parent 9f70c79 commit 5c32052

File tree

5 files changed

+83
-16
lines changed

5 files changed

+83
-16
lines changed

dist/datepickk.js

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
var languages = {
1818
no: {
1919
monthNames:['Januar','Februar','Mars','April','Mai','Juni','Juli','August','September','Oktober','November','Desember'],
20-
dayNames:['ma','ti','on','to','fr','lø','sø'],
20+
dayNames:['sø','ma','ti','on','to','fr','lø'],
2121
weekStart:1
2222
},
2323
en: {
@@ -27,7 +27,7 @@
2727
},
2828
de: {
2929
monthNames:['Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember'],
30-
dayNames:['Mo','Di','Mi','Do','Fr','Sa','So'],
30+
dayNames:['So','Mo','Di','Mi','Do','Fr','Sa'],
3131
weekStart:1
3232
}
3333
};
@@ -60,18 +60,22 @@
6060
var startDate = null;
6161
var minDate = null;
6262
var maxDate = null;
63+
var weekStart = null;
6364
var locked = false;
6465

6566
function generateDaynames(){
6667
that.el.days.innerHTML = '';
68+
var ws = (weekStart !== null) ? weekStart : languages[lang].weekStart;
6769
if(daynames){
6870
for(var x = 0;x<months && x<3;x++){
6971
var weekEl = document.createElement('div');
7072
weekEl.setAttribute('class','d-week');
7173
for(var i = 0; i < 7;i++){
74+
var dayNameIndex = (i + ws > languages[lang].dayNames.length - 1) ? i + ws - languages[lang].dayNames.length : i + ws;
75+
7276
var dayEl = document.createElement('div');
7377
var dayTextEl = document.createElement('p');
74-
dayTextEl.innerHTML = languages[lang].dayNames[i];
78+
dayTextEl.innerHTML = languages[lang].dayNames[dayNameIndex];
7579

7680
dayEl.appendChild(dayTextEl);
7781
weekEl.appendChild(dayEl);
@@ -213,18 +217,18 @@
213217

214218
function generateDates(year,month){
215219
var monthElements = that.el.querySelectorAll('.d-table');
216-
var weekStart = languages[lang].weekStart;
220+
var ws = (weekStart !== null) ? weekStart : languages[lang].weekStart;
217221

218222
[].slice.call(that.el.querySelectorAll('.d-table')).forEach(function(element, index) {
219223
var days = new Date(year,month + index,0).getDate();
220224
var daysLast = new Date(year,month + index - 1,0).getDate();
221225
var startDay = new Date(year,month + index - 1,1).getDay();
222226
var startDate = null;
223227
var endDate = null;
224-
if(startDay - weekStart < 0){
225-
startDay = 7 - weekStart;
228+
if(startDay - ws < 0){
229+
startDay = 7 - ws;
226230
}else{
227-
startDay -= weekStart;
231+
startDay -= ws;
228232
}
229233
var monthText = languages[lang].monthNames[parseMonth(month - 1 + index)];
230234
element.setAttribute('data-month',monthText);
@@ -750,6 +754,20 @@
750754
}
751755
}
752756
},
757+
"weekStart": {
758+
get: function(){
759+
return (weekStart !== null) ? weekStart : languages[lang].weekStart;
760+
},
761+
set: function(x){
762+
if(typeof x == 'number' && x > -1 && x < 7){
763+
weekStart = x;
764+
generateDaynames();
765+
setDate();
766+
}else{
767+
console.error('weekStart must be a number between 0 and 6');
768+
}
769+
}
770+
},
753771
"months": {
754772
get: function(){
755773
return months;

0 commit comments

Comments
 (0)