<%= component_wrapper(data_test_selector: 'invite-user-form') do primer_form_with( model: new_share, url: url_for([entity, Member]), data: { controller: 'user-limit shares--user-selected', 'application-target': 'dynamic', 'user-limit-open-seats-value': OpenProject::Enterprise.open_seats_count, action: 'submit->shares--user-selected#ensureUsersSelected' } ) do |form| grid_layout('invite-user-form', tag: :div) do |invite_form| invite_form.with_area('invitee') do render(Shares::Invitee.new(form)) end invite_form.with_area('permission') do render(Shares::PermissionButtonComponent.new( share: new_share, strategy: strategy, form_arguments: { builder: form, name: "role_id" }, data: { 'test-selector': 'op-share-dialog-invite-role' }) ) end invite_form.with_area('submit') do render(Primer::Beta::Button.new(scheme: :primary, type: :submit)) do I18n.t('sharing.share') end end if OpenProject::Enterprise.user_limit.present? invite_form.with_area('userLimitWarning', data: { 'user-limit-target': 'limitWarning', 'test-selector': 'op-share-dialog-user-limit' }, display: :none) do flex_layout do |user_limit_row| user_limit_row.with_column(mr: 2) do render(Primer::Beta::Octicon.new(icon: :'alert-fill', color: :danger)) end user_limit_row.with_column do render(Primer::Beta::Text.new(color: :danger)) do I18n.t( "sharing.warning_user_limit_reached#{'_admin' if User.current.admin?}", upgrade_url: OpenProject::Enterprise.upgrade_url, entity: entity.model_name.human ).html_safe end end end end end invite_form.with_area('userSelectedWarning', data: { 'shares--user-selected-target': 'error', 'test-selector': 'op-share-dialog-no-user-selected' }, display: :none) do flex_layout do |no_selected_user_row| no_selected_user_row.with_column(mr: 2) do render(Primer::Beta::Octicon.new(icon: :'alert-fill', color: :danger)) end no_selected_user_row.with_column do render(Primer::Beta::Text.new(color: :danger)) do I18n.t("sharing.warning_no_selected_user", entity: entity.model_name.human) end end end end if @errors.present? invite_form.with_area('errors', data: { 'test-selector': 'op-share-dialog-error-message' }) do flex_layout do |error_rows| @errors.full_messages.each do |error_message| error_rows.with_row do flex_layout do |no_selected_user_row| no_selected_user_row.with_column(mr: 2) do render(Primer::Beta::Octicon.new(icon: :'alert-fill', color: :danger)) end no_selected_user_row.with_column do render(Primer::Beta::Text.new(color: :danger)) do error_message end end end end end end end end end end end %>