Skip to content

arqel-dev/fields — API Reference ​

Namespace Arqel\Fields\. 21 field types canónicos + ValidationBridge + macro registry.

Arqel\Fields\Field (abstract) ​

Base de todos os Fields. __construct é final por design — subclasses só declaram protected string $type e protected string $component.

Setters fluentes (via traits) ​

TraitSetters
baselabel, placeholder, helperText, default, readonly, disabled, columnSpan, columnSpanFull, dehydrated, live, liveDebounced, afterStateUpdated
HasValidationrequired, nullable, rules, rule, unique, maxLength, minLength, requiredIf, requiredWith, requiredWithout, validationAttribute, validationMessage
HasVisibilityhidden, hiddenOnCreate, hiddenOnEdit, hiddenOnDetail, hiddenOnTable, visibleOn(string|array), hiddenOn(string|array), visibleIf(Closure), hiddenIf(Closure)
HasDependenciesdependsOn(string|array), resolveOptionsUsing(Closure)
HasAuthorizationcanSee(Closure), canEdit(Closure)

Oracles ​

php
isVisibleIn(string $context, ?Model $record = null): bool   // create|edit|detail|table
canBeSeenBy(?Authenticatable $user, ?Model $record = null): bool
canBeEditedBy(?Authenticatable $user, ?Model $record = null): bool
isDisabled(?Model $record = null): bool
isDehydrated(?Model $record = null): bool
getValidationRules(): array
handleDependencyUpdate(array $formState, string $changedField): array

Arqel\Fields\FieldFactory (final) ​

Factory pública. Não chame new TextField('name') — use FieldFactory::text('name') (alias comum: use Arqel\Fields\FieldFactory as Field;).

MétodoRetorna
Field::text/textarea/email/url/password/slug(name)TextField/TextareaField/...
Field::number/currency(name)NumberField/CurrencyField
Field::boolean/toggle(name)BooleanField/ToggleField
Field::select/multiSelect/radio(name)SelectField/MultiSelectField/RadioField
Field::belongsTo(name, Resource)BelongsToField
Field::hasMany(name, Resource)HasManyField
Field::date/dateTime(name)DateField/DateTimeField
Field::file/image(name)FileField/ImageField
Field::color/hidden(name)ColorField/HiddenField
Field::macro(name, Closure) / Field::hasMacro(name)registry de macros
Field::register(type, class)registry de types custom

Field Types — props específicas ​

ClassSetters extra
TextFieldmaxLength, minLength, pattern, autocomplete, mask
TextareaFieldrows, cols
EmailField(default rule email)
UrlField(default rule url)
PasswordFieldrevealable
SlugFieldfromField, separator, reservedSlugs, uniqueIn
NumberFieldmin, max, step, integer, decimals
CurrencyFieldprefix, suffix, thousandsSeparator, decimalSeparator, decimals
BooleanFieldinline
ToggleFieldonColor, offColor, onIcon, offIcon
SelectFieldoptions(array|Closure), optionsRelationship, searchable, multiple, native, creatable, createOptionUsing, allowCustomValues
BelongsToFieldfactory make($name, $relatedResource), searchable, preload, searchColumns, optionLabel(Closure), relationship(name, ?query)
HasManyFieldfactory make($name, $relatedResource), canAddRecords, canEditRecords
DateFieldformat, displayFormat, minDate, maxDate, closeOnDateSelection, timezone
DateTimeFieldadiciona seconds(bool)
FileFielddisk, directory, visibility, maxSize, acceptedFileTypes, multiple, reorderable, using(STRATEGY_*)
ImageFieldadiciona imageCropAspectRatio, imageResizeTargetWidth
ColorFieldpresets, format('hex'|'rgb'|'hsl'), alpha
HiddenField(sem setters extra)

Arqel\Fields\ValidationBridge (final) ​

Traduz arrays de regras Laravel para schema Zod. 21 translators built-in.

MétodoFunção
translate(array $rules): stringSchema Zod (ex: z.string().email().min(1).max(255).nullable())
register(string $rule, Closure)Registrar translator custom
hasRule(string), flush()Utilitários

Regras desconhecidas são saltadas silenciosamente (confirmed, password, current_password são server-only).

Arqel\Fields\EagerLoadingResolver (final) ​

resolve(array<Field>): array<int, string> extrai relation names de BelongsToField e HasManyField para Builder::with(...). Dedupe automático.

HTTP Controllers ​

ControllerEndpointFunção
FieldSearchControllerGET {panel}/{resource}/fields/{field}/search?q=Async search para BelongsToField (max 20 results, throttle 30/min)
FieldUploadControllerPOST/DELETE {panel}/{resource}/fields/{field}/uploadUpload/delete para FileField

Macros & Custom ​

php
// AppServiceProvider::boot
Field::macro('priceBRL', fn (string $name) =>
    Field::currency($name)->prefix('R$ ')->thousandsSeparator('.')->decimalSeparator(',')
);

// Custom type
Field::register('rating', RatingField::class);

Comandos Artisan ​

ComandoFunção
arqel:field {name} {--force}Gera app/Arqel/Fields/{Name}Field.php + resources/js/Arqel/Fields/{Name}Input.tsx stubs

Licença MIT — construído com Inertia + React + Laravel.