- {createElement(resultTypeMapper(item['@type']), {
- key: item['@id'],
- item,
- })}
-
- ))}
- {this.props.batching && (
-
-
,
- icon: true,
- 'aria-disabled': !this.props.batching.prev,
- className: !this.props.batching.prev ? 'disabled' : null,
- }}
- nextItem={{
- content:
,
- icon: true,
- 'aria-disabled': !this.props.batching.next,
- className: !this.props.batching.next ? 'disabled' : null,
- }}
- />
+
+
+
+
+
+
+
+
+
+ {this.props.items?.map((item, index) => (
+
+ {createElement(resultTypeMapper(item['@type']), {
+ key: item['@id'],
+ item,
+ layout: this.state.layout,
+ })}
+
+ ))}
- )}
-
+ {this.props.batching &&
+ this.props.total / settings.defaultPageSize > 1 && (
+
+
+ ),
+ icon: true,
+ 'aria-disabled': !this.props.batching.prev,
+ className: !this.props.batching.prev
+ ? 'disabled'
+ : null,
+ }}
+ nextItem={{
+ content: (
+
+ ),
+ icon: true,
+ 'aria-disabled': !this.props.batching.next,
+ className: !this.props.batching.next
+ ? 'disabled'
+ : null,
+ }}
+ />
+
+ )}
+
+
{this.state.isClient && (
@@ -481,7 +465,6 @@ export const __test__ = connect(
loading,
batching,
intl: state.intl,
- searchableText: qs.parse(props.history.location.search).SearchableText,
pathname: props.history.location.pathname,
contentTypeSearchResultViews: contentTypeSearchResultViewsWithDefault(
props.contentTypeSearchResultViews,
@@ -504,6 +487,8 @@ export default compose(
const {
items,
facetGroups,
+ facetFields,
+ layouts,
total,
loaded,
loading,
@@ -512,12 +497,13 @@ export default compose(
return {
items,
facetGroups,
+ facetFields,
+ layouts,
total,
loaded,
loading,
batching,
intl: state.intl,
- searchableText: qs.parse(props.history.location.search).SearchableText,
pathname: props.history.location.pathname,
contentTypeSearchResultViews: contentTypeSearchResultViewsWithDefault(
props.contentTypeSearchResultViews,
@@ -539,7 +525,7 @@ export default compose(
dispatch(
searchActionWithDefault(searchAction)('', {
...qs.parse(location.search),
- path_prefix: getPathPrefix(location),
+ path_prefix: getPathPrefix(window.location),
use_site_search_settings: 1,
metadata_fields: ['effective', 'UID', 'start'],
hl: 'true',
diff --git a/src/components/theme/SolrSearch/base64Helpers.js b/src/components/theme/SolrSearch/base64Helpers.js
new file mode 100644
index 0000000..c33c576
--- /dev/null
+++ b/src/components/theme/SolrSearch/base64Helpers.js
@@ -0,0 +1,17 @@
+function bytesToBase64(bytes) {
+ const binString = String.fromCodePoint(...bytes);
+ return btoa(binString);
+}
+
+function base64ToBytes(base64) {
+ const binString = atob(base64);
+ return Uint8Array.from(binString, (m) => m.codePointAt(0));
+}
+
+// Usage
+// bytesToBase64(new TextEncoder().encode("a Ā 𐀀 文 🦄")); // "YSDEgCDwkICAIOaWhyDwn6aE"
+// new TextDecoder().decode(base64ToBytes("YSDEgCDwkICAIOaWhyDwn6aE")); // "a Ā 𐀀 文 🦄"
+
+export const bToA = (base64) => bytesToBase64(new TextEncoder().encode(base64));
+
+export const aToB = (utf) => new TextDecoder().decode(base64ToBytes(utf));
diff --git a/src/components/theme/SolrSearch/base64Helpers.test.js b/src/components/theme/SolrSearch/base64Helpers.test.js
new file mode 100644
index 0000000..4c3f064
--- /dev/null
+++ b/src/components/theme/SolrSearch/base64Helpers.test.js
@@ -0,0 +1,18 @@
+import { aToB, bToA } from './base64Helpers';
+
+// polyfill needed because of jsDom version used by jest
+import { TextEncoder, TextDecoder } from 'util';
+Object.assign(global, { TextDecoder, TextEncoder });
+
+describe('base64helpers', () => {
+ describe('bToA', () => {
+ it('works', () => {
+ expect(bToA('a Ā 𐀀 文 🦄')).toEqual('YSDEgCDwkICAIOaWhyDwn6aE');
+ });
+ });
+ describe('aToB', () => {
+ it('works', () => {
+ expect(aToB('YSDEgCDwkICAIOaWhyDwn6aE')).toEqual('a Ā 𐀀 文 🦄');
+ });
+ });
+});
diff --git a/src/components/theme/SolrSearch/icons/fallback-avatar.svg b/src/components/theme/SolrSearch/icons/fallback-avatar.svg
new file mode 100644
index 0000000..65b4963
--- /dev/null
+++ b/src/components/theme/SolrSearch/icons/fallback-avatar.svg
@@ -0,0 +1,25 @@
+
+
diff --git a/src/components/theme/SolrSearch/icons/grid.svg b/src/components/theme/SolrSearch/icons/grid.svg
new file mode 100644
index 0000000..a95cee9
--- /dev/null
+++ b/src/components/theme/SolrSearch/icons/grid.svg
@@ -0,0 +1,8 @@
+
diff --git a/src/components/theme/SolrSearch/icons/location.svg b/src/components/theme/SolrSearch/icons/location.svg
index ba6127d..26d44f9 100644
--- a/src/components/theme/SolrSearch/icons/location.svg
+++ b/src/components/theme/SolrSearch/icons/location.svg
@@ -1,11 +1,15 @@
-
diff --git a/src/components/theme/SolrSearch/icons/phone.svg b/src/components/theme/SolrSearch/icons/phone.svg
new file mode 100644
index 0000000..f28644c
--- /dev/null
+++ b/src/components/theme/SolrSearch/icons/phone.svg
@@ -0,0 +1,9 @@
+
+
+ Fill 1 Copy
+
+
+
+
+
+
diff --git a/src/components/theme/SolrSearch/resultItems/ImageResultItem.jsx b/src/components/theme/SolrSearch/resultItems/ImageResultItem.jsx
index 97a6636..ac49892 100644
--- a/src/components/theme/SolrSearch/resultItems/ImageResultItem.jsx
+++ b/src/components/theme/SolrSearch/resultItems/ImageResultItem.jsx
@@ -7,7 +7,7 @@ import ResultItemPreviewImage from './helpers/ResultItemPreviewImage';
import IconForContentType from './helpers/IconForContentType';
const ImageResultItem = ({ item }) => (
-
+
{/*
*/}
diff --git a/src/components/theme/SolrSearch/resultItems/PersonResultItem.jsx b/src/components/theme/SolrSearch/resultItems/PersonResultItem.jsx
new file mode 100644
index 0000000..d9908bb
--- /dev/null
+++ b/src/components/theme/SolrSearch/resultItems/PersonResultItem.jsx
@@ -0,0 +1,81 @@
+import React from 'react';
+import { Link } from 'react-router-dom';
+import ResultItemPreviewImage from './helpers/ResultItemPreviewImage';
+import phoneSVG from '../icons/phone.svg';
+import emailSVG from '@plone/volto/icons/email.svg';
+import fallbackAvatarSVG from '../icons/fallback-avatar.svg';
+import { Icon } from '@plone/volto/components'; // ??
+import config from '@plone/volto/registry';
+
+const PersonResultItem = ({ item }) => (
+
+
+ {/*
+
+ */}
+
+
+
+
+
+
+
+
{item['@id']}
+
+
+ {item.title}
+
+
+ {item?.highlighting && item.highlighting.length > 0 ? (
+
+
+ {' ...'}
+
+ ) : (
+
+
+ {item.description
+ ? item.description.length > 200
+ ? item.description.slice(0, 199) + '...'
+ : item.description
+ : ''}
+
+
+ )}
+
+ {item.extras.contact_phone ? (
+
+
+ {item.extras.contact_phone}
+
+ ) : null}
+
+ {item.extras.contact_email ? (
+
+
+ {item.extras.contact_email}
+
+ ) : null}
+
+
+
+
+
+);
+
+export default PersonResultItem;
diff --git a/src/components/theme/SolrSearch/resultItems/helpers/ImageType.jsx b/src/components/theme/SolrSearch/resultItems/helpers/ImageType.jsx
index 175d1af..03de270 100644
--- a/src/components/theme/SolrSearch/resultItems/helpers/ImageType.jsx
+++ b/src/components/theme/SolrSearch/resultItems/helpers/ImageType.jsx
@@ -12,6 +12,8 @@ export const getImageType = (mimeType) => {
}
};
-const ImageType = ({ mimeType }) => getImageType(mimeType);
+const ImageType = ({ mimeType }) => (
+ {getImageType(mimeType)}
+);
export default ImageType;
diff --git a/src/components/theme/SolrSearch/resultItems/helpers/ResultItemPreviewImage.jsx b/src/components/theme/SolrSearch/resultItems/helpers/ResultItemPreviewImage.jsx
index 6c431d8..8bd2d81 100644
--- a/src/components/theme/SolrSearch/resultItems/helpers/ResultItemPreviewImage.jsx
+++ b/src/components/theme/SolrSearch/resultItems/helpers/ResultItemPreviewImage.jsx
@@ -19,10 +19,17 @@ export const previewImageContent = ({
};
};
-const ResultItemPreviewImage = ({ item, ...rest }) => {
+const LinkToImage = ({ item, children }) => (
+ {children}
+);
+
+const EmptyWrapper = ({ item, children }) => <>{children}>;
+
+const ResultItemPreviewImage = ({ item, Wrapper = LinkToImage, ...rest }) => {
const content = previewImageContent(item);
+ Wrapper = Wrapper !== null ? Wrapper : EmptyWrapper;
if (content.image_scales) {
- // Show the link also conditionally.
+ // Show the wrapper also conditionally.
let Image;
if (!config.settings.contentTypeSearchResultAlwaysUseLegacyImage) {
Image = config.getComponent({ name: 'Image' }).component;
@@ -37,7 +44,7 @@ const ResultItemPreviewImage = ({ item, ...rest }) => {
);
}
return (
-
+
{
height="125"
{...rest}
/>
-
+
);
}
return (
-
+
{
height="125"
{...rest}
/>
-
+
);
} else {
return null;
diff --git a/src/components/theme/SolrSearch/resultItems/helpers/ResultItemPreviewImage.test.jsx b/src/components/theme/SolrSearch/resultItems/helpers/ResultItemPreviewImage.test.jsx
index 6961fc9..9dfff9f 100644
--- a/src/components/theme/SolrSearch/resultItems/helpers/ResultItemPreviewImage.test.jsx
+++ b/src/components/theme/SolrSearch/resultItems/helpers/ResultItemPreviewImage.test.jsx
@@ -166,6 +166,29 @@ describe('ResultItemPreviewImage', () => {
expect(rendered).toMatchSnapshot();
});
+ test('Wrapper=null removes link', () => {
+ const component = create(
+
+
+ ,
+ );
+ const rendered = component.toJSON();
+ expect(rendered).toMatchSnapshot();
+ });
+
+ test('Custom Wrapper', () => {
+ const Wrapper = ({ item, children }) => (
+ {children}
+ );
+ const component = create(
+
+
+ ,
+ );
+ const rendered = component.toJSON();
+ expect(rendered).toMatchSnapshot();
+ });
+
describe('legacy image', () => {
let origComponent;
let origContentTypeSearchResultAlwaysUseLegacyImage;
@@ -233,5 +256,28 @@ describe('ResultItemPreviewImage', () => {
).toThrow();
mockError.mockRestore();
});
+
+ test('Wrapper=null removes link', () => {
+ const component = create(
+
+
+ ,
+ );
+ const rendered = component.toJSON();
+ expect(rendered).toMatchSnapshot();
+ });
+
+ test('Custom Wrapper', () => {
+ const Wrapper = ({ item, children }) => (
+ {children}
+ );
+ const component = create(
+
+
+ ,
+ );
+ const rendered = component.toJSON();
+ expect(rendered).toMatchSnapshot();
+ });
});
});
diff --git a/src/components/theme/SolrSearch/resultItems/helpers/__snapshots__/ResultItemPreviewImage.test.jsx.snap b/src/components/theme/SolrSearch/resultItems/helpers/__snapshots__/ResultItemPreviewImage.test.jsx.snap
index 5d6d1ce..f751287 100644
--- a/src/components/theme/SolrSearch/resultItems/helpers/__snapshots__/ResultItemPreviewImage.test.jsx.snap
+++ b/src/components/theme/SolrSearch/resultItems/helpers/__snapshots__/ResultItemPreviewImage.test.jsx.snap
@@ -1,5 +1,333 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
+exports[`ResultItemPreviewImage Custom Wrapper 1`] = `
+
+
+
+`;
+
+exports[`ResultItemPreviewImage Wrapper=null removes link 1`] = `
+
+`;
+
+exports[`ResultItemPreviewImage legacy image Custom Wrapper 1`] = `
+
+
+
+`;
+
+exports[`ResultItemPreviewImage legacy image Wrapper=null removes link 1`] = `
+
+`;
+
exports[`ResultItemPreviewImage legacy image if contentTypeSearchResultAlwaysUseLegacyImage is true 1`] = `
{
Event: searchResultItems.EventResultItem,
Image: searchResultItems.ImageResultItem,
'News Item': searchResultItems.NewsItemResultItem,
+ Person: searchResultItems.PersonResultItem,
};
config.views.contentTypeSearchResultDefaultView =
searchResultItems.DefaultResultItem;
@@ -55,6 +56,7 @@ const applyConfig = (config) => {
contentTypeSearchResultDefaultView:
config.views.contentTypeSearchResultDefaultView,
showSearchInput: true,
+ doEmptySearch: false,
};
// Wrapper for a customized Solr Search component that can be used
@@ -65,6 +67,8 @@ const applyConfig = (config) => {
config.addonReducers = { ...config.addonReducers, ...reducers };
config.addonRoutes = [...config.addonRoutes, ...routes(config)];
+ config.settings.baseColor = '#f0f0f0'; // needed as svg cannot use css
+
return config;
};
diff --git a/src/reducers/solrsearch/solrsearch.js b/src/reducers/solrsearch/solrsearch.js
index 8d18fe2..d3d2058 100644
--- a/src/reducers/solrsearch/solrsearch.js
+++ b/src/reducers/solrsearch/solrsearch.js
@@ -14,6 +14,8 @@ const initialState = {
error: null,
items: [],
facetGroups: [],
+ facetFields: [],
+ layouts: [],
total: 0,
loaded: false,
loading: false,
@@ -103,6 +105,8 @@ export default function search(state = initialState, action = {}) {
items: [],
total: 0,
facetGroups: [],
+ facetFields: [],
+ layouts: [],
batching: {},
}),
error: null,
@@ -130,6 +134,8 @@ export default function search(state = initialState, action = {}) {
),
total: action.result.response.numFound,
facetGroups: action.result.facet_groups || [],
+ facetFields: action.result.facet_fields || [],
+ layouts: action.result.layouts || [],
loaded: true,
loading: false,
batching: getBatching(action),
@@ -152,6 +158,8 @@ export default function search(state = initialState, action = {}) {
items: [],
total: 0,
facetGroups: [],
+ facetFields: [],
+ layouts: [],
loading: false,
loaded: false,
batching: {},
@@ -180,6 +188,8 @@ export default function search(state = initialState, action = {}) {
items: [],
total: 0,
facetGroups: [],
+ facetFields: [],
+ layouts: [],
loading: false,
loaded: false,
batching: {},
diff --git a/src/reducers/solrsearch/solrsearch.test.js b/src/reducers/solrsearch/solrsearch.test.js
index 1a2da84..a72a1e4 100644
--- a/src/reducers/solrsearch/solrsearch.test.js
+++ b/src/reducers/solrsearch/solrsearch.test.js
@@ -11,6 +11,8 @@ describe('SOLR search reducer', () => {
error: null,
items: [],
facetGroups: [],
+ facetFields: [],
+ layouts: [],
total: 0,
loaded: false,
loading: false,
@@ -28,6 +30,8 @@ describe('SOLR search reducer', () => {
error: null,
items: [],
facetGroups: [],
+ facetFields: [],
+ layouts: [],
total: 0,
loaded: false,
loading: true,
@@ -73,6 +77,8 @@ describe('SOLR search reducer', () => {
},
],
facetGroups: [],
+ facetFields: [],
+ layouts: [],
total: 1,
loaded: true,
loading: false,
@@ -91,6 +97,8 @@ describe('SOLR search reducer', () => {
error: 'failed',
items: [],
facetGroups: [],
+ facetFields: [],
+ layouts: [],
total: 0,
loaded: false,
loading: false,
@@ -108,6 +116,8 @@ describe('SOLR search reducer', () => {
error: null,
items: [],
facetGroups: [],
+ facetFields: [],
+ layouts: [],
total: 0,
loaded: false,
loading: false,
@@ -126,6 +136,8 @@ describe('SOLR search reducer', () => {
error: null,
items: [],
facetGroups: [],
+ facetFields: [],
+ layouts: [],
total: 0,
loaded: false,
loading: false,
@@ -135,6 +147,8 @@ describe('SOLR search reducer', () => {
error: null,
items: [],
facetGroups: [],
+ facetFields: [],
+ layouts: [],
total: 0,
loaded: false,
loading: true,
@@ -153,6 +167,8 @@ describe('SOLR search reducer', () => {
error: null,
items: [],
facetGroups: [],
+ facetFields: [],
+ layouts: [],
total: 0,
loaded: false,
loading: true,
@@ -182,6 +198,25 @@ describe('SOLR search reducer', () => {
['Three', 3],
['Four', 4],
],
+ facet_fields: [
+ [
+ 'fooField',
+ [
+ [null, 21],
+ ['twoFoo', 2],
+ ['oneFoo', 1],
+ ],
+ ],
+ [
+ 'barField',
+ [
+ [null, 21],
+ ['twoBar', 2],
+ ['oneBar', 1],
+ ],
+ ],
+ ],
+ layouts: [undefined, undefined, ['list', 'grid'], ['grid']],
},
},
),
@@ -210,6 +245,25 @@ describe('SOLR search reducer', () => {
['Three', 3],
['Four', 4],
],
+ facetFields: [
+ [
+ 'fooField',
+ [
+ [null, 21],
+ ['twoFoo', 2],
+ ['oneFoo', 1],
+ ],
+ ],
+ [
+ 'barField',
+ [
+ [null, 21],
+ ['twoBar', 2],
+ ['oneBar', 1],
+ ],
+ ],
+ ],
+ layouts: [undefined, undefined, ['list', 'grid'], ['grid']],
total: 1,
loaded: true,
loading: false,
@@ -228,6 +282,8 @@ describe('SOLR search reducer', () => {
error: null,
items: [],
facetGroups: [],
+ facetFields: [],
+ layouts: [],
total: 0,
loaded: false,
loading: true,
@@ -247,6 +303,8 @@ describe('SOLR search reducer', () => {
error: 'failed',
items: [],
facetGroups: [],
+ facetFields: [],
+ layouts: [],
total: 0,
loaded: false,
loading: false,
@@ -265,6 +323,8 @@ describe('SOLR search reducer', () => {
error: null,
items: ['random'],
facetGroups: [],
+ facetFields: [],
+ layouts: [],
total: 1,
loaded: true,
loading: false,
@@ -307,6 +367,8 @@ describe('SOLR search reducer', () => {
error: null,
items: [],
facetGroups: [],
+ facetFields: [],
+ layouts: [],
total: 0,
loaded: false,
loading: false,
@@ -348,6 +410,8 @@ describe('SOLR search reducer', () => {
error: null,
items: [],
facetGroups: [],
+ facetFields: [],
+ layouts: [],
total: 0,
loaded: false,
loading: false,
@@ -377,6 +441,8 @@ describe('SOLR search reducer', () => {
error: null,
items: [],
facetGroups: [],
+ facetFields: [],
+ layouts: [],
total: 0,
loaded: false,
loading: false,
@@ -400,6 +466,8 @@ describe('SOLR search reducer', () => {
error: null,
items: [],
facetGroups: [],
+ facetFields: [],
+ layouts: [],
total: 0,
loaded: false,
loading: false,
@@ -424,6 +492,8 @@ describe('SOLR search reducer', () => {
error: null,
items: [],
facetGroups: [],
+ facetFields: [],
+ layouts: [],
total: 0,
loaded: false,
loading: false,
@@ -452,6 +522,8 @@ describe('SOLR search reducer', () => {
error: null,
items: [],
facetGroups: [],
+ facetFields: [],
+ layouts: [],
total: 0,
loaded: false,
loading: false,
diff --git a/src/theme/solrsearch.less b/src/theme/solrsearch.less
index 88672d8..e7d81c4 100644
--- a/src/theme/solrsearch.less
+++ b/src/theme/solrsearch.less
@@ -37,13 +37,32 @@
.sorting-bar {
display: flex;
+ width: 100%;
align-items: baseline;
- justify-content: space-between;
+ justify-content: flex-end;
+ // justify-content: space-between;
margin-bottom: 1em;
- color: @solr-grey;
+
+ .layout-field {
+ padding: 0 2px 0 0;
+ border-width: 0 1px 0 0;
+ border-style: solid;
+ .layout-label {
+ padding: 0 8px 0 0;
+ }
+ .layout-selector {
+ padding: 0 6px 0 0;
+ vertical-align: text-top;
+ &:not(.active) {
+ color: @solr-grey;
+ // color: red;
+ cursor: pointer;
+ }
+ }
+ }
.sort-field {
- margin-left: auto;
+ margin-left: 16px;
.sort-by {
padding-right: 0.3em;
@@ -77,8 +96,29 @@
}
}
+ .dimmer {
+ // Fix semantic-ui dimmer. Without this,
+ // it does not cover the entire height, of the viewport,
+ // which becomes noticable when you scroll after the dimmer is active.
+ position: fixed !important;
+ }
+
#content-core {
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
margin-top: 1.5em;
+ &.layout-grid .search-items {
+ display: grid;
+ flex: 0 0 none;
+ column-gap: 16px;
+ grid-template-columns: 50% 50%;
+ grid-template-rows: auto;
+ }
+
+ .search-footer {
+ flex: 0 0 none;
+ }
article.tileItem {
// margin-bottom: 30px;
@@ -110,8 +150,7 @@
img.previewImage {
width: 250px;
- margin-top: 0.5em;
- margin-right: 0.5em;
+ margin: 0.5em;
aspect-ratio: 2;
float: right;
object-fit: cover;
@@ -199,6 +238,92 @@
}
}
+// Facet conditions
+
+.section-search,
+.section-\@\@search {
+ .searchContentWrapper {
+ display: flex;
+ section#content-core {
+ flex: 1 1 auto;
+ }
+ .dimmer {
+ position: fixed !important;
+ top: 50% !important;
+ left: 50% !important;
+ width: 100px;
+ height: 100px;
+ border: 1px solid lightgray;
+ opacity: 0.9;
+ }
+ .searchConditions {
+ width: 220px;
+ flex: 0 0 none;
+ margin-top: 2em;
+ margin-right: 0.5em;
+ .searchConditionsField {
+ padding-bottom: 1rem;
+ margin-bottom: 2em;
+ .searchConditionsFieldHeader {
+ margin-right: 1em;
+ font-weight: bold;
+ .searchConditionsFieldSearch {
+ width: 100%;
+ margin-top: 0.5rem;
+ margin-bottom: 1rem;
+ input {
+ padding-left: 0.5rem;
+ background: @solr-search-facet-tab-inactive-color;
+ }
+ }
+ }
+ .searchConditionsFieldContent {
+ overflow: scroll;
+ max-height: 11em;
+ padding-right: 1em;
+ }
+ .searchConditionsFieldFooter {
+ border-bottom: 1px;
+ border-bottom-style: solid;
+ margin-top: 0.5em;
+ margin-right: 1em;
+ text-align: right;
+ .showMoreIndicator {
+ color: @solr-color-interactive-blue;
+ font-size: 13px;
+ svg {
+ margin-left: 0.5rem;
+ fill: @solr-color-interactive-blue;
+ vertical-align: middle;
+ }
+ }
+ }
+ }
+ .searchConditionsValue {
+ display: flex;
+ margin-bottom: 0.5em;
+ font-size: 13px;
+ gap: 0.5em;
+ .searchConditionsLabel {
+ overflow: hidden;
+ flex: 1 1 auto;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ }
+ .searchConditionsCounter {
+ width: 2em;
+ flex: 0 0 auto;
+ font-weight: bold;
+ text-align: center;
+ }
+ .searchConditionsCheckbox {
+ flex: 0 0 none;
+ }
+ }
+ }
+ }
+}
+
// Content types
.section-search,
@@ -212,33 +337,57 @@
font-size: 0.9rem;
}
- .memberResultItem {
- @baseColor: #006b96;
-
+ .personResultItem {
.itemWrapper {
display: flex;
.itemImageWrapper {
+ position: relative;
flex: none;
margin-right: 20px;
+
+ img.profileImage {
+ position: absolute;
+ left: 0;
+ width: 64px;
+ aspect-ratio: 1;
+ border-radius: 50%;
+ object-fit: cover;
+ }
}
.itemContent {
flex: 1 1 auto;
- .itemPhoneEmailBar {
- color: @solr-grey;
-
- .itemPhone {
- margin-right: 16px;
+ color: @solr-grey;
+
+ .itemField {
+ padding-right: 12px;
+ border-width: 0 1px 0 0;
+ border-style: solid;
+ margin-right: 12px;
+ line-height: 2;
+ white-space: nowrap;
+ &:last-child {
+ padding-right: 0;
+ border-width: 0;
}
+ --overflow-x: hide;
+ }
- .itemIcon {
- margin-right: 4px;
- vertical-align: text-bottom;
- }
+ .itemIcon {
+ margin-right: 4px;
+ vertical-align: text-bottom;
}
}
}
}
+
+ .imageResultItem {
+ .tileFooter {
+ .imageType {
+ margin-right: 8px;
+ }
+ }
+ }
}