diff --git a/src/Enums/ValidationRule.php b/src/Enums/ValidationRule.php index 7713daeb..661485dc 100644 --- a/src/Enums/ValidationRule.php +++ b/src/Enums/ValidationRule.php @@ -130,7 +130,8 @@ public function allowedParameterCount(): int self::SIZE, self::MAX, self::MIN, self::DIGITS, self::DATE_EQUALS, self::DATE_FORMAT, self::AFTER, self::AFTER_OR_EQUAL, self::BEFORE, self::BEFORE_OR_EQUAL, self::EXISTS, self::UNIQUE, self::GT, self::GTE, - self::LT, self::LTE, self::MAX_DIGITS, self::MIN_DIGITS, self::MULTIPLE_OF => 1, + self::LT, self::LTE, self::MAX_DIGITS, self::MIN_DIGITS, self::MULTIPLE_OF, + self::REGEX, self::NOT_REGEX => 1, // Default case for any unspecified rules default => 0 diff --git a/src/FieldTypeSystem/Definitions/ColorPickerFieldType.php b/src/FieldTypeSystem/Definitions/ColorPickerFieldType.php index 00d68b01..099cc515 100644 --- a/src/FieldTypeSystem/Definitions/ColorPickerFieldType.php +++ b/src/FieldTypeSystem/Definitions/ColorPickerFieldType.php @@ -29,6 +29,7 @@ public function configure(): FieldSchema ->priority(90) ->availableValidationRules([ ValidationRule::REQUIRED, + ValidationRule::REGEX, ValidationRule::STARTS_WITH, ]); } diff --git a/src/FieldTypeSystem/Definitions/LinkFieldType.php b/src/FieldTypeSystem/Definitions/LinkFieldType.php index 1f62e496..a4ae55d0 100644 --- a/src/FieldTypeSystem/Definitions/LinkFieldType.php +++ b/src/FieldTypeSystem/Definitions/LinkFieldType.php @@ -30,6 +30,7 @@ public function configure(): FieldSchema ->availableValidationRules([ ValidationRule::REQUIRED, ValidationRule::URL, + ValidationRule::REGEX, ValidationRule::STARTS_WITH, ]); } diff --git a/src/FieldTypeSystem/Definitions/MarkdownEditorFieldType.php b/src/FieldTypeSystem/Definitions/MarkdownEditorFieldType.php index e942aa5a..f9b2c667 100644 --- a/src/FieldTypeSystem/Definitions/MarkdownEditorFieldType.php +++ b/src/FieldTypeSystem/Definitions/MarkdownEditorFieldType.php @@ -31,6 +31,7 @@ public function configure(): FieldSchema ValidationRule::REQUIRED, ValidationRule::MIN, ValidationRule::MAX, + ValidationRule::REGEX, ]); } } diff --git a/src/FieldTypeSystem/Definitions/RichEditorFieldType.php b/src/FieldTypeSystem/Definitions/RichEditorFieldType.php index e39c1420..4e0b8880 100644 --- a/src/FieldTypeSystem/Definitions/RichEditorFieldType.php +++ b/src/FieldTypeSystem/Definitions/RichEditorFieldType.php @@ -31,6 +31,7 @@ public function configure(): FieldSchema ValidationRule::REQUIRED, ValidationRule::MIN, ValidationRule::MAX, + ValidationRule::REGEX, ]); } } diff --git a/src/FieldTypeSystem/Definitions/TextFieldType.php b/src/FieldTypeSystem/Definitions/TextFieldType.php index 5e3b7ced..4b9137d6 100644 --- a/src/FieldTypeSystem/Definitions/TextFieldType.php +++ b/src/FieldTypeSystem/Definitions/TextFieldType.php @@ -36,6 +36,7 @@ public function configure(): FieldSchema ValidationRule::ALPHA_NUM, ValidationRule::ALPHA_DASH, ValidationRule::EMAIL, + ValidationRule::REGEX, ValidationRule::STARTS_WITH, ValidationRule::ENDS_WITH, ]); diff --git a/src/FieldTypeSystem/Definitions/TextareaFieldType.php b/src/FieldTypeSystem/Definitions/TextareaFieldType.php index 886c8e1b..228baadc 100644 --- a/src/FieldTypeSystem/Definitions/TextareaFieldType.php +++ b/src/FieldTypeSystem/Definitions/TextareaFieldType.php @@ -31,6 +31,7 @@ public function configure(): FieldSchema ValidationRule::REQUIRED, ValidationRule::MIN, ValidationRule::MAX, + ValidationRule::REGEX, ]); } } diff --git a/src/Filament/Management/Pages/CustomFieldsManagementPage.php b/src/Filament/Management/Pages/CustomFieldsManagementPage.php index 50da4299..b6df88b5 100644 --- a/src/Filament/Management/Pages/CustomFieldsManagementPage.php +++ b/src/Filament/Management/Pages/CustomFieldsManagementPage.php @@ -29,7 +29,7 @@ class CustomFieldsManagementPage extends Page { - protected static string|BackedEnum|null $navigationIcon = 'heroicon-m-document-text'; + protected static string|\BackedEnum|null $navigationIcon = 'heroicon-m-document-text'; protected string $view = 'custom-fields::filament.pages.custom-fields-management'; diff --git a/tests/Datasets/ValidationRulesDataset.php b/tests/Datasets/ValidationRulesDataset.php index 29e8ce09..ae4f46b2 100644 --- a/tests/Datasets/ValidationRulesDataset.php +++ b/tests/Datasets/ValidationRulesDataset.php @@ -536,6 +536,16 @@ 'allowedRules' => ['required', 'min', 'max', 'between', 'regex', 'alpha', 'alpha_num', 'alpha_dash', 'string', 'email', 'starts_with'], 'disallowedRules' => ['numeric', 'integer', 'boolean', 'array', 'date'], ], + 'textarea_field_rules' => [ + 'fieldType' => 'textarea', + 'allowedRules' => ['required', 'min', 'max', 'regex'], + 'disallowedRules' => ['numeric', 'integer', 'boolean', 'array', 'date', 'email'], + ], + 'markdown_editor_field_rules' => [ + 'fieldType' => 'markdown-editor', + 'allowedRules' => ['required', 'min', 'max', 'regex'], + 'disallowedRules' => ['numeric', 'integer', 'boolean', 'array', 'date', 'email'], + ], 'number_field_rules' => [ 'fieldType' => 'number', 'allowedRules' => ['required', 'numeric', 'min', 'max', 'between', 'integer', 'starts_with'], @@ -573,12 +583,17 @@ ], 'rich-editor_field_rules' => [ 'fieldType' => 'rich-editor', - 'allowedRules' => ['required', 'string', 'min', 'max', 'between', 'starts_with'], + 'allowedRules' => ['required', 'string', 'min', 'max', 'between', 'regex', 'starts_with'], 'disallowedRules' => ['numeric', 'alpha', 'boolean', 'array', 'date', 'integer'], ], 'url_field_rules' => [ 'fieldType' => 'link', - 'allowedRules' => ['required', 'url', 'starts_with'], + 'allowedRules' => ['required', 'url', 'regex', 'starts_with'], 'disallowedRules' => ['numeric', 'alpha', 'boolean', 'array', 'date', 'integer'], ], + 'color_picker_field_rules' => [ + 'fieldType' => 'color-picker', + 'allowedRules' => ['required', 'regex', 'starts_with'], + 'disallowedRules' => ['numeric', 'integer', 'boolean', 'array', 'date', 'email'], + ], ]); diff --git a/tests/Fixtures/Resources/Posts/PostResource.php b/tests/Fixtures/Resources/Posts/PostResource.php index 3fa1d362..3e8c3f7e 100644 --- a/tests/Fixtures/Resources/Posts/PostResource.php +++ b/tests/Fixtures/Resources/Posts/PostResource.php @@ -28,7 +28,7 @@ class PostResource extends Resource protected static string|UnitEnum|null $navigationGroup = 'Blog'; - protected static string|BackedEnum|null $navigationIcon = Heroicon::OutlinedDocumentText; + protected static string|\BackedEnum|null $navigationIcon = Heroicon::OutlinedDocumentText; protected static ?string $recordTitleAttribute = 'title';