("");
+
+ React.useEffect(() => {
+ const createUid = async () => {
+ const currentPageUid =
+ (await window.roamAlphaAPI.ui.mainWindow.getOpenPageOrBlockUid()) ||
+ window.roamAlphaAPI.util.dateToPageUid(new Date());
+
+ if (!currentPageUid) throw new Error("No current page uid");
+ console.log(currentPageUid);
+ const newUid = await createBlock({
+ parentUid: currentPageUid,
+ node: { text: "time-field" },
+ });
+ setUid(newUid);
+ };
+ createUid();
+ }, []);
+
+ if (!uid) return Loading...
;
+
+ return (
+ <>
+ Selected time: {value.toLocaleTimeString()}
+
+ >
+ );
+ }),
+ label: "TimePanel",
+ },
];
export default runExtension(async (args) => {
@@ -229,6 +271,7 @@ export default runExtension(async (args) => {
FormDialog,
PageInput,
renderToast,
+ TimePanel,
},
util: {
renderOverlay,
diff --git a/src/components/BlockErrorBoundary.tsx b/src/components/BlockErrorBoundary.tsx
index fe50cf0..eb95567 100644
--- a/src/components/BlockErrorBoundary.tsx
+++ b/src/components/BlockErrorBoundary.tsx
@@ -1,7 +1,11 @@
import React from "react";
import createBlock from "../writes/createBlock";
-type BlockErrorBoundaryProps = { blockUid: string; message: string };
+type BlockErrorBoundaryProps = {
+ blockUid: string;
+ message: string;
+ children: React.ReactNode;
+};
type BlockErrorBoundaryState = { hasError: boolean };
class BlockErrorBoundary extends React.Component<
diff --git a/src/components/ComponentContainer.tsx b/src/components/ComponentContainer.tsx
index f956f37..4b62218 100644
--- a/src/components/ComponentContainer.tsx
+++ b/src/components/ComponentContainer.tsx
@@ -8,6 +8,7 @@ import { OnloadArgs } from "../types/native";
const ComponentContainer: React.FunctionComponent<{
blockId?: string;
className?: string;
+ children?: React.ReactNode;
}> = ({ blockId, className, children }) => {
const [showIcons, setShowIcons] = useState(false);
const appear = useCallback(() => setShowIcons(true), [setShowIcons]);
diff --git a/src/components/ConfigPanels/OauthPanel.tsx b/src/components/ConfigPanels/OauthPanel.tsx
index 9530774..a0992f5 100644
--- a/src/components/ConfigPanels/OauthPanel.tsx
+++ b/src/components/ConfigPanels/OauthPanel.tsx
@@ -27,7 +27,7 @@ const OauthPanel: FieldPanel = ({ uid, parentUid, options }) => {
: []
);
const onCheck = useCallback(
- (e) => {
+ (e: React.ChangeEvent) => {
const checked = (e.target as HTMLInputElement).checked;
setUseLocal(checked);
if (checked) {
diff --git a/src/components/CursorMenu.tsx b/src/components/CursorMenu.tsx
index 3085877..6b6e702 100644
--- a/src/components/CursorMenu.tsx
+++ b/src/components/CursorMenu.tsx
@@ -147,7 +147,7 @@ const CursorMenu = >({
[filter, initialItems]
);
const onSelect = useCallback(
- (item) => {
+ (item: { text: string; id: string } & T) => {
if (menuRef.current) {
onItemSelect(item);
onClose();
diff --git a/src/components/MenuItemSelect.tsx b/src/components/MenuItemSelect.tsx
index 87e0016..1134c26 100644
--- a/src/components/MenuItemSelect.tsx
+++ b/src/components/MenuItemSelect.tsx
@@ -1,5 +1,10 @@
import { Button, ButtonProps, MenuItem } from "@blueprintjs/core";
-import { SelectProps, Select, ICreateNewItem } from "@blueprintjs/select";
+import {
+ SelectProps,
+ Select,
+ ICreateNewItem,
+ isCreateNewItem,
+} from "@blueprintjs/select";
import React, { ReactText, ButtonHTMLAttributes, ReactNode } from "react";
type ActiveItem = T | ICreateNewItem | null | undefined;
@@ -38,7 +43,7 @@ const MenuItemSelect = (
const defaultButton = (