use TFormChildNode;
use TFormElement;
- /**
- * `true` if this field is auto-focused and `false` otherwise
- * @var bool
- */
- protected $autoFocus = false;
-
/**
* name of the object property this field represents
* @var null|string
return $this;
}
- /**
- * @inheritDoc
- */
- public function autoFocus($autoFocus = true) {
- $this->autoFocus = $autoFocus;
-
- return $this;
- }
-
/**
* @inheritDoc
*/
return true;
}
- /**
- * @inheritDoc
- */
- public function isAutoFocused() {
- return $this->autoFocus;
- }
-
/**
* @inheritDoc
*/
* @package WoltLabSuite\Core\System\Form\Builder\Field
* @since 5.2
*/
-abstract class AbstractNumericFormField extends AbstractFormField implements IImmutableFormField, IMaximumFormField, IMinimumFormField, INullableFormField, IPlaceholderFormField, ISuffixedFormField {
+abstract class AbstractNumericFormField extends AbstractFormField implements IAutoFocusFormField, IImmutableFormField, IMaximumFormField, IMinimumFormField, INullableFormField, IPlaceholderFormField, ISuffixedFormField {
+ use TAutoFocusFormField;
use TImmutableFormField;
use TMaximumFormField;
use TMinimumFormField;
* @package WoltLabSuite\Core\System\Form\Builder\Field
* @since 5.2
*/
-class BooleanFormField extends AbstractFormField implements IImmutableFormField {
+class BooleanFormField extends AbstractFormField implements IAutoFocusFormField, IImmutableFormField {
+ use TAutoFocusFormField;
use TImmutableFormField;
/**
* @package WoltLabSuite\Core\System\Form\Builder\Field
* @since 5.2
*/
-class DateFormField extends AbstractFormField implements IImmutableFormField, INullableFormField {
+class DateFormField extends AbstractFormField implements IAutoFocusFormField, IImmutableFormField, INullableFormField {
+ use TAutoFocusFormField;
use TImmutableFormField;
use TNullableFormField;
--- /dev/null
+<?php
+namespace wcf\system\form\builder\field;
+
+/**
+ * Represents a form field that can be auto-focused.
+ *
+ * @author Matthias Schmidt
+ * @copyright 2001-2019 WoltLab GmbH
+ * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
+ * @package WoltLabSuite\Core\System\Form\Builder\Field
+ * @since 5.2
+ */
+interface IAutoFocusFormField {
+ /**
+ * Sets whether this field is auto-focused and returns this field.
+ *
+ * @param bool $autoFocus determines if field is auto-focused
+ * @return static this field
+ */
+ public function autoFocus($autoFocus = true);
+
+ /**
+ * Returns `true` if this field is auto-focused and returns `false` otherwise.
+ *
+ * By default, fields are not auto-focused.
+ *
+ * @return bool
+ */
+ public function isAutoFocused();
+}
*/
public function addValidationError(IFormFieldValidationError $error);
- /**
- * Sets whether this field is auto-focused and returns this field.
- *
- * @param bool $autoFocus determines if field is auto-focused
- * @return static this field
- */
- public function autoFocus($autoFocus = true);
+
/**
* Adds the given validation error to this field and returns this field.
*/
public function hasSaveValue();
- /**
- * Returns `true` if this field is auto-focused and returns `false` otherwise.
- * By default, fields are not auto-focused.
- *
- * @return bool
- */
- public function isAutoFocused();
-
/**
* Returns `true` if this field has to be filled out and returns `false` otherwise.
* By default, fields do not have to be filled out.
* @package WoltLabSuite\Core\System\Form\Builder\Field
* @since 5.2
*/
-class ItemListFormField extends AbstractFormField implements IImmutableFormField {
+class ItemListFormField extends AbstractFormField implements IAutoFocusFormField, IImmutableFormField {
+ use TAutoFocusFormField;
use TImmutableFormField;
/**
--- /dev/null
+<?php
+namespace wcf\system\form\builder\field;
+
+/**
+ * Provides default implementations of `IAutoFocusFormField` methods.
+ *
+ * @author Matthias Schmidt
+ * @copyright 2001-2019 WoltLab GmbH
+ * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
+ * @package WoltLabSuite\Core\System\Form\Builder\Field
+ * @since 5.2
+ */
+trait TAutoFocusFormField {
+ /**
+ * `true` if this field is auto-focused and `false` otherwise
+ * @var bool
+ */
+ protected $autoFocus = false;
+
+ /**
+ * Sets whether this field is auto-focused and returns this field.
+ *
+ * @param bool $autoFocus determines if field is auto-focused
+ * @return static this field
+ */
+ public function autoFocus($autoFocus = true) {
+ $this->autoFocus = $autoFocus;
+
+ return $this;
+ }
+
+ /**
+ * Returns `true` if this field is auto-focused and returns `false` otherwise.
+ *
+ * By default, fields are not auto-focused.
+ *
+ * @return bool
+ */
+ public function isAutoFocused() {
+ return $this->autoFocus;
+ }
+}
\ No newline at end of file
* @package WoltLabSuite\Core\System\Form\Builder\Field
* @since 5.2
*/
-class TextFormField extends AbstractFormField implements II18nFormField, IImmutableFormField, IMaximumLengthFormField, IMinimumLengthFormField, IPlaceholderFormField {
+class TextFormField extends AbstractFormField implements IAutoFocusFormField, II18nFormField, IImmutableFormField, IMaximumLengthFormField, IMinimumLengthFormField, IPlaceholderFormField {
+ use TAutoFocusFormField;
use TImmutableFormField;
use TI18nFormField {
validate as protected i18nValidate;
namespace wcf\system\form\builder\field\user;
use wcf\data\user\UserProfile;
use wcf\system\form\builder\field\AbstractFormField;
+use wcf\system\form\builder\field\IAutoFocusFormField;
use wcf\system\form\builder\field\IImmutableFormField;
use wcf\system\form\builder\field\IMultipleFormField;
use wcf\system\form\builder\field\INullableFormField;
+use wcf\system\form\builder\field\TAutoFocusFormField;
use wcf\system\form\builder\field\TImmutableFormField;
use wcf\system\form\builder\field\TMultipleFormField;
use wcf\system\form\builder\field\TNullableFormField;
* @package WoltLabSuite\Core\System\Form\Builder\Field\User
* @since 5.2
*/
-class UserFormField extends AbstractFormField implements IImmutableFormField, IMultipleFormField, INullableFormField {
+class UserFormField extends AbstractFormField implements IAutoFocusFormField, IImmutableFormField, IMultipleFormField, INullableFormField {
+ use TAutoFocusFormField;
use TImmutableFormField;
use TMultipleFormField;
use TNullableFormField;
<?php
namespace wcf\system\form\builder\field\user;
use wcf\system\form\builder\field\AbstractFormField;
+use wcf\system\form\builder\field\IAutoFocusFormField;
use wcf\system\form\builder\field\IImmutableFormField;
use wcf\system\form\builder\field\IMaximumLengthFormField;
use wcf\system\form\builder\field\IMinimumLengthFormField;
use wcf\system\form\builder\field\INullableFormField;
use wcf\system\form\builder\field\IPlaceholderFormField;
+use wcf\system\form\builder\field\TAutoFocusFormField;
use wcf\system\form\builder\field\TDefaultIdFormField;
use wcf\system\form\builder\field\TImmutableFormField;
use wcf\system\form\builder\field\TMaximumLengthFormField;
* @package WoltLabSuite\Core\System\Form\Builder\Field\User
* @since 5.2
*/
-class UsernameFormField extends AbstractFormField implements IImmutableFormField, IMaximumLengthFormField, IMinimumLengthFormField, INullableFormField, IPlaceholderFormField {
+class UsernameFormField extends AbstractFormField implements IAutoFocusFormField, IImmutableFormField, IMaximumLengthFormField, IMinimumLengthFormField, INullableFormField, IPlaceholderFormField {
+ use TAutoFocusFormField;
use TDefaultIdFormField;
use TImmutableFormField;
use TMaximumLengthFormField;