Finish MVP for content editing
This commit is contained in:
30
app/components/edit_content_button_component.html.erb
Normal file
30
app/components/edit_content_button_component.html.erb
Normal file
@@ -0,0 +1,30 @@
|
||||
<div class="inline-block text-left" data-controller="modal" data-action="keydown.esc->modal#close">
|
||||
<button class="btn-md btn-outline text-red-600" data-action="click->modal#open" title="Edit">
|
||||
<%= content || "Edit" %>
|
||||
</button>
|
||||
|
||||
<%= render ModalComponent.new(show_close_button: false) do %>
|
||||
<%= form_with model: [:admin, @editable_content],
|
||||
html: { autocomplete: "off" } do |form| %>
|
||||
<%= form.hidden_field :redirect_to, value: @redirect_to %>
|
||||
<p class="mb-2">
|
||||
<%= form.label :content, @editable_content.key.capitalize, class: 'font-bold' %>
|
||||
</p>
|
||||
<% if @editable_content.rich_text %>
|
||||
<p>
|
||||
<%= form.textarea :content, class: "md:w-[56rem] md:h-[28rem]" %>
|
||||
</p>
|
||||
<p class="text-right">
|
||||
<%= form.submit "Save", class: "ml-2 btn-md btn-blue" %>
|
||||
</p>
|
||||
<% else %>
|
||||
<p class="">
|
||||
<%= form.text_field :content, class: "w-80" %>
|
||||
</p>
|
||||
<p>
|
||||
<%= form.submit "Save", class: "btn-md btn-blue w-full" %>
|
||||
</p>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
</div>
|
||||
6
app/components/edit_content_button_component.rb
Normal file
6
app/components/edit_content_button_component.rb
Normal file
@@ -0,0 +1,6 @@
|
||||
class EditContentButtonComponent < ViewComponent::Base
|
||||
def initialize(context:, key:, rich_text: false, redirect_to: nil)
|
||||
@editable_content = EditableContent.find_or_create_by(context:, key:, rich_text:)
|
||||
@redirect_to = redirect_to
|
||||
end
|
||||
end
|
||||
9
app/components/editable_content_component.html.erb
Normal file
9
app/components/editable_content_component.html.erb
Normal file
@@ -0,0 +1,9 @@
|
||||
<% if @editable_content.has_content? %>
|
||||
<% if @editable_content.rich_text %>
|
||||
<%= helpers.markdown_to_html @editable_content.content %>
|
||||
<% else %>
|
||||
<%= @editable_content.content %>
|
||||
<% end %>
|
||||
<% else %>
|
||||
<%= @default %>
|
||||
<% end %>
|
||||
6
app/components/editable_content_component.rb
Normal file
6
app/components/editable_content_component.rb
Normal file
@@ -0,0 +1,6 @@
|
||||
class EditableContentComponent < ViewComponent::Base
|
||||
def initialize(context:, key:, rich_text: false, default: nil)
|
||||
@editable_content = EditableContent.find_or_create_by(context:, key:, rich_text:)
|
||||
@default = default
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user