Skip to content

Commit

Permalink
Merge branch 'master' of github.com:eisbuk/EisBuk into feature/approvals
Browse files Browse the repository at this point in the history
  • Loading branch information
fadwamahmoud committed Jul 11, 2023
2 parents 5d3572d + 7c8c210 commit ea2c72b
Show file tree
Hide file tree
Showing 42 changed files with 603 additions and 492 deletions.
37 changes: 37 additions & 0 deletions .github/workflow.templates/vitest-matrix.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
#! YAML library files must be named *.lib.yml
#@ load("setup.lib.yml", "checkout")
#@ load("cache.lib.yml", "cache_node")
#@ load("rush.lib.yml", "rush_add_path", "rush_update", "rush_build")

#! You can run this workflow bu pushing to a branch with the name
#! cypress-matrix/<anything>

name: VitestMatrix

"on":
push:
branches:
- "vitest-matrix/**"
schedule:
- cron: "30 5 * * 1,3"

jobs:
test-v18:
name: Run tests
runs-on: ubuntu-20.04
strategy:
fail-fast: false
matrix:
dummy1: [1, 2, 3, 4, 5, 6]
dummy2: [1, 2, 3, 4, 5, 6]
steps:
- #@ checkout()
- uses: actions/setup-node@v2
with:
node-version: "18"
- #@ cache_node()
- #@ rush_add_path()
- #@ rush_update()
- #@ rush_build()
- name: Run tests
run: cd packages/client && rushx test:emulators:ci
54 changes: 54 additions & 0 deletions .github/workflows/vitest-matrix.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
name: VitestMatrix
"on":
push:
branches:
- vitest-matrix/**
schedule:
- cron: 30 5 * * 1,3
jobs:
test-v18:
name: Run tests
runs-on: ubuntu-20.04
strategy:
fail-fast: false
matrix:
dummy1:
- 1
- 2
- 3
- 4
- 5
- 6
dummy2:
- 1
- 2
- 3
- 4
- 5
- 6
steps:
- uses: actions/checkout@v2
with:
submodules: recursive
fetch-depth: 1
- uses: actions/setup-node@v2
with:
node-version: "18"
- name: Cache node modules and firebase emulators
uses: actions/cache@v2
with:
path: |
~/.rush
~/.pnpm-store
common/temp
**/node_modules
~/.cache/firebase/emulators
key: ${{ runner.os }}-modules-emulators-node18-v1-${{ hashFiles('**/pnpm-lock.yaml') }}
- name: Add rush directory to PATH
run: echo PATH=$PWD/common/scripts/:$PATH >> $GITHUB_ENV
- name: Install and build packages
run: rush update
- name: Build packages
run: rush build
- name: Run tests
run: cd packages/client && rushx test:emulators:ci
Binary file not shown.
2 changes: 1 addition & 1 deletion packages/client/public/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
/>
<link href="/app/bundle.css" rel="stylesheet" />
<link rel="manifest" href="/manifest.json" />
<title>EisBuk</title>
<title>Booking App</title>
</head>
<body>
<noscript>You need to enable JavaScript to run this app.</noscript>
Expand Down
66 changes: 66 additions & 0 deletions packages/client/src/controllers/Layout.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
import React from "react";
import { useSelector } from "react-redux";

import { LinkItem, Layout, UserAvatarProps } from "@eisbuk/ui";
import { PrivateRoutes } from "@eisbuk/shared/ui";
import i18n, { NavigationLabel } from "@eisbuk/translations";
import { ClipboardList, Users, DocumentDuplicate, Cog } from "@eisbuk/svg";

import BirthdayMenu from "@/controllers/BirthdayMenu";
import { NotificationsContainer } from "@/features/notifications/components/index";

import { getIsAdmin } from "@/store/selectors/auth";
import { getOrgDisplayName } from "@/store/selectors/orgInfo";

interface Props {
user?: UserAvatarProps;
additionalButtons?: JSX.Element;
children?: React.ReactNode[] | React.ReactNode;
}

const LayoutController: React.FC<Props> = (params) => {
const isAdmin = useSelector(getIsAdmin);

const displayName = useSelector(getOrgDisplayName);
const logo = displayName ? (
<h1 className="font-fredoka font-semibold text-3xl text-white">
{displayName}
</h1>
) : null;

return (
<Layout
{...params}
logo={logo}
isAdmin={isAdmin}
adminLinks={adminLinks}
Notifications={NotificationsContainer}
additionalAdminContent={<BirthdayMenu />}
/>
);
};

const adminLinks: LinkItem[] = [
{
Icon: ClipboardList,
label: i18n.t(NavigationLabel.Attendance),
slug: PrivateRoutes.Root,
},
{
Icon: DocumentDuplicate,
label: i18n.t(NavigationLabel.Slots),
slug: PrivateRoutes.Slots,
},
{
Icon: Users,
label: i18n.t(NavigationLabel.Athletes),
slug: PrivateRoutes.Athletes,
},
{
Icon: Cog,
label: i18n.t(NavigationLabel.OrganizationSettings),
slug: PrivateRoutes.AdminPreferences,
},
];

export default LayoutController;
27 changes: 0 additions & 27 deletions packages/client/src/data/navigation.ts

This file was deleted.

8 changes: 8 additions & 0 deletions packages/client/src/main.css
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,14 @@
@import "tailwindcss/utilities";
@import "../../ui/dist/style.css";

@font-face {
font-family: "Fredoka One";
src: url("/fonts/fredoka/fredoka_variable.ttf") format("truetype");
font-weight: 300 700;
font-style: normal;
font-display: swap;
}

.center-absolute {
@apply absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2;
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ const PreviewField: React.FC<PreviewFieldProps> = ({ name, ...props }) => {
organizationName: "Organization Name",
name: "Saul",
surname: "Goodman",
bookingsLink: "https://eisbuk.it/saul",
bookingsLink: "https://ice.it/saul",
bookingsMonth: "April",
extendedBookingsDate: "06/04",
icsFile: "icsFile.ics",
Expand Down
112 changes: 52 additions & 60 deletions packages/client/src/pages/admin_preferences/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,22 +9,24 @@ import i18n, {
ValidationMessage,
useTranslation,
} from "@eisbuk/translations";
import { Layout, Button, ButtonColor, ButtonSize, TabItem } from "@eisbuk/ui";
import {
Button,
ButtonColor,
ButtonSize,
TabItem,
LayoutContent,
} from "@eisbuk/ui";
import { Cog, Mail } from "@eisbuk/svg";

import Layout from "@/controllers/Layout";
import AdminsField from "./AdminsField";
import BirthdayMenu from "@/controllers/BirthdayMenu";
import AthletesApproval from "@/controllers/AthletesApproval";
import { NotificationsContainer } from "@/features/notifications/components";

import { updateOrganization } from "@/store/actions/organizationOperations";
import { getOrganizationSettings } from "@/store/selectors/app";
import { getLocalAuth } from "@/store/selectors/auth";

import { isEmpty } from "@/utils/helpers";

import { adminLinks } from "@/data/navigation";

import EmailTemplateSettings from "./views/EmailTemplateSettings";
import GeneralSettings from "./views/GeneralSettings";

Expand Down Expand Up @@ -56,12 +58,6 @@ const OrganizationSettings: React.FC = () => {

const organization = useSelector(getOrganizationSettings);
const userAuthInfo = useSelector(getLocalAuth);
const additionalAdminContent = (
<React.Fragment>
<BirthdayMenu />
<AthletesApproval />
</React.Fragment>
);
const { t } = useTranslation();

const handleSubmit = (
Expand Down Expand Up @@ -104,56 +100,52 @@ const OrganizationSettings: React.FC = () => {
);

return (
<Layout
isAdmin
adminLinks={adminLinks}
Notifications={NotificationsContainer}
additionalAdminContent={additionalAdminContent}
additionalButtons={additionalButtons}
>
<div className="content-container pt-[44px] px-[71px] pb-8 md:pt-[62px]">
<Formik
{...{ initialValues }}
onSubmit={(values, actions) => handleSubmit(values, actions)}
validationSchema={OrganizationValidation}
>
{({ isSubmitting, isValidating, handleReset }) => (
<div className="md:px-11">
{view === Views.GeneralSettings && (
<AdminsField currentUser={currentUser} />
)}

<Form>
{view === Views.EmailTemplates ? (
<EmailTemplateSettings />
) : (
<GeneralSettings />
<Layout additionalButtons={additionalButtons}>
<LayoutContent>
<div className="pt-[44px] px-[71px] pb-8 md:pt-[62px]">
<Formik
{...{ initialValues }}
onSubmit={(values, actions) => handleSubmit(values, actions)}
validationSchema={OrganizationValidation}
>
{({ isSubmitting, isValidating, handleReset }) => (
<div className="md:px-11">
{view === Views.GeneralSettings && (
<AdminsField currentUser={currentUser} />
)}

<div className="py-4 flex justify-end items-center gap-2">
<Button
onClick={handleReset}
disabled={isSubmitting || isValidating}
className="!text-cyan-500"
size={ButtonSize.MD}
>
{t(ActionButton.Reset)}
</Button>
<Button
disabled={isSubmitting || isValidating}
color={ButtonColor.Primary}
size={ButtonSize.MD}
aria-label={"save"}
type="submit"
>
{t(ActionButton.Save)}
</Button>
</div>
</Form>
</div>
)}
</Formik>
</div>
<Form>
{view === Views.EmailTemplates ? (
<EmailTemplateSettings />
) : (
<GeneralSettings />
)}

<div className="py-4 flex justify-end items-center gap-2">
<Button
onClick={handleReset}
disabled={isSubmitting || isValidating}
className="!text-cyan-500"
size={ButtonSize.MD}
>
{t(ActionButton.Reset)}
</Button>
<Button
disabled={isSubmitting || isValidating}
color={ButtonColor.Primary}
size={ButtonSize.MD}
aria-label={"save"}
type="submit"
>
{t(ActionButton.Save)}
</Button>
</div>
</Form>
</div>
)}
</Formik>
</div>
</LayoutContent>
</Layout>
);
};
Expand Down
Loading

0 comments on commit ea2c72b

Please sign in to comment.