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');
 | |
|     }
 | |
| } |