all repos — caroster @ 0168bcad4d88a6c28f52f84ff518eec66d3995b6

[Octree] Group carpool to your event https://caroster.io

feat: 🚸🍻  feedback UX
Simon Mulquin simon@octree.ch
Tue, 31 May 2022 18:22:59 +0200
commit

0168bcad4d88a6c28f52f84ff518eec66d3995b6

parent

d0d47704e427face6c4cea5a2e1326c3679f6f5d

M frontend/containers/DrawerMenu/DrawerMenuItem.tsxfrontend/containers/DrawerMenu/DrawerMenuItem.tsx

@@ -18,7 +18,6 @@ <Button className={classes.button} color="inherit" onClick={onClick}>

{Icon} </Button> <Typography - variant="overline" color="inherit" className={classes.drawerText} >
M frontend/containers/DrawerMenu/index.tsxfrontend/containers/DrawerMenu/index.tsx

@@ -22,7 +22,7 @@ <Drawer variant="permanent" className={classes.drawer}>

<DrawerMenuItem title={t('drawer.travels')} onClick={() => { - router.push(`/e/${uuid}`); + router.push(`/e/${uuid}`, null, {shallow: true} ); setAreDetailsOpened(false); }} Icon={<Icon>directions_car</Icon>}

@@ -31,7 +31,7 @@ />

<DrawerMenuItem title={t('drawer.waitingList')} onClick={() => { - router.push(`/e/${uuid}/waitingList`); + router.push(`/e/${uuid}/waitingList`, null, {shallow: true}); setAreDetailsOpened(false); }} Icon={<Icon>group</Icon>}
M frontend/containers/DrawerMenu/styles.tsfrontend/containers/DrawerMenu/styles.ts

@@ -34,25 +34,32 @@ padding: 0,

borderRadius: '50%', }, drawerMenuItem: ({active}) => ({ + position: 'relative', margin: `${theme.spacing(3)}px auto`, width: `calc(${theme.mixins.toolbar.minHeight}px - 16px)`, height: `calc(${theme.mixins.toolbar.minHeight}px - 16px)`, textAlign: 'center', - color: active ? '#fff' : 'rgba(256, 256, 256, .76)', + color: active + ? theme.palette.background.default + : 'rgba(256, 256, 256, .76)', [theme.breakpoints.down('sm')]: { margin: '0 auto', }, }), drawerText: { + position: 'relative', fontSize: '0.7em', lineHeight: '1.1em', + height: 'auto', display: 'flex', justifyContent: 'center', textTransform: 'none', [theme.breakpoints.down('sm')]: { whiteSpace: 'nowrap', + lineHeight: '.5em', + fontSize: '11px', }, }, }));
M frontend/containers/EventBar/index.tsxfrontend/containers/EventBar/index.tsx

@@ -1,4 +1,4 @@

-import {useEffect, useState, useReducer} from 'react'; +import {useState} from 'react'; import {useRouter} from 'next/router'; import Link from 'next/link'; import {makeStyles} from '@material-ui/core/styles';

@@ -13,7 +13,6 @@ import clsx from 'clsx';

import {useTranslation} from 'react-i18next'; import useAuthStore from '../../stores/useAuthStore'; import useEventStore from '../../stores/useEventStore'; -import useTourStore from '../../stores/useTourStore'; import useProfile from '../../hooks/useProfile'; import useSettings from '../../hooks/useSettings'; import GenericMenu from '../GenericMenu';

@@ -32,8 +31,6 @@ const setAreDetailsOpened = useEventStore(s => s.setAreDetailsOpened);

const token = useAuthStore(s => s.token); const {user} = useProfile(); const settings = useSettings(); - const setTour = useTourStore(s => s.setTour); - const tourStep = useTourStore(s => s.step); const bannerOffset = useBannerStore(s => s.offset); const bannerHeight = useBannerStore(s => s.height); const classes = useStyles({areDetailsOpened, bannerOffset, bannerHeight});

@@ -62,8 +59,6 @@ const signIn = () => router.push('/auth/login');

const goToDashboard = () => router.push('/dashboard'); const goProfile = () => router.push('/profile'); - const onTourRestart = () => setTour({showWelcome: true}); - const noUserMenuActions = [ { label: t('event.actions.add_to_my_events'),

@@ -84,14 +79,6 @@ onClick: signUp,

id: 'SignUpTab', }, {divider: true}, - { - label: t('menu.tour'), - onClick: () => { - setAnchorEl(null); - onTourRestart(); - }, - id: 'TourTab', - }, ]; const loggedMenuActions = [

@@ -106,14 +93,6 @@ onClick: goProfile,

id: 'ProfileTab', }, {divider: true}, - { - label: t('menu.tour'), - onClick: () => { - setAnchorEl(null); - onTourRestart(); - }, - id: 'TourTab', - }, ]; const menuActions = token ? loggedMenuActions : noUserMenuActions;

@@ -245,17 +224,6 @@ </Toolbar>

{areDetailsOpened && <EventDetails />} </AppBar> ); -}; - -const onTourChange = (toggleDetailsOpened: Function) => { - const {prev, step, isCreator} = useTourStore.getState(); - const fromTo = (step1: number, step2: number) => - prev === step1 && step === step2; - - if (isCreator) { - if (fromTo(3, 2) || fromTo(2, 3) || fromTo(4, 5)) toggleDetailsOpened(); - } else if (fromTo(2, 3) || fromTo(3, 2) || fromTo(3, 4)) - toggleDetailsOpened(); }; const useStyles = makeStyles(theme => ({
M frontend/containers/NewTravelDialog/FAQLink.tsxfrontend/containers/NewTravelDialog/FAQLink.tsx

@@ -4,12 +4,13 @@

interface Props { text: string; link: string; + className: string; } -const FAQLink = ({text, link}: Props) => { +const FAQLink = ({text, link, className}: Props) => { const settings = useSettings(); - return <Link target="_blank" href={`${settings?.faq_link}${link}`}>{text}</Link>; + return <Link className={className} target="_blank" href={`${settings?.faq_link}${link}`}>{text}</Link>; }; export default FAQLink;
M frontend/containers/NewTravelDialog/index.tsxfrontend/containers/NewTravelDialog/index.tsx

@@ -128,6 +128,7 @@ name="phone"

FormHelperTextProps={{ component: () => ( <FAQLink + className={classes.faqHelper} link={t('travel.creation.phoneHelper.faq')} text={t('travel.creation.phoneHelper.why')} />

@@ -269,6 +270,9 @@ paddingBottom: theme.spacing(1.5),

}, content: { padding: `${theme.spacing(2)}px 0`, + }, + faqHelper: { + fontSize: '12px', }, field: { ...addSpacing(theme, 1),
M frontend/containers/TravelColumns/NoCar.tsxfrontend/containers/TravelColumns/NoCar.tsx

@@ -39,6 +39,7 @@ margin: `${theme.spacing(4)}px auto`,

marginTop: image ? 0 : theme.spacing(8), width: '280px', maxWidth: '100%', + paddingBottom: theme.spacing(16), textAlign: 'center', }), noTravelImage: ({image}) => ({

@@ -47,6 +48,7 @@ height: image ? 'auto' : theme.spacing(6),

}), share: { marginTop: theme.spacing(6), + backgroundColor: theme.palette.background.default }, }));
M frontend/containers/TravelColumns/index.tsxfrontend/containers/TravelColumns/index.tsx

@@ -145,7 +145,7 @@ position: 'static',

'& li': { display: 'block', '& button:before': { - fontSize: '10px', + fontSize: '12px', }, }, },
M frontend/containers/WaitingList/TravelDialog.tsxfrontend/containers/WaitingList/TravelDialog.tsx

@@ -177,13 +177,14 @@ maxWidth: '100%',

textAlign: 'center', }, noTravelImage: { - width: '100%', + width: 'calc(100% - 2px)', [theme.breakpoints.down('sm')]: { - width: '50%', + width: 'calc(50% - 2px)', }, }, share: { marginTop: theme.spacing(2), + backgroundColor: theme.palette.background.default }, }));
M frontend/locales/en.jsonfrontend/locales/en.json

@@ -142,7 +142,7 @@ "title": "Add a car",

"car.title": "Car and driver", "travel.title": "Travel", "name": "Name of the car", - "seats": "Number of seats", + "seats": "Number of available seats", "meeting": "Meeting place", "phone": "Telephone number", "phoneHelper.faq": "/en/faq",
M frontend/locales/fr.jsonfrontend/locales/fr.json

@@ -136,13 +136,13 @@ "details": "Notes",

"phone": "Contact" }, "creation": { - "date": "Date du départ", - "time": "Heure du départ", + "date": "Date de départ", + "time": "Heure de départ", "title": "Ajouter une voiture", "car.title": "Voiture et contact", "travel.title": "Trajet", "name": "Nom de la voiture", - "seats": "Nombre de places", + "seats": "Nombre de places disponibles", "meeting": "Lieu de rencontre", "phone": "Numéro de téléphone", "phoneHelper.faq": "/fr/faq",
M frontend/stores/useTourStore.tsfrontend/stores/useTourStore.ts

@@ -18,7 +18,7 @@ if(typeof localStorage !== 'undefined')

persistedShowWelcome = JSON.parse(localStorage.getItem(ONBOARDING_STORAGE_KEY)); const useTourStore = create<State>(set => ({ - showWelcome: typeof persistedShowWelcome === 'boolean' ? persistedShowWelcome : true, + showWelcome: false, isCreator: null, run: false, step: -1,