instantjob-recruiter-client
Version:
a set of tools for creating an instantjob recruiter react client
200 lines (155 loc) • 6.17 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _taggedTemplateLiteral2 = require('babel-runtime/helpers/taggedTemplateLiteral');
var _taggedTemplateLiteral3 = _interopRequireDefault(_taggedTemplateLiteral2);
var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');
var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _createClass2 = require('babel-runtime/helpers/createClass');
var _createClass3 = _interopRequireDefault(_createClass2);
var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
var _inherits2 = require('babel-runtime/helpers/inherits');
var _inherits3 = _interopRequireDefault(_inherits2);
var _templateObject = (0, _taggedTemplateLiteral3.default)(['\n ', '\n'], ['\n ', '\n']),
_templateObject2 = (0, _taggedTemplateLiteral3.default)(['\n ', '\n background-color: ', ';\n overflow: scroll;\n transform: translate(0, ', ');\n transition: transform 400ms ', ';\n box-shadow: 0 0 3px ', ';\n\n & > * {\n margin: 0 40px 40px 40px;\n }\n'], ['\n ', '\n background-color: ', ';\n overflow: scroll;\n transform: translate(0, ', ');\n transition: transform 400ms ', ';\n box-shadow: 0 0 3px ', ';\n\n & > * {\n margin: 0 40px 40px 40px;\n }\n']),
_templateObject3 = (0, _taggedTemplateLiteral3.default)(['\n margin-top: 40px;\n'], ['\n margin-top: 40px;\n']),
_templateObject4 = (0, _taggedTemplateLiteral3.default)(['\n\n'], ['\n\n']);
exports.add_modal = add_modal;
exports.dismiss_front_modal = dismiss_front_modal;
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _styledComponents = require('styled-components');
var _styledComponents2 = _interopRequireDefault(_styledComponents);
var _polished = require('polished');
var _button = require('components/utils/button');
var _button2 = _interopRequireDefault(_button);
var _auto_bind = require('common/auto_bind');
var _auto_bind2 = _interopRequireDefault(_auto_bind);
var _styles = require('common/styles');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var modals = [];
var after_update = function after_update() {};
function add_modal(modal) {
modals.push(modal);
after_update();
}
var dismissers = [];
function dismiss_front_modal() {
var dismiss = dismissers.pop();
dismiss();
}
function dismiss_front_modal_immediately() {
modals.pop();
after_update();
}
var Modals = function (_Component) {
(0, _inherits3.default)(Modals, _Component);
function Modals(props) {
(0, _classCallCheck3.default)(this, Modals);
var _this = (0, _possibleConstructorReturn3.default)(this, (Modals.__proto__ || (0, _getPrototypeOf2.default)(Modals)).call(this, props));
(0, _auto_bind2.default)(_this);
return _this;
}
(0, _createClass3.default)(Modals, [{
key: 'componentDidMount',
value: function componentDidMount() {
after_update = this.after_update;
}
}, {
key: 'componentWillUpdate',
value: function componentWillUpdate() {
after_update = this.after_update;
}
}, {
key: 'after_update',
value: function after_update() {
this.forceUpdate();
}
}, {
key: 'render_modal',
value: function render_modal(modal, id) {
return _react2.default.createElement(Modal, { key: id, component: modal });
}
}, {
key: 'render',
value: function render() {
if (modals.length) {
return _react2.default.createElement(
Frame,
null,
modals.map(this.render_modal)
);
}
return null;
}
}]);
return Modals;
}(_react.Component);
exports.default = Modals;
var Modal = function (_Component2) {
(0, _inherits3.default)(Modal, _Component2);
function Modal(props) {
(0, _classCallCheck3.default)(this, Modal);
var _this2 = (0, _possibleConstructorReturn3.default)(this, (Modal.__proto__ || (0, _getPrototypeOf2.default)(Modal)).call(this, props));
_this2.state = {
mounted: false
};
(0, _auto_bind2.default)(_this2);
return _this2;
}
(0, _createClass3.default)(Modal, [{
key: 'componentDidMount',
value: function componentDidMount() {
var _this3 = this;
dismissers.push(this.dismiss);
setTimeout(function () {
return _this3.setState({ mounted: true });
}, 10);
}
}, {
key: 'dismiss',
value: function dismiss() {
setTimeout(dismiss_front_modal_immediately, 400);
this.setState({ mounted: false });
}
}, {
key: 'render',
value: function render() {
var mounted = this.state.mounted;
var Content = this.props.component;
return _react2.default.createElement(
Container,
{ mounted: mounted },
_react2.default.createElement(
Header,
null,
_react2.default.createElement(
_button2.default,
{ onClick: dismiss_front_modal, back: true },
'Retour'
)
),
_react2.default.createElement(
ContentContainer,
null,
_react2.default.createElement(Content, null)
)
);
}
}]);
return Modal;
}(_react.Component);
var Frame = _styledComponents2.default.div(_templateObject, (0, _polished.position)('absolute', '0', '0', '0', '0'));
var Container = _styledComponents2.default.div(_templateObject2, (0, _polished.position)('absolute', '0', '0', '0', '0'), (0, _styles.color)('black', 'translucent'), function (_ref) {
var mounted = _ref.mounted;
return mounted ? '0' : '100%';
}, function (_ref2) {
var mounted = _ref2.mounted;
return mounted ? _styles.desceleration : _styles.acceleration;
}, (0, _styles.color)('black', 'normal', 0.25));
var Header = _styledComponents2.default.div(_templateObject3);
var ContentContainer = _styledComponents2.default.div(_templateObject4);