nitro-v36-with-renderer-v36
/
src /
components /
navigator /
views /
search /
NavigatorFilterChipsView.tsx
NavigatorFilterChipsView.tsx 1.9 Ko
Télécharger le fichier
import { FC, useRef, useState } from 'react';
import { LocalizeText, SearchFilterOptions } from '../../../../api';
import dropmenuArrow from '../../../../assets/images/habbo-skin/slices/dropmenu-default-arrow.png';
import { ListSelect } from '../../../../common/ListSelect';
import { NativeTextTree } from '../../../../common/native-text/NativeTextTree';
interface NavigatorFilterChipsViewProps {
value: number;
onChange: (index: number) => void;
}
export const NavigatorFilterChipsView: FC<NavigatorFilterChipsViewProps> = (props) => {
const { value, onChange } = props;
const [open, setOpen] = useState(false);
const rootRef = useRef<HTMLDivElement>(null);
const selected = SearchFilterOptions[value] ? value : 0;
return (
<NativeTextTree>
<div ref={rootRef} className={`octane-navigator-air__filter${open ? ' is-open' : ''}`}>
<ListSelect
aria-label={LocalizeText('navigator.filter.anything')}
container={rootRef}
itemClassName="octane-navigator-air__filter-option"
options={SearchFilterOptions.map((filter, index) => ({ value: String(index), label: LocalizeText('navigator.filter.' + filter.name) }))}
popupClassName="octane-navigator-air__filter-list"
sideOffset={-1}
triggerClassName="octane-navigator-air__filter-button"
value={String(selected)}
renderTrigger={(current) => (
<>
<span>{current?.label}</span>
<img src={dropmenuArrow} alt="" width={16} height={16} />
</>
)}
onOpenChange={setOpen}
onValueChange={(next) => onChange(Number(next))}
/>
</div>
</NativeTextTree>
);
};
