Sha256: 733bdc4bc1e9a9f112492cfe8497b2b3f999896e6f2f1d0802d3d4a36e780224
Contents?: true
Size: 1.69 KB
Versions: 5
Compression:
Stored size: 1.69 KB
Contents
# frozen_string_literal: true module EditorJs module Blocks # checklist block class ChecklistBlock < Base def schema YAML.safe_load(<<~YAML) type: object additionalProperties: false properties: items: type: array items: type: object additionalProperties: false properties: text: type: string checked: type: boolean required: - text YAML end def render(_options = {}) content_tag :div, class: css_name do data['items'].map do |item| content_tag(:div, class: css_name('__warrper')) do html_str = content_tag(:input, nil, type: 'checkbox', disabled: true, checked: item['checked']) html_str += content_tag(:label, item['text'].html_safe) html_str.html_safe end.html_safe end.join.html_safe end end def safe_tags { 'b' => nil, 'i' => nil, 'u' => ['class'], 'del' => ['class'], 'a' => ['href'], 'mark' => ['class'], 'code' => ['class'] } end def sanitize! data['items'].each do |item| item['text'] = Sanitize.fragment( item['text'], elements: safe_tags.keys, attributes: safe_tags.select { |_k, v| v }, remove_contents: true ) end end def plain data['items'].map { |item| decode_html(item['text']).strip }.join(', ') end end end end
Version data entries
5 entries across 5 versions & 1 rubygems