Skip to content

Commit 771b70a

Browse files
author
Oleksii Petrov
committed
fixes as per PR + banner modal/confirm modal merged
1 parent 322a1cb commit 771b70a

File tree

22 files changed

+177
-167
lines changed

22 files changed

+177
-167
lines changed

functions/venue.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -829,7 +829,6 @@ exports.adminHideVenue = functions.https.onCall(async (data, context) => {
829829
admin.firestore().collection("venues").doc(venueId).update(updated);
830830
});
831831

832-
//This will be change
833832
exports.adminUpdateBannerMessage = functions.https.onCall(
834833
async (data, context) => {
835834
await checkUserIsOwner(data.venueId, context.auth.token.user_id);

src/api/bannerAdmin.ts

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,29 @@
1+
import Bugsnag from "@bugsnag/js";
12
import firebase from "firebase/app";
23
import { Banner } from "types/banner";
34

4-
export interface makeUpdateBannerProps {
5+
export interface MakeUpdateBannerProps {
56
venueId: string;
67
banner?: Banner;
78
}
89

910
export const makeUpdateBanner = async ({
1011
venueId,
1112
banner,
12-
}: makeUpdateBannerProps): Promise<void> => {
13+
}: MakeUpdateBannerProps): Promise<void> => {
1314
const params = {
1415
venueId,
1516
banner: banner ?? firebase.firestore.FieldValue.delete(),
1617
};
1718

18-
await firebase.functions().httpsCallable("venue-adminUpdateBannerMessage")(
19-
params
20-
);
19+
await firebase
20+
.functions()
21+
.httpsCallable("venue-adminUpdateBannerMessage")(params)
22+
.catch((err) =>
23+
Bugsnag.notify(err, (event) => {
24+
event.addMetadata("Venue::Admin::UpdateBannerMessage::onSubmit", {
25+
venueId,
26+
});
27+
})
28+
);
2129
};

src/components/atoms/ConfirmationModal/ConfirmationModal.scss

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,32 @@
2222
}
2323
}
2424
}
25+
26+
.ConfirmationBannerModal {
27+
text-align: center;
28+
29+
&__header {
30+
font-size: $font-size--xl;
31+
margin: 0;
32+
}
33+
34+
&__message {
35+
padding: $spacing--md 0 $spacing--xl;
36+
}
37+
38+
&__buttons {
39+
display: flex;
40+
justify-content: space-around;
41+
}
42+
}
43+
44+
// Override global styles button
45+
button.ConfirmationBannerModal__button {
46+
width: $button-width;
47+
font-weight: $font-weight--500;
48+
background-color: $primary--live;
49+
50+
&--cancel {
51+
background-color: opaque-white(0.2);
52+
}
53+
}

src/components/atoms/ConfirmationModal/ConfirmationModal.tsx

Lines changed: 27 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,17 @@ interface ConfirmationModalProps {
88
show?: boolean;
99
header?: string;
1010
message: string;
11+
cancelBtnLabel?: string;
12+
saveBtnLabel?: string;
1113
onConfirm: () => void;
1214
onCancel?: () => void;
15+
containerClassName?: string;
16+
headerClassName?: string;
17+
messageClassName?: string;
18+
buttonsContainerClassName?: string;
19+
buttonClassName?: string;
20+
cancelButtonClassName?: string;
21+
isCentered?: boolean;
1322
}
1423

1524
export const ConfirmationModal: FC<ConfirmationModalProps> = ({
@@ -18,6 +27,15 @@ export const ConfirmationModal: FC<ConfirmationModalProps> = ({
1827
message,
1928
onConfirm,
2029
onCancel,
30+
cancelBtnLabel = "No",
31+
saveBtnLabel = "Yes",
32+
containerClassName = "confirmation-modal",
33+
headerClassName = "confirm-header",
34+
messageClassName = "confirm-message",
35+
buttonsContainerClassName = "confirmation-buttons",
36+
buttonClassName = "cancel-button",
37+
cancelButtonClassName = "confirm-button",
38+
isCentered = false,
2139
}) => {
2240
const [isVisible, setIsVisible] = useState(true);
2341

@@ -40,17 +58,17 @@ export const ConfirmationModal: FC<ConfirmationModalProps> = ({
4058
const isShown = show !== undefined ? show : isVisible;
4159

4260
return (
43-
<Modal show={isShown} onHide={hide}>
61+
<Modal show={isShown} onHide={hide} centered={isCentered}>
4462
<Modal.Body>
45-
<div className="confirmation-modal">
46-
{hasHeader && <h2 className="confirm-header">{header}</h2>}
47-
<div className="confirm-message">{message}</div>
48-
<div className="confirmation-buttons">
49-
<Button className="cancel-button" onClick={cancel}>
50-
No
63+
<div className={containerClassName}>
64+
{hasHeader && <h2 className={headerClassName}>{header}</h2>}
65+
<div className={messageClassName}>{message}</div>
66+
<div className={buttonsContainerClassName}>
67+
<Button className={cancelButtonClassName} onClick={cancel}>
68+
{cancelBtnLabel}
5169
</Button>
52-
<Button className="confirm-button" onClick={confirm}>
53-
Yes
70+
<Button className={buttonClassName} onClick={confirm}>
71+
{saveBtnLabel}
5472
</Button>
5573
</div>
5674
</div>

src/components/atoms/LinkButton/LinkButton.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ export interface LinkButtonProps
99
AnchorHTMLAttributes<HTMLAnchorElement>,
1010
HTMLAnchorElement
1111
> {
12-
href?: string;
12+
href: string;
1313
}
1414

1515
export const LinkButton: React.FC<LinkButtonProps> = ({

src/components/molecules/AnnouncementMessage/AnnouncementMessage.scss

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,6 @@ $action-button-padding: 6px;
5252
}
5353

5454
&__container {
55-
position: fixed;
5655
top: 66px;
5756
left: 0;
5857
right: 0;
@@ -64,11 +63,16 @@ $action-button-padding: 6px;
6463

6564
&--centered {
6665
bottom: 0;
66+
position: fixed;
6767
display: flex;
6868
align-items: center;
6969
background-color: opaque-black(0.6);
7070
}
7171

72+
&--admin {
73+
position: initial;
74+
}
75+
7276
&--canceled {
7377
position: relative;
7478
top: 0;

src/components/molecules/AnnouncementMessage/AnnouncementMessage.tsx

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -3,30 +3,25 @@ import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
33
import { faTimesCircle } from "@fortawesome/free-solid-svg-icons";
44
import classNames from "classnames";
55

6-
7-
import { RenderMarkdown } from "components/organisms/RenderMarkdown";
6+
import { Banner } from "types/banner";
87
import { isDefined } from "utils/types";
9-
8+
import { RenderMarkdown } from "components/organisms/RenderMarkdown";
109
import { useShowHide } from "hooks/useShowHide";
11-
12-
import { Banner } from "types/banner";
13-
1410
import { LinkButton } from "components/atoms/LinkButton";
1511

1612
import "./AnnouncementMessage.scss";
1713

1814
export interface AnnouncementMessageProps {
19-
banner?: Banner;
15+
banner: Banner;
2016
announcementForUser?: boolean;
2117
}
2218

2319
export const AnnouncementMessage: React.FC<AnnouncementMessageProps> = ({
2420
banner,
25-
announcementForUser = false,
21+
announcementForUser: isAnnouncementForUser = false,
2622
}) => {
27-
2823
const {
29-
isShown: isShownAnnouncementMessage,
24+
isShown: isAnnouncementMessageVisible,
3025
show: showAnnouncementMessage,
3126
hide: hideAnnouncementMessage,
3227
} = useShowHide();
@@ -44,12 +39,16 @@ export const AnnouncementMessage: React.FC<AnnouncementMessageProps> = ({
4439
const isActiveButton =
4540
banner?.buttonDisplayText && banner?.buttonUrl && banner?.isActionButton;
4641

42+
const isButtonShown = isActiveButton && banner.buttonUrl;
43+
const isAnnouncementCloseable =
44+
isAnnouncementForUser && banner?.hasCloseButton;
45+
4746
const containerClasses = classNames("AnnouncementMessage__container", {
4847
"AnnouncementMessage__container--centered": banner?.isFullScreen,
49-
"AnnouncementContainer--canceled": !announcementForUser,
48+
"AnnouncementMessage__container--admin": !isAnnouncementForUser,
5049
});
5150

52-
if (!announcementForUser && !banner?.content)
51+
if (!isAnnouncementForUser && !banner?.content)
5352
return (
5453
<div className="AnnouncementMessage">
5554
<span className="AnnouncementMessage__default-text">
@@ -58,34 +57,36 @@ export const AnnouncementMessage: React.FC<AnnouncementMessageProps> = ({
5857
</div>
5958
);
6059

61-
if (!isShownAnnouncementMessage) return null;
60+
if (!isAnnouncementMessageVisible) return null;
6261

6362
return (
6463
<div className={containerClasses} onClick={hideAnnouncementMessage}>
6564
<div className="AnnouncementMessage" onClick={noop}>
6665
{banner?.title && (
6766
<h2 className="AnnouncementMessage__title">{banner.title}</h2>
6867
)}
68+
6969
<div className="AnnouncementMessage__content">
70-
<RenderMarkdown text={banner.content} />
71-
{/* {getLinkFromText(banner.content)} */}
70+
<RenderMarkdown text={banner?.content} />
7271
</div>
73-
{isActiveButton && banner.buttonUrl && (
72+
73+
{isButtonShown && (
7474
<LinkButton
75-
href={banner.buttonUrl}
75+
href={banner.buttonUrl || ""}
7676
className="AnnouncementMessage__action-button"
7777
>
78-
{banner.buttonDisplayText}
78+
{banner?.buttonDisplayText}
7979
</LinkButton>
8080
)}
81-
{announcementForUser && banner.hasCloseButton ? (
81+
82+
{isAnnouncementCloseable && (
8283
<span
8384
className="AnnouncementMessage__close-button"
8485
onClick={hideAnnouncementMessage}
8586
>
8687
<FontAwesomeIcon icon={faTimesCircle} />
8788
</span>
88-
) : null}
89+
)}
8990
</div>
9091
</div>
9192
);

src/components/organisms/BannerAdmin/BannerAdmin.scss

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,13 @@
3838
}
3939
}
4040

41-
&__checkbox-label {
41+
&__checkbox__label {
4242
font-size: $font-size--lg;
4343
}
44+
&__checkbox__label__disabled {
45+
color: --white;
46+
opacity: 20%;
47+
}
4448
}
4549

4650
// Override global styles button

0 commit comments

Comments
 (0)