You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
1.5 KiB
50 lines
1.5 KiB
import Block from '../blots/block.js'; |
|
import Container from '../blots/container.js'; |
|
import Quill from '../core/quill.js'; |
|
class ListContainer extends Container {} |
|
ListContainer.blotName = 'list-container'; |
|
ListContainer.tagName = 'OL'; |
|
class ListItem extends Block { |
|
static create(value) { |
|
const node = super.create(); |
|
node.setAttribute('data-list', value); |
|
return node; |
|
} |
|
static formats(domNode) { |
|
return domNode.getAttribute('data-list') || undefined; |
|
} |
|
static register() { |
|
Quill.register(ListContainer); |
|
} |
|
constructor(scroll, domNode) { |
|
super(scroll, domNode); |
|
const ui = domNode.ownerDocument.createElement('span'); |
|
const listEventHandler = e => { |
|
if (!scroll.isEnabled()) return; |
|
const format = this.statics.formats(domNode, scroll); |
|
if (format === 'checked') { |
|
this.format('list', 'unchecked'); |
|
e.preventDefault(); |
|
} else if (format === 'unchecked') { |
|
this.format('list', 'checked'); |
|
e.preventDefault(); |
|
} |
|
}; |
|
ui.addEventListener('mousedown', listEventHandler); |
|
ui.addEventListener('touchstart', listEventHandler); |
|
this.attachUI(ui); |
|
} |
|
format(name, value) { |
|
if (name === this.statics.blotName && value) { |
|
this.domNode.setAttribute('data-list', value); |
|
} else { |
|
super.format(name, value); |
|
} |
|
} |
|
} |
|
ListItem.blotName = 'list'; |
|
ListItem.tagName = 'LI'; |
|
ListContainer.allowedChildren = [ListItem]; |
|
ListItem.requiredContainer = ListContainer; |
|
export { ListContainer, ListItem as default }; |
|
//# sourceMappingURL=list.js.map
|