disabled attribut on input
This commit is contained in:
parent
a2389f14af
commit
70c1d30fe4
4 changed files with 15 additions and 4 deletions
|
@ -9,8 +9,9 @@ class Attachment::EditComponent < ApplicationComponent
|
||||||
alias as_multiple? as_multiple
|
alias as_multiple? as_multiple
|
||||||
|
|
||||||
EXTENSIONS_ORDER = ['jpeg', 'png', 'pdf', 'zip'].freeze
|
EXTENSIONS_ORDER = ['jpeg', 'png', 'pdf', 'zip'].freeze
|
||||||
|
DEFAULT_MAX_ATTACHMENTS = 10
|
||||||
|
|
||||||
def initialize(champ: nil, auto_attach_url: nil, attached_file:, direct_upload: true, index: 0, as_multiple: false, view_as: :link, user_can_destroy: true, user_can_replace: false, attachments: [], **kwargs)
|
def initialize(champ: nil, auto_attach_url: nil, attached_file:, direct_upload: true, index: 0, as_multiple: false, view_as: :link, user_can_destroy: true, user_can_replace: false, attachments: [], max: nil, **kwargs)
|
||||||
@champ = champ
|
@champ = champ
|
||||||
@attached_file = attached_file
|
@attached_file = attached_file
|
||||||
@direct_upload = direct_upload
|
@direct_upload = direct_upload
|
||||||
|
@ -24,6 +25,7 @@ class Attachment::EditComponent < ApplicationComponent
|
||||||
@attachments = attachments.presence || (kwargs.key?(:attachment) ? [kwargs.delete(:attachment)] : [])
|
@attachments = attachments.presence || (kwargs.key?(:attachment) ? [kwargs.delete(:attachment)] : [])
|
||||||
@attachments << attached_file.attachment if attached_file.respond_to?(:attachment) && @attachments.empty?
|
@attachments << attached_file.attachment if attached_file.respond_to?(:attachment) && @attachments.empty?
|
||||||
@attachments.compact!
|
@attachments.compact!
|
||||||
|
@max = max || DEFAULT_MAX_ATTACHMENTS
|
||||||
|
|
||||||
# Utilisation du premier attachement comme référence pour la rétrocompatibilité
|
# Utilisation du premier attachement comme référence pour la rétrocompatibilité
|
||||||
@attachment = @attachments.first
|
@attachment = @attachments.first
|
||||||
|
@ -54,7 +56,7 @@ class Attachment::EditComponent < ApplicationComponent
|
||||||
end
|
end
|
||||||
|
|
||||||
def destroy_attachment_path
|
def destroy_attachment_path
|
||||||
attachment_path(champ_id: champ&.public_id)
|
attachment_path(champ_id: champ&.public_id, champ: @champ)
|
||||||
end
|
end
|
||||||
|
|
||||||
def attachment_input_class
|
def attachment_input_class
|
||||||
|
@ -63,6 +65,7 @@ class Attachment::EditComponent < ApplicationComponent
|
||||||
|
|
||||||
def file_field_options
|
def file_field_options
|
||||||
track_issue_with_missing_validators if missing_validators?
|
track_issue_with_missing_validators if missing_validators?
|
||||||
|
|
||||||
options = {
|
options = {
|
||||||
class: class_names("fr-upload attachment-input": true, "#{attachment_input_class}": true, "hidden": persisted?),
|
class: class_names("fr-upload attachment-input": true, "#{attachment_input_class}": true, "hidden": persisted?),
|
||||||
direct_upload: @direct_upload,
|
direct_upload: @direct_upload,
|
||||||
|
@ -76,6 +79,7 @@ class Attachment::EditComponent < ApplicationComponent
|
||||||
|
|
||||||
options.merge!(has_content_type_validator? ? { accept: accept_content_type } : {})
|
options.merge!(has_content_type_validator? ? { accept: accept_content_type } : {})
|
||||||
options[:multiple] = true if as_multiple?
|
options[:multiple] = true if as_multiple?
|
||||||
|
options[:disabled] = true if @index >= @max
|
||||||
|
|
||||||
options
|
options
|
||||||
end
|
end
|
||||||
|
|
|
@ -7,8 +7,8 @@
|
||||||
%li{ id: dom_id(attachment) }
|
%li{ id: dom_id(attachment) }
|
||||||
= render Attachment::EditComponent.new(champ:, attached_file:, attachment:, index:, view_as:, user_can_destroy:, form_object_name:)
|
= render Attachment::EditComponent.new(champ:, attached_file:, attachment:, index:, view_as:, user_can_destroy:, form_object_name:)
|
||||||
|
|
||||||
%div{ id: empty_component_id, class: class_names("hidden": !can_attach_next?), data: { turbo_force: :server } }
|
%div{ id: empty_component_id, data: { turbo_force: :server } }
|
||||||
= render Attachment::EditComponent.new(champ:, as_multiple: champ.nil?, attached_file:, attachment: nil, index: attachments_count, user_can_destroy:, form_object_name:)
|
= render Attachment::EditComponent.new(champ:, as_multiple: champ.nil?, attached_file:, attachment: nil, index: attachments_count, user_can_destroy:, form_object_name:, max: @max)
|
||||||
|
|
||||||
// single poll and refresh message for all attachments
|
// single poll and refresh message for all attachments
|
||||||
= render Attachment::PendingPollComponent.new(attachments: attachments, poll_url:, context: poll_context)
|
= render Attachment::PendingPollComponent.new(attachments: attachments, poll_url:, context: poll_context)
|
||||||
|
|
|
@ -22,6 +22,7 @@ class AttachmentsController < ApplicationController
|
||||||
flash.notice = 'La pièce jointe a bien été supprimée.'
|
flash.notice = 'La pièce jointe a bien été supprimée.'
|
||||||
|
|
||||||
@champ_id = params[:champ_id]
|
@champ_id = params[:champ_id]
|
||||||
|
@champ = Champ.find(params[:champ]) if params[:champ]
|
||||||
|
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.turbo_stream
|
format.turbo_stream
|
||||||
|
|
|
@ -5,3 +5,9 @@
|
||||||
= turbo_stream.focus_all "#attachment-multiple-empty-#{@champ_id} input"
|
= turbo_stream.focus_all "#attachment-multiple-empty-#{@champ_id} input"
|
||||||
|
|
||||||
= turbo_stream.show_all ".attachment-input-#{@attachment.id}"
|
= turbo_stream.show_all ".attachment-input-#{@attachment.id}"
|
||||||
|
|
||||||
|
- if @champ
|
||||||
|
= fields_for @champ.input_name, @champ do |form|
|
||||||
|
= turbo_stream.replace @champ.input_group_id do
|
||||||
|
= render EditableChamp::EditableChampComponent.new champ: @champ, form: form
|
||||||
|
= turbo_stream.focus_all "#attachment-multiple-empty-#{@champ_id} input"
|
||||||
|
|
Loading…
Add table
Reference in a new issue