complete api section, add check for instanceof Date

This commit is contained in:
t1m0n 2015-11-26 23:15:32 +03:00
parent 02e887275b
commit 3311a1f5a1
6 changed files with 141 additions and 11 deletions

View File

@ -292,6 +292,8 @@ var Datepicker;
var d = this.parsedDate, var d = this.parsedDate,
newDate = ''; newDate = '';
if (!(date instanceof Date)) return;
if (this.view == 'days') { if (this.view == 'days') {
if (date.getMonth() != d.month && this.opts.moveToOtherMonthsOnSelect) { if (date.getMonth() != d.month && this.opts.moveToOtherMonthsOnSelect) {
newDate = new Date(date.getFullYear(), date.getMonth(), 1); newDate = new Date(date.getFullYear(), date.getMonth(), 1);
@ -338,6 +340,8 @@ var Datepicker;
var selected = this.selectedDates, var selected = this.selectedDates,
_this = this; _this = this;
if (!(date instanceof Date)) return;
return selected.some(function (curDate, i) { return selected.some(function (curDate, i) {
if (Datepicker.isSame(curDate, date)) { if (Datepicker.isSame(curDate, date)) {
selected.splice(i, 1); selected.splice(i, 1);
@ -567,6 +571,8 @@ var Datepicker;
}, },
set date (val) { set date (val) {
if (!(val instanceof Date)) return;
this.currentDate = val; this.currentDate = val;
if (this.inited && !this.silent) { if (this.inited && !this.silent) {

File diff suppressed because one or more lines are too long

View File

@ -102,7 +102,27 @@ $('.my-datepicker').datepicker({
} }
} }
} }
})</code></pre></div></article></article></div></main></div><script>var $code = $('code'); })
</code></pre></div></article><article><h2>API</h2><p>Досутп к экземпляру плагина осуществляется через<span class="example-inline"><code>data</code></span>атрибут.</p><pre class="example-code"><code class="js">var myDatepicker = $('#my-elem').datepicker().data('datepicker');
myDatepicker.show();
</code></pre><div class="param"><header class="param-header"><h3>show()</h3></header><p>Показывает календарь.</p></div><div class="param"><header class="param-header"><h3>hide()</h3></header><p>Скрывает календарь.</p></div><div class="param"><header class="param-header"><h3>next()</h3></header><p>Переходит на следующий месяц если вид days, на следующий год если months, и следующую декаду если years.</p></div><div class="param"><header class="param-header"><h3>prev()</h3></header><p>Переходит на предыдщуий месяц если вид days, на предыдущий год если months, и предыдущую декаду если years.</p></div><div class="param"><header class="param-header"><h3>selectDate(date)</h3></header><ul><li><span class="param-inline"><strong>date</strong><i>Date</i></span>- дата в формате JavaScript<span class="example-inline"><code class="js">Date()</code></span></li></ul><p>Выбирает переданную дату. Если<span class="example-inline"><code class="js">{multipleDates: false}</code></span>и уже есть активная дата, то она будет деактивирована. Если<span class="example-inline"><code class="js">{multipleDates: true}</code></span>то будет добавлена еще одна активная дата.</p></div><div class="param"><header class="param-header"><h3>removeDate(date)</h3></header><ul><li><span class="param-inline"><strong>date</strong><i>Date</i></span>- дата в формате JavaScript<span class="example-inline"><code class="js">Date()</code></span></li></ul><p>Снимает выделение с переданной даты.</p></div><div class="param"><header class="param-header"><h3>update(field[, value])</h3></header><ul><li><span class="param-inline"><strong>field</strong><i>string|object</i></span>- название поля значение которого нужно обновить.</li><li><span class="param-inline"><strong>field</strong><i>string|*</i></span>- новое значение параметра</li></ul><p>Обновление опций календаря, после вызова метода он автоматически перерисуется.
Можно обновлять сразу же несколько параметров, для этого нужно передать объект с требуемыми полями.
</p><pre class="example-code"><code class="js">var datepicker = $('#my-elem').datepicker().data('datepicker');
// Обновление одного параметра
datepicker.update('minDate', new Date())
// Обновление нескольких параметров
datepicker.update({
position: "top right",
maxDate: new Date(),
todayButton: true
})
</code></pre></div><div class="param"><header class="param-header"><h3>view</h3></header><p>Устанавливает новое представление для календаря.</p><pre class="example-code"><code class="js">datepicker.view = 'months';
</code></pre></div><div class="param"><header class="param-header"><h3>date</h3></header><p>Устанавливает новую отображаемую дату, нужно передать JavaScript<span class="example-inline"><code>Date()</code></span></p><pre class="example-code"><code class="js">datepicker.date = new Date();
</code></pre></div><div id="from" class="datepicker-here"></div><div id="to" class="datepicker-here"></div></article></article></div></main></div><script>var $code = $('code');
$code.each(function (i, el) { $code.each(function (i, el) {
hljs.highlightBlock(el); hljs.highlightBlock(el);
})</script></body></html> })</script></body></html>

View File

@ -1,12 +1,14 @@
mixin param-header(name, type, defaults) mixin param-header(name, type, defaults)
header.param-header header.param-header
h3= name h3= name
p.param-header--row if type
span.param-header--label Тип: p.param-header--row
+example-inline(type, 'js') span.param-header--label Тип:
p.param-header--row +example-inline(type, 'js')
span.param-header--label Значение по умполчанию: if (defaults || block)
if defaults p.param-header--row
+example-inline(defaults, 'js') span.param-header--label Значение по умполчанию:
if block if defaults
block +example-inline(defaults, 'js')
if block
block

View File

@ -475,3 +475,99 @@ block content
} }
} }
}) })
article
h2 API
p
| Досутп к экземпляру плагина осуществляется через
+example-inline('data')
| атрибут.
+example-code('js').
var myDatepicker = $('#my-elem').datepicker().data('datepicker');
myDatepicker.show();
.param
+param-header('show()')
p Показывает календарь.
.param
+param-header('hide()')
p Скрывает календарь.
.param
+param-header('next()')
p Переходит на следующий месяц если вид days, на следующий год если months, и следующую декаду если years.
.param
+param-header('prev()')
p Переходит на предыдщуий месяц если вид days, на предыдущий год если months, и предыдущую декаду если years.
.param
+param-header('selectDate(date)')
ul
li
+param('date','Date')
| - дата в формате JavaScript
+example-inline('Date()', 'js')
p
| Выбирает переданную дату. Если
+example-inline('{multipleDates: false}','js')
| и уже есть активная дата, то она будет деактивирована. Если
+example-inline('{multipleDates: true}','js')
| то будет добавлена еще одна активная дата.
.param
+param-header('removeDate(date)')
ul
li
+param('date','Date')
| - дата в формате JavaScript
+example-inline('Date()', 'js')
p
| Снимает выделение с переданной даты.
.param
+param-header('update(field[, value])')
ul
li
+param('field','string|object')
| - название поля значение которого нужно обновить.
li
+param('field','string|*')
| - новое значение параметра
p.
Обновление опций календаря, после вызова метода он автоматически перерисуется.
Можно обновлять сразу же несколько параметров, для этого нужно передать объект с требуемыми полями.
+example-code('js').
var datepicker = $('#my-elem').datepicker().data('datepicker');
// Обновление одного параметра
datepicker.update('minDate', new Date())
// Обновление нескольких параметров
datepicker.update({
position: "top right",
maxDate: new Date(),
todayButton: true
})
.param
+param-header('view')
p Устанавливает новое представление для календаря.
+example-code('js').
datepicker.view = 'months';
.param
+param-header('date')
p
| Устанавливает новую отображаемую дату, нужно передать JavaScript
+example-inline('Date()')
+example-code('js').
datepicker.date = new Date();
.datepicker-here#from
.datepicker-here#to

View File

@ -292,6 +292,8 @@ var Datepicker;
var d = this.parsedDate, var d = this.parsedDate,
newDate = ''; newDate = '';
if (!(date instanceof Date)) return;
if (this.view == 'days') { if (this.view == 'days') {
if (date.getMonth() != d.month && this.opts.moveToOtherMonthsOnSelect) { if (date.getMonth() != d.month && this.opts.moveToOtherMonthsOnSelect) {
newDate = new Date(date.getFullYear(), date.getMonth(), 1); newDate = new Date(date.getFullYear(), date.getMonth(), 1);
@ -338,6 +340,8 @@ var Datepicker;
var selected = this.selectedDates, var selected = this.selectedDates,
_this = this; _this = this;
if (!(date instanceof Date)) return;
return selected.some(function (curDate, i) { return selected.some(function (curDate, i) {
if (Datepicker.isSame(curDate, date)) { if (Datepicker.isSame(curDate, date)) {
selected.splice(i, 1); selected.splice(i, 1);
@ -567,6 +571,8 @@ var Datepicker;
}, },
set date (val) { set date (val) {
if (!(val instanceof Date)) return;
this.currentDate = val; this.currentDate = val;
if (this.inited && !this.silent) { if (this.inited && !this.silent) {