@findify/react-components
Version:
Findify react UI components
103 lines (93 loc) • 5.11 kB
JavaScript
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(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; }
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; }
/**
* @module components/Cards/Content
*/
import Image from "../../common/Image";
import Text from "../../Text";
import Truncate from "../../common/Truncate";
var styles = {
"root": "findify-components--cards--content",
"vertical": "findify-components--cards--content__vertical",
"autocomplete": "findify-components--cards--content__autocomplete",
"horizontal": "findify-components--cards--content__horizontal",
"bubble": "findify-components--cards--content__bubble",
"title": "findify-components--cards--content__title",
"highlighted": "findify-components--cards--content__highlighted",
"content": "findify-components--cards--content__content",
"image": "findify-components--cards--content__image",
"title-link": "findify-components--cards--content__title-link",
"description": "findify-components--cards--content__description",
"titleLink": "findify-components--cards--content__title-link"
};
import cx from 'classnames';
import { jsx as _jsx } from "react/jsx-runtime";
import { jsxs as _jsxs } from "react/jsx-runtime";
var Title = function Title(_ref) {
var text = _ref.text,
theme = _ref.theme,
onClick = _ref.onClick,
href = _ref.href,
rest = _objectWithoutProperties(_ref, ["text", "theme", "onClick", "href"]);
return !!text ? /*#__PURE__*/_jsx(Text, _objectSpread(_objectSpread({
component: "h3",
className: theme.title
}, rest), {}, {
children: /*#__PURE__*/_jsx("a", {
className: theme.titleLink,
onClick: onClick,
href: href,
children: text
})
})) : null;
};
var Description = function Description(_ref2) {
var text = _ref2.text,
theme = _ref2.theme,
rest = _objectWithoutProperties(_ref2, ["text", "theme"]);
return !!text ? /*#__PURE__*/_jsx("p", _objectSpread(_objectSpread({
className: theme.description
}, rest), {}, {
children: /*#__PURE__*/_jsx(Truncate, {
children: text
})
})) : null;
};
export default (function (_ref3) {
var item = _ref3.item,
config = _ref3.config,
_ref3$theme = _ref3.theme,
theme = _ref3$theme === void 0 ? styles : _ref3$theme,
highlighted = _ref3.highlighted,
isAutocomplete = _ref3.isAutocomplete;
return /*#__PURE__*/_jsxs("a", {
"data-element": "card",
className: cx(theme.root, theme[config.get('template')], highlighted && theme.highlighted, isAutocomplete && theme.autocomplete),
href: item.get('url'),
children: [/*#__PURE__*/_jsxs("div", {
className: theme.content,
children: [/*#__PURE__*/_jsx(Title, {
theme: theme,
text: item.get('title'),
onClick: item.onClick,
href: item.get('url')
}), /*#__PURE__*/_jsx(Description, {
theme: theme,
text: item.get('description')
})]
}), item.get('image_url') ? /*#__PURE__*/_jsx("div", {
className: theme.image,
onClick: item.onClick,
children: /*#__PURE__*/_jsx(Image, {
aspectRatio: config.getIn(['image', 'aspectRatio']),
alt: item.get('title'),
lazy: config.getIn(['image', 'lazy']),
offset: config.getIn(['image', 'lazyOffset']),
src: item.get('image_url')
})
}) : null]
});
});