so many changes ew
This commit is contained in:
parent
0801f6a94a
commit
8f09717b2d
|
@ -191,6 +191,7 @@ export function AnswerBetPanel(props: {
|
||||||
onSubmit={submitBet}
|
onSubmit={submitBet}
|
||||||
isSubmitting={isSubmitting}
|
isSubmitting={isSubmitting}
|
||||||
disabled={!!betDisabled}
|
disabled={!!betDisabled}
|
||||||
|
color={'green'}
|
||||||
/>
|
/>
|
||||||
) : (
|
) : (
|
||||||
<BetSignUpPrompt />
|
<BetSignUpPrompt />
|
||||||
|
|
|
@ -85,16 +85,16 @@ export function AnswerResolvePanel(props: {
|
||||||
setIsSubmitting(false)
|
setIsSubmitting(false)
|
||||||
}
|
}
|
||||||
|
|
||||||
const resolutionButtonClass =
|
// const resolutionButtonClass =
|
||||||
resolveOption === 'CANCEL'
|
// resolveOption === 'CANCEL'
|
||||||
? 'bg-yellow-400 hover:bg-yellow-500'
|
// ? 'bg-yellow-400 hover:bg-yellow-500'
|
||||||
: resolveOption === 'CHOOSE' && answers.length
|
// : resolveOption === 'CHOOSE' && answers.length
|
||||||
? 'btn-primary'
|
// ? 'btn-primary'
|
||||||
: resolveOption === 'CHOOSE_MULTIPLE' &&
|
// : resolveOption === 'CHOOSE_MULTIPLE' &&
|
||||||
answers.length > 1 &&
|
// answers.length > 1 &&
|
||||||
answers.every((answer) => chosenAnswers[answer] > 0)
|
// answers.every((answer) => chosenAnswers[answer] > 0)
|
||||||
? 'bg-blue-400 hover:bg-blue-500'
|
// ? 'bg-blue-400 hover:bg-blue-500'
|
||||||
: 'btn-disabled'
|
// : 'btn-disabled'
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Col className="gap-4 rounded">
|
<Col className="gap-4 rounded">
|
||||||
|
@ -129,11 +129,28 @@ export function AnswerResolvePanel(props: {
|
||||||
Clear
|
Clear
|
||||||
</button>
|
</button>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
<ResolveConfirmationButton
|
<ResolveConfirmationButton
|
||||||
|
color={
|
||||||
|
resolveOption === 'CANCEL'
|
||||||
|
? 'yellow'
|
||||||
|
: resolveOption === 'CHOOSE' && answers.length
|
||||||
|
? 'green'
|
||||||
|
: resolveOption === 'CHOOSE_MULTIPLE' &&
|
||||||
|
answers.length > 1 &&
|
||||||
|
answers.every((answer) => chosenAnswers[answer] > 0)
|
||||||
|
? 'blue'
|
||||||
|
: 'indigo'
|
||||||
|
}
|
||||||
|
disabled={
|
||||||
|
!resolveOption ||
|
||||||
|
(resolveOption === 'CHOOSE' && !answers.length) ||
|
||||||
|
(resolveOption === 'CHOOSE_MULTIPLE' &&
|
||||||
|
(!(answers.length > 1) ||
|
||||||
|
!answers.every((answer) => chosenAnswers[answer] > 0)))
|
||||||
|
}
|
||||||
onResolve={onResolve}
|
onResolve={onResolve}
|
||||||
isSubmitting={isSubmitting}
|
isSubmitting={isSubmitting}
|
||||||
openModalButtonClass={resolutionButtonClass}
|
|
||||||
submitButtonClass={resolutionButtonClass}
|
|
||||||
/>
|
/>
|
||||||
</Row>
|
</Row>
|
||||||
</Col>
|
</Col>
|
||||||
|
|
|
@ -395,12 +395,12 @@ export function BuyPanel(props: {
|
||||||
<WarningConfirmationButton
|
<WarningConfirmationButton
|
||||||
marketType="binary"
|
marketType="binary"
|
||||||
amount={betAmount}
|
amount={betAmount}
|
||||||
outcome={outcome}
|
|
||||||
warning={warning}
|
warning={warning}
|
||||||
onSubmit={submitBet}
|
onSubmit={submitBet}
|
||||||
isSubmitting={isSubmitting}
|
isSubmitting={isSubmitting}
|
||||||
disabled={!!betDisabled || outcome === undefined}
|
disabled={!!betDisabled || outcome === undefined}
|
||||||
size="xl"
|
size="xl"
|
||||||
|
color={outcome === 'NO' ? 'red' : 'green'}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
<button
|
<button
|
||||||
|
|
|
@ -2,7 +2,6 @@ import Link from 'next/link'
|
||||||
import { keyBy, groupBy, mapValues, sortBy, partition, sumBy } from 'lodash'
|
import { keyBy, groupBy, mapValues, sortBy, partition, sumBy } from 'lodash'
|
||||||
import dayjs from 'dayjs'
|
import dayjs from 'dayjs'
|
||||||
import { useMemo, useState } from 'react'
|
import { useMemo, useState } from 'react'
|
||||||
import clsx from 'clsx'
|
|
||||||
import { ChevronDownIcon, ChevronUpIcon } from '@heroicons/react/solid'
|
import { ChevronDownIcon, ChevronUpIcon } from '@heroicons/react/solid'
|
||||||
|
|
||||||
import { Bet } from 'web/lib/firebase/bets'
|
import { Bet } from 'web/lib/firebase/bets'
|
||||||
|
@ -599,8 +598,8 @@ function SellButton(props: {
|
||||||
return (
|
return (
|
||||||
<ConfirmationButton
|
<ConfirmationButton
|
||||||
openModalBtn={{
|
openModalBtn={{
|
||||||
className: clsx('btn-sm', isSubmitting && 'btn-disabled loading'),
|
|
||||||
label: 'Sell',
|
label: 'Sell',
|
||||||
|
disabled: isSubmitting,
|
||||||
}}
|
}}
|
||||||
submitBtn={{ className: 'btn-primary', label: 'Sell' }}
|
submitBtn={{ className: 'btn-primary', label: 'Sell' }}
|
||||||
onSubmit={async () => {
|
onSubmit={async () => {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import clsx from 'clsx'
|
import clsx from 'clsx'
|
||||||
import { ReactNode, useState } from 'react'
|
import { ReactNode, useState } from 'react'
|
||||||
import { Button, SizeType } from './button'
|
import { Button, ColorType, SizeType } from './button'
|
||||||
import { Col } from './layout/col'
|
import { Col } from './layout/col'
|
||||||
import { Modal } from './layout/modal'
|
import { Modal } from './layout/modal'
|
||||||
import { Row } from './layout/row'
|
import { Row } from './layout/row'
|
||||||
|
@ -10,6 +10,9 @@ export function ConfirmationButton(props: {
|
||||||
label: string
|
label: string
|
||||||
icon?: JSX.Element
|
icon?: JSX.Element
|
||||||
className?: string
|
className?: string
|
||||||
|
color?: ColorType
|
||||||
|
size?: SizeType
|
||||||
|
disabled?: boolean
|
||||||
}
|
}
|
||||||
cancelBtn?: {
|
cancelBtn?: {
|
||||||
label?: string
|
label?: string
|
||||||
|
@ -23,8 +26,6 @@ export function ConfirmationButton(props: {
|
||||||
onSubmit?: () => void
|
onSubmit?: () => void
|
||||||
onOpenChanged?: (isOpen: boolean) => void
|
onOpenChanged?: (isOpen: boolean) => void
|
||||||
onSubmitWithSuccess?: () => Promise<boolean>
|
onSubmitWithSuccess?: () => Promise<boolean>
|
||||||
disabled: boolean
|
|
||||||
size?: SizeType
|
|
||||||
}) {
|
}) {
|
||||||
const {
|
const {
|
||||||
openModalBtn,
|
openModalBtn,
|
||||||
|
@ -34,8 +35,6 @@ export function ConfirmationButton(props: {
|
||||||
children,
|
children,
|
||||||
onOpenChanged,
|
onOpenChanged,
|
||||||
onSubmitWithSuccess,
|
onSubmitWithSuccess,
|
||||||
disabled,
|
|
||||||
size,
|
|
||||||
} = props
|
} = props
|
||||||
|
|
||||||
const [open, setOpen] = useState(false)
|
const [open, setOpen] = useState(false)
|
||||||
|
@ -76,9 +75,9 @@ export function ConfirmationButton(props: {
|
||||||
<Button
|
<Button
|
||||||
className={clsx(openModalBtn.className)}
|
className={clsx(openModalBtn.className)}
|
||||||
onClick={() => updateOpen(true)}
|
onClick={() => updateOpen(true)}
|
||||||
disabled={disabled}
|
disabled={openModalBtn.disabled}
|
||||||
color="yellow"
|
color={openModalBtn.color}
|
||||||
size={size}
|
size={openModalBtn.size}
|
||||||
>
|
>
|
||||||
{openModalBtn.icon}
|
{openModalBtn.icon}
|
||||||
{openModalBtn.label}
|
{openModalBtn.label}
|
||||||
|
@ -92,9 +91,17 @@ export function ResolveConfirmationButton(props: {
|
||||||
isSubmitting: boolean
|
isSubmitting: boolean
|
||||||
openModalButtonClass?: string
|
openModalButtonClass?: string
|
||||||
submitButtonClass?: string
|
submitButtonClass?: string
|
||||||
|
color?: ColorType
|
||||||
|
disabled?: boolean
|
||||||
}) {
|
}) {
|
||||||
const { onResolve, isSubmitting, openModalButtonClass, submitButtonClass } =
|
const {
|
||||||
props
|
onResolve,
|
||||||
|
isSubmitting,
|
||||||
|
openModalButtonClass,
|
||||||
|
submitButtonClass,
|
||||||
|
color,
|
||||||
|
disabled,
|
||||||
|
} = props
|
||||||
return (
|
return (
|
||||||
<ConfirmationButton
|
<ConfirmationButton
|
||||||
openModalBtn={{
|
openModalBtn={{
|
||||||
|
@ -104,6 +111,9 @@ export function ResolveConfirmationButton(props: {
|
||||||
isSubmitting && 'btn-disabled loading'
|
isSubmitting && 'btn-disabled loading'
|
||||||
),
|
),
|
||||||
label: 'Resolve',
|
label: 'Resolve',
|
||||||
|
color: color,
|
||||||
|
disabled: isSubmitting || disabled,
|
||||||
|
size: 'xl',
|
||||||
}}
|
}}
|
||||||
cancelBtn={{
|
cancelBtn={{
|
||||||
label: 'Back',
|
label: 'Back',
|
||||||
|
|
|
@ -82,11 +82,8 @@ export function CreateGroupButton(props: {
|
||||||
openModalBtn={{
|
openModalBtn={{
|
||||||
label: label ? label : 'Create Group',
|
label: label ? label : 'Create Group',
|
||||||
icon: icon,
|
icon: icon,
|
||||||
className: clsx(
|
className: clsx(className),
|
||||||
isSubmitting ? 'loading btn-disabled' : 'btn-primary',
|
disabled: isSubmitting,
|
||||||
'btn-sm, normal-case',
|
|
||||||
className
|
|
||||||
),
|
|
||||||
}}
|
}}
|
||||||
submitBtn={{
|
submitBtn={{
|
||||||
label: 'Create',
|
label: 'Create',
|
||||||
|
|
|
@ -128,8 +128,10 @@ export function NumericResolutionPanel(props: {
|
||||||
<ResolveConfirmationButton
|
<ResolveConfirmationButton
|
||||||
onResolve={resolve}
|
onResolve={resolve}
|
||||||
isSubmitting={isSubmitting}
|
isSubmitting={isSubmitting}
|
||||||
openModalButtonClass={clsx('w-full mt-2', submitButtonClass)}
|
openModalButtonClass={clsx('w-full mt-2')}
|
||||||
submitButtonClass={submitButtonClass}
|
submitButtonClass={submitButtonClass}
|
||||||
|
color={outcomeMode === 'CANCEL' ? 'yellow' : 'indigo'}
|
||||||
|
disabled={outcomeMode === undefined}
|
||||||
/>
|
/>
|
||||||
</Col>
|
</Col>
|
||||||
)
|
)
|
||||||
|
|
|
@ -57,16 +57,16 @@ export function ResolutionPanel(props: {
|
||||||
setIsSubmitting(false)
|
setIsSubmitting(false)
|
||||||
}
|
}
|
||||||
|
|
||||||
const submitButtonClass =
|
// const submitButtonClass =
|
||||||
outcome === 'YES'
|
// outcome === 'YES'
|
||||||
? 'btn-primary'
|
// ? 'btn-primary'
|
||||||
: outcome === 'NO'
|
// : outcome === 'NO'
|
||||||
? 'bg-red-400 hover:bg-red-500'
|
// ? 'bg-red-400 hover:bg-red-500'
|
||||||
: outcome === 'CANCEL'
|
// : outcome === 'CANCEL'
|
||||||
? 'bg-yellow-400 hover:bg-yellow-500'
|
// ? 'bg-yellow-400 hover:bg-yellow-500'
|
||||||
: outcome === 'MKT'
|
// : outcome === 'MKT'
|
||||||
? 'bg-blue-400 hover:bg-blue-500'
|
// ? 'bg-blue-400 hover:bg-blue-500'
|
||||||
: 'btn-disabled'
|
// : 'btn-disabled'
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Col className={clsx('relative rounded-md bg-white px-8 py-6', className)}>
|
<Col className={clsx('relative rounded-md bg-white px-8 py-6', className)}>
|
||||||
|
@ -76,18 +76,14 @@ export function ResolutionPanel(props: {
|
||||||
</span>
|
</span>
|
||||||
)}
|
)}
|
||||||
<div className="mb-6 whitespace-nowrap text-2xl">Resolve market</div>
|
<div className="mb-6 whitespace-nowrap text-2xl">Resolve market</div>
|
||||||
|
|
||||||
<div className="mb-3 text-sm text-gray-500">Outcome</div>
|
<div className="mb-3 text-sm text-gray-500">Outcome</div>
|
||||||
|
|
||||||
<YesNoCancelSelector
|
<YesNoCancelSelector
|
||||||
className="mx-auto my-2"
|
className="mx-auto my-2"
|
||||||
selected={outcome}
|
selected={outcome}
|
||||||
onSelect={setOutcome}
|
onSelect={setOutcome}
|
||||||
btnClassName={isSubmitting ? 'btn-disabled' : ''}
|
btnClassName={isSubmitting ? 'btn-disabled' : ''}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<Spacer h={4} />
|
<Spacer h={4} />
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
{outcome === 'YES' ? (
|
{outcome === 'YES' ? (
|
||||||
<>
|
<>
|
||||||
|
@ -123,16 +119,25 @@ export function ResolutionPanel(props: {
|
||||||
<>Resolving this market will immediately pay out {BETTORS}.</>
|
<>Resolving this market will immediately pay out {BETTORS}.</>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<Spacer h={4} />
|
<Spacer h={4} />
|
||||||
|
|
||||||
{!!error && <div className="text-red-500">{error}</div>}
|
{!!error && <div className="text-red-500">{error}</div>}
|
||||||
|
|
||||||
<ResolveConfirmationButton
|
<ResolveConfirmationButton
|
||||||
|
color={
|
||||||
|
outcome === 'YES'
|
||||||
|
? 'green'
|
||||||
|
: outcome === 'NO'
|
||||||
|
? 'red'
|
||||||
|
: outcome === 'CANCEL'
|
||||||
|
? 'yellow'
|
||||||
|
: outcome === 'MKT'
|
||||||
|
? 'blue'
|
||||||
|
: 'indigo'
|
||||||
|
}
|
||||||
|
disabled={!outcome}
|
||||||
onResolve={resolve}
|
onResolve={resolve}
|
||||||
isSubmitting={isSubmitting}
|
isSubmitting={isSubmitting}
|
||||||
openModalButtonClass={clsx('w-full mt-2', submitButtonClass)}
|
// openModalButtonClass={clsx('w-full mt-2', submitButtonClass)}
|
||||||
submitButtonClass={submitButtonClass}
|
// submitButtonClass={submitButtonClass}
|
||||||
/>
|
/>
|
||||||
</Col>
|
</Col>
|
||||||
)
|
)
|
||||||
|
|
|
@ -5,18 +5,17 @@ import { Row } from './layout/row'
|
||||||
import { ConfirmationButton } from './confirmation-button'
|
import { ConfirmationButton } from './confirmation-button'
|
||||||
import { ExclamationIcon } from '@heroicons/react/solid'
|
import { ExclamationIcon } from '@heroicons/react/solid'
|
||||||
import { formatMoney } from 'common/util/format'
|
import { formatMoney } from 'common/util/format'
|
||||||
import { Button, SizeType } from './button'
|
import { Button, ColorType, SizeType } from './button'
|
||||||
|
|
||||||
export function WarningConfirmationButton(props: {
|
export function WarningConfirmationButton(props: {
|
||||||
amount: number | undefined
|
amount: number | undefined
|
||||||
outcome?: 'YES' | 'NO' | undefined
|
|
||||||
marketType: 'freeResponse' | 'binary'
|
marketType: 'freeResponse' | 'binary'
|
||||||
warning?: string
|
warning?: string
|
||||||
onSubmit: () => void
|
onSubmit: () => void
|
||||||
disabled: boolean
|
disabled: boolean
|
||||||
isSubmitting: boolean
|
isSubmitting: boolean
|
||||||
openModalButtonClass?: string
|
openModalButtonClass?: string
|
||||||
submitButtonClassName?: string
|
color: ColorType
|
||||||
size: SizeType
|
size: SizeType
|
||||||
}) {
|
}) {
|
||||||
const {
|
const {
|
||||||
|
@ -26,9 +25,8 @@ export function WarningConfirmationButton(props: {
|
||||||
disabled,
|
disabled,
|
||||||
isSubmitting,
|
isSubmitting,
|
||||||
openModalButtonClass,
|
openModalButtonClass,
|
||||||
submitButtonClassName,
|
|
||||||
outcome,
|
|
||||||
size,
|
size,
|
||||||
|
color,
|
||||||
} = props
|
} = props
|
||||||
|
|
||||||
if (!warning) {
|
if (!warning) {
|
||||||
|
@ -36,9 +34,9 @@ export function WarningConfirmationButton(props: {
|
||||||
<Button
|
<Button
|
||||||
size={size}
|
size={size}
|
||||||
disabled={isSubmitting || disabled}
|
disabled={isSubmitting || disabled}
|
||||||
className={clsx(openModalButtonClass, isSubmitting ? 'loading' : '')}
|
className={clsx(openModalButtonClass)}
|
||||||
onClick={onSubmit}
|
onClick={onSubmit}
|
||||||
color={outcome === 'NO' ? 'red' : 'green'}
|
color={color}
|
||||||
>
|
>
|
||||||
{isSubmitting
|
{isSubmitting
|
||||||
? 'Submitting...'
|
? 'Submitting...'
|
||||||
|
@ -51,10 +49,12 @@ export function WarningConfirmationButton(props: {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<ConfirmationButton
|
<ConfirmationButton
|
||||||
disabled={isSubmitting}
|
|
||||||
openModalBtn={{
|
openModalBtn={{
|
||||||
className: clsx(isSubmitting && 'loading'),
|
className: clsx(isSubmitting && 'loading'),
|
||||||
label: amount ? `Wager ${formatMoney(amount)}` : 'Wager',
|
label: amount ? `Wager ${formatMoney(amount)}` : 'Wager',
|
||||||
|
size: size,
|
||||||
|
color: 'yellow',
|
||||||
|
disabled: isSubmitting,
|
||||||
}}
|
}}
|
||||||
cancelBtn={{
|
cancelBtn={{
|
||||||
label: 'Cancel',
|
label: 'Cancel',
|
||||||
|
@ -65,7 +65,6 @@ export function WarningConfirmationButton(props: {
|
||||||
className: clsx('btn border-none btn-sm btn-ghost self-center'),
|
className: clsx('btn border-none btn-sm btn-ghost self-center'),
|
||||||
}}
|
}}
|
||||||
onSubmit={onSubmit}
|
onSubmit={onSubmit}
|
||||||
size={size}
|
|
||||||
>
|
>
|
||||||
<Row className="items-center text-xl">
|
<Row className="items-center text-xl">
|
||||||
<ExclamationIcon
|
<ExclamationIcon
|
||||||
|
|
|
@ -213,7 +213,7 @@ export function NumberCancelSelector(props: {
|
||||||
return (
|
return (
|
||||||
<Col className={clsx('gap-2', className)}>
|
<Col className={clsx('gap-2', className)}>
|
||||||
<Button
|
<Button
|
||||||
color={selected === 'NUMBER' ? 'green' : 'gray'}
|
color={selected === 'NUMBER' ? 'indigo' : 'gray'}
|
||||||
onClick={() => onSelect('NUMBER')}
|
onClick={() => onSelect('NUMBER')}
|
||||||
className={clsx('whitespace-nowrap', btnClassName)}
|
className={clsx('whitespace-nowrap', btnClassName)}
|
||||||
>
|
>
|
||||||
|
@ -244,7 +244,7 @@ function Button(props: {
|
||||||
type="button"
|
type="button"
|
||||||
className={clsx(
|
className={clsx(
|
||||||
'inline-flex flex-1 items-center justify-center rounded-md border border-transparent px-8 py-3 font-medium shadow-sm',
|
'inline-flex flex-1 items-center justify-center rounded-md border border-transparent px-8 py-3 font-medium shadow-sm',
|
||||||
color === 'green' && 'btn-primary text-white',
|
color === 'green' && 'bg-teal-500 bg-teal-600 text-white',
|
||||||
color === 'red' && 'bg-red-400 text-white hover:bg-red-500',
|
color === 'red' && 'bg-red-400 text-white hover:bg-red-500',
|
||||||
color === 'yellow' && 'bg-yellow-400 text-white hover:bg-yellow-500',
|
color === 'yellow' && 'bg-yellow-400 text-white hover:bg-yellow-500',
|
||||||
color === 'blue' && 'bg-blue-400 text-white hover:bg-blue-500',
|
color === 'blue' && 'bg-blue-400 text-white hover:bg-blue-500',
|
||||||
|
|
|
@ -218,9 +218,10 @@ export default function ProfilePage(props: {
|
||||||
/>
|
/>
|
||||||
<ConfirmationButton
|
<ConfirmationButton
|
||||||
openModalBtn={{
|
openModalBtn={{
|
||||||
className: 'btn btn-primary btn-square p-2',
|
className: 'p-2',
|
||||||
label: '',
|
label: '',
|
||||||
icon: <RefreshIcon />,
|
icon: <RefreshIcon className="h-5 w-5" />,
|
||||||
|
color: 'indigo',
|
||||||
}}
|
}}
|
||||||
submitBtn={{
|
submitBtn={{
|
||||||
label: 'Update key',
|
label: 'Update key',
|
||||||
|
|
Loading…
Reference in New Issue
Block a user