mlsolutions/masked-field

A Laravel Nova field.

Maintainers

Package info

github.com/ml-solutions-ltda/laravel-nova-masked-field

Language:Vue

pkg:composer/mlsolutions/masked-field

Statistics

Installs: 1

Dependents: 0

Suggesters: 0

Stars: 0

v1.1 2026-06-09 14:44 UTC

This package is not auto-updated.

Last update: 2026-06-09 21:23:09 UTC


README

Docker development

Build the development container:

docker compose build

Install PHP and JavaScript dependencies. Run Composer first because the frontend build imports Nova mixins from vendor/laravel/nova:

docker compose run --rm app composer install
docker compose run --rm app npm install

Build or watch the Nova field assets:

docker compose run --rm app npm run dev
docker compose run --rm app npm run prod
docker compose run --rm app npm run watch

If your host user is not UID/GID 1000, pass your IDs when building so generated files are writable outside the container:

UID=$(id -u) GID=$(id -g) docker compose build

This package depends on laravel/nova, so composer install may require your Nova Composer credentials.

Installation

composer require mlsolutions/masked-field

Basic Usage

To use the Laravel Nova Masked Field, follow these steps:

  1. Import the MaskedField class in your Nova resource file:
use Mlsolutions\MaskedField\MaskedField;
  1. Add the MaskedField to the fields method of your resource file:
public function fields(Request $request)
{
    return [
        MaskedField::make('Phone')
            ->mask('(###) ###-####'),
    ];
}
  1. Optional - Save Value Without Mask
    If you want to store the raw (unmasked) value in the database, use the raw() method:
MaskedField::make('Phone')
    ->mask('(###) ###-####')
    ->raw(),

masked-field-demo

Usage with dependsOn

You can also use the dependsOn method to set a conditional mask based on the value of another field. Here's an example:

use Mlsolutions\MaskedField\MaskedField;

public function fields(Request $request)
{
    return [
        MaskedField::make('Phone', 'phone')
            ->mask('(###) ###-####')
            ->dependsOn(['country'], function (MaskedField $field, NovaRequest $request, FormData $formData) {
                if($formData->country == 'BR')
                    $field->mask('(##) ####-####');
            })
    ];
}

On Laravel Nova 5, this field emits value changes through Nova's dependent field flow, so it can both react to dependsOn updates and be used as the source field for other dependent fields.

Mask syntax

The Laravel Nova Masked Field uses a mask syntax to define patterns for input formatting. Here are the default tokens available:

{
    '#': { pattern: /[0-9]/ },
    'X': { pattern: /[0-9a-zA-Z]/ },
    'S': { pattern: /[a-zA-Z]/ },
    'A': { pattern: /[a-zA-Z]/, uppercase: true },
    'a': { pattern: /[a-zA-Z]/, lowercase: true },
    '!': { escape: true },
    '*': { repeat: true }
}

You can refer to the beholdr/maska repository for more information on the mask syntax.

References

Notice Regarding Nova License

Hey everyone,

My Nova license expired in November 2023 for version v4.29.2, which is the last version I have access to. Currently, I don't have plans to renew it, so unfortunately, I won't be able to assist with issues related to updates or newer Nova features. Feel free to seek alternative support or solutions with other users or maintainers.

Thank you for your understanding.