From ec4fa80f65cbe30ca83a21dd426fe5c87e359552 Mon Sep 17 00:00:00 2001 From: Victor Holguin Date: Fri, 10 Nov 2023 20:17:59 -0800 Subject: [PATCH] voices/datasets toggle changes, Pageheader accepts button object, bug fixes --- .../src/components/common/Button/Button.tsx | 21 +----- .../components/common/Button/ButtonProps.tsx | 19 +++++ .../layout/PageHeader/PageHeader.tsx | 35 ++++----- .../pages/voice_designer/DatasetEditor.tsx | 2 +- .../voice_designer/VoiceDesignerMainPage.tsx | 71 +++++-------------- .../voice_designer/components/NewList.tsx | 5 +- .../pages/voice_designer/useVoiceRequests.tsx | 6 +- 7 files changed, 63 insertions(+), 96 deletions(-) create mode 100644 packages/fakeyou.com/src/components/common/Button/ButtonProps.tsx diff --git a/packages/fakeyou.com/src/components/common/Button/Button.tsx b/packages/fakeyou.com/src/components/common/Button/Button.tsx index 02d3ac8e0f..060a9cf10b 100644 --- a/packages/fakeyou.com/src/components/common/Button/Button.tsx +++ b/packages/fakeyou.com/src/components/common/Button/Button.tsx @@ -1,28 +1,11 @@ -import React, { ButtonHTMLAttributes } from "react"; +import React from "react"; import { Link } from "react-router-dom"; import "./Button.scss"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; -import { IconDefinition } from "@fortawesome/fontawesome-svg-core"; +import ButtonProps from "./ButtonProps"; import Tippy from "@tippyjs/react"; import "tippy.js/dist/tippy.css"; -interface ButtonProps extends ButtonHTMLAttributes { - label?: string | null; - icon?: IconDefinition; - small?: boolean; - variant?: "primary" | "secondary" | "danger" | "link"; - to?: string; - href?: string; - target?: "_blank" | "_self"; - square?: boolean; - tooltip?: string; - full?: boolean; - iconFlip?: boolean; - download?: boolean | string; - disabled?: boolean; - isLoading?: boolean; -} - export default function Button({ label, icon, diff --git a/packages/fakeyou.com/src/components/common/Button/ButtonProps.tsx b/packages/fakeyou.com/src/components/common/Button/ButtonProps.tsx new file mode 100644 index 0000000000..4ac84869c4 --- /dev/null +++ b/packages/fakeyou.com/src/components/common/Button/ButtonProps.tsx @@ -0,0 +1,19 @@ +import { ButtonHTMLAttributes } from "react"; +import { IconDefinition } from "@fortawesome/fontawesome-svg-core"; + +export default interface ButtonProps extends ButtonHTMLAttributes { + label?: string | null; + icon?: IconDefinition; + small?: boolean; + variant?: "primary" | "secondary" | "danger" | "link"; + to?: string; + href?: string; + target?: "_blank" | "_self"; + square?: boolean; + tooltip?: string; + full?: boolean; + iconFlip?: boolean; + download?: boolean | string; + disabled?: boolean; + isLoading?: boolean; +} \ No newline at end of file diff --git a/packages/fakeyou.com/src/components/layout/PageHeader/PageHeader.tsx b/packages/fakeyou.com/src/components/layout/PageHeader/PageHeader.tsx index 7a810b111e..6b4bb69918 100644 --- a/packages/fakeyou.com/src/components/layout/PageHeader/PageHeader.tsx +++ b/packages/fakeyou.com/src/components/layout/PageHeader/PageHeader.tsx @@ -3,6 +3,7 @@ import Panel from "../../common/Panel"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { IconDefinition } from "@fortawesome/fontawesome-svg-core"; import Button from "components/common/Button"; +import ButtonProps from "components/common/Button/ButtonProps"; import BackButton from "components/common/BackButton"; interface BackConfig { @@ -19,6 +20,7 @@ interface PageHeaderProps { showButton?: boolean; extension?: React.ReactNode; buttonLabel?: string; + button?: ButtonProps; buttonVariant?: "primary" | "secondary" | "danger"; buttonTo?: string; buttonIcon?: IconDefinition; @@ -38,6 +40,7 @@ export default function PageHeader({ full, showButton, extension, + button, buttonLabel, buttonVariant = "primary", buttonTo, @@ -49,10 +52,22 @@ export default function PageHeader({ backbuttonTo, backbuttonLabel, }: PageHeaderProps) { + const icon = ( <>{titleIcon && } ); + const buttonProps = { + ...button ? button : {}, + ...buttonIcon && { icon: buttonIcon }, + ...buttonLabel && { label: buttonLabel }, + ...buttonOnClick && { onClick: buttonOnClick }, + ...buttonTo && { to: buttonTo }, + ...buttonVariant && { variant: buttonVariant } + }; + + const HeaderBtn = () => button || showButton ?