all files / src/ util.jsx

100% Statements 44/44
85% Branches 17/20
100% Functions 6/6
100% Lines 43/43
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108                                        84× 84× 84× 84× 78× 78×   84× 84× 84× 84× 84× 84×                         84×     84×                     80×                         20× 12×                
'use strict';
 
Object.defineProperty(exports, "__esModule", {
  value: true
});
 
var _react = require('react');
 
var _react2 = _interopRequireDefault(_react);
 
var _uxcoreFormatter = require('uxcore-formatter');
 
var _uxcoreFormatter2 = _interopRequireDefault(_uxcoreFormatter);
 
var _uxcoreTooltip = require('uxcore-tooltip');
 
var _uxcoreTooltip2 = _interopRequireDefault(_uxcoreTooltip);
 
var _classnames = require('classnames');
 
var _classnames2 = _interopRequireDefault(_classnames);
 
var _locale = require('./locale');
 
var _locale2 = _interopRequireDefault(_locale);
 
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
 
/**
 * code should be an object like this {'xxxx-xx-xx': 'work/leave/schedule'}
 */
var generateContentRender = function generateContentRender(str) {
  var lang = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'zh-cn';
  return function contentRender(code, locale, current) {
    // see https://github.com/yiminghe/gregorian-calendar to get details about `current` API
    var time = current.getTime();
    var date = _uxcoreFormatter2['default'].date(time, 'YYYY-MM-DD');
    var type = code[date];
    if (typeof type === 'string') {
      type = [type];
    } else Eif (type === undefined) {
      type = [];
    }
    var tipMap = _locale2['default'][locale];
    var content = [];
    var isWork = type.indexOf('work') !== -1;
    var isLeave = type.indexOf('leave') !== -1;
    var isSchedule = type.indexOf('schedule') !== -1;
    content.push(_react2['default'].createElement(
      'span',
      {
        key: 'date',
        className: (0, _classnames2['default'])({
          'kuma-calendar-date-content': true,
          work: isWork,
          leave: isLeave,
          schedule: isSchedule
        })
      },
      current.getDayOfMonth()
    ));
    if (isSchedule) {
      content.push(_react2['default'].createElement('span', { key: 'bottom-line', className: 'kuma-calendar-date-decoration' }));
    }
 
    if (isWork || isLeave) {
      return _react2['default'].createElement(
        _uxcoreTooltip2['default'],
        { placement: 'right', trigger: ['hover'], overlay: tipMap[isWork ? 'work' : 'leave'] },
        _react2['default'].createElement(
          'div',
          { className: 'kuma-calendar-date-content-box' },
          content
        )
      );
    }
    // only one child can be passed.
    return _react2['default'].createElement(
      'div',
      { className: 'kuma-calendar-date-content-box' },
      content
    );
  }.bind(null, str, lang);
};
 
function getCalendarContainer() {
  var c = document.createElement('div');
  c.className = 'uxcore';
  document.body.appendChild(c);
  return c;
}
 
/**
 * for forward compatability
 */
function generalizeFormat(format) {
  return format.replace(/y|d/g, function (value) {
    return value.toUpperCase();
  });
}
 
exports['default'] = {
  generateContentRender: generateContentRender,
  getCalendarContainer: getCalendarContainer,
  generalizeFormat: generalizeFormat
};
module.exports = exports['default'];