Files
HKSingleParty/03_source/mobile/src/pages/EventDetail/index copy 2.tsx

191 lines
4.9 KiB
TypeScript

// REQ0042/event-detail
//
// PURPOSE:
// - Provides functionality view event detail
//
// RULES:
// - T.B.A.
//
import React, { useEffect, useState } from 'react';
import {
IonHeader,
IonToolbar,
IonContent,
IonPage,
IonButtons,
IonMenuButton,
IonButton,
IonIcon,
IonDatetime,
IonSelectOption,
IonList,
IonItem,
IonLabel,
IonSelect,
IonPopover,
IonText,
IonFooter,
useIonRouter,
} from '@ionic/react';
import './style.scss';
import {
chevronBackOutline,
ellipsisHorizontal,
ellipsisVertical,
heart,
logoIonic,
} from 'ionicons/icons';
import AboutPopover from '../../components/AboutPopover';
import { format, parseISO } from 'date-fns';
import { TestContent } from './TestContent';
import { Helloworld } from '../../api/Helloworld';
import { getEventById } from '../../api/getEventById';
interface AboutProps {}
interface Event {
eventDate: Date;
joinMembers: undefined;
title: string;
price: number;
currency: string;
duration_m: number;
ageBottom: number;
ageTop: number;
location: string;
avatar: string;
}
const EventDetail: React.FC<AboutProps> = () => {
const [showPopover, setShowPopover] = useState(false);
const [popoverEvent, setPopoverEvent] = useState<MouseEvent>();
const [location, setLocation] = useState<'madison' | 'austin' | 'chicago' | 'seattle'>('madison');
const [conferenceDate, setConferenceDate] = useState('2047-05-17T00:00:00-05:00');
const selectOptions = {
header: 'Select a Location',
};
const presentPopover = (e: React.MouseEvent) => {
setPopoverEvent(e.nativeEvent);
setShowPopover(true);
};
function displayDate(date: string, dateFormat: string) {
return format(parseISO(date), dateFormat);
}
const [eventDetail, setEventDetail] = useState<Event | null>(null);
useEffect(() => {
Helloworld();
getEventById('1').then(({ data }) => {
console.log({ data });
setEventDetail(data);
});
}, []);
const router = useIonRouter();
function handleBackOnClick() {
router.goBack();
}
if (!eventDetail) return <>loading</>;
return (
<IonPage id="about-page">
<IonContent>
<IonHeader className="ion-no-border">
<IonToolbar>
<IonButtons slot="start">
{/* <IonMenuButton></IonMenuButton> */}
<IonButton shape="round" onClick={() => handleBackOnClick()}>
<IonIcon slot="icon-only" icon={chevronBackOutline}></IonIcon>
</IonButton>
</IonButtons>
<IonButtons slot="end">
<IonButton onClick={presentPopover}>
<IonIcon slot="icon-only" ios={ellipsisHorizontal} md={ellipsisVertical}></IonIcon>
</IonButton>
</IonButtons>
</IonToolbar>
</IonHeader>
<div className="about-header">
<div className="about-image madison" style={{ opacity: 1 }}></div>
</div>
<div>{eventDetail.avatar}</div>
<div>
<div>{format(new Date(eventDetail.eventDate), 'yyyy-MM-dd')}</div>
<h1>{eventDetail.title}</h1>
<div style={{ display: 'flex', gap: '1rem', alignItems: 'center' }}>
<div>members place holder</div>
<IonButton shape="round">More</IonButton>
</div>
<div
style={{
marginBottom: '1rem',
paddingTop: '1rem',
borderBottom: '1px solid black',
}}
></div>
</div>
<div style={{ display: 'flex', flexDirection: 'column', gap: '1rem' }}>
<div style={{ display: 'flex', gap: '1rem' }}>
<div>{eventDetail.currency}</div>
<div>{eventDetail.price}</div>
per person
</div>
<div>{eventDetail.duration_m}</div>
<div style={{ display: 'flex', gap: '1rem' }}>
<div>{eventDetail.ageBottom}</div>
<div>{eventDetail.ageTop}</div>
<div>years old</div>
</div>
<div>{eventDetail.location}</div>
<div style={{ display: 'flex', gap: '1rem' }}>
<IonIcon icon={logoIonic}></IonIcon>
<div>40</div>
<IonIcon icon={logoIonic}></IonIcon>
<div>20</div>
<IonIcon icon={logoIonic}></IonIcon>
<div>20</div>
</div>
</div>
</IonContent>
<IonFooter>
<div
style={{
display: 'flex',
flexDirection: 'column',
justifyContent: 'center',
margin: '1rem',
}}
>
<IonButton expand="full" shape="round">
Join
</IonButton>
</div>
</IonFooter>
<IonPopover
isOpen={showPopover}
event={popoverEvent}
onDidDismiss={() => setShowPopover(false)}
>
<AboutPopover dismiss={() => setShowPopover(false)} />
</IonPopover>
</IonPage>
);
};
export default React.memo(EventDetail);