UNPKG

calcite-react

Version:
133 lines (104 loc) 6.15 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _propTypes = _interopRequireDefault(require("prop-types")); var _react = _interopRequireDefault(require("react")); var _ArcgisItemCardStyled = require("./ArcgisItemCard-styled"); 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; } var ArcgisItemCard = function ArcgisItemCard(_ref) { var item = _ref.item, showThumbnail = _ref.showThumbnail, dateFormatter = _ref.dateFormatter, maxDescriptionLength = _ref.maxDescriptionLength, portal = _ref.portal, token = _ref.token, vertical = _ref.vertical, actions = _ref.actions, customTitleRenderer = _ref.customTitleRenderer, defaultThumbnailUrl = _ref.defaultThumbnailUrl, other = _objectWithoutProperties(_ref, ["item", "showThumbnail", "dateFormatter", "maxDescriptionLength", "portal", "token", "vertical", "actions", "customTitleRenderer", "defaultThumbnailUrl"]); var imageEl; var hostname = portal ? portal.portalHostname : 'arcgis.com'; if (showThumbnail) { var tokenUrlParam = token ? "?token=".concat(token) : ''; var imageSource = item.thumbnail || !defaultThumbnailUrl ? "https://".concat(hostname, "/sharing/rest/content/items/").concat(item.id, "/info/").concat(item.thumbnail).concat(tokenUrlParam) : defaultThumbnailUrl; imageEl = _react.default.createElement(_ArcgisItemCardStyled.StyledItemCardImageWrap, { vertical: vertical, imageSource: imageSource }); } function _dateFormatter(date) { if (dateFormatter) { return dateFormatter(date); } var dateOptions = { year: 'numeric', month: 'short', day: 'numeric' }; var language = navigator.userLanguage || navigator.language || navigator.browserLanguage || navigator.systemLanguage; return new Date(date).toLocaleDateString(language, dateOptions); } function _textShortener(text, maxLength) { var suffix = ''; var _text = text || ''; if (_text.length > maxLength || _text.length > maxDescriptionLength) { suffix = '...'; } return _text.substr(0, maxLength || maxDescriptionLength) + suffix; } function _getDescription() { if (item.snippet) { return _react.default.createElement(_ArcgisItemCardStyled.StyledCardItemText, { title: item.snippet }, _textShortener(item.snippet)); } else { return null; } } return _react.default.createElement(_ArcgisItemCardStyled.StyledItemCard, _extends({ wide: !vertical, vertical: vertical }, other), imageEl, _react.default.createElement(_ArcgisItemCardStyled.StyledItemCardContent, null, _react.default.createElement(_ArcgisItemCardStyled.StyledCardItemTitle, { title: item.title }, customTitleRenderer ? customTitleRenderer(_textShortener(item.title, 70)) : _react.default.createElement(_react.default.Fragment, null, _textShortener(item.title, 70))), _react.default.createElement(_ArcgisItemCardStyled.StyledCardItemMetrics, null, _react.default.createElement(_ArcgisItemCardStyled.StyledCardItemIconLabelText, null, _react.default.createElement(_ArcgisItemCardStyled.StyledUserIcon, { size: 16 }), _react.default.createElement("span", null, item.owner)), _react.default.createElement(_ArcgisItemCardStyled.StyledCardItemIconLabelText, null, _react.default.createElement(_ArcgisItemCardStyled.StyledCalendarIcon, { size: 16 }), _react.default.createElement("span", null, _dateFormatter(item.created)))), _getDescription(), actions && _react.default.createElement(_ArcgisItemCardStyled.StyledActionsContainer, null, actions))); }; ArcgisItemCard.propTypes = { /** The ArcGIS item used to populate the UI. */ item: _propTypes.default.object, /** Whether the ArcgisItemCard should show a thumbnail or not. */ showThumbnail: _propTypes.default.bool, /** A function that can be provided to customize the formatting of dates. */ dateFormatter: _propTypes.default.func, /** Number of characters to use before truncating the description text. */ maxDescriptionLength: _propTypes.default.number, /** AGOL portal object - if not specified will default to ArcGIS Online */ portal: _propTypes.default.object, /** AGOL login token. */ token: _propTypes.default.string, /** Style prop to position Card content vertically */ vertical: _propTypes.default.bool, /** Whether the ArcgisItemCard shows an actions tab at the bottom or not */ actions: _propTypes.default.object, /** Function to render custom elements or values in the item card title */ customTitleRenderer: _propTypes.default.func, /** String source URL to serve as default image for invalid thumbnails */ defaultThumbnailUrl: _propTypes.default.string }; ArcgisItemCard.defaultProps = { showThumbnail: true, maxDescriptionLength: 90, vertical: false }; ArcgisItemCard.displayName = 'ArcgisItemCard'; var _default = ArcgisItemCard; exports.default = _default;