From bb9bfef65135c37569739f5c98f4a03978f698df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Famibelle-Pronzola?= Date: Sun, 30 Jul 2023 00:26:54 +0400 Subject: [PATCH] Add Link to awtis in Teks --- components/teks/teks.js | 32 +++++++++++++++++++++++++++----- lib/utils/format.js | 33 +++++++++++++++++++++++++++++++-- 2 files changed, 58 insertions(+), 7 deletions(-) diff --git a/components/teks/teks.js b/components/teks/teks.js index 66366ac..33d6727 100644 --- a/components/teks/teks.js +++ b/components/teks/teks.js @@ -7,6 +7,8 @@ import Grid from '@mui/material/Unstable_Grid2' import Typography from '@mui/material/Typography' import Tooltip from '@mui/material/Tooltip' import {useMediaQuery} from '@mui/material' +import Link from 'next/link' +import slugify from 'slugify' import {styled} from '@mui/material/styles' import ExplicitIcon from '@mui/icons-material/Explicit' @@ -27,10 +29,15 @@ const classes = { grid: `${PREFIX}-grid`, koute: `${PREFIX}-koute`, vwe: `${PREFIX}-vwe`, - pataje: `${PREFIX}-pataje` + pataje: `${PREFIX}-pataje`, + separation: `${PREFIX}-separation` } -const Root = styled('div')(() => ({ +const Root = styled('div')(( + { + theme + } +) => ({ [`&.${classes.container}`]: { marginTop: '3em', }, @@ -47,6 +54,13 @@ const Root = styled('div')(() => ({ zIndex: 9999 }, + [`& .${classes.separation}`]: { + color: 'black', + [theme.getColorSchemeSelector('dark')]: { + color: 'white' + } + }, + '@media (max-width: 600px)': { marginLeft: '0', }, @@ -109,7 +123,7 @@ const ExplicitTooltip = Tooltip export default function Teks({parole}) { const isMobile = useMediaQuery('(max-width:600px)') const langArray = langToArray(parole) - const aliases = getAlias(parole.artistes, parole.prioriteArtistes) + const enhancedAliases = getAlias(parole.artistes, parole.prioriteArtistes, true) useEffect(() => { const isBrowser = () => typeof window !== 'undefined' @@ -124,8 +138,16 @@ export default function Teks({parole}) { - - {aliases} + + {enhancedAliases.map(({type, value}) => { + if (type === 'element') { + return ( + {value} + ) + } + + return {value} + })} {parole.titre} ({parole?.annee}) diff --git a/lib/utils/format.js b/lib/utils/format.js index 1668f44..480be7e 100644 --- a/lib/utils/format.js +++ b/lib/utils/format.js @@ -1,11 +1,20 @@ +import slugify from 'slugify' + export const formatJsonString = stringToFormat => stringToFormat.split('\n').map((string, index) =>
{`${string}`}
) // eslint-disable-line react/no-array-index-key -export const getAlias = (artistes, priorite = null) => { - if (artistes.data.length === 1) { +export const getAlias = (artistes, priorite = null, enhanced = false) => { + if (artistes.data.length === 1 && !enhanced) { return artistes.data[0].attributes.alias } + if (artistes.data.length === 1 && enhanced) { + return [{ + type: 'element', + value: artistes.data[0].attributes.alias + }] + } + const alias = [] const splittedPriority = priorite ? priorite.split('-') .map(p => Number.parseInt(p, 10)) : null @@ -21,5 +30,25 @@ export const getAlias = (artistes, priorite = null) => { } } + if (enhanced) { + const list = new Intl.ListFormat('fr').formatToParts(alias) + return list + } + return new Intl.ListFormat('fr').format(alias) } + +function separateString(inputString) { + const regex = /\s*,\s*|\s+et\s+/ + const strings = inputString.split(regex).map(element => element.trim()) + return strings +} + +export const getAliasObject = inputString => { + const awtis = separateString(inputString) + + return awtis.map(alias => ({ + alias, + slug: slugify(alias, {lower: true, remove: /[*#+~.()'"!:@]/g}) + })) +}