139 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			139 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
namespace App\View\Components\Form;
 | 
						|
 | 
						|
use App\Abstracts\View\Component;
 | 
						|
 | 
						|
class Buttons extends Component
 | 
						|
{
 | 
						|
    public $groupClass = 'sm:col-span-6';
 | 
						|
 | 
						|
    public $withoutCancel;
 | 
						|
 | 
						|
    public $cancel;
 | 
						|
 | 
						|
    public $cancelRoute;
 | 
						|
 | 
						|
    public $cancelUrl;
 | 
						|
 | 
						|
    public $cancelClass = 'px-6 py-1.5 hover:bg-gray-200 rounded-lg ltr:mr-2 rtl:ml-2';
 | 
						|
 | 
						|
    public $cancelText;
 | 
						|
 | 
						|
    public $saveDisabled;
 | 
						|
 | 
						|
    public $saveLoading;
 | 
						|
 | 
						|
    /**
 | 
						|
     * Create a new component instance.
 | 
						|
     *
 | 
						|
     * @return void
 | 
						|
     */
 | 
						|
    public function __construct(
 | 
						|
        $groupClass = '',
 | 
						|
        $cancel = '', $cancelRoute = '', $cancelUrl = '', $cancelClass = '', $cancelText = '', $withoutCancel = false,
 | 
						|
        $saveDisabled = '', $saveLoading = ''
 | 
						|
    ) {
 | 
						|
        $this->groupClass = $this->getGroupClass($groupClass);
 | 
						|
 | 
						|
        $this->cancel = $this->getCancel($cancel, $cancelRoute, $cancelUrl);
 | 
						|
        $this->cancelClass = $this->getCancelClass($cancelClass);
 | 
						|
        $this->cancelText = $this->getCancelText($cancelText);
 | 
						|
        $this->withoutCancel = $withoutCancel;
 | 
						|
 | 
						|
        $this->saveDisabled = ! empty($saveDisabled) ? $saveDisabled : 'form.loading';
 | 
						|
        $this->saveLoading = ! empty($saveLoading) ? $saveLoading : 'form.loading';
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Get the view / contents that represent the component.
 | 
						|
     *
 | 
						|
     * @return \Illuminate\Contracts\View\View|string
 | 
						|
     */
 | 
						|
    public function render()
 | 
						|
    {
 | 
						|
        return view('components.form.buttons');
 | 
						|
    }
 | 
						|
 | 
						|
    protected function getGroupClass($groupClass)
 | 
						|
    {
 | 
						|
        if (! empty($groupClass)) {
 | 
						|
            return $groupClass;
 | 
						|
        }
 | 
						|
 | 
						|
        return $this->groupClass;
 | 
						|
    }
 | 
						|
 | 
						|
    protected function getCancel($cancel, $route, $url)
 | 
						|
    {
 | 
						|
        if (! empty($cancel)) {
 | 
						|
            return $cancel;
 | 
						|
        }
 | 
						|
 | 
						|
        if (! empty($route)) {
 | 
						|
            return $this->getRouteAction($route);
 | 
						|
        }
 | 
						|
 | 
						|
        if (! empty($url)) {
 | 
						|
            return $this->getUrlAction($url);
 | 
						|
        }
 | 
						|
 | 
						|
        return '';
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Get the action for a "url" option.
 | 
						|
     *
 | 
						|
     * @param  array|string $options
 | 
						|
     *
 | 
						|
     * @return string
 | 
						|
     */
 | 
						|
    protected function getUrlAction($options)
 | 
						|
    {
 | 
						|
        if (is_array($options)) {
 | 
						|
            return url($options[0], array_slice($options, 1));
 | 
						|
        }
 | 
						|
 | 
						|
        return url($options);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Get the action for a "route" option.
 | 
						|
     *
 | 
						|
     * @param  array|string $options
 | 
						|
     *
 | 
						|
     * @return string
 | 
						|
     */
 | 
						|
    protected function getRouteAction($options)
 | 
						|
    {
 | 
						|
        if (is_array($options)) {
 | 
						|
            $parameters = array_slice($options, 1);
 | 
						|
 | 
						|
            if (array_keys($options) === [0, 1]) {
 | 
						|
                $parameters = head($parameters);
 | 
						|
            }
 | 
						|
 | 
						|
            return route($options[0], $parameters);
 | 
						|
        }
 | 
						|
 | 
						|
        return route($options);
 | 
						|
    }
 | 
						|
 | 
						|
    protected function getCancelClass($cancelClass)
 | 
						|
    {
 | 
						|
        if (! empty($cancelClass)) {
 | 
						|
            return $cancelClass;
 | 
						|
        }
 | 
						|
 | 
						|
        return $this->cancelClass;
 | 
						|
    }
 | 
						|
 | 
						|
    protected function getCancelText($cancelText)
 | 
						|
    {
 | 
						|
        if (! empty($cancelText)) {
 | 
						|
            return $cancelText;
 | 
						|
        }
 | 
						|
 | 
						|
        return trans('general.cancel');
 | 
						|
    }
 | 
						|
} |