UNPKG

vcc-ui

Version:

VCC UI is a collection of React UI Components that can be used for developing front-end applications at Volvo Car Corporation.

211 lines (187 loc) 7.57 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Footer = void 0; var _react = _interopRequireDefault(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _block = require("../block"); var _inline = require("../inline"); var _button = require("../button"); var _logo = require("../logo"); var _link = require("../link"); var _icon = require("../icon"); var _breakpoints = require("../../constants/breakpoints"); var _deprecate = require("../../deprecate"); 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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } var styles = { boxSizing: "border-box", background: "#000", color: "#fff", padding: "40px 20px 80px", fontFamily: "Volvo Novum Regular, sans-serif", textAlign: "center" }; var primaryNavigation = function primaryNavigation(item, i) { return _react.default.createElement(_block.Block, { key: i, extend: { padding: "10px 16px" } }, _react.default.createElement(_link.Link, { key: item.name, href: item.url, intent: "primary-light", arrow: "right" }, item.name)); }; var secondaryNavigation = function secondaryNavigation(item, i) { return _react.default.createElement(_block.Block, { key: i, extend: { margin: "10px 0" } }, _react.default.createElement(_inline.Inline, { extend: _objectSpread({}, i > 0 && { borderLeft: "1px solid #aaa", paddingLeft: "12px", height: "12px", marginLeft: "12px" }) }, _react.default.createElement(_link.Link, { key: item.name, href: item.url, intent: "primary-light" }, item.name))); }; var socialNavigation = function socialNavigation(item, i) { return _react.default.createElement(_block.Block, { as: "a", key: item.name, href: item.url, extend: _objectSpread({}, i > 0 && { marginLeft: "30px" }) }, _react.default.createElement(_icon.Icon, { color: "#fff", size: "m", type: item.name.toLowerCase() })); }; var FooterComponent = function FooterComponent(_ref) { var data = _ref.data, theme = _ref.theme, props = _objectWithoutProperties(_ref, ["data", "theme"]); (0, _deprecate.deprecate)("The footer component has been moved to the @volvo-cars/site-footer-component package. The footer will be removed in the next major version release of VCC UI (1.x). Pleae upgrade now"); return _react.default.createElement(_block.Block, _extends({ as: "footer", extend: _objectSpread({}, styles, theme.footer) }, props), data.legalDisclaimer && _react.default.createElement(_block.Block, { extend: { fontSize: "14px", maxWidth: "620px", color: "#999", margin: "0 auto 30px", "> a": { color: "#aaa" } }, dangerouslySetInnerHTML: { __html: data.legalDisclaimer } }), _react.default.createElement(_block.Block, { extend: _defineProperty({ justifyContent: "center", display: "flex", flexWrap: "wrap", margin: "0 auto 30px", maxWidth: "620px" }, _breakpoints.BREAKPOINTS.onS, { flexDirection: "column", alignItems: "center" }) }, data.primaryFooterNavigation.map(primaryNavigation)), data.socialMediaNavigation.length && _react.default.createElement(_block.Block, { extend: { marginBottom: "30px" } }, data.socialMediaNavigation.map(socialNavigation)), _react.default.createElement(_block.Block, { extend: { marginBottom: "30px" } }, _react.default.createElement(_inline.Inline, { extend: { verticalAlign: "middle", display: "inline-block", marginRight: "10px" } }, _react.default.createElement(_icon.Icon, { size: "l", stroke: "#fff", fill: "#fff", type: "globe" })), _react.default.createElement(_inline.Inline, { extend: { verticalAlign: "middle" } }, data.marketName)), _react.default.createElement(_block.Block, { extend: { marginBottom: "40px" } }, _react.default.createElement(_link.Link, { href: "/", intent: "primary-light", arrow: "right" }, "Change Location")), _react.default.createElement(_block.Block, { extend: { fontSize: "14px", color: "#999", marginBottom: "40px" } }, data.copyrightInfo), _react.default.createElement(_block.Block, { extend: { justifyContent: "center", display: "flex", flexWrap: "wrap", margin: "0 auto 30px", maxWidth: "620px" } }, data.secondaryFooterNavigation.map(secondaryNavigation)), _react.default.createElement(_block.Block, { extend: { marginBottom: "40px" } }, _react.default.createElement(_logo.Logo, { type: "wordmark" })), _react.default.createElement(_button.Button, { intent: "primary-light", variant: "outline", arrow: "up", onClick: function onClick() { return window.scrollTo({ top: 0, left: 0, behavior: "smooth" }); } }, data.navigateToTop)); }; FooterComponent.displayName = "Footer"; FooterComponent.propTypes = { /** Data from VCC Content Delivery API */ data: _propTypes.default.shape({ legalDisclaimer: _propTypes.default.string, // Optional, only on some markets primaryFooterNavigation: _propTypes.default.array.isRequired, secondaryFooterNavigation: _propTypes.default.array.isRequired, socialMediaNavigation: _propTypes.default.array.isRequired, marketName: _propTypes.default.string.isRequired, copyrightInfo: _propTypes.default.string.isRequired, navigateToTop: _propTypes.default.string.isRequired }).isRequired }; var Footer = (0, _block.withTheme)(FooterComponent); exports.Footer = Footer;