styledot
Version:
23andMe Design System
169 lines (139 loc) • 17.7 kB
JavaScript
;
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _react = _interopRequireDefault(require("react"));
var _modal = _interopRequireDefault(require("./modal"));
var _propTypes = _interopRequireDefault(require("prop-types"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
var ModalInstance = /*#__PURE__*/function (_React$Component) {
_inherits(ModalInstance, _React$Component);
var _super = _createSuper(ModalInstance);
function ModalInstance(props) {
var _this;
_classCallCheck(this, ModalInstance);
_this = _super.call(this);
_this.state = {
isVisible: props.initialVisible
};
_this.openModal = _this.openModal.bind(_assertThisInitialized(_this));
_this.closeModal = _this.closeModal.bind(_assertThisInitialized(_this));
return _this;
}
_createClass(ModalInstance, [{
key: "openModal",
value: function openModal() {
this.setState({
isVisible: true
});
}
}, {
key: "closeModal",
value: function closeModal() {
this.setState({
isVisible: false
});
}
}, {
key: "populateButton",
value: function populateButton() {
return {
__html: this.props.invokerText
};
}
}, {
key: "populateClasses",
value: function populateClasses() {
var classString;
if (this.props.invokerType === 'link') {
classString = 'sd-button-anchor';
} else if (this.props.invokerType === 'button') {
classString = 'sd-button';
}
if (this.props.invokerExtraClasses) {
classString += " ".concat(this.props.invokerExtraClasses);
}
return classString;
}
}, {
key: "populateChildren",
value: function populateChildren() {
var _this2 = this;
var children = this.props.children;
if (children.type !== undefined) {
return _react["default"].Children.map(this.props.children, function (child) {
return /*#__PURE__*/_react["default"].cloneElement(child, {
closeModal: _this2.closeModal
});
});
} else {
return children;
}
}
}, {
key: "addSpace",
value: function addSpace() {
if (this.props.invokerType === 'link') return ' ';
}
}, {
key: "render",
value: function render() {
return /*#__PURE__*/_react["default"].createElement("span", null, this.addSpace(), /*#__PURE__*/_react["default"].createElement("button", _extends({
className: this.populateClasses(),
onClick: this.openModal
}, this.props.invokerDataAttributes, {
disabled: this.props.disabled
}), /*#__PURE__*/_react["default"].createElement("span", {
dangerouslySetInnerHTML: this.populateButton()
})), /*#__PURE__*/_react["default"].createElement(_modal["default"], {
isVisible: this.state.isVisible,
closeModal: this.closeModal,
includeDismissCta: this.props.includeDismissCta,
dismissText: this.props.modalDismissText,
ctaPosition: this.props.modalCtaPosition,
extraClasses: this.props.modalCtaExtraClasses,
alternateModal: this.props.alternateModal,
modalSize: this.props.modalSize,
useWhiteDismissButton: this.props.useWhiteDismissButton
}, this.populateChildren()), this.addSpace());
}
}]);
return ModalInstance;
}(_react["default"].Component);
ModalInstance.defaultProps = {
includeDismissCta: true,
invokerDataAttributes: {},
initialVisible: false,
disabled: false
};
ModalInstance.propTypes = {
invokerType: _propTypes["default"].oneOf(['button', 'link']).isRequired,
invokerExtraClasses: _propTypes["default"].string,
invokerDataAttributes: _propTypes["default"].objectOf(function (propValue, key) {
if (!/data-.+/.test(key)) {
return new Error("Invalid object property, \"".concat(key, "\", supplied to `ModalInstance` component's `invokerDataAttributes` prop. Validation failed: only \"data-\" prefix attributes are allowed."));
}
}),
includeDismissCta: _propTypes["default"].bool,
alternateModal: _propTypes["default"].string,
modalSize: _propTypes["default"].string,
useWhiteDismissButton: _propTypes["default"].bool,
initialVisible: _propTypes["default"].bool,
disabled: _propTypes["default"].bool
};
var _default = ModalInstance;
exports["default"] = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNb2RhbEluc3RhbmNlIiwicHJvcHMiLCJzdGF0ZSIsImlzVmlzaWJsZSIsImluaXRpYWxWaXNpYmxlIiwib3Blbk1vZGFsIiwiYmluZCIsImNsb3NlTW9kYWwiLCJzZXRTdGF0ZSIsIl9faHRtbCIsImludm9rZXJUZXh0IiwiY2xhc3NTdHJpbmciLCJpbnZva2VyVHlwZSIsImludm9rZXJFeHRyYUNsYXNzZXMiLCJjaGlsZHJlbiIsInR5cGUiLCJ1bmRlZmluZWQiLCJSZWFjdCIsIkNoaWxkcmVuIiwibWFwIiwiY2hpbGQiLCJjbG9uZUVsZW1lbnQiLCJhZGRTcGFjZSIsInBvcHVsYXRlQ2xhc3NlcyIsImludm9rZXJEYXRhQXR0cmlidXRlcyIsImRpc2FibGVkIiwicG9wdWxhdGVCdXR0b24iLCJpbmNsdWRlRGlzbWlzc0N0YSIsIm1vZGFsRGlzbWlzc1RleHQiLCJtb2RhbEN0YVBvc2l0aW9uIiwibW9kYWxDdGFFeHRyYUNsYXNzZXMiLCJhbHRlcm5hdGVNb2RhbCIsIm1vZGFsU2l6ZSIsInVzZVdoaXRlRGlzbWlzc0J1dHRvbiIsInBvcHVsYXRlQ2hpbGRyZW4iLCJDb21wb25lbnQiLCJkZWZhdWx0UHJvcHMiLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJvbmVPZiIsImlzUmVxdWlyZWQiLCJzdHJpbmciLCJvYmplY3RPZiIsInByb3BWYWx1ZSIsImtleSIsInRlc3QiLCJFcnJvciIsImJvb2wiXSwic291cmNlcyI6WyIuLi9zcmMvbGliL21vZGFsLWluc3RhbmNlLmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGlzIGRvY3VtZW50J3MgcHVycG9zZSBpcyB0byBwcm92aWRlIFJlYWN0J3MgdXNhZ2Ugb2YgbW9kYWxzLlxuLy8gSXQgY3JlYXRlcyBhIHNpbmd1bGFyLCBzZXBhcmF0ZWQgaW5zdGFuY2Ugb2YgdGhlIG1vZGFsXG4vLyBodHRwczovL3N0eWxlLjIzYW5kbWUuY29tL2NvbXBvbmVudHMvI21vZGFscy1zZWN0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uXG5cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgTW9kYWwgZnJvbSAnLi9tb2RhbCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuXG5jbGFzcyBNb2RhbEluc3RhbmNlIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgICAgICAgaXNWaXNpYmxlOiBwcm9wcy5pbml0aWFsVmlzaWJsZSxcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5vcGVuTW9kYWwgPSB0aGlzLm9wZW5Nb2RhbC5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLmNsb3NlTW9kYWwgPSB0aGlzLmNsb3NlTW9kYWwuYmluZCh0aGlzKTtcbiAgICB9XG5cbiAgICBvcGVuTW9kYWwoKSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgaXNWaXNpYmxlOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBjbG9zZU1vZGFsKCkge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgIGlzVmlzaWJsZTogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHBvcHVsYXRlQnV0dG9uKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgX19odG1sOiB0aGlzLnByb3BzLmludm9rZXJUZXh0LFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHBvcHVsYXRlQ2xhc3NlcygpIHtcbiAgICAgICAgbGV0IGNsYXNzU3RyaW5nO1xuICAgICAgICBpZiAodGhpcy5wcm9wcy5pbnZva2VyVHlwZSA9PT0gJ2xpbmsnKSB7XG4gICAgICAgICAgICBjbGFzc1N0cmluZyA9ICdzZC1idXR0b24tYW5jaG9yJztcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnByb3BzLmludm9rZXJUeXBlID09PSAnYnV0dG9uJykge1xuICAgICAgICAgICAgY2xhc3NTdHJpbmcgPSAnc2QtYnV0dG9uJztcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5wcm9wcy5pbnZva2VyRXh0cmFDbGFzc2VzKSB7XG4gICAgICAgICAgICBjbGFzc1N0cmluZyArPSBgICR7dGhpcy5wcm9wcy5pbnZva2VyRXh0cmFDbGFzc2VzfWA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNsYXNzU3RyaW5nO1xuICAgIH1cblxuICAgIHBvcHVsYXRlQ2hpbGRyZW4oKSB7XG4gICAgICAgIGNvbnN0IGNoaWxkcmVuID0gdGhpcy5wcm9wcy5jaGlsZHJlbjtcbiAgICAgICAgaWYgKGNoaWxkcmVuLnR5cGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIFJlYWN0LkNoaWxkcmVuLm1hcCh0aGlzLnByb3BzLmNoaWxkcmVuLCBjaGlsZCA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJlYWN0LmNsb25lRWxlbWVudChjaGlsZCwge1xuICAgICAgICAgICAgICAgICAgICBjbG9zZU1vZGFsOiB0aGlzLmNsb3NlTW9kYWwsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBjaGlsZHJlbjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFkZFNwYWNlKCkge1xuICAgICAgICBpZiAodGhpcy5wcm9wcy5pbnZva2VyVHlwZSA9PT0gJ2xpbmsnKSByZXR1cm4gJyAnO1xuICAgIH1cblxuICAgIHJlbmRlcigpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgIHt0aGlzLmFkZFNwYWNlKCl9XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3RoaXMucG9wdWxhdGVDbGFzc2VzKCl9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMub3Blbk1vZGFsfVxuICAgICAgICAgICAgICAgICAgICB7Li4udGhpcy5wcm9wcy5pbnZva2VyRGF0YUF0dHJpYnV0ZXN9XG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXt0aGlzLnByb3BzLmRpc2FibGVkfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw9e3RoaXMucG9wdWxhdGVCdXR0b24oKX0gLz5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgICAgIDxNb2RhbFxuICAgICAgICAgICAgICAgICAgICBpc1Zpc2libGU9e3RoaXMuc3RhdGUuaXNWaXNpYmxlfVxuICAgICAgICAgICAgICAgICAgICBjbG9zZU1vZGFsPXt0aGlzLmNsb3NlTW9kYWx9XG4gICAgICAgICAgICAgICAgICAgIGluY2x1ZGVEaXNtaXNzQ3RhPXt0aGlzLnByb3BzLmluY2x1ZGVEaXNtaXNzQ3RhfVxuICAgICAgICAgICAgICAgICAgICBkaXNtaXNzVGV4dD17dGhpcy5wcm9wcy5tb2RhbERpc21pc3NUZXh0fVxuICAgICAgICAgICAgICAgICAgICBjdGFQb3NpdGlvbj17dGhpcy5wcm9wcy5tb2RhbEN0YVBvc2l0aW9ufVxuICAgICAgICAgICAgICAgICAgICBleHRyYUNsYXNzZXM9e3RoaXMucHJvcHMubW9kYWxDdGFFeHRyYUNsYXNzZXN9XG4gICAgICAgICAgICAgICAgICAgIGFsdGVybmF0ZU1vZGFsPXt0aGlzLnByb3BzLmFsdGVybmF0ZU1vZGFsfVxuICAgICAgICAgICAgICAgICAgICBtb2RhbFNpemU9e3RoaXMucHJvcHMubW9kYWxTaXplfVxuICAgICAgICAgICAgICAgICAgICB1c2VXaGl0ZURpc21pc3NCdXR0b249e3RoaXMucHJvcHMudXNlV2hpdGVEaXNtaXNzQnV0dG9ufVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3RoaXMucG9wdWxhdGVDaGlsZHJlbigpfVxuICAgICAgICAgICAgICAgIDwvTW9kYWw+XG4gICAgICAgICAgICAgICAge3RoaXMuYWRkU3BhY2UoKX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgKTtcbiAgICB9XG59XG5cbk1vZGFsSW5zdGFuY2UuZGVmYXVsdFByb3BzID0ge1xuICAgIGluY2x1ZGVEaXNtaXNzQ3RhOiB0cnVlLFxuICAgIGludm9rZXJEYXRhQXR0cmlidXRlczoge30sXG4gICAgaW5pdGlhbFZpc2libGU6IGZhbHNlLFxuICAgIGRpc2FibGVkOiBmYWxzZSxcbn07XG5cbk1vZGFsSW5zdGFuY2UucHJvcFR5cGVzID0ge1xuICAgIGludm9rZXJUeXBlOiBQcm9wVHlwZXMub25lT2YoWydidXR0b24nLCAnbGluayddKS5pc1JlcXVpcmVkLFxuICAgIGludm9rZXJFeHRyYUNsYXNzZXM6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgaW52b2tlckRhdGFBdHRyaWJ1dGVzOiBQcm9wVHlwZXMub2JqZWN0T2YoZnVuY3Rpb24ocHJvcFZhbHVlLCBrZXkpIHtcbiAgICAgICAgaWYgKCEvZGF0YS0uKy8udGVzdChrZXkpKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgIGBJbnZhbGlkIG9iamVjdCBwcm9wZXJ0eSwgXCIke2tleX1cIiwgc3VwcGxpZWQgdG8gXFxgTW9kYWxJbnN0YW5jZVxcYCBjb21wb25lbnQncyBcXGBpbnZva2VyRGF0YUF0dHJpYnV0ZXNcXGAgcHJvcC4gVmFsaWRhdGlvbiBmYWlsZWQ6IG9ubHkgXCJkYXRhLVwiIHByZWZpeCBhdHRyaWJ1dGVzIGFyZSBhbGxvd2VkLmBcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9KSxcbiAgICBpbmNsdWRlRGlzbWlzc0N0YTogUHJvcFR5cGVzLmJvb2wsXG4gICAgYWx0ZXJuYXRlTW9kYWw6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgbW9kYWxTaXplOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIHVzZVdoaXRlRGlzbWlzc0J1dHRvbjogUHJvcFR5cGVzLmJvb2wsXG4gICAgaW5pdGlhbFZpc2libGU6IFByb3BUeXBlcy5ib29sLFxuICAgIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE1vZGFsSW5zdGFuY2U7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUlBOztBQUNBOztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUVNQSxhOzs7OztFQUNGLHVCQUFZQyxLQUFaLEVBQW1CO0lBQUE7O0lBQUE7O0lBQ2Y7SUFDQSxNQUFLQyxLQUFMLEdBQWE7TUFDVEMsU0FBUyxFQUFFRixLQUFLLENBQUNHO0lBRFIsQ0FBYjtJQUdBLE1BQUtDLFNBQUwsR0FBaUIsTUFBS0EsU0FBTCxDQUFlQyxJQUFmLCtCQUFqQjtJQUNBLE1BQUtDLFVBQUwsR0FBa0IsTUFBS0EsVUFBTCxDQUFnQkQsSUFBaEIsK0JBQWxCO0lBTmU7RUFPbEI7Ozs7V0FFRCxxQkFBWTtNQUNSLEtBQUtFLFFBQUwsQ0FBYztRQUNWTCxTQUFTLEVBQUU7TUFERCxDQUFkO0lBR0g7OztXQUVELHNCQUFhO01BQ1QsS0FBS0ssUUFBTCxDQUFjO1FBQ1ZMLFNBQVMsRUFBRTtNQURELENBQWQ7SUFHSDs7O1dBRUQsMEJBQWlCO01BQ2IsT0FBTztRQUNITSxNQUFNLEVBQUUsS0FBS1IsS0FBTCxDQUFXUztNQURoQixDQUFQO0lBR0g7OztXQUVELDJCQUFrQjtNQUNkLElBQUlDLFdBQUo7O01BQ0EsSUFBSSxLQUFLVixLQUFMLENBQVdXLFdBQVgsS0FBMkIsTUFBL0IsRUFBdUM7UUFDbkNELFdBQVcsR0FBRyxrQkFBZDtNQUNILENBRkQsTUFFTyxJQUFJLEtBQUtWLEtBQUwsQ0FBV1csV0FBWCxLQUEyQixRQUEvQixFQUF5QztRQUM1Q0QsV0FBVyxHQUFHLFdBQWQ7TUFDSDs7TUFDRCxJQUFJLEtBQUtWLEtBQUwsQ0FBV1ksbUJBQWYsRUFBb0M7UUFDaENGLFdBQVcsZUFBUSxLQUFLVixLQUFM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