- Fixed UiSelect's selected item method
- Added a new DateTime (WIP from firefox still)
This commit is contained in:
		
							parent
							
								
									e2c1c7ac39
								
							
						
					
					
						commit
						cb2caf895e
					
				
							
								
								
									
										13
									
								
								src/Form/UiDatetime.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								src/Form/UiDatetime.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,13 @@ | ||||
| <?php | ||||
| 
 | ||||
| namespace Picea\Ui\Form; | ||||
| 
 | ||||
| class UiDatetime extends UiInput { | ||||
| 
 | ||||
|    public string $token = "ui.datetime"; | ||||
| 
 | ||||
|    public array $attributes = [ | ||||
|        'class' => "ui-datetime", | ||||
|        'type'  => "datetime-local", | ||||
|    ]; | ||||
| } | ||||
| @ -23,7 +23,7 @@ class UiForm extends UiElement implements Extension { | ||||
|     { | ||||
|         switch($token) { | ||||
|             case 'ui.endform': | ||||
|                 return ( new UiHidden() )->attributes([ 'name' =>"picea-csrf-protection", 'value' => "abcdefg" ])->render() . "</form>"; | ||||
|                 return "</form>"; | ||||
| 
 | ||||
|             case "ui.form.get": | ||||
|                 $method = "get"; | ||||
| @ -50,12 +50,17 @@ class UiForm extends UiElement implements Extension { | ||||
|         return "<?php echo ( new \\" . static::class . "() )->buildHtml('$method', $arguments) ?>"; | ||||
|     } | ||||
|      | ||||
|      | ||||
|     public function buildHtml(string $method, string $action, array $attributes = []) : string | ||||
|     public function buildHtml(string $method = "get", string $action = "", array $attributes = []) : string | ||||
|     { | ||||
|         $method = strtolower($method); | ||||
|          | ||||
|         $this->option('tag-type', 'single'); | ||||
|         $this->attributes([ 'method' => $method, 'action' => $action ] + $attributes); | ||||
|          | ||||
|         if ( $method !== "get" ) { | ||||
|             $this->append( ( new UiHidden() )->attributes([ 'name' =>"picea-csrf-protection", 'value' => "abcdefg" ]) ); | ||||
|         }  | ||||
|          | ||||
|         return $this->render() . PHP_EOL; | ||||
|     } | ||||
| } | ||||
| @ -38,7 +38,10 @@ class UiSelect extends UiElement implements Extension { | ||||
|     protected function setList(array $list, $selected, bool $strict = true) : void | ||||
|     { | ||||
|         foreach($list as $key => $item) { | ||||
|             $isSelected = $this->isSelected($key, $selected, $strict); | ||||
|              | ||||
|             if ($item instanceof UiElement) { | ||||
|                 | ||||
|                 $this->append($item); | ||||
|                  | ||||
|                 continue; | ||||
| @ -48,11 +51,11 @@ class UiSelect extends UiElement implements Extension { | ||||
|                 $obj->text($key); | ||||
| 
 | ||||
|                 foreach($item as $subKey => $subItem) { | ||||
|                     $obj->append($this->createOption($subItem, $subKey, $strict ? $subKey === $selected : $subKey == $selected)); | ||||
|                     $obj->append($this->createOption($subItem, $subKey, $isSelected)); | ||||
|                 } | ||||
|             } | ||||
|             else { | ||||
|                 $obj = $this->createOption($item, $key, $strict ? $key === $selected : $key == $selected); | ||||
|                 $obj = $this->createOption($item, $key, $isSelected); | ||||
|             } | ||||
|              | ||||
|             $this->append($obj); | ||||
| @ -71,4 +74,16 @@ class UiSelect extends UiElement implements Extension { | ||||
|          | ||||
|         return $option; | ||||
|     } | ||||
|      | ||||
|     protected function isSelected($check, $value, bool $strict = true) : bool | ||||
|     {         | ||||
|         if (false !== ( $f = filter_var($value, FILTER_VALIDATE_INT) ) ) { | ||||
|             $value = $f; | ||||
|         } | ||||
|         elseif (false !== ( $f = filter_var($value, FILTER_VALIDATE_FLOAT) ) ) { | ||||
|             $value = $f; | ||||
|         } | ||||
|          | ||||
|         return $strict ? $check === $value : $check == $value; | ||||
|     } | ||||
| } | ||||
|  | ||||
| @ -16,7 +16,10 @@ class Form implements Extension { | ||||
| 
 | ||||
|     public string $token; | ||||
| 
 | ||||
|     public function __construct(Context $context) { | ||||
|     public ServerRequestInterface $request; | ||||
|      | ||||
|     public function __construct(ServerRequestInterface $request, Context $context) { | ||||
|         $this->request = $request; | ||||
|         $this->register($context); | ||||
|     } | ||||
| 
 | ||||
| @ -43,17 +46,30 @@ class Form implements Extension { | ||||
|         return $value; | ||||
|     } | ||||
| 
 | ||||
|     public function formClass(ServerRequestInterface $request) { | ||||
|         return new class($request) { | ||||
|     public function formClass($form) { | ||||
|         return new class($this->request, $form) { | ||||
| 
 | ||||
|             public bool $sent = false; | ||||
| 
 | ||||
|             protected ServerRequestInterface $request; | ||||
|              | ||||
|             public function __construct(ServerRequestInterface $request) | ||||
|             protected /* FormInterface */ $form; | ||||
| 
 | ||||
|             public function __construct(ServerRequestInterface $request, /* FormInterface */ $form) | ||||
|             { | ||||
|                 $this->request = $request; | ||||
|                 $this->sent = $this->requestSent(); | ||||
|                 $this->form = $form; | ||||
|             } | ||||
|              | ||||
|             protected function initialize() { | ||||
|                 $this->form->prepare(); | ||||
|                      | ||||
|                 if ( $this->sent ) { | ||||
|                     if ( $this->form->validate() ) { | ||||
|                         $this->form->save(); | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
| 
 | ||||
|             protected function requestSent() : bool | ||||
|  | ||||
| @ -13,6 +13,7 @@ class Ui { | ||||
|         $compiler->registerExtension(new Form\UiCheckbox()); | ||||
|         $compiler->registerExtension(new Form\UiColor()); | ||||
|         $compiler->registerExtension(new Form\UiDate()); | ||||
|         $compiler->registerExtension(new Form\UiDatetime()); | ||||
|         $compiler->registerExtension(new Form\UiEmail()); | ||||
|         $compiler->registerExtension(new Form\UiFile()); | ||||
|         $compiler->registerExtension(new Form\UiHidden()); | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user