Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

Marks.js 3.4 KiB

3 år sedan
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. 'use strict';
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. var _extends2 = require('babel-runtime/helpers/extends');
  6. var _extends3 = _interopRequireDefault(_extends2);
  7. var _defineProperty2 = require('babel-runtime/helpers/defineProperty');
  8. var _defineProperty3 = _interopRequireDefault(_defineProperty2);
  9. var _react = require('react');
  10. var _react2 = _interopRequireDefault(_react);
  11. var _propTypes = require('prop-types');
  12. var _propTypes2 = _interopRequireDefault(_propTypes);
  13. var _classnames = require('classnames');
  14. var _classnames2 = _interopRequireDefault(_classnames);
  15. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
  16. var Marks = function Marks(_ref) {
  17. var className = _ref.className,
  18. vertical = _ref.vertical,
  19. reverse = _ref.reverse,
  20. marks = _ref.marks,
  21. included = _ref.included,
  22. upperBound = _ref.upperBound,
  23. lowerBound = _ref.lowerBound,
  24. max = _ref.max,
  25. min = _ref.min,
  26. onClickLabel = _ref.onClickLabel;
  27. var marksKeys = Object.keys(marks);
  28. var range = max - min;
  29. var elements = marksKeys.map(parseFloat).sort(function (a, b) {
  30. return a - b;
  31. }).map(function (point) {
  32. var _classNames;
  33. var markPoint = marks[point];
  34. var markPointIsObject = typeof markPoint === 'object' && !_react2['default'].isValidElement(markPoint);
  35. var markLabel = markPointIsObject ? markPoint.label : markPoint;
  36. if (!markLabel && markLabel !== 0) {
  37. return null;
  38. }
  39. var isActive = !included && point === upperBound || included && point <= upperBound && point >= lowerBound;
  40. var markClassName = (0, _classnames2['default'])((_classNames = {}, (0, _defineProperty3['default'])(_classNames, className + '-text', true), (0, _defineProperty3['default'])(_classNames, className + '-text-active', isActive), _classNames));
  41. var bottomStyle = (0, _defineProperty3['default'])({
  42. marginBottom: '-50%'
  43. }, reverse ? 'top' : 'bottom', (point - min) / range * 100 + '%');
  44. var leftStyle = (0, _defineProperty3['default'])({
  45. transform: 'translateX(-50%)',
  46. msTransform: 'translateX(-50%)'
  47. }, reverse ? 'right' : 'left', reverse ? (point - min / 4) / range * 100 + '%' : (point - min) / range * 100 + '%');
  48. var style = vertical ? bottomStyle : leftStyle;
  49. var markStyle = markPointIsObject ? (0, _extends3['default'])({}, style, markPoint.style) : style;
  50. return _react2['default'].createElement(
  51. 'span',
  52. {
  53. className: markClassName,
  54. style: markStyle,
  55. key: point,
  56. onMouseDown: function onMouseDown(e) {
  57. return onClickLabel(e, point);
  58. },
  59. onTouchStart: function onTouchStart(e) {
  60. return onClickLabel(e, point);
  61. }
  62. },
  63. markLabel
  64. );
  65. });
  66. return _react2['default'].createElement(
  67. 'div',
  68. { className: className },
  69. elements
  70. );
  71. };
  72. Marks.propTypes = {
  73. className: _propTypes2['default'].string,
  74. vertical: _propTypes2['default'].bool,
  75. reverse: _propTypes2['default'].bool,
  76. marks: _propTypes2['default'].object,
  77. included: _propTypes2['default'].bool,
  78. upperBound: _propTypes2['default'].number,
  79. lowerBound: _propTypes2['default'].number,
  80. max: _propTypes2['default'].number,
  81. min: _propTypes2['default'].number,
  82. onClickLabel: _propTypes2['default'].func
  83. };
  84. exports['default'] = Marks;
  85. module.exports = exports['default'];