fix details
This commit is contained in:
@@ -11,7 +11,9 @@ export default Node.create({
|
|||||||
|
|
||||||
content: 'inline*',
|
content: 'inline*',
|
||||||
|
|
||||||
// group: 'block',
|
group: 'block',
|
||||||
|
|
||||||
|
isolating: true,
|
||||||
|
|
||||||
defaultOptions: <DetailsSummaryOptions>{
|
defaultOptions: <DetailsSummaryOptions>{
|
||||||
HTMLAttributes: {},
|
HTMLAttributes: {},
|
||||||
|
|||||||
@@ -29,26 +29,8 @@ export default Node.create({
|
|||||||
},
|
},
|
||||||
|
|
||||||
addNodeView() {
|
addNodeView() {
|
||||||
return ({
|
return ({ HTMLAttributes }) => {
|
||||||
HTMLAttributes,
|
|
||||||
}) => {
|
|
||||||
const item = document.createElement('details')
|
const item = document.createElement('details')
|
||||||
let open = false
|
|
||||||
|
|
||||||
item.addEventListener('click', event => {
|
|
||||||
// @ts-ignore
|
|
||||||
const { localName } = event.target
|
|
||||||
|
|
||||||
if (localName === 'summary') {
|
|
||||||
open = !open
|
|
||||||
|
|
||||||
if (open) {
|
|
||||||
item.setAttribute('open', 'open')
|
|
||||||
} else {
|
|
||||||
item.removeAttribute('open')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
Object.entries(HTMLAttributes).forEach(([key, value]) => {
|
Object.entries(HTMLAttributes).forEach(([key, value]) => {
|
||||||
item.setAttribute(key, value)
|
item.setAttribute(key, value)
|
||||||
@@ -57,25 +39,9 @@ export default Node.create({
|
|||||||
return {
|
return {
|
||||||
dom: item,
|
dom: item,
|
||||||
contentDOM: item,
|
contentDOM: item,
|
||||||
ignoreMutation: (updatedNode: MutationRecord) => {
|
ignoreMutation: (mutation: MutationRecord) => {
|
||||||
// @ts-ignore
|
return !item.contains(mutation.target) || item === mutation.target
|
||||||
console.log({ updatedNode }, 'ignoreMutation', updatedNode.attributeName === 'open')
|
|
||||||
|
|
||||||
return updatedNode.attributeName === 'open'
|
|
||||||
},
|
},
|
||||||
// update: updatedNode => {
|
|
||||||
// if (updatedNode.type !== this.type) {
|
|
||||||
// return false
|
|
||||||
// }
|
|
||||||
|
|
||||||
// if (updatedNode.attrs.open) {
|
|
||||||
// item.setAttribute('open', 'open')
|
|
||||||
// } else {
|
|
||||||
// item.removeAttribute('open')
|
|
||||||
// }
|
|
||||||
|
|
||||||
// return true
|
|
||||||
// },
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user