aboutsummaryrefslogtreecommitdiff
path: root/src/client/util/RichTextSchema.tsx
diff options
context:
space:
mode:
authormonikahedman <monika_hedman@brown.edu>2019-08-05 19:11:54 -0400
committermonikahedman <monika_hedman@brown.edu>2019-08-05 19:11:54 -0400
commit17cab0166753aee765585e1eb700fd85583e7cbb (patch)
tree2274c9c079be576ac53c47becce2b8d0e06d42d9 /src/client/util/RichTextSchema.tsx
parentcd357ea8edaf02567cd705bc519d58067005ad8e (diff)
clickable text box appears
Diffstat (limited to 'src/client/util/RichTextSchema.tsx')
-rw-r--r--src/client/util/RichTextSchema.tsx70
1 files changed, 70 insertions, 0 deletions
diff --git a/src/client/util/RichTextSchema.tsx b/src/client/util/RichTextSchema.tsx
index ce9e29b26..491208c4c 100644
--- a/src/client/util/RichTextSchema.tsx
+++ b/src/client/util/RichTextSchema.tsx
@@ -110,6 +110,33 @@ export const nodes: { [index: string]: NodeSpec } = {
// }
// }]
},
+
+ // TODO
+ checkbox: {
+ inline: true,
+ attrs: {
+ visibility: { default: false },
+ // text: { default: undefined },
+ // textslice: { default: undefined },
+ // textlen: { default: 0 }
+
+ },
+ group: "inline",
+ toDOM(node) {
+ const attrs = { style: `width: 40px` };
+ return ["span", { ...node.attrs, ...attrs }];
+ },
+ // parseDOM: [{
+ // tag: "star", getAttrs(dom: any) {
+ // return {
+ // visibility: dom.getAttribute("visibility"),
+ // oldtext: dom.getAttribute("oldtext"),
+ // oldtextlen: dom.getAttribute("oldtextlen"),
+ // }
+ // }
+ // }]
+ },
+
// :: NodeSpec An inline image (`<img>`) node. Supports `src`,
// `alt`, and `href` attributes. The latter two default to the empty
// string.
@@ -522,6 +549,49 @@ export class ImageResizeView {
}
}
+export class CheckboxView {
+ _view: any;
+ _collapsed: HTMLElement;
+
+ constructor(node: any, view: any, getPos: any) {
+ this._collapsed = document.createElement("span");
+ this._collapsed.textContent = node.attrs.visibility ? "⬛" : "⬜";
+ this._collapsed.style.position = "relative";
+ // this._collapsed.style.width = "80px";
+ this._collapsed.style.height = "20px";
+ let self = this;
+ this._view = view;
+ const js = node.toJSON;
+ node.toJSON = function () {
+
+ return js.apply(this, arguments);
+ };
+ this._collapsed.onpointerdown = function (e: any) {
+ console.log(node.attrs.visibility)
+ if (node.attrs.visibility) {
+ let y = getPos();
+ const attrs = { ...node.attrs };
+ attrs.visibility = !attrs.visibility;
+ view.dispatch(view.state.tr.setNodeMarkup(y, undefined, attrs));
+ self._collapsed.textContent = "⬜";
+ } else {
+ let y = getPos();
+ const attrs = { ...node.attrs };
+ attrs.visibility = !attrs.visibility;
+ console.log(attrs.visibility)
+ view.dispatch(view.state.tr.setNodeMarkup(y, undefined, attrs));
+ self._collapsed.textContent = "⬛";
+ }
+ e.preventDefault();
+ e.stopPropagation();
+ console.log(node.attrs.visibility)
+
+ };
+ (this as any).dom = this._collapsed;
+ }
+
+}
+
export class SummarizedView {
// TODO: highlight text that is summarized. to find end of region, walk along mark
_collapsed: HTMLElement;