Jiang qinghua 3 tahun lalu
induk
melakukan
04ff9f5be7

+ 0 - 21
src/Form/Field.php

@@ -225,11 +225,6 @@ class Field implements Renderable
      */
     protected $savingCallbacks = [];
 
-    /**
-     * @var string
-     */
-    protected $size = '';
-
     /**
      * Field constructor.
      *
@@ -244,22 +239,6 @@ class Field implements Renderable
         $this->callResolving();
     }
 
-    /**
-     * 设置为小尺寸.
-     */
-    public function small()
-    {
-        $this->size = 'sm';
-    }
-
-    /**
-     * 设置为大尺寸.
-     */
-    public function large()
-    {
-        $this->size = 'lg';
-    }
-
     /**
      * @param array $options
      *

+ 1 - 0
src/Form/Field/Checkbox.php

@@ -9,6 +9,7 @@ class Checkbox extends MultipleSelect
 {
     use CanCascadeFields;
     use CanLoadFields;
+    use Sizeable;
 
     protected $style = 'primary';
 

+ 1 - 0
src/Form/Field/Radio.php

@@ -10,6 +10,7 @@ class Radio extends Field
 {
     use CanCascadeFields;
     use CanLoadFields;
+    use Sizeable;
 
     protected $style = 'primary';
 

+ 2 - 4
src/Form/Field/Select.php

@@ -12,6 +12,7 @@ class Select extends Field
 {
     use CanCascadeFields;
     use CanLoadFields;
+    use Sizeable;
 
     protected $cascadeEvent = 'change';
 
@@ -236,10 +237,7 @@ class Select extends Field
             'cascadeScript' => $this->getCascadeScript(),
         ]);
 
-        if ($this->size) {
-            $this->addElementClass('form-control-'.$this->size);
-            $this->setLabelClass('control-label-'.$this->size);
-        }
+        $this->initSize();
 
         $this->attribute('data-value', implode(',', Helper::array($this->value())));
 

+ 46 - 0
src/Form/Field/Sizeable.php

@@ -0,0 +1,46 @@
+<?php
+
+namespace Dcat\Admin\Form\Field;
+
+trait Sizeable
+{
+    /**
+     * @var string
+     */
+    protected $size = '';
+
+    /**
+     * 设置为小尺寸.
+     *
+     * @return $this
+     */
+    public function small()
+    {
+        return $this->size('sm');
+    }
+
+    /**
+     * 设置为大尺寸.
+     *
+     * @return $this
+     */
+    public function large()
+    {
+        return $this->size('lg');
+    }
+    
+    public function size(?string $size)
+    {
+        $this->size = $size;
+
+        return $this;
+    }
+
+    protected function initSize()
+    {
+        if ($this->size) {
+            $this->addElementClass('form-control-'.$this->size);
+            $this->setLabelClass('control-label-'.$this->size);
+        }
+    }
+}

+ 2 - 5
src/Form/Field/Text.php

@@ -9,6 +9,7 @@ use Illuminate\Support\Str;
 class Text extends Field
 {
     use PlainInput;
+    use Sizeable;
 
     public function __construct($column, $arguments = [])
     {
@@ -27,11 +28,7 @@ class Text extends Field
     public function render()
     {
         $this->initPlainInput();
-
-        if ($this->size) {
-            $this->addElementClass('form-control-'.$this->size);
-            $this->setLabelClass('control-label-'.$this->size);
-        }
+        $this->initSize();
 
         $this->defaultAttribute('type', 'text')
             ->defaultAttribute('name', $this->getElementName())