HEX
Server: Apache
System: Linux server2.voipitup.com.au 4.18.0-553.109.1.lve.el8.x86_64 #1 SMP Thu Mar 5 20:23:46 UTC 2026 x86_64
User: posscale (1027)
PHP: 8.2.30
Disabled: exec,passthru,shell_exec,system
Upload Files
File: /home/posscale/public_html/printmanager/vendor/filament/actions/src/Concerns/HasForm.php
<?php

namespace Filament\Actions\Concerns;

use Closure;
use Filament\Forms\Components\Component;
use Filament\Forms\Components\Wizard;
use Filament\Forms\Form;

trait HasForm
{
    /**
     * @var array<string, mixed>
     */
    protected array $formData = [];

    /**
     * @var array<Component> | Closure | null
     */
    protected array | Closure | null $form = null;

    protected bool | Closure $isFormDisabled = false;

    protected ?Closure $mutateFormDataUsing = null;

    /**
     * @deprecated Use `disabledForm() instead.
     */
    public function disableForm(bool | Closure $condition = true): static
    {
        $this->disabledForm($condition);

        return $this;
    }

    public function disabledForm(bool | Closure $condition = true): static
    {
        $this->isFormDisabled = $condition;

        return $this;
    }

    /**
     * @param  array<Component> | Closure | null  $form
     */
    public function form(array | Closure | null $form): static
    {
        $this->form = $form;

        return $this;
    }

    public function getForm(Form $form): ?Form
    {
        $modifiedForm = $this->evaluate($this->form, [
            'form' => $form,
        ]);

        if ($modifiedForm === null) {
            return null;
        }

        if (is_array($modifiedForm) && (! count($modifiedForm))) {
            return null;
        }

        if (is_array($modifiedForm) && $this->isWizard()) {
            $wizard = Wizard::make($modifiedForm)
                ->contained(false)
                ->startOnStep($this->getWizardStartStep())
                ->cancelAction($this->getModalCancelAction())
                ->submitAction($this->getModalSubmitAction())
                ->skippable($this->isWizardSkippable())
                ->disabled($this->isFormDisabled());

            if ($this->modifyWizardUsing) {
                $wizard = $this->evaluate($this->modifyWizardUsing, [
                    'wizard' => $wizard,
                ]) ?? $wizard;
            }

            $modifiedForm = [$wizard];
        }

        if (is_array($modifiedForm)) {
            $modifiedForm = $form->schema($modifiedForm);
        }

        if ($this->isFormDisabled()) {
            return $modifiedForm->disabled();
        }

        return $modifiedForm;
    }

    public function mutateFormDataUsing(?Closure $callback): static
    {
        $this->mutateFormDataUsing = $callback;

        return $this;
    }

    /**
     * @param  array<string, mixed>  $data
     */
    public function formData(array $data, bool $shouldMutate = true): static
    {
        if ($shouldMutate && $this->mutateFormDataUsing) {
            $data = $this->evaluate($this->mutateFormDataUsing, [
                'data' => $data,
            ]);
        }

        $this->formData = $data;

        return $this;
    }

    public function resetFormData(): static
    {
        $this->formData([], shouldMutate: false);

        return $this;
    }

    /**
     * @return array<string, mixed>
     */
    public function getFormData(): array
    {
        return $this->formData;
    }

    public function isFormDisabled(): bool
    {
        return (bool) $this->evaluate($this->isFormDisabled);
    }
}