Skip to content

Commit

Permalink
feat(docs): theme & adaptivityMode from query string
Browse files Browse the repository at this point in the history
  • Loading branch information
OkciD committed Jan 24, 2025
1 parent 81f48f0 commit a1826ca
Showing 1 changed file with 35 additions and 4 deletions.
39 changes: 35 additions & 4 deletions docs/src/pages/Tokens.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { useAdaptivityWithJSMediaQueries } from '@vkontakte/vkui';
import React, { FC, useMemo, useState } from 'react';
import { useSearchParams } from 'react-router-dom';

import { TokensActions, TokensContent, TokensHeader } from '@/components/pages/Tokens';
import tokensData from '@/public/static/data/tokensData.json';
Expand Down Expand Up @@ -55,14 +56,30 @@ function findThemeTags(themeNames: string[]): string[] {
return tagsList;
}

enum QueryParam {
theme = 'theme',
adaptivityMode = 'adaptivityMode',
}

const Tokens: FC = () => {
const { viewWidth } = useAdaptivityWithJSMediaQueries();
const isTabletPlus = viewWidth > 3;

const themeTags = useMemo(() => findThemeTags(themes), [themes]);
const [selectedTags, setSelectedTags] = useState<Array<ChipOption>>([]);
const [selectedTheme, setSelectedTheme] = useState<string>(themes[0]);
const [selectedValueType, setSelectedValueType] = useState<ValueType>('regular');
const [searchParams, setSearchParams] = useSearchParams();
const [selectedTheme, setSelectedTheme] = useState<string>(() => {
const themeQueryParam = searchParams.get(QueryParam.theme);

return themeQueryParam && themes.includes(themeQueryParam) ? themeQueryParam : themes[0];
});
const [selectedValueType, setSelectedValueType] = useState<ValueType>(() => {
const adaptivityModeQueryParam = searchParams.get(QueryParam.adaptivityMode);

return adaptivityModeQueryParam === 'regular' || adaptivityModeQueryParam === 'compact'
? adaptivityModeQueryParam
: 'regular';
});
const [searchValue, setSearchValue] = useState('');
const searchValueDebounced = useDebounce(searchValue, 500);

Expand All @@ -71,7 +88,21 @@ const Tokens: FC = () => {
};

const changeThemeHandler = (event: React.ChangeEvent<HTMLSelectElement>) => {
setSelectedTheme(event.target.value);
const newTheme = event.target.value;

setSelectedTheme(newTheme);
setSearchParams((prev) => {
prev.set(QueryParam.theme, newTheme);
return prev;
});
};

const changeAdaptivityMode = (newAdaptivityMode: ValueType) => {
setSelectedValueType(newAdaptivityMode);
setSearchParams((prev) => {
prev.set(QueryParam.adaptivityMode, newAdaptivityMode);
return prev;
});
};

return (
Expand All @@ -93,7 +124,7 @@ const Tokens: FC = () => {
}}
valueTypesProps={{
value: selectedValueType,
onChange: setSelectedValueType,
onChange: changeAdaptivityMode,
}}
searchProps={{
value: searchValue,
Expand Down

0 comments on commit a1826ca

Please sign in to comment.