All files / app/assets/javascripts/content_editor/extensions details.js

100% Statements 10/10
100% Branches 0/0
100% Functions 9/9
100% Lines 8/8

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36                      99x       9x       9x       99x   99x       100x 2x 2x        
import { Node, wrappingInputRule } from '@tiptap/core';
import { VueNodeViewRenderer } from '@tiptap/vue-2';
import DetailsWrapper from '../components/wrappers/details.vue';
 
export default Node.create({
  name: 'details',
  content: 'detailsContent+',
  // eslint-disable-next-line @gitlab/require-i18n-strings
  group: 'block list',
 
  parseHTML() {
    return [{ tag: 'details' }];
  },
 
  renderHTML({ HTMLAttributes }) {
    return ['ul', HTMLAttributes, 0];
  },
 
  addNodeView() {
    return VueNodeViewRenderer(DetailsWrapper);
  },
 
  addInputRules() {
    const inputRegex = /^\s*(<details>)$/;
 
    return [wrappingInputRule({ find: inputRegex, type: this.type })];
  },
 
  addCommands() {
    return {
      setDetails: () => ({ commands }) => commands.wrapInList('details'),
      toggleDetails: () => ({ commands }) => commands.toggleList('details', 'detailsContent'),
    };
  },
});