Skip to content

Commit dcd9c1c

Browse files
committed
frontend: automatically show chevronright if settingsitem is btn
1 parent a447c93 commit dcd9c1c

22 files changed

+67
-84
lines changed

frontends/web/src/components/actionable-item/actionable-item.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,10 @@ export const ActionableItem = ({
4949
onClick={onClick}>
5050
{children}
5151
{icon ? icon : (
52-
<ChevronRightDark />
52+
<ChevronRightDark
53+
width={24}
54+
height={24}
55+
/>
5356
)}
5457
</button>
5558
)}

frontends/web/src/components/bottom-navigation/bottom-navigation.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ export const BottomNavigation = () => {
4747
{t('generic.buySell')}
4848
</Link>
4949
<Link
50-
className={`${styles.link} ${pathname.startsWith('/settings/') || pathname.startsWith('/bitsurance/') ? styles.active : ''}`}
50+
className={`${styles.link} ${pathname.startsWith('/settings') || pathname.startsWith('/bitsurance/') ? styles.active : ''}`}
5151
to="/settings/more"
5252
>
5353
<MoreIconSVG />

frontends/web/src/components/dropdown/mobile-fullscreen-selector.module.css

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,8 @@
1-
.dropdown {
2-
appearance: none;
3-
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' aria-labelledby='chevron down' color='%23777'%3E%3Cdefs/%3E%3Cpolyline points='6 10 12 16 18 10'/%3E%3C/svg%3E%0A");
4-
background-repeat: no-repeat;
5-
font-weight: 400;
6-
height: calc(var(--space-quarter) * 3);
7-
padding: 0 calc(var(--space-quarter) + var(--space-eight));
8-
transform: rotate(270deg);
9-
}
10-
111
.dropdownContainer {
122
width: 100%;
133
}
144

15-
.mobileDropdownTrigger {
5+
.mobileSelectorTrigger {
166
background-color: var(--background-secondary);
177
border: none;
188
border-radius: 2px;
@@ -28,7 +18,7 @@
2818
text-align: end;
2919
}
3020

31-
.mobileDropdownValue {
21+
.mobileSelectorValue {
3222
flex: 1;
3323
overflow: hidden;
3424
text-overflow: ellipsis;
@@ -145,7 +135,7 @@
145135
}
146136

147137
@media screen and (max-width: 560px) {
148-
.mobileDropdownTrigger {
138+
.mobileSelectorTrigger {
149139
padding-top: var(--space-quarter);
150140
text-align: start;
151141
}

frontends/web/src/components/dropdown/mobile-fullscreen-selector.tsx

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -112,14 +112,21 @@ export const MobileFullscreenSelector = <T, IsMulti extends boolean = false>({
112112
return false;
113113
}}
114114
/>
115-
<button
116-
className={styles.mobileDropdownTrigger}
117-
onClick={handleOpen}
118-
type="button"
119-
>
120-
<span className={styles.mobileDropdownValue}>{displayValue}</span>
121-
<div className={styles.dropdown} />
122-
</button>
115+
{onOpenChange ? (
116+
<div
117+
className={styles.mobileSelectorTrigger}
118+
>
119+
<span className={styles.mobileSelectorValue}>{displayValue}</span>
120+
</div>
121+
) : (
122+
<button
123+
className={styles.mobileSelectorTrigger}
124+
onClick={handleOpen}
125+
>
126+
<span className={styles.mobileSelectorValue}>{displayValue}</span>
127+
</button>
128+
)
129+
}
123130

124131
{isOpen && (
125132
<div className={styles.fullscreenOverlay}>
@@ -156,7 +163,6 @@ export const MobileFullscreenSelector = <T, IsMulti extends boolean = false>({
156163
key={String(option.value)}
157164
className={`${styles.optionItem} ${isSelected(option) ? styles.selectedOption : ''}`}
158165
onClick={(e) => handleSelect(option, e)}
159-
type="button"
160166
>
161167
<div className={styles.optionContent}>{renderOptions(option)}</div>
162168
</button>

frontends/web/src/routes/settings/components/advanced-settings/connect-full-node-setting.tsx

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
import { useNavigate } from 'react-router-dom';
1818
import { useTranslation } from 'react-i18next';
1919
import { SettingsItem } from '@/routes/settings/components/settingsItem/settingsItem';
20-
import { ChevronRightDark } from '@/components/icon';
2120

2221
export const ConnectFullNodeSetting = () => {
2322
const navigate = useNavigate();
@@ -28,12 +27,6 @@ export const ConnectFullNodeSetting = () => {
2827
settingName={t('settings.expert.electrum.title')}
2928
onClick={() => navigate('/settings/electrum')}
3029
secondaryText={t('settings.expert.electrum.description')}
31-
extraComponent={
32-
<ChevronRightDark
33-
width={24}
34-
height={24}
35-
/>
36-
}
3730
/>
3831
);
3932
};

frontends/web/src/routes/settings/components/advanced-settings/enable-tor-proxy-setting.tsx

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
import { Dispatch, useState } from 'react';
1818
import { useTranslation } from 'react-i18next';
1919
import { SettingsItem } from '@/routes/settings/components/settingsItem/settingsItem';
20-
import { ChevronRightDark } from '@/components/icon';
2120
import { TorProxyDialog } from './tor-proxy-dialog';
2221
import { Message } from '@/components/message/message';
2322
import { TProxyConfig } from '@/routes/settings/advanced-settings';
@@ -48,7 +47,6 @@ export const EnableTorProxySetting = ({ proxyConfig, onChangeConfig }: TProps) =
4847
onClick={() => setShowTorProxyDialog(true)}
4948
secondaryText={t('newSettings.advancedSettings.torProxy.description')}
5049
displayedValue={proxyEnabled ? t('generic.enabled_true') : t('generic.enabled_false')}
51-
extraComponent={<ChevronRightDark width={24} height={24} />}
5250
/>
5351
<TorProxyDialog
5452
open={showTorProxyDialog}

frontends/web/src/routes/settings/components/advanced-settings/export-log-setting.tsx

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616

1717
import { useTranslation } from 'react-i18next';
1818
import { SettingsItem } from '@/routes/settings/components/settingsItem/settingsItem';
19-
import { ChevronRightDark } from '@/components/icon';
2019
import { debug } from '@/utils/env';
2120
import { alertUser } from '@/components/alert/Alert';
2221
import { exportLogs } from '@/api/backend';
@@ -37,12 +36,6 @@ export const ExportLogSetting = () => {
3736
}
3837
}}
3938
secondaryText={t('settings.expert.exportLogs.description')}
40-
extraComponent={
41-
<ChevronRightDark
42-
width={24}
43-
height={24}
44-
/>
45-
}
4639
/>
4740
);
4841
};

frontends/web/src/routes/settings/components/appearance/activeCurrenciesDropdownSetting.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ const ActiveCurrenciesDropdownSetting = () => {
2626
const { t, i18n } = useTranslation();
2727
const { activeCurrencies, defaultCurrency } = useContext(RatesContext);
2828
const { formattedCurrencies } = useLocalizedFormattedCurrencies(i18n.language);
29-
const [isMobileDropdownOpen, setIsMobileDropdownOpen] = useState(false);
29+
const [isMobileSelectorOpen, setIsMobileSelectorOpen] = useState(false);
3030
const isMobile = useMediaQuery('(max-width: 768px)');
3131

3232
return (
@@ -35,11 +35,11 @@ const ActiveCurrenciesDropdownSetting = () => {
3535
collapseOnSmall
3636
settingName={t('newSettings.appearance.activeCurrencies.title')}
3737
secondaryText={t('newSettings.appearance.activeCurrencies.description')}
38-
onClick={() => setIsMobileDropdownOpen(true)}
38+
onClick={!isMobileSelectorOpen ? () => setIsMobileSelectorOpen(true) : undefined}
3939
extraComponent={
4040
<ActiveCurrenciesDropdown
41-
isOpen={isMobileDropdownOpen}
42-
onOpenChange={(isOpen) => setIsMobileDropdownOpen(isOpen)}
41+
isOpen={isMobileSelectorOpen}
42+
onOpenChange={(isOpen) => setIsMobileSelectorOpen(isOpen)}
4343
options={formattedCurrencies}
4444
defaultCurrency={defaultCurrency}
4545
activeCurrencies={activeCurrencies}

frontends/web/src/routes/settings/components/appearance/defaultCurrencyDropdownSetting.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ import settingsDropdownStyles from './settingsdropdown.module.css';
2525

2626
export const DefaultCurrencyDropdownSetting = () => {
2727
const { t, i18n } = useTranslation();
28-
const [isMobileDropdownOpen, setIsMobileDropdownOpen] = useState(false);
28+
const [isMobileSelectorOpen, setIsMobileSelectorOpen] = useState(false);
2929
const currencyName = new Intl.DisplayNames([i18n.language], { type: 'currency' });
3030
const { formattedCurrencies, currenciesWithDisplayName } = useLocalizedFormattedCurrencies(i18n.language);
3131
const { addToActiveCurrencies, updateDefaultCurrency, defaultCurrency, activeCurrencies } = useContext(RatesContext);
@@ -39,7 +39,7 @@ export const DefaultCurrencyDropdownSetting = () => {
3939
settingName={t('newSettings.appearance.defaultCurrency.title')}
4040
secondaryText={t('newSettings.appearance.defaultCurrency.description')}
4141
collapseOnSmall
42-
onClick={() => setIsMobileDropdownOpen(true)}
42+
onClick={!isMobileSelectorOpen ? () => setIsMobileSelectorOpen(true) : undefined}
4343
extraComponent={
4444
<Dropdown
4545
className={settingsDropdownStyles.select}
@@ -48,8 +48,8 @@ export const DefaultCurrencyDropdownSetting = () => {
4848
options={formattedCurrencies}
4949
title={t('newSettings.appearance.defaultCurrency.title')}
5050
mobileFullScreen
51-
isOpen={isMobileDropdownOpen}
52-
onOpenChange={(isOpen) => setIsMobileDropdownOpen(isOpen)}
51+
isOpen={isMobileSelectorOpen}
52+
onOpenChange={(isOpen) => setIsMobileSelectorOpen(isOpen)}
5353
onChange={async (selected) => {
5454
const fiat = selected.value;
5555
updateDefaultCurrency(fiat);

frontends/web/src/routes/settings/components/appearance/languageDropdownSetting.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ import styles from './languageDropDownSetting.module.css';
3030

3131
export const LanguageDropdownSetting = () => {
3232
const { i18n, t } = useTranslation();
33-
const [isMobileDropdownOpen, setIsMobileDropdownOpen] = useState(false);
33+
const [isMobileSelectorOpen, setIsMobileSelectorOpen] = useState(false);
3434
const nativeLocale = useLoad(getNativeLocale);
3535
const selectedLanguage = defaultLanguages[getSelectedIndex(defaultLanguages, i18n)];
3636
const formattedLanguages = defaultLanguages.map(lang => ({ label: lang.display, value: lang.code }));
@@ -40,15 +40,15 @@ export const LanguageDropdownSetting = () => {
4040
return (
4141
<SettingsItem
4242
disabled={!isMobile}
43-
onClick={() => setIsMobileDropdownOpen(true)}
43+
onClick={!isMobileSelectorOpen ? () => setIsMobileSelectorOpen(true) : undefined}
4444
settingName={<div className={styles.container}>{globe}{t('newSettings.appearance.language.title')}</div>}
4545
secondaryText={t('newSettings.appearance.language.description')}
4646
collapseOnSmall
4747
title={nativeLocale && `Detected native locale: ${nativeLocale}`}
4848
extraComponent={
4949
<Dropdown
50-
isOpen={isMobileDropdownOpen}
51-
onOpenChange={(isOpen) => setIsMobileDropdownOpen(isOpen)}
50+
isOpen={isMobileSelectorOpen}
51+
onOpenChange={(isOpen) => setIsMobileSelectorOpen(isOpen)}
5252
mobileFullScreen
5353
className={settingsDropdownStyles.select}
5454
renderOptions={(o) => (o.label)}

0 commit comments

Comments
 (0)