diff --git a/app/models.ts b/app/models.ts index 8ed6f76f6f..7edb228fc3 100644 --- a/app/models.ts +++ b/app/models.ts @@ -178,7 +178,13 @@ type EventBase = { }; export type Permission = string; -export type EventRegistrationPresence = 'PRESENT' | 'NOT_PRESENT' | 'UNKNOWN'; + +export type EventRegistrationPresence = + | 'PRESENT' + | 'TOO_LATE' + | 'NOT_PRESENT' + | 'UNKNOWN'; + export type LEGACY_EventRegistrationPhotoConsent = | 'PHOTO_NOT_CONSENT' | 'PHOTO_CONSENT' diff --git a/app/routes/events/components/EventAdministrate/Administrate.css b/app/routes/events/components/EventAdministrate/Administrate.css index 61fd8c6afd..9481eafa0c 100644 --- a/app/routes/events/components/EventAdministrate/Administrate.css +++ b/app/routes/events/components/EventAdministrate/Administrate.css @@ -62,40 +62,45 @@ color: var(--color-green-7); } -.greenIcon { - font-size: 1.4em; - color: var(--success-color); - - &:hover { - color: var(--color-green-7); - } -} - .orangePill { background-color: var(--color-orange-2); color: var(--color-orange-7); } -.questionIcon { - font-size: 1.4em; +.bluePill { + background-color: var(--color-blue-2); color: var(--color-blue-6); +} + +.greenIcon { + color: var(--success-color); + + ion-icon { + color: var(--success-color); + } +} + +.tooLateIcon { + width: 34px; + height: 34px; + padding: 0.375rem; + cursor: pointer; + border-radius: 50%; &:hover { - color: var(--color-blue-7); + background-color: var(--additive-background); } } -.bluePill { - background-color: var(--color-blue-2); +.questionIcon ion-icon { color: var(--color-blue-6); } .redIcon { - font-size: 1.4em; color: var(--danger-color); - &:hover { - color: var(--color-red-7); + ion-icon { + color: var(--danger-color); } } diff --git a/app/routes/events/components/EventAdministrate/AttendeeElements.tsx b/app/routes/events/components/EventAdministrate/AttendeeElements.tsx index ded589b532..adde80cb8e 100644 --- a/app/routes/events/components/EventAdministrate/AttendeeElements.tsx +++ b/app/routes/events/components/EventAdministrate/AttendeeElements.tsx @@ -25,6 +25,7 @@ type TooltipIconProps = { onClick?: (arg0: React.SyntheticEvent) => unknown; content: string; transparent?: boolean; + iconName?: string; iconClass: string; disabled?: boolean; }; @@ -45,18 +46,27 @@ export const TooltipIcon = ({ onClick, content, transparent, + iconName, iconClass, disabled = false, }: TooltipIconProps) => { + const classNames = cx(iconClass, transparent && styles.transparent); + return ( - - + + {iconName ? ( + + ) : ( + + )} ); }; @@ -66,28 +76,63 @@ export const PresenceIcons = ({ presence, registrationId }: PresenceProps) => { const dispatch = useAppDispatch(); return ( - + + eventId && dispatch(updatePresence(eventId, registrationId, 'PRESENT')) } /> + +
{ + eventId && + dispatch(updatePresence(eventId, registrationId, 'TOO_LATE')); + }} + > + + + + + + +
+
+ eventId && dispatch(updatePresence(eventId, registrationId, 'UNKNOWN')) } /> + eventId && dispatch(updatePresence(eventId, registrationId, 'NOT_PRESENT')) } /> @@ -103,27 +148,29 @@ export const StripeStatus = ({ const dispatch = useAppDispatch(); return ( - + - dispatch(updatePayment(eventId, registrationId, 'manual')) + eventId && dispatch(updatePayment(eventId, registrationId, 'manual')) } /> - dispatch(updatePayment(eventId, registrationId, 'failed')) + eventId && dispatch(updatePayment(eventId, registrationId, 'failed')) } /> @@ -143,13 +190,14 @@ export const Unregister = ({ fetching, registration }: UnregisterProps) => { title="Bekreft avregistrering" message={`Er du sikker på at du vil melde av "${registration.user.fullName}"?`} onConfirm={() => { - dispatch( - unregister({ - eventId, - registrationId: registration.id, - admin: true, - }) - ); + eventId && + dispatch( + unregister({ + eventId, + registrationId: registration.id, + admin: true, + }) + ); }} closeOnConfirm > diff --git a/app/routes/events/components/EventAdministrate/RegistrationTables.tsx b/app/routes/events/components/EventAdministrate/RegistrationTables.tsx index 0906af513b..bb48aa9326 100644 --- a/app/routes/events/components/EventAdministrate/RegistrationTables.tsx +++ b/app/routes/events/components/EventAdministrate/RegistrationTables.tsx @@ -155,7 +155,7 @@ const ConsentIcons = ({ photoConsents ); return ( - + {