diff --git a/apps/roam/src/components/DiscourseNodeMenu.tsx b/apps/roam/src/components/DiscourseNodeMenu.tsx
index 46fdcc8ed..f5e569aea 100644
--- a/apps/roam/src/components/DiscourseNodeMenu.tsx
+++ b/apps/roam/src/components/DiscourseNodeMenu.tsx
@@ -4,11 +4,11 @@ import {
Popover,
Position,
Button,
- InputGroup,
getKeyCombo,
IKeyCombo,
Icon,
} from "@blueprintjs/core";
+import SettingKeycapInput from "~/components/settings/components/SettingKeycapInput";
import React, {
useCallback,
useEffect,
@@ -496,7 +496,8 @@ export const NodeMenuTriggerComponent = ({
const shortcut = useMemo(() => comboToString(comboKey), [comboKey]);
return (
-
@@ -93,6 +97,7 @@ const ExportOptions = ({
options={["alias", "wikilinks", "roam url"]}
uid={exportSettings.linkType.uid}
parentUid={parentUid}
+ compact
/>
);
diff --git a/apps/roam/src/components/settings/KeyboardShortcutInput.tsx b/apps/roam/src/components/settings/KeyboardShortcutInput.tsx
index 2c7314495..4defbc331 100644
--- a/apps/roam/src/components/settings/KeyboardShortcutInput.tsx
+++ b/apps/roam/src/components/settings/KeyboardShortcutInput.tsx
@@ -1,14 +1,8 @@
import React, { useState, useCallback, useMemo, useRef } from "react";
import { OnloadArgs } from "roamjs-components/types";
-import {
- InputGroup,
- Button,
- getKeyCombo,
- IKeyCombo,
- Label,
-} from "@blueprintjs/core";
-import Description from "~/components/settings/SettingsDescription";
-import { settingAnchor } from "~/components/settings/utils/settingAnchor";
+import { Button, getKeyCombo, IKeyCombo } from "@blueprintjs/core";
+import SettingKeycapInput from "~/components/settings/components/SettingKeycapInput";
+import SettingItemRow from "~/components/settings/components/SettingItemRow";
import { DISCOURSE_TOOL_SHORTCUT_KEY } from "~/data/userSettings";
import { setPersonalSetting } from "~/components/settings/utils/accessors";
import { comboToString } from "~/components/DiscourseNodeMenu";
@@ -93,26 +87,32 @@ const KeyboardShortcutInput = ({
}, [extensionAPI, settingKey, blockPropKey]);
return (
-
+ (
+ setIsActive(true)}
+ onBlur={() => setIsActive(false)}
+ rightElement={
+
+ }
+ />
+ )}
+ />
);
};
diff --git a/apps/roam/src/components/settings/NodeConfig.tsx b/apps/roam/src/components/settings/NodeConfig.tsx
index 4f0672a86..b277bd0ec 100644
--- a/apps/roam/src/components/settings/NodeConfig.tsx
+++ b/apps/roam/src/components/settings/NodeConfig.tsx
@@ -1,14 +1,7 @@
import React, { useState, useCallback, useEffect, useRef } from "react";
import getDiscourseNodes, { DiscourseNode } from "~/utils/getDiscourseNodes";
import { getSubTree } from "roamjs-components/util";
-import Description from "~/components/settings/SettingsDescription";
-import {
- Label,
- InputGroup,
- ControlGroup,
- Tooltip,
- Icon,
-} from "@blueprintjs/core";
+import { InputGroup, ControlGroup, Tooltip, Icon } from "@blueprintjs/core";
import DiscourseNodeSpecification from "./DiscourseNodeSpecification";
import DiscourseNodeAttributes from "./DiscourseNodeAttributes";
import DiscourseNodeCanvasSettings, {
@@ -34,7 +27,8 @@ import {
} from "./components/BlockPropSettingPanels";
import { ROAM_DOCS, withDocsLink } from "./utils/docs";
import { SettingsGroup } from "./components/SettingsHeadings";
-import SettingsDrillDownRow from "./components/SettingsDrillDownRow";
+import SettingItemRow from "./components/SettingItemRow";
+import SettingDrillDownSummary from "./components/SettingDrillDownSummary";
import { useSettingsNav } from "./navigation/SettingsNavContext";
import { nodeConfigSegmentIds } from "./utils/settingsNavigation";
@@ -116,38 +110,41 @@ const DiscourseNodeColorSetting = ({
)}
-
+
+ {
+ if (colorWriteTimeoutRef.current) {
+ window.clearTimeout(colorWriteTimeoutRef.current);
+ colorWriteTimeoutRef.current = null;
+ }
+ pendingColorRef.current = null;
+ setColor("");
+ persistColorValue("");
+ }}
+ />
+
+
+ }
+ />
>
);
};
@@ -293,11 +290,16 @@ const NodeConfig = ({ node }: { node: DiscourseNode }) => {
return (
- nav.push(nodeConfigSegmentIds.index)}
+ scope="global"
+ control={
+ nav.push(nodeConfigSegmentIds.index)}
+ />
+ }
/>
{
parentUid={node.type}
uid={shortcutUid}
/>
- nav.push(nodeConfigSegmentIds.template)}
+ scope="global"
+ control={
+ nav.push(nodeConfigSegmentIds.template)}
+ />
+ }
/>
@@ -394,26 +401,28 @@ const NodeConfig = ({ node }: { node: DiscourseNode }) => {
-
+ {
+ validate({
+ tag: tagValue,
+ format: formatValue,
+ isSpecificationEnabled,
+ });
+ }}
+ />
+ }
+ />
{isSyncEnabled() && (
diff --git a/apps/roam/src/components/settings/PageGroupPanel.tsx b/apps/roam/src/components/settings/PageGroupPanel.tsx
index 584cb83b5..c68bf84fc 100644
--- a/apps/roam/src/components/settings/PageGroupPanel.tsx
+++ b/apps/roam/src/components/settings/PageGroupPanel.tsx
@@ -1,12 +1,12 @@
import React, { useState, useCallback } from "react";
-import { Label, Button, Intent, Tag, InputGroup } from "@blueprintjs/core";
-import Description from "~/components/settings/SettingsDescription";
+import { Button, Intent, Tag, InputGroup } from "@blueprintjs/core";
import AutocompleteInput from "roamjs-components/components/AutocompleteInput";
import createBlock from "roamjs-components/writes/createBlock";
import deleteBlock from "roamjs-components/writes/deleteBlock";
import getAllPageNames from "roamjs-components/queries/getAllPageNames";
import { type PageGroup } from "~/utils/getSuggestiveModeConfigSettings";
import { setGlobalSetting } from "~/components/settings/utils/accessors";
+import SettingItemRow from "./components/SettingItemRow";
import {
GLOBAL_KEYS,
SUGGESTIVE_MODE_KEYS,
@@ -129,107 +129,109 @@ const PageGroupsPanel = ({
}, []);
return (
-