Add skeleton of FilterModal
This commit is contained in:
parent
e13c07d57f
commit
e3bdf820b4
5 changed files with 17 additions and 58 deletions
|
|
@ -40,11 +40,6 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.Button.Filter.Blended {
|
.Button.Filter.Blended {
|
||||||
&.FiltersActive .Accessory svg {
|
|
||||||
fill: var(--accent-blue);
|
|
||||||
stroke: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
background: var(--button-bg);
|
background: var(--button-bg);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,6 @@ import { defaultFilterset } from '~utils/defaultFilters'
|
||||||
import FilterIcon from '~public/icons/Filter.svg'
|
import FilterIcon from '~public/icons/Filter.svg'
|
||||||
|
|
||||||
import './index.scss'
|
import './index.scss'
|
||||||
import { getCookie } from 'cookies-next'
|
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
children: React.ReactNode
|
children: React.ReactNode
|
||||||
|
|
@ -167,7 +166,7 @@ const FilterBar = (props: Props) => {
|
||||||
</Select>
|
</Select>
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
className={filterButtonClasses}
|
className="Filter"
|
||||||
blended={true}
|
blended={true}
|
||||||
leftAccessoryIcon={<FilterIcon />}
|
leftAccessoryIcon={<FilterIcon />}
|
||||||
onClick={() => setFilterModalOpen(true)}
|
onClick={() => setFilterModalOpen(true)}
|
||||||
|
|
@ -178,7 +177,7 @@ const FilterBar = (props: Props) => {
|
||||||
defaultFilterSet={defaultFilterset}
|
defaultFilterSet={defaultFilterset}
|
||||||
filterSet={advancedFilters}
|
filterSet={advancedFilters}
|
||||||
open={filterModalOpen}
|
open={filterModalOpen}
|
||||||
onOpenChange={setFilterModalOpen}
|
<FilterModal open={filterModalOpen} onOpenChange={setFilterModalOpen} />
|
||||||
sendAdvancedFilters={handleAdvancedFiltersChanged}
|
sendAdvancedFilters={handleAdvancedFiltersChanged}
|
||||||
/>
|
/>
|
||||||
</>
|
</>
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,7 @@ import type { DialogProps } from '@radix-ui/react-dialog'
|
||||||
import CrossIcon from '~public/icons/Cross.svg'
|
import CrossIcon from '~public/icons/Cross.svg'
|
||||||
import './index.scss'
|
import './index.scss'
|
||||||
|
|
||||||
interface Props extends DialogProps {
|
interface Props extends DialogProps {}
|
||||||
defaultFilterSet: FilterSet
|
defaultFilterSet: FilterSet
|
||||||
filterSet: FilterSet
|
filterSet: FilterSet
|
||||||
sendAdvancedFilters: (filters: FilterSet) => void
|
sendAdvancedFilters: (filters: FilterSet) => void
|
||||||
|
|
@ -46,6 +46,7 @@ const FilterModal = (props: Props) => {
|
||||||
const footerRef = React.createRef<HTMLDivElement>()
|
const footerRef = React.createRef<HTMLDivElement>()
|
||||||
|
|
||||||
// States
|
// States
|
||||||
|
const [filters, setFilters] = useState<{ [key: string]: any }>()
|
||||||
const [open, setOpen] = useState(false)
|
const [open, setOpen] = useState(false)
|
||||||
const [chargeAttackOpen, setChargeAttackOpen] = useState(false)
|
const [chargeAttackOpen, setChargeAttackOpen] = useState(false)
|
||||||
const [fullAutoOpen, setFullAutoOpen] = useState(false)
|
const [fullAutoOpen, setFullAutoOpen] = useState(false)
|
||||||
|
|
@ -109,7 +110,7 @@ const FilterModal = (props: Props) => {
|
||||||
setOriginalOnly(filterSet.original)
|
setOriginalOnly(filterSet.original)
|
||||||
}, [filterSet])
|
}, [filterSet])
|
||||||
|
|
||||||
function openSelect(name: 'charge_attack' | 'full_auto' | 'auto_guard') {
|
function sendFilters() {
|
||||||
setChargeAttackOpen(name === 'charge_attack' ? !chargeAttackOpen : false)
|
setChargeAttackOpen(name === 'charge_attack' ? !chargeAttackOpen : false)
|
||||||
setFullAutoOpen(name === 'full_auto' ? !fullAutoOpen : false)
|
setFullAutoOpen(name === 'full_auto' ? !fullAutoOpen : false)
|
||||||
setAutoGuardOpen(name === 'auto_guard' ? !autoGuardOpen : false)
|
setAutoGuardOpen(name === 'auto_guard' ? !autoGuardOpen : false)
|
||||||
|
|
@ -381,7 +382,7 @@ const FilterModal = (props: Props) => {
|
||||||
<Dialog open={open} onOpenChange={openChange}>
|
<Dialog open={open} onOpenChange={openChange}>
|
||||||
<DialogTrigger asChild>{props.children}</DialogTrigger>
|
<DialogTrigger asChild>{props.children}</DialogTrigger>
|
||||||
<DialogContent
|
<DialogContent
|
||||||
className="Filter"
|
className="Search"
|
||||||
headerref={headerRef}
|
headerref={headerRef}
|
||||||
footerref={footerRef}
|
footerref={footerRef}
|
||||||
onEscapeKeyDown={onEscapeKeyDown}
|
onEscapeKeyDown={onEscapeKeyDown}
|
||||||
|
|
@ -399,8 +400,8 @@ const FilterModal = (props: Props) => {
|
||||||
</span>
|
</span>
|
||||||
</DialogClose>
|
</DialogClose>
|
||||||
</div>
|
</div>
|
||||||
|
<form>
|
||||||
<div className="Fields">
|
<div className="Fields"></div>
|
||||||
{chargeAttackField()}
|
{chargeAttackField()}
|
||||||
{fullAutoField()}
|
{fullAutoField()}
|
||||||
{autoGuardField()}
|
{autoGuardField()}
|
||||||
|
|
@ -413,20 +414,20 @@ const FilterModal = (props: Props) => {
|
||||||
{userQualityField()}
|
{userQualityField()}
|
||||||
{originalOnlyField()}
|
{originalOnlyField()}
|
||||||
</div>
|
</div>
|
||||||
<div className="DialogFooter" ref={footerRef}>
|
<div className="DialogFooter" ref={footerRef}>
|
||||||
<div className="Buttons Spaced">
|
<div className="Buttons Spaced">
|
||||||
<Button
|
<Button
|
||||||
blended={true}
|
blended={true}
|
||||||
text={t('modals.filters.buttons.clear')}
|
<Button blended={true} text={t('modals.filters.buttons.clear')} />
|
||||||
onClick={resetFilters}
|
onClick={resetFilters}
|
||||||
/>
|
/>
|
||||||
<Button
|
<Button
|
||||||
contained={true}
|
contained={true}
|
||||||
text={t('modals.filters.buttons.confirm')}
|
text={t('modals.filters.buttons.confirm')}
|
||||||
onClick={saveFilters}
|
/>
|
||||||
/>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</form>
|
||||||
</DialogContent>
|
</DialogContent>
|
||||||
</Dialog>
|
</Dialog>
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -208,24 +208,6 @@
|
||||||
},
|
},
|
||||||
"filters": {
|
"filters": {
|
||||||
"title": "Advanced filters",
|
"title": "Advanced filters",
|
||||||
"labels": {
|
|
||||||
"charge_attack": "Charge Attack",
|
|
||||||
"full_auto": "Full Auto",
|
|
||||||
"auto_guard": "Auto Guard",
|
|
||||||
"max_buttons": "Maximum number of button presses",
|
|
||||||
"max_turns": "Maximum number of turns",
|
|
||||||
"min_characters": "Minimum number of characters",
|
|
||||||
"min_summons": "Minimum number of summons",
|
|
||||||
"min_weapons": "Minimum number of weapons",
|
|
||||||
"name_quality": "Hide untitled teams",
|
|
||||||
"user_quality": "Hide anonymous users",
|
|
||||||
"original_only": "Hide remixed teams"
|
|
||||||
},
|
|
||||||
"options": {
|
|
||||||
"on": "On",
|
|
||||||
"off": "Off",
|
|
||||||
"on_and_off": "On and Off"
|
|
||||||
},
|
|
||||||
"buttons": {
|
"buttons": {
|
||||||
"confirm": "Save filters",
|
"confirm": "Save filters",
|
||||||
"clear": "Clear filters"
|
"clear": "Clear filters"
|
||||||
|
|
|
||||||
|
|
@ -208,24 +208,6 @@
|
||||||
},
|
},
|
||||||
"filters": {
|
"filters": {
|
||||||
"title": "フィルター設定",
|
"title": "フィルター設定",
|
||||||
"labels": {
|
|
||||||
"charge_attack": "奥義",
|
|
||||||
"full_auto": "フルオート",
|
|
||||||
"auto_guard": "オートガード",
|
|
||||||
"max_buttons": "最大ポチ数",
|
|
||||||
"max_turns": "最大ターン数",
|
|
||||||
"min_characters": "最小キャラクター数",
|
|
||||||
"min_summons": "最小召喚石数",
|
|
||||||
"min_weapons": "最小武器数",
|
|
||||||
"name_quality": "無題の編成なし",
|
|
||||||
"user_quality": "無名のユーザーなし",
|
|
||||||
"original_only": "リミックスなし"
|
|
||||||
},
|
|
||||||
"options": {
|
|
||||||
"on": "ON",
|
|
||||||
"off": "OFF",
|
|
||||||
"on_and_off": "両方"
|
|
||||||
},
|
|
||||||
"buttons": {
|
"buttons": {
|
||||||
"confirm": "フィルターを保存する",
|
"confirm": "フィルターを保存する",
|
||||||
"clear": "保存したフィルターをクリア"
|
"clear": "保存したフィルターをクリア"
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue