mirror of
https://github.com/zadam/trilium.git
synced 2025-11-02 03:16:11 +01:00
chore(react/settings): make layout switch functional
This commit is contained in:
@@ -5,7 +5,7 @@ const SVG_MIME = "image/svg+xml";
|
|||||||
|
|
||||||
export const isShare = !window.glob;
|
export const isShare = !window.glob;
|
||||||
|
|
||||||
function reloadFrontendApp(reason?: string) {
|
export function reloadFrontendApp(reason?: string) {
|
||||||
if (reason) {
|
if (reason) {
|
||||||
logInfo(`Frontend app reload: ${reason}`);
|
logInfo(`Frontend app reload: ${reason}`);
|
||||||
}
|
}
|
||||||
@@ -218,7 +218,7 @@ function randomString(len: number) {
|
|||||||
return text;
|
return text;
|
||||||
}
|
}
|
||||||
|
|
||||||
function isMobile() {
|
export function isMobile() {
|
||||||
return (
|
return (
|
||||||
window.glob?.device === "mobile" ||
|
window.glob?.device === "mobile" ||
|
||||||
// window.glob.device is not available in setup
|
// window.glob.device is not available in setup
|
||||||
|
|||||||
@@ -68,12 +68,12 @@ export function useSpacedUpdate(callback: () => Promise<void>, interval = 1000)
|
|||||||
return spacedUpdateRef.current;
|
return spacedUpdateRef.current;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function useTriliumOption(name: OptionNames): [string, (newValue: string) => void] {
|
export function useTriliumOption(name: OptionNames): [string, (newValue: string) => Promise<void>] {
|
||||||
const initialValue = options.get(name);
|
const initialValue = options.get(name);
|
||||||
const [ value, setValue ] = useState(initialValue);
|
const [ value, setValue ] = useState(initialValue);
|
||||||
|
|
||||||
function wrappedSetValue(newValue: string) {
|
async function wrappedSetValue(newValue: string) {
|
||||||
options.save(name, newValue);
|
await options.save(name, newValue);
|
||||||
};
|
};
|
||||||
|
|
||||||
useTriliumEvent("entitiesReloaded", ({ loadResults }) => {
|
useTriliumEvent("entitiesReloaded", ({ loadResults }) => {
|
||||||
|
|||||||
@@ -1,15 +1,15 @@
|
|||||||
import { t } from "../../../services/i18n";
|
import { t } from "../../../services/i18n";
|
||||||
|
import { isMobile, reloadFrontendApp } from "../../../services/utils";
|
||||||
import FormRadioGroup from "../../react/FormRadioGroup";
|
import FormRadioGroup from "../../react/FormRadioGroup";
|
||||||
import { useTriliumOption } from "../../react/hooks";
|
import { useTriliumOption } from "../../react/hooks";
|
||||||
import OptionsSection from "./components/OptionsSection";
|
import OptionsSection from "./components/OptionsSection";
|
||||||
|
|
||||||
export default function AppearanceSettings() {
|
export default function AppearanceSettings() {
|
||||||
const [ layoutOrientation, setLayoutOrientation ] = useTriliumOption("layoutOrientation");
|
const [ layoutOrientation, setLayoutOrientation ] = useTriliumOption("layoutOrientation");
|
||||||
console.log("Render with ", layoutOrientation);
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<OptionsSection title={t("theme.layout")}>
|
<OptionsSection title={t("theme.layout")}>
|
||||||
<FormRadioGroup
|
{!isMobile() && <FormRadioGroup
|
||||||
name="layout-orientation"
|
name="layout-orientation"
|
||||||
values={[
|
values={[
|
||||||
{
|
{
|
||||||
@@ -21,8 +21,11 @@ export default function AppearanceSettings() {
|
|||||||
value: "horizontal"
|
value: "horizontal"
|
||||||
}
|
}
|
||||||
]}
|
]}
|
||||||
currentValue={layoutOrientation} onChange={setLayoutOrientation}
|
currentValue={layoutOrientation} onChange={async (newValue) => {
|
||||||
/>
|
await setLayoutOrientation(newValue);
|
||||||
|
reloadFrontendApp("layout orientation change");
|
||||||
|
}}
|
||||||
|
/>}
|
||||||
</OptionsSection>
|
</OptionsSection>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -40,14 +40,6 @@ export default class ThemeOptions extends OptionsWidget {
|
|||||||
this.$widget = $(TPL);
|
this.$widget = $(TPL);
|
||||||
this.$themeSelect = this.$widget.find(".theme-select");
|
this.$themeSelect = this.$widget.find(".theme-select");
|
||||||
this.$overrideThemeFonts = this.$widget.find(".override-theme-fonts");
|
this.$overrideThemeFonts = this.$widget.find(".override-theme-fonts");
|
||||||
this.$layoutOrientation = this.$widget.find(`input[name="layout-orientation"]`).on("change", async () => {
|
|
||||||
const newLayoutOrientation = String(this.$widget.find(`input[name="layout-orientation"]:checked`).val());
|
|
||||||
await this.updateOption("layoutOrientation", newLayoutOrientation);
|
|
||||||
utils.reloadFrontendApp("layout orientation change");
|
|
||||||
});
|
|
||||||
|
|
||||||
const $layoutOrientationSection = $(this.$widget[0]);
|
|
||||||
$layoutOrientationSection.toggleClass("hidden-ext", utils.isMobile());
|
|
||||||
|
|
||||||
this.$themeSelect.on("change", async () => {
|
this.$themeSelect.on("change", async () => {
|
||||||
const newTheme = this.$themeSelect.val();
|
const newTheme = this.$themeSelect.val();
|
||||||
|
|||||||
Reference in New Issue
Block a user