Files
spacedrive/interface/app/$libraryId/Explorer/OptionsPanel.tsx
Vítor Vasconcellos a42bc63f5d Some misc fixes (#836)
* Fix setup-system breaking in macOS due to unavailable envvar
 - Remove unused docker build-arg from ffmpeg workflow
 - Fix Overview Explorer extending below inspector
 - Fix some left behind formatting problems

* Some more formatting
2023-05-20 04:36:35 +00:00

128 lines
3.3 KiB
TypeScript

import { RadixCheckbox, Select, SelectOption, Slider, tw } from '@sd/ui';
import {
ExplorerDirection,
ExplorerOrderByKeys,
getExplorerConfigStore,
getExplorerStore,
useExplorerConfigStore,
useExplorerStore
} from '~/hooks';
const Heading = tw.div`text-ink-dull text-xs font-semibold`;
const Subheading = tw.div`text-ink-dull mb-1 text-xs font-medium`;
const sortOptions: Record<ExplorerOrderByKeys, string> = {
none: 'None',
name: 'Name',
sizeInBytes: 'Size',
dateCreated: 'Date created',
dateModified: 'Date modified',
dateIndexed: 'Date indexed'
};
export default () => {
const explorerStore = useExplorerStore();
const explorerConfig = useExplorerConfigStore();
return (
<div className="p-4">
<Subheading>Item size</Subheading>
{explorerStore.layoutMode === 'media' ? (
<Slider
defaultValue={[10 - explorerStore.mediaColumns]}
min={0}
max={6}
step={2}
onValueChange={([val]) => {
if (val !== undefined) {
getExplorerStore().mediaColumns = 10 - val;
}
}}
/>
) : (
<Slider
onValueChange={(value) => {
getExplorerStore().gridItemSize = value[0] || 100;
}}
defaultValue={[explorerStore.gridItemSize]}
max={200}
step={10}
min={60}
/>
)}
<div className="my-2 mt-4 grid grid-cols-2 gap-2">
<div className="flex flex-col">
<Subheading>Sort by</Subheading>
<Select
value={explorerStore.orderBy}
size="sm"
className="w-full"
onChange={(value) =>
(getExplorerStore().orderBy = value as ExplorerOrderByKeys)
}
>
{Object.entries(sortOptions).map(([value, text]) => (
<SelectOption key={value} value={value}>
{text}
</SelectOption>
))}
</Select>
</div>
<div className="flex flex-col">
<Subheading>Direction</Subheading>
<Select
value={explorerStore.orderByDirection}
size="sm"
className="w-full"
onChange={(value) =>
(getExplorerStore().orderByDirection = value as ExplorerDirection)
}
>
<SelectOption value="asc">Asc</SelectOption>
<SelectOption value="desc">Desc</SelectOption>
</Select>
</div>
</div>
<div className="flex w-full flex-col space-y-3 pt-2">
{explorerStore.layoutMode === 'media' ? (
<RadixCheckbox
checked={explorerStore.mediaAspectSquare}
label="Show square thumbnails"
name="mediaAspectSquare"
onCheckedChange={(value) => {
if (typeof value === 'boolean') {
getExplorerStore().mediaAspectSquare = value;
}
}}
/>
) : (
<RadixCheckbox
checked={explorerStore.showBytesInGridView}
label="Show Object size"
name="showBytesInGridView"
onCheckedChange={(value) => {
if (typeof value === 'boolean') {
getExplorerStore().showBytesInGridView = value;
}
}}
/>
)}
<div>
<Subheading>Double click action</Subheading>
<Select
className="w-full"
value={explorerConfig.openOnDoubleClick ? 'openFile' : 'quickPreview'}
onChange={(value) => {
getExplorerConfigStore().openOnDoubleClick = value === 'openFile';
}}
>
<SelectOption value="openFile">Open File</SelectOption>
<SelectOption value="quickPreview">Quick Preview</SelectOption>
</Select>
</div>
</div>
</div>
);
};