Files
codeocean/app/helpers/markdown_form_builder.rb
Julia Casamitjana 749074fec0 Add functionality to expand the markdown editor
The editor will now have a default height of 300px but a button will let
the user expand the editor. It will expand it to fit all content (or up
to 400px if the content was not exceeding 300px). In the expanded mode
the editor will keep growing as the user types more content.
2024-04-26 13:31:49 +02:00

44 lines
1.1 KiB
Ruby

# frozen_string_literal: true
class MarkdownFormBuilder < ActionView::Helpers::FormBuilder
def markdown(method, args = {})
# Adopt simple form builder to work with form_for
@attribute_name = method
@input_html_options = args[:input_html]
@template.capture do
@template.concat form_textarea
@template.concat toast_ui_editor
end
end
private
def form_textarea
@template.text_area @object_name, @attribute_name,
**(@input_html_options || {}),
id: label_target,
class: 'd-none'
end
def toast_ui_editor
@template.tag.div(class: 'markdown-editor__wrapper') do
@template.concat @template.tag.div(class: 'markdown-editor', data: {behavior: 'markdown-editor-widget', id: label_target})
@template.concat resize_btn
end
end
def resize_btn
@template.tag.button(class: 'markdown-editor__resize-btn fa-solid', type: 'button', id: "#{label_target}-resize",
title: I18n.t(:'markdown_editor.expand'), aria_label: I18n.t(:'markdown_editor.expand'))
end
def base_id
options[:markdown_id_suffix] || @attribute_name
end
def label_target
"markdown-input-#{base_id}"
end
end