Initial commit

This commit is contained in:
Ronald Huynen
2026-03-23 21:37:59 +01:00
commit 2547717edb
2193 changed files with 972171 additions and 0 deletions

380
config/form-components.php Normal file
View File

@@ -0,0 +1,380 @@
<?php
use Rawilk\FormComponents\Components;
return [
/*
|--------------------------------------------------------------------------
| Component Defaults
|--------------------------------------------------------------------------
|
| We've added some common options you may want to globally edit to avoid
| having to change them everytime you call a component or having to
| override a component definition.
|
*/
'defaults' => [
// Global defaults will be applied to all components.
'global' => [
// Show error states by default.
'show_errors' => true,
// Set the fields to use by default for properties on options in select components.
'value_field' => 'id',
'label_field' => 'name',
// Will default to label field if null - only applies to custom selects
'selected_label_field' => null,
'disabled_field' => 'disabled',
'children_field' => 'children',
],
// Input defaults will be applied to all input types (email, password, etc.).
'input' => [
// Supported: 'sm', 'md', 'lg'
// Applies to all input types except for checkbox/radios.
'size' => 'md',
// Classes applied by default to input parent div.
// Will also apply to select.
'container_class' => null,
// Base input classes applied by default.
'input_class' => null,
],
'password' => [
// Show the password reveal button by default.
'show_toggle' => true,
// Icon shown when password is hidden.
'show_icon' => 'heroicon-m-eye',
// Icon shown when password is revealed.
'hide_icon' => 'heroicon-m-eye-slash',
],
'textarea' => [
// How many rows should the textarea have by default.
'rows' => 3,
// Automatically resize the textarea based on content length.
'auto_resize' => true,
],
'select' => [
// Automatically apply a CSS class to each select.
'input_class' => null,
],
// Defaults for checkbox/radios.
'choice' => [
// Automatically apply a CSS class to each checkbox/radio container.
'container_class' => null,
// Automatically apply a CSS class to each checkbox/radio input.
'input_class' => null,
// Supported: 'sm', 'md', 'lg' (defaults to 'sm')
'size' => null,
// Show the description inline with the label by default.
'inline_description' => false,
// Render the label on the left side of the checkbox/radio by default.
'label_left' => false,
],
// Defaults for the switch toggle component.
'switch_toggle' => [
// Apply a CSS class to the label that contains the switch toggle globally.
'container_class' => null,
// Apply a CSS class to the switch toggle (not the actual input element) globally.
'input_class' => null,
// Set the default size of the switch toggle.
// Supported: 'sm', 'md', 'lg', (default is 'md')
'size' => null,
// Set the default color of the switch toggle. (e.g. "blue", "red", "green", etc.)
'color' => null,
// Set the default icon to show when the switch is in an "on" state.
'on_icon' => null,
// Set the default icon to show when the switch is in an "off" state.
'off_icon' => null,
],
// Defaults for the date picker component.
'date_picker' => [
// Allow date picker to open from clicking on the input by default.
'click_opens' => false,
// Allow user to modify the text of the input by default.
'allow_input' => true,
// Enable the time picker by default.
'enable_time' => false,
// Set the default date format. (defaults to y-m-d)
'format' => null,
// Set an icon to show on the date picker for an "open" button by default.
// Set to null to hide it.
'toggle_icon' => 'heroicon-m-calendar',
// Allow date pickers to be cleared by a clear button by default.
'clearable' => true,
// Set an icon to show on the date picker's clear button by default.
'clear_icon' => 'heroicon-m-x-mark',
// Set the default placeholder text for the date picker.
// For best results, use a translation key as it will be translated automatically by the component.
'placeholder' => 'form-components::messages.date_picker_placeholder',
],
// Defaults for custom and tree select.
'custom_select' => [
// Apply a CSS class by default to the root element of the custom select.
// Note: this will also apply to tree-select as well.
'container_class' => null,
// Apply a CSS class by default to the custom select button.
'input_class' => null,
// Apply a CSS class by default to the custom select menu.
'menu_class' => null,
// Make custom selects searchable by default.
'searchable' => true,
// Make custom selects clearable by default.
// Will not show the clear button if the select is not optional.
'clearable' => true,
// Make custom selects optional by default. When marked as optional, custom select
// will allow you to clear out its value, unless it has a minimum amount of options
// required in a multi-select.
'optional' => false,
// Set the default icon to use to show that an option is selected.
// Set to null to disable it.
'option_selected_icon' => 'heroicon-m-check',
// Define the name of the icon to show on the custom select button by default.
// Set to null to hide it.
'button_icon' => 'heroicon-m-chevron-down',
// Define the default clear icon that will show on the custom select button and
// multi-select selected options. Set to null to hide it.
'clear_icon' => 'heroicon-m-x-mark',
// In a multi-select, this is the minimum amount of options that must be selected.
// Set to null or 0 to disable it.
'min_selected' => null,
// In a multi-select, this is the maximum amount of options that can be selected.
// Set to null to disable it.
'max_selected' => null,
],
// Defaults for the tree select.
'tree_select' => [
// Set the default icon to use to show that an option has children.
// Icon will be rotated to indicate when the option is expanded.
'has_child_icon' => 'heroicon-m-chevron-right',
],
// Defaults for the timezone select.
'timezone_select' => [
// Use the custom select component by default for the timezone select.
'use_custom_select' => true,
],
// Defaults for the form groups.
'form_group' => [
// Apply a CSS class to the root form group element globally.
'class' => null,
// Apply a margin bottom by default to form groups (except for last child).
'margin_bottom' => true,
// Render a border on top of each form group by default.
// Does not render on first of type form groups in a container.
// This option only applies to inline form groups as well.
'border' => true,
// Make all form groups show the label inline with the input by default.
'inline' => false,
// Apply a CSS class to the form group label container globally.
'label_container_class' => null,
// Apply a CSS class to the form group content globally.
'content_class' => null,
],
// Defaults for the file upload component.
'file_upload' => [
// Display a file upload progress bar by default.
// Only shows if a "wire:model" is present.
'display_upload_progress' => true,
// Use the native HTML5 progress bar by default.
// Not recommended if you need consistent styling across browsers.
'use_native_progress_bar' => false,
// Globally apply a CSS class to each file upload container.
'container_class' => null,
// Globally apply a CSS class to each file upload input.
'input_class' => null,
],
// Defaults for the file pond component.
'file_pond' => [
// Allow drag and drop file uploads by default.
'allow_drop' => true,
// Limit multiple file uploads to a certain number of files by default.
// Set to null to allow unlimited files.
'max_files' => 5,
// Configure FilePond options by default.
'options' => [],
],
// Defaults for quill.
'quill' => [
// Automatically focus the editor on page load by default.
'auto_focus' => false,
],
// Defaults for form errors.
'form_error' => [
// Define which HTML tag to use for the error message by default.
'tag' => 'p',
],
],
/*
|--------------------------------------------------------------------------
| Component Aliases
|--------------------------------------------------------------------------
|
| Here you may define aliases for components this package provides.
| For example, instead of rendering an input with <x-form-components::inputs.input>,
| you may register an alias of 'input' and render it with <x-jetstream.input>
| instead.
|
*/
'components' => [
// Base
'form' => Components\Form::class,
'form-error' => Components\FormError::class,
'form-group' => Components\FormGroup::class,
'label' => Components\Label::class,
// Choice
'checkbox-group' => Components\Choice\CheckboxGroup::class,
'checkbox' => Components\Choice\Checkbox::class,
'radio' => Components\Choice\Radio::class,
'switch-toggle' => Components\Choice\SwitchToggle::class,
// Inputs
'input' => Components\Inputs\Input::class,
'email' => Components\Inputs\Email::class,
'password' => Components\Inputs\Password::class,
'select' => Components\Inputs\Select::class,
'textarea' => Components\Inputs\Textarea::class,
'date-picker' => Components\Inputs\DatePicker::class,
'custom-select' => Components\Inputs\CustomSelect::class,
'custom-select-option' => Components\Inputs\CustomSelectOption::class,
'timezone-select' => Components\Inputs\TimezoneSelect::class,
'tree-select' => Components\Inputs\TreeSelect::class,
'tree-select-option' => Components\Inputs\TreeSelectOption::class,
// Files
'file-upload' => Components\Files\FileUpload::class,
'file-pond' => Components\Files\FilePond::class,
// Rich Text
'quill' => Components\RichText\Quill::class,
],
/*
|--------------------------------------------------------------------------
| Prefix
|--------------------------------------------------------------------------
|
| This value will be a prefix for all component aliases under the
| `components` key. This is useful if you want to avoid collisions
| with components from other libraries.
|
| If you set it to "tw", for example, you can reference it like this:
|
| <x-tw-input />
|
*/
'prefix' => '',
/*
|--------------------------------------------------------------------------
| Enable Timezone Select
|--------------------------------------------------------------------------
|
| If you don't plan on using a timezone select in your app, you can disable
| it here. This will prevent the use of app('fc-timezone'). You should also
| remove the "timezone-select" from the registered components in the config
| as well.
|
*/
'enable_timezone' => true,
/*
|--------------------------------------------------------------------------
| Default Timezone Subset
|--------------------------------------------------------------------------
|
| You may not always need the full list of timezones to choose from,
| so you may define a subset of regions to pull from instead. Set
| the value to `false` to use all regions.
|
| Example: [\Rawilk\FormComponents\Support\TimezoneRegionEnum::America->value]
|
*/
'timezone_subset' => false,
/*
|--------------------------------------------------------------------------
| Global Optional Hint
|--------------------------------------------------------------------------
|
| You may set a global "optional" hint text for all optional form inputs
| when you set the `optional` attribute on `<x-form-group>` components
| to `true`. Set to `null` to disable showing it. The default provided
| by the package is a translation key which will be translated
| automatically for you.
|
*/
'optional_hint_text' => 'form-components::messages.optional',
/*
|--------------------------------------------------------------------------
| FormComponents Assets URL
|--------------------------------------------------------------------------
|
| This value sets the path to the FormComponents JavaScript assets, for cases
| where your app's domain root is not the correct path. By default,
| FormComponents will load its JavaScript assets from the app's
| "relative root".
|
| Examples: "/assets", "myapp.com/app",
|
*/
'asset_url' => null,
];