Feat/78837 show icons
@@ -7,12 +7,8 @@ import { UserPicture, PageListMeta, PagePathLabel } from '@growi/ui';
import { DevidedPagePath } from '@growi/core';
import { IPageSearchResultData } from '../../interfaces/search';
-
-import loggerFactory from '~/utils/logger';
import { IPageHasId } from '~/interfaces/page';
-const logger = loggerFactory('growi:searchResultList');
type PageItemControlProps = {
page: IPageHasId,
}
@@ -5,7 +5,7 @@ import PropTypes from 'prop-types';
import { useTranslation, withTranslation } from 'react-i18next';
-import { UserPicture } from '@growi/ui';
+import { UserPicture, FootstampIcon } from '@growi/ui';
import PagePathHierarchicalLink from '~/components/PagePathHierarchicalLink';
@@ -16,8 +16,6 @@ import loggerFactory from '~/utils/logger';
import LinkedPagePath from '~/models/linked-page-path';
-import FootstampIcon from '../FootstampIcon';
import FormattedDistanceDate from '../FormattedDistanceDate';
@@ -5,13 +5,13 @@ import React, { useState } from 'react';
import {
Button, Popover, PopoverBody,
} from 'reactstrap';
+import { FootstampIcon } from '@growi/ui';
import UserPictureList from './UserPictureList';
import { withUnstatedContainers } from '../UnstatedUtils';
import PageContainer from '~/client/services/PageContainer';
/* eslint react/no-multi-comp: 0, react/prop-types: 0 */
@@ -179,6 +179,8 @@ module.exports = function(crowi, app) {
elasticSearchResult: data.elasticSearchResult,
};
+ pageData._doc.seenUserCount = (pageData.seenUsers && pageData.seenUsers.length) || 0;
+
return { pageData, pageMeta };
})
.sort((page1, page2) => {
@@ -195,6 +195,14 @@
margin-right: 3px;
+ .page-list-meta {
+ > span {
+ margin-right: 12px;
+ }
+ .footstamp-icon {
+ margin-right: 2px;
@@ -18,7 +18,8 @@ $color-seen-user: #549c79 !default;
$color-btn-reload-in-sidebar: $gray-500;
$bgcolor-keyword-highlighted: $grw-marker-yellow !default;
$bordercolor-search-item-left-active: $primary;
-$bgcolor-search-item-active: lighten($bordercolor-search-item-left-active, 76%);
+$bgcolor-search-item-active: lighten($bordercolor-search-item-left-active, 76%) !default;
+$color-search-item-pagelist-meta: $gray-500 !default;
// override bootstrap variables
$body-bg: $bgcolor-global;
@@ -600,6 +601,12 @@ body.pathname-sidebar {
+ color: $color-search-item-pagelist-meta;
+ svg {
+ fill: $color-search-item-pagelist-meta;
@@ -1,6 +1,7 @@
import React from 'react';
import PropTypes from 'prop-types';
import { templateChecker, pagePathUtils } from '@growi/core';
+import { FootstampIcon } from '../SearchPage/FootstampIcon';
const { isTopPage } = pagePathUtils;
const { checkTemplatePath } = templateChecker;
@@ -37,16 +38,26 @@ export class PageListMeta extends React.Component {
locked = <span><i className="icon-lock" /></span>;
+ let seenUserCount;
+ if (page.seenUserCount > 0) {
+ seenUserCount = (
+ <span>
+ <i className="footstamp-icon"><FootstampIcon /></i>
+ {page.seenUsers.length}
+ </span>
+ );
let bookmarkCount;
if (this.props.bookmarkCount > 0) {
bookmarkCount = <span><i className="icon-star" />{this.props.bookmarkCount}</span>;
return (
<span className="page-list-meta">
{topLabel}
{templateLabel}
+ {seenUserCount}
{commentCount}
{likerCount}
{locked}
@@ -61,6 +72,3 @@ PageListMeta.propTypes = {
page: PropTypes.object.isRequired,
bookmarkCount: PropTypes.number,
-PageListMeta.defaultProps = {
-};
@@ -1,6 +1,6 @@
-const FootstampIcon = () => (
+export const FootstampIcon = () => (
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
@@ -27,5 +27,3 @@ const FootstampIcon = () => (
<path d="M13.49,7.57a.81.81,0,0,0-.8.71l-.1.71a.82.82,0,0,0,.7.91h.11a.81.81,0,0,0,.8-.71l.1-.71a.81.81,0,0,0-.7-.91Z" />
</svg>
);
-export default FootstampIcon;
@@ -2,3 +2,4 @@ export * from './components/Attachment/Attachment';
export * from './components/PagePath/PageListMeta';
export * from './components/PagePath/PagePathLabel';
export * from './components/User/UserPicture';
+export * from './components/SearchPage/FootstampIcon';