diff --git a/lib/components/Elements/Basic.js b/lib/components/Elements/Basic.js index cbe8f2b2..51f2e24f 100644 --- a/lib/components/Elements/Basic.js +++ b/lib/components/Elements/Basic.js @@ -23,7 +23,7 @@ var Basic = function Basic(_ref) { { className: 'element', style: style }, _react2.default.createElement( 'div', - { className: 'element__content', 'aria-hidden': 'true' }, + { className: 'element__title' }, title ), _react2.default.createElement( diff --git a/lib/components/Elements/Segmented.js b/lib/components/Elements/Segmented.js new file mode 100644 index 00000000..eb5dfd02 --- /dev/null +++ b/lib/components/Elements/Segmented.js @@ -0,0 +1,80 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _extends2 = require("babel-runtime/helpers/extends"); + +var _extends3 = _interopRequireDefault(_extends2); + +var _react = require("react"); + +var _react2 = _interopRequireDefault(_react); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var Segment = function Segment(_ref) { + var time = _ref.time, + offsetX = _ref.offsetX, + start = _ref.start, + end = _ref.end, + style = _ref.style; + + var left = time.toX(start) - offsetX; + var width = time.toX(end) - left - offsetX; + var segmentStyle = (0, _extends3.default)({}, style, { + left: left, + width: width + }); + return _react2.default.createElement("div", { className: "segmented__segment", style: segmentStyle }); +}; + +Segment.propTypes = { + time: _react.PropTypes.shape({}).isRequired, + offsetX: _react.PropTypes.number.isRequired, + start: _react.PropTypes.instanceOf(Date).isRequired, + end: _react.PropTypes.instanceOf(Date).isRequired, + style: _react.PropTypes.shape({}) +}; + +// eslint-disable-next-line no-unused-vars +var Segmented = function Segmented(_ref2) { + var time = _ref2.time, + title = _ref2.title, + start = _ref2.start, + end = _ref2.end, + tooltip = _ref2.tooltip, + segments = _ref2.segments; + + var offsetX = time.toX(start); + return _react2.default.createElement( + "div", + { className: "element segmented" }, + segments.map(function (segment) { + return _react2.default.createElement(Segment, (0, _extends3.default)({ + key: segment.id + }, segment, { + offsetX: offsetX, + time: time + })); + }), + _react2.default.createElement( + "div", + { className: "element__title" }, + title + ) + ); +}; + +Segmented.propTypes = { + time: _react.PropTypes.shape({}).isRequired, + title: _react.PropTypes.string, + start: _react.PropTypes.instanceOf(Date), + end: _react.PropTypes.instanceOf(Date), + tooltip: _react.PropTypes.string, + segments: _react.PropTypes.arrayOf(_react.PropTypes.shape({ id: _react.PropTypes.string.isRequired })).isRequired +}; + +exports.default = Segmented; +module.exports = exports["default"]; \ No newline at end of file diff --git a/lib/components/Elements/index.js b/lib/components/Elements/index.js new file mode 100644 index 00000000..ab90b470 --- /dev/null +++ b/lib/components/Elements/index.js @@ -0,0 +1,21 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _Basic = require('./Basic'); + +var _Basic2 = _interopRequireDefault(_Basic); + +var _Segmented = require('./Segmented'); + +var _Segmented2 = _interopRequireDefault(_Segmented); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +exports.default = { + Basic: _Basic2.default, + Segmented: _Segmented2.default +}; +module.exports = exports['default']; \ No newline at end of file diff --git a/lib/components/Timeline/Tracks/Element.js b/lib/components/Timeline/Tracks/Element.js index ff8387a3..d9da7ab5 100644 --- a/lib/components/Timeline/Tracks/Element.js +++ b/lib/components/Timeline/Tracks/Element.js @@ -4,28 +4,25 @@ Object.defineProperty(exports, "__esModule", { value: true }); -var _extends2 = require('babel-runtime/helpers/extends'); - -var _extends3 = _interopRequireDefault(_extends2); - var _react = require('react'); var _react2 = _interopRequireDefault(_react); -var _Basic = require('../../Elements/Basic'); +var _Elements = require('../../Elements'); -var _Basic2 = _interopRequireDefault(_Basic); +var _Elements2 = _interopRequireDefault(_Elements); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -var Element = function Element(_ref) { - var time = _ref.time, - style = _ref.style, - id = _ref.id, - title = _ref.title, - start = _ref.start, - end = _ref.end, - tooltip = _ref.tooltip; +var TrackElement = function TrackElement(props) { + var _props$type = props.type, + type = _props$type === undefined ? 'Basic' : _props$type, + id = props.id, + start = props.start, + end = props.end, + time = props.time; + + var Element = _Elements2.default[type]; return _react2.default.createElement( 'div', { @@ -33,25 +30,17 @@ var Element = function Element(_ref) { className: 'track__element', style: time.toStyleLeftAndWidth(start, end) }, - _react2.default.createElement(_Basic2.default, { - tooltip: tooltip, - title: title, - start: start, - end: end, - style: (0, _extends3.default)({}, style) - }) + _react2.default.createElement(Element, props) ); }; -Element.propTypes = { +TrackElement.propTypes = { time: _react.PropTypes.shape({}).isRequired, - style: _react.PropTypes.shape({}), + type: _react.PropTypes.string, id: _react.PropTypes.string.isRequired, - title: _react.PropTypes.string, start: _react.PropTypes.instanceOf(Date).isRequired, - end: _react.PropTypes.instanceOf(Date).isRequired, - tooltip: _react.PropTypes.string + end: _react.PropTypes.instanceOf(Date).isRequired }; -exports.default = Element; +exports.default = TrackElement; module.exports = exports['default']; \ No newline at end of file diff --git a/lib/css/style.css b/lib/css/style.css index 23736cbe..8500094c 100644 --- a/lib/css/style.css +++ b/lib/css/style.css @@ -43,10 +43,11 @@ position: relative; height: 40px; line-height: 40px; - background: #06f; - color: #fff; + background: "#000"; + color: "#fff"; text-align: center; } - .react-timeline .element__content { + .react-timeline .element__title { + position: relative; padding: 0 10px; overflow: hidden; white-space: nowrap; @@ -246,3 +247,8 @@ background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iOCIgdmlld0JveD0iMTYgMjQgMjQgOCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMTYgMjRoMjR2OEgxNnoiIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPg=="); } .react-timeline .track-key__toggle--open::before { background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjUiIHZpZXdCb3g9IjE2IDE1IDI0IDI1IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxnIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCI+PHBhdGggZD0iTTMyIDE2djI0aC04VjE2eiIvPjxwYXRoIGQ9Ik0xNiAyNGgyNHY4SDE2eiIvPjwvZz48L3N2Zz4="); } + .react-timeline .segmented__segment { + position: absolute; + top: 0; + height: 40px; + line-height: 40px; } diff --git a/src/components/Elements/Basic.jsx b/src/components/Elements/Basic.jsx index 201b3863..bcd792cc 100644 --- a/src/components/Elements/Basic.jsx +++ b/src/components/Elements/Basic.jsx @@ -4,7 +4,7 @@ import { getDayMonth } from '../../utils/formatDate' const Basic = ({ title, start, end, style, tooltip }) =>
-