deku-datepicker
Advanced tools
Comparing version
{ | ||
"name": "deku-datepicker", | ||
"version": "0.1.1", | ||
"version": "0.9.0", | ||
"description": "Datepicker for deku", | ||
@@ -18,3 +18,3 @@ "license": "MIT", | ||
"test": "mocha", | ||
"prepublish": "babel lib/index.js -o src/index.js" | ||
"prepublish": "babel lib --out-dir src" | ||
}, | ||
@@ -29,2 +29,3 @@ "files": [ | ||
"moment": "^2.10.6", | ||
"ramda": "^0.17.1", | ||
"virtual-element": "^1.2.0" | ||
@@ -31,0 +32,0 @@ }, |
@@ -40,4 +40,14 @@ # deku-datepicker [](https://travis-ci.org/ulrikaugustsson/deku-datepicker) | ||
```js | ||
const DatePicker = createPicker([opts]); | ||
const DatePicker = createDatePicker([opts]); | ||
/* | ||
opts { | ||
yearPicker: <YearPicker />, | ||
monthPicker: <MonthPicker />, | ||
day: <Day />, | ||
dayPicker: <DayPicker />, | ||
chooseDayButton: <ChooseDayButton /> | ||
}; | ||
*/ | ||
<DatePicker | ||
@@ -47,12 +57,2 @@ callback={logDate} | ||
``` | ||
```js | ||
opts { | ||
yearPicker: <YearPicker />, | ||
monthPicker: <MonthPicker />, | ||
day: <Day />, | ||
dayPicker: <DayPicker />, | ||
chooseDayButton: <ChooseDayButton /> | ||
} | ||
``` | ||
Check source for examples. | ||
@@ -59,0 +59,0 @@ |
166
src/index.js
'use strict'; | ||
Object.defineProperty(exports, '__esModule', { | ||
value: true | ||
value: true | ||
}); | ||
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } | ||
var _virtualElement = require('virtual-element'); | ||
var _datePicker = require('./date-picker'); | ||
var _virtualElement2 = _interopRequireDefault(_virtualElement); | ||
var _datePicker2 = _interopRequireDefault(_datePicker); | ||
var _moment = require('moment'); | ||
var _timePicker = require('./time-picker'); | ||
var _moment2 = _interopRequireDefault(_moment); | ||
var _timePicker2 = _interopRequireDefault(_timePicker); | ||
function createPicker() { | ||
var opts = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; | ||
var _datetimePicker = require('./datetime-picker'); | ||
var YearPicker = opts.yearPicker || { | ||
render: function render(component) { | ||
var _component$props = component.props; | ||
var add = _component$props.add; | ||
var subtract = _component$props.subtract; | ||
var currentDate = _component$props.currentDate; | ||
var _datetimePicker2 = _interopRequireDefault(_datetimePicker); | ||
return (0, _virtualElement2['default'])( | ||
'div', | ||
{ 'class': 'YearPicker' }, | ||
(0, _virtualElement2['default'])( | ||
'button', | ||
{ onClick: subtract }, | ||
'prev' | ||
), | ||
currentDate.year(), | ||
(0, _virtualElement2['default'])( | ||
'button', | ||
{ onClick: add }, | ||
'next' | ||
) | ||
); | ||
} | ||
}; | ||
var MonthPicker = opts.monthPicker || { | ||
render: function render(component) { | ||
var _component$props2 = component.props; | ||
var add = _component$props2.add; | ||
var subtract = _component$props2.subtract; | ||
var currentDate = _component$props2.currentDate; | ||
return (0, _virtualElement2['default'])( | ||
'div', | ||
{ 'class': 'MonthPicker' }, | ||
(0, _virtualElement2['default'])( | ||
'button', | ||
{ onClick: subtract }, | ||
'prev' | ||
), | ||
currentDate.month() + 1, | ||
(0, _virtualElement2['default'])( | ||
'button', | ||
{ onClick: add }, | ||
'next' | ||
) | ||
); | ||
} | ||
}; | ||
var Day = opts.day || { | ||
render: function render(component) { | ||
var _component$props3 = component.props; | ||
var currentDate = _component$props3.currentDate; | ||
var dayNumber = _component$props3.dayNumber; | ||
var setDay = _component$props3.setDay; | ||
return (0, _virtualElement2['default'])( | ||
'div', | ||
{ onClick: function () { | ||
return setDay(dayNumber); | ||
}, 'class': 'DayPicker--day ' + (currentDate.date() === dayNumber ? 'active' : '') }, | ||
dayNumber | ||
); | ||
} | ||
}; | ||
var DayPicker = opts.dayPicker || { | ||
render: function render(component) { | ||
var currentDate = component.props.currentDate; | ||
var days = Array.apply(null, { length: currentDate.daysInMonth() }).map(Number.call, Number); | ||
var monthDays = days.map(function (el) { | ||
var dayNumber = el + 1; | ||
return (0, _virtualElement2['default'])(Day, _extends({ dayNumber: dayNumber }, component.props)); | ||
}); | ||
return (0, _virtualElement2['default'])( | ||
'div', | ||
{ 'class': 'DayPicker' }, | ||
monthDays | ||
); | ||
} | ||
}; | ||
var ChooseDayButton = opts.chooseDayButton || { | ||
render: function render(component) { | ||
var _component$props4 = component.props; | ||
var callback = _component$props4.callback; | ||
var chooseText = _component$props4.chooseText; | ||
return (0, _virtualElement2['default'])( | ||
'button', | ||
{ 'class': 'ChooseDayButton', onClick: callback }, | ||
chooseText | ||
); | ||
} | ||
}; | ||
var DatePicker = { | ||
initialState: function initialState(props) { | ||
return { currentDate: props.initialDate ? (0, _moment2['default'])(props.initialDate) : (0, _moment2['default'])() }; | ||
}, | ||
render: function render(component, setState) { | ||
var _component$props5 = component.props; | ||
var pickerClass = _component$props5.pickerClass; | ||
var callback = _component$props5.callback; | ||
var chooseText = _component$props5.chooseText; | ||
var currentDate = component.state.currentDate; | ||
return (0, _virtualElement2['default'])( | ||
'div', | ||
{ 'class': pickerClass || 'DatePicker' }, | ||
(0, _virtualElement2['default'])(YearPicker, { | ||
subtract: function () { | ||
return setState({ currentDate: currentDate.subtract(1, 'year') }); | ||
}, | ||
add: function () { | ||
return setState({ currentDate: currentDate.add(1, 'year') }); | ||
}, | ||
currentDate: currentDate }), | ||
(0, _virtualElement2['default'])(MonthPicker, { | ||
subtract: function () { | ||
return setState({ currentDate: currentDate.subtract(1, 'month') }); | ||
}, | ||
add: function () { | ||
return setState({ currentDate: currentDate.add(1, 'month') }); | ||
}, | ||
currentDate: currentDate }), | ||
(0, _virtualElement2['default'])(DayPicker, { | ||
setDay: function (dayNumber) { | ||
return setState({ currentDate: currentDate.date(dayNumber) }); | ||
}, | ||
currentDate: currentDate }), | ||
(0, _virtualElement2['default'])(ChooseDayButton, { callback: function () { | ||
return callback(currentDate.toDate()); | ||
}, chooseText: chooseText || 'Choose Day' }) | ||
); | ||
} | ||
}; | ||
return DatePicker; | ||
} | ||
exports['default'] = createPicker; | ||
module.exports = exports['default']; | ||
exports['default'] = { createDatePicker: _datePicker2['default'], createTimePicker: _timePicker2['default'], createDateTimePicker: _datetimePicker2['default'] }; | ||
module.exports = exports['default']; |
3506
-54.67%3
50%12
-91.67%+ Added
+ Added