暫無描述

Flag.tsx 1.7KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import {
  2. IonAccordion,
  3. IonAccordionGroup,
  4. IonCard,
  5. IonContent,
  6. IonHeader,
  7. IonItem,
  8. IonLabel,
  9. IonPage,
  10. IonTitle,
  11. IonToolbar} from '@ionic/react';
  12. import './Flag.css';
  13. // generate single accordion item given a title and points of info
  14. const AccordionItem = (title: string, content: string[]) => {
  15. return (
  16. <IonAccordion value={title}>
  17. <IonItem slot="header" color="light">
  18. <IonLabel class="ion-text-center">{title}</IonLabel>
  19. </IonItem>
  20. <div className="ion-padding" slot="content">
  21. {
  22. // generate each point in content
  23. content.map((text: string) =>{
  24. return (
  25. <IonCard color="light">
  26. <IonItem>
  27. <IonLabel class="ion-text-center">{text}</IonLabel>
  28. </IonItem>
  29. </IonCard>
  30. );
  31. })
  32. }
  33. </div>
  34. </IonAccordion>)
  35. }
  36. const Flag: React.FC = () => {
  37. // Load Flag.json which has format of Object[],
  38. // where each object has a title and content field.
  39. let content = require("./Flag.json")
  40. return (
  41. <IonPage>
  42. <IonHeader>
  43. <IonToolbar>
  44. <IonTitle class="ion-text-center">TPC</IonTitle>
  45. </IonToolbar>
  46. </IonHeader>
  47. <IonContent fullscreen>
  48. <IonHeader collapse="condense">
  49. <IonToolbar>
  50. <IonTitle size="large">Flag</IonTitle>
  51. </IonToolbar>
  52. </IonHeader>
  53. <IonAccordionGroup multiple={true}>
  54. {
  55. // generate an accordion item for each object in Flag.json
  56. content.map((obj: any) => AccordionItem(obj.title, obj.content))
  57. }
  58. </IonAccordionGroup>
  59. </IonContent>
  60. </IonPage>
  61. );
  62. }
  63. export default Flag;