diff --git a/src/apps/customer-portal/src/pages/project-showcase/ProjectShowcasePage/ProjectShowcasePage.tsx b/src/apps/customer-portal/src/pages/project-showcase/ProjectShowcasePage/ProjectShowcasePage.tsx index 2ec42d137..4cb95d8ad 100644 --- a/src/apps/customer-portal/src/pages/project-showcase/ProjectShowcasePage/ProjectShowcasePage.tsx +++ b/src/apps/customer-portal/src/pages/project-showcase/ProjectShowcasePage/ProjectShowcasePage.tsx @@ -54,7 +54,7 @@ const ProjectShowcasePage: FC = () => { const [selectedIndustries, setSelectedIndustries] = useState([]) const [selectedCategories, setSelectedCategories] = useState([]) const [page, setPage] = useState(1) - const sortBy = 'createdAt' + const sortBy = 'publishedAt' const [sortOrder, setSortOrder] = useState<'asc' | 'desc'>('desc') const hasFiltersApplied = useMemo(() => ( !!keyword.trim() || selectedIndustries.length > 0 || selectedCategories.length > 0 @@ -136,7 +136,7 @@ const ProjectShowcasePage: FC = () => { 'work/project-showcase-posts', filters.projectId || '', filters.keyword || '', - '', + 'PUBLISHED', filters.industryId || '', filters.categoryId || '', String(nextPage), diff --git a/src/apps/customer-portal/src/pages/project-showcase/ProjectShowcasePostPage/ProjectShowcasePostPage.module.scss b/src/apps/customer-portal/src/pages/project-showcase/ProjectShowcasePostPage/ProjectShowcasePostPage.module.scss index 19b55a736..e43ee7057 100644 --- a/src/apps/customer-portal/src/pages/project-showcase/ProjectShowcasePostPage/ProjectShowcasePostPage.module.scss +++ b/src/apps/customer-portal/src/pages/project-showcase/ProjectShowcasePostPage/ProjectShowcasePostPage.module.scss @@ -169,6 +169,27 @@ &:hover { text-decoration: underline; } + + &[target] { + &::after { + content: ""; + -webkit-mask-size: "cover"; + mask-size: "cover"; + -webkit-mask-image: url(../../../lib/assets/external-link.svg); + mask-image: url(../../../lib/assets/external-link.svg); + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-size: 12px 12px; + mask-size: 12px 12px; + width: 12px; + height: 12px; + display: inline-block; + background-color: currentColor; + margin-left: $sp-1; + } + } } h1, @@ -179,8 +200,9 @@ h6 { color: $black-100; margin: 0 0 16px; - font-weight: 700; + font-weight: 600; text-transform: uppercase; + font-family: $font-barlow; } h1 { diff --git a/src/apps/customer-portal/src/pages/project-showcase/ProjectShowcasePostPage/ShowcasePostMedia/ShowcasePostMedia.tsx b/src/apps/customer-portal/src/pages/project-showcase/ProjectShowcasePostPage/ShowcasePostMedia/ShowcasePostMedia.tsx index b8d4a331a..0a5828226 100644 --- a/src/apps/customer-portal/src/pages/project-showcase/ProjectShowcasePostPage/ShowcasePostMedia/ShowcasePostMedia.tsx +++ b/src/apps/customer-portal/src/pages/project-showcase/ProjectShowcasePostPage/ShowcasePostMedia/ShowcasePostMedia.tsx @@ -53,6 +53,7 @@ const ShowcasePostMedia: FC = props => { type='button' className={styles.mediaButton} aria-label={`Open gallery item ${index + 1}`} + title={mediaAsset.alt} > {isImage && ( = props => { key={thumbAsset.id} className={classNames(styles.mediaItem, currentIndex === index && styles.active)} onClick={function setCurrent() { setCurrentIndex(index) }} + title={thumbAsset.alt} > {isImage && ( } @@ -191,6 +192,7 @@ function mapPostToFormData(post?: ProjectShowcasePost): ProjectShowcasePostFormD content: post?.content || '', industryIds: post?.industries.map(item => item.id) || [], media: post?.media?.map(item => ({ + alt: item.alt, type: item.type, url: item.url, })) || [], @@ -693,7 +695,7 @@ export const ProjectShowcasePage: FC = () => { ) const saveUploadedMedia = useCallback( - async (updatedMedia: Array<{ type: string; url: string }>) => { + async (updatedMedia: Array<{ type: string; url: string; alt?: string }>) => { if (!projectId || !selectedPostId) { return } @@ -705,6 +707,7 @@ export const ProjectShowcasePage: FC = () => { }) await updatePostInCache(updatedPost) setValue('media', (updatedPost.media ?? []).map(m => ({ + alt: m.alt, type: m.type, url: m.url, }))) diff --git a/src/libs/shared/lib/utils/rich-text.spec.ts b/src/libs/shared/lib/utils/rich-text.spec.ts index 63857d5d0..9cb62ebd2 100644 --- a/src/libs/shared/lib/utils/rich-text.spec.ts +++ b/src/libs/shared/lib/utils/rich-text.spec.ts @@ -43,4 +43,11 @@ describe('rich-text utils', () => { expect(rendered) .toContain('rel="noopener noreferrer"') }) + + it('supports markdown strikethrough markup', () => { + const rendered = renderRichTextToHtml('~~deleted~~') + + expect(rendered) + .toContain('deleted') + }) }) diff --git a/src/libs/shared/lib/utils/rich-text.ts b/src/libs/shared/lib/utils/rich-text.ts index c2719d596..8be9f9fea 100644 --- a/src/libs/shared/lib/utils/rich-text.ts +++ b/src/libs/shared/lib/utils/rich-text.ts @@ -23,6 +23,7 @@ const RICH_TEXT_ALLOWED_TAGS = [ 'blockquote', 'br', 'code', + 'del', 'div', 'em', 'h1',