calcite-react
Version:
Calcite components for React
133 lines (104 loc) • 6.15 kB
JavaScript
"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;