ibrostudio/laravel-prompts-path-select

1.0.2 2024-10-14 06:41 UTC

This package is auto-updated.

Last update: 2024-11-14 06:54:46 UTC


README

This package is a small add-on to Laravel Prompts to provide the ability to select the path to a directory or file.

Installation

You can install the package via composer:

composer require ibrostudio/laravel-prompts-path-select

Usage

use function IBroStudio\PathSelectPrompt\pathselect;
 
$directory = pathselect('Select a directory');

Usual Prompts options

$directory = pathselect(
    label: 'Select a directory',
    hint: 'Use right and left arrows to navigate in folders',
    required: true,
);

Starting root

You can choose the folder from which the selection starts:

$directory = pathselect(
    label: 'Select a directory',
    root: base_path(),
);

Default selected folder

You can choose the folder from which the selection starts:

$directory = pathselect(
    label: 'Select a directory',
    root: base_path(),
    default: base_path('vendor'),
);

Target file

By default, the selector display directories. If you want, you can target a file:

$file = pathselect(
    label: 'Select a file',
    root: base_path(),
    target: 'file',
);

Target extension

You can also target an extension:

$file = pathselect(
    label: 'Select a JSON file',
    root: base_path(),
    target: '.json',
);

Navigation

You navigate in directories with right and left arrows.

You can press the first letter of a folder or file to quickly select it.

Prompts forms

To insert a pathselect into a form, use the add method:

$responses = form()
    ->text('What is your name?', required: true)
    ->password('What is your password?', validate: ['password' => 'min:8'])
    ->add(function () {
            return pathselect('Select a directory');
        }, name: 'directory')
    ->confirm('Do you accept the terms?')
    ->submit();

Testing

composer test

Changelog

Please see CHANGELOG for more information on what has changed recently.

License

The MIT License (MIT). Please see License File for more information.