From 8571f00fcb9f081fe31249325480638f999214b6 Mon Sep 17 00:00:00 2001 From: Will Bamford Date: Thu, 27 Apr 2017 11:49:56 +0100 Subject: [PATCH 1/3] Add placeholder segmented element and allow this to be specified --- lib/components/Elements/Segment.js | 1 + lib/components/Elements/Segmented.js | 80 ++++++++++++++++++++++ lib/components/Elements/index.js | 21 ++++++ lib/components/Timeline/Tracks/Element.js | 19 +++-- src/components/Elements/Segmented.jsx | 33 +++++++++ src/components/Elements/index.js | 7 ++ src/components/Timeline/Tracks/Element.jsx | 41 ++++++----- 7 files changed, 178 insertions(+), 24 deletions(-) create mode 100644 lib/components/Elements/Segment.js create mode 100644 lib/components/Elements/Segmented.js create mode 100644 lib/components/Elements/index.js create mode 100644 src/components/Elements/Segmented.jsx create mode 100644 src/components/Elements/index.js diff --git a/lib/components/Elements/Segment.js b/lib/components/Elements/Segment.js new file mode 100644 index 00000000..9a390c31 --- /dev/null +++ b/lib/components/Elements/Segment.js @@ -0,0 +1 @@ +"use strict"; \ No newline at end of file diff --git a/lib/components/Elements/Segmented.js b/lib/components/Elements/Segmented.js new file mode 100644 index 00000000..f3c3ea9c --- /dev/null +++ b/lib/components/Elements/Segmented.js @@ -0,0 +1,80 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _formatDate = require('../../utils/formatDate'); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var Segmented = function Segmented(_ref) { + var title = _ref.title, + start = _ref.start, + end = _ref.end, + style = _ref.style, + tooltip = _ref.tooltip; + return _react2.default.createElement( + 'div', + { className: 'element', style: style }, + _react2.default.createElement( + 'div', + { className: 'element__content', 'aria-hidden': 'true' }, + 'Segmented' + ), + _react2.default.createElement( + 'div', + { className: 'element__tooltip' }, + tooltip ? _react2.default.createElement( + 'div', + null, + tooltip + ) : _react2.default.createElement( + 'div', + null, + _react2.default.createElement( + 'div', + null, + 'Segmented' + ), + _react2.default.createElement( + 'div', + null, + _react2.default.createElement( + 'strong', + null, + 'Start' + ), + ' ', + (0, _formatDate.getDayMonth)(start) + ), + _react2.default.createElement( + 'div', + null, + _react2.default.createElement( + 'strong', + null, + 'End' + ), + ' ', + (0, _formatDate.getDayMonth)(end) + ) + ) + ) + ); +}; + +Segmented.propTypes = { + title: _react.PropTypes.string, + start: _react.PropTypes.instanceOf(Date), + end: _react.PropTypes.instanceOf(Date), + style: _react.PropTypes.shape({}), + tooltip: _react.PropTypes.string +}; + +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..2a4efb9e 100644 --- a/lib/components/Timeline/Tracks/Element.js +++ b/lib/components/Timeline/Tracks/Element.js @@ -12,20 +12,24 @@ 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, +var TrackElement = function TrackElement(_ref) { + var _ref$type = _ref.type, + type = _ref$type === undefined ? 'Basic' : _ref$type, + time = _ref.time, style = _ref.style, id = _ref.id, title = _ref.title, start = _ref.start, end = _ref.end, tooltip = _ref.tooltip; + + var Element = _Elements2.default[type]; return _react2.default.createElement( 'div', { @@ -33,7 +37,7 @@ var Element = function Element(_ref) { className: 'track__element', style: time.toStyleLeftAndWidth(start, end) }, - _react2.default.createElement(_Basic2.default, { + _react2.default.createElement(Element, { tooltip: tooltip, title: title, start: start, @@ -43,7 +47,8 @@ var Element = function Element(_ref) { ); }; -Element.propTypes = { +TrackElement.propTypes = { + type: _react.PropTypes.string, time: _react.PropTypes.shape({}).isRequired, style: _react.PropTypes.shape({}), id: _react.PropTypes.string.isRequired, @@ -53,5 +58,5 @@ Element.propTypes = { tooltip: _react.PropTypes.string }; -exports.default = Element; +exports.default = TrackElement; module.exports = exports['default']; \ No newline at end of file diff --git a/src/components/Elements/Segmented.jsx b/src/components/Elements/Segmented.jsx new file mode 100644 index 00000000..4c873fe9 --- /dev/null +++ b/src/components/Elements/Segmented.jsx @@ -0,0 +1,33 @@ +import React, { PropTypes } from 'react' + +import { getDayMonth } from '../../utils/formatDate' + +const Segmented = ({ title, start, end, style, tooltip }) => +
+ +
+ { + tooltip + ?
{tooltip}
+ : ( +
+
Segmented
+
Start {getDayMonth(start)}
+
End {getDayMonth(end)}
+
+ ) + } +
+
+ +Segmented.propTypes = { + title: PropTypes.string, + start: PropTypes.instanceOf(Date), + end: PropTypes.instanceOf(Date), + style: PropTypes.shape({}), + tooltip: PropTypes.string +} + +export default Segmented diff --git a/src/components/Elements/index.js b/src/components/Elements/index.js new file mode 100644 index 00000000..f6fea4ff --- /dev/null +++ b/src/components/Elements/index.js @@ -0,0 +1,7 @@ +import Basic from './Basic' +import Segmented from './Segmented' + +export default { + Basic, + Segmented +} diff --git a/src/components/Timeline/Tracks/Element.jsx b/src/components/Timeline/Tracks/Element.jsx index e16ad8cf..47ac478a 100644 --- a/src/components/Timeline/Tracks/Element.jsx +++ b/src/components/Timeline/Tracks/Element.jsx @@ -1,22 +1,29 @@ import React, { PropTypes } from 'react' -import BasicElement from '../../Elements/Basic' +import elements from '../../Elements' -const Element = ({ time, style, id, title, start, end, tooltip }) => -
- -
+const TrackElement = ({ type = 'Basic', time, style, id, title, start, end, tooltip }) => { + const Element = elements[type] + return ( +
+ { + + } +
+ ) +} -Element.propTypes = { +TrackElement.propTypes = { + type: PropTypes.string, time: PropTypes.shape({}).isRequired, style: PropTypes.shape({}), id: PropTypes.string.isRequired, @@ -26,4 +33,4 @@ Element.propTypes = { tooltip: PropTypes.string } -export default Element +export default TrackElement From a8d54d0578232ba17d336a4c0455a7a94682c2c2 Mon Sep 17 00:00:00 2001 From: Will Bamford Date: Thu, 27 Apr 2017 11:52:27 +0100 Subject: [PATCH 2/3] Fix linting --- lib/components/Elements/Segmented.js | 1 + src/components/Elements/Segmented.jsx | 1 + 2 files changed, 2 insertions(+) diff --git a/lib/components/Elements/Segmented.js b/lib/components/Elements/Segmented.js index f3c3ea9c..440bb5f5 100644 --- a/lib/components/Elements/Segmented.js +++ b/lib/components/Elements/Segmented.js @@ -12,6 +12,7 @@ var _formatDate = require('../../utils/formatDate'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +// eslint-disable-next-line no-unused-vars var Segmented = function Segmented(_ref) { var title = _ref.title, start = _ref.start, diff --git a/src/components/Elements/Segmented.jsx b/src/components/Elements/Segmented.jsx index 4c873fe9..228ed459 100644 --- a/src/components/Elements/Segmented.jsx +++ b/src/components/Elements/Segmented.jsx @@ -2,6 +2,7 @@ import React, { PropTypes } from 'react' import { getDayMonth } from '../../utils/formatDate' +// eslint-disable-next-line no-unused-vars const Segmented = ({ title, start, end, style, tooltip }) =>