kalendae_assets 0.1.0 → 0.1.1
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.
- data/.gitignore +1 -0
- data/.travis.yml +4 -0
- data/README.md +10 -2
- data/Rakefile +9 -0
- data/kalendae_assets.gemspec +5 -2
- data/lib/kalendae_assets/version.rb +1 -1
- data/test/dummy/README.rdoc +261 -0
- data/test/dummy/Rakefile +7 -0
- data/test/dummy/app/assets/javascripts/application.js +16 -0
- data/test/dummy/app/assets/stylesheets/application.css +13 -0
- data/test/dummy/app/controllers/application_controller.rb +3 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/mailers/.gitkeep +0 -0
- data/test/dummy/app/models/.gitkeep +0 -0
- data/test/dummy/app/views/layouts/application.html.erb +14 -0
- data/test/dummy/config/application.rb +56 -0
- data/test/dummy/config/boot.rb +10 -0
- data/test/dummy/config/database.yml +25 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +37 -0
- data/test/dummy/config/environments/production.rb +67 -0
- data/test/dummy/config/environments/test.rb +37 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/inflections.rb +15 -0
- data/test/dummy/config/initializers/mime_types.rb +5 -0
- data/test/dummy/config/initializers/secret_token.rb +7 -0
- data/test/dummy/config/initializers/session_store.rb +8 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +5 -0
- data/test/dummy/config/routes.rb +58 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/db/test.sqlite3 +0 -0
- data/test/dummy/lib/assets/.gitkeep +0 -0
- data/test/dummy/log/.gitkeep +0 -0
- data/test/dummy/public/404.html +26 -0
- data/test/dummy/public/422.html +26 -0
- data/test/dummy/public/500.html +25 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/dummy/script/rails +6 -0
- data/test/integration/kalendae_assets_integration_spec.rb +14 -0
- data/test/lib/kalendae_assets_spec.rb +11 -0
- data/test/spec_helper.rb +16 -0
- data/vendor/assets/javascripts/kalendae.js +94 -94
- data/vendor/assets/stylesheets/kalendae.css +2 -1
- metadata +116 -10
@@ -12,7 +12,7 @@ var today;
|
|
12
12
|
var Kalendae = function (targetElement, options) {
|
13
13
|
//if the first argument isn't an element and isn't a string, assume that it is the options object
|
14
14
|
if (!(targetElement instanceof Element || typeof targetElement === 'string')) options = targetElement;
|
15
|
-
|
15
|
+
|
16
16
|
var self = this,
|
17
17
|
classes = self.classes,
|
18
18
|
opts = self.settings = util.merge(self.defaults, {attachTo:targetElement}, options || {}),
|
@@ -29,14 +29,14 @@ var Kalendae = function (targetElement, options) {
|
|
29
29
|
$span,
|
30
30
|
i = 0,
|
31
31
|
j = opts.months;
|
32
|
-
|
32
|
+
|
33
33
|
//generate the column headers (Su, Mo, Tu, etc)
|
34
34
|
i = 7;
|
35
35
|
while (i--) {
|
36
36
|
columnHeaders.push( startDay.format('ddd').substr(0,opts.columnHeaderLength) );
|
37
37
|
startDay.add('days',1);
|
38
38
|
}
|
39
|
-
|
39
|
+
|
40
40
|
//setup publish/subscribe and apply any subscriptions passed in settings
|
41
41
|
MinPubSub(self);
|
42
42
|
if (typeof opts.subscribe === 'object') {
|
@@ -44,7 +44,7 @@ var Kalendae = function (targetElement, options) {
|
|
44
44
|
self.subscribe(i, opts.subscribe[i]);
|
45
45
|
}
|
46
46
|
}
|
47
|
-
|
47
|
+
|
48
48
|
//process default selected dates
|
49
49
|
self._sel = [];
|
50
50
|
if (!!opts.selected) self.setSelected(opts.selected, false);
|
@@ -58,8 +58,8 @@ var Kalendae = function (targetElement, options) {
|
|
58
58
|
vsd = moment();
|
59
59
|
}
|
60
60
|
self.viewStartDate = vsd.date(1);
|
61
|
-
|
62
|
-
|
61
|
+
|
62
|
+
|
63
63
|
if (typeof opts.blackout === 'function') {
|
64
64
|
self.blackout = opts.blackout;
|
65
65
|
} else if (!!opts.blackout) {
|
@@ -69,34 +69,34 @@ var Kalendae = function (targetElement, options) {
|
|
69
69
|
if (input < 1 || !self._sel || self._sel.length < 1) return false;
|
70
70
|
var i = bdates.length;
|
71
71
|
while (i--) if (bdates[i].valueOf() === input) return true;
|
72
|
-
return false;
|
72
|
+
return false;
|
73
73
|
}
|
74
74
|
} else {
|
75
75
|
self.blackout = function () {return false;}
|
76
76
|
}
|
77
|
-
|
78
|
-
|
77
|
+
|
78
|
+
|
79
79
|
self.direction = self.directions[opts.direction] ? self.directions[opts.direction] : self.directions['any'];
|
80
|
-
|
81
|
-
|
80
|
+
|
81
|
+
|
82
82
|
//for the total months setting, generate N calendar views and add them to the container
|
83
83
|
j = Math.max(opts.months,1);
|
84
84
|
while (j--) {
|
85
85
|
$cal = util.make('div', {'class':classes.calendar}, $container);
|
86
|
-
|
86
|
+
|
87
87
|
$cal.setAttribute('data-cal-index', j);
|
88
88
|
if (opts.months > 1) {
|
89
89
|
if (j == Math.max(opts.months-1,1)) util.addClassName($cal, classes.monthFirst);
|
90
90
|
else if (j === 0) util.addClassName($cal, classes.monthLast);
|
91
91
|
else util.addClassName($cal, classes.monthMiddle);
|
92
92
|
}
|
93
|
-
|
93
|
+
|
94
94
|
//title bar
|
95
95
|
$title = util.make('div', {'class':classes.title}, $cal);
|
96
96
|
util.make('a', {'class':classes.previous}, $title); //previous button
|
97
97
|
util.make('a', {'class':classes.next}, $title); //next button
|
98
98
|
$caption = util.make('span', {'class':classes.caption}, $title); //title caption
|
99
|
-
|
99
|
+
|
100
100
|
//column headers
|
101
101
|
$header = util.make('div', {'class':classes.header}, $cal);
|
102
102
|
i = 0;
|
@@ -118,12 +118,12 @@ var Kalendae = function (targetElement, options) {
|
|
118
118
|
caption:$caption,
|
119
119
|
days:dayNodes
|
120
120
|
});
|
121
|
-
|
121
|
+
|
122
122
|
if (j) util.make('div', {'class':classes.monthSeparator}, $container);
|
123
123
|
}
|
124
|
-
|
124
|
+
|
125
125
|
self.draw();
|
126
|
-
|
126
|
+
|
127
127
|
util.addEvent($container, 'mousedown', function (event, target) {
|
128
128
|
var clickedDate;
|
129
129
|
if (util.hasClassName(target, classes.next)) {
|
@@ -132,8 +132,8 @@ var Kalendae = function (targetElement, options) {
|
|
132
132
|
self.viewStartDate.add('months',1);
|
133
133
|
self.draw();
|
134
134
|
}
|
135
|
-
return false;
|
136
|
-
|
135
|
+
return false;
|
136
|
+
|
137
137
|
} else if (util.hasClassName(target, classes.previous)) {
|
138
138
|
//PREVIOUS MONTH BUTTON
|
139
139
|
if (self.publish('view-changed', self, ['previous']) !== false) {
|
@@ -141,13 +141,13 @@ var Kalendae = function (targetElement, options) {
|
|
141
141
|
self.draw();
|
142
142
|
}
|
143
143
|
return false;
|
144
|
-
|
145
|
-
|
144
|
+
|
145
|
+
|
146
146
|
} else if (util.hasClassName(target.parentNode, classes.days) && util.hasClassName(target, classes.dayActive) && (clickedDate = target.getAttribute('data-date'))) {
|
147
147
|
//DAY CLICK
|
148
148
|
clickedDate = moment(clickedDate, opts.dayAttributeFormat);
|
149
149
|
if (self.publish('date-clicked', self, [clickedDate]) !== false) {
|
150
|
-
|
150
|
+
|
151
151
|
switch (opts.mode) {
|
152
152
|
case 'multiple':
|
153
153
|
if (!self.addSelected(clickedDate)) self.removeSelected(clickedDate);
|
@@ -164,16 +164,16 @@ var Kalendae = function (targetElement, options) {
|
|
164
164
|
|
165
165
|
}
|
166
166
|
return false;
|
167
|
-
|
167
|
+
|
168
168
|
}
|
169
169
|
return false;
|
170
170
|
});
|
171
|
-
|
171
|
+
|
172
172
|
|
173
173
|
if (!!(opts.attachTo = util.$(opts.attachTo))) {
|
174
174
|
opts.attachTo.appendChild($container);
|
175
175
|
}
|
176
|
-
|
176
|
+
|
177
177
|
};
|
178
178
|
|
179
179
|
Kalendae.prototype = {
|
@@ -193,10 +193,10 @@ Kalendae.prototype = {
|
|
193
193
|
titleFormat: 'MMMM, YYYY', /* format mask for month titles. See momentjs.com for rules */
|
194
194
|
dayNumberFormat: 'D', /* format mask for individual days */
|
195
195
|
dayAttributeFormat: 'YYYY-MM-DD', /* format mask for the data-date attribute set on every span */
|
196
|
-
parseSplitDelimiter: /,\s*|\s
|
196
|
+
parseSplitDelimiter: /,\s*|\s+-\s+/, /* regex to use for splitting multiple dates from a passed string */
|
197
197
|
rangeDelimiter: ' - ', /* string to use between dates when outputting in range mode */
|
198
198
|
multipleDelimiter: ', ', /* string to use between dates when outputting in multiple mode */
|
199
|
-
|
199
|
+
|
200
200
|
dateClassMap: {}
|
201
201
|
},
|
202
202
|
classes : {
|
@@ -218,15 +218,15 @@ Kalendae.prototype = {
|
|
218
218
|
dayToday :'k-today',
|
219
219
|
monthSeparator :'k-separator'
|
220
220
|
},
|
221
|
-
|
221
|
+
|
222
222
|
directions: {
|
223
|
-
'past' :function (date) {return moment(date).valueOf() >= today.valueOf();},
|
224
|
-
'today-past' :function (date) {return moment(date).valueOf() > today.valueOf();},
|
225
|
-
'any' :function (date) {return false;},
|
226
|
-
'today-future' :function (date) {return moment(date).valueOf() < today.valueOf();},
|
223
|
+
'past' :function (date) {return moment(date).valueOf() >= today.valueOf();},
|
224
|
+
'today-past' :function (date) {return moment(date).valueOf() > today.valueOf();},
|
225
|
+
'any' :function (date) {return false;},
|
226
|
+
'today-future' :function (date) {return moment(date).valueOf() < today.valueOf();},
|
227
227
|
'future' :function (date) {return moment(date).valueOf() <= today.valueOf();}
|
228
228
|
},
|
229
|
-
|
229
|
+
|
230
230
|
getSelectedAsDates : function () {
|
231
231
|
var out = [];
|
232
232
|
var i=0, c = this._sel.length;
|
@@ -235,7 +235,7 @@ Kalendae.prototype = {
|
|
235
235
|
}
|
236
236
|
return out;
|
237
237
|
},
|
238
|
-
|
238
|
+
|
239
239
|
getSelectedAsText : function (format) {
|
240
240
|
var out = [];
|
241
241
|
var i=0, c = this._sel.length;
|
@@ -244,7 +244,7 @@ Kalendae.prototype = {
|
|
244
244
|
}
|
245
245
|
return out;
|
246
246
|
},
|
247
|
-
|
247
|
+
|
248
248
|
getSelectedRaw : function () {
|
249
249
|
var out = [];
|
250
250
|
var i=0, c = this._sel.length;
|
@@ -253,7 +253,7 @@ Kalendae.prototype = {
|
|
253
253
|
}
|
254
254
|
return out;
|
255
255
|
},
|
256
|
-
|
256
|
+
|
257
257
|
getSelected : function (format) {
|
258
258
|
var sel = this.getSelectedAsText(format);
|
259
259
|
switch (this.settings.mode) {
|
@@ -270,7 +270,7 @@ Kalendae.prototype = {
|
|
270
270
|
return sel[0];
|
271
271
|
}
|
272
272
|
},
|
273
|
-
|
273
|
+
|
274
274
|
isSelected : function (input) {
|
275
275
|
input = moment(input).hours(0).minutes(0).seconds(0).milliseconds(0).valueOf();
|
276
276
|
if (input < 1 || !this._sel || this._sel.length < 1) return false;
|
@@ -304,14 +304,14 @@ Kalendae.prototype = {
|
|
304
304
|
|
305
305
|
return false;
|
306
306
|
},
|
307
|
-
|
307
|
+
|
308
308
|
setSelected : function (input, draw) {
|
309
309
|
this._sel = parseDates(input, this.settings.parseSplitDelimiter, this.settings.format);
|
310
310
|
this._sel.sort(function (a,b) {return a.valueOf() - b.valueOf();});
|
311
311
|
|
312
312
|
if (draw !== false) this.draw();
|
313
313
|
},
|
314
|
-
|
314
|
+
|
315
315
|
addSelected : function (date, draw) {
|
316
316
|
date = moment(date).hours(0).minutes(0).seconds(0).milliseconds(0);
|
317
317
|
switch (this.settings.mode) {
|
@@ -338,7 +338,7 @@ Kalendae.prototype = {
|
|
338
338
|
if (draw !== false) this.draw();
|
339
339
|
return true;
|
340
340
|
},
|
341
|
-
|
341
|
+
|
342
342
|
removeSelected : function (date, draw) {
|
343
343
|
date = moment(date).hours(0).minutes(0).seconds(0).milliseconds(0).valueOf();
|
344
344
|
var i = this._sel.length;
|
@@ -352,7 +352,7 @@ Kalendae.prototype = {
|
|
352
352
|
}
|
353
353
|
return false;
|
354
354
|
},
|
355
|
-
|
355
|
+
|
356
356
|
draw : function draw() {
|
357
357
|
// return;
|
358
358
|
var month = moment(this.viewStartDate),
|
@@ -368,7 +368,7 @@ Kalendae.prototype = {
|
|
368
368
|
opts = this.settings;
|
369
369
|
|
370
370
|
c = this.calendars.length;
|
371
|
-
|
371
|
+
|
372
372
|
var viewDelta = ({
|
373
373
|
'past' : c-1,
|
374
374
|
'today-past' : c-1,
|
@@ -376,12 +376,12 @@ Kalendae.prototype = {
|
|
376
376
|
'today-future' : 0,
|
377
377
|
'future' : 0
|
378
378
|
})[this.settings.direction];
|
379
|
-
|
379
|
+
|
380
380
|
if (viewDelta) month = month.subtract({M:viewDelta});
|
381
381
|
|
382
382
|
do {
|
383
383
|
day = moment(month).date(1);
|
384
|
-
day.day( day.day() < this.settings.weekStart ? this.settings.weekStart-7 : this.settings.weekStart);
|
384
|
+
day.day( day.day() < this.settings.weekStart ? this.settings.weekStart-7 : this.settings.weekStart);
|
385
385
|
//if the first day of the month is less than our week start, back up a week
|
386
386
|
|
387
387
|
cal = this.calendars[i];
|
@@ -407,7 +407,7 @@ Kalendae.prototype = {
|
|
407
407
|
$span.innerHTML = day.format(opts.dayNumberFormat);
|
408
408
|
$span.className = klass.join(' ');
|
409
409
|
$span.setAttribute('data-date', dateString);
|
410
|
-
|
410
|
+
|
411
411
|
|
412
412
|
day.add('days',1);
|
413
413
|
} while (++j < 42);
|
@@ -419,19 +419,19 @@ Kalendae.prototype = {
|
|
419
419
|
|
420
420
|
var parseDates = function (input, delimiter, format) {
|
421
421
|
var output = [];
|
422
|
-
|
422
|
+
|
423
423
|
if (typeof input === 'string') {
|
424
|
-
input = input.split(delimiter);
|
424
|
+
input = input.split(delimiter);
|
425
425
|
} else if (!util.isArray(input)) {
|
426
426
|
input = [input];
|
427
427
|
}
|
428
|
-
|
428
|
+
|
429
429
|
c = input.length;
|
430
430
|
i = 0;
|
431
431
|
do {
|
432
432
|
if (input[i]) output.push( moment(input[i], format).hours(0).minutes(0).seconds(0).milliseconds(0) );
|
433
433
|
} while (++i < c);
|
434
|
-
|
434
|
+
|
435
435
|
return output;
|
436
436
|
}
|
437
437
|
|
@@ -445,11 +445,11 @@ var util = Kalendae.util = {
|
|
445
445
|
$: function (elem) {
|
446
446
|
return (typeof elem == 'string') ? document.getElementById(elem) : elem;
|
447
447
|
},
|
448
|
-
|
448
|
+
|
449
449
|
$$: function (selector) {
|
450
450
|
return document.querySelectorAll(selector);
|
451
451
|
},
|
452
|
-
|
452
|
+
|
453
453
|
make: function (tagName, attributes, attach) {
|
454
454
|
var k, e = document.createElement(tagName);
|
455
455
|
if (!!attributes) for (k in attributes) if (attributes.hasOwnProperty(k)) e.setAttribute(k, attributes[k]);
|
@@ -463,7 +463,7 @@ var util = Kalendae.util = {
|
|
463
463
|
// shamelessly copied from jQuery
|
464
464
|
return elem.offsetWidth > 0 || elem.offsetHeight > 0;
|
465
465
|
},
|
466
|
-
|
466
|
+
|
467
467
|
domReady:function (f){/in/.test(document.readyState) ? setTimeout(function() {util.domReady(f);},9) : f()},
|
468
468
|
|
469
469
|
// Adds a listener callback to a DOM element which is fired on a specified
|
@@ -499,7 +499,7 @@ var util = Kalendae.util = {
|
|
499
499
|
elem.removeEventListener(event, listener, false);
|
500
500
|
}
|
501
501
|
},
|
502
|
-
|
502
|
+
|
503
503
|
hasClassName: function(elem, className) { //copied and modified from Prototype.js
|
504
504
|
if (!(elem = util.$(elem))) return false;
|
505
505
|
var eClassName = elem.className;
|
@@ -520,14 +520,14 @@ var util = Kalendae.util = {
|
|
520
520
|
var x = elem.offsetLeft,
|
521
521
|
y = elem.offsetTop,
|
522
522
|
r = {};
|
523
|
-
|
523
|
+
|
524
524
|
if (!isInner) {
|
525
525
|
while ((elem = elem.offsetParent)) {
|
526
526
|
x += elem.offsetLeft;
|
527
527
|
y += elem.offsetTop;
|
528
528
|
}
|
529
529
|
}
|
530
|
-
|
530
|
+
|
531
531
|
r[0] = r.left = x;
|
532
532
|
r[1] = r.top = y;
|
533
533
|
return r;
|
@@ -540,15 +540,15 @@ var util = Kalendae.util = {
|
|
540
540
|
getWidth: function (elem) {
|
541
541
|
return elem.offsetWidth || elem.scrollWidth;
|
542
542
|
},
|
543
|
-
|
544
|
-
|
545
|
-
// TEXT FUNCTIONS
|
546
|
-
|
543
|
+
|
544
|
+
|
545
|
+
// TEXT FUNCTIONS
|
546
|
+
|
547
547
|
trimString: function (input) {
|
548
548
|
return input.replace(/^\s+/, '').replace(/\s+$/, '');
|
549
549
|
},
|
550
|
-
|
551
|
-
|
550
|
+
|
551
|
+
|
552
552
|
// OBJECT FUNCTIONS
|
553
553
|
|
554
554
|
merge: function () {
|
@@ -556,7 +556,7 @@ var util = Kalendae.util = {
|
|
556
556
|
* Syntax: util.extend([true], object1, object2, ... objectN)
|
557
557
|
* If first argument is true, function will merge recursively.
|
558
558
|
*/
|
559
|
-
|
559
|
+
|
560
560
|
var deep = (arguments[0]===true),
|
561
561
|
d = {},
|
562
562
|
i = deep?1:0;
|
@@ -576,15 +576,15 @@ var util = Kalendae.util = {
|
|
576
576
|
}
|
577
577
|
return d;
|
578
578
|
},
|
579
|
-
|
579
|
+
|
580
580
|
isArray: function (array) {
|
581
581
|
return !(
|
582
|
-
!array ||
|
583
|
-
(!array.length || array.length === 0) ||
|
584
|
-
typeof array !== 'object' ||
|
585
|
-
!array.constructor ||
|
586
|
-
array.nodeType ||
|
587
|
-
array.item
|
582
|
+
!array ||
|
583
|
+
(!array.length || array.length === 0) ||
|
584
|
+
typeof array !== 'object' ||
|
585
|
+
!array.constructor ||
|
586
|
+
array.nodeType ||
|
587
|
+
array.item
|
588
588
|
);
|
589
589
|
}
|
590
590
|
};
|
@@ -605,7 +605,7 @@ Kalendae.util.domReady(function () {
|
|
605
605
|
//otherwise, insert a flat calendar into the element.
|
606
606
|
new Kalendae({attachTo:e});
|
607
607
|
}
|
608
|
-
|
608
|
+
|
609
609
|
}
|
610
610
|
});
|
611
611
|
|
@@ -614,29 +614,29 @@ Kalendae.Input = function (targetElement, options) {
|
|
614
614
|
overwriteInput;
|
615
615
|
|
616
616
|
if (!$input || $input.tagName !== 'INPUT') throw "First argument for Kalendae.Input must be an <input> element or a valid element id.";
|
617
|
-
|
617
|
+
|
618
618
|
var self = this,
|
619
619
|
classes = self.classes
|
620
620
|
opts = self.settings = util.merge(self.defaults, options);
|
621
|
-
|
621
|
+
|
622
622
|
//force attachment to the body
|
623
623
|
opts.attachTo = window.document.body;
|
624
624
|
|
625
625
|
//if no override provided, use the input's contents
|
626
626
|
if (!opts.selected) opts.selected = $input.value;
|
627
627
|
else overwriteInput = true;
|
628
|
-
|
628
|
+
|
629
629
|
//call our parent constructor
|
630
630
|
Kalendae.call(self, opts);
|
631
|
-
|
631
|
+
|
632
632
|
if (overwriteInput) $input.value = self.getSelected();
|
633
|
-
|
633
|
+
|
634
634
|
var $container = self.container,
|
635
635
|
noclose = false;
|
636
|
-
|
636
|
+
|
637
637
|
$container.style.display = 'none';
|
638
638
|
util.addClassName($container, classes.positioned);
|
639
|
-
|
639
|
+
|
640
640
|
util.addEvent($container, 'mousedown', function (event, target) {
|
641
641
|
noclose = true; //IE8 doesn't obey event blocking when it comes to focusing, so we have to do this shit.
|
642
642
|
});
|
@@ -648,7 +648,7 @@ Kalendae.Input = function (targetElement, options) {
|
|
648
648
|
self.setSelected(this.value);
|
649
649
|
self.show();
|
650
650
|
});
|
651
|
-
|
651
|
+
|
652
652
|
util.addEvent($input, 'blur', function () {
|
653
653
|
if (noclose) {
|
654
654
|
noclose = false;
|
@@ -659,11 +659,11 @@ Kalendae.Input = function (targetElement, options) {
|
|
659
659
|
util.addEvent($input, 'keyup', function (event) {
|
660
660
|
self.setSelected(this.value);
|
661
661
|
});
|
662
|
-
|
662
|
+
|
663
663
|
self.subscribe('change', function () {
|
664
664
|
$input.value = self.getSelected();
|
665
665
|
});
|
666
|
-
|
666
|
+
|
667
667
|
};
|
668
668
|
|
669
669
|
Kalendae.Input.prototype = util.merge(Kalendae.prototype, {
|
@@ -675,15 +675,15 @@ Kalendae.Input.prototype = util.merge(Kalendae.prototype, {
|
|
675
675
|
}),
|
676
676
|
classes : util.merge(Kalendae.prototype.classes, {
|
677
677
|
positioned : 'k-floating'
|
678
|
-
|
678
|
+
|
679
679
|
}),
|
680
|
-
|
680
|
+
|
681
681
|
show : function () {
|
682
682
|
var $container = this.container,
|
683
683
|
style = $container.style,
|
684
684
|
$input = this.input,
|
685
685
|
pos = util.getPosition($input);
|
686
|
-
|
686
|
+
|
687
687
|
style.display = '';
|
688
688
|
switch (opts.side) {
|
689
689
|
case 'left':
|
@@ -705,13 +705,13 @@ Kalendae.Input.prototype = util.merge(Kalendae.prototype, {
|
|
705
705
|
style.top = (pos.top + util.getHeight($input) + this.settings.offsetTop) + 'px';
|
706
706
|
break;
|
707
707
|
}
|
708
|
-
|
708
|
+
|
709
709
|
},
|
710
|
-
|
710
|
+
|
711
711
|
hide : function () {
|
712
712
|
this.container.style.display = 'none';
|
713
713
|
}
|
714
|
-
|
714
|
+
|
715
715
|
});
|
716
716
|
|
717
717
|
|
@@ -728,22 +728,22 @@ var MinPubSub = function(d){
|
|
728
728
|
|
729
729
|
// the topic/subscription hash
|
730
730
|
var cache = d.c_ || {}; //check for "c_" cache for unit testing
|
731
|
-
|
731
|
+
|
732
732
|
d.publish = function(/* String */ topic, /* Object */ target, /* Array? */ args){
|
733
|
-
// summary:
|
733
|
+
// summary:
|
734
734
|
// Publish some data on a named topic.
|
735
735
|
// topic: String
|
736
736
|
// The channel to publish on
|
737
737
|
// args: Array?
|
738
738
|
// The data to publish. Each array item is converted into an ordered
|
739
|
-
// arguments on the subscribed functions.
|
739
|
+
// arguments on the subscribed functions.
|
740
740
|
//
|
741
741
|
// example:
|
742
742
|
// Publish stuff on '/some/topic'. Anything subscribed will be called
|
743
743
|
// with a function signature like: function(a,b,c){ ... }
|
744
744
|
//
|
745
745
|
// publish("/some/topic", ["a","b","c"]);
|
746
|
-
|
746
|
+
|
747
747
|
var subs = cache[topic],
|
748
748
|
len = subs ? subs.length : 0,
|
749
749
|
r;
|
@@ -761,13 +761,13 @@ var MinPubSub = function(d){
|
|
761
761
|
// topic: String
|
762
762
|
// The channel to subscribe to
|
763
763
|
// callback: Function
|
764
|
-
// The handler event. Anytime something is publish'ed on a
|
764
|
+
// The handler event. Anytime something is publish'ed on a
|
765
765
|
// subscribed channel, the callback will be called with the
|
766
766
|
// published array as ordered arguments.
|
767
767
|
//
|
768
768
|
// returns: Array
|
769
769
|
// A handle which can be used to unsubscribe this particular subscription.
|
770
|
-
//
|
770
|
+
//
|
771
771
|
// example:
|
772
772
|
// subscribe("/some/topic", function(a, b, c){ /* handle data */ });
|
773
773
|
|
@@ -789,11 +789,11 @@ var MinPubSub = function(d){
|
|
789
789
|
// example:
|
790
790
|
// var handle = subscribe("/some/topic", function(){});
|
791
791
|
// unsubscribe(handle);
|
792
|
-
|
792
|
+
|
793
793
|
var subs = cache[handle[0]],
|
794
794
|
callback = handle[1],
|
795
795
|
len = subs ? subs.length : 0;
|
796
|
-
|
796
|
+
|
797
797
|
while(len--){
|
798
798
|
if(subs[len] === callback){
|
799
799
|
subs.splice(len, 1);
|
@@ -71,6 +71,7 @@
|
|
71
71
|
text-align:right;
|
72
72
|
width:13px;
|
73
73
|
height:1.1em;
|
74
|
+
line-height:1em;
|
74
75
|
padding:2px 3px 2px 2px;
|
75
76
|
border:1px solid transparent;
|
76
77
|
border-radius:3px;
|
@@ -115,4 +116,4 @@
|
|
115
116
|
border-color:#666;
|
116
117
|
}
|
117
118
|
|
118
|
-
.kalendae span.k-out-of-month {color:#ddd;}
|
119
|
+
.kalendae span.k-out-of-month {color:#ddd;}
|