diff --git a/packages/tiptap-extensions/src/marks/BackgroundColor.js b/packages/tiptap-extensions/src/marks/BackgroundColor.js new file mode 100644 index 0000000000..e26550e6dd --- /dev/null +++ b/packages/tiptap-extensions/src/marks/BackgroundColor.js @@ -0,0 +1,43 @@ +import { Mark } from 'tiptap' +import { updateMark } from 'tiptap-commands' + +export default class BackgroundColor extends Mark { + get name () { + return 'background_color' + } + + get defaultOptions () { + return { + colors: ['red', 'blue', 'yellow'], + } + } + + get schema () { + return { + attrs: { + color: { + default: 'rgba(255,255,255,0)' + }, + }, + inline: true, + parseDOM: [ + { + style: 'background-color', + getAttrs: (value) => ({ color: value }), + }, { + style: 'background', + getAttrs: (value) => ({ color: value }), + }, + ], + toDOM: mark => [ + "span", + { style: `background-color: ${mark.attrs.color}` }, + 0 + ] + } + } + + commands ({ type }) { + return (attrs) => updateMark(type, attrs) + } +} diff --git a/packages/tiptap-extensions/src/marks/Color.js b/packages/tiptap-extensions/src/marks/Color.js new file mode 100644 index 0000000000..1c5160f7ec --- /dev/null +++ b/packages/tiptap-extensions/src/marks/Color.js @@ -0,0 +1,38 @@ +import { Mark } from 'tiptap' +import { updateMark } from 'tiptap-commands' + +export default class Color extends Mark { + get name () { + return 'color' + } + + get defaultOptions () { + return { + colors: ['red', 'blue', 'yellow'], + } + } + + get schema () { + return { + attrs: { + color: { + default: 'rgba(0, 0, 0, 1)' + }, + }, + inline: true, + parseDOM: [ { + style: 'color', + getAttrs: (value) => ({ color: value }) + } ], + toDOM: mark => [ + "span", + { style: `color: ${mark.attrs.color}` }, + 0 + ] + } + } + + commands ({ type }) { + return (attrs) => updateMark(type, attrs) + } +} \ No newline at end of file diff --git a/packages/tiptap-extensions/src/nodes/OrderedList.js b/packages/tiptap-extensions/src/nodes/OrderedList.js index dbeee04551..2c3cf569cb 100644 --- a/packages/tiptap-extensions/src/nodes/OrderedList.js +++ b/packages/tiptap-extensions/src/nodes/OrderedList.js @@ -7,26 +7,37 @@ export default class OrderedList extends Node { return 'ordered_list' } - get schema() { - return { - attrs: { - order: { - default: 1, - }, - }, - content: 'list_item+', - group: 'block', - parseDOM: [ - { - tag: 'ol', - getAttrs: dom => ({ - order: dom.hasAttribute('start') ? +dom.getAttribute('start') : 1, - }), - }, - ], - toDOM: node => (node.attrs.order === 1 ? ['ol', 0] : ['ol', { start: node.attrs.order }, 0]), + get schema() { + return { + attrs: { + order: { + default: 1 + }, + type: { + default: 1 + } + }, + content: 'list_item+', + group: 'block', + parseDOM: [{ + tag: 'ol', + getAttrs: dom => ({ + order: dom.hasAttribute('start') ? +dom.getAttribute('start') : 1, + type: dom.getAttribute('type') + }) + }], + toDOM: (node) => { + let attrs = {} + if (node.attrs.order !== 1) { + attrs.start = node.attrs.order + } + if (node.attrs.type !== 1) { + attrs.type = node.attrs.type + } + return ['ol', attrs, 0] + } + } } - } commands({ type, schema }) { return () => toggleList(type, schema.nodes.list_item)