Skip to content

Commit 6a1f40d

Browse files
committed
Vault under
1 parent b25788f commit 6a1f40d

File tree

11 files changed

+62
-5
lines changed

11 files changed

+62
-5
lines changed

src/app/inventory-page/DesktopStores.m.scss

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
display: grid;
1515
grid-template-rows: 46px 1fr;
1616
padding: 16px var(--inventory-column-padding) 6px 0;
17-
align-items: center;
17+
place-items: center;
1818
}
1919

2020
.singleCharacter {
@@ -34,11 +34,21 @@
3434
align-items: center;
3535

3636
@include interactive($hover: true) {
37-
transform: scale(1.5);
37+
transform: scale(1.25);
3838
color: var(--theme-accent-primary);
3939
}
4040
}
4141

42+
.vaultUnderButton {
43+
composes: singleCharacterButton;
44+
45+
font-size: 20px;
46+
47+
&.under > span {
48+
transform: rotate(90deg);
49+
}
50+
}
51+
4252
.inventoryContainer {
4353
:global(.issue-banner-shown) & {
4454
@include desktop {

src/app/inventory-page/DesktopStores.m.scss.d.ts

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/app/inventory-page/DesktopStores.tsx

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ import { DimStore } from 'app/inventory/store-types';
66
import { findItemsByBucket, getCurrentStore, getVault } from 'app/inventory/stores-helpers';
77
import IssueAwarenessBanner from 'app/issue-awareness-banner/IssueAwarenessBanner';
88
import ItemFeedSidebar from 'app/item-feed/ItemFeedSidebar';
9-
import { useSetSetting } from 'app/settings/hooks';
10-
import { AppIcon, maximizeIcon, minimizeIcon } from 'app/shell/icons';
9+
import { useSetSetting, useSetting } from 'app/settings/hooks';
10+
import { AppIcon, levelDownIcon, levellingIcon, maximizeIcon, minimizeIcon } from 'app/shell/icons';
1111
import StoreStats from 'app/store-stats/StoreStats';
1212
import { useEventBusListener } from 'app/utils/hooks';
1313
import { isClassCompatible } from 'app/utils/item-utils';
@@ -36,6 +36,7 @@ export default function DesktopStores({ stores, buckets, singleCharacter }: Prop
3636
const currentStore = getCurrentStore(stores);
3737
const setSetting = useSetSetting();
3838
useEventBusListener(locateItem$, itemPop);
39+
const [vaultUnder, setVaultUnder] = useSetting('vaultUnder');
3940

4041
// Hide the single character toggle for players with only one character
4142
// unless they own items that cannot be used by their only character.
@@ -59,6 +60,7 @@ export default function DesktopStores({ stores, buckets, singleCharacter }: Prop
5960
}
6061

6162
const toggleSingleCharacter = () => setSetting('singleCharacter', !singleCharacter);
63+
const toggleVaultUnder = () => setSetting('vaultUnder', !vaultUnder);
6264

6365
return (
6466
<div className={styles.inventoryContainer}>
@@ -93,6 +95,18 @@ export default function DesktopStores({ stores, buckets, singleCharacter }: Prop
9395
<AppIcon icon={singleCharacter ? minimizeIcon : maximizeIcon} />
9496
</button>
9597
)}
98+
<button
99+
type="button"
100+
className={clsx(styles.vaultUnderButton, { [styles.under]: !vaultUnder })}
101+
onClick={toggleVaultUnder}
102+
title={
103+
singleCharacter
104+
? t('Settings.ExpandSingleCharacter')
105+
: `${t('Settings.SingleCharacter')}: ${t('Settings.SingleCharacterExplanation')}`
106+
}
107+
>
108+
<AppIcon icon={vaultUnder ? levellingIcon : levelDownIcon} />
109+
</button>
96110
</div>
97111
{$featureFlags.issueBanner && <IssueAwarenessBanner />}
98112
</HeaderShadowDiv>
@@ -103,6 +117,7 @@ export default function DesktopStores({ stores, buckets, singleCharacter }: Prop
103117
currentStore={currentStore}
104118
buckets={buckets}
105119
singleCharacter={singleCharacter}
120+
vaultUnder={vaultUnder}
106121
/>
107122
</div>
108123
{$featureFlags.itemFeed && <ItemFeedSidebar />}
@@ -136,6 +151,7 @@ interface InventoryContainerProps {
136151
currentStore: DimStore;
137152
vault: DimStore;
138153
singleCharacter: boolean;
154+
vaultUnder: boolean;
139155
}
140156

141157
function CollapsibleContainer({
@@ -146,6 +162,7 @@ function CollapsibleContainer({
146162
inventoryBucket,
147163
vault,
148164
singleCharacter,
165+
vaultUnder,
149166
}: {
150167
category: string;
151168
inventoryBucket: InventoryBucket[];
@@ -168,6 +185,7 @@ function CollapsibleContainer({
168185
vault={vault}
169186
currentStore={currentStore}
170187
singleCharacter={singleCharacter}
188+
vaultUnder={vaultUnder}
171189
/>
172190
))}
173191
</InventoryCollapsibleTitle>
@@ -180,6 +198,7 @@ function StoresInventory({
180198
currentStore,
181199
vault,
182200
singleCharacter,
201+
vaultUnder,
183202
}: InventoryContainerProps) {
184203
return (
185204
<>
@@ -193,6 +212,7 @@ function StoresInventory({
193212
singleCharacter={singleCharacter}
194213
category={category}
195214
inventoryBucket={inventoryBucket}
215+
vaultUnder={vaultUnder}
196216
/>
197217
))}
198218
{stores[0].destinyVersion === 1 && <D1ReputationSection stores={stores} />}

src/app/inventory-page/StoreBuckets.m.scss

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
@use '../variables.scss' as *;
2+
13
/* The bucket label shown on mobile only */
24
.bucketLabel {
35
display: flex;
@@ -34,3 +36,11 @@
3436
.singleCharacterAccountWideRow {
3537
grid-template-columns: 1fr 1fr;
3638
}
39+
40+
.vaultUnder {
41+
> *:last-child {
42+
grid-column: 1 / -1;
43+
margin-top: 4px;
44+
margin-bottom: 16px;
45+
}
46+
}

src/app/inventory-page/StoreBuckets.m.scss.d.ts

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/app/inventory-page/StoreBuckets.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,15 @@ export function StoreBuckets({
2121
currentStore,
2222
labels,
2323
singleCharacter,
24+
vaultUnder = false,
2425
}: {
2526
bucket: InventoryBucket;
2627
stores: DimStore[];
2728
vault: DimStore;
2829
currentStore: DimStore;
2930
labels?: boolean;
3031
singleCharacter: boolean;
32+
vaultUnder?: boolean;
3133
}) {
3234
let content: React.ReactNode;
3335

@@ -88,6 +90,7 @@ export function StoreBuckets({
8890
<div
8991
className={clsx('store-row', {
9092
[styles.singleCharacterAccountWideRow]: bucket.accountWide && singleCharacter,
93+
[styles.vaultUnder]: vaultUnder,
9194
})}
9295
>
9396
{labels && (

src/app/settings/initial-settings.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,17 @@ import { defaultSettings, Settings as DimApiSettings } from '@destinyitemmanager
22
import { defaultLanguage, DimLanguage } from 'app/i18n';
33

44
/**
5-
* We extend the settings interface so we can try out new settings before committing them to dim-api-types
5+
* We extend the settings interface so we can try out new settings before
6+
* committing them to dim-api-types.
7+
*
8+
* Note: Nowadays, you *do* have to update dim-api-types and migrate the DIM
9+
* backend before using new settings in production - otherwise, the setting will
10+
* not be saved..
611
*/
712
export interface Settings extends DimApiSettings {
813
language: DimLanguage;
914
armorCompare: 'current' | 'base' | 'baseMasterwork';
15+
vaultUnder: boolean;
1016
}
1117

1218
export const initialSettingsState: Settings = {
@@ -40,4 +46,5 @@ export const initialSettingsState: Settings = {
4046
],
4147
organizerColumnsGhost: ['icon', 'name', 'tag', 'perks', 'notes'],
4248
armorCompare: 'baseMasterwork',
49+
vaultUnder: false,
4350
};

src/app/shell/icons/Library.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ export const copyIcon = 'fas fa-copy';
2121
export const downloadIcon = 'fas fa-file-export';
2222
export const sendIcon = 'fas fa-envelope';
2323
export const clearIcon = 'fas fa-eraser';
24+
export const levelDownIcon = 'fas fa-level-down-alt';
2425
export const levellingIcon = 'fas fa-level-up-alt';
2526
export const lockIcon = 'fas fa-lock';
2627
export const unlockedIcon = 'fas fa-unlock';

src/app/shell/icons/font-awesome.scss

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,9 @@
171171
.fa-less-than-equal:before {
172172
content: fa-content($fa-var-less-than-equal);
173173
}
174+
.fa-level-down-alt:before {
175+
content: fa-content($fa-var-level-down-alt);
176+
}
174177
.fa-level-up-alt:before {
175178
content: fa-content($fa-var-level-up-alt);
176179
}

src/data/webfonts/fa-solid-900.ttf

92 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)