format :html do def standard_submit_button output [standard_save_button, standard_save_and_close_button] end # Generates a standard save button with optional parameters. # # @param [Hash] opts The options for the save button. # @option opts [String] :text ("Save") The text displayed on the button. # # @return [String] The HTML code for the standard save button. # # @example # standard_save_button(text: "Update") def standard_save_button opts={} return if voo&.hide?(:save_button) add_class opts, "submit-button me-3 _update-history-pills" opts[:text] ||= "Save" opts["data-cy"] = "save" submit_button opts end # @param opts [Hash] # @option close [:modal, :overlay] def standard_save_and_close_button opts={} close = opts.delete(:close) || :modal text = opts[:text] || "Save and Close" add_class opts, "submit-button me-3 _close-on-success" add_class opts, "_update-origin" unless opts[:no_origin_update] opts.reverse_merge! text: text, "data-cy": "submit-#{close}" submit_button opts end def standard_cancel_button args={} args.reverse_merge! class: "cancel-button ms-4", href: path, "data-cy": "cancel" cancel_button args end def modal_cancel_button modal_close_button "Cancel", situation: "secondary", class: "cancel-button" end def edit_cancel_button modal_cancel_button end def new_cancel_button voo.show?(:cancel_button) && modal_cancel_button end def delete_button opts={} return unless card.real? link_to "Delete", delete_button_opts(opts) end def delete_button_opts opts={} add_class opts, "slotter btn btn-outline-danger ms-auto" opts["data-confirm"] = delete_confirm opts opts[:path] = { action: :delete } opts[:path][:success] = delete_success(opts) opts[:remote] = true opts end def delete_confirm opts opts.delete(:confirm) || "Are you sure you want to delete #{safe_name}?" end def delete_success opts if opts[:success] opts.delete :success elsif main? { redirect: true, mark: "*previous" } else { view: :just_deleted } end end end