Full Code of z-song/laravel-admin for AI

master 67c441eb78ec cached
716 files
2.0 MB
559.4k tokens
2473 symbols
1 requests
Download .txt
Showing preview only (2,224K chars total). Download the full file or copy to clipboard to get everything.
Repository: z-song/laravel-admin
Branch: master
Commit: 67c441eb78ec
Files: 716
Total size: 2.0 MB

Directory structure:
gitextract_oak7w139/

├── .github/
│   ├── dependabot.yml
│   └── stale.yml
├── .gitignore
├── .travis.yml
├── CHANGELOG.md
├── CONTRIBUTING.md
├── FUNDING.yml
├── LICENSE
├── README.md
├── composer.json
├── config/
│   └── admin.php
├── database/
│   └── migrations/
│       └── 2016_01_04_173148_create_admin_tables.php
├── docs/
│   ├── en/
│   │   ├── LICENSE.md
│   │   ├── README.md
│   │   ├── _sidebar.md
│   │   ├── change-log.md
│   │   ├── content-layout.md
│   │   ├── custom-authentication.md
│   │   ├── custom-chart.md
│   │   ├── custom-navbar.md
│   │   ├── extension-api-tester.md
│   │   ├── extension-config.md
│   │   ├── extension-helpers.md
│   │   ├── extension-media-manager.md
│   │   ├── extension-scheduling.md
│   │   ├── installation.md
│   │   ├── model-form-callback.md
│   │   ├── model-form-field-management.md
│   │   ├── model-form-fields.md
│   │   ├── model-form-upload.md
│   │   ├── model-form-validation.md
│   │   ├── model-form.md
│   │   ├── model-grid-actions.md
│   │   ├── model-grid-column.md
│   │   ├── model-grid-custom-tools.md
│   │   ├── model-grid-export.md
│   │   ├── model-grid-filters.md
│   │   ├── model-grid.md
│   │   ├── model-tree.md
│   │   ├── permission.md
│   │   ├── quick-start.md
│   │   ├── upgrade.md
│   │   └── widgets.md
│   ├── issue_template.md
│   └── zh/
│       ├── LICENSE.md
│       ├── README.md
│       ├── _sidebar.md
│       ├── change-log.md
│       ├── content-layout.md
│       ├── custom-authentication.md
│       ├── custom-chart.md
│       ├── custom-navbar.md
│       ├── extension-api-tester.md
│       ├── extension-config.md
│       ├── extension-helpers.md
│       ├── extension-media-manager.md
│       ├── extension-scheduling.md
│       ├── installation.md
│       ├── model-form-callback.md
│       ├── model-form-field-management.md
│       ├── model-form-fields.md
│       ├── model-form-upload.md
│       ├── model-form-validation.md
│       ├── model-form.md
│       ├── model-grid-actions.md
│       ├── model-grid-column.md
│       ├── model-grid-custom-tools.md
│       ├── model-grid-data.md
│       ├── model-grid-export.md
│       ├── model-grid-exporter.md
│       ├── model-grid-filters.md
│       ├── model-grid.md
│       ├── model-tree.md
│       ├── permission.md
│       ├── qa.md
│       ├── quick-start.md
│       ├── upgrade.md
│       └── widgets.md
├── phpunit.xml.dist
├── resources/
│   ├── assets/
│   │   ├── AdminLTE/
│   │   │   └── plugins/
│   │   │       ├── bootstrap-slider/
│   │   │       │   ├── bootstrap-slider.js
│   │   │       │   └── slider.css
│   │   │       ├── iCheck/
│   │   │       │   ├── all.css
│   │   │       │   ├── flat/
│   │   │       │   │   ├── _all.css
│   │   │       │   │   ├── aero.css
│   │   │       │   │   ├── blue.css
│   │   │       │   │   ├── flat.css
│   │   │       │   │   ├── green.css
│   │   │       │   │   ├── grey.css
│   │   │       │   │   ├── orange.css
│   │   │       │   │   ├── pink.css
│   │   │       │   │   ├── purple.css
│   │   │       │   │   ├── red.css
│   │   │       │   │   └── yellow.css
│   │   │       │   ├── futurico/
│   │   │       │   │   └── futurico.css
│   │   │       │   ├── line/
│   │   │       │   │   ├── _all.css
│   │   │       │   │   ├── aero.css
│   │   │       │   │   ├── blue.css
│   │   │       │   │   ├── green.css
│   │   │       │   │   ├── grey.css
│   │   │       │   │   ├── line.css
│   │   │       │   │   ├── orange.css
│   │   │       │   │   ├── pink.css
│   │   │       │   │   ├── purple.css
│   │   │       │   │   ├── red.css
│   │   │       │   │   └── yellow.css
│   │   │       │   ├── minimal/
│   │   │       │   │   ├── _all.css
│   │   │       │   │   ├── aero.css
│   │   │       │   │   ├── blue.css
│   │   │       │   │   ├── green.css
│   │   │       │   │   ├── grey.css
│   │   │       │   │   ├── minimal.css
│   │   │       │   │   ├── orange.css
│   │   │       │   │   ├── pink.css
│   │   │       │   │   ├── purple.css
│   │   │       │   │   ├── red.css
│   │   │       │   │   └── yellow.css
│   │   │       │   ├── polaris/
│   │   │       │   │   └── polaris.css
│   │   │       │   └── square/
│   │   │       │       ├── _all.css
│   │   │       │       ├── aero.css
│   │   │       │       ├── blue.css
│   │   │       │       ├── green.css
│   │   │       │       ├── grey.css
│   │   │       │       ├── orange.css
│   │   │       │       ├── pink.css
│   │   │       │       ├── purple.css
│   │   │       │       ├── red.css
│   │   │       │       ├── square.css
│   │   │       │       └── yellow.css
│   │   │       ├── input-mask/
│   │   │       │   └── phone-codes/
│   │   │       │       ├── phone-be.json
│   │   │       │       ├── phone-codes.json
│   │   │       │       └── readme.txt
│   │   │       ├── ionslider/
│   │   │       │   ├── ion.rangeSlider.css
│   │   │       │   ├── ion.rangeSlider.skinFlat.css
│   │   │       │   └── ion.rangeSlider.skinNice.css
│   │   │       └── select2/
│   │   │           └── i18n/
│   │   │               ├── ar.js
│   │   │               ├── az.js
│   │   │               ├── bg.js
│   │   │               ├── ca.js
│   │   │               ├── cs.js
│   │   │               ├── da.js
│   │   │               ├── de.js
│   │   │               ├── el.js
│   │   │               ├── en.js
│   │   │               ├── es.js
│   │   │               ├── et.js
│   │   │               ├── eu.js
│   │   │               ├── fa.js
│   │   │               ├── fi.js
│   │   │               ├── fr.js
│   │   │               ├── gl.js
│   │   │               ├── he.js
│   │   │               ├── hi.js
│   │   │               ├── hr.js
│   │   │               ├── hu.js
│   │   │               ├── id.js
│   │   │               ├── is.js
│   │   │               ├── it.js
│   │   │               ├── ja.js
│   │   │               ├── km.js
│   │   │               ├── ko.js
│   │   │               ├── lt.js
│   │   │               ├── lv.js
│   │   │               ├── mk.js
│   │   │               ├── ms.js
│   │   │               ├── nb.js
│   │   │               ├── nl.js
│   │   │               ├── pl.js
│   │   │               ├── pt-BR.js
│   │   │               ├── pt.js
│   │   │               ├── ro.js
│   │   │               ├── ru.js
│   │   │               ├── sk.js
│   │   │               ├── sr-Cyrl.js
│   │   │               ├── sr.js
│   │   │               ├── sv.js
│   │   │               ├── th.js
│   │   │               ├── tr.js
│   │   │               ├── uk.js
│   │   │               ├── vi.js
│   │   │               ├── zh-CN.js
│   │   │               └── zh-TW.js
│   │   ├── bootstrap-fileinput/
│   │   │   └── js/
│   │   │       └── plugins/
│   │   │           ├── canvas-to-blob.js
│   │   │           ├── piexif.js
│   │   │           ├── purify.js
│   │   │           └── sortable.js
│   │   ├── bootstrap3-editable/
│   │   │   └── css/
│   │   │       └── bootstrap-editable.css
│   │   ├── flatpickr/
│   │   │   └── dist/
│   │   │       ├── flatpickr.js
│   │   │       └── l10n/
│   │   │           └── zh.js
│   │   ├── font-awesome/
│   │   │   └── fonts/
│   │   │       └── FontAwesome.otf
│   │   ├── google-fonts/
│   │   │   └── fonts.css
│   │   ├── jquery-pjax/
│   │   │   └── jquery.pjax.js
│   │   ├── laravel-admin/
│   │   │   ├── laravel-admin.css
│   │   │   └── laravel-admin.js
│   │   ├── nestable/
│   │   │   ├── jquery.nestable.js
│   │   │   └── nestable.css
│   │   ├── nprogress/
│   │   │   ├── nprogress.css
│   │   │   └── nprogress.js
│   │   ├── number-input/
│   │   │   └── bootstrap-number-input.js
│   │   └── sweetalert2/
│   │       └── dist/
│   │           └── sweetalert2.css
│   ├── lang/
│   │   ├── ar/
│   │   │   └── admin.php
│   │   ├── az/
│   │   │   └── admin.php
│   │   ├── bn/
│   │   │   └── admin.php
│   │   ├── de/
│   │   │   └── admin.php
│   │   ├── en/
│   │   │   └── admin.php
│   │   ├── es/
│   │   │   └── admin.php
│   │   ├── fa/
│   │   │   └── admin.php
│   │   ├── fr/
│   │   │   └── admin.php
│   │   ├── he/
│   │   │   └── admin.php
│   │   ├── id/
│   │   │   └── admin.php
│   │   ├── ja/
│   │   │   └── admin.php
│   │   ├── ko/
│   │   │   └── admin.php
│   │   ├── ms/
│   │   │   └── admin.php
│   │   ├── nl/
│   │   │   └── admin.php
│   │   ├── pl/
│   │   │   └── admin.php
│   │   ├── pt/
│   │   │   └── admin.php
│   │   ├── pt-BR/
│   │   │   └── admin.php
│   │   ├── ru/
│   │   │   └── admin.php
│   │   ├── tr/
│   │   │   └── admin.php
│   │   ├── uk/
│   │   │   └── admin.php
│   │   ├── ur/
│   │   │   └── admin.php
│   │   ├── zh-CN/
│   │   │   └── admin.php
│   │   └── zh-TW/
│   │       └── admin.php
│   └── views/
│       ├── actions/
│       │   └── form/
│       │       ├── checkbox.blade.php
│       │       ├── date.blade.php
│       │       ├── file.blade.php
│       │       ├── help-block.blade.php
│       │       ├── hidden.blade.php
│       │       ├── modal.blade.php
│       │       ├── muitplefile.blade.php
│       │       ├── multipleselect.blade.php
│       │       ├── radio.blade.php
│       │       ├── select.blade.php
│       │       ├── text.blade.php
│       │       └── textarea.blade.php
│       ├── components/
│       │   ├── column-expand.blade.php
│       │   ├── column-modal.blade.php
│       │   ├── filepicker.blade.php
│       │   ├── fullscreen.blade.php
│       │   ├── grid-column-selector.blade.php
│       │   └── refresh-btn.blade.php
│       ├── content.blade.php
│       ├── dashboard/
│       │   ├── dependencies.blade.php
│       │   ├── environment.blade.php
│       │   ├── extensions.blade.php
│       │   └── title.blade.php
│       ├── filter/
│       │   ├── between.blade.php
│       │   ├── betweenDatetime.blade.php
│       │   ├── button.blade.php
│       │   ├── checkbox.blade.php
│       │   ├── container.blade.php
│       │   ├── datetime.blade.php
│       │   ├── gt.blade.php
│       │   ├── lt.blade.php
│       │   ├── modal.blade.php
│       │   ├── multipleselect.blade.php
│       │   ├── radio.blade.php
│       │   ├── select.blade.php
│       │   ├── text.blade.php
│       │   └── where.blade.php
│       ├── form/
│       │   ├── belongsto.blade.php
│       │   ├── belongstomany.blade.php
│       │   ├── button.blade.php
│       │   ├── captcha.blade.php
│       │   ├── checkbox.blade.php
│       │   ├── checkboxbutton.blade.php
│       │   ├── checkboxcard.blade.php
│       │   ├── daterange.blade.php
│       │   ├── datetimerange.blade.php
│       │   ├── display.blade.php
│       │   ├── editor.blade.php
│       │   ├── embeds.blade.php
│       │   ├── error.blade.php
│       │   ├── file.blade.php
│       │   ├── filepicker.blade.php
│       │   ├── footer.blade.php
│       │   ├── hasmany.blade.php
│       │   ├── hasmanytab.blade.php
│       │   ├── hasmanytable.blade.php
│       │   ├── help-block.blade.php
│       │   ├── hidden.blade.php
│       │   ├── id.blade.php
│       │   ├── input.blade.php
│       │   ├── keyvalue.blade.php
│       │   ├── listbox.blade.php
│       │   ├── listfield.blade.php
│       │   ├── map.blade.php
│       │   ├── multiplefile.blade.php
│       │   ├── multipleselect.blade.php
│       │   ├── radio.blade.php
│       │   ├── radiobutton.blade.php
│       │   ├── radiocard.blade.php
│       │   ├── rate.blade.php
│       │   ├── row.blade.php
│       │   ├── select.blade.php
│       │   ├── slider.blade.php
│       │   ├── switchfield.blade.php
│       │   ├── tab.blade.php
│       │   ├── tags.blade.php
│       │   ├── textarea.blade.php
│       │   └── timerange.blade.php
│       ├── form.blade.php
│       ├── grid/
│       │   ├── actions/
│       │   │   ├── contextmenu.blade.php
│       │   │   └── dropdown.blade.php
│       │   ├── batch-actions.blade.php
│       │   ├── displayer/
│       │   │   └── table.blade.php
│       │   ├── empty-grid.blade.php
│       │   ├── fixed-table.blade.php
│       │   ├── image.blade.php
│       │   ├── inline-edit/
│       │   │   ├── belongsto.blade.php
│       │   │   ├── checkbox.blade.php
│       │   │   ├── comm.blade.php
│       │   │   ├── datetime.blade.php
│       │   │   ├── input.blade.php
│       │   │   ├── multiple-select.blade.php
│       │   │   ├── partials/
│       │   │   │   ├── popover.blade.php
│       │   │   │   └── submit.blade.php
│       │   │   ├── radio.blade.php
│       │   │   ├── select.blade.php
│       │   │   ├── switch-group.blade.php
│       │   │   ├── switch.blade.php
│       │   │   ├── textarea.blade.php
│       │   │   └── upload.blade.php
│       │   ├── quick-create/
│       │   │   ├── date.blade.php
│       │   │   ├── form.blade.php
│       │   │   ├── multipleselect.blade.php
│       │   │   ├── select.blade.php
│       │   │   └── text.blade.php
│       │   ├── quick-search.blade.php
│       │   ├── selector.blade.php
│       │   ├── table.blade.php
│       │   └── total-row.blade.php
│       ├── index.blade.php
│       ├── login.blade.php
│       ├── pagination.blade.php
│       ├── partials/
│       │   ├── alerts.blade.php
│       │   ├── css.blade.php
│       │   ├── exception.blade.php
│       │   ├── footer.blade.php
│       │   ├── header.blade.php
│       │   ├── html.blade.php
│       │   ├── js.blade.php
│       │   ├── menu.blade.php
│       │   ├── script.blade.php
│       │   ├── sidebar.blade.php
│       │   ├── style.blade.php
│       │   └── toastr.blade.php
│       ├── show/
│       │   ├── field.blade.php
│       │   └── panel.blade.php
│       ├── show.blade.php
│       ├── tree/
│       │   └── branch.blade.php
│       ├── tree.blade.php
│       └── widgets/
│           ├── alert.blade.php
│           ├── box.blade.php
│           ├── callout.blade.php
│           ├── carousel.blade.php
│           ├── collapse.blade.php
│           ├── form.blade.php
│           ├── info-box.blade.php
│           ├── tab.blade.php
│           └── table.blade.php
├── src/
│   ├── Actions/
│   │   ├── Action.php
│   │   ├── Authorizable.php
│   │   ├── BatchAction.php
│   │   ├── GridAction.php
│   │   ├── Interactor/
│   │   │   ├── Dialog.php
│   │   │   ├── Form.php
│   │   │   └── Interactor.php
│   │   ├── Response.php
│   │   ├── RowAction.php
│   │   ├── SweatAlert2.php
│   │   └── Toastr.php
│   ├── Admin.php
│   ├── AdminServiceProvider.php
│   ├── Auth/
│   │   ├── Database/
│   │   │   ├── AdminTablesSeeder.php
│   │   │   ├── Administrator.php
│   │   │   ├── HasPermissions.php
│   │   │   ├── Menu.php
│   │   │   ├── OperationLog.php
│   │   │   ├── Permission.php
│   │   │   └── Role.php
│   │   └── Permission.php
│   ├── Console/
│   │   ├── ActionCommand.php
│   │   ├── AdminCommand.php
│   │   ├── ConfigCommand.php
│   │   ├── ControllerCommand.php
│   │   ├── CreateUserCommand.php
│   │   ├── ExportSeedCommand.php
│   │   ├── ExtendCommand.php
│   │   ├── FormCommand.php
│   │   ├── GenerateMenuCommand.php
│   │   ├── ImportCommand.php
│   │   ├── InstallCommand.php
│   │   ├── MakeCommand.php
│   │   ├── MenuCommand.php
│   │   ├── MinifyCommand.php
│   │   ├── PermissionCommand.php
│   │   ├── PublishCommand.php
│   │   ├── ResetPasswordCommand.php
│   │   ├── ResourceGenerator.php
│   │   ├── UninstallCommand.php
│   │   └── stubs/
│   │       ├── AdminTablesSeeder.stub
│   │       ├── AuthController.stub
│   │       ├── ExampleController.stub
│   │       ├── HomeController.stub
│   │       ├── action.stub
│   │       ├── blank.stub
│   │       ├── bootstrap.stub
│   │       ├── controller.stub
│   │       ├── extension/
│   │       │   ├── .gitignore.stub
│   │       │   ├── LICENSE.stub
│   │       │   ├── README.md.stub
│   │       │   ├── composer.json.stub
│   │       │   ├── controller.stub
│   │       │   ├── extension.stub
│   │       │   ├── routes.stub
│   │       │   ├── service-provider.stub
│   │       │   └── view.stub
│   │       ├── form.stub
│   │       ├── grid-batch-action.stub
│   │       ├── grid-row-action.stub
│   │       ├── routes.stub
│   │       └── step-form.stub
│   ├── Controllers/
│   │   ├── AdminController.php
│   │   ├── AuthController.php
│   │   ├── Dashboard.php
│   │   ├── HandleController.php
│   │   ├── HasResourceActions.php
│   │   ├── LogController.php
│   │   ├── MenuController.php
│   │   ├── ModelForm.php
│   │   ├── PermissionController.php
│   │   ├── RoleController.php
│   │   └── UserController.php
│   ├── Exception/
│   │   └── Handler.php
│   ├── Extension.php
│   ├── Facades/
│   │   └── Admin.php
│   ├── Form/
│   │   ├── Builder.php
│   │   ├── Concerns/
│   │   │   ├── HandleCascadeFields.php
│   │   │   ├── HasFields.php
│   │   │   └── HasHooks.php
│   │   ├── EmbeddedForm.php
│   │   ├── Field/
│   │   │   ├── BelongsTo.php
│   │   │   ├── BelongsToMany.php
│   │   │   ├── BelongsToRelation.php
│   │   │   ├── Button.php
│   │   │   ├── CanCascadeFields.php
│   │   │   ├── Captcha.php
│   │   │   ├── CascadeGroup.php
│   │   │   ├── Checkbox.php
│   │   │   ├── CheckboxButton.php
│   │   │   ├── CheckboxCard.php
│   │   │   ├── Color.php
│   │   │   ├── Currency.php
│   │   │   ├── Date.php
│   │   │   ├── DateMultiple.php
│   │   │   ├── DateRange.php
│   │   │   ├── Datetime.php
│   │   │   ├── DatetimeRange.php
│   │   │   ├── Decimal.php
│   │   │   ├── Display.php
│   │   │   ├── Divider.php
│   │   │   ├── Editor.php
│   │   │   ├── Email.php
│   │   │   ├── Embeds.php
│   │   │   ├── Fieldset.php
│   │   │   ├── File.php
│   │   │   ├── HasMany.php
│   │   │   ├── HasValuePicker.php
│   │   │   ├── Hidden.php
│   │   │   ├── Html.php
│   │   │   ├── Icon.php
│   │   │   ├── Id.php
│   │   │   ├── Image.php
│   │   │   ├── ImageField.php
│   │   │   ├── Ip.php
│   │   │   ├── KeyValue.php
│   │   │   ├── ListField.php
│   │   │   ├── Listbox.php
│   │   │   ├── Map.php
│   │   │   ├── Mobile.php
│   │   │   ├── Month.php
│   │   │   ├── MultipleFile.php
│   │   │   ├── MultipleImage.php
│   │   │   ├── MultipleSelect.php
│   │   │   ├── Nullable.php
│   │   │   ├── Number.php
│   │   │   ├── Password.php
│   │   │   ├── PlainInput.php
│   │   │   ├── Radio.php
│   │   │   ├── RadioButton.php
│   │   │   ├── RadioCard.php
│   │   │   ├── Rate.php
│   │   │   ├── Select.php
│   │   │   ├── Slider.php
│   │   │   ├── SwitchField.php
│   │   │   ├── Table.php
│   │   │   ├── Tags.php
│   │   │   ├── Text.php
│   │   │   ├── Textarea.php
│   │   │   ├── Time.php
│   │   │   ├── TimeRange.php
│   │   │   ├── Timezone.php
│   │   │   ├── UploadField.php
│   │   │   ├── Url.php
│   │   │   ├── ValuePicker.php
│   │   │   └── Year.php
│   │   ├── Field.php
│   │   ├── Footer.php
│   │   ├── Layout/
│   │   │   ├── Column.php
│   │   │   └── Layout.php
│   │   ├── NestedForm.php
│   │   ├── Row.php
│   │   ├── Tab.php
│   │   └── Tools.php
│   ├── Form.php
│   ├── Grid/
│   │   ├── Actions/
│   │   │   ├── Delete.php
│   │   │   ├── Edit.php
│   │   │   └── Show.php
│   │   ├── Column/
│   │   │   ├── CheckFilter.php
│   │   │   ├── ExtendDisplay.php
│   │   │   ├── Filter.php
│   │   │   ├── HasHeader.php
│   │   │   ├── Help.php
│   │   │   ├── InlineEditing.php
│   │   │   ├── InputFilter.php
│   │   │   ├── RangeFilter.php
│   │   │   └── Sorter.php
│   │   ├── Column.php
│   │   ├── Concerns/
│   │   │   ├── CanDoubleClick.php
│   │   │   ├── CanExportGrid.php
│   │   │   ├── CanFixColumns.php
│   │   │   ├── CanFixHeader.php
│   │   │   ├── CanHidesColumns.php
│   │   │   ├── HasActions.php
│   │   │   ├── HasElementNames.php
│   │   │   ├── HasFilter.php
│   │   │   ├── HasFooter.php
│   │   │   ├── HasHeader.php
│   │   │   ├── HasHotKeys.php
│   │   │   ├── HasQuickCreate.php
│   │   │   ├── HasQuickSearch.php
│   │   │   ├── HasSelector.php
│   │   │   ├── HasTools.php
│   │   │   └── HasTotalRow.php
│   │   ├── Displayers/
│   │   │   ├── AbstractDisplayer.php
│   │   │   ├── Actions.php
│   │   │   ├── Badge.php
│   │   │   ├── BelongsTo.php
│   │   │   ├── BelongsToMany.php
│   │   │   ├── Button.php
│   │   │   ├── Carousel.php
│   │   │   ├── Checkbox.php
│   │   │   ├── ContextMenuActions.php
│   │   │   ├── Copyable.php
│   │   │   ├── Datetime.php
│   │   │   ├── Downloadable.php
│   │   │   ├── DropdownActions.php
│   │   │   ├── Editable.php
│   │   │   ├── Expand.php
│   │   │   ├── Image.php
│   │   │   ├── Input.php
│   │   │   ├── Label.php
│   │   │   ├── Limit.php
│   │   │   ├── Link.php
│   │   │   ├── Modal.php
│   │   │   ├── MultipleSelect.php
│   │   │   ├── Orderable.php
│   │   │   ├── Prefix.php
│   │   │   ├── ProgressBar.php
│   │   │   ├── QRCode.php
│   │   │   ├── Radio.php
│   │   │   ├── RowSelector.php
│   │   │   ├── Secret.php
│   │   │   ├── Select.php
│   │   │   ├── Suffix.php
│   │   │   ├── SwitchDisplay.php
│   │   │   ├── SwitchGroup.php
│   │   │   ├── Table.php
│   │   │   ├── Textarea.php
│   │   │   └── Upload.php
│   │   ├── Exporter.php
│   │   ├── Exporters/
│   │   │   ├── AbstractExporter.php
│   │   │   ├── CsvExporter.php
│   │   │   ├── ExcelExporter.php
│   │   │   └── ExporterInterface.php
│   │   ├── Filter/
│   │   │   ├── AbstractFilter.php
│   │   │   ├── Between.php
│   │   │   ├── Date.php
│   │   │   ├── Day.php
│   │   │   ├── EndsWith.php
│   │   │   ├── Equal.php
│   │   │   ├── Group.php
│   │   │   ├── Gt.php
│   │   │   ├── Hidden.php
│   │   │   ├── Ilike.php
│   │   │   ├── In.php
│   │   │   ├── Layout/
│   │   │   │   ├── Column.php
│   │   │   │   └── Layout.php
│   │   │   ├── Like.php
│   │   │   ├── Lt.php
│   │   │   ├── Month.php
│   │   │   ├── NotEqual.php
│   │   │   ├── NotIn.php
│   │   │   ├── Presenter/
│   │   │   │   ├── Checkbox.php
│   │   │   │   ├── DateTime.php
│   │   │   │   ├── MultipleSelect.php
│   │   │   │   ├── Presenter.php
│   │   │   │   ├── Radio.php
│   │   │   │   ├── Select.php
│   │   │   │   └── Text.php
│   │   │   ├── Scope.php
│   │   │   ├── StartsWith.php
│   │   │   ├── Where.php
│   │   │   └── Year.php
│   │   ├── Filter.php
│   │   ├── Model.php
│   │   ├── Row.php
│   │   ├── Selectable/
│   │   │   ├── BrowserBtn.php
│   │   │   ├── Checkbox.php
│   │   │   └── Radio.php
│   │   ├── Selectable.php
│   │   ├── Simple.php
│   │   ├── Tools/
│   │   │   ├── AbstractTool.php
│   │   │   ├── BatchAction.php
│   │   │   ├── BatchActions.php
│   │   │   ├── BatchDelete.php
│   │   │   ├── ColumnSelector.php
│   │   │   ├── CreateButton.php
│   │   │   ├── ExportButton.php
│   │   │   ├── FilterButton.php
│   │   │   ├── FixColumns.php
│   │   │   ├── Footer.php
│   │   │   ├── Header.php
│   │   │   ├── Paginator.php
│   │   │   ├── PerPageSelector.php
│   │   │   ├── QuickCreate.php
│   │   │   ├── QuickSearch.php
│   │   │   ├── Selector.php
│   │   │   └── TotalRow.php
│   │   └── Tools.php
│   ├── Grid.php
│   ├── Layout/
│   │   ├── Buildable.php
│   │   ├── Column.php
│   │   ├── Content.php
│   │   └── Row.php
│   ├── Middleware/
│   │   ├── Authenticate.php
│   │   ├── Bootstrap.php
│   │   ├── LogOperation.php
│   │   ├── Permission.php
│   │   ├── Pjax.php
│   │   └── Session.php
│   ├── Show/
│   │   ├── AbstractField.php
│   │   ├── Divider.php
│   │   ├── Field.php
│   │   ├── Panel.php
│   │   ├── Relation.php
│   │   └── Tools.php
│   ├── Show.php
│   ├── Traits/
│   │   ├── AdminBuilder.php
│   │   ├── DefaultDatetimeFormat.php
│   │   ├── HasAssets.php
│   │   ├── ModelTree.php
│   │   ├── Resizable.php
│   │   └── ShouldSnakeAttributes.php
│   ├── Tree/
│   │   └── Tools.php
│   ├── Tree.php
│   ├── Widgets/
│   │   ├── Alert.php
│   │   ├── Box.php
│   │   ├── Callout.php
│   │   ├── Carousel.php
│   │   ├── Collapse.php
│   │   ├── ContainsForms.php
│   │   ├── Form.php
│   │   ├── InfoBox.php
│   │   ├── MultipleSteps.php
│   │   ├── Navbar/
│   │   │   ├── Fullscreen.php
│   │   │   └── RefreshButton.php
│   │   ├── Navbar.php
│   │   ├── StepForm.php
│   │   ├── Tab.php
│   │   ├── Table.php
│   │   └── Widget.php
│   └── helpers.php
└── tests/
    ├── AuthTest.php
    ├── FileUploadTest.php
    ├── ImageUploadTest.php
    ├── IndexTest.php
    ├── InstallTest.php
    ├── LaravelTest.php
    ├── MenuTest.php
    ├── ModelTreeTest.php
    ├── OperationLogTest.php
    ├── PermissionsTest.php
    ├── RolesTest.php
    ├── TestCase.php
    ├── UserFormTest.php
    ├── UserGridTest.php
    ├── UserSettingTest.php
    ├── UsersTest.php
    ├── config/
    │   ├── admin.php
    │   └── filesystems.php
    ├── controllers/
    │   ├── FileController.php
    │   ├── ImageController.php
    │   ├── MultipleImageController.php
    │   └── UserController.php
    ├── migrations/
    │   └── 2016_11_22_093148_create_test_tables.php
    ├── models/
    │   ├── File.php
    │   ├── Image.php
    │   ├── MultipleImage.php
    │   ├── Profile.php
    │   ├── Tag.php
    │   ├── Tree.php
    │   └── User.php
    ├── routes.php
    └── seeds/
        ├── UserTableSeeder.php
        └── factory.php

================================================
FILE CONTENTS
================================================

================================================
FILE: .github/dependabot.yml
================================================
version: 2
updates:
- package-ecosystem: composer
  directory: "/"
  schedule:
    interval: daily
    time: "21:00"
  open-pull-requests-limit: 10


================================================
FILE: .github/stale.yml
================================================
# Number of days of inactivity before an issue becomes stale
daysUntilStale: 60
# Number of days of inactivity before a stale issue is closed
daysUntilClose: 7
# Issues with these labels will never be considered stale
exemptLabels:
  - pinned
  - security
# Label to use when marking an issue as stale
staleLabel: wontfix
# Comment to post when marking an issue as stale. Set to `false` to disable
markComment: >
  This issue has been automatically marked as stale because it has not had
  recent activity. It will be closed if no further activity occurs. Thank you
  for your contributions.
# Comment to post when closing a stale issue. Set to `false` to disable
closeComment: false


================================================
FILE: .gitignore
================================================
.DS_Store
phpunit.phar
/vendor
composer.phar
composer.lock
*.project
.idea/
.php_cs.cache
.vscode/

================================================
FILE: .travis.yml
================================================
language: php

php:
  - 7.2
  - 7.3
  - 7.4
  - 8.0

matrix:
  fast_finish: true
  allow_failures:
    - php: hhvm

sudo: false

services:
  - mysql

before_script:
  - mysql -e 'create database if not exists laravel_admin_test;'
  - travis_retry composer self-update
  - travis_retry composer install --no-interaction

script:
  - composer test


================================================
FILE: CHANGELOG.md
================================================
# Changelog
See https://laravel-admin.org/docs/


================================================
FILE: CONTRIBUTING.md
================================================
# Contribute

## Introduction

First, thank you for considering contributing to laravel-admin! It's people like you that make the open source community such a great community! 😊

We welcome any type of contribution, not only code. You can help with 
- **QA**: file bug reports, the more details you can give the better (e.g. screenshots with the console open)
- **Marketing**: writing blog posts, howto's, printing stickers, ...
- **Community**: presenting the project at meetups, organizing a dedicated meetup for the local community, ...
- **Code**: take a look at the [open issues](issues). Even if you can't write code, commenting on them, showing that you care about a given issue matters. It helps us triage them.
- **Money**: we welcome financial contributions in full transparency on our [open collective](https://opencollective.com/laravel-admin).

## Your First Contribution

Working on your first Pull Request? You can learn how from this *free* series, [How to Contribute to an Open Source Project on GitHub](https://app.egghead.io/playlists/how-to-contribute-to-an-open-source-project-on-github).

## Submitting code

Any code change should be submitted as a pull request. The description should explain what the code does and give steps to execute it. The pull request should also contain tests.

## Code review process

The bigger the pull request, the longer it will take to review and merge. Try to break down large pull requests in smaller chunks that are easier to review and merge.
It is also always helpful to have some context for your pull request. What was the purpose? Why does it matter to you?

## Financial contributions

We also welcome financial contributions in full transparency on our [open collective](https://opencollective.com/laravel-admin).
Anyone can file an expense. If the expense makes sense for the development of the community, it will be "merged" in the ledger of our open collective by the core contributors and the person who filed the expense will be reimbursed.

## Questions

If you have any questions, create an [issue](issue) (protip: do a quick search first to see if someone else didn't ask the same question before!).
You can also reach us at hello@laravel-admin.opencollective.com.

## Credits

### Contributors

Thank you to all the people who have already contributed to laravel-admin!
<a href="graphs/contributors"><img src="https://opencollective.com/laravel-admin/contributors.svg?width=890" /></a>


### Backers

Thank you to all our backers! [[Become a backer](https://opencollective.com/laravel-admin#backer)]

<a href="https://opencollective.com/laravel-admin#backers" target="_blank"><img src="https://opencollective.com/laravel-admin/backers.svg?width=890"></a>


### Sponsors

Thank you to all our sponsors! (please ask your company to also support this open source project by [becoming a sponsor](https://opencollective.com/laravel-admin#sponsor))

<a href="https://opencollective.com/laravel-admin/sponsor/0/website" target="_blank"><img src="https://opencollective.com/laravel-admin/sponsor/0/avatar.svg"></a>
<a href="https://opencollective.com/laravel-admin/sponsor/1/website" target="_blank"><img src="https://opencollective.com/laravel-admin/sponsor/1/avatar.svg"></a>
<a href="https://opencollective.com/laravel-admin/sponsor/2/website" target="_blank"><img src="https://opencollective.com/laravel-admin/sponsor/2/avatar.svg"></a>
<a href="https://opencollective.com/laravel-admin/sponsor/3/website" target="_blank"><img src="https://opencollective.com/laravel-admin/sponsor/3/avatar.svg"></a>
<a href="https://opencollective.com/laravel-admin/sponsor/4/website" target="_blank"><img src="https://opencollective.com/laravel-admin/sponsor/4/avatar.svg"></a>
<a href="https://opencollective.com/laravel-admin/sponsor/5/website" target="_blank"><img src="https://opencollective.com/laravel-admin/sponsor/5/avatar.svg"></a>
<a href="https://opencollective.com/laravel-admin/sponsor/6/website" target="_blank"><img src="https://opencollective.com/laravel-admin/sponsor/6/avatar.svg"></a>
<a href="https://opencollective.com/laravel-admin/sponsor/7/website" target="_blank"><img src="https://opencollective.com/laravel-admin/sponsor/7/avatar.svg"></a>
<a href="https://opencollective.com/laravel-admin/sponsor/8/website" target="_blank"><img src="https://opencollective.com/laravel-admin/sponsor/8/avatar.svg"></a>
<a href="https://opencollective.com/laravel-admin/sponsor/9/website" target="_blank"><img src="https://opencollective.com/laravel-admin/sponsor/9/avatar.svg"></a>

<!-- This `CONTRIBUTING.md` is based on @nayafia's template https://github.com/nayafia/contributing-template -->


================================================
FILE: FUNDING.yml
================================================
# These are supported funding model platforms

open_collective: laravel-admin
custom: http://laravel-admin.org/donate


================================================
FILE: LICENSE
================================================
The MIT License (MIT)

Copyright (c) 2015 Jens Segers

Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


================================================
FILE: README.md
================================================
<p align="center">
<a href="https://laravel-admin.org/">
<img src="https://laravel-admin.org/images/logo002.png" alt="laravel-admin">
</a>

<p align="center">⛵<code>laravel-admin</code> is administrative interface builder for laravel which can help you build CRUD backends just with few lines of code.</p>

<p align="center">
<a href="https://laravel-admin.org/docs">Documentation</a> |
<a href="https://laravel-admin.org/docs/zh">中文文档</a> |
<a href="https://demo.laravel-admin.org">Demo</a> |
<a href="https://github.com/z-song/demo.laravel-admin.org">Demo source code</a> |
<a href="#extensions">Extensions</a>
</p>

<p align="center">
    <a href="https://travis-ci.org/z-song/laravel-admin">
        <img src="https://travis-ci.org/z-song/laravel-admin.svg?branch=master" alt="Build Status">
    </a>
    <a href="https://styleci.io/repos/48796179">
        <img src="https://styleci.io/repos/48796179/shield" alt="StyleCI">
    </a>
    <a href="https://packagist.org/packages/encore/laravel-admin">
        <img src="https://img.shields.io/packagist/l/encore/laravel-admin.svg?maxAge=2592000&&style=flat-square" alt="Packagist">
    </a>
    <a href="https://packagist.org/packages/encore/laravel-admin">
        <img src="https://img.shields.io/packagist/dt/encore/laravel-admin.svg?style=flat-square" alt="Total Downloads">
    </a>
    <a href="https://github.com/z-song/laravel-admin">
        <img src="https://img.shields.io/badge/Awesome-Laravel-brightgreen.svg?style=flat-square" alt="Awesome Laravel">
    </a>
    <a href="#backers" alt="sponsors on Open Collective">
        <img src="https://opencollective.com/laravel-admin/backers/badge.svg?style=flat-square" />
    </a> 
    <a href="https://www.paypal.me/zousong" alt="Paypal donate">
        <img src="https://img.shields.io/badge/Donate-Paypal-green.svg?style=flat-square" />
    </a> 
</div>

<p align="center">
    Inspired by <a href="https://github.com/sleeping-owl/admin" target="_blank">SleepingOwlAdmin</a> and <a href="https://github.com/zofe/rapyd-laravel" target="_blank">rapyd-laravel</a>.
</p>

Sponsor
------------

<a href="https://ter.li/32ifxj">
<img src="https://user-images.githubusercontent.com/1479100/102449272-dc356880-406e-11eb-9079-169c8c2af81c.png" alt="laravel-admin" width="200px;">
</a>


Requirements
------------
 - PHP >= 7.0.0
 - Laravel >= 5.5.0
 - Fileinfo PHP Extension

Installation
------------

> This package requires PHP 7+ and Laravel 5.5, for old versions please refer to [1.4](https://laravel-admin.org/docs/v1.4/#/)

First, install laravel 5.5, and make sure that the database connection settings are correct.

```
composer require encore/laravel-admin
```

Then run these commands to publish assets and config:

```
php artisan vendor:publish --provider="Encore\Admin\AdminServiceProvider"
```
After run command you can find config file in `config/admin.php`, in this file you can change the install directory,db connection or table names.

At last run following command to finish install.
```
php artisan admin:install
```

Open `http://localhost/admin/` in browser,use username `admin` and password `admin` to login.

Configurations
------------
The file `config/admin.php` contains an array of configurations, you can find the default configurations in there.

Right to left support
------------
just go to this path `<YOUR_PROJECT_PATH>\vendor\encore\laravel-admin\src\Traits\HasAssets.php` and modify `$baseCss` array for loading right to left (rtl) version of bootstap and AdminLTE css files.    
**bootstrap.min.css** change it to **bootstrap.rtl.min.css**    
**AdminLTE.min.css** change it to **AdminLTE.rtl.min.css**  

## Extensions

| Extension                                        | Description                              | laravel-admin                              |
| ------------------------------------------------ | ---------------------------------------- |---------------------------------------- |
| [helpers](https://github.com/laravel-admin-extensions/helpers)             | Several tools to help you in development | ~1.5 |
| [media-manager](https://github.com/laravel-admin-extensions/media-manager) | Provides a web interface to manage local files          | ~1.5 |
| [api-tester](https://github.com/laravel-admin-extensions/api-tester) | Help you to test the local laravel APIs          |~1.5 |
| [scheduling](https://github.com/laravel-admin-extensions/scheduling) | Scheduling task manager for laravel-admin          |~1.5 |
| [redis-manager](https://github.com/laravel-admin-extensions/redis-manager) | Redis manager for laravel-admin          |~1.5 |
| [backup](https://github.com/laravel-admin-extensions/backup) | An admin interface for managing backups          |~1.5 |
| [log-viewer](https://github.com/laravel-admin-extensions/log-viewer) | Log viewer for laravel           |~1.5 |
| [config](https://github.com/laravel-admin-extensions/config) | Config manager for laravel-admin          |~1.5 |
| [reporter](https://github.com/laravel-admin-extensions/reporter) | Provides a developer-friendly web interface to view the exception          |~1.5 |
| [wangEditor](https://github.com/laravel-admin-extensions/wangEditor) | A rich text editor based on [wangeditor](http://www.wangeditor.com/)         |~1.6 |
| [summernote](https://github.com/laravel-admin-extensions/summernote) | A rich text editor based on [summernote](https://summernote.org/)          |~1.6 |
| [china-distpicker](https://github.com/laravel-admin-extensions/china-distpicker) | 一个基于[distpicker](https://github.com/fengyuanchen/distpicker)的中国省市区选择器          |~1.6 |
| [simplemde](https://github.com/laravel-admin-extensions/simplemde) | A markdown editor based on [simplemde](https://github.com/sparksuite/simplemde-markdown-editor)          |~1.6 |
| [phpinfo](https://github.com/laravel-admin-extensions/phpinfo) | Integrate the `phpinfo` page into laravel-admin          |~1.6 |
| [php-editor](https://github.com/laravel-admin-extensions/php-editor) <br/> [python-editor](https://github.com/laravel-admin-extensions/python-editor) <br/> [js-editor](https://github.com/laravel-admin-extensions/js-editor)<br/> [css-editor](https://github.com/laravel-admin-extensions/css-editor)<br/> [clike-editor](https://github.com/laravel-admin-extensions/clike-editor)| Several programing language editor extensions based on code-mirror          |~1.6 |
| [star-rating](https://github.com/laravel-admin-extensions/star-rating) | Star Rating extension for laravel-admin          |~1.6 |
| [json-editor](https://github.com/laravel-admin-extensions/json-editor) | JSON Editor for Laravel-admin          |~1.6 |
| [grid-lightbox](https://github.com/laravel-admin-extensions/grid-lightbox) | Turn your grid into a lightbox & gallery          |~1.6 |
| [daterangepicker](https://github.com/laravel-admin-extensions/daterangepicker) | Integrates daterangepicker into laravel-admin          |~1.6 |
| [material-ui](https://github.com/laravel-admin-extensions/material-ui) | Material-UI extension for laravel-admin          |~1.6 |
| [sparkline](https://github.com/laravel-admin-extensions/sparkline) | Integrates jQuery sparkline into laravel-admin          |~1.6 |
| [chartjs](https://github.com/laravel-admin-extensions/chartjs) | Use Chartjs in laravel-admin          |~1.6 |
| [echarts](https://github.com/laravel-admin-extensions/echarts) | Use Echarts in laravel-admin          |~1.6 |
| [simditor](https://github.com/laravel-admin-extensions/simditor) | Integrates simditor full-rich editor into laravel-admin          |~1.6 |
| [cropper](https://github.com/laravel-admin-extensions/cropper) | A simple jQuery image cropping plugin.          |~1.6 |
| [composer-viewer](https://github.com/laravel-admin-extensions/composer-viewer) | A web interface of composer packages in laravel.          |~1.6 |
| [data-table](https://github.com/laravel-admin-extensions/data-table) | Advanced table widget for laravel-admin |~1.6 |
| [watermark](https://github.com/laravel-admin-extensions/watermark) | Text watermark for laravel-admin |~1.6 |
| [google-authenticator](https://github.com/ylic/laravel-admin-google-authenticator) | Google authenticator |~1.6 |



## Contributors
 This project exists thanks to all the people who contribute. [[Contribute](CONTRIBUTING.md)].
<a href="graphs/contributors"><img src="https://opencollective.com/laravel-admin/contributors.svg?width=890&button=false" /></a>
 ## Backers
 Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com/laravel-admin#backer)]
 <a href="https://opencollective.com/laravel-admin#backers" target="_blank"><img src="https://opencollective.com/laravel-admin/backers.svg?width=890"></a>
 ## Sponsors
 Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/laravel-admin#sponsor)]
 <a href="https://opencollective.com/laravel-admin/sponsor/0/website" target="_blank"><img src="https://opencollective.com/laravel-admin/sponsor/0/avatar.svg"></a>
<a href="https://opencollective.com/laravel-admin/sponsor/1/website" target="_blank"><img src="https://opencollective.com/laravel-admin/sponsor/1/avatar.svg"></a>
<a href="https://opencollective.com/laravel-admin/sponsor/2/website" target="_blank"><img src="https://opencollective.com/laravel-admin/sponsor/2/avatar.svg"></a>
<a href="https://opencollective.com/laravel-admin/sponsor/3/website" target="_blank"><img src="https://opencollective.com/laravel-admin/sponsor/3/avatar.svg"></a>
<a href="https://opencollective.com/laravel-admin/sponsor/4/website" target="_blank"><img src="https://opencollective.com/laravel-admin/sponsor/4/avatar.svg"></a>
<a href="https://opencollective.com/laravel-admin/sponsor/5/website" target="_blank"><img src="https://opencollective.com/laravel-admin/sponsor/5/avatar.svg"></a>
<a href="https://opencollective.com/laravel-admin/sponsor/6/website" target="_blank"><img src="https://opencollective.com/laravel-admin/sponsor/6/avatar.svg"></a>
<a href="https://opencollective.com/laravel-admin/sponsor/7/website" target="_blank"><img src="https://opencollective.com/laravel-admin/sponsor/7/avatar.svg"></a>
<a href="https://opencollective.com/laravel-admin/sponsor/8/website" target="_blank"><img src="https://opencollective.com/laravel-admin/sponsor/8/avatar.svg"></a>
<a href="https://opencollective.com/laravel-admin/sponsor/9/website" target="_blank"><img src="https://opencollective.com/laravel-admin/sponsor/9/avatar.svg"></a>

Other
------------
`laravel-admin` based on following plugins or services:

+ [Laravel](https://laravel.com/)
+ [AdminLTE](https://adminlte.io/)
+ [Datetimepicker](http://eonasdan.github.io/bootstrap-datetimepicker/)
+ [font-awesome](http://fontawesome.io)
+ [moment](http://momentjs.com/)
+ [Google map](https://www.google.com/maps)
+ [Tencent map](http://lbs.qq.com/)
+ [bootstrap-fileinput](https://github.com/kartik-v/bootstrap-fileinput)
+ [jquery-pjax](https://github.com/defunkt/jquery-pjax)
+ [Nestable](http://dbushell.github.io/Nestable/)
+ [toastr](http://codeseven.github.io/toastr/)
+ [X-editable](http://github.com/vitalets/x-editable)
+ [bootstrap-number-input](https://github.com/wpic/bootstrap-number-input)
+ [fontawesome-iconpicker](https://github.com/itsjavi/fontawesome-iconpicker)
+ [sweetalert2](https://github.com/sweetalert2/sweetalert2)

License
------------
`laravel-admin` is licensed under [The MIT License (MIT)](LICENSE).


================================================
FILE: composer.json
================================================
{
    "name": "encore/laravel-admin",
    "description": "laravel admin",
    "type": "library",
    "keywords": ["laravel", "admin", "grid", "form"],
    "homepage": "https://github.com/z-song/laravel-admin",
    "license": "MIT",
    "authors": [
        {
            "name": "zsong",
            "email": "zosong@126.com"
        }
    ],
    "require": {
        "php": ">=7.0.0",
        "symfony/dom-crawler": "~3.1|~4.0|~5.0",
        "laravel/framework": ">=5.5",
        "doctrine/dbal": "2.*|3.*"
    },
    "require-dev": {
        "laravel/laravel": ">=5.5",
        "fzaninotto/faker": "~1.4",
        "intervention/image": "~2.3",
        "laravel/browser-kit-testing": "^6.0",
        "spatie/phpunit-watcher": "^1.22.0"
    },
    "autoload": {
        "psr-4": {
            "Encore\\Admin\\": "src/"
        },
        "files": [
            "src/helpers.php"
        ]
    },
    "autoload-dev": {
        "psr-4": {
            "Tests\\Models\\": "tests/models",
            "Tests\\Controllers\\": "tests/controllers"
        },
        "classmap": [
            "tests/TestCase.php"
        ]
    },
    "scripts": {
        "test": "./vendor/bin/phpunit"
    },
    "suggest": {
        "intervention/image": "Required to handling and manipulation upload images (~2.3).",
        "spatie/eloquent-sortable": "Required to built orderable gird."
    },
    "extra": {
        "laravel": {
            "providers": [
                "Encore\\Admin\\AdminServiceProvider"
            ],
            "aliases": {
                "Admin": "Encore\\Admin\\Facades\\Admin"
            }
        }
    }
}


================================================
FILE: config/admin.php
================================================
<?php

return [

    /*
    |--------------------------------------------------------------------------
    | Laravel-admin name
    |--------------------------------------------------------------------------
    |
    | This value is the name of laravel-admin, This setting is displayed on the
    | login page.
    |
    */
    'name' => 'Laravel-admin',

    /*
    |--------------------------------------------------------------------------
    | Laravel-admin logo
    |--------------------------------------------------------------------------
    |
    | The logo of all admin pages. You can also set it as an image by using a
    | `img` tag, eg '<img src="http://logo-url" alt="Admin logo">'.
    |
    */
    'logo' => '<b>Laravel</b> admin',

    /*
    |--------------------------------------------------------------------------
    | Laravel-admin mini logo
    |--------------------------------------------------------------------------
    |
    | The logo of all admin pages when the sidebar menu is collapsed. You can
    | also set it as an image by using a `img` tag, eg
    | '<img src="http://logo-url" alt="Admin logo">'.
    |
    */
    'logo-mini' => '<b>La</b>',

    /*
    |--------------------------------------------------------------------------
    | Laravel-admin bootstrap setting
    |--------------------------------------------------------------------------
    |
    | This value is the path of laravel-admin bootstrap file.
    |
    */
    'bootstrap' => app_path('Admin/bootstrap.php'),

    /*
    |--------------------------------------------------------------------------
    | Laravel-admin route settings
    |--------------------------------------------------------------------------
    |
    | The routing configuration of the admin page, including the path prefix,
    | the controller namespace, and the default middleware. If you want to
    | access through the root path, just set the prefix to empty string.
    |
    */
    'route' => [

        'prefix' => env('ADMIN_ROUTE_PREFIX', 'admin'),

        'namespace' => 'App\\Admin\\Controllers',

        'middleware' => ['web', 'admin'],
    ],

    /*
    |--------------------------------------------------------------------------
    | Laravel-admin install directory
    |--------------------------------------------------------------------------
    |
    | The installation directory of the controller and routing configuration
    | files of the administration page. The default is `app/Admin`, which must
    | be set before running `artisan admin::install` to take effect.
    |
    */
    'directory' => app_path('Admin'),

    /*
    |--------------------------------------------------------------------------
    | Laravel-admin html title
    |--------------------------------------------------------------------------
    |
    | Html title for all pages.
    |
    */
    'title' => 'Admin',

    /*
    |--------------------------------------------------------------------------
    | Access via `https`
    |--------------------------------------------------------------------------
    |
    | If your page is going to be accessed via https, set it to `true`.
    |
    */
    'https' => env('ADMIN_HTTPS', false),

    /*
    |--------------------------------------------------------------------------
    | Laravel-admin auth setting
    |--------------------------------------------------------------------------
    |
    | Authentication settings for all admin pages. Include an authentication
    | guard and a user provider setting of authentication driver.
    |
    | You can specify a controller for `login` `logout` and other auth routes.
    |
    */
    'auth' => [

        'controller' => App\Admin\Controllers\AuthController::class,

        'guard' => 'admin',

        'guards' => [
            'admin' => [
                'driver'   => 'session',
                'provider' => 'admin',
            ],
        ],

        'providers' => [
            'admin' => [
                'driver' => 'eloquent',
                'model'  => Encore\Admin\Auth\Database\Administrator::class,
            ],
        ],

        // Add "remember me" to login form
        'remember' => true,

        // Redirect to the specified URI when user is not authorized.
        'redirect_to' => 'auth/login',

        // The URIs that should be excluded from authorization.
        'excepts' => [
            'auth/login',
            'auth/logout',
        ],
    ],

    /*
    |--------------------------------------------------------------------------
    | Laravel-admin upload setting
    |--------------------------------------------------------------------------
    |
    | File system configuration for form upload files and images, including
    | disk and upload path.
    |
    */
    'upload' => [

        // Disk in `config/filesystem.php`.
        'disk' => 'admin',

        // Image and file upload path under the disk above.
        'directory' => [
            'image' => 'images',
            'file'  => 'files',
        ],
    ],

    /*
    |--------------------------------------------------------------------------
    | Laravel-admin database settings
    |--------------------------------------------------------------------------
    |
    | Here are database settings for laravel-admin builtin model & tables.
    |
    */
    'database' => [

        // Database connection for following tables.
        'connection' => '',

        // User tables and model.
        'users_table' => 'admin_users',
        'users_model' => Encore\Admin\Auth\Database\Administrator::class,

        // Role table and model.
        'roles_table' => 'admin_roles',
        'roles_model' => Encore\Admin\Auth\Database\Role::class,

        // Permission table and model.
        'permissions_table' => 'admin_permissions',
        'permissions_model' => Encore\Admin\Auth\Database\Permission::class,

        // Menu table and model.
        'menu_table' => 'admin_menu',
        'menu_model' => Encore\Admin\Auth\Database\Menu::class,

        // Pivot table for table above.
        'operation_log_table'    => 'admin_operation_log',
        'user_permissions_table' => 'admin_user_permissions',
        'role_users_table'       => 'admin_role_users',
        'role_permissions_table' => 'admin_role_permissions',
        'role_menu_table'        => 'admin_role_menu',
    ],

    /*
    |--------------------------------------------------------------------------
    | User operation log setting
    |--------------------------------------------------------------------------
    |
    | By setting this option to open or close operation log in laravel-admin.
    |
    */
    'operation_log' => [

        'enable' => true,

        /*
         * Only logging allowed methods in the list
         */
        'allowed_methods' => ['GET', 'HEAD', 'POST', 'PUT', 'DELETE', 'CONNECT', 'OPTIONS', 'TRACE', 'PATCH'],

        /*
         * Routes that will not log to database.
         *
         * All method to path like: admin/auth/logs
         * or specific method to path like: get:admin/auth/logs.
         */
        'except' => [
            env('ADMIN_ROUTE_PREFIX', 'admin').'/auth/logs*',
        ],
    ],

    /*
    |--------------------------------------------------------------------------
    | Indicates whether to check route permission.
    |--------------------------------------------------------------------------
    */
    'check_route_permission' => true,

    /*
    |--------------------------------------------------------------------------
    | Indicates whether to check menu roles.
    |--------------------------------------------------------------------------
    */
    'check_menu_roles'       => true,

    /*
    |--------------------------------------------------------------------------
    | User default avatar
    |--------------------------------------------------------------------------
    |
    | Set a default avatar for newly created users.
    |
    */
    'default_avatar' => '/vendor/laravel-admin/AdminLTE/dist/img/user2-160x160.jpg',

    /*
    |--------------------------------------------------------------------------
    | Admin map field provider
    |--------------------------------------------------------------------------
    |
    | Supported: "tencent", "google", "yandex".
    |
    */
    'map_provider' => 'google',

    /*
    |--------------------------------------------------------------------------
    | Application Skin
    |--------------------------------------------------------------------------
    |
    | This value is the skin of admin pages.
    | @see https://adminlte.io/docs/2.4/layout
    |
    | Supported:
    |    "skin-blue", "skin-blue-light", "skin-yellow", "skin-yellow-light",
    |    "skin-green", "skin-green-light", "skin-purple", "skin-purple-light",
    |    "skin-red", "skin-red-light", "skin-black", "skin-black-light".
    |
    */
    'skin' => env('ADMIN_SKIN', 'skin-blue-light'),

    /*
    |--------------------------------------------------------------------------
    | Application layout
    |--------------------------------------------------------------------------
    |
    | This value is the layout of admin pages.
    | @see https://adminlte.io/docs/2.4/layout
    |
    | Supported: "fixed", "layout-boxed", "layout-top-nav", "sidebar-collapse",
    | "sidebar-mini".
    |
    */
    'layout' => ['sidebar-mini', 'sidebar-collapse'],

    /*
    |--------------------------------------------------------------------------
    | Login page background image
    |--------------------------------------------------------------------------
    |
    | This value is used to set the background image of login page.
    |
    */
    'login_background_image' => '',

    /*
    |--------------------------------------------------------------------------
    | Show version at footer
    |--------------------------------------------------------------------------
    |
    | Whether to display the version number of laravel-admin at the footer of
    | each page
    |
    */
    'show_version' => true,

    /*
    |--------------------------------------------------------------------------
    | Show environment at footer
    |--------------------------------------------------------------------------
    |
    | Whether to display the environment at the footer of each page
    |
    */
    'show_environment' => true,

    /*
    |--------------------------------------------------------------------------
    | Menu bind to permission
    |--------------------------------------------------------------------------
    |
    | whether enable menu bind to a permission
    */
    'menu_bind_permission' => true,

    /*
    |--------------------------------------------------------------------------
    | Enable default breadcrumb
    |--------------------------------------------------------------------------
    |
    | Whether enable default breadcrumb for every page content.
    */
    'enable_default_breadcrumb' => true,

    /*
    |--------------------------------------------------------------------------
    | Enable/Disable assets minify
    |--------------------------------------------------------------------------
    */
    'minify_assets' => [

        // Assets will not be minified.
        'excepts' => [

        ],

    ],

    /*
    |--------------------------------------------------------------------------
    | Enable/Disable sidebar menu search
    |--------------------------------------------------------------------------
    */
    'enable_menu_search' => true,

    /*
    |--------------------------------------------------------------------------
    | Exclude route from generate menu command
    |--------------------------------------------------------------------------
    */
    'menu_exclude' => [
        '_handle_selectable_',
        '_handle_renderable_',
    ],

    /*
    |--------------------------------------------------------------------------
    | Alert message that will displayed on top of the page.
    |--------------------------------------------------------------------------
    */
    'top_alert' => '',

    /*
    |--------------------------------------------------------------------------
    | The global Grid action display class.
    |--------------------------------------------------------------------------
    */
    'grid_action_class' => \Encore\Admin\Grid\Displayers\DropdownActions::class,

    /*
    |--------------------------------------------------------------------------
    | Extension Directory
    |--------------------------------------------------------------------------
    |
    | When you use command `php artisan admin:extend` to generate extensions,
    | the extension files will be generated in this directory.
    */
    'extension_dir' => app_path('Admin/Extensions'),

    /*
    |--------------------------------------------------------------------------
    | Settings for extensions.
    |--------------------------------------------------------------------------
    |
    | You can find all available extensions here
    | https://github.com/laravel-admin-extensions.
    |
    */
    'extensions' => [

    ],
];


================================================
FILE: database/migrations/2016_01_04_173148_create_admin_tables.php
================================================
<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateAdminTables extends Migration
{
    /**
     * {@inheritdoc}
     */
    public function getConnection()
    {
        return config('admin.database.connection') ?: config('database.default');
    }

    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create(config('admin.database.users_table'), function (Blueprint $table) {
            $table->increments('id');
            $table->string('username', 190)->unique();
            $table->string('password', 60);
            $table->string('name');
            $table->string('avatar')->nullable();
            $table->string('remember_token', 100)->nullable();
            $table->timestamps();
        });

        Schema::create(config('admin.database.roles_table'), function (Blueprint $table) {
            $table->increments('id');
            $table->string('name', 50)->unique();
            $table->string('slug', 50)->unique();
            $table->timestamps();
        });

        Schema::create(config('admin.database.permissions_table'), function (Blueprint $table) {
            $table->increments('id');
            $table->string('name', 50)->unique();
            $table->string('slug', 50)->unique();
            $table->string('http_method')->nullable();
            $table->text('http_path')->nullable();
            $table->timestamps();
        });

        Schema::create(config('admin.database.menu_table'), function (Blueprint $table) {
            $table->increments('id');
            $table->integer('parent_id')->default(0);
            $table->integer('order')->default(0);
            $table->string('title', 50);
            $table->string('icon', 50);
            $table->string('uri')->nullable();
            $table->string('permission')->nullable();

            $table->timestamps();
        });

        Schema::create(config('admin.database.role_users_table'), function (Blueprint $table) {
            $table->integer('role_id');
            $table->integer('user_id');
            $table->index(['role_id', 'user_id']);
            $table->timestamps();
        });

        Schema::create(config('admin.database.role_permissions_table'), function (Blueprint $table) {
            $table->integer('role_id');
            $table->integer('permission_id');
            $table->index(['role_id', 'permission_id']);
            $table->timestamps();
        });

        Schema::create(config('admin.database.user_permissions_table'), function (Blueprint $table) {
            $table->integer('user_id');
            $table->integer('permission_id');
            $table->index(['user_id', 'permission_id']);
            $table->timestamps();
        });

        Schema::create(config('admin.database.role_menu_table'), function (Blueprint $table) {
            $table->integer('role_id');
            $table->integer('menu_id');
            $table->index(['role_id', 'menu_id']);
            $table->timestamps();
        });

        Schema::create(config('admin.database.operation_log_table'), function (Blueprint $table) {
            $table->increments('id');
            $table->integer('user_id');
            $table->string('path');
            $table->string('method', 10);
            $table->string('ip');
            $table->text('input');
            $table->index('user_id');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists(config('admin.database.users_table'));
        Schema::dropIfExists(config('admin.database.roles_table'));
        Schema::dropIfExists(config('admin.database.permissions_table'));
        Schema::dropIfExists(config('admin.database.menu_table'));
        Schema::dropIfExists(config('admin.database.user_permissions_table'));
        Schema::dropIfExists(config('admin.database.role_users_table'));
        Schema::dropIfExists(config('admin.database.role_permissions_table'));
        Schema::dropIfExists(config('admin.database.role_menu_table'));
        Schema::dropIfExists(config('admin.database.operation_log_table'));
    }
}


================================================
FILE: docs/en/LICENSE.md
================================================
The MIT License (MIT)

Copyright (c) 2015 Jens Segers

Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


================================================
FILE: docs/en/README.md
================================================
laravel-admin
=====

[![Build Status](https://travis-ci.org/z-song/laravel-admin.svg?branch=master)](https://travis-ci.org/z-song/laravel-admin)
[![StyleCI](https://styleci.io/repos/48796179/shield)](https://styleci.io/repos/48796179)
[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/z-song/laravel-admin/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/z-song/laravel-admin/?branch=master)
[![Packagist](https://img.shields.io/packagist/l/encore/laravel-admin.svg?maxAge=2592000)](https://packagist.org/packages/encore/laravel-admin)
[![Total Downloads](https://img.shields.io/packagist/dt/encore/laravel-admin.svg?style=flat-square)](https://packagist.org/packages/encore/laravel-admin)
[![Awesome Laravel](https://img.shields.io/badge/Awesome-Laravel-brightgreen.svg)](https://github.com/z-song/laravel-admin)

`laravel-admin` is administrative interface builder for laravel which can help you build CRUD backends just with few lines of code.

[Demo](http://laravel-admin.org/demo) use `username/password:admin/admin`

Inspired by [SleepingOwlAdmin](https://github.com/sleeping-owl/admin) and [rapyd-laravel](https://github.com/zofe/rapyd-laravel).

[Documentation](http://laravel-admin.org/docs) | [中文文档](http://laravel-admin.org/docs/#/zh/)

Screenshots
------------

![laravel-admin](https://cloud.githubusercontent.com/assets/1479100/19625297/3b3deb64-9947-11e6-807c-cffa999004be.jpg)

Installation
------------

> This package requires PHP 7+ and Laravel 5.5, for old versions please refer to [1.4](http://laravel-admin.org/docs/v1.4/#/) 

First, install laravel 5.5, and make sure that the database connection settings are correct.

```
composer require encore/laravel-admin 1.5.*
```

Then run these commands to publish assets and config:

```
php artisan vendor:publish --provider="Encore\Admin\AdminServiceProvider"
```
After run command you can find config file in `config/admin.php`, in this file you can change the install directory,db connection or table names.

At last run following command to finish install. 
```
php artisan admin:install
```

Open `http://localhost/admin/` in browser,use username `admin` and password `admin` to login.

Default Settings
------------
The file in `config/admin.php` contains an array of settings, you can find the default settings in there.


Other
------------
`laravel-admin` based on following plugins or services:

+ [Laravel](https://laravel.com/)
+ [AdminLTE](https://almsaeedstudio.com/)
+ [Datetimepicker](http://eonasdan.github.io/bootstrap-datetimepicker/)
+ [font-awesome](http://fontawesome.io)
+ [moment](http://momentjs.com/)
+ [Google map](https://www.google.com/maps)
+ [Tencent map](http://lbs.qq.com/)
+ [bootstrap-fileinput](https://github.com/kartik-v/bootstrap-fileinput)
+ [jquery-pjax](https://github.com/defunkt/jquery-pjax)
+ [Nestable](http://dbushell.github.io/Nestable/)
+ [toastr](http://codeseven.github.io/toastr/)
+ [X-editable](http://github.com/vitalets/x-editable)
+ [bootstrap-number-input](https://github.com/wpic/bootstrap-number-input)
+ [fontawesome-iconpicker](https://github.com/itsjavi/fontawesome-iconpicker)

License
------------
`laravel-admin` is licensed under [The MIT License (MIT)](LICENSE).


================================================
FILE: docs/en/_sidebar.md
================================================

- Getting started
  - [Installation](/en/installation.md)
  - [Quick start](/en/quick-start.md)
  - [Page content & Layout](/en/content-layout.md)
- Model grid
  - [Basic usage](/en/model-grid.md)
  - [Row actions](/en/model-grid-actions.md)
  - [Column actions](/en/model-grid-column.md)
  - [Custom tools](/en/model-grid-custom-tools.md)
  - [Filters](/en/model-grid-filters.md)
  - [Data export](/en/model-grid-export.md)
- Model form
  - [Basic usage](/en/model-form.md)
  - [Image/File upload](/en/model-form-upload.md)
  - [Form fields](/en/model-form-fields.md)
  - [Form field management](/en/model-form-field-management.md)
  - [Form validation](/en/model-form-validation.md)
  - [Save callback](/en/model-form-callback.md)
- [Model-tree](/en/model-tree.md)
- Admin extensions
  - [Helpers](/en/extension-helpers.md)
  - [Media manager](/en/extension-media-manager.md)
  - [API tester](/en/extension-api-tester.md)
  - [Config manager](/en/extension-config.md)
  - [Task scheduling](/en/extension-scheduling.md)
- [Widgets](/en/widgets.md)
- [Permissions](/en/permission.md)
- [Custom authentication](/en/custom-authentication.md)
- [Custom Navbar](/en/custom-navbar.md)
- [Custom chart](/en/custom-chart.md)
- [Helpers](/en/helpers.md)
- [Upgrade precautions](/en/upgrade.md)
- [Change log](/en/change-log.md)

================================================
FILE: docs/en/change-log.md
================================================
# Change log

## v1.2.9、v1.3.3、v1.4.1

- Add user settings and modify avatar function
- Embedded form support
- Support for customize navigation bar (upper right corner)
- Add scaffolding, database command line tool, web artisan help tool
- Support for customize login page and login logic
- The form supports setting the width and setting the action
- Optimize table filters
- Fix bugs, optimize code and logic

================================================
FILE: docs/en/content-layout.md
================================================
# Page content

The layout usage of `laravel-admin` can be found in the `index()` method of the home page's layout file [HomeController.php](https://github.com/z-song/laravel-admin/blob/master/src/Console/stubs/HomeController.stub).

The `Encore\Admin\Layout\Content` class is used to implement the layout of the content area. The `Content::body ($element)` method is used to add page content:

The page code for an unfilled content is as follows:

```php
public function index()
{
    return Admin::content(function (Content $content) {

        // optional
        $content->header('page header');
        
        // optional
        $content->description('page description');

        // add breadcrumb since v1.5.7
        $content->breadcrumb(
            ['text' => 'Dashboard', 'url' => '/admin'],
            ['text' => 'User management', 'url' => '/admin/users'],
            ['text' => 'Edit user']
        );

        // Fill the page body part, you can put any renderable objects here
        $content->body('hello world');
    });
}
```

Method `$content->body();` can accepts any renderable objects, like string, number, class that has method `__toString`,  or implements `Renderable`、`Htmlable` interface , include Laravel View objects.

## Layout

`laravel-admin` use grid system of bootstrap,The length of each line is 12, the following is a few simple examples:

Add a line of content:

```php
$content->row('hello')

---------------------------------
|hello                          |
|                               |
|                               |
|                               |
|                               |
|                               |
---------------------------------

```

Add multiple columns within the line:

```php
$content->row(function(Row $row) {
    $row->column(4, 'foo');
    $row->column(4, 'bar');
    $row->column(4, 'baz');
});
----------------------------------
|foo       |bar       |baz       |
|          |          |          |
|          |          |          |
|          |          |          |
|          |          |          |
|          |          |          |
----------------------------------


$content->row(function(Row $row) {
    $row->column(4, 'foo');
    $row->column(8, 'bar');
});
----------------------------------
|foo       |bar                  |
|          |                     |
|          |                     |
|          |                     |
|          |                     |
|          |                     |
----------------------------------

```

Column in the column:

```php
$content->row(function (Row $row) {

    $row->column(4, 'xxx');

    $row->column(8, function (Column $column) {
        $column->row('111');
        $column->row('222');
        $column->row('333');
    });
});
----------------------------------
|xxx       |111                  |
|          |---------------------|
|          |222                  |
|          |---------------------|
|          |333                  |
|          |                     |
----------------------------------


```


Add rows in rows and add columns:

```php
$content->row(function (Row $row) {

    $row->column(4, 'xxx');

    $row->column(8, function (Column $column) {
        $column->row('111');
        $column->row('222');
        $column->row(function(Row $row) {
            $row->column(6, '444');
            $row->column(6, '555');
        });
    });
});
----------------------------------
|xxx       |111                  |
|          |---------------------|
|          |222                  |
|          |---------------------|
|          |444      |555        |
|          |         |           |
----------------------------------
```

Add body into a page:

Create a blade view file inside `/project/resources/views/admin/custom.blade.php`

```php
    public function customPage($id)
    {
        $content = new Content();
        $content->header('View');
        $content->description('Description...');
        $content->body('admin.custom',['id' => $id]);
        return $content;
    }
```


================================================
FILE: docs/en/custom-authentication.md
================================================
# Custom authentication

If you do not use the `laravel-admin` built-in authentication login logic, you can refer to the following way to customize the login authentication logic.

First of all, you need define a `User provider`, used to obtain the user identity, such as `app/Providers/CustomUserProvider.php`:

```php
<?php

namespace App\Providers;

use Illuminate\Contracts\Auth\Authenticatable;
use Illuminate\Contracts\Auth\UserProvider;

class CustomUserProvider implements UserProvider
{
    public function retrieveById($identifier)
    {}

    public function retrieveByToken($identifier, $token)
    {}

    public function updateRememberToken(Authenticatable $user, $token)
    {}

    public function retrieveByCredentials(array $credentials)
    {
        // Use $credentials to get the user data, and then return an object implements interface `Illuminate\Contracts\Auth\Authenticatable` 
    }

    public function validateCredentials(Authenticatable $user, array $credentials)
    {
        // Verify the user with the username password in $ credentials, return `true` or `false`
    }
}

```

In the methods `retrieveByCredentials` and `validateCredentials` the parameter `$credentials` is the user name and password array submitted on the login page, you can use `$credentials` to implement your own login logic.

The definition of interface `Illuminate\Contracts\Auth\Authenticatable`:
```php
<?php

namespace Illuminate\Contracts\Auth;

interface Authenticatable {

    public function getAuthIdentifierName();
    public function getAuthIdentifier();
    public function getAuthPassword();
    public function getRememberToken();
    public function setRememberToken($value);
    public function getRememberTokenName();

}
```

For more details about custom authentication please refer to [adding-custom-user-providers](https://laravel.com/docs/5.5/authentication#adding-custom-user-providers).


After you created cusom user provider, you will need to extend Laravel with it:

```php
<?php

namespace App\Providers;

use Illuminate\Support\Facades\Auth;
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;

class AuthServiceProvider extends ServiceProvider
{
    /**
     * Register any application authentication / authorization services.
     *
     * @return void
     */
    public function boot()
    {
        $this->registerPolicies();

        Auth::provider('custom', function ($app, array $config) {
            
            // Return an instance of Illuminate\Contracts\Auth\UserProvider...
            return new CustomUserProvider();
        });
    }
}
```

Finally modify the configuration, open `config/admin.php`, find the `auth` part:

```php
    'auth' => [
        'guards' => [
            'admin' => [
                'driver' => 'session',
                'provider' => 'admin',
            ]
        ],

        // Modify the following
        'providers' => [
            'admin' => [
                'driver' => 'custom',
            ]
        ],
    ],
```
This completes the logic of custom authentication.


================================================
FILE: docs/en/custom-chart.md
================================================
# Custom chart

`laravel-admin 1.5` has removed all the chart components. If you want to add chart components to the page, you can refer to the following process

Use `chartjs` for example, first download [chartjs](http://chartjs.org/), put it under the public directory, such as in the `public/vendor/chartjs` directory

Then import the component in `app/Admin/bootstrap.php`:
```php
use Encore\Admin\Facades\Admin;

Admin::js('/vendor/chartjs/dist/Chart.min.js');

```

Create a new view file `resources/views/admin/charts/bar.blade.php`

```php
<canvas id="myChart" width="400" height="400"></canvas>
<script>
$(function () {
    var ctx = document.getElementById("myChart").getContext('2d');
    var myChart = new Chart(ctx, {
        type: 'bar',
        data: {
            labels: ["Red", "Blue", "Yellow", "Green", "Purple", "Orange"],
            datasets: [{
                label: '# of Votes',
                data: [12, 19, 3, 5, 2, 3],
                backgroundColor: [
                    'rgba(255, 99, 132, 0.2)',
                    'rgba(54, 162, 235, 0.2)',
                    'rgba(255, 206, 86, 0.2)',
                    'rgba(75, 192, 192, 0.2)',
                    'rgba(153, 102, 255, 0.2)',
                    'rgba(255, 159, 64, 0.2)'
                ],
                borderColor: [
                    'rgba(255,99,132,1)',
                    'rgba(54, 162, 235, 1)',
                    'rgba(255, 206, 86, 1)',
                    'rgba(75, 192, 192, 1)',
                    'rgba(153, 102, 255, 1)',
                    'rgba(255, 159, 64, 1)'
                ],
                borderWidth: 1
            }]
        },
        options: {
            scales: {
                yAxes: [{
                    ticks: {
                        beginAtZero:true
                    }
                }]
            }
        }
    });
});
</script>
```

And then you can introduce this chart view anywhere on the page:

```php
public function index()
{
    return Admin::content(function (Content $content) {

        $content->header('chart');
        $content->description('.....');
        
        $content->body(view('admin.charts.bar'));
    });
}

```

In the above way you can introduce any chart library. multi-chart page layout, refer to [view layout] (/en/layout.md)

================================================
FILE: docs/en/custom-navbar.md
================================================
# Customize the head navigation bar

Since version `1.5.6`, you can add the html element to the top navigation bar, open `app/Admin/bootstrap.php`:
```php
use Encore\Admin\Facades\Admin;

Admin::navbar(function (\Encore\Admin\Widgets\Navbar $navbar) {

    $navbar->left('html...');

    $navbar->right('html...');

});
```

Methods `left` and `right` are used to add content to the left and right sides of the head, the method parameters can be any object that can be rendered (objects which impletements `Htmlable`, `Renderable`, or has method `__toString()`) or strings.

## Add elements to the left

For example, add a search bar on the left, first create a view `resources/views/search-bar.blade.php`:
```php
<style>

.search-form {
    width: 250px;
    margin: 10px 0 0 20px;
    border-radius: 3px;
    float: left;
}
.search-form input[type="text"] {
    color: #666;
    border: 0;
}

.search-form .btn {
    color: #999;
    background-color: #fff;
    border: 0;
}

</style>

<form action="/admin/posts" method="get" class="search-form" pjax-container>
    <div class="input-group input-group-sm ">
        <input type="text" name="title" class="form-control" placeholder="Search...">
        <span class="input-group-btn">
            <button type="submit" name="search" id="search-btn" class="btn btn-flat"><i class="fa fa-search"></i></button>
          </span>
    </div>
</form>
```
Then add it to the head navigation bar:
```php
$navbar->left(view('search-bar'));
```

## Add elements to the right

You can only add the `<li>` tag on the right side of the navigation, such as adding some prompt icons, creating a new rendering class `app/Admin/Extensions/Nav/Links.php`
```php
<?php

namespace App\Admin\Extensions\Nav;

class Links
{
    public function __toString()
    {
        return <<<HTML

<li>
    <a href="#">
      <i class="fa fa-envelope-o"></i>
      <span class="label label-success">4</span>
    </a>
</li>

<li>
    <a href="#">
      <i class="fa fa-bell-o"></i>
      <span class="label label-warning">7</span>
    </a>
</li>

<li>
    <a href="#">
      <i class="fa fa-flag-o"></i>
      <span class="label label-danger">9</span>
    </a>
</li>

HTML;
    }
}
```

Then add it to the head navigation bar:
```php
$navbar->right(new \App\Admin\Extensions\Nav\Links());
```

Or use the following html to add a drop-down menu:
```html
<li class="dropdown notifications-menu">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
  <i class="fa fa-bell-o"></i>
  <span class="label label-warning">10</span>
</a>
<ul class="dropdown-menu">
  <li class="header">You have 10 notifications</li>
  <li>
    <!-- inner menu: contains the actual data -->
    <ul class="menu">
      <li>
        <a href="#">
          <i class="fa fa-users text-aqua"></i> 5 new members joined today
        </a>
      </li>
      <li>
        <a href="#">
          <i class="fa fa-warning text-yellow"></i> Very long description here that may not fit into the
          page and may cause design problems
        </a>
      </li>
      <li>
        <a href="#">
          <i class="fa fa-users text-red"></i> 5 new members joined
        </a>
      </li>

      <li>
        <a href="#">
          <i class="fa fa-shopping-cart text-green"></i> 25 sales made
        </a>
      </li>
      <li>
        <a href="#">
          <i class="fa fa-user text-red"></i> You changed your username
        </a>
      </li>
    </ul>
  </li>
  <li class="footer"><a href="#">View all</a></li>
</ul>
</li>
```

More components can be found here [Bootstrap](https://getbootstrap.com/)


================================================
FILE: docs/en/extension-api-tester.md
================================================
# Laravel API tester

`api-tester` is an API testing tool developed for `laravel` that helps you test your laravel API like `postman`.

![wx20170809-164424](https://user-images.githubusercontent.com/1479100/29112946-1e32971c-7d22-11e7-8cc0-5b7ad25d084e.png)

## Installation

```shell
$ composer require laravel-admin-ext/api-tester -vvv

$ php artisan vendor:publish --tag=api-tester

```
And then run the following command to import menus and permissions (which can also be added manually)

```shell
$ php artisan admin:import api-tester
```

Then you can find the entry link in the admin menu, `http://localhost/admin/api-tester`.

## Usage

Open `routes/api.php` try to add an api:

```php
Route::get('test', function () {
    return 'hello world';
});
```

Open the `api-tester` page, you can see `api/test` on the left, select it and click the `Send` button to send request to the api

### Login as

`Login as` Fill in the user id you want to log in, you can log in as the user to request the API, add the following API:

```php
use Illuminate\Http\Request;

Route::middleware('auth:api')->get('user', function (Request $request) {
    return $request->user();
});
```
Fill in the user ID in `Login as` input , then request the api and will respond with the user's model

### Parameters

Used to set the request parameters for api , the type can be a string or file, add the following API:

```php
use Illuminate\Http\Request;

Route::get('parameters', function (Request $request) {
    return $request->all();
});
```

Fill in the parameters send request and you can see the results

================================================
FILE: docs/en/extension-config.md
================================================
# Configuration management

This tool will store the configuration data in the database

![wx20170810-100226](https://user-images.githubusercontent.com/1479100/29151322-0879681a-7db3-11e7-8005-03310686c884.png)

## Installation

```
$ composer require laravel-admin-ext/config

$ php artisan migrate
```

Open `app/Providers/AppServiceProvider.php`, and call the `Config::load()` method within the `boot` method:

```php
<?php

namespace App\Providers;

use Encore\Admin\Config\Config;
use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
    public function boot()
    {
        Config::load();  // Add this
    }
}
```

Then run the command to import menus and permissions (which can also be added manually)

```
$ php artisan admin:import config
```

Open `http://localhost/admin/config`.

## Usage

After add config in the panel, use `config($key)` to get value you configured.

================================================
FILE: docs/en/extension-helpers.md
================================================
# Helpers

Added support for developers, available in development to help improve efficiency, currently providing `scaffolding`, `database command line` and `artisan command line `three tools, if there are better other utilities The idea of welcome to provide advice.

Installation:
```php
composer require laravel-admin-ext/helpers

php artisan admin:import helpers
```

> Part of the function of the tool will create or delete files in the project, there may be some file or directory permissions errors, the problem needs to be resolved.
> Another part of the database and artisan command can not be used in the web environment.
    
## Scaffold

This Tool can help you build controller, model, migrate files, and run migration files.
access by visit `http://localhost/admin/helpers/scaffold`.

Which set the migration table structure, the primary key field is automatically generated do not need to fill out.

![qq20170220-2](https://cloud.githubusercontent.com/assets/1479100/23147949/cbf03e84-f81d-11e6-82b7-d7929c3033a0.png)

## Database command line

Database command line tool for web integration,Currently supports `mysql`,` mongodb` and `redis`,access by visit `http://localhost/admin/helpers/terminal/database`.

Change the database connection in the upper right corner, and then in the bottom of the input box to enter the corresponding database query and then enter, you can get the query results:

![qq20170220-3](https://cloud.githubusercontent.com/assets/1479100/23147951/ce08e5d6-f81d-11e6-8b20-605e8cd06167.png)

The use of the database and the operation of the database is consistent, you can run the selected database support query.

## Artisan command line

Web version of `Laravel`'s `artisan` command line,you can run artisan commands in it,access it by visit `http://localhost/admin/helpers/terminal/artisan`.

![qq20170220-1](https://cloud.githubusercontent.com/assets/1479100/23147963/da8a5d30-f81d-11e6-97b9-239eea900ad3.png)


## Route list

This tool can use more intuitive to show all the routes, including uri, http methods and middleware, and also you can query routes. access it by visit`http://localhost/admin/helpers/routes`.

![helpers_routes](https://user-images.githubusercontent.com/1479100/30899066-e8bdd5ca-a390-11e7-809d-4ceccd0da27f.png)

================================================
FILE: docs/en/extension-media-manager.md
================================================
# Media manager

This tool for manage local files

![wx20170809-170104](https://user-images.githubusercontent.com/1479100/29113762-99886c32-7d24-11e7-922d-5981a5849c7a.png)

## Installation

```
$ composer require laravel-admin-ext/media-manager -vvv

$ php artisan admin:import media-manager
```

## Configuration

Open  `config/admin.php` specify the disk you want to manage

```php

    'extensions' => [

        'media-manager' => [
            'disk' => 'public'   // Points to the disk set in config/filesystem.php
        ],
    ],

```

`disk` is the local disk you configured in `config/filesystem.php`, visit by access `http://localhost/admin/media`.

Note If you want to preview the picture in the disk, you must set the access url in the disk configuration:


`config/filesystem.php`:
```php

    'disks' => [

        'public' => [
            'driver' => 'local',
            'root' => storage_path('app/public'),
            'url' => env('APP_URL').'/storage',    // set url
            'visibility' => 'public',
        ],
        
        ...
    ]
```



================================================
FILE: docs/en/extension-scheduling.md
================================================
# Task scheduling

This tool is a web interface for manage Laravel's scheduled tasks

![wx20170810-101048](https://user-images.githubusercontent.com/1479100/29151552-8affc0b2-7db4-11e7-932a-a10d8a42ec50.png)

## Installation

```
$ composer require laravel-admin-ext/scheduling -vvv

$ php artisan admin:import scheduling
```

Then open `http://localhost/admin/scheduling`

## Add tasks

Open `app/Console/Kernel.php`, try adding two scheduled tasks:

```php
class Kernel extends ConsoleKernel
{
    protected function schedule(Schedule $schedule)
    {
        $schedule->command('inspire')->everyTenMinutes();
        
        $schedule->command('route:list')->dailyAt('02:00');
    }
}

```

And then you can see the tasks with details in the page, and you can also directly run these two tasks in the page.


================================================
FILE: docs/en/installation.md
================================================
# Installation

> This package requires PHP 7+ and Laravel 5.5, for old versions please refer to [1.4](http://laravel-admin.org/docs/v1.4/#/)

First, install laravel, and make sure that the database connection settings are correct.

Then install require this package with command:
```
composer require encore/laravel-admin "1.5.*"
```

Publish assets and config with command:
```
php artisan vendor:publish --provider="Encore\Admin\AdminServiceProvider"
```

After runnung previous command you can find config file in `config/admin.php`, in this file you can change default install directory (```/app/Admin```), db connection or table names.

At last run following command to finish install:
```
php artisan admin:install
```

To check that all is working, run `php artisan serve` and open `http://localhost/admin/` in browser, use username `admin` and password `admin` to login.

## Generated files

After the installation is complete, the following files are generated in the project directory:

### Configuration file

After the installation is complete, all configurations are in the `config/admin.php` file.

### Admin files

After install,you can find directory`app/Admin`,and then most of our develop work is under this directory.

```
app/Admin
├── Controllers
│   ├── ExampleController.php
│   └── HomeController.php
├── bootstrap.php
└── routes.php
```

`app/Admin/routes.php` is used to define routes.

`app/Admin/bootstrap.php` is bootstrapper for laravel-admin, for usage examples see comments inside it.

The `app/Admin/Controllers` directory is used to store all the controllers.
The `HomeController.php` file under this directory is used to handle home request of admin.
The `ExampleController.php` file is a controller example.

### Static assets

The front-end static files are in the `/public/packages/admin` directory.


================================================
FILE: docs/en/model-form-callback.md
================================================
# Model form callback

`model-form` currently has three methods for receiving callback functions:

```php
// callback after form submission
$form->submitted(function (Form $form) {
    //...
});

// callback before save
$form->saving(function (Form $form) {
    //...
});

// callback after save
$form->saved(function (Form $form) {
    //...
});

```
If required, you can add additional fields to ignore using the submitted function e.g.
```php
$form->submitted(function (Form $form) {
    $form->ignore('username');

});

```
The form data that is currently submitted can be retrieved from the callback parameter `$form`:

```php
$form->saving(function (Form $form) {

    dump($form->username);

});

```

Get data in model
```php
$form->saved(function (Form $form) {

    $form->model()->id;

});
```

Can redirect other urls by returning an instance of `Symfony\Component\HttpFoundation\Response` directly in the callback:

```php
$form->saving(function (Form $form) {

    // returns a simple response
    return response('xxxx');

});

$form->saving(function (Form $form) {

    // redirect url
    return redirect('/admin/users');

});

$form->saving(function (Form $form) {

    // throws an exception
    throw new \Exception('Error friends. . .');

});

```

Return error or success information on the page:

```php
use Illuminate\Support\MessageBag;

// redirect back with an error message
$form->saving(function ($form) {

    $error = new MessageBag([
        'title'   => 'title...',
        'message' => 'message....',
    ]);

    return back()->with(compact('error'));
});

// redirect back with a successful message
$form->saving(function ($form) {

    $success = new MessageBag([
        'title'   => 'title...',
        'message' => 'message....',
    ]);

    return back()->with(compact('success'));
});

```


================================================
FILE: docs/en/model-form-field-management.md
================================================
# Fields management


## Remove field

The built-in `map` and `editor` fields requires the front-end files via cdn, and if there are problems with the network, they can be removed in the following ways

Locate the file `app/Admin/bootstrap.php`. If the file does not exist, update `laravel-admin` and create this file.

```php

<?php

use Encore\Admin\Form;

Form::forget('map');
Form::forget('editor');

// or

Form::forget(['map', 'editor']);

```

This removes the two fields, which can be used to remove the other fields.

## Extend the custom field

Extend a PHP code editor based on [codemirror](http://codemirror.net/index.html) with the following steps.

see [PHP mode](http://codemirror.net/mode/php/).

Download and unzip the [codemirror](http://codemirror.net/codemirror.zip) library to the front-end resource directory, for example, in the directory `public/packages/codemirror-5.20.2`.

Create a new field class `app/Admin/Extensions/PHPEditor.php`:

```php
<?php

namespace App\Admin\Extensions;

use Encore\Admin\Form\Field;

class PHPEditor extends Field
{
    protected $view = 'admin.php-editor';

    protected static $css = [
        '/packages/codemirror-5.20.2/lib/codemirror.css',
    ];

    protected static $js = [
        '/packages/codemirror-5.20.2/lib/codemirror.js',
        '/packages/codemirror-5.20.2/addon/edit/matchbrackets.js',
        '/packages/codemirror-5.20.2/mode/htmlmixed/htmlmixed.js',
        '/packages/codemirror-5.20.2/mode/xml/xml.js',
        '/packages/codemirror-5.20.2/mode/javascript/javascript.js',
        '/packages/codemirror-5.20.2/mode/css/css.js',
        '/packages/codemirror-5.20.2/mode/clike/clike.js',
        '/packages/codemirror-5.20.2/mode/php/php.js',
    ];

    public function render()
    {
        $this->script = <<<EOT

CodeMirror.fromTextArea(document.getElementById("{$this->id}"), {
    lineNumbers: true,
    mode: "text/x-php",
    extraKeys: {
        "Tab": function(cm){
            cm.replaceSelection("    " , "end");
        }
     }
});

EOT;
        return parent::render();

    }
}

```

>Static resources in the class can also be imported from outside, see [Editor.php](https://github.com/z-song/laravel-admin/blob/1.3/src/Form/Field/Editor.php)

Create a view file `resources/views/admin/php-editor.blade.php`:

```php

<div class="form-group {!! !$errors->has($label) ?: 'has-error' !!}">

    <label for="{{$id}}" class="col-sm-2 control-label">{{$label}}</label>

    <div class="col-sm-6">

        @include('admin::form.error')

        <textarea class="form-control" id="{{$id}}" name="{{$name}}" placeholder="{{ trans('admin::lang.input') }} {{$label}}" {!! $attributes !!} >{{ old($column, $value) }}</textarea>
    </div>
</div>

```

Finally, find the file `app/Admin/bootstrap.php`, if the file does not exist, update `laravel-admin`, and then create this file, add the following code:

```
<?php

use App\Admin\Extensions\PHPEditor;
use Encore\Admin\Form;

Form::extend('php', PHPEditor::class);

```

And then you can use PHP editor in [model-form](/en/model-form.md):

```

$form->php('code');

```

In this way, you can add any form fields you want to add.

## Integrate CKEditor

Here is another example to show you how to integrate ckeditor.

At first download [CKEditor](http://ckeditor.com/download), unzip to public directory, for example `public/packages/ckeditor/`.

Then Write Extension class `app/Admin/Extensions/Form/CKEditor.php`:
```php
<?php

namespace App\Admin\Extensions\Form;

use Encore\Admin\Form\Field;

class CKEditor extends Field
{
    public static $js = [
        '/packages/ckeditor/ckeditor.js',
        '/packages/ckeditor/adapters/jquery.js',
    ];

    protected $view = 'admin.ckeditor';

    public function render()
    {
        $this->script = "$('textarea.{$this->getElementClass()}').ckeditor();";

        return parent::render();
    }
}
```
Add blade file `resources/views/admin/ckeditor.blade.php` for view `admin.ckeditor` : 
```php
<div class="form-group {!! !$errors->has($errorKey) ?: 'has-error' !!}">

    <label for="{{$id}}" class="col-sm-2 control-label">{{$label}}</label>

    <div class="col-sm-6">

        @include('admin::form.error')

        <textarea class="form-control {{$class}}" id="{{$id}}" name="{{$name}}" placeholder="{{ $placeholder }}" {!! $attributes !!} >{{ old($column, $value) }}</textarea>

        @include('admin::form.help-block')

    </div>
</div>

```
Register this extension in `app/Admin/bootstrap.php`:

```php
use Encore\Admin\Form;
use App\Admin\Extensions\Form\CKEditor;

Form::extend('ckeditor', CKEditor::class);
```
After this you can use ckeditor in your form:

```php
$form->ckeditor('content');
```


================================================
FILE: docs/en/model-form-fields.md
================================================
# Builtin form fields

There are a lots of form components built into the `model-form` to help you quickly build forms.

## Public methods

### Set the value to save
```php
$form->text('title')->value('text...');
```

### Set default value
```php
$form->text('title')->default('text...');
```

### Set help message
```php
$form->text('title')->help('help...');
```

### Set fa-icon class
```php
$form->text('title')->icon('fa-copy');
```

### Set attributes of field element
```php
$form->text('title')->attribute(['data-title' => 'title...']);

$form->text('title')->attribute('data-title', 'title...');
```

### Set placeholder
```php
$form->text('title')->placeholder('Please input...');
```

### Model-form-tab

If the form contains too many fields, will lead to form page is too long, in which case you can use the tab to separate the form:

```php

$form->tab('Basic info', function ($form) {
    
    $form->text('username');
    $form->email('email');
    
})->tab('Profile', function ($form) {
                       
   $form->image('avatar');
   $form->text('address');
   $form->mobile('phone');
   
})->tab('Jobs', function ($form) {
                         
     $form->hasMany('jobs', function () {
         $form->text('company');
         $form->date('start_date');
         $form->date('end_date');
     });

  })

```

## Text input

```php
$form->text($column, [$label]);

// Add a submission validation rule
$form->text($column, [$label])->rules('required|min:10');
```

## Select
```php
$form->select($column[, $label])->options([1 => 'foo', 2 => 'bar', 'val' => 'Option name']);
```

If have too many options, you can load option by ajax:

```php
$form->select('user_id')->options(function ($id) {
    $user = User::find($id);

    if ($user) {
        return [$user->id => $user->name];
    }
})->ajax('/admin/api/users');

// using ajax and show selected item:

$form->select('user_id')->options(User::class)->ajax('/admin/api/users');

// or specifying the name and id

$form->select('user_id')->options(User::class, 'name', 'id')->ajax('/admin/api/users');
```

<sub>Notice:if you have modified the value of the `route.prefix` in the `config/admin.php` file, this api route should be modified to `config('admin.route.prefix').'/api/users'`.</sub>

The controller method for api `/admin/api/users` is:

```php
public function users(Request $request)
{
    $q = $request->get('q');

    return User::where('name', 'like', "%$q%")->paginate(null, ['id', 'name as text']);
}

```

The json returned from api `/admin/demo/options`:
```
{
    "total": 4,
    "per_page": 15,
    "current_page": 1,
    "last_page": 1,
    "next_page_url": null,
    "prev_page_url": null,
    "from": 1,
    "to": 3,
    "data": [
        {
            "id": 9,
            "text": "xxx"
        },
        {
            "id": 21,
            "text": "xxx"
        },
        {
            "id": 42,
            "text": "xxx"
        },
        {
            "id": 48,
            "text": "xxx"
        }
    ]
}
```

### Select linkage

`select` component supports one-way linkage of parent-child relationship:
```php
$form->select('province')->options(...)->load('city', '/api/city');

$form->select('city');

```

Where `load('city', '/api/city');` means that, after the current select option is changed, the current option will call the api `/api/city` via the argument` q` api returns the data to fill the options for the city selection box, where api `/api/city` returns the data format that must match:

```php
[
    {
        "id": 1,
        "text": "foo"
    },
    {
        "id": 2,
        "text": "bar"
    },
    ...
]
```
The code for the controller action is as follows:

```php
public function city(Request $request)
{
    $provinceId = $request->get('q');

    return ChinaArea::city()->where('parent_id', $provinceId)->get(['id', DB::raw('name as text')]);
}
```

## Multiple select
```php
$form->multipleSelect($column[, $label])->options([1 => 'foo', 2 => 'bar', 'val' => 'Option name']);

// using ajax and show selected items:

$form->multipleSelect($column[, $label])->options(Model::class)->ajax('ajax_url');

// or specifying the name and id

$form->multipleSelect($column[, $label])->options(Model::class, 'name', 'id')->ajax('ajax_url');
```

You can store value of multiple select in two ways, one is `many-to-many` relation.

```

class Post extends Models
{
    public function tags()
    {
        return $this->belongsToMany(Tag::class);
    }
}

$form->multipleSelect('tags')->options(Tag::all()->pluck('name', 'id'));

```

The second is to store the option array into a single field. If the field is a string type, it is necessary to define [accessor and Mutator](https://laravel.com/docs/5.5/eloquent-mutators) for the field.

If have too many options, you can load option by ajax

```php
$form->select('user_id')->options(function ($id) {
    $user = User::find($id);

    if ($user) {
        return [$user->id => $user->name];
    }
})->ajax('/admin/api/users');
```

<sub>Notice:If you have modified the value of the `route.prefix` in the `config/admin.php` file, this api route should be modified to `config('admin.route.prefix').'/api/users'`.</sub>

The controller method for api `/admin/api/users` is:

```php
public function users(Request $request)
{
    $q = $request->get('q');

    return User::where('name', 'like', "%$q%")->paginate(null, ['id', 'name as text']);
}

```

The json returned from api `/admin/demo/options`:
```
{
    "total": 4,
    "per_page": 15,
    "current_page": 1,
    "last_page": 1,
    "next_page_url": null,
    "prev_page_url": null,
    "from": 1,
    "to": 3,
    "data": [
        {
            "id": 9,
            "text": "xxx"
        },
        {
            "id": 21,
            "text": "xxx"
        },
        {
            "id": 42,
            "text": "xxx"
        },
        {
            "id": 48,
            "text": "xxx"
        }
    ]
}
```

## Listbox

The usage is as same as mutipleSelect.

```php
$form->listbox($column[, $label])->options([1 => 'foo', 2 => 'bar', 'val' => 'Option name']);
```

## Textarea
```php
$form->textarea($column[, $label])->rows(10);
```

## Radio
```php
$form->radio($column[, $label])->options(['m' => 'Female', 'f'=> 'Male'])->default('m');

$form->radio($column[, $label])->options(['m' => 'Female', 'f'=> 'Male'])->default('m')->stacked();
```

## Checkbox

`checkbox` can store values in two ways, see[multiple select](#Multiple select)

The `options()` method is used to set options:
```php
$form->checkbox($column[, $label])->options([1 => 'foo', 2 => 'bar', 'val' => 'Option name']);

$form->checkbox($column[, $label])->options([1 => 'foo', 2 => 'bar', 'val' => 'Option name'])->stacked();
```

## Email input
```php
$form->email($column[, $label]);
```

## Password input
```php
$form->password($column[, $label]);
```

## URL input
```php
$form->url($column[, $label]);
```

## Ip input
```php
$form->ip($column[, $label]);
```

## Phone number input
```php
$form->mobile($column[, $label])->options(['mask' => '999 9999 9999']);
```

## Color select
```php
$form->color($column[, $label])->default('#ccc');
```

## Time input
```php
$form->time($column[, $label]);

// Set the time format, more formats reference http://momentjs.com/docs/#/displaying/format/    
$form->time($column[, $label])->format('HH:mm:ss');
```

## Date input
```php
$form->date($column[, $label]);

// Date format setting,more format please see http://momentjs.com/docs/#/displaying/format/
$form->date($column[, $label])->format('YYYY-MM-DD');
```

## Datetime input
```php
$form->datetime($column[, $label]);

// Set the date format, more format reference http://momentjs.com/docs/#/displaying/format/
$form->datetime($column[, $label])->format('YYYY-MM-DD HH:mm:ss');
```

## Time range select
`$startTime`、`$endTime`is the start and end time fields:
```php
$form->timeRange($startTime, $endTime, 'Time Range');
```

## Date range select
`$startDate`、`$endDate`is the start and end date fields:
```php
$form->dateRange($startDate, $endDate, 'Date Range');
```

## Datetime range select
`$startDateTime`、`$endDateTime` is the start and end datetime fields:
```php
$form->datetimeRange($startDateTime, $endDateTime, 'DateTime Range');
```

## Currency input
```php
$form->currency($column[, $label]);

// set the unit symbol
$form->currency($column[, $label])->symbol('¥');

```

## Number input
```php
$form->number($column[, $label]);
```

## Rate input
```php
$form->rate($column[, $label]);
```

## Image upload

Before use upload field, you must complete upload configuration, see [image/file upload](/en/model-form-upload.md).

You can use compression, crop, add watermarks and other methods, please refer to [[Intervention] (http://image.intervention.io/getting_started/introduction)], picture upload directory in the file `config / admin.php` `Upload.image` configuration, if the directory does not exist, you need to create the directory and open write permissions:
```php
$form->image($column[, $label]);

// Modify the image upload path and file name
$form->image($column[, $label])->move($dir, $name);

// Crop picture
$form->image($column[, $label])->crop(int $width, int $height, [int $x, int $y]);

// Add a watermark
$form->image($column[, $label])->insert($watermark, 'center');

// add delete button
$form->image($column[, $label])->removable();

```

## File upload

Before use upload field, you must complete upload configuration, see [image/file upload](/en/model-form-upload.md).

The file upload directory is configured in `upload.file` in the file `config/admin.php`. If the directory does not exist, it needs to be created and write-enabled.
```php
$form->file($column[, $label]);

// Modify the file upload path and file name
$form->file($column[, $label])->move($dir, $name);

// And set the upload file type
$form->file($column[, $label])->rules('mimes:doc,docx,xlsx');

// add delete button
$form->file($column[, $label])->removable();

```

## Multiple image/file upload

```php
// multiple image
$form->multipleImage($column[, $label]);

// multiple file
$form->multipleFile($column[, $label]);

// add delete button
$form->multipleFile($column[, $label])->removable();
```

The type of data submitted from multiple image/file field is array, if you the type of column in mysql table is array, or use mongodb, then you can save the array directly, 
but if you use string type to store the array data ,you need to specify a string format, For example, if you want to use json string to store the array data, you need to define
 a mutator for the column in model mutator, such as the field named `pictures`, define mutator:

```php
public function setPicturesAttribute($pictures)
{
    if (is_array($pictures)) {
        $this->attributes['pictures'] = json_encode($pictures);
    }
}

public function getPicturesAttribute($pictures)
{
    return json_decode($pictures, true);
}
```
Of course, you can also specify any other format.

## Map

The map field refers to the network resource, and if there is a problem with the network refer to [form Component Management](/en/model-form-field-management.md) to remove the component.

Used to select the latitude and longitude, `$ latitude`,` $ longitude` for the latitude and longitude field, using Tencent map when `locale` set of laravel is` zh_CN`, otherwise use Google Maps:
```php
$form->map($latitude, $longitude, $label);

// Use Tencent map
$form->map($latitude, $longitude, $label)->useTencentMap();

// Use google map
$form->map($latitude, $longitude, $label)->useGoogleMap();
```

## Slider
Can be used to select the type of digital fields, such as age:
```php
$form->slider($column[, $label])->options(['max' => 100, 'min' => 1, 'step' => 1, 'postfix' => 'years old']);
```
More options please ref to https://github.com/IonDen/ion.rangeSlider#settings

## Rich text editor

The editor field refers to the network resource, and if there is a problem with the network refer to [form Component Management](/en/model-form-field-management.md) to remove the component.

```php
$form->editor($column[, $label]);
```

## Hidden field
```php
$form->hidden($column);
```

## Switch
`On` and` off` pairs of switches with the values `1` and` 0`:
```php
$states = [
    'on'  => ['value' => 1, 'text' => 'enable', 'color' => 'success'],
    'off' => ['value' => 0, 'text' => 'disable', 'color' => 'danger'],
];

$form->switch($column[, $label])->states($states);
```

## Display field
Only display the fields and without any action:
```php
$form->display($column[, $label]);
```

## Divide
```php
$form->divide();
```

## Html
insert html,the argument passed in could be objects which impletements `Htmlable`、`Renderable`, or has method `__toString()`
```php
$form->html('html contents');
```

## Tags
Insert the comma (,) separated string `tags`
```php
$form->tags('keywords');
```

## Icon
Select the `font-awesome` icon.
```php
$form->icon('icon');
```

## HasMany

One-to-many built-in tables for dealing with one-to-many relationships. Here is a simple example:

There are two tables are one-to-many relationship:

```sql
CREATE TABLE `demo_painters` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `username` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `bio` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

CREATE TABLE `demo_paintings` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `painter_id` int(10) unsigned NOT NULL,
  `title` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `body` text COLLATE utf8_unicode_ci NOT NULL,
  `completed_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  PRIMARY KEY (`id`),
  KEY painter_id (`painter_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
```

The model of tables are:
```php
<?php

namespace App\Models\Demo;

use Illuminate\Database\Eloquent\Model;

class Painter extends Model
{
    public function paintings()
    {
        return $this->hasMany(Painting::class, 'painter_id');
    }
}

<?php

namespace App\Models\Demo;

use Illuminate\Database\Eloquent\Model;

class Painting extends Model
{
    protected $fillable = ['title', 'body', 'completed_at'];

    public function painter()
    {
        return $this->belongsTo(Painter::class, 'painter_id');
    }
}
```

Build the form code as follows:
```php
$form->display('id', 'ID');

$form->text('username')->rules('required');
$form->textarea('bio')->rules('required');

$form->hasMany('paintings', function (Form\NestedForm $form) {
    $form->text('title');
    $form->image('body');
    $form->datetime('completed_at');
});

$form->display('created_at', 'Created At');
$form->display('updated_at', 'Updated At');
```

## Embeds

Used to handle the `JSON` type field data of `mysql` or `object` type data of `mongodb`, or the data values of multiple fields can be stored in the form of the` JSON` string in the character type of mysql

Such as the `extra` column of the `JSON` or string type in the orders table, used to store data for multiple fields:

```php
class Order extends Model
{
    protected $casts = [
        'extra' => 'json',
    ];
}
```
And then use in the form:
```php
$form->embeds('extra', function ($form) {

    $form->text('extra1')->rules('required');
    $form->email('extra2')->rules('required');
    $form->mobile('extra3');
    $form->datetime('extra4');

    $form->dateRange('extra5', 'extra6', 'Date range')->rules('required');

});

// Customize the title
$form->embeds('extra', 'Extra', function ($form) {
    ...
});
```

Callback function inside the form element to create the method call and the outside is the same.


================================================
FILE: docs/en/model-form-upload.md
================================================
# File/Image upload

[model-form](/en/model-form.md) can build file and image upload field with following codes

```php
$form->file('file_column');
$form->image('image_column');
```

### Change store path and name

```php

// change upload path
$form->image('picture')->move('public/upload/image1/');

// use a unique name (md5(uniqid()).extension)
$form->image('picture')->uniqueName();

// specify filename
$form->image('picture')->name(function ($file) {
    return 'test.'.$file->guessExtension();
});

```

[model-form](/en/model-form.md) both support for local and cloud storage upload

### Upload to local

first add storage configuration, add a disk in `config/filesystems.php`:

```php

'disks' => [
    ... ,

    'admin' => [
        'driver' => 'local',
        'root' => public_path('uploads'),
        'visibility' => 'public',
        'url' => env('APP_URL').'/uploads',
    ],
],

```

set upload path to `public/upload`(public_path('upload')).

And then in `config/admin.php` select the `disk` set up above:

```php

'upload'  => [

    'disk' => 'admin',

    'directory'  => [
        'image'  => 'image',
        'file'   => 'file',
    ],
],

```

Set `disk` to the` admin` that you added above,`directory.image` and `directory.file` is the upload path for `$form->image($column)` and `$form->file($column)`.

`host` is url prefix for your uploaded files.


### Upload to cloud

If you need to upload to the cloud storage, need to install a driver which supports `flysystem` adapter, take `qiniu` cloud storage as example.

first install [zgldh/qiniu-laravel-storage](https://github.com/zgldh/qiniu-laravel-storage).

Also configure the disk, in the `config/filesystems.php` add an item:

```php
'disks' => [
    ... ,
    'qiniu' => [
        'driver'  => 'qiniu',
        'domains' => [
            'default'   => 'xxxxx.com1.z0.glb.clouddn.com', 
            'https'     => 'dn-yourdomain.qbox.me',       
            'custom'    => 'static.abc.com',              
         ],
        'access_key'=> '',  //AccessKey
        'secret_key'=> '',  //SecretKey
        'bucket'    => '',  //Bucket
        'notify_url'=> '',  //
        'url'       => 'http://of8kfibjo.bkt.clouddn.com/',
    ],
],

```

Then modify the upload configuration of `laravel-admin` and open `config/admin.php` to find:

```php

'upload'  => [

    'disk' => 'qiniu',

    'directory'  => [
        'image'  => 'image',
        'file'   => 'file',
    ],
],

```

Select the above configuration` qiniu` for `disk`

================================================
FILE: docs/en/model-form-validation.md
================================================
Form validation
========

`model-form` uses laravel's validation rules to verify the data submitted by the form:

```php
$form->text('title')->rules('required|min:3');

// Complex validation rules can be implemented in the callback
$form->text('title')->rules(function ($form) {
    
    // If it is not an edit state, add field unique verification
    if (!$id = $form->model()->id) {
        return 'unique:users,email_address';
    }
    
});

```

You can also customize the error message for the validation rule:

```php
$form->text('code')->rules('required|regex:/^\d+$/|min:10', [
    'regex' => 'code must be numbers',
    'min'   => 'code can not be less than 10 characters',
]);
```

If you want to allow the field to be empty, first in the database table to face the field set to `NULL`, and then

```php
$form->text('title')->rules('nullable');
```

Please refer to the more rules [Validation](https://laravel.com/docs/5.5/validation).

================================================
FILE: docs/en/model-form.md
================================================
# Model-Form

The `Encore\Admin\Form` class is used to generate a data model-based form. For example, there is a` movies` table in the database

```sql
CREATE TABLE `movies` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `title` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `director` int(10) unsigned NOT NULL,
  `describe` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `rate` tinyint unsigned NOT NULL,
  `released` enum(0, 1),
  `release_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

```

The corresponding data model is `App\Models\Movie`, and the following code can generate the` movies` data form:

```php

use App\Models\Movie;
use Encore\Admin\Form;
use Encore\Admin\Facades\Admin;

$grid = Admin::form(Movie::class, function(Form $grid){

    // Displays the record id
    $form->display('id', 'ID');

    // Add an input box of type text
    $form->text('title', 'Movie title');
    
    $directors = [
        1 => 'John',
        2 => 'Smith',
        3 => 'Kate',
    ];
    
    $form->select('director', 'Director')->options($directors);
    
    // Add textarea for the describe field
    $form->textarea('describe', 'Describe');
    
    // Number input
    $form->number('rate', 'Rate');
    
    // Add a switch field
    $form->switch('released', 'Released?');
    
    // Add a date and time selection box
    $form->dateTime('release_at', 'release time');
    
    // Display two time column 
    $form->display('created_at', 'Created time');
    $form->display('updated_at', 'Updated time');
});

```

## Custom tools

The top right corner of the form has two button tools by default. You can modify it in the following way:

```php
$form->tools(function (Form\Tools $tools) {

    // Disable back btn.
    $tools->disableBackButton();
    
    // Disable list btn
    $tools->disableListButton();

    // Add a button, the argument can be a string, or an instance of the object that implements the Renderable or Htmlable interface
    $tools->add('<a class="btn btn-sm btn-danger"><i class="fa fa-trash"></i>&nbsp;&nbsp;delete</a>');
});
```

## Other methods

Disable submit btn:

```php
$form->disableSubmit();
```

Disable reset btn:
```php
$form->disableReset();
```

Ignore fields to store
```php
$form->ignore('column1', 'column2', 'column3');
```

Set width for label and field

```php
$form->setWidth(10, 2);
```

Set form action

```php
$form->setAction('admin/users');
```

## Model relationship


### One to One
The `users` table and the `profiles` table are generated one-to-one relation through the `profiles.user_id` field.

```sql

CREATE TABLE `users` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`email` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

CREATE TABLE `profiles` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`user_id` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`age` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`gender` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
```

The corresponding data model are:

```php

class User extends Model
{
    public function profile()
    {
        return $this->hasOne(Profile::class);
    }
}

class Profile extends Model
{
    public function user()
    {
        return $this->belongsTo(User::class);
    }
}

```

You can associate them in a form with the following code:

```php
Admin::form(User::class, function (Form $form) {

    $form->display('id');

    $form->text('name');
    $form->text('email');
    
    $form->text('profile.age');
    $form->text('profile.gender');

    $form->datetime('created_at');
    $form->datetime('updated_at');
});

```


================================================
FILE: docs/en/model-grid-actions.md
================================================
# Model grid row actions

`model-grid` By default, there are two actions `edit` and `delete`, which can be turned off in the following way:

```php
 $grid->actions(function ($actions) {
    $actions->disableDelete();
    $actions->disableEdit();
});
```
You can get the data for the current row by `$actions` parameter passed in:
```php
 $grid->actions(function ($actions) {
    
    // the array of data for the current row
    $actions->row;
    
    // gets the current row primary key value
    $actions->getKey();
});
```

If you have a custom action button, you can add the following:

```php
$grid->actions(function ($actions) {
    
    // append an action.
    $actions->append('<a href=""><i class="fa fa-eye"></i></a>');

    // prepend an action.
    $actions->prepend('<a href=""><i class="fa fa-paper-plane"></i></a>');
}
```

If you have more complex actions, you can refer to the following ways:

First define the action class:
```php
<?php

namespace App\Admin\Extensions;

use Encore\Admin\Admin;

class CheckRow
{
    protected $id;

    public function __construct($id)
    {
        $this->id = $id;
    }

    protected function script()
    {
        return <<<SCRIPT

$('.grid-check-row').on('click', function () {
    
    // Your code.
    console.log($(this).data('id'));
    
});

SCRIPT;
    }

    protected function render()
    {
        Admin::script($this->script());

        return "<a class='btn btn-xs btn-success fa fa-check grid-check-row' data-id='{$this->id}'></a>";
    }
    
    public function __toString()
    {
        return $this->render();
    }
}
```
Then add the action:
```php
$grid->actions(function ($actions) {
    
    // add action
    $actions->append(new CheckRow($actions->getKey()));
}
```

Row manipulations with column conditions:
For row attributes, you can use `$row->model()` array or `$row->column()` method.
You need to set style after setting attributes. Otherwise style method will be by-passed 
```php
$grid->rows(function ($row) {
   // if relased column value is Yes
   if ( $row->column('released') == 'Yes' ) {
        // Set attributes for row.
        $row->setAttributes([ 'data-row-id' => $row->model()['id'], 'data-row-date' => $row->column('release_date') ]);
        // Set style of row
        $row->style("background-color:green");
    }

});
```


================================================
FILE: docs/en/model-grid-column.md
================================================
# Model-grid column

`model-grid` built-in a lot of the operation of the column, you can use these methods very flexible operation of the column data.

The `Encore\Admin\Grid\Column` object has a built-in `display()` method to handle the value of the current column through the incoming callback function:
```php
$grid->column('title')->display(function ($title) {

    return "<span style='color:blue'>$title</span>";
    
});
```

The `display` callback bound to the current row data object as a parent object, you can use the data in current row by this way:
```php

$grid->first_name();

$grid->last_name();

$grid->column('full_name')->display(function () {
    return $this->first_name . ' ' . $this->last_name;
});
```

> method `value()` is a alias to method `display()`.

## Built-in methods

`model-grid` has built-in methods to help you extend the column functionality

### editable

With the help of `editable.js`, you can edit the data in the grid directly:
```php
$grid->title()->editable();

$grid->title()->editable('textarea');

$grid->title()->editable('select', [1 => 'option1', 2 => 'option2', 3 => 'option3']);

$grid->birth()->editable('date');

$grid->published_at()->editable('datetime');

$grid->column('year')->editable('year');

$grid->column('month')->editable('month');

$grid->column('day')->editable('day');

```

### switch

> notice: If set up a switch for a column the grid, then need to set the column in the form of the same switch

Quickly turn a column into a switch component using the following methods:
```php
$grid->status()->switch();

// set the `text`、`color`、and `value`
$states = [
    'on'  => ['value' => 1, 'text' => 'YES', 'color' => 'primary'],
    'off' => ['value' => 2, 'text' => 'NO', 'color' => 'default'],
];
$grid->status()->switch($states);

```

### switchGroup

> notice: If set up switch for some columns the grid, then need to set these columns in the form of the same switch

To quickly change a column into a switch component group, use the following method:
```php
$states = [
    'on' => ['text' => 'YES'],
    'off' => ['text' => 'NO'],
];

$grid->column('switch_group')->switchGroup([
    'hot'       => 'Hot',
    'new'       => 'New',
    'recommend' => 'Recommend',
], $states);

```

### select

```php
$grid->options()->select([
    1 => 'Sed ut perspiciatis unde omni',
    2 => 'voluptatem accusantium doloremque',
    3 => 'dicta sunt explicabo',
    4 => 'laudantium, totam rem aperiam',
]);
```

### radio
```php
$grid->options()->radio([
    1 => 'Sed ut perspiciatis unde omni',
    2 => 'voluptatem accusantium doloremque',
    3 => 'dicta sunt explicabo',
    4 => 'laudantium, totam rem aperiam',
]);
```

### checkbox
```php
$grid->options()->checkbox([
    1 => 'Sed ut perspiciatis unde omni',
    2 => 'voluptatem accusantium doloremque',
    3 => 'dicta sunt explicabo',
    4 => 'laudantium, totam rem aperiam',
]);
```

### image

```php
$grid->picture()->image();

//Set host, width and height
$grid->picture()->image('http://xxx.com', 100, 100);

// display multiple images
$grid->pictures()->display(function ($pictures) {
    
    return json_decode($pictures, true);
    
})->image('http://xxx.com', 100, 100);
```

### label
```php
$grid->name()->label();

//Set color,defaults to `success`, other options `danger`、`warning`、`info`、`primary`、`default`、`success`
$grid->name()->label('danger');

// can handle a array
$grid->keywords()->label();
```

### badge

```php
$grid->name()->badge();

//Set color,defaults to `success`, other options `danger`、`warning`、`info`、`primary`、`default`、`success`
$grid->name()->badge('danger');

// can handle a array
$grid->keywords()->badge();
```

## Extend the column

There are two ways to extend the column function, the first one is through the anonymous function.

Add following code to `app/Admin/bootstrap.php`:
```php
use Encore\Admin\Grid\Column;

Column::extend('color', function ($value, $color) {
    return "<span style='color: $color'>$value</span>";
});
```
Use this extension in `model-grid`:
```php

$grid->title()->color('#ccc');

```

If the column display logic is more complex, you can implement with an extension class.

Extension class `app/Admin/Extensions/Popover.php`:
```php
<?php

namespace App\Admin\Extensions;

use Encore\Admin\Admin;
use Encore\Admin\Grid\Displayers\AbstractDisplayer;

class Popover extends AbstractDisplayer
{
    public function display($placement = 'left')
    {
        Admin::script("$('[data-toggle=\"popover\"]').popover()");

        return <<<EOT
<button type="button"
    class="btn btn-secondary"
    title="popover"
    data-container="body"
    data-toggle="popover"
    data-placement="$placement"
    data-content="{$this->value}"
    >
  Popover
</button>

EOT;

    }
}
```
And then register the extension in `app/Admin/bootstrap.php`:
```php
use Encore\Admin\Grid\Column;
use App\Admin\Extensions\Popover;

Column::extend('popover', Popover::class);
```
Use the extension in `model-grid`:
```php
$grid->desciption()->popover('right');
```


## helpers
### String operations
If the current output data is a string, you can call the method of class `Illuminate\Support\Str`.

For example, the following column shows the string value of the `title` field:

```php
$grid->title();
```

Call `Str::limit()` on `title` colum.

Can call `Str::limit()` method on the output string of the `title` column.

```php
$grid->title()->limit(30);
```

Continue to call `Illuminate\Support\Str` method:

```php
$grid->title()->limit(30)->ucfirst();

$grid->title()->limit(30)->ucfirst()->substr(1, 10);

```

### Array operations
If the current output data is a array, you can call the method of class `Illuminate\Support\Collection`.

For example, the `tags` column is an array of data retrieved from a one-to-many relationship:
```php
$grid->tags();

array (
  0 => 
  array (
    'id' => '16',
    'name' => 'php',
    'created_at' => '2016-11-13 14:03:03',
    'updated_at' => '2016-12-25 04:29:35',
    
  ),
  1 => 
  array (
    'id' => '17',
    'name' => 'python',
    'created_at' => '2016-11-13 14:03:09',
    'updated_at' => '2016-12-25 04:30:27',
  ),
)

```

Call the `Collection::pluck()` method to get the `name` column from the array
```php
$grid->tags()->pluck('name');

array (
    0 => 'php',
    1 => 'python',
  ),

```

The output data is still a array after above, so you can call methods of `Illuminate\Support\Collection` continue.

```php
$grid->tags()->pluck('name')->map('ucwords');

array (
    0 => 'Php',
    1 => 'Python',
  ),
```
Outputs the array as a string
```php
$grid->tags()->pluck('name')->map('ucwords')->implode('-');

"Php-Python"
```

### Mixed use

In the above two types of method calls, as long as the output of the previous step is to determine the type of value, you can call the corresponding type of method, it can be very flexible mix.

For example, the `images` field is a JSON-formatted string type that stores a multiple-picture address array:

```php

$grid->images();

"['foo.jpg', 'bar.png']"

// chain method calls to display multiple images
$grid->images()->display(function ($images) {

    return json_decode($images, true);
    
})->map(function ($path) {

    return 'http://localhost/images/'. $path;
    
})->image();

```






================================================
FILE: docs/en/model-grid-custom-tools.md
================================================
# Custom tools

`model-grid` has `batch delete` and `refresh` operations tools as default, `model-grid` provides custom tool functionality if there are more operational requirements, the following example will show you how to add a `Gender selector` button group tool.

First define the tool class `app/Admin/Extensions/Tools/UserGender.php`:

```php
<?php

namespace App\Admin\Extensions\Tools;

use Encore\Admin\Admin;
use Encore\Admin\Grid\Tools\AbstractTool;
use Illuminate\Support\Facades\Request;

class UserGender extends AbstractTool
{
    protected function script()
    {
        $url = Request::fullUrlWithQuery(['gender' => '_gender_']);

        return <<<EOT
    
$('input:radio.user-gender').change(function () {

    var url = "$url".replace('_gender_', $(this).val());

    $.pjax({container:'#pjax-container', url: url });

});

EOT;
    }

    public function render()
    {
        Admin::script($this->script());

        $options = [
            'all'   => 'All',
            'm'     => 'Male',
            'f'     => 'Female',
        ];

        return view('admin.tools.gender', compact('options'));
    }
}

```
The blade file of view `admin.tools.gender` is `resources/views/admin/tools/gender.blade.php`:
```php
<div class="btn-group" data-toggle="buttons">
    @foreach($options as $option => $label)
    <label class="btn btn-default btn-sm {{ \Request::get('gender', 'all') == $option ? 'active' : '' }}">
        <input type="radio" class="user-gender" value="{{ $option }}">{{$label}}
    </label>
    @endforeach
</div>
```

Import this tool in `model-grid`:
```php

$grid->tools(function ($tools) {
    $tools->append(new UserGender());
});

```

In the `model-grid`, pass `gender` query to model:
```php
if (in_array(Request::get('gender'), ['m', 'f'])) {
    $grid->model()->where('gender', Request::get('gender'));
}
```

You can refer to the above way to add your own tools.

## Batch operation

At present, the default implementation of the batch delete operation, if you want to turn off the batch delete operation:
```php
$grid->tools(function ($tools) {
    $tools->batch(function ($batch) {
        $batch->disableDelete();
    });
});

```

If you want to add a custom batch operation, you can refer to the following example.

The following example will show you how to implements a `post batch release` operation:

First define the tool class `app/Admin/Extensions/Tools/ReleasePost.php`:
```php
<?php

namespace App\Admin\Extensions\Tools;

use Encore\Admin\Grid\Tools\BatchAction;

class ReleasePost extends BatchAction
{
    protected $action;

    public function __construct($action = 1)
    {
        $this->action = $action;
    }
    
    public function script()
    {
        return <<<EOT
        
$('{$this->getElementClass()}').on('click', function() {

    $.ajax({
        method: 'post',
        url: '{$this->resource}/release',
        data: {
            _token:LA.token,
            ids: selectedRows(),
            action: {$this->action}
        },
        success: function () {
            $.pjax.reload('#pjax-container');
            toastr.success('操作成功');
        }
    });
});

EOT;

    }
}
```

See the code above, use ajax to pass the selected `ids` to back-end api through a POST request, the back-end api modifies the state of the corresponding data according to the received `ids`, and then front-end refresh the page (pjax reload), and pop-up a `toastr` prompt operation is successful.

Import this operation in `model-grid`:
```php
$grid->tools(function ($tools) {
    $tools->batch(function ($batch) {
        $batch->add('Release post', new ReleasePost(1));
        $batch->add('Unrelease post', new ReleasePost(0));
    });
});
```

So that the batch operation of the drop-down button will add the following two operations, the final step is to add an api to handle the request of the batch operation, the api code is as follows:
```php

class PostController extends Controller
{
    ...
    
    public function release(Request $request)
    {
        foreach (Post::find($request->get('ids')) as $post) {
            $post->released = $request->get('action');
            $post->save();
        }
    }
    
    ...
}
```

Then add a route for the api above:
```php
$router->post('posts/release', 'PostController@release');
```

This completes the entire process.

================================================
FILE: docs/en/model-grid-export.md
================================================
Data export
=======

`model-grid` built-in export function is to achieve a simple csv format file export, if you encounter a file coding problem or can not meet their own needs, you can follow the steps below to customize the export function

This example uses [Laravel-Excel](https://github.com/Maatwebsite/Laravel-Excel) as an excel library, and of course you can use any other excel library.

First install it:

```shell
composer require maatwebsite/excel:~2.1.0

php artisan vendor:publish --provider="Maatwebsite\Excel\ExcelServiceProvider"
```

And then create a new custom export class, such as `app/Admin/Extensions/ExcelExpoter.php`:
```php
<?php

namespace App\Admin\Extensions;

use Encore\Admin\Grid\Exporters\AbstractExporter;
use Maatwebsite\Excel\Facades\Excel;
use Illuminate\Support\Arr;

class ExcelExpoter extends AbstractExporter
{
    public function export()
    {
        Excel::create('Filename', function($excel) {

            $excel->sheet('Sheetname', function($sheet) {

                // This logic get the columns that need to be exported from the table data
                $rows = collect($this->getData())->map(function ($item) {
                    return Arr::only($item, ['id', 'title', 'content', 'rate', 'keywords']);
                });

                $sheet->rows($rows);

            });

        })->export('xls');
    }
}
```

And then use this class in `model-grid`:
```php

use App\Admin\Extensions\ExcelExpoter;

$grid->exporter(new ExcelExpoter());

```

For more information on how to use `Laravel-Excel`, refer to [laravel-excel/docs](http://www.maatwebsite.nl/laravel-excel/docs)

================================================
FILE: docs/en/model-grid-filters.md
================================================
# Model grid filters

`model-grid`Provides a set of data filters:

```php
$grid->filter(function($filter){

    // Remove the default id filter
    $filter->disableIdFilter();

    // Add a column filter
    $filter->like('name', 'name');
    ...

});

```

## Filter type

Currently supported filter types are the following:

### Equal
`sql: ... WHERE `column` = ""$input""`:
```php
$filter->equal('column', $label);
```

### Not equal
`sql: ... WHERE `column` != ""$input""`:
```php
$filter->notEqual('column', $label);
```

### Like
`sql: ... WHERE `column` LIKE "%"$input"%"`:
```php
$filter->like('column', $label);
```

### Ilike
`sql: ... WHERE `column` ILIKE "%"$input"%"`:
```php
$filter->ilike('column', $label);
```

### Greater then
`sql: ... WHERE `column` > "$input"`:
```php
$filter->gt('column', $label);
```

### Less than
`sql: ... WHERE `column` < "$input"`:
```php
$filter->lt('column', $label);
```

### Between
`sql: ... WHERE `column` BETWEEN "$start" AND "$end"`:
```php
$filter->between('column', $label);

// set datetime field type
$filter->between('column', $label)->datetime();

// set time field type
$filter->between('column', $label)->time();
```

### In
`sql: ... WHERE `column` in (...$inputs)`:
```php
$filter->in('column', $label)->multipleSelect(['key' => 'value']);
```

### NotIn
`sql: ... WHERE `column` not in (...$inputs)`:
```php
$filter->notIn('column', $label)->multipleSelect(['key' => 'value']);
```

### Date
`sql: ... WHERE DATE(`column`) = "$input"`:
```php
$filter->date('column', $label);
```

### Day
`sql: ... WHERE DAY(`column`) = "$input"`:
```php
$filter->day('column', $label);
```

### Month
`sql: ... WHERE MONTH(`column`) = "$input"`:
```php
$filter->month('column', $label);
```

### year
`sql: ... WHERE YEAR(`column`) = "$input"`:
```php
$filter->year('column', $label);
```

### Where

You can use `where` to build more complex query filtering

`sql: ... WHERE `title` LIKE "%$input" OR `content` LIKE "%$input"`:
```php
$filter->where(function ($query) {

    $query->where('title', 'like', "%{$this->input}%")
        ->orWhere('content', 'like', "%{$this->input}%");

}, 'Text');
```

`sql: ... WHERE `rate` >= 6 AND `created_at` = {$input}`:
```php
$filter->where(function ($query) {

    $query->whereRaw("`rate` >= 6 AND `created_at` = {$this->input}");

}, 'Text');
```

Relationship query, query the corresponding relationship `profile` field:
```php
$filter->where(function ($query) {

    $query->whereHas('profile', function ($query) {
        $query->where('address', 'like', "%{$this->input}%")->orWhere('email', 'like', "%{$this->input}%");
    });

}, 'Address or mobile');
```

## Field type

The default field type is text input, set placeholder for text input:

```php
$filter->equal('column')->placeholder('Please input...');
```

You can also restrict the user input format by using some of the following methods:

```php
$filter->equal('column')->url();

$filter->equal('column')->email();

$filter->equal('column')->integer();

$filter->equal('column')->ip();

$filter->equal('column')->mac();

$filter->equal('column')->mobile();

// $options refer to https://github.com/RobinHerbots/Inputmask/blob/4.x/README_numeric.md
$filter->equal('column')->decimal($options = []);

// $options refer to https://github.com/RobinHerbots/Inputmask/blob/4.x/README_numeric.md
$filter->equal('column')->currency($options = []);

// $options refer to https://github.com/RobinHerbots/Inputmask/blob/4.x/README_numeric.md
$filter->equal('column')->percentage($options = []);

// $options refer to https://github.com/RobinHerbots/Inputmask
$filter->equal('column')->inputmask($options = [], $icon = 'pencil');
```

### Select
```php
$filter->equal('column')->select(['key' => 'value'...]);

// Or from the api to obtain data, api format reference model-form `select` component
$filter->equal('column')->select('api/users');
```

### multipleSelect
Generally used in conjunction with `in` and` notIn` need to query the array of two types of inquiries can also be used in the `type` type of query:
```php
$filter->in('column')->multipleSelect(['key' => 'value'...]);

// // Or from the api to obtain data, api format reference model-form `multipleSelect` component
$filter->in('column')->multipleSelect('api/users');
```

### radio
The more common scenario is the selection of categories

```php
$filter->equal('released')->radio([
    ''   => 'All',
    0    => 'Unreleased',
    1    => 'Released',
]);
```

### checkbox
The more common scene is do the scope query with `whereIn`:

```php
$filter->in('gender')->checkbox([
    'm'    => 'Male',
    'f'    => 'Female',
]);
```

### datetime

Use date and time components,`$options` parameter and value reference [bootstrap-datetimepicker](http://eonasdan.github.io/bootstrap-datetimepicker/Options/)

```php
$filter->equal('column')->datetime($options);

// `date()` equals to `datetime(['format' => 'YYYY-MM-DD'])`
$filter->equal('column')->date();

// `time()` equals to `datetime(['format' => 'HH:mm:ss'])`
$filter->equal('column')->time();

// `day()` equals to `datetime(['format' => 'DD'])`
$filter->equal('column')->day();

// `month()` equals to `datetime(['format' => 'MM'])`
$filter->equal('column')->month();

// `year()` equals to `datetime(['format' => 'YYYY'])`
$filter->equal('column')->year();

```

## Complex query filter

You can use the `$this->input` to trigger complex custom queries:
```php
$filter->where(function ($query) {
    switch ($this->input) {
        case 'yes':
            // custom complex query if the 'yes' option is selected
            $query->has('somerelationship');
            break;
        case 'no':
            $query->doesntHave('somerelationship');
            break;
    }
}, 'Label of the field', 'name_for_url_shortcut')->radio([
    '' => 'All',
    'yes' => 'Only with relationship',
    'no' => 'Only without relationship',
]);
```


================================================
FILE: docs/en/model-grid.md
================================================
# Model-grid

Class `Encore\Admin\Grid` is used to generate tables based on the data model,for example,we have a table `movies` in database:

```sql
CREATE TABLE `movies` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `title` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `director` int(10) unsigned NOT NULL,
  `describe` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `rate` tinyint unsigned NOT NULL,
  `released` enum(0, 1),
  `release_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

```

And the model of this table is `App\Models\Movie`,The following code can generate the data grid for table `movies`:

```php

use App\Models\Movie;
use Encore\Admin\Grid;
use Encore\Admin\Facades\Admin;

$grid = Admin::grid(Movie::class, function(Grid $grid){

    // The first column displays the id field and sets the column as a sortable column
    $grid->id('ID')->sortable();

    // The second column shows the title field, because the title field name and the Grid object's title method conflict, so use Grid's column () method instead
    $grid->column('title');
    
    // The third column shows the director field, which is set by the display($callback) method to display the corresponding user name in the users table
    $grid->director()->display(function($userId) {
        return User::find($userId)->name;
    });
    
    // The fourth column appears as the describe field
    $grid->describe();
    
    // The fifth column is displayed as the rate field
    $grid->rate();

    // The sixth column shows the released field, formatting the display output through the display($callback) method
    $grid->released('Release?')->display(function ($released) {
        return $released ? 'yes' : 'no';
    });

    // The following shows the columns for the three time fields
    $grid->release_at();
    $grid->created_at();
    $grid->updated_at();

    // The filter($callback) method is used to set up a simple search box for the table
    $grid->filter(function ($filter) {
    
        // Sets the range query for the created_at field
        $filter->between('created_at', 'Created Time')->datetime();
    });
});

```

## Basic Usage

#### Add a column
```php

// Add the column directly through the field name `username`
$grid->username('Username');

// The effect is the same as above
$grid->column('username', 'Username');

// Add multiple columns
$grid->columns('email', 'username' ...);
```

#### Modify the source data
```php
$grid->model()->where('id', '>', 100);

$grid->model()->orderBy('id', 'desc');

$grid->model()->take(100);

```

#### Sets the number of lines displayed per page

```php
// The default is 15 per page
$grid->paginate(20);
```

#### Modify the display output of column

```php
use Illuminate\Support\Str;
$grid->text()->display(function($text) {
    return Str::limit($text, 30, '...');
});

$grid->name()->display(function ($name) {
    return "<span class='label'>$name</span>";
});

$grid->email()->display(function ($email) {
    return "mailto:$email";
});

// column not in table
$grid->column('column_not_in_table')->display(function () {
    return 'blablabla....';
});

```

The closure passed to method `display()` is bind to row data object, you can use other column data in current row.

```php
$grid->first_name();
$grid->last_name();

// column not in table
$grid->column('full_name')->display(function () {
    return $this->first_name.' '.$this->last_name;
});
```

#### Disable the create button 
```php
$grid->disableCreateButton();
```

#### Disable Pagination
```php
$grid->disablePagination();
```

#### Disable all tools on header of grid. Filter, refresh, export, batch actions
```php
$grid->disableTools();
```

#### Disable data filter
```php
$grid->disableFilter();
```

#### Disable the export button
```php
$grid->disableExport();
```

#### Disable row selector
```php
$grid->disableRowSelector();
```

#### Disable row actions
```php
$grid->disableActions();
```

#### Enable orderable grid
```php
$grid->orderable();
```

#### Set options for perPage selector
```php
$grid->perPages([10, 20, 30, 40, 50]);
```

## Relation


### One to one

The `users` table and the `profiles` table are generated one-to-one relation through the `profiles.user_id` field.

```sql

CREATE TABLE `users` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`email` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

CREATE TABLE `profiles` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`user_id` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`age` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`gender` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
```

The corresponding data model are:

```php

class User extends Model
{
    public function profile()
    {
        return $this->hasOne(Profile::class);
    }
}

class Profile extends Model
{
    public function user()
    {
        return $this->belongsTo(User::class);
    }
}

```

You can associate them in a grid with the following code:

```php
Admin::grid(User::class, function (Grid $grid) {

    $grid->id('ID')->sortable();

    $grid->name();
    $grid->email();
    
    $grid->column('profile.age');
    $grid->column('profile.gender');

    //or
    $grid->profile()->age();
    $grid->profile()->gender();

    $grid->created_at();
    $grid->updated_at();
});

```

### One to many

The `posts` and `comments` tables generate a one-to-many association via the `comments.post_id` field

```sql

CREATE TABLE `posts` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`content` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

CREATE TABLE `comments` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`post_id` int(10) unsigned NOT NULL,
`content` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
```

The corresponding data model are:

```php

class Post extends Model
{
    public function comments()
    {
        return $this->hasMany(Comment::class);
    }
}

class Comment extends Model
{
    public function post()
    {
        return $this->belongsTo(Post::class);
    }
}

```

You can associate them in a grid with the following code:

```php

return Admin::grid(Post::class, function (Grid $grid) {
    $grid->id('id')->sortable();
    $grid->title();
    $grid->content();

    $grid->comments('Comments count')->display(function ($comments) {
        $count = count($comments);
        return "<span class='label label-warning'>{$count}</span>";
    });

    $grid->created_at();
    $grid->updated_at();
});


return Admin::grid(Comment::class, function (Grid $grid) {
    $grid->id('id');
    $grid->post()->title();
    $grid->content();

    $grid->created_at()->sortable();
    $grid->updated_at();
});

```

### Many to many

The `users` and` roles` tables produce a many-to-many relationship through the pivot table `role_user`

```sql

CREATE TABLE `users` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `username` varchar(190) COLLATE utf8_unicode_ci NOT NULL,
  `password` varchar(60) COLLATE utf8_unicode_ci NOT NULL,
  `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `users_username_unique` (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

CREATE TABLE `roles` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
  `slug` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `roles_name_unique` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

CREATE TABLE `role_users` (
  `role_id` int(11) NOT NULL,
  `user_id` int(11) NOT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  KEY `role_users_role_id_user_id_index` (`role_id`,`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
```

The corresponding data model are:

```php

class User extends Model
{
    public function roles()
    {
        return $this->belongsToMany(Role::class);
    }
}

class Role extends Model
{
    public function users()
    {
        return $this->belongsToMany(User::class);
    }
}

```

You can associate them in a grid with the following code:

```php
return Admin::grid(User::class, function (Grid $grid) {
    $grid->id('ID')->sortable();
    $grid->username();
    $grid->name();

    $grid->roles()->display(function ($roles) {

        $roles = array_map(function ($role) {
            return "<span class='label label-success'>{$role['name']}</span>";
        }, $roles);

        return join('&nbsp;', $roles);
    });

    $grid->created_at();
    $grid->updated_at();
});

```


================================================
FILE: docs/en/model-tree.md
================================================
# Model-tree

Can be achieved through a `model-tree` to a tree-like components, you can drag the way to achieve the level of data, sorting and other operations, the following is the basic usage.

## Table structure and model

To use `model-tree`, you have to follow the convention of the table structure:

```sql
CREATE TABLE `demo_categories` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `parent_id` int(11) NOT NULL DEFAULT '0',
  `order` int(11) NOT NULL DEFAULT '0',
  `title` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
  `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
```
The above table structure has three necessary fields `parent_id`, `order`, `title`, and the other fields are not required.

The corresponding model is `app/Models/Category.php`:
```php
<?php

namespace App\Models\Demo;

use Encore\Admin\Traits\ModelTree;
use Illuminate\Database\Eloquent\Model;

class Category extends Model
{
    use ModelTree;

    protected $table = 'demo_categories';
}
```

Table structure in the three fields `parent_id`,` order`, `title` field name can be amended:

```php
<?php

namespace App\Models\Demo;

use Encore\Admin\Traits\ModelTree;
use Illuminate\Database\Eloquent\Model;

class Category extends Model
{
    use ModelTree;

    protected $table = 'demo_categories';

    public function __construct(array $attributes = [])
    {
        parent::__construct($attributes);
        
        $this->setParentColumn('pid');
        $this->setOrderColumn('sort');
        $this->setTitleColumn('name');
    }
}
```
## Usage
然后就是在页面中使用`model-tree`了:

Then use `model-tree` in your page

```php
<?php

namespace App\Admin\Controllers\Demo;

use App\Http\Controllers\Controller;
use App\Models\Category;
use Encore\Admin\Form;
use Encore\Admin\Facades\Admin;
use Encore\Admin\Layout\Content;
use Encore\Admin\Controllers\ModelForm;
use Encore\Admin\Tree;

class CategoryController extends Controller
{
    use ModelForm;
    
    public function index()
    {
        return Admin::content(function (Content $content) {
            $content->header('Categories');
            $content->body(Category::tree());
        });
    }
}
```
You can modify the display of branch in the following ways:
```php
Category::tree(function ($tree) {
    $tree->branch(function ($branch) {
        $src = config('admin.upload.host') . '/' . $branch['logo'] ;
        $logo = "<img src='$src' style='max-width:30px;max-height:30px' class='img'/>";

        return "{$branch['id']} - {$branch['title']} $logo";
    });
})
```

The `$branch` parameter is array of current row data.

If you want to modify the query of the model, use the following way:
```php

Category::tree(function ($tree) {

    $tree->query(function ($model) {
        return $model->where('type', 1);
    });
    
})
```




================================================
FILE: docs/en/permission.md
================================================
# Access Control

`laravel-admin` has built-in` RBAC` permissions control module, expand the left sidebar `Auth`, you can see user, permissions and roles management panel, the use of permissions control as follows:

## Route permission

In the `laravel-admin 1.5`, the permissions and routes are bound together, in the edit permission page which set the current permissions can access the routing, in the `HTTP method` select box to select the method of access to the path, in the `HTTP path` textarea fill in the path to access.

For example, to add a permission, the permission can access the path `/admin/users` in GET method, then `HTTP method` select `GET`, `HTTP path` fill in `/users`.

If you want to access all paths with the prefix `/admin/users`, then the `HTTP path` fill in `/users*`, if the permissions include multiple access paths, wrap the line for each path.

## Page permission

If you want to control the user's permissions in the page, you can refer to the following example

### example1

For example, there is now a scene, here is a article module, we use create articles as an example

At first open `http://localhost/admi/auth/permissions`, fill up slug field with text `create-post`, and `Create post` in name field, then assign this permission to some roles.

In your controller action: 
```php
use Encore\Admin\Auth\Permission;

class PostController extends Controller
{
    public function create()
    {
        // check permission, only the roles with permission `create-post` can visit this action
        Permission::check('create-post');
    }
}
```

### example2

If you want to control the page elements of the user's display, then you need to first define permissions, such as `delete-image` and `view-title-column`, respectively, to control the permissions to delete pictures and display a column in grid, then assign these two permissions to roles, add following code to the grid:
```php
$grid->actions(function ($actions) {

    // The roles with this permission will not able to see the delete button in actions column.
    if (!Admin::user()->can('delete-image')) {
        $actions->disableDelete();
    }
});

// Only roles with permission `view-title-column` can view this column in grid
if (Admin::user()->can('view-title-column')) {
    $grid->column('title');
}
```

## Other methods

Get current user object.
```php
Admin::user();
```

Get current user id.
```php
Admin::user()->id;
```

Get user's roles.
```php
Admin::user()->roles;
```

Get user's permissions.
```php
Admin::user()->permissions;
```

User is role.
```php
Admin::user()->isRole('developer');
```

User has permission.
```php
Admin::user()->can('create-post');
```

User don't has permission.
```php
Admin::user()->cannot('delete-post');
```

Is user super administrator.
```php
Admin::user()->isAdministrator();
```

Is user in one of roles.
```php
Admin::user()->inRoles(['editor', 'developer']);
```

## Permission middleware

You can use permission middleware in the routes to control the routing permission

```php

// Allow roles `administrator` and `editor` access the routes under group.
Route::group([
    'middleware' => 'admin.permission:allow,administrator,editor',
], function ($router) {

    $router->resource('users', UserController::class);
    ...
    
});

// Deny roles `developer` and `operator` access the routes under group.
Route::group([
    'middleware' => 'admin.permission:deny,developer,operator',
], function ($router) {

    $router->resource('users', UserController::class);
    ...
    
});

// User has permission `edit-post`、`create-post` and `delete-post` can access routes under group.
Route::group([
    'middleware' => 'admin.permission:check,edit-post,create-post,delete-post',
], function ($router) {

    $router->resource('posts', PostController::class);
    ...
    
});
```

The usage of permission middleware is just as same as other middleware.




================================================
FILE: docs/en/quick-start.md
================================================
# Quick start

We use `users` table come with `Laravel` for example,the structure of table is:
```sql
CREATE TABLE `users` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `email` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `password` varchar(60) COLLATE utf8_unicode_ci NOT NULL,
  `remember_token` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  PRIMARY KEY (`id`),
  UNIQUE KEY `users_email_unique` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
```
And the model for this table is `App\User.php`

You can follow these steps to setup `CRUD` interfaces of table `users`:

## Add controller

Use the following command to create a controller for `App\User` model

```php
php artisan admin:make UserController --model=App\\User

// under windows use:
php artisan admin:make UserController --model=App\User
```
The above command will create the controller in `app/Admin/Controllers/UserController.php`.

## Add route

Add a route in `app/Admin/routes.php`:
```
$router->resource('demo/users', UserController::class);
```

## Add left menu item

Open `http://localhost:8000/admin/auth/menu`, add menu link and refresh the page, then you can find a link item in left menu bar.

> Where `uri` fills in the path part that does not contain the prefix of the route, such as the full path `http://localhost:8000/admin/demo/users`, just input `demo/users`, If you want to add an external link, just fill in the full url, such as `http://laravel-admin.org/`.

### Menu translations

append menu titles in menu_titles index at your language files.
For example 'Work Units' title:

in resources/lang/es/admin.php
```php
...
// lowercase and replace spaces with _
'menu_titles' => [
    'work_units' => 'Unidades de trabajo'
],
```

## Build grid and form

The rest needs to be done is open `app/Admin/Contollers/UserController.php`, find `form()` and `grid()` method and write few lines of code with `model-grid` and `model-form`,for more detail, please read [model-grid](/en/model-grid.md) and [model-form](/en/model-form.md).


================================================
FILE: docs/en/upgrade.md
================================================
# Upgrade precautions

Because `laravel-admin 1.5` built-in table structure has been modified, it is recommended that you re-install `laravel 5.5` and `laravel-admin 1.5`, and then migrate the code over

Code migration needs attention:

- Please refer to the table structure changes [tables.php](https://github.com/z-song/laravel-admin/blob/master/database/migrations/2016_01_04_173148_create_admin_tables.php)
- Routing file structure is modified please refer to [routes.stub](https://github.com/z-song/laravel-admin/blob/master/src/Console/stubs/routes.stub)
- Please refer to the configuration file structure changes [admin.php](https://github.com/z-song/laravel-admin/blob/master/config/admin.php)
- The chart component has been removed and can no longer be used, please refer to [Custom chart](/en/custom-chart.md)

================================================
FILE: docs/en/widgets.md
================================================
# Web widgets

## Box

`Encore\Admin\Widgets\Box` used to generate box components:

```php
use Encore\Admin\Widgets\Box;

$box = new Box('Box Title', 'Box content');

$box->removable();

$box->collapsable();

$box->style('info');

$box->solid();

echo $box;

```

The `$content` parameter is the content element of the Box, which can be either an implementation of the `Illuminate\Contracts\Support\Renderable` interface, or other printable variables.

`Box::title($title)` method is used to set the Box component title.

`Box::content($content)` method is used to set the content element of a Box component.

`Box::removable()` method sets the Box component as removable.

`Box::collapsable()` method sets the Box component as collapsable.

`Box::style($style)` method sets the style of the Box component to fill in `primary`, `info`, `danger`, `warning`, `success`, `default`.

`Box::solid()` method adds a border to the Box component.

## Collapse

`Encore\Admin\Widgets\Collapse` class used to generate folding components:
```php
use Encore\Admin\Widgets\Collapse;

$collapse = new Collapse();

$collapse->add('Bar', 'xxxxx');
$collapse->add('Orders', new Table());

echo $collapse->render();

```

`Collapse::add($title, $content)` method is used to add a collapsed item to the collapsing component. The `$title` parameter sets the title of the item. The`$content` parameter is used to .


## Form

`Encore\Admin\Widgets\Form` class is used to quickly build a form:

```php

$form = new Form();

$form->action('example');

$form->email('email')->default('qwe@aweq.com');
$form->password('password');
$form->text('name');
$form->url('url');
$form->color('color');
$form->map('lat', 'lng');
$form->date('date');
$form->json('val');
$form->dateRange('created_at', 'updated_at');

echo $form->render();
```

`Form::__construct($data = [])` generates a form object. If the `$data` parameter is passed, the elements in the `$data` array will be filled into the form.

`Form::action($uri)` method is used to set the form submission address.

`Form::method($method)` method is used to set the submit method of the form, the default is `POST` method.

`Form::disablePjax()` disable pjax for form submit.

## Infobox

`Encore\Admin\Widgets\InfoBox` class is used to generate the information presentation block:

```php
use Encore\Admin\Widgets\InfoBox;

$infoBox = new InfoBox('New Users', 'users', 'aqua', '/admin/users', '1024');

echo $infoBox->render();

```

Refer to the section on the `InfoBox` in the `index()` method of the home page layout file [HomeController.php](https://github.com/z-song/laravel-admin/blob/master/src/Console/stubs/HomeController.stub).

## Tab component

`Encore\Admin\Widgets\Tab` class is used to generate the tab components:

```php
use Encore\Admin\Widgets\Tab;

$tab = new Tab();

$tab->add('Pie', $pie);
$tab->add('Table', new Table());
$tab->add('Text', 'blablablabla....');

echo $tab->render();

```

`Tab::add($title, $content)` method is used to add new tab, `$title` is tab title, `$content` is tab content.

## Table

`Encore\Admin\Widgets\Table` class is used to generate tables:

```php
use Encore\Admin\Widgets\Table;

// table 1
$headers = ['Id', 'Email', 'Name', 'Company'];
$rows = [
    [1, 'labore21@yahoo.com', 'Ms. Clotilde Gibson', 'Goodwin-Watsica'],
    [2, 'omnis.in@hotmail.com', 'Allie Kuhic', 'Murphy, Koepp and Morar'],
    [3, 'quia65@hotmail.com', 'Prof. Drew Heller', 'Kihn LLC'],
    [4, 'xet@yahoo.com', 'William Koss', 'Becker-Raynor'],
    [5, 'ipsa.aut@gmail.com', 'Ms. Antonietta Kozey Jr.'],
];

$table = new Table($headers, $rows);

echo $table->render();

// table 2
$headers = ['Keys', 'Values'];
$rows = [
    'name'   => 'Joe',
    'age'    => 25,
    'gender' => 'Male',
    'birth'  => '1989-12-05',
];

$table = new Table($headers, $rows);

echo $table->render();

```



================================================
FILE: docs/issue_template.md
================================================
- Laravel Version: #.#.#
- PHP Version:
- Laravel-admin: #.#.#

### Description:


### Steps To Reproduce:


================================================
FILE: docs/zh/LICENSE.md
================================================
The MIT License (MIT)

Copyright (c) 2015 Jens Segers

Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


================================================
FILE: docs/zh/README.md
================================================
# laravel-admin

[![Build Status](https://travis-ci.org/z-song/laravel-admin.svg?branch=master)](https://travis-ci.org/z-song/laravel-admin)
[![StyleCI](https://styleci.io/repos/48796179/shield)](https://styleci.io/repos/48796179)
[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/z-song/laravel-admin/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/z-song/laravel-admin/?branch=master)
[![Packagist](https://img.shields.io/packagist/l/encore/laravel-admin.svg?maxAge=2592000)](https://packagist.org/packages/encore/laravel-admin)
[![Total Downloads](https://img.shields.io/packagist/dt/encore/laravel-admin.svg?style=flat-square)](https://packagist.org/packages/encore/laravel-admin)

`laravel-admin` 是一个可以快速帮你构建后台管理的工具,它提供的页面组件和表单元素等功能,能帮助你使用很少的代码就实现功能完善的后台管理功能。

> 当前版本(1.5)需要安装`PHP 7+`和`Laravel 5.5`, 如果你使用更早的版本,请参考文档: [1.4](http://laravel-admin.org/docs/v1.4/#/zh/) 

## 特性

+ 内置用户和权限系统
+ `model-grid`支持快速构建数据表格
+ `model-form`支持快速构建数据表单
+ `model-tree`支持快速构建树状数据
+ 内置40+种form元素组件、以及支持扩展组件
+ 支持`Laravel`的多种模型关系
+ `mysql`、`mongodb`、`pgsql`等多数据库支持
+ 支持引入第三方前端库
+ 数据库和artisan命令行工具的web实现
+ 支持自定义图表
+ 多种常用web组件
+ 支持本地和oss文件上传

## Demo

打开`http://laravel-admin.org/demo/`,用账号密码`admin/admin`登陆

# 依赖

`laravel-admin` 基于以下组件或者服务:

+ [Laravel](https://laravel.com/)
+ [AdminLTE](https://almsaeedstudio.com/)
+ [Datetimepicker](http://eonasdan.github.io/bootstrap-datetimepicker/)
+ [font-awesome](http://fontawesome.io)
+ [moment](http://momentjs.com/)
+ [Google map](https://www.google.com/maps)
+ [Tencent map](http://lbs.qq.com/)
+ [bootstrap-fileinput](https://github.com/kartik-v/bootstrap-fileinput)
+ [jquery-pjax](https://github.com/defunkt/jquery-pjax)
+ [Nestable](http://dbushell.github.io/Nestable/)
+ [toastr](http://codeseven.github.io/toastr/)
+ [X-editable](http://github.com/vitalets/x-editable)
+ [bootstrap-number-input](https://github.com/wpic/bootstrap-number-input)
+ [fontawesome-iconpicker](https://github.com/itsjavi/fontawesome-iconpicker)

## 交流

QQ群:278455482(已满)、635881319(已满)、533701919

> 为了避免广告及不看文档用户,请先到github star此项目,然后附上github账号申请入群

> 另外我已经屏蔽群私聊,所以请不要找我私聊,也请尽量不要在群里面 @我 🙏

## 支持

如果觉得这个项目帮你节约了时间,不妨支持一下;)

![-1](https://cloud.githubusercontent.com/assets/1479100/23287423/45c68202-fa78-11e6-8125-3e365101a313.jpg)

## License

`laravel-admin` is licensed under [The MIT License (MIT)](zh/LICENSE).


================================================
FILE: docs/zh/_sidebar.md
================================================

- 入门
  - [安装](/zh/installation.md)
  - [快速开始](/zh/quick-start.md)
  - [页面内容和布局](/zh/content-layout.md)
- 模型表格
  - [基本使用](/zh/model-grid.md)
  - [行的使用和扩展](/zh/model-grid-actions.md)
  - [列的使用和扩展](/zh/model-grid-column.md)
  - [自定义工具](/zh/model-grid-custom-tools.md)
  - [修改表格数据源](/zh/model-grid-data.md)
  - [查询过滤](/zh/model-grid-filters.md)
  - [数据导出](/zh/model-grid-export.md)
- 模型表单
  - [基本使用](/zh/model-form.md)
  - [图片/文件上传](/zh/model-form-upload.md)
  - [Form组件使用](/zh/model-form-fields.md)
  - [Form组件管理](/zh/model-form-field-management.md)
  - [表单验证](/zh/model-form-validation.md)
  - [保存回调](/zh/model-form-callback.md)
- [数据模型树](/zh/model-tree.md)
- Admin扩展
  - [帮助工具](/zh/extension-helpers.md)
  - [文件管理](/zh/extension-media-manager.md)
  - [API tester](/zh/extension-api-tester.md)
  - [配置管理](/zh/extension-config.md)
  - [计划任务](/zh/extension-scheduling.md)
- [前端组件](/zh/widgets.md)
- [权限控制](/zh/permission.md)
- [自定义登陆认证](/zh/custom-authentication.md)
- [自定义头部导航](/zh/custom-navbar.md)
- [自定义图表](/zh/custom-chart.md)
- [常见问题](/zh/qa.md)
- [升级注意事项](/zh/upgrade.md)
- [Change log](/zh/change-log.md)

================================================
FILE: docs/zh/change-log.md
================================================
# Change log

## v1.2.9、v1.3.3、v1.4.1

- 添加用户设置和修改头像功能
- model-form自定义工具[参考](zh/model-form.md?id=自定义工具)
- 内嵌表单支持[参考](zh/model-form-fields.md?id=embeds)
- 支持自定义导航条(右上角)[参考](https://github.com/z-song/laravel-admin/issues/392)
- 添加脚手架、数据库命令行工具、web artisan帮助工具[参考](zh/helpers.md)
- 支持自定义登陆页面和登陆逻辑[参考](zh/qa.md?id=自定义登陆页面和登陆逻辑)
- 表单支持设置宽度、设置action[参考](zh/model-form.md?id=其它方法)
- 优化表格过滤器
- 修复bug,优化代码和逻辑

================================================
FILE: docs/zh/content-layout.md
================================================
# 页面内容

`laravel-admin`的布局可参考后台首页的布局文件[HomeController.php](https://github.com/z-song/laravel-admin/blob/master/src/Console/stubs/HomeController.stub)的`index()`方法。

`Encore\Admin\Layout\Content`类用来实现内容区的布局。`Content::body($content)`方法用来添加页面内容:

一个简单的后台页面代码如下:

```php
public function index()
{
    return Admin::content(function (Content $content) {

        // 选填
        $content->header('填写页面头标题');
        
        // 选填
        $content->description('填写页面描述小标题');
        
        // 添加面包屑导航 since v1.5.7
        $content->breadcrumb(
            ['text' => '首页', 'url' => '/admin'],
            ['text' => '用户管理', 'url' => '/admin/users'],
            ['text' => '编辑用户']
        );

        // 填充页面body部分,这里可以填入任何可被渲染的对象
        $content->body('hello world');
    });
}

```

其中`$content->body();`方法可以接受任何可字符串化的对象作为参数,可以是字符串、数字、包含了`__toString`方法的对象,实现了`Renderable`、`Htmlable`接口的对象,包括laravel的视图。


## 布局

`laravel-admin`的布局使用bootstrap的栅格系统,每行的长度是12,下面是几个简单的示例:

添加一行内容:

```php
$content->row('hello')

---------------------------------
|hello                          |
|                               |
|                               |
|                               |
|                               |
|                               |
---------------------------------

```

行内添加多列:

```php
$content->row(function(Row $row) {
    $row->column(4, 'foo');
    $row->column(4, 'bar');
    $row->column(4, 'baz');
});
----------------------------------
|foo       |bar       |baz       |
|          |          |          |
|          |          |          |
|          |          |          |
|          |          |          |
|          |          |          |
----------------------------------


$content->row(function(Row $row) {
    $row->column(4, 'foo');
    $row->column(8, 'bar');
});
----------------------------------
|foo       |bar                  |
|          |                     |
|          |                     |
|          |                     |
|          |                     |
|          |                     |
----------------------------------

```

列中添加行:

```php
$content->row(function (Row $row) {

    $row->column(4, 'xxx');

    $row->column(8, function (Column $column) {
        $column->row('111');
        $column->row('222');
        $column->row('333');
    });
});
----------------------------------
|xxx       |111                  |
|          |---------------------|
|          |222                  |
|          |---------------------|
|          |333                  |
|          |                     |
----------------------------------


```


列中添加行, 行内再添加列:

```php
$content->row(function (Row $row) {

    $row->column(4, 'xxx');

    $row->column(8, function (Column $column) {
        $column->row('111');
        $column->row('222');
        $column->row(function(Row $row) {
            $row->column(6, '444');
            $row->column(6, '555');
        });
    });
});
----------------------------------
|xxx       |111                  |
|          |---------------------|
|          |222                  |
|          |---------------------|
|          |444      |555        |
|          |         |           |
----------------------------------
```



================================================
FILE: docs/zh/custom-authentication.md
================================================
# 自定义登陆

如果不使用`laravel-admin`内置的认证登陆逻辑,可以参考下面的方式自定义登陆认证逻辑

首先要先定义一个`user provider`,用来获取用户身份, 比如`app/Providers/CustomUserProvider.php`:

```php
<?php

namespace App\Providers;

use Illuminate\Contracts\Auth\Authenticatable;
use Illuminate\Contracts\Auth\UserProvider;

class CustomUserProvider implements UserProvider
{
    public function retrieveById($identifier)
    {}

    public function retrieveByToken($identifier, $token)
    {}

    public function updateRememberToken(Authenticatable $user, $token)
    {}

    public function retrieveByCredentials(array $credentials)
    {
        // 用$credentials里面的用户名密码去获取用户信息,然后返回Illuminate\Contracts\Auth\Authenticatable对象
    }

    public function validateCredentials(Authenticatable $user, array $credentials)
    {
        // 用$credentials里面的用户名密码校验用户,返回true或false
    }
}

```

在方法`retrieveByCredentials`和`validateCredentials`中, 传入的`$credentials`就是登陆页面提交的用户名和密码数组,然后你可以使用`$credentials`去实现自己的登陆逻辑

Interface `Illuminate\Contracts\Auth\Authenticatable`的定义如下:
```php
<?php

namespace Illuminate\Contracts\Auth;

interface Authenticatable {

    public function getAuthIdentifierName();
    public function getAuthIdentifier();
    public function getAuthPassword();
    public function getRememberToken();
    public function setRememberToken($value);
    public function getRememberTokenName();

}
```

上面interface每个方法的解释参考[adding-custom-user-providers](https://laravel.com/docs/5.5/authentication#adding-custom-user-providers)

定义好了`User provider`之后,打开`app/Providers/AuthServiceProvider.php`注册它:

```php
<?php

namespace App\Providers;

use Illuminate\Support\Facades\Auth;
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;

class AuthServiceProvider extends ServiceProvider
{
    /**
     * Register any application authentication / authorization services.
     *
     * @return void
     */
    public function boot()
    {
        $this->registerPolicies();

        Auth::provider('custom', function ($app, array $config) {
            
            // Return an instance of Illuminate\Contracts\Auth\UserProvider...
            return new CustomUserProvider();
        });
    }
}
```

最后修改一下配置,打开`config/admin.php`,找到`auth`部分修改:

```php
    'auth' => [
        'guards' => [
            'admin' => [
                'driver' => 'session',
                'provider' => 'admin',
            ]
        ],

        // 修改下面
        'providers' => [
            'admin' => [
                'driver' => 'custom',
            ]
        ],
    ],
```
这样就完成了自定义登陆认证的逻辑,自定义登陆算是laravel中比较复杂的部分,需要开发者有耐心的一步步调试完成。



================================================
FILE: docs/zh/custom-chart.md
================================================
# 自定义图表

`laravel-admin 1.5`已经移除了所有的图表组件,如果要在页面中加入图表组件,可以参考下面的流程

用`chartjs`举例,首先要下载[chartjs](http://chartjs.org/),放到public目录下面,比如放在`public/vendor/chartjs`目录

然后在`app/Admin/bootstrap.php`引入组件:
```php
use Encore\Admin\Facades\Admin;

Admin::js('/vendor/chartjs/dist/Chart.min.js');

```

新建视图文件 `resources/views/admin/charts/bar.blade.php`

```php
<canvas id="myChart" width="400" height="400"></canvas>
<script>

$(function () {
   var ctx = document.getElementById("myChart").getContext('2d');
   var myChart = new Chart(ctx, {
       type: 'bar',
       data: {
           labels: ["Red", "Blue", "Yellow", "Green", "Purple", "Orange"],
           datasets: [{
               label: '# of Votes',
               data: [12, 19, 3, 5, 2, 3],
               backgroundColor: [
                   'rgba(255, 99, 132, 0.2)',
                   'rgba(54, 162, 235, 0.2)',
                   'rgba(255, 206, 86, 0.2)',
                   'rgba(75, 192, 192, 0.2)',
                   'rgba(153, 102, 255, 0.2)',
                   'rgba(255, 159, 64, 0.2)'
               ],
               borderColor: [
                   'rgba(255,99,132,1)',
                   'rgba(54, 162, 235, 1)',
                   'rgba(255, 206, 86, 1)',
                   'rgba(75, 192, 192, 1)',
                   'rgba(153, 102, 255, 1)',
                   'rgba(255, 159, 64, 1)'
               ],
               borderWidth: 1
           }]
       },
       options: {
           scales: {
               yAxes: [{
                   ticks: {
                       beginAtZero:true
                   }
               }]
           }
       }
   }); 
});
</script>
```

然后就可以在页面的任何地方引入这个图表视图了:

```php
public function index()
{
    return Admin::content(function (Content $content) {

        $content->header('chart');
        $content->description('.....');
        
        $content->body(view('admin.charts.bar'));
    });
}

```

按照上面的方式可以引入任意图表库,多图表页面的布局,参考[视图布局](/zh/layout.md)

================================================
FILE: docs/zh/custom-navbar.md
================================================
# 自定义头部导航条

从版本`1.5.6`开始,可以在顶部导航条上添加html元素了,  打开`app/Admin/bootstrap.php`:
```php
use Encore\Admin\Facades\Admin;

Admin::navbar(function (\Encore\Admin\Widgets\Navbar $navbar) {

    $navbar->left('html...');

    $navbar->right('html...');

});
```

`left`和`right`方法分别用来在头部的左右两边添加内容,方法参数可以是任何可以渲染的对象(实现了`Htmlable`、`Renderable`接口或者包含`__toString()`方法的对象)或字符串

## 左侧添加示例

举个例子,比如在左边添加一个搜索条,先创建一个blade视图`resources/views/search-bar.blade.php`:
```php
<style>

.search-form {
    width: 250px;
    margin: 10px 0 0 20px;
    border-radius: 3px;
    float: left;
}
.search-form input[type="text"] {
    color: #666;
    border: 0;
}

.search-form .btn {
    color: #999;
    background-color: #fff;
    border: 0;
}

</style>

<form action="/admin/posts" method="get" class="search-form" pjax-container>
    <div class="input-group input-group-sm ">
        <input type="text" name="title" class="form-control" placeholder="Search...">
        <span class="input-group-btn">
            <button type="submit" name="search" id="search-btn" class="btn btn-flat"><i class="fa fa-search"></i></button>
          </span>
    </div>
</form>
```
然后加入头部导航条:
```php
$navbar->left(view('search-bar'));
```

## 右侧添加示例

导航右侧只能添加`<li>`标签, 比如要添加一些提示图标,新建渲染对象`app/Admin/Extensions/Nav/Links.php`
```php
<?php

namespace App\Admin\Extensions\Nav;

class Links
{
    public function __toString()
    {
        return <<<HTML

<li>
    <a href="#">
      <i class="fa fa-envelope-o"></i>
      <span class="label label-success">4</span>
    </a>
</li>

<li>
    <a href="#">
      <i class="fa fa-bell-o"></i>
      <span class="label label-warning">7</span>
    </a>
</li>

<li>
    <a href="#">
      <i class="fa fa-flag-o"></i>
      <span class="label label-danger">9</span>
    </a>
</li>

HTML;
    }
}
```

然后加入头部导航条:
```php
$navbar->right(new \App\Admin\Extensions\Nav\Links());
```

或者用下面的html加入下拉菜单:
```html
<li class="dropdown notifications-menu">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
  <i class="fa fa-bell-o"></i>
  <span class="label label-warning">10</span>
</a>
<ul class="dropdown-menu">
  <li class="header">You have 10 notifications</li>
  <li>
    <!-- inner menu: contains the actual data -->
    <ul class="menu">
      <li>
        <a href="#">
          <i class="fa fa-users text-aqua"></i> 5 new members joined today
        </a>
      </li>
      <li>
        <a href="#">
          <i class="fa fa-warning text-yellow"></i> Very long description here that may not fit into the
          page and may cause design problems
        </a>
      </li>
      <li>
        <a href="#">
          <i class="fa fa-users text-red"></i> 5 new members joined
        </a>
      </li>

      <li>
        <a href="#">
          <i class="fa fa-shopping-cart text-green"></i> 25 sales made
        </a>
      </li>
      <li>
        <a href="#">
          <i class="fa fa-user text-red"></i> You changed your username
        </a>
      </li>
    </ul>
  </li>
  <li class="footer"><a href="#">View all</a></li>
</ul>
</li>
```

更多的组件可以参考[Bootstrap](https://getbootstrap.com/)

================================================
FILE: docs/zh/extension-api-tester.md
================================================
# Laravel API测试

`api-tester`是专门针对`laravel`开发的API测试工具,能够帮助你像`postman`一样测试你的laravel API。

![wx20170809-164424](https://user-images.githubusercontent.com/1479100/29112946-1e32971c-7d22-11e7-8cc0-5b7ad25d084e.png)

## 安装

```shell
$ composer require laravel-admin-ext/api-tester -vvv

$ php artisan vendor:publish --tag=api-tester

```
然后运行下面的命令导入菜单和权限(也可以手动添加)

```shell
$ php artisan admin:import api-tester
```

然后就能在后台的左侧菜单找到入口链接,`http://localhost/admin/api-tester`。

## 使用

打开`routes/api.php`试着添加一个api:

```php
Route::get('test', function () {
    return 'hello world';
});
```

打开`api-tester`页面,就能在左侧看到`api/test`, 选择它然后点击右侧的`Send`,就能请求这个API,下面会输出请求结果, 

### Login as

`Login as`填写你要登陆的用户的id, 就可以以这个用户的身份登陆来请求API,加入下面的API:

```php
use Illuminate\Http\Request;

Route::middleware('auth:api')->get('user', function (Request $request) {
    return $request->user();
});
```
`Login as`填写用户ID,请求接口后就能返回这个用户的模型

### Parameters

用来填写接口的请求参数,类型可以是字符串或者文件, 添加下面的API:

```php
use Illuminate\Http\Request;

Route::get('parameters', function (Request $request) {
    return $request->all();
});
```

然后填写参数可以看到效果

================================================
FILE: docs/zh/extension-config.md
================================================
# 配置管理

这个工具将配置数据存在数据库中,然后在能在Laravel中能像普通配置一样使用

![wx20170810-100226](https://user-images.githubusercontent.com/1479100/29151322-0879681a-7db3-11e7-8005-03310686c884.png)

## 安装

```
$ composer require laravel-admin-ext/config

$ php artisan migrate
```

打开`app/Providers/AppServiceProvider.php`, 在`boot`方法中添加`Config::load();`:

```php
<?php

namespace App\Providers;

use Encore\Admin\Config\Config;
use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
    public function boot()
    {
        Config::load();  // 加上这一行
    }
}
```

最后运行命令导入菜单和权限(也可以手动添加)

```
$ php artisan admin:import config
```

然后打开`http://localhost/admin/config`访问.

## 使用

打开`http://localhost/admin/config`,添加一项配置,填写`Name`、`Value`、和`Description`, `Name`是配置的`key`,`Description`是选填的配置注释

最后在程序中使用`config($key)`来获取配置,注意,配置的`Name`不要和`config`目录中的已存在的配置冲突,不然会覆盖掉系统的配置



================================================
FILE: docs/zh/extension-helpers.md
================================================
# 帮助工具

在最新的版本中新增了面向开发人员的帮助工具,能在开发中提供帮助提高效率,目前提供`脚手架`,`数据库命令行`和`artisan命令行`三个工具,如果有更好的其它实用工具的想法,欢迎提供建议。

安装:
```php
composer require laravel-admin-ext/helpers

php artisan admin:import helpers
```

> 工具的部分功能会在项目中创建或删除文件,可能会出现文件或目录权限的问题,这个问题需要自行解决。
> 另外部分数据库和artisan命令无法在web环境下使用。

## 脚手架工具

脚手架工具能帮你一键生成控制器、模型、迁移文件,并运行迁移文件,访问`http://localhost/admin/helpers/scaffold`打开。

其中设置迁移表结构的时候,主键字段是自动生成的不需要填写。

![qq20170220-2](https://cloud.githubusercontent.com/assets/1479100/23147949/cbf03e84-f81d-11e6-82b7-d7929c3033a0.png)

## 数据库命令行

数据库命令行工具的web集成,目前支持`mysql`、`mongodb` 和 `redis`,访问`http://localhost/admin/helpers/terminal/database`打开。

在右上角的`select`选择框切换数据库连接,然后在底部的输入框输入对应数据库的查询语句然后回车,就能得到查询结果:

![qq20170220-3](https://cloud.githubusercontent.com/assets/1479100/23147951/ce08e5d6-f81d-11e6-8b20-605e8cd06167.png)

实用方式和终端上操作数据库是一致的,可以运行所选择数据库的所支持的查询语句。

## artisan命令行工具

`Laravel`的`artisan`命令的web实现,可以在上面运行artisan命令,访问`http://localhost/admin/helpers/terminal/artisan`打开。

![qq20170220-1](https://cloud.githubusercontent.com/assets/1479100/23147963/da8a5d30-f81d-11e6-97b9-239eea900ad3.png)

## 路由列表

这个工具能用用比较直观的展现出系统的所有路由,包括路由的uri、方法和中间件等,还能查询路由。访问`http://localhost/admin/helpers/routes`打开。

![helpers_routes](https://user-images.githubusercontent.com/1479100/30899066-e8bdd5ca-a390-11e7-809d-4ceccd0da27f.png)


================================================
FILE: docs/zh/extension-media-manager.md
================================================
# 文件管理

文件管理是一个对本地文件的可视化管理的工具

![wx20170809-170104](https://user-images.githubusercontent.com/1479100/29113762-99886c32-7d24-11e7-922d-5981a5849c7a.png)

## 安装

```
$ composer require laravel-admin-ext/media-manager -vvv

$ php artisan admin:import media-manager
```

## 配置

打开`config/admin.php`指定你要管理的disk

```php

    'extensions' => [

        'media-manager' => [
            'disk' => 'public'   // 指向config/filesystem.php中设置的disk
        ],
    ],

```

`disk`为`config/filesystem.php`中设置的本地disk,然后打开`http://localhost/admin/media`访问.

注意如果要预览disk中的图片,必须在disk中设置访问url前缀: 


`config/filesystem.php`:
```php

    'disks' => [

        'public' => [
            'driver' => 'local',
            'root' => storage_path('app/public'),
            'url' => env('APP_URL').'/storage',    // 设置文件访问url
            'visibility' => 'public',
        ],
        
        ...
    ]
```



================================================
FILE: docs/zh/extension-scheduling.md
================================================
# 定时任务

这个工具是管理Laravel计划任务的web管理页面

![wx20170810-101048](https://user-images.githubusercontent.com/1479100/29151552-8affc0b2-7db4-11e7-932a-a10d8a42ec50.png)

## 安装

```
$ composer require laravel-admin-ext/scheduling -vvv

$ php artisan admin:import scheduling
```

打开`http://localhost/admin/scheduling`访问。

## 添加任务

打开`app/Console/Kernel.php`, 试着添加两项计划任务:

```php
class Kernel extends ConsoleKernel
{
    protected function schedule(Schedule $schedule)
    {
        $schedule->command('inspire')->everyTenMinutes();
        
        $schedule->command('route:list')->dailyAt('02:00');
    }
}

```

然后就能在后台看到这两项计划任务的详细情况,也能直接运行这两个计划任务。


================================================
FILE: docs/zh/installation.md
================================================
# 安装

> 当前版本(1.5)需要安装`PHP 7+`和`Laravel 5.5`, 如果你使用更早的版本,请参考文档: [1.4](http://laravel-admin.org/docs/v1.4/#/zh/) 

首先确保安装好了`laravel`,并且数据库连接设置正确。

```
composer require encore/laravel-admin "1.5.*"
```

然后运行下面的命令来发布资源:

```
php artisan vendor:publish --provider="Encore\Admin\AdminServiceProvider"
```

在该命令会生成配置文件`config/admin.php`,可以在里面修改安装的地址、数据库连接、以及表名,建议都是用默认配置不修改。

然后运行下面的命令完成安装:
```
php artisan admin:install
```

启动服务后,在浏览器打开 `http://localhost/admin/` ,使用用户名 `admin` 和密码 `admin`登陆.

## 生成的文件

安装完成之后,会在项目目录中生成以下的文件:

### 配置文件

安装完成之后,`laravel-admin`所有的配置都在`config/admin.php`文件中。

### 后台项目文件
安装完成之后,后台的安装目录为`app/Admin`,之后大部分的后台开发编码工作都是在这个目录下进行。

```
app/Admin
├── Controllers
│   ├── ExampleController.php
│   └── HomeController.php
├── bootstrap.php
└── routes.php
```

`app/Admin/routes.php`文件用来配置后台路由。

`app/Admin/bootstrap.php` 是`laravel-admin`的启动文件, 使用方法请参考文件里面的注释.

`app/Admin/Controllers`目录用来存放后台控制器文件,该目录下的`HomeController.php`文件是后台首页的显示控制器,`ExampleController.php`为实例文件。

### 静态文件

后台所需的前端静态文件在`/public/vendor/laravel-admin`目录下.

================================================
FILE: docs/zh/model-form-callback.md
================================================
# 模型表单回调

`model-form`目前提供了两个方法来接收回调函数:

```php
//保存前回调
$form->saving(function (Form $form) {
    //...
});

//保存后回调
$form->saved(function (Form $form) {
    //...
});

```
可以从回调参数`$form`中获取当前提交的表单数据:

```php
$form->saving(function (Form $form) {

    dump($form->username);

});

```

获取获取模型中的数据
```php
$form->saved(function (Form $form) {

    $form->model()->id;

});
```

可以直接在回调中返回`Symfony\Component\HttpFoundation\Response`的实例,来跳转或进入页面:
```php
$form->saving(function (Form $form) {

    // 返回一个简单response
    return response('xxxx');

});

$form->saving(function (Form $form) {

    // 跳转页面
    return redirect('/admin/users');

});

$form->saving(function (Form $form) {

    // 抛出异常
    throw new \Exception('出错啦。。。');

});

```

返回错误或者成功信息在页面上:

```php
use Illuminate\Support\MessageBag;

// 抛出错误信息
$form->saving(function ($form) {

    $error = new MessageBag([
        'title'   => 'title...',
        'message' => 'message....',
    ]);

    return back()->with(compact('error'));
});

// 抛出成功信息
$form->saving(function ($form) {

    $success = new MessageBag([
        'title'   => 'title...',
        'message' => 'message....',
    ]);

    return back()->with(compact('success'));
});

```

================================================
FILE: docs/zh/model-form-field-management.md
================================================
# 组件管理

## 移除已有组件

form表单内置的`map`和`editor`组件通过cdn的方式引用了前端文件,如果网络方面有问题,可以通过下面的方式将它们移除

找到文件`app/Admin/bootstrap.php`,如果文件不存在,请更新`laravel-admin`,然后新建该文件

```php

<?php

use Encore\Admin\Form;

Form::forget('map');
Form::forget('editor');

// or

Form::forget(['map', 'editor']);

```

这样就去掉了这两个组件,可以通过该方式去掉其它组件。


## 扩展自定义组件


### 集成富文本编辑器wangEditor

[wangEditor](http://www.wangeditor.com/)是一个优秀的国产的轻量级富文本编辑器,如果`laravel-admin`自带的基于`ckeditor`的编辑器组件使用上有问题,可以通过下面的步骤可以集成它,并覆盖掉`ckeditor`:

先下载前端库文件[wangEditor](https://github.com/wangfupeng1988/wangEditor/releases),解压到目录`public/vendor/wangEditor-3.0.9`。

然后新建组件类`app/Admin/Extensions/WangEditor.php`。

```php

<?php

namespace App\Admin\Extensions;

use Encore\Admin\Form\Field;

class WangEditor extends Field
{
    protected $view = 'admin.wang-editor';

    protected static $css = [
        '/vendor/wangEditor-3.0.9/release/wangEditor.min.css',
    ];

    protected static $js = [
        '/vendor/wangEditor-3.0.9/release/wangEditor.min.js',
    ];

    public function render()
    {
        $name = $this->formatName($this->column);

        $this->script = <<<EOT

var E = window.wangEditor
var editor = new E('#{$this->id}');
editor.customConfig.zIndex = 0
editor.customConfig.uploadImgShowBase64 = true
editor.customConfig.onchange = function (html) {
    $('input[name=$name]').val(html);
}
editor.create()

EOT;
        return parent::render();
    }
}

```

新建视图文件`resources/views/admin/wang-editor.blade.php`:
```php
<div class="form-group {!! !$errors->has($label) ?: 'has-error' !!}">

    <label for="{{$id}}" class="col-sm-2 control-label">{{$label}}</label>

    <div class="{{$viewClass['field']}}">

        @include('admin::form.error')

        <div id="{{$id}}" style="width: 100%; height: 100%;">
            <p>{!! old($column, $value) !!}</p>
        </div>

        <input type="hidden" name="{{$name}}" value="{{ old($column, $value) }}" />

    </div>
</div>
```

然后注册进`laravel-admin`,在`app/Admin/bootstrap.php`中添加以下代码:

```php

<?php

use App\Admin\Extensions\WangEditor;
use Encore\Admin\Form;

Form::extend('editor', WangEditor::class);

```

调用:

```

$form->editor('body');

```

### 集成富文本编辑器ckeditor

先下载[ckeditor](http://ckeditor.com/download) 并解压到/public目录,比如放在`/public/packages/`目录下。

然后新建扩展文件`app/Admin/Extensions/Form/CKEditor.php`:
```php
<?php

namespace App\Admin\Extensions\Form;

use Encore\Admin\Form\Field;

class CKEditor extends Field
{
    public static $js = [
        '/packages/ckeditor/ckeditor.js',
        '/packages/ckeditor/adapters/jquery.js',
    ];

    protected $view = 'admin.ckeditor';

    public function render()
    {
        $this->script = "$('textarea.{$this->getElementClass()}').ckeditor();";

        return parent::render();
    }
}
```

新建view `resources/views/admin/ckeditor.blade.php`:
```php
<div class="form-group {!! !$errors->has($errorKey) ?: 'has-error' !!}">

    <label for="{{$id}}" class="col-sm-2 control-label">{{$label}}</label>

    <div class="col-sm-6">

        @include('admin::form.error')

        <textarea class="form-control {{ $class }}" name="{{$name}}" placeholder="{{ $placeholder }}" {!! $attributes !!} >{{ old($column, $value) }}</textarea>

        @include('admin::form.help-block')

    </div>
</div>

```

然后在`app/Admin/bootstrap.php`中引入扩展:
```php
use App\Admin\Extensions\Form\CKEditor;
use Encore\Admin\Form;

Form::extend('ckeditor', CKEditor::class);
```

然后就能在form中使用了:
```php
$form->ckeditor('content');
```

### 集成PHP editor


通过下面的步骤来扩展一个基于[codemirror](http://codemirror.net/index.html)的PHP代码编辑器,效果参考[PHP mode](http://codemirror.net/mode/php/)。

先将[codemirror](http://codemirror.net/codemirror.zip)库下载并解压到前端资源目录下,比如放在`public/packages/codemirror-5.20.2`目录下。

新建组件类`app/Admin/Extensions/PHPEditor.php`:

```php
<?php

namespace App\Admin\Extensions;

use Encore\Admin\Form\Field;

class PHPEditor extends Field
{
    protected $view = 'admin.php-editor';

    protected static $css = [
        '/packages/codemirror-5.20.2/lib/codemirror.css',
    ];

    protected static $js = [
        '/packages/codemirror-5.20.2/lib/codemirror.js',
        '/packages/codemirror-5.20.2/addon/edit/matchbrackets.js',
        '/packages/codemirror-5.20.2/mode/htmlmixed/htmlmixed.js',
        '/packages/codemirror-5.20.2/mode/xml/xml.js',
        '/packages/codemirror-5.20.2/mode/javascript/javascript.js',
        '/packages/codemirror-5.20.2/mode/css/css.js',
        '/packages/codemirror-5.20.2/mode/clike/clike.js',
        '/packages/codemirror-5.20.2/mode/php/php.js',
    ];

    public function render()
    {
        $this->script = <<<EOT

CodeMirror.fromTextArea(document.getElementById("{$this->id}"), {
    lineNumbers: true,
    mode: "text/x-php",
    extraKeys: {
        "Tab": function(cm){
            cm.replaceSelection("    " , "end");
        }
     }
});

EOT;
        return parent::render();

    }
}

```

>类中的静态资源也同样可以从外部引入,参考[Editor.php](https://github.com/z-song/laravel-admin/blob/1.3/src/Form/Field/Editor.php)

创建视图`resources/views/admin/php-editor.blade.php`:

```php

<div class="form-group {!! !$errors->has($label) ?: 'has-error' !!}">

    <label for="{{$id}}" class="col-sm-2 control-label">{{$label}}</label>

    <div class="col-sm-6">

        @include('admin::form.error')

        <textarea class="form-control" id="{{$id}}" name="{{$name}}" placeholder="{{ trans('admin::lang.input') }} {{$label}}" {!! $attributes !!} >{{ old($column, $value) }}</textarea>
    </div>
</div>

```

最后找到文件`app/Admin/bootstrap.php`,如果文件不存在,请更新`laravel-admin`,然后新建该文件,添加下面代码:

```
<?php

use App\Admin\Extensions\PHPEditor;
use Encore\Admin\Form;

Form::extend('php', PHPEditor::class);

```

这样就能在[model-form](/zh/model-form.md)中使用PHP编辑器了:

```

$form->php('code');

```

通过这种方式,可以添加任意你想要添加的form组件。

================================================
FILE: docs/zh/model-form-fields.md
================================================
# 表单组件

在`model-form`中内置了大量的form组件来帮助你快速的构建form表单

## 公共方法

### 设置保存值
```php
$form->text('title')->value('text...');
```

### 设置默认值
```php
$form->text('title')->default('text...');
```

### 设置help信息
```php
$form->text('title')->help('help...');
```

### 设置属性
```php
$form->text('title')->attribute(['data-title' => 'title...']);

$form->text('title')->attribute('data-title', 'title...');
```

### 设置placeholder
```php
$form->text('title')->placeholder('请输入。。。');
```

### model-form-tab

如果表单元素太多,会导致form页面太长, 这种情况下可以使用tab来分隔form:

```php

$form->tab('Basic info', function ($form) {
    
    $form->text('username');
    $form->email('email');
    
})->tab('Profile', function ($form) {
                       
   $form->image('avatar');
   $form->text('address');
   $form->mobile('phone');
   
})->tab('Jobs', function ($form) {
                         
     $form->hasMany('jobs', function () {
         $form->text('company');
         $form->date('start_date');
         $form->date('end_date');
     });

  })

```

## 文本输入框

```php
$form->text($column, [$label]);

// 添加提交验证规则
$form->text($column, [$label])->rules('required|min:10');
```

## select选择框
```php
$form->select($column[, $label])->options([1 => 'foo', 2 => 'bar', 'val' => 'Option name']);
```

或者从api中获取选项列表:
```php
$form->select($column[, $label])->options('/api/users');

// 使用ajax并显示所选项目

$form->select($column[, $label])->options(Model::class)->ajax('/api/users');

// 或指定名称和ID

$form->select($column[, $label])->options(Model::class, 'name', 'id')->ajax('/api/users');
```
其中api接口的格式必须为下面格式:
```php
[
    {
        "id": 9,
        "text": "xxx"
    },
    {
        "id": 21,
        "text": "xxx"
    },
    ...
]
```

如果选项过多,可通过ajax方式动态分页载入选项:

```php
$form->select('user_id')->options(function ($id) {
    $user = User::find($id);

    if ($user) {
        return [$user->id => $user->name];
    }
})->ajax('/admin/api/users');
```

<sub>注:如果你修改了`config/admin.php`配置文件中`route.prefix`的值,此处的接口路由应该修改为`config('admin.route.prefix').'/api/users'`。</sub>

API `/admin/api/users`接口的代码:

```php
public function users(Request $request)
{
    $q = $request->get('q');

    return User::where('name', 'like', "%$q%")->paginate(null, ['id', 'name as text']);
}

```
接口返回的数据结构为
```
{
    "total": 4,
    "per_page": 15,
    "current_page": 1,
    "last_page": 1,
    "next_page_url": null,
    "prev_page_url": null,
    "from": 1,
    "to": 3,
    "data": [
        {
            "id": 9,
            "text": "xxx"
        },
        {
            "id": 21,
            "text": "xxx"
        },
        {
            "id": 42,
            "text": "xxx"
        },
        {
            "id": 48,
            "text": "xxx"
        }
    ]
}
```

### select 联动

`select`组件支持父子关系的单向联动:
```php
$form->select('province')->options(...)->load('city', '/api/city');

$form->select('city');

```

其中`load('city', '/api/city');`的意思是,在当前select的选项切换之后,会把当前选项的值通过参数`q`, 调用接口`/api/city`,并把api返回的数据填充为city选择框的选项,其中api`/api/city`返回的数据格式必须符合:

```php
[
    {
        "id": 9,
        "text": "xxx"
    },
    {
        "id": 21,
        "text": "xxx"
    },
    ...
]
```
控制器action的代码示例如下:

```php
public function city(Request $request)
{
    $provinceId = $request->get('q');

    return ChinaArea::city()->where('parent_id', $provinceId)->get(['id', DB::raw('name as text')]);
}
```

## 多选框

```php
$form->multipleSelect($column[, $label])->options([1 => 'foo', 2 => 'bar', 'val' => 'Option name']);

// 使用ajax并显示所选项目:

$form->multipleSelect($column[, $label])->options(Model::class)->ajax('ajax_url');

// 或指定名称和ID

$form->multipleSelect($column[, $label])->options(Model::class, 'name', 'id')->ajax('ajax_url');
```

多选框可以处理两种情况,第一种是`ManyToMany`的关系。

```

class Post extends Models
{
    public function tags()
    {
        return $this->belongsToMany(Tag::class);
    }
}

$form->multipleSelect('tags')->options(Tag::all()->pluck('name', 'id'));

```

第二种是将选项数组存储到单字段中,如果字段是字符串类型,那就需要在模型里面为该字段定义[访问器和修改器](https://laravel.com/docs/5.5/eloquent-mutators)来存储和读取了。

如果选项过多,可通过ajax方式动态分页载入选项:

```php
$form->select('friends')->options(function ($ids) {

    return User::find($ids)->pluck('name', 'id');
    
})->ajax('/admin/api/users');
```

<sub>注:如果你修改了`config/admin.php`配置文件中`route.prefix`的值,此处的接口路由应该修改为`config('admin.route.prefix').'/api/users'`。</sub>

API `/admin/api/users`接口的代码:

```php
public function users(Request $request)
{
    $q = $request->get('q');

    return User::where('name', 'like', "%$q%")->paginate(null, ['id', 'name as text']);
}

```
接口返回的数据结构为
```
{
    "total": 4,
    "per_page": 15,
    "current_page": 1,
    "last_page": 1,
    "next_page_url": null,
    "prev_page_url": null,
    "from": 1,
    "to": 3,
    "data": [
        {
            "id": 9,
            "text": "xxx"
        },
        {
            "id": 21,
            "text": "xxx"
        },
        {
            "id": 42,
            "text": "xxx"
        },
        {
            "id": 48,
            "text": "xxx"
        }
    ]
}
```

## listbox

使用方法和`multipleSelect`类似

```php
$form->listbox($column[, $label])->options([1 => 'foo', 2 => 'bar', 'val' => 'Option name']);
```

## textarea输入框
```php
$form->textarea($column[, $label])->rows(10);
```

## radio选择
```php
$form->radio($column[, $label])->options(['m' => 'Female', 'f'=> 'Male'])->default('m');

// 竖排
$form->radio($column[, $label])->options(['m' => 'Female', 'f'=> 'Male'])->stacked();
```

## checkbox选择

`checkbox`能处理两种数据存储情况,参考[多选框](#多选框)

`options()`方法用来设置选择项:
```php
$form->checkbox($column[, $label])->options([1 => 'foo', 2 => 'bar', 'val' => 'Option name']);

// 竖排
$form->checkbox($column[, $label])->options([1 => 'foo', 2 => 'bar', 'val' => 'Option name'])->stacked();
```

## email个数输入框
```php
$form->email($column[, $label]);
```

## 密码输入框
```php
$form->password($column[, $label]);
```

## url输入框
```php
$form->url($column[, $label]);
```

## ip输入框
```php
$form->ip($column[, $label]);
```

## 电话号码输入框
```php
$form->mobile($column[, $label])->options(['mask' => '999 9999 9999']);
```

## 颜色选择框
```php
$form->color($column[, $label])->default('#ccc');
```

## 时间输入框
```php
$form->time($column[, $label]);

// 设置时间格式,更多格式参考http://momentjs.com/docs/#/displaying/format/
$form->time($column[, $label])->format('HH:mm:ss');
```

## 日期输入框
```php
$form->date($column[, $label]);

// 设置日期格式,更多格式参考http://momentjs.com/docs/#/displaying/format/
$form->date($column[, $label])->format('YYYY-MM-DD');
```

## 日期时间输入框
```php
$form->datetime($column[, $label]);

// 设置日期格式,更多格式参考http://momentjs.com/docs/#/displaying/format/
$form->datetime($column[, $label])->format('YYYY-MM-DD HH:mm:ss');
```

## 时间范围选择框
`$startTime`、`$endTime`为开始和结束时间字段:
```php
$form->timeRange($startTime, $endTime, 'Time Range');
```

## 日期范围选框
`$startDate`、`$endDate`为开始和结束日期字段:
```php
$form->dateRange($startDate, $endDate, 'Date Range');
```

## 时间日期范围选择框
`$startDateTime`、`$endDateTime`为开始和结束时间日期:
```php
$form->datetimeRange($startDateTime, $endDateTime, 'DateTime Range');
```

## 货币输入框
```php
$form->currency($column[, $label]);

// 设置单位符号
$form->currency($column[, $label])->symbol('¥');

```

## 数字输入框
```php
$form->number($column[, $label]);
```

## 比例输入框
```php
$form->rate($column[, $label]);
```

## 图片上传

使用图片上传功能之前需要先完成上传配置,请参考:[图片/文件上传](/zh/model-form-upload.md).

图片上传目录在文件`config/admin.php`中的`upload.image`中配置,如果目录不存在,需要创建该目录并开放写权限。

可以使用压缩、裁切、添加水印等各种方法,需要先安装[intervention/image](http://image.intervention.io/getting_started/installation).

更多使用方法请参考[[Intervention](http://image.intervention.io/getting_started/introduction)]:
```php
$form->image($column[, $label]);

// 修改图片上传路径和文件名
$form->image($column[, $label])->move($dir, $name);

// 剪裁图片
$form->image($column[, $label])->crop(int $width, int $height, [int $x, int $y]);

// 加水印
$form->image($column[, $label])->insert($watermark, 'center');

// 添加图片删除按钮
$form->image($column[, $label])->removable();

```

## 文件上传

使用图片上传功能之前需要先完成上传配置,请参考:[图片/文件上传](/zh/model-form-upload.md).

文件上传目录在文件`config/admin.php`中的`upload.file`中配置,如果目录不存在,需要创建该目录并开放写权限。
```php
$form->file($column[, $label]);

// 修改文件上传路径和文件名
$form->file($column[, $label])->move($dir, $name);

// 并设置上传文件类型
$form->file($column[, $label])->rules('mimes:doc,docx,xlsx');

// 添加文件删除按钮
$form->file($column[, $label])->removable();

```

## 多图/文件上传

```php
// 多图
$form->multipleImage($column[, $label]);

// 添加删除按钮
$form->multipleImage($column[, $label])->removable();

// 多文件
$form->multipleFile($column[, $label]);

// 添加删除按钮
$form->multipleFile($column[, $label])->removable();
```

多图/文件上传的时候提交的数据为文件路径数组,可以直接用mysql的`JSON`类型字段存储,如果用mongodb的话也能直接存储,但是如果用字符串类型来存储的话,就需要指定数据的存储格式了,
比如,如果要用json字符串来存储文件数据,就需要在模型中定义字段的mutator,比如字段名为`pictures`,定义mutator:
```php
public function setPicturesAttribute($pictures)
{
    if (is_array($pictures)) {
        $this->attributes['pictures'] = json_encode($pictures);
    }
}

public function getPicturesAttribute($pictures)
{
    return json_decode($pictures, true);
}
```
当然你也可以指定其它任何格式.

## 地图控件

地图组件引用了网络资源,默认关闭,如果要开启这个组件参考[form组件管理](/zh/model-form-field-management.md)

地图控件,用来选择经纬度,`$latitude`, `$longitude`为经纬度字段,`Laravel`的`locale`设置为`zh_CN`的时候使用腾讯地图,否则使用Google地图:
```php
$form->map($latitude, $longitude, $label);
```

## 滑动选择控件
可以用来数字类型字段的选择,比如年龄:
```php
$form->slider($column[, $label])->options(['max' => 100, 'min' => 1, 'step' => 1, 'postfix' => 'years old']);
```
更多options请参考:https://github.com/IonDen/ion.rangeSlider#settings

## 富文本编辑框

编辑器组件引用了网络资源,默认关闭,如果要开启这个组件参考[form组件管理](/zh/model-form-field-management.md).

```php
$form->editor($column[, $label]);
```

## 隐藏域
```php
$form->hidden($column);
```

## 开关选择
`on`和`off`对用开关的两个值`1`和`0`:
```php
$states = [
    'on'  => ['value' => 1, 'text' => '打开', 'color' => 'success'],
    'off' => ['value' => 0, 'text' => '关闭', 'color' => 'danger'],
];

$form->switch($column[, $label])->states($states);
```

## 显示字段
只显示字段,不做任何操作:
```php
$form->display($column[, $label]);


//更复杂的显示
$form->display($column[, $label])->with(function ($value) {
    return "<img src="$value" />";
});
```

## 分割线
```php
$form->divide();
```

## Html
插入html内容,参数可以是实现了`Htmlable`、`Renderable`或者实现了`__toString()`方法的类
```php
$form->html('你的html内容', $label = '');
```

## 标签
插入逗号(,)隔开的字符串`tags`
```php
$form->tags('keywords');
```

`tags`同样支持`ManyToMany`的关系,示例如下:

```php
$form->tags('tags', '文章标签')
    ->pluck('name', 'id') // name 为需要显示的 Tag 模型的字段,id 为主键
    ->options(Tag::all());// 下拉框选项
```

注意:处理`ManyToMany`关系时必须调用`pluck`方法,指定显示的字段名和主键。
此外 `options` 方法传入一个`Collection`对象时,`options`会自动调用该对象的`pluck`方法转为`['主键名' => '显示字段名']` 数组,作为下拉框选项。或者可以直接使用`['主键名' => '显示字段名']`这样的数组作为参数。

`tags`还支持`saving`方法用于处理提交的数据,示例如下:

```php
$form->tags('tags', '文章标签')
    ->pluck('name', 'id')
    ->options(Tag::all())
    ->saving(function ($value) {
        return $value;
    });
```

`saving` 方法接收一个「参数为 tags 的提交值,返回值为修改后的 tags 提交值」的闭包,可以用于实现自动创建新 tag 或其它功能。

## 图标
选择`font-awesome`图标
```php
$form->icon('icon');
```

## 一对多

一对多内嵌表格,用于处理一对多的关系,下面是个简单的例子:

有两张表是一对多关系:

```sql
CREATE TABLE `demo_painters` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `username` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `bio` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

CREATE TABLE `demo_paintings` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `painter_id` int(10) unsigned NOT NULL,
  `title` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `body` text COLLATE utf8_unicode_ci NOT NULL,
  `completed_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  PRIMARY KEY (`id`),
  KEY painter_id (`painter_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
```

表的模型为:
```php
<?php

namespace App\Models\Demo;

use Illuminate\Database\Eloquent\Model;

class Painter extends Model
{
    public function paintings()
    {
        return $this->hasMany(Painting::class, 'painter_id');
    }
}

<?php

namespace App\Models\Demo;

use Illuminate\Database\Eloquent\Model;

class Painting extends Model
{
    protected $fillable = ['title', 'body', 'completed_at'];

    public function painter()
    {
        return $this->belongsTo(Painter::class, 'painter_id');
    }
}
```

构建表单代码如下:
```php
$form->display('id', 'ID');

$form->text('username')->rules('required');
$form->textarea('bio')->rules('required');

$form->hasMany('paintings', function (Form\NestedForm $form) {
    $form->text('title');
    $form->image('body');
    $form->datetime('completed_at');
});

$form->display('created_at', 'Created At');
$form->display('updated_at', 'Updated At');

// 也可以设置label

$form->hasMany('paintings', '画作', function (Form\NestedForm $form) {
    
});
```

## 内嵌

用于处理`mysql`的`JSON`类型字段数据或者`mongodb`的`object`类型数据,也可以将多个field的数据值以`JSON`字符串的形式存储在`mysql`的字符串类型字段中

比如`orders`表中的`JSON`或字符串类型的`extra`字段,用来存储多个field的数据,先定义model:
```php
class Order extends Model
{
    protected $casts = [
        'extra' => 'json',
    ];
}
```
然后在form中使用:
```php
$form->embeds('extra', function ($form) {

    $form->text('extra1')->rules('required');
    $form->email('extra2')->rules('required');
    $form->mobile('extra3');
    $form->datetime('extra4');

    $form->dateRange('extra5', 'extra6', '范围')->rules('required');

});

// 自定义标题
$form->embeds('extra', '附加信息', function ($form) {
    ...
});
```

回调函数里面构建表单元素的方法调用和外面是一样的。


================================================
FILE: docs/zh/model-form-upload.md
================================================
# 文件/图片上传

[model-form](/zh/model-form.md)通过以下的调用来生成form元素。

```php
$form->file('file_column');
$form->image('image_column');
```

## 修改存储路径或文件名

```php

// 修改上传目录
$form->image('picture')->move('public/upload/image1/');

// 使用随机生成文件名 (md5(uniqid()).extension)
$form->image('picture')->uniqueName();

// 自定义文件名
$form->image('picture')->name(function ($file) {
    return 'test.'.$file->guessExtension();
});

```

[model-form](/zh/model-form.md)支持本地和云存储的文件上传

## 本地上传

先添加存储配置,`config/filesystems.php` 添加一项`disk`:

```php

'disks' => [
    ... ,

    'admin' => [
        'driver' => 'local',
        'root' => public_path('uploads'),
        'visibility' => 'public',
        'url' => env('APP_URL').'/uploads',
    ],
],

```

设置上传的路径为`public/uploads`(public_path('uploads'))。

然后选择上传的`disk`,打开`config/admin.php`找到:

```php
    
'upload'  => [

    'disk' => 'admin',

    'directory'  => [
        'image'  => 'images',
        'file'   => 'files',
    ]
],

```

将`disk`设置为上面添加的`admin`,`directory.image`和`directory.file`分别为用`$form->image($column)`和`$form->file($column)`上传的图片和文件的上传目录。


## 云盘上传

如果需要上传到云存储,需要安装对应`laravel storage`的适配器,拿七牛云存储举例

首先安装 [zgldh/qiniu-laravel-storage](https://github.com/zgldh/qiniu-laravel-storage)

同样配置好disk,在`config/filesystems.php` 添加一项:

```php
'disks' => [
    ... ,
    'qiniu' => [
        'driver'  => 'qiniu',
        'domains' => [
            'default'   => 'xxxxx.com1.z0.glb.clouddn.com', //你的七牛域名
            'https'     => 'dn-yourdomain.qbox.me',         //你的HTTPS域名
            'custom'    => 'static.abc.com',                //你的自定义域名
         ],
        'access_key'=> '',  //AccessKey
        'secret_key'=> '',  //SecretKey
        'bucket'    => '',  //Bucket名字
        'notify_url'=> '',  //持久化处理回调地址
        'url'       => 'http://of8kfibjo.bkt.clouddn.com/',  // 填写文件访问根url
    ],
],

```

然后修改`laravel-admin`的上传配置,打开`config/admin.php`找到:

```php

'upload'  => [

    'disk' => 'qiniu',

    'directory'  => [
        'image'  => 'image',
        'file'   => 'file',
    ],
],

```

`disk`选择上面配置的`qiniu`。


================================================
FILE: docs/zh/model-form-validation.md
================================================
表单验证
========

`model-form`使用laravel的验证规则来验证表单提交的数据:

```php
$form->text('title')->rules('required|min:3');

// 复杂的验证规则可以在回调里面实现
$form->text('title')->rules(function ($form) {
    
    // 如果不是编辑状态,则添加字段唯一验证
    if (!$id = $form->model()->id) {
        return 'unique:users,email_address';
    }
    
});

```

也可以给验证规则自定义错误提示消息:

```php
$form->text('code')->rules('required|regex:/^\d+$/|min:10', [
    'regex' => 'code必须全部为数字',
    'min'   => 'code不能少于10个字符',
]);
```

如果要允许字段为空,首先要在数据库的表里面对该字段设置为`NULL`,然后

```php
$form->text('title')->rules('nullable');
```

更多规则请参考[Validation](https://laravel.com/docs/5.5/validation).

================================================
FILE: docs/zh/model-form.md
================================================
# 基于数据模型的表单

`Encore\Admin\Form`类用于生成基于数据模型的表单,先来个例子,数据库中有`movies`表

```sql
CREATE TABLE `movies` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `title` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `director` int(10) unsigned NOT NULL,
  `describe` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `rate` tinyint unsigned NOT NULL,
  `released` enum(0, 1),
  `release_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

```

对应的数据模型为`App\Models\Movie`,下面的代码可以生成`movies`的数据表单:

```php

use App\Models\Movie;
use Encore\Admin\Form;
use Encore\Admin\Facades\Admin;

$grid = Admin::form(Movie::class, function(Form $form){

    // 显示记录id
    $form->display('id', 'ID');

    // 添加text类型的input框
    $form->text('title', '电影标题');
    
    $directors = [
        1 => 'John',
        2 => 'Smith',
        3 => 'Kate',
    ];
    
    $form->select('director', '导演')->options($directors);
    
    // 添加describe的textarea输入框
    $form->textarea('describe', '简介');
    
    // 数字输入框
    $form->number('rate', '打分');
    
    // 添加开关操作
    $form->switch('released', '发布?');
    
    // 添加日期时间选择框
    $form->datetime('release_at', '发布时间');
    
    // 两个时间显示
    $form->display('created_at', '创建时间');
    $form->display('updated_at', '修改时间');
});

```

## 自定义工具

表单右上角默认有返回和跳转列表两个按钮工具, 可以使用下面的方式修改它:

```php
$form->tools(function (Form\Tools $tools) {

    // 去掉返回按钮
    $tools->disableBackButton();
    
    // 去掉跳转列表按钮
    $tools->disableListButton();

    // 添加一个按钮, 参数可以是字符串, 或者实现了Renderable或Htmlable接口的对象实例
    $tools->add('<a class="btn btn-sm btn-danger"><i class="fa fa-trash"></i>&nbsp;&nbsp;delete</a>');
});
```

## 其它方法

去掉提交按钮:

```php
$form->disableSubmit();
```

去掉重置按钮:
```php
$form->disableReset();
```

忽略掉不需要保存的字段

```php
$form->ignore(['column1', 'column2', 'column3']);
```

设置宽度

```php
$form->setWidth(10, 2);
```

设置表单提交的action

```php
$form->setAction('admin/users');
```

## 关联模型


### 一对一
`users`表和`profiles`表通过`profiles.user_id`字段生成一对一关联

```sql

CREATE TABLE `users` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`email` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

CREATE TABLE `profiles` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`user_id` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`age` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`gender` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
```

对应的数据模分别为:

```php

class User extends Model
{
    public function profile()
    {
        return $this->hasOne(Profile::class);
    }
}

class Profile extends Model
{
    public function user()
    {
        return $this->belongsTo(User::class);
    }
}

```

通过下面的代码可以关联在一个form里面:

```php
Admin::form(User::class, function (Form $form) {

    $form->display('id');

    $form->text('name');
    $form->text('email');
    
    $form->text('profile.age');
    $form->text('profile.gender');

    $form->datetime('created_at');
    $form->datetime('updated_at');
});

```


================================================
FILE: docs/zh/model-grid-actions.md
================================================
# 模型表格行操作

`model-grid`默认有三个行操作`编辑`、`删除`和`详情`,可以通过下面的方式关闭它们:

```php
 $grid->actions(function ($actions) {
    $actions->disableDelete();
    $actions->disableEdit();
    $actions->disableView();
});
```
可以通过传入的`$actions`参数来获取当前行的数据:
```php
 $grid->actions(function ($actions) {
    
    // 当前行的数据数组
    $actions->row;
    
    // 获取当前行主键值
    $actions->getKey();
});
```

如果有自定义的操作按钮,可以通过下面的方式添加:

```php
$grid->actions(function ($actions) {
    
    // append一个操作
    $actions->append('<a href=""><i class="fa fa-eye"></i></a>');

    // prepend一个操作
    $actions->prepend('<a href=""><i class="fa fa-paper-plane"></i></a>');
}
```

如果有比较复杂的操作,可以参考下面的方式:


先定义操作类
```php
<?php

namespace App\Admin\Extensions;

use Encore\Admin\Admin;

class CheckRow
{
    protected $id;

    public function __construct($id)
    {
        $this->id = $id;
    }

    protected function script()
    {
        return <<<SCRIPT

$('.grid-check-row').on('click', function () {
    
    // Your code.
    console.log($(this).data('id'));
    
});

SCRIPT;
    }

    protected function render()
    {
        Admin::script($this->script());

        return "<a class='btn btn-xs btn-success fa fa-check grid-check-row' data-id='{$this->id}'></a>";
    }
    
    public function __toString()
    {
        return $this->render();
    }
}
```
然后添加操作:
```php
$grid->actions(function ($actions) {
    
    // 添加操作
    $actions->append(new CheckRow($actions->getKey()));
});
```


================================================
FILE: docs/zh/model-grid-column.md
================================================
# 列操作

`model-grid`内置了很多对于列的操作方法,可以通过这些方法很灵活的操作列数据。

`Encore\Admin\Grid\Column`对象内置了`display()`方法来通过传入的回调函数来处理当前列的值,
```php
$grid->column('title')->display(function ($title) {

    return "<span style='color:blue'>$title</span>";
    
});
```
在传入的匿名函数中可以通过任何方式对数据进行处理,另外匿名函数绑定了当前列的数据作为父对象,可以在函数中调用当前行的数据:
```php

$grid->first_n
Download .txt
gitextract_oak7w139/

├── .github/
│   ├── dependabot.yml
│   └── stale.yml
├── .gitignore
├── .travis.yml
├── CHANGELOG.md
├── CONTRIBUTING.md
├── FUNDING.yml
├── LICENSE
├── README.md
├── composer.json
├── config/
│   └── admin.php
├── database/
│   └── migrations/
│       └── 2016_01_04_173148_create_admin_tables.php
├── docs/
│   ├── en/
│   │   ├── LICENSE.md
│   │   ├── README.md
│   │   ├── _sidebar.md
│   │   ├── change-log.md
│   │   ├── content-layout.md
│   │   ├── custom-authentication.md
│   │   ├── custom-chart.md
│   │   ├── custom-navbar.md
│   │   ├── extension-api-tester.md
│   │   ├── extension-config.md
│   │   ├── extension-helpers.md
│   │   ├── extension-media-manager.md
│   │   ├── extension-scheduling.md
│   │   ├── installation.md
│   │   ├── model-form-callback.md
│   │   ├── model-form-field-management.md
│   │   ├── model-form-fields.md
│   │   ├── model-form-upload.md
│   │   ├── model-form-validation.md
│   │   ├── model-form.md
│   │   ├── model-grid-actions.md
│   │   ├── model-grid-column.md
│   │   ├── model-grid-custom-tools.md
│   │   ├── model-grid-export.md
│   │   ├── model-grid-filters.md
│   │   ├── model-grid.md
│   │   ├── model-tree.md
│   │   ├── permission.md
│   │   ├── quick-start.md
│   │   ├── upgrade.md
│   │   └── widgets.md
│   ├── issue_template.md
│   └── zh/
│       ├── LICENSE.md
│       ├── README.md
│       ├── _sidebar.md
│       ├── change-log.md
│       ├── content-layout.md
│       ├── custom-authentication.md
│       ├── custom-chart.md
│       ├── custom-navbar.md
│       ├── extension-api-tester.md
│       ├── extension-config.md
│       ├── extension-helpers.md
│       ├── extension-media-manager.md
│       ├── extension-scheduling.md
│       ├── installation.md
│       ├── model-form-callback.md
│       ├── model-form-field-management.md
│       ├── model-form-fields.md
│       ├── model-form-upload.md
│       ├── model-form-validation.md
│       ├── model-form.md
│       ├── model-grid-actions.md
│       ├── model-grid-column.md
│       ├── model-grid-custom-tools.md
│       ├── model-grid-data.md
│       ├── model-grid-export.md
│       ├── model-grid-exporter.md
│       ├── model-grid-filters.md
│       ├── model-grid.md
│       ├── model-tree.md
│       ├── permission.md
│       ├── qa.md
│       ├── quick-start.md
│       ├── upgrade.md
│       └── widgets.md
├── phpunit.xml.dist
├── resources/
│   ├── assets/
│   │   ├── AdminLTE/
│   │   │   └── plugins/
│   │   │       ├── bootstrap-slider/
│   │   │       │   ├── bootstrap-slider.js
│   │   │       │   └── slider.css
│   │   │       ├── iCheck/
│   │   │       │   ├── all.css
│   │   │       │   ├── flat/
│   │   │       │   │   ├── _all.css
│   │   │       │   │   ├── aero.css
│   │   │       │   │   ├── blue.css
│   │   │       │   │   ├── flat.css
│   │   │       │   │   ├── green.css
│   │   │       │   │   ├── grey.css
│   │   │       │   │   ├── orange.css
│   │   │       │   │   ├── pink.css
│   │   │       │   │   ├── purple.css
│   │   │       │   │   ├── red.css
│   │   │       │   │   └── yellow.css
│   │   │       │   ├── futurico/
│   │   │       │   │   └── futurico.css
│   │   │       │   ├── line/
│   │   │       │   │   ├── _all.css
│   │   │       │   │   ├── aero.css
│   │   │       │   │   ├── blue.css
│   │   │       │   │   ├── green.css
│   │   │       │   │   ├── grey.css
│   │   │       │   │   ├── line.css
│   │   │       │   │   ├── orange.css
│   │   │       │   │   ├── pink.css
│   │   │       │   │   ├── purple.css
│   │   │       │   │   ├── red.css
│   │   │       │   │   └── yellow.css
│   │   │       │   ├── minimal/
│   │   │       │   │   ├── _all.css
│   │   │       │   │   ├── aero.css
│   │   │       │   │   ├── blue.css
│   │   │       │   │   ├── green.css
│   │   │       │   │   ├── grey.css
│   │   │       │   │   ├── minimal.css
│   │   │       │   │   ├── orange.css
│   │   │       │   │   ├── pink.css
│   │   │       │   │   ├── purple.css
│   │   │       │   │   ├── red.css
│   │   │       │   │   └── yellow.css
│   │   │       │   ├── polaris/
│   │   │       │   │   └── polaris.css
│   │   │       │   └── square/
│   │   │       │       ├── _all.css
│   │   │       │       ├── aero.css
│   │   │       │       ├── blue.css
│   │   │       │       ├── green.css
│   │   │       │       ├── grey.css
│   │   │       │       ├── orange.css
│   │   │       │       ├── pink.css
│   │   │       │       ├── purple.css
│   │   │       │       ├── red.css
│   │   │       │       ├── square.css
│   │   │       │       └── yellow.css
│   │   │       ├── input-mask/
│   │   │       │   └── phone-codes/
│   │   │       │       ├── phone-be.json
│   │   │       │       ├── phone-codes.json
│   │   │       │       └── readme.txt
│   │   │       ├── ionslider/
│   │   │       │   ├── ion.rangeSlider.css
│   │   │       │   ├── ion.rangeSlider.skinFlat.css
│   │   │       │   └── ion.rangeSlider.skinNice.css
│   │   │       └── select2/
│   │   │           └── i18n/
│   │   │               ├── ar.js
│   │   │               ├── az.js
│   │   │               ├── bg.js
│   │   │               ├── ca.js
│   │   │               ├── cs.js
│   │   │               ├── da.js
│   │   │               ├── de.js
│   │   │               ├── el.js
│   │   │               ├── en.js
│   │   │               ├── es.js
│   │   │               ├── et.js
│   │   │               ├── eu.js
│   │   │               ├── fa.js
│   │   │               ├── fi.js
│   │   │               ├── fr.js
│   │   │               ├── gl.js
│   │   │               ├── he.js
│   │   │               ├── hi.js
│   │   │               ├── hr.js
│   │   │               ├── hu.js
│   │   │               ├── id.js
│   │   │               ├── is.js
│   │   │               ├── it.js
│   │   │               ├── ja.js
│   │   │               ├── km.js
│   │   │               ├── ko.js
│   │   │               ├── lt.js
│   │   │               ├── lv.js
│   │   │               ├── mk.js
│   │   │               ├── ms.js
│   │   │               ├── nb.js
│   │   │               ├── nl.js
│   │   │               ├── pl.js
│   │   │               ├── pt-BR.js
│   │   │               ├── pt.js
│   │   │               ├── ro.js
│   │   │               ├── ru.js
│   │   │               ├── sk.js
│   │   │               ├── sr-Cyrl.js
│   │   │               ├── sr.js
│   │   │               ├── sv.js
│   │   │               ├── th.js
│   │   │               ├── tr.js
│   │   │               ├── uk.js
│   │   │               ├── vi.js
│   │   │               ├── zh-CN.js
│   │   │               └── zh-TW.js
│   │   ├── bootstrap-fileinput/
│   │   │   └── js/
│   │   │       └── plugins/
│   │   │           ├── canvas-to-blob.js
│   │   │           ├── piexif.js
│   │   │           ├── purify.js
│   │   │           └── sortable.js
│   │   ├── bootstrap3-editable/
│   │   │   └── css/
│   │   │       └── bootstrap-editable.css
│   │   ├── flatpickr/
│   │   │   └── dist/
│   │   │       ├── flatpickr.js
│   │   │       └── l10n/
│   │   │           └── zh.js
│   │   ├── font-awesome/
│   │   │   └── fonts/
│   │   │       └── FontAwesome.otf
│   │   ├── google-fonts/
│   │   │   └── fonts.css
│   │   ├── jquery-pjax/
│   │   │   └── jquery.pjax.js
│   │   ├── laravel-admin/
│   │   │   ├── laravel-admin.css
│   │   │   └── laravel-admin.js
│   │   ├── nestable/
│   │   │   ├── jquery.nestable.js
│   │   │   └── nestable.css
│   │   ├── nprogress/
│   │   │   ├── nprogress.css
│   │   │   └── nprogress.js
│   │   ├── number-input/
│   │   │   └── bootstrap-number-input.js
│   │   └── sweetalert2/
│   │       └── dist/
│   │           └── sweetalert2.css
│   ├── lang/
│   │   ├── ar/
│   │   │   └── admin.php
│   │   ├── az/
│   │   │   └── admin.php
│   │   ├── bn/
│   │   │   └── admin.php
│   │   ├── de/
│   │   │   └── admin.php
│   │   ├── en/
│   │   │   └── admin.php
│   │   ├── es/
│   │   │   └── admin.php
│   │   ├── fa/
│   │   │   └── admin.php
│   │   ├── fr/
│   │   │   └── admin.php
│   │   ├── he/
│   │   │   └── admin.php
│   │   ├── id/
│   │   │   └── admin.php
│   │   ├── ja/
│   │   │   └── admin.php
│   │   ├── ko/
│   │   │   └── admin.php
│   │   ├── ms/
│   │   │   └── admin.php
│   │   ├── nl/
│   │   │   └── admin.php
│   │   ├── pl/
│   │   │   └── admin.php
│   │   ├── pt/
│   │   │   └── admin.php
│   │   ├── pt-BR/
│   │   │   └── admin.php
│   │   ├── ru/
│   │   │   └── admin.php
│   │   ├── tr/
│   │   │   └── admin.php
│   │   ├── uk/
│   │   │   └── admin.php
│   │   ├── ur/
│   │   │   └── admin.php
│   │   ├── zh-CN/
│   │   │   └── admin.php
│   │   └── zh-TW/
│   │       └── admin.php
│   └── views/
│       ├── actions/
│       │   └── form/
│       │       ├── checkbox.blade.php
│       │       ├── date.blade.php
│       │       ├── file.blade.php
│       │       ├── help-block.blade.php
│       │       ├── hidden.blade.php
│       │       ├── modal.blade.php
│       │       ├── muitplefile.blade.php
│       │       ├── multipleselect.blade.php
│       │       ├── radio.blade.php
│       │       ├── select.blade.php
│       │       ├── text.blade.php
│       │       └── textarea.blade.php
│       ├── components/
│       │   ├── column-expand.blade.php
│       │   ├── column-modal.blade.php
│       │   ├── filepicker.blade.php
│       │   ├── fullscreen.blade.php
│       │   ├── grid-column-selector.blade.php
│       │   └── refresh-btn.blade.php
│       ├── content.blade.php
│       ├── dashboard/
│       │   ├── dependencies.blade.php
│       │   ├── environment.blade.php
│       │   ├── extensions.blade.php
│       │   └── title.blade.php
│       ├── filter/
│       │   ├── between.blade.php
│       │   ├── betweenDatetime.blade.php
│       │   ├── button.blade.php
│       │   ├── checkbox.blade.php
│       │   ├── container.blade.php
│       │   ├── datetime.blade.php
│       │   ├── gt.blade.php
│       │   ├── lt.blade.php
│       │   ├── modal.blade.php
│       │   ├── multipleselect.blade.php
│       │   ├── radio.blade.php
│       │   ├── select.blade.php
│       │   ├── text.blade.php
│       │   └── where.blade.php
│       ├── form/
│       │   ├── belongsto.blade.php
│       │   ├── belongstomany.blade.php
│       │   ├── button.blade.php
│       │   ├── captcha.blade.php
│       │   ├── checkbox.blade.php
│       │   ├── checkboxbutton.blade.php
│       │   ├── checkboxcard.blade.php
│       │   ├── daterange.blade.php
│       │   ├── datetimerange.blade.php
│       │   ├── display.blade.php
│       │   ├── editor.blade.php
│       │   ├── embeds.blade.php
│       │   ├── error.blade.php
│       │   ├── file.blade.php
│       │   ├── filepicker.blade.php
│       │   ├── footer.blade.php
│       │   ├── hasmany.blade.php
│       │   ├── hasmanytab.blade.php
│       │   ├── hasmanytable.blade.php
│       │   ├── help-block.blade.php
│       │   ├── hidden.blade.php
│       │   ├── id.blade.php
│       │   ├── input.blade.php
│       │   ├── keyvalue.blade.php
│       │   ├── listbox.blade.php
│       │   ├── listfield.blade.php
│       │   ├── map.blade.php
│       │   ├── multiplefile.blade.php
│       │   ├── multipleselect.blade.php
│       │   ├── radio.blade.php
│       │   ├── radiobutton.blade.php
│       │   ├── radiocard.blade.php
│       │   ├── rate.blade.php
│       │   ├── row.blade.php
│       │   ├── select.blade.php
│       │   ├── slider.blade.php
│       │   ├── switchfield.blade.php
│       │   ├── tab.blade.php
│       │   ├── tags.blade.php
│       │   ├── textarea.blade.php
│       │   └── timerange.blade.php
│       ├── form.blade.php
│       ├── grid/
│       │   ├── actions/
│       │   │   ├── contextmenu.blade.php
│       │   │   └── dropdown.blade.php
│       │   ├── batch-actions.blade.php
│       │   ├── displayer/
│       │   │   └── table.blade.php
│       │   ├── empty-grid.blade.php
│       │   ├── fixed-table.blade.php
│       │   ├── image.blade.php
│       │   ├── inline-edit/
│       │   │   ├── belongsto.blade.php
│       │   │   ├── checkbox.blade.php
│       │   │   ├── comm.blade.php
│       │   │   ├── datetime.blade.php
│       │   │   ├── input.blade.php
│       │   │   ├── multiple-select.blade.php
│       │   │   ├── partials/
│       │   │   │   ├── popover.blade.php
│       │   │   │   └── submit.blade.php
│       │   │   ├── radio.blade.php
│       │   │   ├── select.blade.php
│       │   │   ├── switch-group.blade.php
│       │   │   ├── switch.blade.php
│       │   │   ├── textarea.blade.php
│       │   │   └── upload.blade.php
│       │   ├── quick-create/
│       │   │   ├── date.blade.php
│       │   │   ├── form.blade.php
│       │   │   ├── multipleselect.blade.php
│       │   │   ├── select.blade.php
│       │   │   └── text.blade.php
│       │   ├── quick-search.blade.php
│       │   ├── selector.blade.php
│       │   ├── table.blade.php
│       │   └── total-row.blade.php
│       ├── index.blade.php
│       ├── login.blade.php
│       ├── pagination.blade.php
│       ├── partials/
│       │   ├── alerts.blade.php
│       │   ├── css.blade.php
│       │   ├── exception.blade.php
│       │   ├── footer.blade.php
│       │   ├── header.blade.php
│       │   ├── html.blade.php
│       │   ├── js.blade.php
│       │   ├── menu.blade.php
│       │   ├── script.blade.php
│       │   ├── sidebar.blade.php
│       │   ├── style.blade.php
│       │   └── toastr.blade.php
│       ├── show/
│       │   ├── field.blade.php
│       │   └── panel.blade.php
│       ├── show.blade.php
│       ├── tree/
│       │   └── branch.blade.php
│       ├── tree.blade.php
│       └── widgets/
│           ├── alert.blade.php
│           ├── box.blade.php
│           ├── callout.blade.php
│           ├── carousel.blade.php
│           ├── collapse.blade.php
│           ├── form.blade.php
│           ├── info-box.blade.php
│           ├── tab.blade.php
│           └── table.blade.php
├── src/
│   ├── Actions/
│   │   ├── Action.php
│   │   ├── Authorizable.php
│   │   ├── BatchAction.php
│   │   ├── GridAction.php
│   │   ├── Interactor/
│   │   │   ├── Dialog.php
│   │   │   ├── Form.php
│   │   │   └── Interactor.php
│   │   ├── Response.php
│   │   ├── RowAction.php
│   │   ├── SweatAlert2.php
│   │   └── Toastr.php
│   ├── Admin.php
│   ├── AdminServiceProvider.php
│   ├── Auth/
│   │   ├── Database/
│   │   │   ├── AdminTablesSeeder.php
│   │   │   ├── Administrator.php
│   │   │   ├── HasPermissions.php
│   │   │   ├── Menu.php
│   │   │   ├── OperationLog.php
│   │   │   ├── Permission.php
│   │   │   └── Role.php
│   │   └── Permission.php
│   ├── Console/
│   │   ├── ActionCommand.php
│   │   ├── AdminCommand.php
│   │   ├── ConfigCommand.php
│   │   ├── ControllerCommand.php
│   │   ├── CreateUserCommand.php
│   │   ├── ExportSeedCommand.php
│   │   ├── ExtendCommand.php
│   │   ├── FormCommand.php
│   │   ├── GenerateMenuCommand.php
│   │   ├── ImportCommand.php
│   │   ├── InstallCommand.php
│   │   ├── MakeCommand.php
│   │   ├── MenuCommand.php
│   │   ├── MinifyCommand.php
│   │   ├── PermissionCommand.php
│   │   ├── PublishCommand.php
│   │   ├── ResetPasswordCommand.php
│   │   ├── ResourceGenerator.php
│   │   ├── UninstallCommand.php
│   │   └── stubs/
│   │       ├── AdminTablesSeeder.stub
│   │       ├── AuthController.stub
│   │       ├── ExampleController.stub
│   │       ├── HomeController.stub
│   │       ├── action.stub
│   │       ├── blank.stub
│   │       ├── bootstrap.stub
│   │       ├── controller.stub
│   │       ├── extension/
│   │       │   ├── .gitignore.stub
│   │       │   ├── LICENSE.stub
│   │       │   ├── README.md.stub
│   │       │   ├── composer.json.stub
│   │       │   ├── controller.stub
│   │       │   ├── extension.stub
│   │       │   ├── routes.stub
│   │       │   ├── service-provider.stub
│   │       │   └── view.stub
│   │       ├── form.stub
│   │       ├── grid-batch-action.stub
│   │       ├── grid-row-action.stub
│   │       ├── routes.stub
│   │       └── step-form.stub
│   ├── Controllers/
│   │   ├── AdminController.php
│   │   ├── AuthController.php
│   │   ├── Dashboard.php
│   │   ├── HandleController.php
│   │   ├── HasResourceActions.php
│   │   ├── LogController.php
│   │   ├── MenuController.php
│   │   ├── ModelForm.php
│   │   ├── PermissionController.php
│   │   ├── RoleController.php
│   │   └── UserController.php
│   ├── Exception/
│   │   └── Handler.php
│   ├── Extension.php
│   ├── Facades/
│   │   └── Admin.php
│   ├── Form/
│   │   ├── Builder.php
│   │   ├── Concerns/
│   │   │   ├── HandleCascadeFields.php
│   │   │   ├── HasFields.php
│   │   │   └── HasHooks.php
│   │   ├── EmbeddedForm.php
│   │   ├── Field/
│   │   │   ├── BelongsTo.php
│   │   │   ├── BelongsToMany.php
│   │   │   ├── BelongsToRelation.php
│   │   │   ├── Button.php
│   │   │   ├── CanCascadeFields.php
│   │   │   ├── Captcha.php
│   │   │   ├── CascadeGroup.php
│   │   │   ├── Checkbox.php
│   │   │   ├── CheckboxButton.php
│   │   │   ├── CheckboxCard.php
│   │   │   ├── Color.php
│   │   │   ├── Currency.php
│   │   │   ├── Date.php
│   │   │   ├── DateMultiple.php
│   │   │   ├── DateRange.php
│   │   │   ├── Datetime.php
│   │   │   ├── DatetimeRange.php
│   │   │   ├── Decimal.php
│   │   │   ├── Display.php
│   │   │   ├── Divider.php
│   │   │   ├── Editor.php
│   │   │   ├── Email.php
│   │   │   ├── Embeds.php
│   │   │   ├── Fieldset.php
│   │   │   ├── File.php
│   │   │   ├── HasMany.php
│   │   │   ├── HasValuePicker.php
│   │   │   ├── Hidden.php
│   │   │   ├── Html.php
│   │   │   ├── Icon.php
│   │   │   ├── Id.php
│   │   │   ├── Image.php
│   │   │   ├── ImageField.php
│   │   │   ├── Ip.php
│   │   │   ├── KeyValue.php
│   │   │   ├── ListField.php
│   │   │   ├── Listbox.php
│   │   │   ├── Map.php
│   │   │   ├── Mobile.php
│   │   │   ├── Month.php
│   │   │   ├── MultipleFile.php
│   │   │   ├── MultipleImage.php
│   │   │   ├── MultipleSelect.php
│   │   │   ├── Nullable.php
│   │   │   ├── Number.php
│   │   │   ├── Password.php
│   │   │   ├── PlainInput.php
│   │   │   ├── Radio.php
│   │   │   ├── RadioButton.php
│   │   │   ├── RadioCard.php
│   │   │   ├── Rate.php
│   │   │   ├── Select.php
│   │   │   ├── Slider.php
│   │   │   ├── SwitchField.php
│   │   │   ├── Table.php
│   │   │   ├── Tags.php
│   │   │   ├── Text.php
│   │   │   ├── Textarea.php
│   │   │   ├── Time.php
│   │   │   ├── TimeRange.php
│   │   │   ├── Timezone.php
│   │   │   ├── UploadField.php
│   │   │   ├── Url.php
│   │   │   ├── ValuePicker.php
│   │   │   └── Year.php
│   │   ├── Field.php
│   │   ├── Footer.php
│   │   ├── Layout/
│   │   │   ├── Column.php
│   │   │   └── Layout.php
│   │   ├── NestedForm.php
│   │   ├── Row.php
│   │   ├── Tab.php
│   │   └── Tools.php
│   ├── Form.php
│   ├── Grid/
│   │   ├── Actions/
│   │   │   ├── Delete.php
│   │   │   ├── Edit.php
│   │   │   └── Show.php
│   │   ├── Column/
│   │   │   ├── CheckFilter.php
│   │   │   ├── ExtendDisplay.php
│   │   │   ├── Filter.php
│   │   │   ├── HasHeader.php
│   │   │   ├── Help.php
│   │   │   ├── InlineEditing.php
│   │   │   ├── InputFilter.php
│   │   │   ├── RangeFilter.php
│   │   │   └── Sorter.php
│   │   ├── Column.php
│   │   ├── Concerns/
│   │   │   ├── CanDoubleClick.php
│   │   │   ├── CanExportGrid.php
│   │   │   ├── CanFixColumns.php
│   │   │   ├── CanFixHeader.php
│   │   │   ├── CanHidesColumns.php
│   │   │   ├── HasActions.php
│   │   │   ├── HasElementNames.php
│   │   │   ├── HasFilter.php
│   │   │   ├── HasFooter.php
│   │   │   ├── HasHeader.php
│   │   │   ├── HasHotKeys.php
│   │   │   ├── HasQuickCreate.php
│   │   │   ├── HasQuickSearch.php
│   │   │   ├── HasSelector.php
│   │   │   ├── HasTools.php
│   │   │   └── HasTotalRow.php
│   │   ├── Displayers/
│   │   │   ├── AbstractDisplayer.php
│   │   │   ├── Actions.php
│   │   │   ├── Badge.php
│   │   │   ├── BelongsTo.php
│   │   │   ├── BelongsToMany.php
│   │   │   ├── Button.php
│   │   │   ├── Carousel.php
│   │   │   ├── Checkbox.php
│   │   │   ├── ContextMenuActions.php
│   │   │   ├── Copyable.php
│   │   │   ├── Datetime.php
│   │   │   ├── Downloadable.php
│   │   │   ├── DropdownActions.php
│   │   │   ├── Editable.php
│   │   │   ├── Expand.php
│   │   │   ├── Image.php
│   │   │   ├── Input.php
│   │   │   ├── Label.php
│   │   │   ├── Limit.php
│   │   │   ├── Link.php
│   │   │   ├── Modal.php
│   │   │   ├── MultipleSelect.php
│   │   │   ├── Orderable.php
│   │   │   ├── Prefix.php
│   │   │   ├── ProgressBar.php
│   │   │   ├── QRCode.php
│   │   │   ├── Radio.php
│   │   │   ├── RowSelector.php
│   │   │   ├── Secret.php
│   │   │   ├── Select.php
│   │   │   ├── Suffix.php
│   │   │   ├── SwitchDisplay.php
│   │   │   ├── SwitchGroup.php
│   │   │   ├── Table.php
│   │   │   ├── Textarea.php
│   │   │   └── Upload.php
│   │   ├── Exporter.php
│   │   ├── Exporters/
│   │   │   ├── AbstractExporter.php
│   │   │   ├── CsvExporter.php
│   │   │   ├── ExcelExporter.php
│   │   │   └── ExporterInterface.php
│   │   ├── Filter/
│   │   │   ├── AbstractFilter.php
│   │   │   ├── Between.php
│   │   │   ├── Date.php
│   │   │   ├── Day.php
│   │   │   ├── EndsWith.php
│   │   │   ├── Equal.php
│   │   │   ├── Group.php
│   │   │   ├── Gt.php
│   │   │   ├── Hidden.php
│   │   │   ├── Ilike.php
│   │   │   ├── In.php
│   │   │   ├── Layout/
│   │   │   │   ├── Column.php
│   │   │   │   └── Layout.php
│   │   │   ├── Like.php
│   │   │   ├── Lt.php
│   │   │   ├── Month.php
│   │   │   ├── NotEqual.php
│   │   │   ├── NotIn.php
│   │   │   ├── Presenter/
│   │   │   │   ├── Checkbox.php
│   │   │   │   ├── DateTime.php
│   │   │   │   ├── MultipleSelect.php
│   │   │   │   ├── Presenter.php
│   │   │   │   ├── Radio.php
│   │   │   │   ├── Select.php
│   │   │   │   └── Text.php
│   │   │   ├── Scope.php
│   │   │   ├── StartsWith.php
│   │   │   ├── Where.php
│   │   │   └── Year.php
│   │   ├── Filter.php
│   │   ├── Model.php
│   │   ├── Row.php
│   │   ├── Selectable/
│   │   │   ├── BrowserBtn.php
│   │   │   ├── Checkbox.php
│   │   │   └── Radio.php
│   │   ├── Selectable.php
│   │   ├── Simple.php
│   │   ├── Tools/
│   │   │   ├── AbstractTool.php
│   │   │   ├── BatchAction.php
│   │   │   ├── BatchActions.php
│   │   │   ├── BatchDelete.php
│   │   │   ├── ColumnSelector.php
│   │   │   ├── CreateButton.php
│   │   │   ├── ExportButton.php
│   │   │   ├── FilterButton.php
│   │   │   ├── FixColumns.php
│   │   │   ├── Footer.php
│   │   │   ├── Header.php
│   │   │   ├── Paginator.php
│   │   │   ├── PerPageSelector.php
│   │   │   ├── QuickCreate.php
│   │   │   ├── QuickSearch.php
│   │   │   ├── Selector.php
│   │   │   └── TotalRow.php
│   │   └── Tools.php
│   ├── Grid.php
│   ├── Layout/
│   │   ├── Buildable.php
│   │   ├── Column.php
│   │   ├── Content.php
│   │   └── Row.php
│   ├── Middleware/
│   │   ├── Authenticate.php
│   │   ├── Bootstrap.php
│   │   ├── LogOperation.php
│   │   ├── Permission.php
│   │   ├── Pjax.php
│   │   └── Session.php
│   ├── Show/
│   │   ├── AbstractField.php
│   │   ├── Divider.php
│   │   ├── Field.php
│   │   ├── Panel.php
│   │   ├── Relation.php
│   │   └── Tools.php
│   ├── Show.php
│   ├── Traits/
│   │   ├── AdminBuilder.php
│   │   ├── DefaultDatetimeFormat.php
│   │   ├── HasAssets.php
│   │   ├── ModelTree.php
│   │   ├── Resizable.php
│   │   └── ShouldSnakeAttributes.php
│   ├── Tree/
│   │   └── Tools.php
│   ├── Tree.php
│   ├── Widgets/
│   │   ├── Alert.php
│   │   ├── Box.php
│   │   ├── Callout.php
│   │   ├── Carousel.php
│   │   ├── Collapse.php
│   │   ├── ContainsForms.php
│   │   ├── Form.php
│   │   ├── InfoBox.php
│   │   ├── MultipleSteps.php
│   │   ├── Navbar/
│   │   │   ├── Fullscreen.php
│   │   │   └── RefreshButton.php
│   │   ├── Navbar.php
│   │   ├── StepForm.php
│   │   ├── Tab.php
│   │   ├── Table.php
│   │   └── Widget.php
│   └── helpers.php
└── tests/
    ├── AuthTest.php
    ├── FileUploadTest.php
    ├── ImageUploadTest.php
    ├── IndexTest.php
    ├── InstallTest.php
    ├── LaravelTest.php
    ├── MenuTest.php
    ├── ModelTreeTest.php
    ├── OperationLogTest.php
    ├── PermissionsTest.php
    ├── RolesTest.php
    ├── TestCase.php
    ├── UserFormTest.php
    ├── UserGridTest.php
    ├── UserSettingTest.php
    ├── UsersTest.php
    ├── config/
    │   ├── admin.php
    │   └── filesystems.php
    ├── controllers/
    │   ├── FileController.php
    │   ├── ImageController.php
    │   ├── MultipleImageController.php
    │   └── UserController.php
    ├── migrations/
    │   └── 2016_11_22_093148_create_test_tables.php
    ├── models/
    │   ├── File.php
    │   ├── Image.php
    │   ├── MultipleImage.php
    │   ├── Profile.php
    │   ├── Tag.php
    │   ├── Tree.php
    │   └── User.php
    ├── routes.php
    └── seeds/
        ├── UserTableSeeder.php
        └── factory.php
Download .txt
SYMBOL INDEX (2473 symbols across 348 files)

FILE: database/migrations/2016_01_04_173148_create_admin_tables.php
  class CreateAdminTables (line 7) | class CreateAdminTables extends Migration
    method getConnection (line 12) | public function getConnection()
    method up (line 22) | public function up()
    method down (line 107) | public function down()

FILE: resources/assets/AdminLTE/plugins/bootstrap-slider/bootstrap-slider.js
  function noop (line 43) | function noop() {}
  function defineBridget (line 47) | function defineBridget( $ ) {
  function createNewSlider (line 197) | function createNewSlider(element, options) {

FILE: resources/assets/AdminLTE/plugins/select2/i18n/cs.js
  function e (line 3) | function e(e,t){switch(e){case 2:return t?"dva":"dvě";case 3:return"tři"...

FILE: resources/assets/AdminLTE/plugins/select2/i18n/hr.js
  function e (line 3) | function e(e){var t=" "+e+" znak";return e%10<5&&e%10>0&&(e%100<5||e%100...

FILE: resources/assets/AdminLTE/plugins/select2/i18n/lt.js
  function e (line 3) | function e(e,t,n,r){return e%10===1&&(e%100<11||e%100>19)?t:e%10>=2&&e%1...

FILE: resources/assets/AdminLTE/plugins/select2/i18n/lv.js
  function e (line 3) | function e(e,t,n,r){return e===11?t:e%10===1?n:r}

FILE: resources/assets/AdminLTE/plugins/select2/i18n/ru.js
  function e (line 3) | function e(e,t,n,r){return e%10<5&&e%10>0&&e%100<5||e%100>20?e%10>1?n:t:r}

FILE: resources/assets/AdminLTE/plugins/select2/i18n/sr-Cyrl.js
  function e (line 3) | function e(e,t,n,r){return e%10==1&&e%100!=11?t:e%10>=2&&e%10<=4&&(e%100...

FILE: resources/assets/AdminLTE/plugins/select2/i18n/sr.js
  function e (line 3) | function e(e,t,n,r){return e%10==1&&e%100!=11?t:e%10>=2&&e%10<=4&&(e%100...

FILE: resources/assets/AdminLTE/plugins/select2/i18n/uk.js
  function e (line 3) | function e(e,t,n,r){return e%100>10&&e%100<15?r:e%10===1?t:e%10>1&&e%10<...

FILE: resources/assets/bootstrap-fileinput/js/plugins/piexif.js
  function copy (line 308) | function copy(obj) {
  function _get_thumbnail (line 313) | function _get_thumbnail(jpeg) {
  function _pack_byte (line 322) | function _pack_byte(array) {
  function _pack_short (line 327) | function _pack_short(array) {
  function _pack_long (line 332) | function _pack_long(array) {
  function _value_to_bytes (line 337) | function _value_to_bytes(raw_value, value_type, offset) {
  function _dict_to_bytes (line 431) | function _dict_to_bytes(ifd_dict, ifd, ifd_offset) {
  function ExifReader (line 480) | function ExifReader(data) {
  function getImageSize (line 711) | function getImageSize(imageArray) {
  function pack (line 730) | function pack(mark, array) {
  function unpack (line 801) | function unpack(mark, str) {
  function nStr (line 879) | function nStr(ch, num) {
  function splitIntoSegments (line 887) | function splitIntoSegments(data) {
  function getExifSeg (line 913) | function getExifSeg(segments) {
  function mergeSegments (line 926) | function mergeSegments(segments, exif) {
  function toHex (line 960) | function toHex(str) {

FILE: resources/assets/bootstrap-fileinput/js/plugins/purify.js
  function addToSet (line 27) | function addToSet(set, array) {
  function clone (line 39) | function clone(object) {
  function _toConsumableArray (line 60) | function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i ...
  function createDOMPurify (line 66) | function createDOMPurify() {

FILE: resources/assets/bootstrap-fileinput/js/plugins/sortable.js
  function toFn (line 185) | function toFn(value, pull) {
  function KvSortable (line 242) | function KvSortable(el, options) {
  function _cloneHide (line 1188) | function _cloneHide(kvsortable, state) {
  function _closest (line 1212) | function _closest(/**HTMLElement*/el, /**String*/selector, /**HTMLElemen...
  function _getParentOrHost (line 1228) | function _getParentOrHost(el) {
  function _globalDragOver (line 1235) | function _globalDragOver(/**Event*/evt) {
  function _on (line 1243) | function _on(el, event, fn) {
  function _off (line 1248) | function _off(el, event, fn) {
  function _toggleClass (line 1253) | function _toggleClass(el, name, state) {
  function _css (line 1266) | function _css(el, prop, val) {
  function _find (line 1291) | function _find(ctx, tagName, iterator) {
  function _dispatchEvent (line 1309) | function _dispatchEvent(kvsortable, rootEl, name, targetEl, toEl, fromEl...
  function _onMove (line 1334) | function _onMove(fromEl, toEl, dragEl, dragRect, targetEl, targetRect, o...
  function _disableDraggable (line 1361) | function _disableDraggable(el) {
  function _unsilent (line 1366) | function _unsilent() {
  function _ghostIsLast (line 1372) | function _ghostIsLast(el, evt) {
  function _generateId (line 1389) | function _generateId(el) {
  function _index (line 1408) | function _index(el, selector) {
  function _matches (line 1424) | function _matches(/**HTMLElement*/el, /**String*/selector) {
  function _throttle (line 1440) | function _throttle(callback, ms) {
  function _extend (line 1461) | function _extend(dst, src) {
  function _clone (line 1473) | function _clone(el) {
  function _saveInputCheckedState (line 1485) | function _saveInputCheckedState(root) {
  function _nextTick (line 1495) | function _nextTick(fn) {
  function _cancelNextTick (line 1499) | function _cancelNextTick(id) {

FILE: resources/assets/flatpickr/dist/flatpickr.js
  function n (line 2) | function n(){for(var e=0,n=0,t=arguments.length;n<t;n++)e+=arguments[n]....
  function l (line 2) | function l(e,n){var t;return function(){var a=this,i=arguments;clearTime...
  function s (line 2) | function s(e,n,t){if(!0===t)return e.classList.add(n);e.classList.remove...
  function d (line 2) | function d(e,n,t){var a=window.document.createElement(e);return n=n||"",...
  function u (line 2) | function u(e){for(;e.firstChild;)e.removeChild(e.firstChild)}
  function f (line 2) | function f(e,n){return n(e)?e:e.parentNode?f(e.parentNode,n):void 0}
  function m (line 2) | function m(e,n){var t=d("div","numInputWrapper"),a=d("input","numInput "...
  function g (line 2) | function g(e){try{return"function"==typeof e.composedPath?e.composedPath...
  function M (line 2) | function M(e,n,t){return void 0===t&&(t=!0),!1!==t?new Date(e.getTime())...
  function E (line 2) | function E(e){var n=e.defaultHour,t=e.defaultMinute,a=e.defaultSeconds;i...
  function k (line 2) | function k(p,v){var w={config:e(e({},a),I.defaultConfig),l10n:i};functio...
  function T (line 2) | function T(e,n){for(var t=Array.prototype.slice.call(e).filter((function...

FILE: resources/assets/jquery-pjax/jquery.pjax.js
  function fnPjax (line 32) | function fnPjax(selector, container, options) {
  function handleClick (line 61) | function handleClick(event, container, options) {
  function handleSubmit (line 118) | function handleSubmit(event, container, options) {
  function pjax (line 172) | function pjax(options) {
  function pjaxReload (line 381) | function pjaxReload(container, options) {
  function locationReplace (line 398) | function locationReplace(url) {
  function onPjaxPopstate (line 424) | function onPjaxPopstate(event) {
  function fallbackPjax (line 507) | function fallbackPjax(options) {
  function abortXHR (line 547) | function abortXHR(xhr) {
  function uniqueId (line 560) | function uniqueId() {
  function cloneContents (line 564) | function cloneContents(container) {
  function stripInternalParams (line 577) | function stripInternalParams(url) {
  function parseURL (line 587) | function parseURL(url) {
  function stripHash (line 599) | function stripHash(location) {
  function optionsFor (line 620) | function optionsFor(container, options) {
  function findContainerFor (line 648) | function findContainerFor(container) {
  function findAll (line 671) | function findAll(elems, selector) {
  function parseHTML (line 675) | function parseHTML(html) {
  function extractContainer (line 690) | function extractContainer(data, xhr, options) {
  function executeScriptTags (line 764) | function executeScriptTags(scripts, context) {
  function cachePush (line 821) | function cachePush(id, value) {
  function cachePop (line 841) | function cachePop(direction, id, value) {
  function trimCacheStack (line 868) | function trimCacheStack(stack, length) {
  function findVersion (line 876) | function findVersion() {
  function enable (line 892) | function enable() {
  function disable (line 924) | function disable() {

FILE: resources/assets/nestable/jquery.nestable.js
  function Plugin (line 48) | function Plugin(element, options)

FILE: resources/assets/nprogress/nprogress.js
  function clamp (line 300) | function clamp(n, min, max) {
  function toBarPerc (line 311) | function toBarPerc(n) {
  function barPositionCSS (line 321) | function barPositionCSS(n, speed, ease) {
  function next (line 344) | function next() {
  function camelCase (line 369) | function camelCase(string) {
  function getVendorProp (line 375) | function getVendorProp(name) {
  function getStyleProp (line 390) | function getStyleProp(name) {
  function applyCss (line 395) | function applyCss(element, prop, value) {
  function hasClass (line 420) | function hasClass(element, name) {
  function addClass (line 429) | function addClass(element, name) {
  function removeClass (line 443) | function removeClass(element, name) {
  function classList (line 462) | function classList(element) {
  function removeElement (line 470) | function removeElement(element) {

FILE: resources/assets/number-input/bootstrap-number-input.js
  function setText (line 39) | function setText(n) {

FILE: src/Actions/Action.php
  class Action (line 40) | abstract class Action implements Renderable
    method __construct (line 92) | public function __construct()
    method initInteractor (line 100) | protected function initInteractor()
    method name (line 120) | public function name()
    method selector (line 130) | public function selector($prefix)
    method makeSelector (line 145) | public static function makeSelector($class, $prefix)
    method attribute (line 160) | public function attribute($name, $value)
    method formatAttributes (line 172) | protected function formatAttributes()
    method getElementClass (line 186) | protected function getElementClass()
    method response (line 194) | public function response()
    method getMethod (line 212) | public function getMethod()
    method getCalledClass (line 220) | public function getCalledClass()
    method getHandleRoute (line 228) | public function getHandleRoute()
    method getModelClass (line 236) | protected function getModelClass()
    method parameters (line 244) | public function parameters()
    method validate (line 254) | public function validate(Request $request)
    method addScript (line 266) | protected function addScript()
    method actionScript (line 295) | public function actionScript()
    method buildActionPromise (line 303) | protected function buildActionPromise()
    method handleActionPromise (line 332) | public function handleActionPromise()
    method __call (line 405) | public function __call($method, $arguments = [])
    method html (line 417) | public function html()
    method render (line 424) | public function render()

FILE: src/Actions/Authorizable.php
  type Authorizable (line 12) | trait Authorizable
    method passesAuthorization (line 19) | public function passesAuthorization($model = null)
    method failedAuthorization (line 39) | public function failedAuthorization()

FILE: src/Actions/BatchAction.php
  class BatchAction (line 7) | abstract class BatchAction extends GridAction
    method addCssClass (line 28) | public function addCssClass(string $cssClass)
    method addCssClasses (line 48) | public function addCssClasses(array $cssClasses)
    method actionScript (line 69) | public function actionScript()
    method retrieveModel (line 90) | public function retrieveModel(Request $request)
    method render (line 112) | public function render()

FILE: src/Actions/GridAction.php
  class GridAction (line 14) | abstract class GridAction extends Action
    method setGrid (line 31) | public function setGrid(Grid $grid)
    method getResource (line 43) | public function getResource()
    method getModelClass (line 51) | protected function getModelClass()
    method parameters (line 61) | public function parameters()
    method modelUseSoftDeletes (line 73) | protected function modelUseSoftDeletes($modelClass)

FILE: src/Actions/Interactor/Dialog.php
  class Dialog (line 7) | class Dialog extends Interactor
    method success (line 26) | public function success($title, $text = '', $options = [])
    method error (line 38) | public function error($title, $text = '', $options = [])
    method warning (line 50) | public function warning($title, $text = '', $options = [])
    method info (line 62) | public function info($title, $text = '', $options = [])
    method question (line 74) | public function question($title, $text = '', $options = [])
    method confirm (line 86) | public function confirm($title, $text = '', $options = [])
    method addSettings (line 99) | protected function addSettings($title, $type, $text = '', $options = [])
    method defaultSettings (line 112) | protected function defaultSettings()
    method formatSettings (line 131) | protected function formatSettings()
    method addScript (line 145) | public function addScript()
    method buildActionPromise (line 170) | protected function buildActionPromise()
    method buildUploadFileActionPromise (line 229) | protected function buildUploadFileActionPromise($settings, $calledClas...

FILE: src/Actions/Interactor/Form.php
  class Form (line 14) | class Form extends Interactor
    method formatLabel (line 41) | protected function formatLabel($label)
    method text (line 52) | public function text($column, $label = '')
    method table (line 68) | public function table($column, $label = '', $builder = null)
    method email (line 83) | public function email($column, $label = '')
    method integer (line 98) | public function integer($column, $label = '')
    method ip (line 111) | public function ip($column, $label = '')
    method url (line 124) | public function url($column, $label = '')
    method password (line 137) | public function password($column, $label = '')
    method mobile (line 149) | public function mobile($column, $label = '')
    method textarea (line 162) | public function textarea($column, $label = '')
    method select (line 177) | public function select($column, $label = '')
    method multipleSelect (line 192) | public function multipleSelect($column, $label = '')
    method checkbox (line 207) | public function checkbox($column, $label = '')
    method radio (line 222) | public function radio($column, $label = '')
    method file (line 237) | public function file($column, $label = '')
    method multipleFile (line 252) | public function multipleFile($column, $label = '')
    method image (line 267) | public function image($column, $label = '')
    method multipleImage (line 282) | public function multipleImage($column, $label = '')
    method date (line 297) | public function date($column, $label = '')
    method datetime (line 312) | public function datetime($column, $label = '')
    method time (line 323) | public function time($column, $label = '')
    method hidden (line 334) | public function hidden($column, $label = '')
    method confirm (line 348) | public function confirm($message)
    method modalLarge (line 358) | public function modalLarge()
    method modalSmall (line 368) | public function modalSmall()
    method addElementAttr (line 381) | public function addElementAttr($content, $selector)
    method addField (line 396) | protected function addField(Field $field)
    method validate (line 417) | public function validate(Request $request)
    method mergeValidationMessages (line 452) | protected function mergeValidationMessages($validators)
    method resolveView (line 468) | protected function resolveView($class)
    method addModalHtml (line 480) | public function addModalHtml()
    method getModalId (line 497) | public function getModalId()
    method addScript (line 513) | public function addScript()
    method buildConfirmActionPromise (line 548) | protected function buildConfirmActionPromise()
    method buildGeneralActionPromise (line 594) | protected function buildGeneralActionPromise()
    method buildActionPromise (line 635) | protected function buildActionPromise()

FILE: src/Actions/Interactor/Interactor.php
  class Interactor (line 7) | abstract class Interactor
    method __construct (line 30) | public function __construct(Action $action)
    method addScript (line 38) | abstract public function addScript();

FILE: src/Actions/Response.php
  class Response (line 20) | class Response
    method toastr (line 59) | public function toastr()
    method swal (line 71) | public function swal()
    method getPlugin (line 83) | public function getPlugin()
    method success (line 93) | public function success(string $message = '')
    method info (line 103) | public function info(string $message = '')
    method warning (line 113) | public function warning(string $message = '')
    method error (line 123) | public function error(string $message = '')
    method show (line 134) | protected function show($type, $title = '')
    method redirect (line 148) | public function redirect(string $url)
    method open (line 160) | public function open(string $url)
    method location (line 174) | public function location(string $location)
    method download (line 188) | public function download($url)
    method refresh (line 200) | public function refresh()
    method html (line 214) | public function html($html = '')
    method withException (line 226) | public static function withException(\Exception $exception)
    method send (line 244) | public function send()
    method __call (line 264) | public function __call($method, $arguments)

FILE: src/Actions/RowAction.php
  class RowAction (line 8) | abstract class RowAction extends GridAction
    method getKey (line 35) | protected function getKey()
    method row (line 47) | public function row($key = null)
    method setRow (line 63) | public function setRow($row)
    method getRow (line 70) | public function getRow()
    method setColumn (line 80) | public function setColumn(Column $column)
    method asColumn (line 92) | public function asColumn()
    method href (line 102) | public function href()
    method retrieveModel (line 111) | public function retrieveModel(Request $request)
    method display (line 126) | public function display($value)
    method render (line 135) | public function render()

FILE: src/Actions/SweatAlert2.php
  class SweatAlert2 (line 5) | class SweatAlert2
    method show (line 23) | public function show($type, $title = '')
    method getOptions (line 34) | public function getOptions()

FILE: src/Actions/Toastr.php
  class Toastr (line 7) | class Toastr
    method show (line 30) | public function show($type, $content = '')
    method options (line 44) | protected function options($option, $value)
    method position (line 56) | protected function position($position)
    method topCenter (line 64) | public function topCenter()
    method topLeft (line 72) | public function topLeft()
    method topRight (line 80) | public function topRight()
    method bottomLeft (line 88) | public function bottomLeft()
    method bottomCenter (line 96) | public function bottomCenter()
    method bottomRight (line 104) | public function bottomRight()
    method topFullWidth (line 112) | public function topFullWidth()
    method bottomFullWidth (line 120) | public function bottomFullWidth()
    method timeout (line 128) | public function timeout($timeout = 5000)
    method getOptions (line 136) | public function getOptions()

FILE: src/Admin.php
  class Admin (line 19) | class Admin
    method getLongVersion (line 70) | public static function getLongVersion()
    method grid (line 83) | public function grid($model, Closure $callable)
    method form (line 96) | public function form($model, Closure $callable)
    method tree (line 109) | public function tree($model, Closure $callable = null)
    method show (line 124) | public function show($model, $callable = null)
    method content (line 136) | public function content(Closure $callable = null)
    method getModel (line 146) | public function getModel($model)
    method menu (line 164) | public function menu()
    method menuLinks (line 183) | public function menuLinks($menu = [])
    method setTitle (line 209) | public static function setTitle($title)
    method title (line 219) | public function title()
    method favicon (line 229) | public static function favicon($favicon = null)
    method user (line 243) | public function user()
    method guard (line 253) | public function guard()
    method navbar (line 267) | public function navbar(Closure $builder = null)
    method getNavbar (line 281) | public function getNavbar()
    method registerAuthRoutes (line 297) | public function registerAuthRoutes()
    method routes (line 307) | public function routes()
    method extend (line 351) | public static function extend($name, $class)
    method booting (line 359) | public static function booting(callable $callback)
    method booted (line 367) | public static function booted(callable $callback)
    method bootstrap (line 375) | public function bootstrap()
    method addAdminAssets (line 389) | protected function addAdminAssets()
    method fireBootingCallbacks (line 400) | protected function fireBootingCallbacks()
    method fireBootedCallbacks (line 410) | protected function fireBootedCallbacks()
    method disablePjax (line 422) | public function disablePjax()

FILE: src/AdminServiceProvider.php
  class AdminServiceProvider (line 12) | class AdminServiceProvider extends ServiceProvider
    method boot (line 73) | public function boot()
    method ensureHttps (line 101) | protected function ensureHttps()
    method registerPublishing (line 115) | protected function registerPublishing()
    method compatibleBlade (line 134) | protected function compatibleBlade()
    method macroRouter (line 146) | protected function macroRouter()
    method register (line 172) | public function register()
    method loadAdminAuthConfig (line 188) | protected function loadAdminAuthConfig()
    method registerRouteMiddleware (line 198) | protected function registerRouteMiddleware()

FILE: src/Auth/Database/AdminTablesSeeder.php
  class AdminTablesSeeder (line 8) | class AdminTablesSeeder extends Seeder
    method run (line 15) | public function run()

FILE: src/Auth/Database/Administrator.php
  class Administrator (line 17) | class Administrator extends Model implements AuthenticatableContract
    method __construct (line 30) | public function __construct(array $attributes = [])
    method getAvatarAttribute (line 48) | public function getAvatarAttribute($avatar)
    method roles (line 70) | public function roles(): BelongsToMany
    method permissions (line 84) | public function permissions(): BelongsToMany

FILE: src/Auth/Database/HasPermissions.php
  type HasPermissions (line 7) | trait HasPermissions
    method allPermissions (line 14) | public function allPermissions(): Collection
    method can (line 27) | public function can($ability, $arguments = []): bool
    method cannot (line 51) | public function cannot(string $permission): bool
    method isAdministrator (line 61) | public function isAdministrator(): bool
    method isRole (line 73) | public function isRole(string $role): bool
    method inRoles (line 85) | public function inRoles(array $roles = []): bool
    method visible (line 97) | public function visible(array $roles = []): bool
    method bootHasPermissions (line 113) | protected static function bootHasPermissions()

FILE: src/Auth/Database/Menu.php
  class Menu (line 18) | class Menu extends Model
    method __construct (line 37) | public function __construct(array $attributes = [])
    method roles (line 53) | public function roles(): BelongsToMany
    method allNodes (line 65) | public function allNodes(): array
    method withPermission (line 86) | public function withPermission()
    method boot (line 96) | protected static function boot()

FILE: src/Auth/Database/OperationLog.php
  class OperationLog (line 9) | class OperationLog extends Model
    method __construct (line 32) | public function __construct(array $attributes = [])
    method user (line 48) | public function user(): BelongsTo

FILE: src/Auth/Database/Permission.php
  class Permission (line 11) | class Permission extends Model
    method __construct (line 32) | public function __construct(array $attributes = [])
    method roles (line 48) | public function roles(): BelongsToMany
    method shouldPassThrough (line 64) | public function shouldPassThrough(Request $request): bool
    method getHttpPathAttribute (line 99) | public function getHttpPathAttribute($path)
    method matchRequest (line 112) | protected function matchRequest(array $match, Request $request): bool
    method setHttpMethodAttribute (line 134) | public function setHttpMethodAttribute($method)
    method getHttpMethodAttribute (line 146) | public function getHttpMethodAttribute($method)
    method boot (line 160) | protected static function boot()

FILE: src/Auth/Database/Role.php
  class Role (line 9) | class Role extends Model
    method __construct (line 20) | public function __construct(array $attributes = [])
    method administrators (line 36) | public function administrators(): BelongsToMany
    method permissions (line 50) | public function permissions(): BelongsToMany
    method menus (line 64) | public function menus(): BelongsToMany
    method can (line 80) | public function can(string $permission): bool
    method cannot (line 92) | public function cannot(string $permission): bool
    method boot (line 102) | protected static function boot()

FILE: src/Auth/Permission.php
  class Permission (line 8) | class Permission
    method check (line 17) | public static function check($permission)
    method allow (line 43) | public static function allow($roles)
    method free (line 59) | public static function free()
    method deny (line 71) | public static function deny($roles)
    method error (line 85) | public static function error()
    method isAdministrator (line 101) | public static function isAdministrator()

FILE: src/Console/ActionCommand.php
  class ActionCommand (line 8) | class ActionCommand extends GeneratorCommand
    method replaceClass (line 38) | protected function replaceClass($stub, $name)
    method generateInteractor (line 57) | protected function generateInteractor()
    method getStub (line 89) | public function getStub()
    method getDefaultNamespace (line 109) | protected function getDefaultNamespace($rootNamespace)
    method getNameInput (line 129) | protected function getNameInput()

FILE: src/Console/AdminCommand.php
  class AdminCommand (line 10) | class AdminCommand extends Command
    method handle (line 41) | public function handle()
    method listAdminCommands (line 57) | protected function listAdminCommands()
    method getColumnWidth (line 80) | private function getColumnWidth(array $commands)
    method strlen (line 101) | public static function strlen($string)

FILE: src/Console/ConfigCommand.php
  class ConfigCommand (line 8) | class ConfigCommand extends Command
    method handle (line 27) | public function handle()
    method diff (line 52) | protected function diff(array $from, array $to)
    method printDiff (line 61) | protected function printDiff($title, $diff, $error = false)

FILE: src/Console/ControllerCommand.php
  class ControllerCommand (line 5) | class ControllerCommand extends MakeCommand
    method getModelName (line 28) | protected function getModelName()
    method getControllerName (line 38) | protected function getControllerName()

FILE: src/Console/CreateUserCommand.php
  class CreateUserCommand (line 8) | class CreateUserCommand extends Command
    method handle (line 27) | public function handle()

FILE: src/Console/ExportSeedCommand.php
  class ExportSeedCommand (line 7) | class ExportSeedCommand extends Command
    method handle (line 30) | public function handle()
    method getTableDataArrayAsString (line 87) | protected function getTableDataArrayAsString($table, $exceptFields = [])
    method getStub (line 106) | protected function getStub($name)
    method varExport (line 119) | protected function varExport($var, $indent = '')

FILE: src/Console/ExtendCommand.php
  class ExtendCommand (line 9) | class ExtendCommand extends Command
    method handle (line 72) | public function handle(Filesystem $filesystem)
    method showTree (line 105) | protected function showTree()
    method makeFiles (line 135) | protected function makeFiles()
    method getRootNameSpace (line 195) | protected function getRootNameSpace()
    method getClassName (line 213) | protected function getClassName()
    method makeDirs (line 221) | protected function makeDirs()
    method validateExtensionName (line 235) | protected function validateExtensionName($name)
    method extensionPath (line 247) | protected function extensionPath($path = '')
    method putFile (line 264) | protected function putFile($to, $content)
    method copy (line 277) | protected function copy($from, $to = null)
    method makeDir (line 301) | protected function makeDir($paths = '')

FILE: src/Console/FormCommand.php
  class FormCommand (line 7) | class FormCommand extends GeneratorCommand
    method replaceClass (line 34) | protected function replaceClass($stub, $name)
    method getStub (line 46) | protected function getStub()
    method getDefaultNamespace (line 62) | protected function getDefaultNamespace($rootNamespace)
    method getNameInput (line 76) | protected function getNameInput()

FILE: src/Console/GenerateMenuCommand.php
  class GenerateMenuCommand (line 11) | class GenerateMenuCommand extends Command
    method __construct (line 37) | public function __construct(Router $router)
    method handle (line 49) | public function handle()

FILE: src/Console/ImportCommand.php
  class ImportCommand (line 9) | class ImportCommand extends Command
    method handle (line 30) | public function handle()

FILE: src/Console/InstallCommand.php
  class InstallCommand (line 7) | class InstallCommand extends Command
    method handle (line 35) | public function handle()
    method initDatabase (line 47) | public function initDatabase()
    method initAdminDirectory (line 63) | protected function initAdminDirectory()
    method createHomeController (line 91) | public function createHomeController()
    method createAuthController (line 108) | public function createAuthController()
    method createExampleController (line 125) | public function createExampleController()
    method createBootstrapFile (line 142) | protected function createBootstrapFile()
    method createRoutesFile (line 156) | protected function createRoutesFile()
    method getStub (line 172) | protected function getStub($name)
    method makeDir (line 182) | protected function makeDir($path = '')

FILE: src/Console/MakeCommand.php
  class MakeCommand (line 9) | class MakeCommand extends GeneratorCommand
    method handle (line 50) | public function handle()
    method getControllerName (line 89) | protected function getControllerName()
    method getModelName (line 97) | protected function getModelName()
    method getTitle (line 107) | protected function getTitle()
    method output (line 119) | protected function output($modelName)
    method modelExists (line 133) | protected function modelExists()
    method replaceClass (line 150) | protected function replaceClass($stub, $name)
    method indentCodes (line 180) | protected function indentCodes($code)
    method getStub (line 192) | protected function getStub()
    method getDefaultNamespace (line 212) | protected function getDefaultNamespace($rootNamespace)
    method getNameInput (line 226) | protected function getNameInput()

FILE: src/Console/MenuCommand.php
  class MenuCommand (line 8) | class MenuCommand extends Command
    method handle (line 29) | public function handle()

FILE: src/Console/MinifyCommand.php
  class MinifyCommand (line 11) | class MinifyCommand extends Command
    method handle (line 43) | public function handle()
    method loadExcepts (line 74) | protected function loadExcepts()
    method clearMinifiedFiles (line 81) | protected function clearMinifiedFiles()
    method minifyCSS (line 94) | protected function minifyCSS()
    method minifyJS (line 124) | protected function minifyJS()
    method generateManifest (line 154) | protected function generateManifest()

FILE: src/Console/PermissionCommand.php
  class PermissionCommand (line 10) | class PermissionCommand extends Command
    method __construct (line 31) | public function __construct()
    method handle (line 41) | public function handle()
    method getAllTables (line 82) | private function getAllTables()
    method getIgnoreTables (line 87) | private function getIgnoreTables()
    method getPermissions (line 102) | private function getPermissions()
    method generateHttpMethod (line 115) | private function generateHttpMethod($permission)
    method generateHttpPath (line 134) | private function generateHttpPath($table, $permission)
    method generateSlug (line 155) | private function generateSlug($table, $permission)
    method generateName (line 160) | private function generateName($table, $permission_lang)

FILE: src/Console/PublishCommand.php
  class PublishCommand (line 7) | class PublishCommand extends Command
    method handle (line 28) | public function handle()

FILE: src/Console/ResetPasswordCommand.php
  class ResetPasswordCommand (line 8) | class ResetPasswordCommand extends Command
    method handle (line 27) | public function handle()

FILE: src/Console/ResourceGenerator.php
  class ResourceGenerator (line 7) | class ResourceGenerator
    method __construct (line 53) | public function __construct($model)
    method getModel (line 63) | protected function getModel($model)
    method generateForm (line 79) | public function generateForm()
    method generateShow (line 164) | public function generateShow()
    method generateGrid (line 182) | public function generateGrid()
    method getReservedColumns (line 197) | protected function getReservedColumns()
    method getTableColumns (line 214) | protected function getTableColumns()
    method formatLabel (line 250) | protected function formatLabel($value)

FILE: src/Console/UninstallCommand.php
  class UninstallCommand (line 7) | class UninstallCommand extends Command
    method handle (line 28) | public function handle()
    method removeFilesAndDirectories (line 44) | protected function removeFilesAndDirectories()

FILE: src/Controllers/AdminController.php
  class AdminController (line 8) | class AdminController extends Controller
    method title (line 36) | protected function title()
    method index (line 48) | public function index(Content $content)
    method show (line 64) | public function show($id, Content $content)
    method edit (line 80) | public function edit($id, Content $content)
    method create (line 95) | public function create(Content $content)

FILE: src/Controllers/AuthController.php
  class AuthController (line 15) | class AuthController extends Controller
    method getLogin (line 27) | public function getLogin()
    method postLogin (line 43) | public function postLogin(Request $request)
    method loginValidator (line 66) | protected function loginValidator(array $data)
    method getLogout (line 79) | public function getLogout(Request $request)
    method getSetting (line 95) | public function getSetting(Content $content)
    method putSetting (line 116) | public function putSetting()
    method settingForm (line 126) | protected function settingForm()
    method getFailedLoginMessage (line 163) | protected function getFailedLoginMessage()
    method redirectPath (line 175) | protected function redirectPath()
    method sendLoginResponse (line 191) | protected function sendLoginResponse(Request $request)
    method username (line 205) | protected function username()
    method guard (line 215) | protected function guard()

FILE: src/Controllers/Dashboard.php
  class Dashboard (line 8) | class Dashboard
    method title (line 13) | public static function title()
    method environment (line 21) | public static function environment()
    method extensions (line 46) | public static function extensions()
    method dependencies (line 107) | public static function dependencies()

FILE: src/Controllers/HandleController.php
  class HandleController (line 17) | class HandleController extends Controller
    method handleForm (line 24) | public function handleForm(Request $request)
    method resolveForm (line 42) | protected function resolveForm(Request $request)
    method handleAction (line 69) | public function handleAction(Request $request)
    method resolveActionInstance (line 109) | protected function resolveActionInstance(Request $request)
    method resolveActionArgs (line 137) | protected function resolveActionArgs(Request $request, $model = null)
    method handleSelectable (line 153) | public function handleSelectable(Request $request)
    method handleRenderable (line 175) | public function handleRenderable(Request $request)

FILE: src/Controllers/HasResourceActions.php
  type HasResourceActions (line 5) | trait HasResourceActions
    method update (line 14) | public function update($id)
    method store (line 24) | public function store()
    method destroy (line 36) | public function destroy($id)

FILE: src/Controllers/LogController.php
  class LogController (line 9) | class LogController extends AdminController
    method title (line 14) | protected function title()
    method grid (line 22) | protected function grid()
    method destroy (line 73) | public function destroy($id)

FILE: src/Controllers/MenuController.php
  class MenuController (line 13) | class MenuController extends Controller
    method index (line 24) | public function index(Content $content)
    method show (line 62) | public function show($id)
    method treeView (line 70) | protected function treeView()
    method edit (line 105) | public function edit($id, Content $content)
    method form (line 118) | public function form()
    method iconHelp (line 148) | protected function iconHelp()

FILE: src/Controllers/ModelForm.php
  type ModelForm (line 10) | trait ModelForm

FILE: src/Controllers/PermissionController.php
  class PermissionController (line 10) | class PermissionController extends AdminController
    method title (line 15) | protected function title()
    method grid (line 25) | protected function grid()
    method detail (line 77) | protected function detail($id)
    method form (line 121) | public function form()
    method getHttpMethodsOptions (line 148) | protected function getHttpMethodsOptions()

FILE: src/Controllers/RoleController.php
  class RoleController (line 9) | class RoleController extends AdminController
    method title (line 14) | protected function title()
    method grid (line 24) | protected function grid()
    method detail (line 61) | protected function detail($id)
    method form (line 84) | public function form()

FILE: src/Controllers/UserController.php
  class UserController (line 10) | class UserController extends AdminController
    method title (line 15) | protected function title()
    method grid (line 25) | protected function grid()
    method detail (line 60) | protected function detail($id)
    method form (line 86) | public function form()

FILE: src/Exception/Handler.php
  class Handler (line 8) | class Handler
    method renderException (line 17) | public static function renderException(\Exception $exception)
    method error (line 41) | public static function error($title = '', $message = '')

FILE: src/Extension.php
  class Extension (line 14) | abstract class Extension
    method getInstance (line 91) | protected static function getInstance()
    method boot (line 105) | public static function boot()
    method assets (line 131) | public function assets()
    method css (line 141) | public function css()
    method js (line 151) | public function js()
    method views (line 161) | public function views()
    method migrations (line 171) | public function migrations()
    method menu (line 179) | public function menu()
    method permission (line 187) | public function permission()
    method enabled (line 197) | public function enabled()
    method disabled (line 207) | public function disabled()
    method config (line 220) | public static function config($key = null, $default = null)
    method import (line 236) | public static function import()
    method validateMenu (line 272) | public function validateMenu(array $menu)
    method getMenuValidationRules (line 291) | protected function getMenuValidationRules()
    method validatePermission (line 310) | public function validatePermission(array $permission)
    method getPermissionValidationRules (line 333) | protected function getPermissionValidationRules()
    method createMenu (line 358) | protected static function createMenu($title, $uri, $icon = 'fa-bars', ...
    method createPermission (line 397) | protected static function createPermission($name, $slug, $path, $metho...
    method routes (line 414) | public static function routes($callback)

FILE: src/Facades/Admin.php
  class Admin (line 34) | class Admin extends Facade
    method getFacadeAccessor (line 36) | protected static function getFacadeAccessor()

FILE: src/Form.php
  class Form (line 33) | class Form implements Renderable
    method __construct (line 124) | public function __construct($model, Closure $callback = null)
    method pushField (line 146) | public function pushField(Field $field): self
    method model (line 162) | public function model(): Model
    method builder (line 170) | public function builder(): Builder
    method fields (line 178) | public function fields()
    method edit (line 190) | public function edit($id): self
    method tab (line 211) | public function tab($title, Closure $content, bool $active = false): self
    method getTab (line 223) | public function getTab()
    method setTab (line 233) | public function setTab(): Tab
    method destroy (line 249) | public function destroy($id)
    method deleteFiles (line 300) | protected function deleteFiles(Model $model, $forceDelete = false)
    method store (line 323) | public function store()
    method responseValidationError (line 364) | protected function responseValidationError(MessageBag $message)
    method ajaxResponse (line 384) | protected function ajaxResponse($message)
    method applayFieldDisplay (line 403) | protected function applayFieldDisplay()
    method prepare (line 440) | protected function prepare($data = [])
    method removeIgnoredFields (line 464) | protected function removeIgnoredFields($input): array
    method getRelationInputs (line 478) | protected function getRelationInputs($inputs = []): array
    method update (line 506) | public function update($id, $data = null)
    method redirectAfterStore (line 569) | protected function redirectAfterStore()
    method redirectAfterUpdate (line 585) | protected function redirectAfterUpdate($key)
    method redirectAfterSaving (line 600) | protected function redirectAfterSaving($resourcesPath, $key)
    method isEditable (line 627) | protected function isEditable(array $input = []): bool
    method handleColumnUpdates (line 640) | protected function handleColumnUpdates($id, $data)
    method handleEditable (line 665) | protected function handleEditable(array $input = []): array
    method handleFileDelete (line 683) | protected function handleFileDelete(array $input = []): array
    method handleFileSort (line 700) | protected function handleFileSort(array $input = []): array
    method handleOrderable (line 729) | protected function handleOrderable($id, array $input = [])
    method updateRelation (line 751) | protected function updateRelation($relationsData)
    method prepareUpdate (line 863) | protected function prepareUpdate(array $updates, $oneToOneRelation = f...
    method isInvalidColumn (line 902) | protected function isInvalidColumn($columns, $containsDot = false): bool
    method prepareInsert (line 921) | protected function prepareInsert($inserts): array
    method isHasOneRelation (line 952) | protected function isHasOneRelation($inserts): bool
    method ignore (line 974) | public function ignore($fields): self
    method getDataByColumn (line 987) | protected function getDataByColumn($data, $columns)
    method getFieldByColumn (line 1013) | protected function getFieldByColumn($column)
    method setFieldOriginalValue (line 1031) | protected function setFieldOriginalValue()
    method setRelationFieldSnakeAttributes (line 1045) | protected function setRelationFieldSnakeAttributes()
    method setFieldValue (line 1075) | protected function setFieldValue($id)
    method fieldset (line 1106) | public function fieldset(string $title, Closure $setCallback)
    method validationMessages (line 1126) | public function validationMessages($input)
    method mergeValidationMessages (line 1153) | protected function mergeValidationMessages($validators): MessageBag
    method getRelations (line 1169) | public function getRelations(): array
    method setAction (line 1205) | public function setAction($action): self
    method setWidth (line 1220) | public function setWidth($fieldWidth = 8, $labelWidth = 2): self
    method setView (line 1239) | public function setView($view): self
    method setTitle (line 1253) | public function setTitle($title = ''): self
    method confirm (line 1268) | public function confirm(string $message, $on = null)
    method row (line 1294) | public function row(Closure $callback): self
    method tools (line 1306) | public function tools(Closure $callback)
    method header (line 1316) | public function header(Closure $callback = null)
    method isCreating (line 1330) | public function isCreating(): bool
    method isEditing (line 1340) | public function isEditing(): bool
    method disableSubmit (line 1354) | public function disableSubmit(bool $disable = true): self
    method disableReset (line 1370) | public function disableReset(bool $disable = true): self
    method disableViewCheck (line 1384) | public function disableViewCheck(bool $disable = true): self
    method disableEditingCheck (line 1398) | public function disableEditingCheck(bool $disable = true): self
    method disableCreatingCheck (line 1412) | public function disableCreatingCheck(bool $disable = true): self
    method footer (line 1426) | public function footer(Closure $callback = null)
    method resource (line 1442) | public function resource($slice = -2): string
    method render (line 1458) | public function render()
    method input (line 1475) | public function input($key, $value = null)
    method column (line 1492) | public function column($width, \Closure $closure): self
    method initLayout (line 1504) | protected function initLayout()
    method __get (line 1516) | public function __get($name)
    method __set (line 1529) | public function __set($name, $value)
    method __isset (line 1541) | public function __isset($name)
    method __call (line 1554) | public function __call($method, $arguments)
    method getLayout (line 1574) | public function getLayout(): Layout

FILE: src/Form/Builder.php
  class Builder (line 16) | class Builder
    method __construct (line 112) | public function __construct(Form $form)
    method init (line 126) | public function init()
    method getTools (line 139) | public function getTools()
    method getFooter (line 149) | public function getFooter()
    method setMode (line 161) | public function setMode($mode = 'create')
    method getMode (line 169) | public function getMode(): string
    method isMode (line 181) | public function isMode($mode): bool
    method isCreating (line 191) | public function isCreating(): bool
    method isEditing (line 201) | public function isEditing(): bool
    method setResourceId (line 213) | public function setResourceId($id)
    method getResourceId (line 223) | public function getResourceId()
    method getResource (line 233) | public function getResource(int $slice = null): string
    method setWidth (line 251) | public function setWidth($field = 8, $label = 2): self
    method getWidth (line 266) | public function getWidth(): array
    method setAction (line 278) | public function setAction($action)
    method getAction (line 288) | public function getAction(): string
    method setView (line 312) | public function setView($view): self
    method setTitle (line 326) | public function setTitle($title): self
    method fields (line 338) | public function fields(): Collection
    method field (line 350) | public function field($name)
    method hasRows (line 362) | public function hasRows(): bool
    method getRows (line 372) | public function getRows(): array
    method getHiddenFields (line 380) | public function getHiddenFields(): array
    method addHiddenField (line 390) | public function addHiddenField(Field $field)
    method options (line 402) | public function options($options = [])
    method option (line 419) | public function option($option, $value = null)
    method title (line 433) | public function title(): string
    method hasFile (line 455) | public function hasFile(): bool
    method addRedirectUrlField (line 471) | protected function addRedirectUrlField()
    method open (line 491) | public function open($options = []): string
    method close (line 523) | public function close(): string
    method confirm (line 536) | public function confirm(string $message)
    method removeReservedFields (line 570) | protected function removeReservedFields()
    method renderTools (line 597) | public function renderTools(): string
    method renderFooter (line 607) | public function renderFooter(): string
    method addTabformScript (line 617) | protected function addTabformScript()
    method addCascadeScript (line 650) | protected function addCascadeScript()
    method render (line 669) | public function render(): string

FILE: src/Form/Concerns/HandleCascadeFields.php
  type HandleCascadeFields (line 7) | trait HandleCascadeFields
    method cascadeGroup (line 13) | public function cascadeGroup(\Closure $closure, array $dependency)

FILE: src/Form/Concerns/HasFields.php
  type HasFields (line 63) | trait HasFields
    method extend (line 143) | public static function extend($abstract, $class)
    method alias (line 156) | public static function alias($field, $alias)
    method forget (line 166) | public static function forget($abstract)
    method findFieldClass (line 178) | public static function findFieldClass($method)
    method collectFieldAssets (line 199) | public static function collectFieldAssets(): array

FILE: src/Form/Concerns/HasHooks.php
  type HasHooks (line 9) | trait HasHooks
    method init (line 30) | public static function init(Closure $callback = null)
    method callInitCallbacks (line 38) | protected function callInitCallbacks()
    method registerHook (line 57) | protected function registerHook($name, Closure $callback)
    method callHooks (line 72) | protected function callHooks($name, $parameters = [])
    method editing (line 96) | public function editing(Closure $callback)
    method submitted (line 108) | public function submitted(Closure $callback)
    method saving (line 120) | public function saving(Closure $callback)
    method saved (line 132) | public function saved(Closure $callback)
    method deleting (line 142) | public function deleting(Closure $callback)
    method deleted (line 152) | public function deleted(Closure $callback)
    method callEditing (line 162) | protected function callEditing()
    method callSubmitted (line 172) | protected function callSubmitted()
    method callSaving (line 182) | protected function callSaving()
    method callSaved (line 192) | protected function callSaved()
    method callDeleting (line 204) | protected function callDeleting($id)
    method callDeleted (line 212) | protected function callDeleted()

FILE: src/Form/EmbeddedForm.php
  class EmbeddedForm (line 53) | class EmbeddedForm
    method __construct (line 86) | public function __construct($column)
    method fields (line 98) | public function fields()
    method setParent (line 110) | public function setParent(Form $parent)
    method setParentWidgetForm (line 124) | public function setParentWidgetForm(WidgetForm $parent)
    method setOriginal (line 138) | public function setOriginal($data)
    method prepare (line 160) | public function prepare($input)
    method prepareValue (line 178) | protected function prepareValue($key, $record)
    method setFieldOriginalValue (line 198) | protected function setFieldOriginalValue($key)
    method fill (line 216) | public function fill(array $data)
    method formatField (line 232) | protected function formatField(Field $field)
    method pushField (line 264) | public function pushField(Field $field)
    method __call (line 281) | public function __call($method, $arguments)

FILE: src/Form/Field.php
  class Field (line 18) | class Field implements Renderable
    method __construct (line 267) | public function __construct($column = '', $arguments = [])
    method getAssets (line 279) | public static function getAssets()
    method formatColumn (line 294) | protected function formatColumn($column = '')
    method formatId (line 312) | protected function formatId($column)
    method formatLabel (line 324) | protected function formatLabel($arguments = []): string
    method formatName (line 340) | protected function formatName($column)
    method setElementName (line 382) | public function setElementName($name): self
    method setSnakeAttributes (line 396) | public function setSnakeAttributes($snakeAttributes)
    method getSnakeAttributes (line 408) | public function getSnakeAttributes()
    method columnShouldSnaked (line 420) | protected function columnShouldSnaked($column)
    method fill (line 432) | public function fill($data)
    method formatValue (line 452) | protected function formatValue()
    method customFormat (line 466) | public function customFormat(\Closure $call): self
    method setOriginal (line 480) | public function setOriginal($data)
    method setForm (line 498) | public function setForm(Form $form = null)
    method setWidgetForm (line 512) | public function setWidgetForm(WidgetForm $form)
    method setWidth (line 527) | public function setWidth($field = 8, $label = 2): self
    method options (line 544) | public function options($options = [])
    method checked (line 562) | public function checked($checked = [])
    method addRequiredAttribute (line 579) | protected function addRequiredAttribute($rules)
    method addRequiredAttributeFromRules (line 607) | protected function addRequiredAttributeFromRules()
    method formatRules (line 627) | protected function formatRules($rules): array
    method mergeRules (line 642) | protected function mergeRules($input, $original)
    method rules (line 665) | public function rules($rules = null, $messages = []): self
    method updateRules (line 682) | public function updateRules($rules = null, $messages = []): self
    method creationRules (line 699) | public function creationRules($rules = null, $messages = []): self
    method setValidationMessages (line 716) | public function setValidationMessages($key, array $messages): self
    method getValidationMessages (line 728) | public function getValidationMessages()
    method getRules (line 747) | protected function getRules()
    method removeRule (line 791) | protected function removeRule($rule)
    method validator (line 814) | public function validator(callable $validator): self
    method getErrorKey (line 826) | public function getErrorKey()
    method setErrorKey (line 838) | public function setErrorKey($key): self
    method value (line 852) | public function value($value = null)
    method data (line 870) | public function data(array $data = null)
    method default (line 888) | public function default($default): self
    method getDefault (line 900) | public function getDefault()
    method help (line 917) | public function help($text = '', $icon = 'fa-info-circle'): self
    method column (line 929) | public function column()
    method label (line 939) | public function label(): string
    method original (line 949) | public function original()
    method getValidator (line 961) | public function getValidator(array $input)
    method sanitizeInput (line 1006) | protected function sanitizeInput($input, $column)
    method attribute (line 1024) | public function attribute($attribute, $value = null): self
    method removeAttribute (line 1042) | public function removeAttribute($attribute): self
    method style (line 1057) | public function style($attr, $value): self
    method width (line 1069) | public function width($width): self
    method pattern (line 1081) | public function pattern($regexp): self
    method required (line 1093) | public function required($isLabelAsterisked = true): self
    method autofocus (line 1107) | public function autofocus(): self
    method readonly (line 1117) | public function readonly()
    method disable (line 1127) | public function disable(): self
    method placeholder (line 1139) | public function placeholder($placeholder = ''): self
    method getPlaceholder (line 1151) | public function getPlaceholder()
    method divider (line 1161) | public function divider()
    method prepare (line 1175) | public function prepare($value)
    method formatAttributes (line 1185) | protected function formatAttributes(): string
    method disableHorizontal (line 1199) | public function disableHorizontal(): self
    method getViewElementClasses (line 1209) | public function getViewElementClasses(): array
    method setElementClass (line 1229) | public function setElementClass($class): self
    method getElementClass (line 1241) | public function getElementClass(): array
    method getElementClassString (line 1257) | public function getElementClassString()
    method getElementClassSelector (line 1279) | public function getElementClassSelector()
    method addElementClass (line 1303) | public function addElementClass($class): self
    method removeElementClass (line 1319) | public function removeElementClass($class): self
    method setGroupClass (line 1343) | public function setGroupClass($class): self
    method getGroupClass (line 1361) | protected function getGroupClass($default = false): string
    method resetElementClassName (line 1374) | public function resetElementClassName(string $className, string $reset...
    method addVariables (line 1390) | public function addVariables(array $variables = []): self
    method getLabelClass (line 1400) | public function getLabelClass(): string
    method setLabelClass (line 1411) | public function setLabelClass(array $labelClass, $replace = false): self
    method variables (line 1423) | public function variables(): array
    method getView (line 1445) | public function getView(): string
    method setView (line 1463) | public function setView($view): self
    method getScript (line 1475) | public function getScript(): string
    method setScript (line 1487) | public function setScript($script): self
    method setDisplay (line 1501) | public function setDisplay(bool $display): self
    method shouldRender (line 1513) | protected function shouldRender(): bool
    method with (line 1527) | public function with(Closure $callback): self
    method render (line 1539) | public function render()
    method fieldRender (line 1559) | protected function fieldRender(array $variables = [])
    method __toString (line 1571) | public function __toString()

FILE: src/Form/Field/BelongsTo.php
  class BelongsTo (line 7) | class BelongsTo extends Select
    method addScript (line 11) | protected function addScript()
    method getOptions (line 101) | protected function getOptions()

FILE: src/Form/Field/BelongsToMany.php
  class BelongsToMany (line 7) | class BelongsToMany extends MultipleSelect
    method addScript (line 11) | protected function addScript()
    method getOptions (line 134) | protected function getOptions()

FILE: src/Form/Field/BelongsToRelation.php
  type BelongsToRelation (line 8) | trait BelongsToRelation
    method __construct (line 26) | public function __construct($column, $arguments = [])
    method setSelectable (line 36) | protected function setSelectable($selectable)
    method getSelectable (line 50) | public function getSelectable()
    method getLoadUrl (line 60) | protected function getLoadUrl($multiple = 0)
    method addHtml (line 71) | public function addHtml()
    method addStyle (line 110) | public function addStyle()
    method makeGrid (line 148) | protected function makeGrid()
    method render (line 159) | public function render()

FILE: src/Form/Field/Button.php
  class Button (line 7) | class Button extends Field
    method info (line 11) | public function info()
    method on (line 18) | public function on($event, $callback)

FILE: src/Form/Field/CanCascadeFields.php
  type CanCascadeFields (line 12) | trait CanCascadeFields
    method when (line 26) | public function when($operator, $value, $closure = null)
    method formatValues (line 45) | protected function formatValues(string $operator, &$value)
    method addDependents (line 63) | protected function addDependents(string $operator, $value, \Closure $c...
    method fill (line 77) | public function fill($data)
    method getCascadeClass (line 89) | protected function getCascadeClass($value)
    method applyCascadeConditions (line 103) | protected function applyCascadeConditions()
    method hitsCondition (line 122) | protected function hitsCondition(CascadeGroup $group)
    method getValueByJs (line 161) | protected function getValueByJs()
    method addCascadeScript (line 171) | protected function addCascadeScript()
    method getFormFrontValue (line 244) | protected function getFormFrontValue()

FILE: src/Form/Field/Captcha.php
  class Captcha (line 7) | class Captcha extends Text
    method __construct (line 13) | public function __construct($column, $arguments = [])
    method setForm (line 23) | public function setForm(Form $form = null)
    method render (line 32) | public function render()

FILE: src/Form/Field/CascadeGroup.php
  class CascadeGroup (line 7) | class CascadeGroup extends Field
    method __construct (line 24) | public function __construct(array $dependency)
    method dependsOn (line 34) | public function dependsOn(Field $field)
    method index (line 42) | public function index()
    method visiable (line 50) | public function visiable()
    method render (line 58) | public function render()
    method end (line 68) | public function end()

FILE: src/Form/Field/Checkbox.php
  class Checkbox (line 7) | class Checkbox extends MultipleSelect
    method options (line 35) | public function options($options = [])
    method canCheckAll (line 55) | public function canCheckAll()
    method groups (line 69) | public function groups(array $groups = [])
    method checked (line 83) | public function checked($checked = [])
    method inline (line 99) | public function inline()
    method stacked (line 111) | public function stacked()
    method render (line 121) | public function render()

FILE: src/Form/Field/CheckboxButton.php
  class CheckboxButton (line 7) | class CheckboxButton extends Checkbox
    method addScript (line 14) | protected function addScript()
    method render (line 39) | public function render()

FILE: src/Form/Field/CheckboxCard.php
  class CheckboxCard (line 7) | class CheckboxCard extends CheckboxButton
    method addStyle (line 9) | protected function addStyle()
    method render (line 37) | public function render()

FILE: src/Form/Field/Color.php
  class Color (line 5) | class Color extends Text
    method hex (line 20) | public function hex()
    method rgb (line 30) | public function rgb()
    method rgba (line 40) | public function rgba()
    method render (line 50) | public function render()

FILE: src/Form/Field/Currency.php
  class Currency (line 5) | class Currency extends Text
    method symbol (line 38) | public function symbol($symbol)
    method digits (line 52) | public function digits($digits)
    method prepare (line 60) | public function prepare($value)
    method render (line 68) | public function render()

FILE: src/Form/Field/Date.php
  class Date (line 5) | class Date extends Text
    method format (line 18) | public function format($format)
    method prepare (line 25) | public function prepare($value)
    method render (line 34) | public function render()

FILE: src/Form/Field/DateMultiple.php
  class DateMultiple (line 5) | class DateMultiple extends Text
    method format (line 21) | public function format($format)
    method prepare (line 28) | public function prepare($value)
    method render (line 37) | public function render()

FILE: src/Form/Field/DateRange.php
  class DateRange (line 7) | class DateRange extends Field
    method __construct (line 27) | public function __construct($column, $arguments)
    method prepare (line 42) | public function prepare($value)
    method render (line 51) | public function render()

FILE: src/Form/Field/Datetime.php
  class Datetime (line 5) | class Datetime extends Date
    method render (line 9) | public function render()

FILE: src/Form/Field/DatetimeRange.php
  class DatetimeRange (line 5) | class DatetimeRange extends DateRange

FILE: src/Form/Field/Decimal.php
  class Decimal (line 5) | class Decimal extends Text
    method render (line 21) | public function render()

FILE: src/Form/Field/Display.php
  class Display (line 7) | class Display extends Field

FILE: src/Form/Field/Divider.php
  class Divider (line 7) | class Divider extends Field
    method __construct (line 11) | public function __construct($title = '')
    method render (line 16) | public function render()

FILE: src/Form/Field/Editor.php
  class Editor (line 7) | class Editor extends Field
    method render (line 13) | public function render()

FILE: src/Form/Field/Email.php
  class Email (line 5) | class Email extends Text
    method render (line 9) | public function render()

FILE: src/Form/Field/Embeds.php
  class Embeds (line 11) | class Embeds extends Field
    method __construct (line 24) | public function __construct($column, $arguments = [])
    method prepare (line 45) | public function prepare($input)
    method getValidator (line 55) | public function getValidator(array $input)
    method formatValidationAttribute (line 144) | protected function formatValidationAttribute($input, $label, $column)
    method resetInputKey (line 179) | public function resetInputKey(array &$input, array $column)
    method getEmbeddedData (line 210) | protected function getEmbeddedData()
    method buildEmbeddedForm (line 232) | protected function buildEmbeddedForm()
    method getEmbeddedColumnName (line 254) | protected function getEmbeddedColumnName()
    method isNested (line 268) | protected function isNested()
    method render (line 278) | public function render()

FILE: src/Form/Field/Fieldset.php
  class Fieldset (line 7) | class Fieldset
    method __construct (line 11) | public function __construct()
    method start (line 16) | public function start($title)
    method end (line 39) | public function end()
    method collapsed (line 44) | public function collapsed()

FILE: src/Form/Field/File.php
  class File (line 9) | class File extends Field
    method __construct (line 39) | public function __construct($column, $arguments = [])
    method defaultDirectory (line 51) | public function defaultDirectory()
    method getValidator (line 59) | public function getValidator(array $input)
    method prepare (line 103) | public function prepare($file)
    method uploadAndDeleteOriginal (line 125) | protected function uploadAndDeleteOriginal(UploadedFile $file)
    method preview (line 147) | protected function preview()
    method hidePreview (line 157) | public function hidePreview()
    method initialCaption (line 171) | protected function initialCaption($caption)
    method initialPreviewConfig (line 179) | protected function initialPreviewConfig()
    method setupScripts (line 191) | protected function setupScripts($options)
    method render (line 236) | public function render()

FILE: src/Form/Field/HasMany.php
  class HasMany (line 18) | class HasMany extends Field
    method __construct (line 84) | public function __construct($relationName, $arguments = [])
    method getValidator (line 107) | public function getValidator(array $input)
    method distinctFields (line 187) | public function distinctFields(array $fields)
    method appendDistinctRules (line 199) | protected function appendDistinctRules(array &$rules)
    method formatValidationAttribute (line 215) | protected function formatValidationAttribute($input, $label, $column)
    method resetInputKey (line 250) | protected function resetInputKey(array &$input, array $column)
    method prepare (line 313) | public function prepare($input)
    method buildNestedForm (line 329) | protected function buildNestedForm($column, \Closure $builder, $model ...
    method getKeyName (line 353) | protected function getKeyName()
    method mode (line 371) | public function mode($mode)
    method useTab (line 383) | public function useTab()
    method useTable (line 393) | public function useTable()
    method buildRelatedForms (line 405) | protected function buildRelatedForms()
    method setupScript (line 464) | protected function setupScript($script)
    method setupScriptForDefaultView (line 478) | protected function setupScriptForDefaultView($templateScript)
    method setupScriptForTabView (line 523) | protected function setupScriptForTabView($templateScript)
    method setupScriptForTableView (line 578) | protected function setupScriptForTableView($templateScript)
    method disableCreate (line 626) | public function disableCreate()
    method disableDelete (line 638) | public function disableDelete()
    method render (line 652) | public function render()
    method renderTable (line 685) | protected function renderTable()

FILE: src/Form/Field/HasValuePicker.php
  type HasValuePicker (line 11) | trait HasValuePicker
    method pick (line 24) | public function pick($picker, $column = '')
    method pickMany (line 36) | public function pickMany($picker, $column = '', $separator = ';')
    method mountPicker (line 48) | protected function mountPicker(\Closure $callback = null)
    method getRules (line 58) | public function getRules()
    method renderFilePicker (line 70) | protected function renderFilePicker()

FILE: src/Form/Field/Hidden.php
  class Hidden (line 7) | class Hidden extends Field

FILE: src/Form/Field/Html.php
  class Html (line 8) | class Html extends Field
    method __construct (line 33) | public function __construct($html, $arguments)
    method plain (line 43) | public function plain()
    method render (line 55) | public function render()

FILE: src/Form/Field/Icon.php
  class Icon (line 5) | class Icon extends Text
    method render (line 17) | public function render()

FILE: src/Form/Field/Id.php
  class Id (line 7) | class Id extends Field

FILE: src/Form/Field/Image.php
  class Image (line 7) | class Image extends File
    method prepare (line 28) | public function prepare($image)
    method guessPreviewType (line 56) | public function guessPreviewType($file)

FILE: src/Form/Field/ImageField.php
  type ImageField (line 11) | trait ImageField
    method defaultDirectory (line 32) | public function defaultDirectory()
    method callInterventionMethods (line 44) | public function callInterventionMethods($target)
    method __call (line 70) | public function __call($method, $arguments)
    method render (line 93) | public function render()
    method thumbnail (line 107) | public function thumbnail($name, int $width = null, int $height = null)
    method destroyThumbnail (line 127) | public function destroyThumbnail()
    method destroyThumbnailFile (line 157) | public function destroyThumbnailFile($original, $name)
    method uploadAndDeleteOriginalThumbnail (line 179) | protected function uploadAndDeleteOriginalThumbnail(UploadedFile $file)

FILE: src/Form/Field/Ip.php
  class Ip (line 5) | class Ip extends Text
    method render (line 22) | public function render()

FILE: src/Form/Field/KeyValue.php
  class KeyValue (line 9) | class KeyValue extends Field
    method fill (line 23) | public function fill($data)
    method getValidator (line 35) | public function getValidator(array $input)
    method setupScript (line 63) | protected function setupScript()
    method prepare (line 79) | public function prepare($value)
    method render (line 84) | public function render()

FILE: src/Form/Field/ListField.php
  class ListField (line 9) | class ListField extends Field
    method max (line 37) | public function max(int $size)
    method min (line 51) | public function min(int $size)
    method fill (line 65) | public function fill($data)
    method getValidator (line 77) | public function getValidator(array $input)
    method setupScript (line 118) | protected function setupScript()
    method prepare (line 137) | public function prepare($value)
    method render (line 145) | public function render()

FILE: src/Form/Field/Listbox.php
  class Listbox (line 10) | class Listbox extends MultipleSelect
    method settings (line 22) | public function settings(array $settings)
    method height (line 36) | public function height($height = 200)
    method loadRemoteOptions (line 44) | protected function loadRemoteOptions($url, $parameters = [], $options ...
    method render (line 74) | public function render()

FILE: src/Form/Field/Map.php
  class Map (line 7) | class Map extends Field
    method getAssets (line 26) | public static function getAssets()
    method __construct (line 45) | public function __construct($column, $arguments)
    method useGoogleMap (line 74) | public function useGoogleMap()
    method useTencentMap (line 114) | public function useTencentMap()
    method useYandexMap (line 163) | public function useYandexMap()

FILE: src/Form/Field/Mobile.php
  class Mobile (line 5) | class Mobile extends Text
    method render (line 20) | public function render()

FILE: src/Form/Field/Month.php
  class Month (line 5) | class Month extends Date

FILE: src/Form/Field/MultipleFile.php
  class MultipleFile (line 10) | class MultipleFile extends Field
    method __construct (line 40) | public function __construct($column, $arguments = [])
    method defaultDirectory (line 52) | public function defaultDirectory()
    method getValidator (line 60) | public function getValidator(array $input)
    method hydrateFiles (line 90) | protected function hydrateFiles(array $value)
    method sortFiles (line 113) | protected function sortFiles($order)
    method prepare (line 134) | public function prepare($files)
    method original (line 163) | public function original()
    method prepareForeach (line 179) | protected function prepareForeach(UploadedFile $file = null)
    method preview (line 193) | protected function preview()
    method initialCaption (line 207) | protected function initialCaption($caption)
    method initialPreviewConfig (line 221) | protected function initialPreviewConfig()
    method getRelatedKeyName (line 249) | protected function getRelatedKeyName()
    method sortable (line 263) | public function sortable()
    method setupScripts (line 273) | protected function setupScripts($options)
    method render (line 338) | public function render()
    method destroy (line 363) | public function destroy($key)
    method destroyFromHasMany (line 393) | public function destroyFromHasMany($key)

FILE: src/Form/Field/MultipleImage.php
  class MultipleImage (line 7) | class MultipleImage extends MultipleFile
    method prepareForeach (line 30) | protected function prepareForeach(UploadedFile $image = null)

FILE: src/Form/Field/MultipleSelect.php
  class MultipleSelect (line 10) | class MultipleSelect extends Select
    method getOtherKey (line 26) | protected function getOtherKey()
    method fill (line 53) | public function fill($data)
    method setOriginal (line 95) | public function setOriginal($data)
    method prepare (line 124) | public function prepare($value)

FILE: src/Form/Field/Nullable.php
  class Nullable (line 7) | class Nullable extends Field
    method __construct (line 9) | public function __construct()
    method __call (line 13) | public function __call($method, $parameters)

FILE: src/Form/Field/Number.php
  class Number (line 5) | class Number extends Text
    method render (line 11) | public function render()
    method min (line 39) | public function min($value)
    method max (line 53) | public function max($value)

FILE: src/Form/Field/Password.php
  class Password (line 5) | class Password extends Text
    method render (line 7) | public function render()

FILE: src/Form/Field/PlainInput.php
  type PlainInput (line 5) | trait PlainInput
    method prepend (line 22) | public function prepend($string)
    method append (line 36) | public function append($string)
    method initPlainInput (line 48) | protected function initPlainInput()
    method defaultAttribute (line 61) | protected function defaultAttribute($attribute, $value)

FILE: src/Form/Field/Radio.php
  class Radio (line 8) | class Radio extends Field
    method options (line 34) | public function options($options = [])
    method checked (line 52) | public function checked($checked = [])
    method inline (line 69) | public function inline()
    method stacked (line 81) | public function stacked()
    method values (line 95) | public function values($values)
    method render (line 103) | public function render()

FILE: src/Form/Field/RadioButton.php
  class RadioButton (line 7) | class RadioButton extends Radio
    method addScript (line 14) | protected function addScript()
    method render (line 29) | public function render()

FILE: src/Form/Field/RadioCard.php
  class RadioCard (line 7) | class RadioCard extends RadioButton
    method addStyle (line 9) | protected function addStyle()
    method render (line 37) | public function render()

FILE: src/Form/Field/Rate.php
  class Rate (line 5) | class Rate extends Text
    method render (line 7) | public function render()

FILE: src/Form/Field/Select.php
  class Select (line 12) | class Select extends Field
    method options (line 52) | public function options($options = [])
    method groups (line 99) | public function groups(array $groups)
    method load (line 116) | public function load($field, $sourceUrl, $idField = 'id', $textField =...
    method loads (line 170) | public function loads($fields = [], $sourceUrls = [], $idField = 'id',...
    method model (line 227) | public function model($model, $idField = 'id', $textField = 'name')
    method loadRemoteOptions (line 267) | protected function loadRemoteOptions($url, $parameters = [], $options ...
    method ajax (line 316) | public function ajax($url, $idField = 'id', $textField = 'text')
    method config (line 377) | public function config($key, $val)
    method readOnly (line 387) | public function readOnly()
    method render (line 415) | public function render()

FILE: src/Form/Field/Slider.php
  class Slider (line 7) | class Slider extends Field
    method render (line 24) | public function render()

FILE: src/Form/Field/SwitchField.php
  class SwitchField (line 8) | class SwitchField extends Field
    method setSize (line 25) | public function setSize($size)
    method states (line 32) | public function states($states = [])
    method prepare (line 41) | public function prepare($value)
    method render (line 50) | public function render()

FILE: src/Form/Field/Table.php
  class Table (line 8) | class Table extends HasMany
    method __construct (line 21) | public function __construct($column, $arguments = [])
    method buildRelatedForms (line 38) | protected function buildRelatedForms()
    method prepare (line 68) | public function prepare($input)
    method getKeyName (line 83) | protected function getKeyName()
    method buildNestedForm (line 92) | protected function buildNestedForm($column, \Closure $builder, $key = ...
    method render (line 111) | public function render()

FILE: src/Form/Field/Tags.php
  class Tags (line 11) | class Tags extends Field
    method fill (line 60) | public function fill($data)
    method pluck (line 83) | public function pluck($visibleColumn, $key)
    method options (line 102) | public function options($options = [])
    method separators (line 128) | public function separators($separators = [])
    method saving (line 147) | public function saving(\Closure $saveAction)
    method prepare (line 157) | public function prepare($value)
    method value (line 179) | public function value($value = null)
    method render (line 193) | public function render()
    method setupScript (line 213) | protected function setupScript()

FILE: src/Form/Field/Text.php
  class Text (line 7) | class Text extends Field
    method icon (line 29) | public function icon($icon)
    method render (line 41) | public function render()
    method inputmask (line 70) | public function inputmask($options)
    method datalist (line 86) | public function datalist($entries = [])
    method withoutIcon (line 104) | public function withoutIcon()

FILE: src/Form/Field/Textarea.php
  class Textarea (line 8) | class Textarea extends Field
    method rows (line 31) | public function rows($rows = 5)
    method render (line 41) | public function render()
    method addPickBtn (line 64) | protected function addPickBtn($btn)

FILE: src/Form/Field/Time.php
  class Time (line 5) | class Time extends Date
    method render (line 9) | public function render()

FILE: src/Form/Field/TimeRange.php
  class TimeRange (line 5) | class TimeRange extends DateRange

FILE: src/Form/Field/Timezone.php
  class Timezone (line 7) | class Timezone extends Select
    method render (line 11) | public function render()

FILE: src/Form/Field/UploadField.php
  type UploadField (line 11) | trait UploadField
    method initStorage (line 102) | protected function initStorage()
    method setupDefaultOptions (line 112) | protected function setupDefaultOptions()
    method setupPreviewOptions (line 146) | protected function setupPreviewOptions()
    method guessPreviewType (line 156) | protected function guessPreviewType($file)
    method downloadable (line 192) | public function downloadable($downloadable = true)
    method removable (line 204) | public function removable()
    method retainable (line 216) | public function retainable($retainable = true)
    method options (line 230) | public function options($options = [])
    method disk (line 246) | public function disk($disk)
    method move (line 274) | public function move($directory, $name = null)
    method dir (line 290) | public function dir($dir)
    method name (line 306) | public function name($name)
    method uniqueName (line 320) | public function uniqueName()
    method sequenceName (line 332) | public function sequenceName()
    method getStoreName (line 346) | protected function getStoreName(UploadedFile $file)
    method getDirectory (line 372) | public function getDirectory()
    method pathColumn (line 388) | public function pathColumn($column = 'path')
    method upload (line 402) | protected function upload(UploadedFile $file)
    method renameIfExists (line 420) | public function renameIfExists(UploadedFile $file)
    method objectUrl (line 434) | public function objectUrl($path)
    method generateUniqueName (line 458) | protected function generateUniqueName(UploadedFile $file)
    method generateSequenceName (line 470) | protected function generateSequenceName(UploadedFile $file)
    method destroy (line 490) | public function destroy()
    method storagePermission (line 512) | public function storagePermission($permission)

FILE: src/Form/Field/Url.php
  class Url (line 5) | class Url extends Text
    method render (line 9) | public function render()

FILE: src/Form/Field/ValuePicker.php
  class ValuePicker (line 9) | class ValuePicker
    method __construct (line 49) | public function __construct($selecteable, $column = '', $multiple = fa...
    method getLoadUrl (line 62) | protected function getLoadUrl()
    method mount (line 75) | public function mount(Field $field, \Closure $callback = null)
    method addPickBtn (line 97) | protected function addPickBtn(\Closure $callback = null)
    method getPreview (line 119) | public function getPreview(string $field)

FILE: src/Form/Field/Year.php
  class Year (line 5) | class Year extends Date

FILE: src/Form/Footer.php
  class Footer (line 8) | class Footer implements Renderable
    method __construct (line 48) | public function __construct(Builder $builder)
    method disableReset (line 58) | public function disableReset(bool $disable = true)
    method disableSubmit (line 74) | public function disableSubmit(bool $disable = true)
    method disableViewCheck (line 90) | public function disableViewCheck(bool $disable = true)
    method disableEditingCheck (line 106) | public function disableEditingCheck(bool $disable = true)
    method disableCreatingCheck (line 122) | public function disableCreatingCheck(bool $disable = true)
    method checkView (line 138) | public function checkView()
    method checkCreating (line 150) | public function checkCreating()
    method checkEditing (line 162) | public function checkEditing()
    method setupScript (line 172) | protected function setupScript()
    method render (line 189) | public function render()

FILE: src/Form/Layout/Column.php
  class Column (line 11) | class Column
    method __construct (line 28) | public function __construct($width = 12)
    method add (line 39) | public function add(Field $field)
    method removeFields (line 49) | public function removeFields($fields)
    method fields (line 61) | public function fields()
    method setWidth (line 71) | public function setWidth($width)
    method width (line 81) | public function width()

FILE: src/Form/Layout/Layout.php
  class Layout (line 11) | class Layout
    method __construct (line 33) | public function __construct(Form $form)
    method addField (line 47) | public function addField(Form\Field $field)
    method column (line 58) | public function column($width, \Closure $closure)
    method columns (line 80) | public function columns()
    method removeReservedFields (line 94) | public function removeReservedFields(array $fields)

FILE: src/Form/NestedForm.php
  class NestedForm (line 55) | class NestedForm
    method __construct (line 107) | public function __construct($relation, $model = null)
    method model (line 121) | public function model()
    method getKey (line 131) | public function getKey()
    method setKey (line 155) | public function setKey($key)
    method setForm (line 169) | public function setForm(Form $form = null)
    method setWidgetForm (line 183) | public function setWidgetForm(WidgetForm $form = null)
    method getForm (line 195) | public function getForm()
    method setOriginal (line 208) | public function setOriginal($data, $relatedKeyName = null)
    method prepare (line 235) | public function prepare($input)
    method setFieldOriginalValue (line 252) | protected function setFieldOriginalValue($key)
    method prepareRecord (line 271) | protected function prepareRecord($record)
    method fetchColumnValue (line 317) | protected function fetchColumnValue($data, $columns)
    method pushField (line 341) | public function pushField(Field $field)
    method fields (line 353) | public function fields()
    method fill (line 365) | public function fill(array $data)
    method getTemplateHtmlAndScript (line 380) | public function getTemplateHtmlAndScript()
    method formatField (line 409) | protected function formatField(Field $field)
    method __call (line 442) | public function __call($method, $arguments)

FILE: src/Form/Row.php
  class Row (line 8) | class Row implements Renderable
    method __construct (line 44) | public function __construct(\Closure $callback, Form $form)
    method getFields (line 58) | public function getFields()
    method width (line 70) | public function width($width = 12)
    method render (line 82) | public function render()
    method __call (line 95) | public function __call($method, $arguments)

FILE: src/Form/Tab.php
  class Tab (line 8) | class Tab
    method __construct (line 30) | public function __construct(Form $form)
    method append (line 46) | public function append($title, \Closure $content, $active = false)
    method collectFields (line 64) | protected function collectFields(\Closure $content)
    method getTabs (line 104) | public function getTabs()
    method isEmpty (line 122) | public function isEmpty()

FILE: src/Form/Tools.php
  class Tools (line 10) | class Tools implements Renderable
    method __construct (line 43) | public function __construct(Builder $builder)
    method append (line 57) | public function append($tool)
    method prepend (line 71) | public function prepend($tool)
    method disableList (line 83) | public function disableList(bool $disable = true)
    method disableDelete (line 99) | public function disableDelete(bool $disable = true)
    method disableView (line 115) | public function disableView(bool $disable = true)
    method getListPath (line 131) | protected function getListPath()
    method getDeletePath (line 141) | protected function getDeletePath()
    method getViewPath (line 151) | protected function getViewPath()
    method form (line 167) | public function form()
    method renderList (line 177) | protected function renderList()
    method renderView (line 193) | protected function renderView()
    method renderDelete (line 211) | protected function renderDelete()
    method add (line 285) | public function add($tool)
    method disableBackButton (line 297) | public function disableBackButton()
    method disableListButton (line 308) | public function disableListButton()
    method renderCustomTools (line 320) | protected function renderCustomTools($tools)
    method render (line 349) | public function render()

FILE: src/Grid.php
  class Grid (line 21) | class Grid
    method __construct (line 175) | public function __construct(Eloquent $model, Closure $builder = null)
    method initialize (line 189) | protected function initialize()
    method init (line 205) | public static function init(Closure $callback = null)
    method callInitCallbacks (line 213) | protected function callInitCallbacks()
    method option (line 232) | public function option($key, $value = null)
    method getKeyName (line 248) | public function getKeyName()
    method column (line 261) | public function column($name, $label = '')
    method columns (line 285) | public function columns($columns = [])
    method addColumn (line 312) | protected function addColumn($column = '', $label = '')
    method getColumns (line 327) | public function getColumns()
    method addRelationColumn (line 340) | protected function addRelationColumn($name, $label = '')
    method addJsonColumn (line 369) | protected function addJsonColumn($name, $label = '')
    method prependColumn (line 386) | public function prependColumn($column = '', $label = '')
    method model (line 401) | public function model()
    method paginate (line 413) | public function paginate($perPage = 20)
    method paginator (line 427) | public function paginator()
    method disablePagination (line 437) | public function disablePagination(bool $disable = true)
    method showPagination (line 449) | public function showPagination()
    method perPages (line 459) | public function perPages(array $perPages)
    method disablePerPageSelector (line 469) | public function disablePerPageSelector(bool $disable = true)
    method disableRowSelector (line 479) | public function disableRowSelector(bool $disable = true)
    method prependRowSelectorColumn (line 489) | protected function prependRowSelectorColumn()
    method applyColumnFilter (line 507) | protected function applyColumnFilter()
    method applyColumnSearch (line 517) | protected function applyColumnSearch()
    method applyQuery (line 525) | public function applyQuery()
    method addDefaultColumns (line 541) | protected function addDefaultColumns()
    method build (line 553) | public function build()
    method buildRows (line 588) | protected function buildRows(array $data, Collection $collection)
    method rows (line 606) | public function rows(Closure $callable = null)
    method getCreateUrl (line 620) | public function getCreateUrl()
    method disableCreation (line 642) | public function disableCreation()
    method disableCreateButton (line 652) | public function disableCreateButton(bool $disable = true)
    method disableDefineEmptyPage (line 662) | public function disableDefineEmptyPage(bool $disable = true)
    method showDefineEmptyPage (line 672) | public function showDefineEmptyPage()
    method showCreateBtn (line 682) | public function showCreateBtn()
    method renderCreateButton (line 692) | public function renderCreateButton()
    method resource (line 704) | public function resource($path = null)
    method handleGetMutatorColumn (line 727) | protected function handleGetMutatorColumn($method, $label)
    method handleRelationColumn (line 744) | protected function handleRelationColumn($method, $label)
    method __call (line 788) | public function __call($method, $arguments)
    method with (line 818) | public function with($variables = [])
    method variables (line 830) | protected function variables()
    method setView (line 843) | public function setView($view, $variables = [])
    method setTitle (line 859) | public function setTitle($title)
    method setRelation (line 873) | public function setRelation(Relations\Relation $relation)
    method setResource (line 887) | public function setResource($path)
    method rendering (line 901) | public function rendering(callable $callback)
    method callRenderingCallback (line 913) | protected function callRenderingCallback()
    method render (line 925) | public function render()

FILE: src/Grid/Actions/Delete.php
  class Delete (line 10) | class Delete extends RowAction
    method name (line 15) | public function name()
    method handle (line 25) | public function handle(Model $model)
    method dialog (line 46) | public function dialog()

FILE: src/Grid/Actions/Edit.php
  class Edit (line 7) | class Edit extends RowAction
    method name (line 12) | public function name()
    method href (line 20) | public function href()

FILE: src/Grid/Actions/Show.php
  class Show (line 7) | class Show extends RowAction
    method name (line 12) | public function name()
    method href (line 20) | public function href()

FILE: src/Grid/Column.php
  class Column (line 15) | class Column
    method __construct (line 110) | public function __construct($name, $label)
    method initAttributes (line 122) | protected function initAttributes()
    method define (line 135) | public static function define($name, $definition)
    method setGrid (line 145) | public function setGrid(Grid $grid)
    method setModel (line 157) | public function setModel($model)
    method setOriginalGridModels (line 169) | public static function setOriginalGridModels(Collection $collection)
    method setAttributes (line 181) | public function setAttributes($attributes = [], $key = null)
    method getAttributes (line 207) | public static function getAttributes($name, $key = null)
    method formatHtmlAttributes (line 225) | public function formatHtmlAttributes()
    method style (line 242) | public function style($style)
    method width (line 254) | public function width(int $width)
    method color (line 266) | public function color($color)
    method getOriginal (line 276) | public function getOriginal()
    method getName (line 286) | public function getName()
    method getClassName (line 294) | public function getClassName()
    method formatLabel (line 308) | protected function formatLabel($label)
    method getLabel (line 324) | public function getLabel()
    method setRelation (line 337) | public function setRelation($relation, $relationColumn = null)
    method isRelation (line 350) | protected function isRelation()
    method sortable (line 362) | public function sortable($cast = null)
    method cast (line 374) | public function cast($cast)
    method help (line 388) | public function help($help = '')
    method filter (line 400) | public function filter($builder = null)
    method display (line 412) | public function display(Closure $callback)
    method displayUsing (line 427) | public function displayUsing($abstract, $arguments = [])
    method hide (line 446) | public function hide()
    method totalRow (line 460) | public function totalRow($display = null)
    method action (line 474) | public function action($action)
    method hasDisplayCallbacks (line 499) | protected function hasDisplayCallbacks()
    method callDisplayCallbacks (line 512) | protected function callDisplayCallbacks($value, $key)
    method bindOriginalRowModel (line 539) | protected function bindOriginalRowModel(Closure $callback, $key)
    method fill (line 553) | public function fill(array $data)
    method isDefinedColumn (line 580) | protected function isDefinedColumn()
    method useDefinedColumn (line 590) | protected function useDefinedColumn()
    method htmlEntityEncode (line 625) | protected function htmlEntityEncode($item)
    method resolveDisplayer (line 646) | protected function resolveDisplayer($abstract, $arguments)
    method callSupportDisplayer (line 663) | protected function callSupportDisplayer($abstract, $arguments)
    method callBuiltinDisplayer (line 686) | protected function callBuiltinDisplayer($abstract, $arguments)
    method __call (line 719) | public function __call($method, $arguments)

FILE: src/Grid/Column/CheckFilter.php
  class CheckFilter (line 8) | class CheckFilter extends Filter
    method __construct (line 20) | public function __construct(array $options)
    method addBinding (line 36) | public function addBinding($value, Model $model)
    method addScript (line 50) | protected function addScript()
    method render (line 75) | public function render()

FILE: src/Grid/Column/ExtendDisplay.php
  type ExtendDisplay (line 34) | trait ExtendDisplay
    method extend (line 75) | public static function extend($name, $displayer)
    method searchable (line 85) | public function searchable()
    method bindSearchQuery (line 108) | public function bindSearchQuery(Model $model)
    method using (line 123) | public function using(array $values, $default = null)
    method replace (line 141) | public function replace(array $replacements)
    method repeat (line 158) | public function repeat($input, $seperator = '')
    method view (line 182) | public function view($view)
    method filesize (line 196) | public function filesize()
    method gravatar (line 210) | public function gravatar($size = 30)
    method loading (line 231) | public function loading($values = [], $others = [])
    method icon (line 252) | public function icon(array $setting, $default = '')
    method diffForHumans (line 274) | public function diffForHumans($locale = null)
    method bool (line 293) | public function bool(array $map = [], $default = false)
    method default (line 309) | public function default($default = '-')
    method dot (line 324) | public function dot($options = [], $default = '')

FILE: src/Grid/Column/Filter.php
  class Filter (line 10) | class Filter implements Renderable
    method setParent (line 25) | public function setParent(Column $column)
    method getColumnName (line 35) | public function getColumnName()
    method getFilterValue (line 47) | public function getFilterValue($default = '')
    method getFormAction (line 57) | public function getFormAction()
    method trans (line 76) | protected function trans($key)
    method addBinding (line 87) | public function addBinding($value, Model $model)
    method render (line 95) | public function render()

FILE: src/Grid/Column/HasHeader.php
  type HasHeader (line 10) | trait HasHeader
    method addHeader (line 29) | public function addHeader($header)
    method addSorter (line 48) | protected function addSorter($cast = null)
    method addHelp (line 64) | protected function addHelp($message)
    method addFilter (line 74) | protected function addFilter($type = null, $formal = null)
    method bindFilterQuery (line 104) | public function bindFilterQuery(Model $model)
    method renderHeader (line 116) | public function renderHeader()

FILE: src/Grid/Column/Help.php
  class Help (line 7) | class Help implements Renderable
    method __construct (line 19) | public function __construct($message = '')
    method render (line 29) | public function render()

FILE: src/Grid/Column/InlineEditing.php
  type InlineEditing (line 7) | trait InlineEditing
    method belongsTo (line 14) | public function belongsTo($selectable)
    method belongsToMany (line 28) | public function belongsToMany($selectable)
    method upload (line 42) | public function upload()
    method uplaodMany (line 52) | public function uplaodMany()
    method datetime (line 64) | public function datetime($format = 'YYYY-MM-DD HH:mm:ss')
    method date (line 76) | public function date()
    method time (line 88) | public function time()
    method year (line 98) | public function year()
    method month (line 108) | public function month()
    method day (line 118) | public function day()
    method input (line 128) | protected function input($mask = [])
    method text (line 138) | public function text()
    method ip (line 148) | public function ip()
    method email (line 158) | public function email()
    method url (line 168) | public function url()
    method currency (line 178) | public function currency()
    method decimal (line 193) | public function decimal()
    method integer (line 206) | public function integer()
    method textarea (line 220) | public function textarea($rows = 5)
    method timezone (line 230) | public function timezone()
    method select (line 248) | public function select(array $options)
    method multipleSelect (line 260) | public function multipleSelect(array $options)
    method checkbox (line 272) | public function checkbox(array $options)
    method radio (line 284) | public function radio(array $options)
    method switch (line 296) | public function switch(array $states = [])
    method switchGroup (line 308) | public function switchGroup(array $columns = [], array $states = [])

FILE: src/Grid/Column/InputFilter.php
  class InputFilter (line 8) | class InputFilter extends Filter
    method __construct (line 20) | public function __construct($type)
    method addBinding (line 32) | public function addBinding($value, Model $model)
    method addScript (line 59) | protected function addScript()
    method render (line 86) | public function render()

FILE: src/Grid/Column/RangeFilter.php
  class RangeFilter (line 8) | class RangeFilter extends Filter
    method __construct (line 20) | public function __construct($type)
    method addBinding (line 35) | public function addBinding($value, Model $model)
    method addScript (line 52) | protected function addScript()
    method render (line 79) | public function render()

FILE: src/Grid/Column/Sorter.php
  class Sorter (line 7) | class Sorter implements Renderable
    method __construct (line 40) | public function __construct($sortName, $columnName, $cast)
    method isSorted (line 52) | protected function isSorted()
    method render (line 66) | public function render()

FILE: src/Grid/Concerns/CanDoubleClick.php
  type CanDoubleClick (line 7) | trait CanDoubleClick
    method enableDblClick (line 14) | public function enableDblClick()

FILE: src/Grid/Concerns/CanExportGrid.php
  type CanExportGrid (line 9) | trait CanExportGrid
    method handleExportRequest (line 23) | protected function handleExportRequest($forceExport = false)
    method getExporter (line 46) | protected function getExporter($scope)
    method exporter (line 58) | public function exporter($exporter)
    method getExportUrl (line 73) | public function getExportUrl($scope = 1, $args = null)
    method showExportBtn (line 89) | public function showExportBtn()
    method disableExport (line 99) | public function disableExport(bool $disable = true)
    method renderExportButton (line 109) | public function renderExportButton()
    method export (line 117) | public function export(\Closure $callback)

FILE: src/Grid/Concerns/CanFixColumns.php
  type CanFixColumns (line 8) | trait CanFixColumns
    method fixColumns (line 19) | public function fixColumns(int $head, int $tail = -1)
    method leftVisibleColumns (line 29) | public function leftVisibleColumns()
    method rightVisibleColumns (line 37) | public function rightVisibleColumns()

FILE: src/Grid/Concerns/CanFixHeader.php
  type CanFixHeader (line 7) | trait CanFixHeader
    method fixHeader (line 9) | public function fixHeader()

FILE: src/Grid/Concerns/CanHidesColumns.php
  type CanHidesColumns (line 9) | trait CanHidesColumns
    method disableColumnSelector (line 25) | public function disableColumnSelector(bool $disable = true)
    method showColumnSelector (line 33) | public function showColumnSelector()
    method renderColumnSelector (line 41) | public function renderColumnSelector()
    method hideColumns (line 53) | public function hideColumns($columns)
    method getVisibleColumnsFromQuery (line 71) | protected function getVisibleColumnsFromQuery()
    method visibleColumns (line 86) | public function visibleColumns()
    method visibleColumnNames (line 106) | public function visibleColumnNames()
    method getDefaultVisibleColumnNames (line 126) | public function getDefaultVisibleColumnNames()

FILE: src/Grid/Concerns/HasActions.php
  type HasActions (line 8) | trait HasActions
    method actions (line 31) | public function actions($actions)
    method getActionClass (line 45) | public function getActionClass()
    method setActionClass (line 63) | public function setActionClass(string $actionClass)
    method disableActions (line 77) | public function disableActions(bool $disable = true)
    method batchActions (line 89) | public function batchActions(Closure $closure)
    method disableBatchActions (line 103) | public function disableBatchActions(bool $disable = true)
    method appendActionsColumn (line 115) | protected function appendActionsColumn()

FILE: src/Grid/Concerns/HasElementNames.php
  type HasElementNames (line 5) | trait HasElementNames
    method setName (line 35) | public function setName($name)
    method getName (line 51) | public function getName()
    method getGridRowName (line 59) | public function getGridRowName()
    method getSelectAllName (line 67) | public function getSelectAllName()
    method getPerPageName (line 75) | public function getPerPageName()
    method getGridBatchName (line 83) | public function getGridBatchName()
    method getExportSelectedName (line 91) | public function getExportSelectedName()
    method getSelectedRowsName (line 99) | public function getSelectedRowsName()
    method elementNameWithPrefix (line 113) | protected function elementNameWithPrefix($name)

FILE: src/Grid/Concerns/HasFilter.php
  type HasFilter (line 9) | trait HasFilter
    method initFilter (line 23) | protected function initFilter()
    method disableFilter (line 35) | public function disableFilter(bool $disable = true)
    method getFilter (line 47) | public function getFilter()
    method applyFilter (line 59) | public function applyFilter($toArray = true)
    method filter (line 73) | public function filter(Closure $callback)
    method renderFilter (line 83) | public function renderFilter()
    method expandFilter (line 97) | public function expandFilter()

FILE: src/Grid/Concerns/HasFooter.php
  type HasFooter (line 8) | trait HasFooter
    method footer (line 22) | public function footer(Closure $closure = null)
    method renderFooter (line 38) | public function renderFooter()

FILE: src/Grid/Concerns/HasHeader.php
  type HasHeader (line 8) | trait HasHeader
    method header (line 22) | public function header(Closure $closure = null)
    method renderHeader (line 36) | public function renderHeader()

FILE: src/Grid/Concerns/HasHotKeys.php
  type HasHotKeys (line 7) | trait HasHotKeys
    method addHotKeyScript (line 9) | protected function addHotKeyScript()
    method enableHotKeys (line 57) | public function enableHotKeys()

FILE: src/Grid/Concerns/HasQuickCreate.php
  type HasQuickCreate (line 7) | trait HasQuickCreate
    method quickCreate (line 21) | public function quickCreate(\Closure $closure)
    method hasQuickCreate (line 35) | public function hasQuickCreate()
    method renderQuickCreate (line 45) | public function renderQuickCreate()

FILE: src/Grid/Concerns/HasQuickSearch.php
  type HasQuickSearch (line 20) | trait HasQuickSearch
    method quickSearch (line 37) | public function quickSearch($search = null)
    method applyQuickSearch (line 55) | protected function applyQuickSearch()
    method addWhereBindings (line 88) | protected function addWhereBindings(Builder $builder, $query)
    method parseQueryBindings (line 132) | protected function parseQueryBindings(array $queries)
    method addWhereLikeBinding (line 171) | protected function addWhereLikeBinding(Builder $builder, string $colum...
    method addWhereDatetimeBinding (line 190) | protected function addWhereDatetimeBinding(Builder $builder, string $c...
    method addWhereInBinding (line 206) | protected function addWhereInBinding(Builder $builder, string $column,...
    method addWhereBetweenBinding (line 232) | protected function addWhereBetweenBinding(Builder $builder, string $co...
    method addWhereBasicBinding (line 248) | protected function addWhereBasicBinding(Builder $builder, string $colu...

FILE: src/Grid/Concerns/HasSelector.php
  type HasSelector (line 11) | trait HasSelector
    method selector (line 23) | public function selector(\Closure $closure)
    method applySelectorQuery (line 41) | protected function applySelectorQuery()
    method renderSelector (line 75) | public function renderSelector()

FILE: src/Grid/Concerns/HasTools.php
  type HasTools (line 8) | trait HasTools
    method initTools (line 24) | protected function initTools()
    method disableTools (line 36) | public function disableTools(bool $disable = true)
    method tools (line 48) | public function tools(Closure $callback)
    method renderHeaderTools (line 58) | public function renderHeaderTools()
    method showTools (line 68) | public function showTools()

FILE: src/Grid/Concerns/HasTotalRow.php
  type HasTotalRow (line 8) | trait HasTotalRow
    method addTotalRow (line 21) | public function addTotalRow($column, $callback)
    method renderTotalRow (line 31) | public function renderTotalRow($columns = null)

FILE: src/Grid/Displayers/AbstractDisplayer.php
  class AbstractDisplayer (line 9) | abstract class AbstractDisplayer
    method __construct (line 39) | public function __construct($value, Grid $grid, Column $column, $row)
    method getValue (line 50) | public function getValue()
    method getGrid (line 58) | public function getGrid()
    method getColumn (line 66) | public function getColumn()
    method getKey (line 76) | public function getKey()
    method getAttribute (line 86) | public function getAttribute($key)
    method getResource (line 96) | public function getResource()
    method getName (line 104) | public function getName()
    method getClassName (line 112) | public function getClassName()
    method getPayloadName (line 122) | protected function getPayloadName($name = '')
    method trans (line 138) | protected function trans($text)
    method display (line 148) | abstract public function display();

FILE: src/Grid/Displayers/Actions.php
  class Actions (line 7) | class Actions extends AbstractDisplayer
    method append (line 52) | public function append($action)
    method prepend (line 66) | public function prepend($action)
    method getRouteKey (line 78) | public function getRouteKey()
    method disableView (line 88) | public function disableView(bool $disable = true)
    method disableDelete (line 104) | public function disableDelete(bool $disable = true)
    method disableEdit (line 120) | public function disableEdit(bool $disable = true)
    method disableAll (line 136) | public function disableAll()
    method setResource (line 150) | public function setResource($resource)
    method getResource (line 162) | public function getResource()
    method display (line 170) | public function display($callback = null)
    method renderView (line 197) | protected function renderView()
    method renderEdit (line 211) | protected function renderEdit()
    method renderDelete (line 225) | protected function renderDelete()
    method setupDeleteScript (line 236) | protected function setupDeleteScript()
    method setTrans (line 299) | public function setTrans($tans)

FILE: src/Grid/Displayers/Badge.php
  class Badge (line 8) | class Badge extends AbstractDisplayer
    method display (line 10) | public function display($style = 'red')

FILE: src/Grid/Displayers/BelongsTo.php
  class BelongsTo (line 8) | class BelongsTo extends AbstractDisplayer
    method getLoadUrl (line 15) | protected function getLoadUrl($selectable, $multiple = 0)
    method getOriginalData (line 26) | protected function getOriginalData()
    method display (line 37) | public function display($selectable = null, $column = '')

FILE: src/Grid/Displayers/BelongsToMany.php
  class BelongsToMany (line 8) | class BelongsToMany extends BelongsTo
    method getOtherKey (line 24) | protected function getOtherKey()
    method getOriginalData (line 50) | protected function getOriginalData()

FILE: src/Grid/Displayers/Button.php
  class Button (line 5) | class Button extends AbstractDisplayer
    method display (line 7) | public function display($style = null)

FILE: src/Grid/Displayers/Carousel.php
  class Carousel (line 9) | class Carousel extends AbstractDisplayer
    method display (line 11) | public function display(int $width = 300, int $height = 200, $server =...

FILE: src/Grid/Displayers/Checkbox.php
  class Checkbox (line 8) | class Checkbox extends AbstractDisplayer
    method display (line 10) | public function display($options = [])

FILE: src/Grid/Displayers/ContextMenuActions.php
  class ContextMenuActions (line 5) | class ContextMenuActions extends DropdownActions

FILE: src/Grid/Displayers/Copyable.php
  class Copyable (line 12) | class Copyable extends AbstractDisplayer
    method addScript (line 14) | protected function addScript()
    method display (line 34) | public function display()

FILE: src/Grid/Displayers/Datetime.php
  class Datetime (line 7) | class Datetime extends AbstractDisplayer
    method display (line 9) | public function display($format = '')

FILE: src/Grid/Displayers/Downloadable.php
  class Downloadable (line 8) | class Downloadable extends AbstractDisplayer
    method display (line 10) | public function display($server = '')

FILE: src/Grid/Displayers/DropdownActions.php
  class DropdownActions (line 11) | class DropdownActions extends Actions
    method add (line 35) | public function add(RowAction $action)
    method prependDefaultActions (line 47) | protected function prependDefaultActions()
    method prepareAction (line 62) | protected function prepareAction(RowAction $action)
    method disableView (line 76) | public function disableView(bool $disable = true)
    method disableDelete (line 94) | public function disableDelete(bool $disable = true)
    method disableEdit (line 112) | public function disableEdit(bool $disable = true)
    method display (line 128) | public function display($callback = null)

FILE: src/Grid/Displayers/Editable.php
  class Editable (line 8) | class Editable extends AbstractDisplayer
    method addOptions (line 41) | public function addOptions($options = [])
    method addAttributes (line 51) | public function addAttributes($attributes = [])
    method text (line 59) | public function text()
    method textarea (line 66) | public function textarea()
    method select (line 75) | public function select($options = [])
    method date (line 100) | public function date()
    method datetime (line 108) | public function datetime()
    method year (line 116) | public function year()
    method month (line 124) | public function month()
    method day (line 132) | public function day()
    method time (line 140) | public function time()
    method combodate (line 150) | public function combodate($format = 'YYYY-MM-DD')
    method buildEditableOptions (line 167) | protected function buildEditableOptions(array $arguments = [])
    method display (line 177) | public function display()

FILE: src/Grid/Displayers/Expand.php
  class Expand (line 9) | class Expand extends AbstractDisplayer
    method display (line 13) | public function display($callback = null, $isExpand = false)
    method getLoadUrl (line 45) | protected function getLoadUrl()

FILE: src/Grid/Displayers/Image.php
  class Image (line 8) | class Image extends AbstractDisplayer
    method display (line 10) | public function display($server = '', $width = 200, $height = 200)

FILE: src/Grid/Displayers/Input.php
  class Input (line 7) | class Input extends AbstractDisplayer
    method display (line 9) | public function display($mask = '')

FILE: src/Grid/Displayers/Label.php
  class Label (line 8) | class Label extends AbstractDisplayer
    method display (line 10) | public function display($style = 'success')

FILE: src/Grid/Displayers/Limit.php
  class Limit (line 8) | class Limit extends AbstractDisplayer
    method addScript (line 10) | protected function addScript()
    method display (line 21) | public function display($limit = 100, $end = '...')

FILE: src/Grid/Displayers/Link.php
  class Link (line 5) | class Link extends AbstractDisplayer
    method display (line 7) | public function display($callback = '', $target = '_blank')

FILE: src/Grid/Displayers/Modal.php
  class Modal (line 9) | class Modal extends AbstractDisplayer
    method getLoadUrl (line 21) | protected function getLoadUrl()
    method display (line 33) | public function display($callback = null)

FILE: src/Grid/Displayers/MultipleSelect.php
  class MultipleSelect (line 8) | class MultipleSelect extends AbstractDisplayer
    method display (line 10) | public function display($options = [])

FILE: src/Grid/Displayers/Orderable.php
  class Orderable (line 7) | class Orderable extends AbstractDisplayer
    method display (line 9) | public function display()
    method script (line 31) | protected function script()

FILE: src/Grid/Displayers/Prefix.php
  class Prefix (line 5) | class Prefix extends AbstractDisplayer
    method display (line 7) | public function display($prefix = null, $delimiter = '&nbsp;')

FILE: src/Grid/Displayers/ProgressBar.php
  class ProgressBar (line 5) | class ProgressBar extends AbstractDisplayer
    method display (line 7) | public function display($style = 'primary', $size = 'sm', $max = 100)

FILE: src/Grid/Displayers/QRCode.php
  class QRCode (line 10) | class QRCode extends AbstractDisplayer
    method addScript (line 12) | protected function addScript()
    method display (line 25) | public function display($formatter = null, $width = 150, $height = 150)

FILE: src/Grid/Displayers/Radio.php
  class Radio (line 8) | class Radio extends AbstractDisplayer
    method display (line 10) | public function display($options = [])

FILE: src/Grid/Displayers/RowSelector.php
  class RowSelector (line 7) | class RowSelector extends AbstractDisplayer
    method display (line 9) | public function display()
    method script (line 18) | protected function script()

FILE: src/Grid/Displayers/Secret.php
  class Secret (line 7) | class Secret extends AbstractDisplayer
    method display (line 9) | public function display($dotCount = 6)
    method addScript (line 25) | protected function addScript()

FILE: src/Grid/Displayers/Select.php
  class Select (line 8) | class Select extends AbstractDisplayer
    method display (line 10) | public function display($options = [])

FILE: src/Grid/Displayers/Suffix.php
  class Suffix (line 5) | class Suffix extends AbstractDisplayer
    method display (line 7) | public function display($suffix = null, $delimiter = '&nbsp;')

FILE: src/Grid/Displayers/SwitchDisplay.php
  class SwitchDisplay (line 8) | class SwitchDisplay extends AbstractDisplayer
    method overrideStates (line 18) | protected function overrideStates($states)
    method display (line 29) | public function display($states = [])

FILE: src/Grid/Displayers/SwitchGroup.php
  class SwitchGroup (line 8) | class SwitchGroup extends SwitchDisplay
    method display (line 10) | public function display($columns = [], $states = [])
    method buildSwitch (line 29) | protected function buildSwitch($name, $label = '')

FILE: src/Grid/Displayers/Table.php
  class Table (line 7) | class Table extends AbstractDisplayer
    method display (line 9) | public function display($titles = [])

FILE: src/Grid/Displayers/Textarea.php
  class Textarea (line 7) | class Textarea extends AbstractDisplayer
    method display (line 9) | public function display($rows = 5)

FILE: src/Grid/Displayers/Upload.php
  class Upload (line 7) | class Upload extends AbstractDisplayer
    method display (line 9) | public function display($multiple = false)

FILE: src/Grid/Exporter.php
  class Exporter (line 8) | class Exporter
    method __construct (line 46) | public function __construct(Grid $grid)
    method setQueryName (line 58) | public static function setQueryName($name)
    method extend (line 69) | public static function extend($driver, $extend)
    method resolve (line 81) | public function resolve($driver)
    method getExporter (line 97) | protected function getExporter($driver)
    method getDefaultExporter (line 115) | public function getDefaultExporter()
    method formatExportQuery (line 128) | public static function formatExportQuery($scope = '', $args = null)

FILE: src/Grid/Exporters/AbstractExporter.php
  class AbstractExporter (line 7) | abstract class AbstractExporter implements ExporterInterface
    method __construct (line 24) | public function __construct(Grid $grid = null)
    method setGrid (line 38) | public function setGrid(Grid $grid)
    method getTable (line 50) | public function getTable()
    method getData (line 62) | public function getData($toArray = true)
    method chunk (line 73) | public function chunk(callable $callback, $count = 100)
    method getCollection (line 83) | public function getCollection()
    method getQuery (line 91) | public function getQuery()
    method withScope (line 120) | public function withScope($scope)
    method export (line 144) | abstract public function export();

FILE: src/Grid/Exporters/CsvExporter.php
  class CsvExporter (line 7) | class CsvExporter extends AbstractExporter
    method filename (line 54) | public function filename(string $filename = ''): self
    method setCallback (line 64) | public function setCallback(\Closure $closure): self
    method except (line 76) | public function except(array $columns = []): self
    method only (line 88) | public function only(array $columns = []): self
    method originalValue (line 100) | public function originalValue($columns = []): self
    method column (line 113) | public function column(string $name, \Closure $callback): self
    method title (line 126) | public function title(string $name, \Closure $callback): self
    method getHeaders (line 138) | protected function getHeaders()
    method export (line 154) | public function export()
    method getVisiableTitles (line 195) | protected function getVisiableTitles()
    method getVisiableFields (line 227) | public function getVisiableFields(array $value, array $original): array
    method getColumnValue (line 249) | protected function getColumnValue(string $column, $value, $original)

FILE: src/Grid/Exporters/ExcelExporter.php
  class ExcelExporter (line 10) | abstract class ExcelExporter extends AbstractExporter implements FromQue...
    method headings (line 32) | public function headings(): array
    method query (line 44) | public function query()
    method export (line 64) | public function export()

FILE: src/Grid/Exporters/ExporterInterface.php
  type ExporterInterface (line 5) | interface ExporterInterface
    method export (line 12) | public function export();

FILE: src/Grid/Filter.php
  class Filter (line 38) | class Filter implements Renderable
    method __construct (line 152) | public function __construct(Model $model)
    method initLayout (line 167) | protected function initLayout()
    method setAction (line 179) | public function setAction($action)
    method getModel (line 191) | public function getModel()
    method setFilterID (line 208) | public function setFilterID($filterID)
    method getFilterID (line 220) | public function getFilterID()
    method setName (line 230) | public function setName($name)
    method getName (line 242) | public function getName()
    method disableIdFilter (line 252) | public function disableIdFilter(bool $disable = true)
    method removeIDFilterIfNeeded (line 262) | public function removeIDFilterIfNeeded()
    method removeDefaultIDFilter (line 276) | protected function removeDefaultIDFilter()
    method removeFilterByID (line 286) | public function removeFilterByID($id)
    method conditions (line 298) | public function conditions()
    method sanitizeInputs (line 342) | protected function sanitizeInputs(&$inputs)
    method layoutOnly (line 362) | public function layoutOnly()
    method addFilter (line 376) | protected function addFilter(AbstractFilter $filter)
    method use (line 397) | public function use(AbstractFilter $filter)
    method filters (line 407) | public function filters()
    method scope (line 418) | public function scope($key, $label = '')
    method scopeSeparator (line 430) | public function scopeSeparator()
    method getScopes (line 440) | public function getScopes()
    method getCurrentScope (line 450) | public function getCurrentScope()
    method scopeConditions (line 464) | protected function scopeConditions()
    method column (line 481) | public function column($width, \Closure $closure)
    method expand (line 495) | public function expand()
    method execute (line 509) | public function execute($toArray = true)
    method chunk (line 530) | public function chunk(callable $callback, $count = 100)
    method render (line 545) | public function render()
    method urlWithoutFilters (line 566) | public function urlWithoutFilters()
    method urlWithoutScopes (line 595) | public function urlWithoutScopes()
    method fullUrlWithoutQuery (line 607) | protected function fullUrlWithoutQuery($keys)
    method extend (line 631) | public static function extend($name, $filterClass)
    method resolveFilter (line 646) | public function resolveFilter($abstract, $arguments)
    method __call (line 661) | public function __call($method, $arguments)

FILE: src/Grid/Filter/AbstractFilter.php
  class AbstractFilter (line 31) | abstract class AbstractFilter
    method __construct (line 102) | public function __construct($column, $label = '')
    method setupDefaultPresenter (line 116) | protected function setupDefaultPresenter()
    method formatLabel (line 128) | protected function formatLabel($label)
    method formatName (line 142) | protected function formatName($column)
    method formatId (line 167) | protected function formatId($columns)
    method setParent (line 175) | public function setParent(Filter $filter)
    method siblings (line 187) | public function siblings($index = null)
    method previous (line 203) | public function previous($step = 1)
    method next (line 217) | public function next($step = 1)
    method condition (line 231) | public function condition($inputs)
    method ignore (line 253) | public function ignore()
    method select (line 267) | public function select($options = [])
    method multipleSelect (line 277) | public function multipleSelect($options = [])
    method radio (line 287) | public function radio($options = [])
    method checkbox (line 297) | public function checkbox($options = [])
    method datetime (line 309) | public function datetime($options = [])
    method date (line 319) | public function date()
    method time (line 329) | public function time()
    method day (line 339) | public function day()
    method month (line 349) | public function month()
    method year (line 359) | public function year()
    method setPresenter (line 371) | protected function setPresenter(Presenter $presenter)
    method presenter (line 383) | protected function presenter()
    method default (line 395) | public function default($default = null)
    method getFilterBoxId (line 404) | public function getFilterBoxId()
    method getId (line 414) | public function getId()
    method setId (line 426) | public function setId($id)
    method getColumn (line 438) | public function getColumn()
    method getValue (line 450) | public function getValue()
    method buildCondition (line 460) | protected function buildCondition()
    method buildRelationQuery (line 476) | protected function buildRelationQuery()
    method variables (line 493) | protected function variables()
    method render (line 510) | public function render()
    method __toString (line 520) | public function __toString()
    method __call (line 533) | public function __call($method, $params)

FILE: src/Grid/Filter/Between.php
  class Between (line 8) | class Between extends AbstractFilter
    method formatId (line 22) | public function formatId($column)
    method formatName (line 36) | protected function formatName($column)
    method condition (line 60) | public function condition($inputs)
    method datetime (line 98) | public function datetime($options = [])
    method setupDatetime (line 110) | protected function setupDatetime($options = [])

FILE: src/Grid/Filter/Date.php
  class Date (line 5) | class Date extends AbstractFilter
    method __construct (line 20) | public function __construct($column, $label = '')

FILE: src/Grid/Filter/Day.php
  class Day (line 5) | class Day extends Date

FILE: src/Grid/Filter/EndsWith.php
  class EndsWith (line 5) | class EndsWith extends Like

FILE: src/Grid/Filter/Equal.php
  class Equal (line 5) | class Equal extends AbstractFilter

FILE: src/Grid/Filter/Group.php
  class Group (line 9) | class Group extends AbstractFilter
    method __construct (line 35) | public function __construct($column, $label = '', \Closure $builder = ...
    method initialize (line 53) | protected function initialize()
    method joinGroup (line 70) | protected function joinGroup($label, array $condition)
    method equal (line 87) | public function equal($label = '', $operator = '=')
    method notEqual (line 103) | public function notEqual($label = '')
    method gt (line 115) | public function gt($label = '')
    method lt (line 127) | public function lt($label = '')
    method nlt (line 139) | public function nlt($label = '')
    method ngt (line 151) | public function ngt($label = '')
    method match (line 163) | public function match($label = '')
    method where (line 178) | public function where($label, \Closure $builder)
    method like (line 195) | public function like($label = '', $operator = 'like')
    method contains (line 211) | public function contains($label = '')
    method ilike (line 223) | public function ilike($label = '')
    method startWith (line 235) | public function startWith($label = '')
    method endWith (line 251) | public function endWith($label = '')
    method condition (line 263) | public function condition($inputs)
    method injectScript (line 285) | protected function injectScript()
    method variables (line 300) | public function variables()
    method render (line 315) | public function render()

FILE: src/Grid/Filter/Gt.php
  class Gt (line 7) | class Gt extends AbstractFilter
    method condition (line 21) | public function condition($inputs)

FILE: src/Grid/Filter/Hidden.php
  class Hidden (line 5) | class Hidden extends AbstractFilter
    method __construct (line 23) | public function __construct($name, $value)
    method condition (line 33) | public function condition($inputs)
    method render (line 40) | public function render()

FILE: src/Grid/Filter/Ilike.php
  class Ilike (line 5) | class Ilike extends Like

FILE: src/Grid/Filter/In.php
  class In (line 7) | class In extends AbstractFilter
    method condition (line 21) | public function condition($inputs)

FILE: src/Grid/Filter/Layout/Column.php
  class Column (line 8) | class Column
    method __construct (line 25) | public function __construct($width = 12)
    method addFilter (line 36) | public function addFilter(AbstractFilter $filter)
    method filters (line 46) | public function filters()
    method setWidth (line 56) | public function setWidth($width)
    method width (line 66) | public function width()
    method removeFilterByID (line 74) | public function removeFilterByID($id)

FILE: src/Grid/Filter/Layout/Layout.php
  class Layout (line 8) | class Layout
    method __construct (line 30) | public function __construct(Filter $filter)
    method addFilter (line 44) | public function addFilter(Filter\AbstractFilter $filter)
    method column (line 55) | public function column($width, \Closure $closure)
    method columns (line 77) | public function columns()
    method removeDefaultIDFilter (line 89) | public function removeDefaultIDFilter()

FILE: src/Grid/Filter/Like.php
  class Like (line 7) | class Like extends AbstractFilter
    method condition (line 26) | public function condition($inputs)

FILE: src/Grid/Filter/Lt.php
  class Lt (line 7) | class Lt extends AbstractFilter
    method condition (line 21) | public function condition($inputs)

FILE: src/Grid/Filter/Month.php
  class Month (line 5) | class Month extends Date

FILE: src/Grid/Filter/NotEqual.php
  class NotEqual (line 7) | class NotEqual extends AbstractFilter
    method condition (line 12) | public function condition($inputs)

FILE: src/Grid/Filter/NotIn.php
  class NotIn (line 5) | class NotIn extends In

FILE: src/Grid/Filter/Presenter/Checkbox.php
  class Checkbox (line 7) | class Checkbox extends Radio
    method prepare (line 9) | protected function prepare()

FILE: src/Grid/Filter/Presenter/DateTime.php
  class DateTime (line 8) | class DateTime extends Presenter
    method __construct (line 25) | public function __construct($options = [])
    method getOptions (line 35) | protected function getOptions(array $options): array
    method prepare (line 43) | protected function prepare()
    method variables (line 50) | public function variables(): array

FILE: src/Grid/Filter/Presenter/MultipleSelect.php
  class MultipleSelect (line 7) | class MultipleSelect extends Select
    method loadMore (line 19) | public function loadMore($target, $resourceUrl, $idField = 'id', $text...

FILE: src/Grid/Filter/Presenter/Presenter.php
  class Presenter (line 7) | abstract class Presenter
    method setParent (line 19) | public function setParent(AbstractFilter $filter)
    method view (line 29) | public function view(): string
    method default (line 43) | public function default($default)
    method variables (line 55) | public function variables(): array

FILE: src/Grid/Filter/Presenter/Radio.php
  class Radio (line 8) | class Radio extends Presenter
    method __construct (line 27) | public function __construct($options = [])
    method stacked (line 43) | public function stacked(): self
    method prepare (line 50) | protected function prepare()
    method variables (line 60) | public function variables(): array

FILE: src/Grid/Filter/Presenter/Select.php
  class Select (line 10) | class Select extends Presenter
    method __construct (line 34) | public function __construct($options)
    method config (line 49) | public function config($key, $val)
    method buildOptions (line 61) | protected function buildOptions(): array
    method model (line 113) | public function model($model, $idField = 'id', $textField = 'name')
    method loadRemoteOptions (line 153) | protected function loadRemoteOptions($url, $parameters = [], $options ...
    method ajax (line 196) | public function ajax($resourceUrl, $idField = 'id', $textField = 'text')
    method variables (line 248) | public function variables(): array
    method getElementClass (line 259) | protected function getElementClass(): string
    method load (line 274) | public function load($target, $resourceUrl, $idField = 'id', $textFiel...
    method getClass (line 308) | protected function getClass($target): string

FILE: src/Grid/Filter/Presenter/Text.php
  class Text (line 7) | class Text extends Presenter
    method __construct (line 29) | public function __construct($placeholder = '')
    method variables (line 39) | public function variables(): array
    method placeholder (line 56) | public function placeholder($placeholder = ''): self
    method url (line 66) | public function url(): self
    method email (line 74) | public function email(): self
    method integer (line 82) | public function integer(): self
    method decimal (line 94) | public function decimal($options = []): self
    method currency (line 106) | public function currency($options = []): self
    method percentage (line 122) | public function percentage($options = [])
    method ip (line 132) | public function ip(): self
    method mac (line 140) | public function mac(): self
    method mobile (line 150) | public function mobile($mask = '19999999999'): self
    method inputmask (line 161) | public function inputmask($options = [], $icon = 'pencil'): self

FILE: src/Grid/Filter/Scope.php
  class Scope (line 9) | class Scope implements Renderable
    method __construct (line 35) | public function __construct($key, $label = '')
    method getLabel (line 48) | public function getLabel()
    method condition (line 58) | public function condition()
    method render (line 68) | public function render()
    method asDefault (line 84) | public function asDefault()
    method __call (line 99) | public function __call($method, $arguments)

FILE: src/Grid/Filter/StartsWith.php
  class StartsWith (line 5) | class StartsWith extends Like

FILE: src/Grid/Filter/Where.php
  class Where (line 7) | class Where extends AbstractFilter
    method __construct (line 30) | public function __construct(\Closure $query, $label, $column = null)
    method getQueryHash (line 49) | public static function getQueryHash(\Closure $closure, $label = '')
    method condition (line 63) | public function condition($inputs)

FILE: src/Grid/Filter/Year.php
  class Year (line 5) | class Year extends Date

FILE: src/Grid/Model.php
  class Model (line 18) | class Model
    method __construct (line 102) | public function __construct(EloquentModel $model, Grid $grid = null)
    method getOriginalModel (line 116) | public function getOriginalModel()
    method eloquent (line 126) | public function eloquent()
    method usePaginate (line 136) | public function usePaginate($use = true)
    method getPerPageName (line 146) | public function getPerPageName()
    method setPerPageName (line 158) | public function setPerPageName($name)
    method getPerPage (line 170) | public function getPerPage()
    method setPerPage (line 182) | public function setPerPage($perPage)
    method getSortName (line 196) | public function getSortName()
    method setSortName (line 208) | public function setSortName($name)
    method setGrid (line 222) | public function setGrid(Grid $grid)
    method getGrid (line 234) | public function getGrid()
    method setRelation (line 244) | public function setRelation(Relation $relation)
    method getRelation (line 254) | public function getRelation()
    method getConstraints (line 264) | public function getConstraints()
    method collection (line 282) | public function collection(\Closure $callback = null)
    method buildData (line 296) | public function buildData($toArray = true)
    method chunk (line 321) | public function chunk($callback, $count = 100)
    method addConditions (line 345) | public function addConditions(array $conditions)
    method getTable (line 359) | public function getTable()
    method get (line 369) | protected function get()
    method getQueryBuilder (line 402) | public function getQueryBuilder()
    method handleInvalidPage (line 428) | protected function handleInvalidPage(LengthAwarePaginator $paginator)
    method setPaginate (line 444) | protected function setPaginate()
    method resolvePerPage (line 474) | protected function resolvePerPage($paginate)
    method findQueryByMethod (line 504) | protected function findQueryByMethod($method)
    method setSort (line 516) | protected function setSort()
    method setRelationSort (line 574) | protected function setRelationSort($column)
    method resetOrderBy (line 612) | public function resetOrderBy()
    method joinParameters (line 630) | protected function joinParameters(Relation $relation)
    method __call (line 663) | public function __call($method, $arguments)
    method __get (line 678) | public function __get($key)

FILE: src/Grid/Row.php
  class Row (line 11) | class Row
    method __construct (line 46) | public function __construct($number, $data, $key)
    method getKey (line 62) | public function getKey()
    method getRowAttributes (line 72) | public function getRowAttributes()
    method getColumnAttributes (line 84) | public function getColumnAttributes($column)
    method formatHtmlAttribute (line 100) | private function formatHtmlAttribute($attributes = [])
    method setAttributes (line 115) | public function setAttributes(array $attributes)
    method style (line 125) | public function style($style)
    method model (line 143) | public function model()
    method __get (line 155) | public function __get($attr)
    method column (line 168) | public function column($name, $value = null)
    method output (line 192) | protected function output($value)

FILE: src/Grid/Selectable.php
  class Selectable (line 14) | abstract class Selectable
    method __construct (line 52) | public function __construct($multiple = false, $key = '')
    method make (line 63) | abstract public function make();
    method imageLayout (line 65) | protected function imageLayout()
    method render (line 75) | public function render()
    method disableFeatures (line 97) | protected function disableFeatures()
    method renderFormGrid (line 107) | public function renderFormGrid($values)
    method appendRemoveBtn (line 128) | protected function appendRemoveBtn($hide = true)
    method initGrid (line 142) | protected function initGrid()
    method __call (line 164) | public function __call(string $method, array $arguments = [])

FILE: src/Grid/Selectable/BrowserBtn.php
  class BrowserBtn (line 7) | class BrowserBtn implements Renderable
    method render (line 9) | public function render()

FILE: src/Grid/Selectable/Checkbox.php
  class Checkbox (line 7) | class Checkbox extends AbstractDisplayer
    method display (line 9) | public function display($key = '')

FILE: src/Grid/Selectable/Radio.php
  class Radio (line 7) | class Radio extends AbstractDisplayer
    method display (line 9) | public function display($key = '')

FILE: src/Grid/Simple.php
  class Simple (line 11) | class Simple implements Renderable
    method render (line 28) | public function render($key = null)
    method __call (line 52) | public function __call($name, $arguments)

FILE: src/Grid/Tools.php
  class Tools (line 14) | class Tools implements Renderable
    method __construct (line 35) | public function __construct(Grid $grid)
    method appendDefaultTools (line 47) | protected function appendDefaultTools()
    method append (line 60) | public function append($tool)
    method prepend (line 78) | public function prepend($tool)
    method disableFilterButton (line 90) | public function disableFilterButton(bool $disable = true)
    method disableRefreshButton (line 108) | public function disableRefreshButton(bool $disable = true)
    method disableBatchActions (line 118) | public function disableBatchActions(bool $disable = true)
    method batch (line 132) | public function batch(\Closure $closure)
    method render (line 144) | public function render()

FILE: src/Grid/Tools/AbstractTool.php
  class AbstractTool (line 8) | abstract class AbstractTool implements Renderable
    method disable (line 27) | public function disable(bool $disable = true)
    method allowed (line 37) | public function allowed()
    method setGrid (line 49) | public function setGrid(Grid $grid)
    method getGrid (line 59) | public function getGrid()
    method render (line 67) | abstract public function render();
    method __toString (line 72) | public function __toString()

FILE: src/Grid/Tools/BatchAction.php
  class BatchAction (line 8) | abstract class BatchAction implements Renderable
    method setId (line 33) | public function setId($id)
    method setTitle (line 45) | public function setTitle($title)
    method getTitle (line 55) | public function getTitle()
    method setGrid (line 63) | public function setGrid(Grid $grid)
    method getToken (line 73) | public function getToken()
    method getElementClass (line 83) | public function getElementClass($dotPrefix = true)
    method render (line 96) | public function render()
    method script (line 104) | abstract public function script();

FILE: src/Grid/Tools/BatchActions.php
  class BatchActions (line 8) | class BatchActions extends AbstractTool
    method __construct (line 28) | public function __construct()
    method appendDefaultAction (line 40) | protected function appendDefaultAction()
    method disableDelete (line 50) | public function disableDelete(bool $disable = true)
    method disableDeleteAndHodeSelectAll (line 62) | public function disableDeleteAndHodeSelectAll()
    method add (line 79) | public function add($title, BatchAction $action = null)
    method addActionScripts (line 103) | protected function addActionScripts()
    method render (line 119) | public function render()

FILE: src/Grid/Tools/BatchDelete.php
  class BatchDelete (line 5) | class BatchDelete extends BatchAction
    method __construct (line 7) | public function __construct($title)
    method script (line 15) | public function script()

FILE: src/Grid/Tools/ColumnSelector.php
  class ColumnSelector (line 9) | class ColumnSelector extends AbstractTool
    method __construct (line 26) | public function __construct(Grid $grid)
    method getGridColumns (line 34) | protected function getGridColumns()
    method ignore (line 48) | public static function ignore($name)
    method render (line 58) | public function render()

FILE: src/Grid/Tools/CreateButton.php
  class CreateButton (line 7) | class CreateButton extends AbstractTool
    method __construct (line 19) | public function __construct(Grid $grid)
    method render (line 29) | public function render()

FILE: src/Grid/Tools/ExportButton.php
  class ExportButton (line 8) | class ExportButton extends AbstractTool
    method __construct (line 20) | public function __construct(Grid $grid)
    method setUpScripts (line 28) | protected function setUpScripts()
    method render (line 55) | public function render()

FILE: src/Grid/Tools/FilterButton.php
  class FilterButton (line 7) | class FilterButton extends AbstractTool
    method render (line 12) | public function render()

FILE: src/Grid/Tools/FixColumns.php
  class FixColumns (line 8) | class FixColumns
    method __construct (line 47) | public function __construct(Grid $grid, $head, $tail = -1)
    method leftColumns (line 60) | public function leftColumns()
    method rightColumns (line 68) | public function rightColumns()
    method apply (line 76) | public function apply()

FILE: src/Grid/Tools/Footer.php
  class Footer (line 10) | class Footer extends AbstractTool
    method __construct (line 22) | public function __construct(Grid $grid)
    method queryBuilder (line 32) | public function queryBuilder()
    method render (line 44) | public function render()

FILE: src/Grid/Tools/Header.php
  class Header (line 10) | class Header extends AbstractTool
    method __construct (line 22) | public function __construct(Grid $grid)
    method queryBuilder (line 32) | public function queryBuilder()
    method render (line 44) | public function render()

FILE: src/Grid/Tools/Paginator.php
  class Paginator (line 8) | class Paginator extends AbstractTool
    method __construct (line 25) | public function __construct(Grid $grid, $perPageSelector = true)
    method initPaginator (line 38) | protected function initPaginator()
    method paginationLinks (line 52) | protected function paginationLinks()
    method perPageSelector (line 62) | protected function perPageSelector()
    method paginationRanger (line 76) | protected function paginationRanger()
    method render (line 96) | public function render()

FILE: src/Grid/Tools/PerPageSelector.php
  class PerPageSelector (line 8) | class PerPageSelector extends AbstractTool
    method __construct (line 25) | public function __construct(Grid $grid)
    method initialize (line 37) | protected function initialize()
    method getOptions (line 52) | public function getOptions()
    method render (line 66) | public function render()
    method script (line 101) | protected function script()

FILE: src/Grid/Tools/QuickCreate.php
  class QuickCreate (line 14) | class QuickCreate implements Renderable
    method __construct (line 31) | public function __construct(Grid $grid)
    method formatPlaceholder (line 37) | protected function formatPlaceholder($placeholder)
    method text (line 48) | public function text($column, $placeholder = '')
    method email (line 63) | public function email($column, $placeholder = '')
    method ip (line 75) | public function ip($column, $placeholder = '')
    method url (line 88) | public function url($column, $placeholder = '')
    method password (line 100) | public function password($column, $placeholder = '')
    method mobile (line 113) | public function mobile($column, $placeholder = '')
    method integer (line 126) | public function integer($column, $placeholder = '')
    method select (line 139) | public function select($column, $placeholder = '')
    method multipleSelect (line 154) | public function multipleSelect($column, $placeholder = '')
    method datetime (line 169) | public function datetime($column, $placeholder = '')
    method time (line 180) | public function time($column, $placeholder = '')
    method date (line 191) | public function date($column, $placeholder = '')
    method addField (line 205) | protected function addField(Field $field)
    method resolveView (line 223) | protected function resolveView($class)
    method script (line 232) | protected function script()
    method render (line 295) | public function render($columnCount = 0)

FILE: src/Grid/Tools/QuickSearch.php
  class QuickSearch (line 8) | class QuickSearch extends AbstractTool
    method placeholder (line 27) | public function placeholder($text = '')
    method render (line 37) | public function render()

FILE: src/Grid/Tools/Selector.php
  class Selector (line 10) | class Selector implements Renderable
    method __construct (line 25) | public function __construct()
    method select (line 38) | public function select($column, $label, $options = [], $query = null)
    method selectOne (line 51) | public function selectOne($column, $label, $options = [], $query = null)
    method addSelector (line 65) | protected function addSelector($column, $label, $options = [], $query ...
    method getSelectors (line 86) | public function getSelectors()
    method parseSelected (line 94) | public static function parseSelected()
    method url (line 124) | public static function url($column, $value = null, $add = false)
    method render (line 159) | public function render()

FILE: src/Grid/Tools/TotalRow.php
  class TotalRow (line 10) | class TotalRow extends AbstractTool
    method __construct (line 33) | public function __construct($query, array $columns)
    method total (line 48) | protected function total($column, $display = null)
    method setVisibleColumns (line 66) | public function setVisibleColumns($columns)
    method getVisibleColumns (line 74) | public function getVisibleColumns()
    method render (line 88) | public function render()

FILE: src/Layout/Buildable.php
  type Buildable (line 5) | interface Buildable
    method build (line 7) | public function build();

FILE: src/Layout/Column.php
  class Column (line 8) | class Column implements Buildable
    method __construct (line 28) | public function __construct($content, $width = 12)
    method append (line 56) | public function append($content)
    method row (line 70) | public function row($content)
    method build (line 94) | public function build()
    method startColumn (line 112) | protected function startColumn()
    method endColumn (line 125) | protected function endColumn()

FILE: src/Layout/Content.php
  class Content (line 10) | class Content implements Renderable
    method __construct (line 48) | public function __construct(\Closure $callback = null)
    method header (line 62) | public function header($header = '')
    method title (line 72) | public function title($title)
    method description (line 86) | public function description($description = '')
    method breadcrumb (line 100) | public function breadcrumb(...$breadcrumb)
    method validateBreadcrumb (line 118) | protected function validateBreadcrumb(array $breadcrumb)
    method body (line 136) | public function body($content)
    method row (line 148) | public function row($content)
    method view (line 169) | public function view($view, $data = [])
    method component (line 180) | public function component($view, $data = [])
    method dump (line 190) | public function dump($var)
    method addRow (line 200) | protected function addRow(Row $row)
    method build (line 210) | public function build()
    method withSuccess (line 233) | public function withSuccess($title = '', $message = '')
    method withError (line 248) | public function withError($title = '', $message = '')
    method withWarning (line 263) | public function withWarning($title = '', $message = '')
    method withInfo (line 278) | public function withInfo($title = '', $message = '')
    method getUserData (line 288) | protected function getUserData()
    method render (line 302) | public function render()

FILE: src/Layout/Row.php
  class Row (line 7) | class Row implements Buildable, Renderable
    method __construct (line 26) | public function __construct($content = '')
    method column (line 39) | public function column($width, $content)
    method class (line 53) | public function class($class)
    method addColumn (line 67) | protected function addColumn(Column $column)
    method build (line 75) | public function build()
    method startRow (line 89) | protected function startRow()
    method endRow (line 99) | protected function endRow()
    method render (line 109) | public function render()

FILE: src/Middleware/Authenticate.php
  class Authenticate (line 8) | class Authenticate
    method handle (line 18) | public function handle($request, Closure $next)
    method shouldPassThrough (line 38) | protected function shouldPassThrough($request)

FILE: src/Middleware/Bootstrap.php
  class Bootstrap (line 9) | class Bootstrap
    method handle (line 11) | public function handle(Request $request, Closure $next)

FILE: src/Middleware/LogOperation.php
  class LogOperation (line 10) | class LogOperation
    method handle (line 20) | public function handle(Request $request, \Closure $next)
    method shouldLogOperation (line 46) | protected function shouldLogOperation(Request $request)
    method inAllowedMethods (line 61) | protected function inAllowedMethods($method)
    method inExceptArray (line 81) | protected function inExceptArray($request)

FILE: src/Middleware/Permission.php
  class Permission (line 10) | class Permission
    method handle (line 26) | public function handle(Request $request, \Closure $next, ...$args)
    method checkRoutePermission (line 57) | public function checkRoutePermission(Request $request)
    method shouldPassThrough (line 85) | protected function shouldPassThrough($request)

FILE: src/Middleware/Pjax.php
  class Pjax (line 12) | class Pjax
    method handle (line 22) | public function handle($request, Closure $next)
    method respond (line 48) | public static function respond(Response $response)
    method handleErrorResponse (line 66) | protected function handleErrorResponse(Response $response)
    method filterResponse (line 88) | protected function filterResponse(Response $response, $container)
    method makeTitle (line 107) | protected function makeTitle($crawler)
    method fetchContents (line 122) | protected function fetchContents($crawler, $container)
    method decodeUtf8HtmlEntities (line 140) | protected function decodeUtf8HtmlEntities($html)
    method setUriHeader (line 153) | protected function setUriHeader(Response $response, Request $request)

FILE: src/Middleware/Session.php
  class Session (line 7) | class Session
    method handle (line 9) | public function handle(Request $request, \Closure $next)

FILE: src/Show.php
  class Show (line 24) | class Show implements Renderable
    method __construct (line 86) | public function __construct($model, $builder = null)
    method init (line 104) | public static function init(\Closure $callback = null)
    method extend (line 117) | public static function extend($abstract, $class)
    method initContents (line 125) | protected function initContents()
    method initPanel (line 134) | protected function initPanel()
    method panel (line 144) | public function panel()
    method field (line 157) | public function field($name, $label = '')
    method fields (line 169) | public function fields(array $fields = [])
    method all (line 187) | public function all()
    method relation (line 203) | public function relation($name, $label, $builder = null)
    method addField (line 221) | protected function addField($name, $label = '')
    method addRelation (line 243) | protected function addRelation($name, $builder, $label = '')
    method overwriteExistingField (line 261) | protected function overwriteExistingField($name)
    method overwriteExistingRelation (line 279) | protected function overwriteExistingRelation($name)
    method divider (line 295) | public function divider()
    method setResource (line 307) | public function setResource($resource)
    method getResourcePath (line 319) | public function getResourcePath()
    method setWidth (line 341) | public function setWidth($fieldWidth = 8, $labelWidth = 2)
    method setModel (line 357) | public function setModel($model)
    method getModel (line 369) | public function getModel()
    method __call (line 382) | public function __call($method, $arguments = [])
    method handleGetMutatorField (line 405) | protected function handleGetMutatorField($method, $label)
    method handleRelationField (line 426) | protected function handleRelationField($method, $arguments)
    method showRelationAsField (line 484) | protected function showRelationAsField($relation = '', $label = '')
    method handleModelField (line 497) | protected function handleModelField($method, $label)
    method render (line 511) | public function render()

FILE: src/Show/AbstractField.php
  class AbstractField (line 8) | abstract class AbstractField implements Renderable
    method setValue (line 43) | public function setValue($value)
    method setModel (line 55) | public function setModel($model)
    method render (line 65) | abstract public function render();

FILE: src/Show/Divider.php
  class Divider (line 5) | class Divider extends Field
    method render (line 7) | public function render()

FILE: src/Show/Field.php
  class Field (line 17) | class Field implements Renderable
    method __construct (line 114) | public function __construct($name = '', $label = '')
    method setParent (line 130) | public function setParent(Show $show)
    method getName (line 142) | public function getName()
    method formatLabel (line 154) | protected function formatLabel($label)
    method getLabel (line 166) | public function getLabel()
    method as (line 178) | public function as(callable $callable)
    method using (line 193) | public function using(array $values, $default = null)
    method image (line 213) | public function image($server = '', $width = 200, $height = 200)
    method carousel (line 249) | public function carousel($width = 300, $height = 200, $server = '')
    method file (line 288) | public function file($server = '', $download = true)
    method link (line 344) | public function link($href = '', $target = '_blank')
    method label (line 360) | public function label($style = 'success')
    method badge (line 380) | public function badge($style = 'blue')
    method number (line 402) | public function number($decimals = 0, $decimal_seperator = '.', $thous...
    method json (line 414) | public function json()
    method filesize (line 440) | public function filesize()
    method getFileIcon (line 454) | public function getFileIcon($file = '')
    method setEscape (line 474) | public function setEscape($escape = true)
    method unescape (line 486) | public function unescape()
    method setValue (line 498) | public function setValue(Model $model)
    method setRelation (line 524) | public function setRelation($relation)
    method getRelationValue (line 537) | protected function getRelationValue($model, $name)
    method setWidth (line 554) | public function setWidth($field = 8, $label = 2)
    method callExtendedField (line 572) | protected function callExtendedField($abstract, $arguments = [])
    method __call (line 617) | public function __call($method, $arguments = [])
    method variables (line 640) | protected function variables()
    method render (line 656) | public function render()

FILE: src/Show/Panel.php
  class Panel (line 9) | class Panel implements Renderable
    method __construct (line 42) | public function __construct(Show $show)
    method initData (line 52) | protected function initData()
    method setParent (line 69) | public function setParent(Show $show)
    method getParent (line 81) | public function getParent()
    method style (line 93) | public function style($style = 'info')
    method title (line 107) | public function title($title)
    method view (line 121) | public function view($view)
    method tools (line 133) | public function tools($callable)
    method fill (line 145) | public function fill($fields)
    method render (line 157) | public function render()

FILE: src/Show/Relation.php
  class Relation (line 17) | class Relation extends Field
    method __construct (line 54) | public function __construct($name, $builder, $title = '')
    method setModel (line 68) | public function setModel(Model $model)
    method getNullRenderable (line 80) | protected function getNullRenderable()
    method render (line 94) | public function render()

FILE: src/Show/Tools.php
  class Tools (line 10) | class Tools implements Renderable
    method __construct (line 50) | public function __construct(Panel $panel)
    method append (line 65) | public function append($tool)
    method prepend (line 79) | public function prepend($tool)
    method getResource (line 91) | public function getResource()
    method disableList (line 105) | public function disableList(bool $disable = true)
    method disableDelete (line 121) | public function disableDelete(bool $disable = true)
    method disableEdit (line 137) | public function disableEdit(bool $disable = true)
    method getListPath (line 153) | protected function getListPath()
    method getEditPath (line 163) | protected function getEditPath()
    method getDeletePath (line 175) | protected function getDeletePath()
    method renderList (line 187) | protected function renderList()
    method renderEdit (line 205) | protected function renderEdit()
    method renderDelete (line 223) | protected function renderDelete()
    method renderCustomTools (line 294) | protected function renderCustomTools($tools)
    method render (line 314) | public function render()

FILE: src/Traits/AdminBuilder.php
  type AdminBuilder (line 12) | trait AdminBuilder
    method grid (line 19) | public static function grid(\Closure $callback)
    method form (line 29) | public static function form(\Closure $callback)
    method tree (line 39) | public static function tree(\Closure $callback = null)

FILE: src/Traits/DefaultDatetimeFormat.php
  type DefaultDatetimeFormat (line 7) | trait DefaultDatetimeFormat
    method serializeDate (line 9) | protected function serializeDate(\DateTimeInterface $date)

FILE: src/Traits/HasAssets.php
  type HasAssets (line 5) | trait HasAssets
    method css (line 110) | public static function css($css = null, $minify = true)
    method baseCss (line 133) | public static function baseCss($css = null, $minify = true)
    method js (line 156) | public static function js($js = null, $minify = true)
    method headerJs (line 180) | public static function headerJs($js = null)
    method baseJs (line 195) | public static function baseJs($js = null, $minify = true)
    method ignoreMinify (line 210) | public static function ignoreMinify($assets, $ignore = true)
    method script (line 223) | public static function script($script = '', $deferred = false)
    method style (line 253) | public static function style($style = '')
    method html (line 273) | public static function html($html = '')
    method getManifestData (line 287) | protected static function getManifestData($key)
    method getMinifiedCss (line 304) | protected static function getMinifiedCss()
    method getMinifiedJs (line 316) | protected static function getMinifiedJs()
    method jQuery (line 328) | public function jQuery()
    method component (line 336) | public static function component($component, $data = [])

FILE: src/Traits/ModelTree.php
  type ModelTree (line 11) | trait ModelTree
    method children (line 43) | public function children()
    method parent (line 53) | public function parent()
    method getParentColumn (line 61) | public function getParentColumn()
    method setParentColumn (line 71) | public function setParentColumn($column)
    method getTitleColumn (line 81) | public function getTitleColumn()
    method setTitleColumn (line 91) | public function setTitleColumn($column)
    method getOrderColumn (line 101) | public function getOrderColumn()
    method setOrderColumn (line 111) | public function setOrderColumn($column)
    method withQuery (line 123) | public function withQuery(\Closure $query = null)
    method toTree (line 135) | public function toTree()
    method buildNestedArray (line 148) | protected function buildNestedArray(array $nodes = [], $parentId = 0)
    method allNodes (line 176) | public function allNodes()
    method setBranchOrder (line 197) | protected static function setBranchOrder(array $order)
    method saveOrder (line 212) | public static function saveOrder($tree = [], $parentId = 0)
    method selectOptions (line 239) | public static function selectOptions(\Closure $closure = null, $rootTe...
    method buildSelectOptions (line 256) | protected function buildSelectOptions(array $nodes = [], $parentId = 0...
    method delete (line 288) | public function delete()
    method boot (line 298) | protected static function boot()

FILE: src/Traits/Resizable.php
  type Resizable (line 7) | trait Resizable
    method thumbnail (line 17) | public function thumbnail($type, $attribute = 'image')
    method getThumbnail (line 40) | public function getThumbnail($image, $type)

FILE: src/Traits/ShouldSnakeAttributes.php
  type ShouldSnakeAttributes (line 7) | trait ShouldSnakeAttributes
    method shouldSnakeAttributes (line 21) | public function shouldSnakeAttributes()

FILE: src/Tree.php
  class Tree (line 10) | class Tree implements Renderable
    method __construct (line 84) | public function __construct(Model $model = null, \Closure $callback = ...
    method setupTools (line 103) | public function setupTools()
    method initBranchCallback (line 113) | protected function initBranchCallback()
    method branch (line 132) | public function branch(\Closure $branchCallback)
    method query (line 144) | public function query(\Closure $callback)
    method nestable (line 158) | public function nestable($options = [])
    method disableCreate (line 170) | public function disableCreate()
    method disableSave (line 180) | public function disableSave()
    method disableRefresh (line 190) | public function disableRefresh()
    method saveOrder (line 202) | public function saveOrder($serialize)
    method script (line 220) | protected function script()
    method setView (line 315) | public function setView($view)
    method getItems (line 325) | public function getItems()
    method variables (line 335) | public function variables()
    method tools (line 354) | public function tools(Closure $callback)
    method render (line 364) | public function render()
    method __toString (line 383) | public function __toString()

FILE: src/Tree/Tools.php
  class Tools (line 10) | class Tools implements Renderable
    method __construct (line 31) | public function __construct(Tree $tree)
    method add (line 44) | public function add($tool)
    method render (line 56) | public function render()

FILE: src/Widgets/Alert.php
  class Alert (line 7) | class Alert extends Widget implements Renderable
    method __construct (line 41) | public function __construct($content, $title = '', $style = 'danger')
    method style (line 57) | public function style($style = 'info')
    method icon (line 71) | public function icon($icon)
    method variables (line 81) | protected function variables()
    method render (line 98) | public function render()

FILE: src/Widgets/Box.php
  class Box (line 7) | class Box extends Widget implements Renderable
    method __construct (line 45) | public function __construct($title = '', $content = '', $footer = '')
    method content (line 69) | public function content($content)
    method footer (line 87) | public function footer($footer)
    method title (line 105) | public function title($title)
    method collapsable (line 117) | public function collapsable()
    method scrollable (line 132) | public function scrollable($options = [], $nodeSelector = '')
    method removable (line 150) | public function removable()
    method style (line 165) | public function style($styles)
    method solid (line 185) | public function solid()
    method variables (line 195) | protected function variables()
    method render (line 212) | public function render()

FILE: src/Widgets/Callout.php
  class Callout (line 7) | class Callout extends Widget implements Renderable
    method __construct (line 36) | public function __construct($content, $title = '', $style = 'danger')
    method style (line 52) | public function style($style = 'info')
    method variables (line 62) | protected function variables()
    method render (line 78) | public function render()

FILE: src/Widgets/Carousel.php
  class Carousel (line 7) | class Carousel extends Widget implements Renderable
    method __construct (line 29) | public function __construct($items = [])
    method title (line 43) | public function title($title)
    method render (line 53) | public function render()

FILE: src/Widgets/Collapse.php
  class Collapse (line 7) | class Collapse extends Widget implements Renderable
    method __construct (line 22) | public function __construct()
    method add (line 37) | public function add($title, $content)
    method variables (line 47) | protected function variables()
    method render (line 61) | public function render()

FILE: src/Widgets/ContainsForms.php
  type ContainsForms (line 5) | trait ContainsForms
    method forms (line 18) | public static function forms($forms, $active = null)
    method buildTabbedForms (line 31) | protected function buildTabbedForms($forms, $active = null)
    method getTabUrl (line 63) | protected function getTabUrl($name)

FILE: src/Widgets/Form.php
  class Form (line 67) | class Form implements Renderable
    method __construct (line 137) | public function __construct($data = [])
    method title (line 149) | public function title()
    method description (line 159) | public function description()
    method data (line 167) | public function data()
    method confirm (line 175) | public function confirm($message)
    method fill (line 189) | public function fill($data = [])
    method sanitize (line 205) | public function sanitize()
    method initFormAttributes (line 217) | protected function initFormAttributes()
    method attribute (line 237) | public function attribute($attr, $value = '')
    method formatAttribute (line 257) | public function formatAttribute($attributes = [])
    method action (line 280) | public function action($action)
    method method (line 292) | public function method($method = 'POST')
    method disablePjax (line 308) | public function disablePjax()
    method disableReset (line 320) | public function disableReset()
    method disableSubmit (line 332) | public function disableSubmit()
    method setWidth (line 347) | public function setWidth($fieldWidth = 8, $labelWidth = 2)
    method hasField (line 370) | public function hasField($name)
    method pushField (line 382) | public function pushField(Field $field)
    method fields (line 396) | public function fields()
    method getVariables (line 406) | protected function getVariables()
    method hasFile (line 424) | public function hasFile()
    method validate (line 442) | public function validate(Request $request)
    method mergeValidationMessages (line 473) | protected function mergeValidationMessages($validators)
    method fieldset (line 492) | public function fieldset(string $title, Closure $setCallback)
    method unbox (line 508) | public function unbox()
    method addConfirmScript (line 515) | protected function addConfirmScript()
    method addCascadeScript (line 552) | protected function addCascadeScript()
    method prepareForm (line 568) | protected function prepareForm()
    method prepareHandle (line 581) | protected function prepareHandle()
    method render (line 595) | public function render()
    method __call (line 618) | public function __call($method, $arguments)
    method __invoke (line 638) | public function __invoke(Content $content)

FILE: src/Widgets/InfoBox.php
  class InfoBox (line 7) | class InfoBox extends Widget implements Renderable
    method __construct (line 28) | public function __construct($name, $icon, $color, $link, $info)
    method render (line 43) | public function render()

FILE: src/Widgets/MultipleSteps.php
  class MultipleSteps (line 7) | class MultipleSteps implements Renderable
    method __construct (line 30) | public function __construct($steps = [], $current = null)
    method make (line 43) | public static function make($steps, $current = null): self
    method resolveCurrentStep (line 54) | protected function resolveCurrentStep($steps, $current)
    method render (line 68) | public function render()

FILE: src/Widgets/Navbar.php
  class Navbar (line 9) | class Navbar implements Renderable
    method __construct (line 19) | public function __construct()
    method left (line 32) | public function left($element)
    method right (line 44) | public function right($element)
    method add (line 58) | public function add($element)
    method render (line 68) | public function render($part = 'right')

FILE: src/Widgets/Navbar/Fullscreen.php
  class Fullscreen (line 13) | class Fullscreen implements Renderable
    method render (line 15) | public function render()

FILE: src/Widgets/Navbar/RefreshButton.php
  class RefreshButton (line 8) | class RefreshButton implements Renderable
    method render (line 10) | public function render()

FILE: src/Widgets/StepForm.php
  class StepForm (line 5) | class StepForm extends Form
    method next (line 32) | protected function next($data = [])
    method prev (line 39) | protected function prev()
    method remember (line 47) | protected function remember($data)
    method redirectToNextStep (line 55) | protected function redirectToNextStep()
    method all (line 71) | protected function all()
    method clear (line 81) | protected function clear()
    method setSteps (line 91) | public function setSteps($steps)
    method setCurrent (line 103) | public function setCurrent($current)
    method setUrl (line 115) | public function setUrl($url)
    method prepareForm (line 122) | protected function prepareForm()
    method addFooter (line 137) | protected function addFooter()
    method sanitize (line 169) | public function sanitize()
    method data (line 185) | public function data()

FILE: src/Widgets/Tab.php
  class Tab (line 8) | class Tab extends Widget implements Renderable
    method __construct (line 31) | public function __construct()
    method add (line 46) | public function add($title, $content, $active = false, $id = null)
    method addLink (line 71) | public function addLink($title, $href, $active = false)
    method title (line 92) | public function title($title = '')
    method dropDown (line 104) | public function dropDown(array $links)
    method render (line 127) | public function render()
    method setupScript (line 142) | protected function setupScript()

FILE: src/Widgets/Table.php
  class Table (line 8) | class Table extends Widget implements Renderable
    method __construct (line 37) | public function __construct($headers = [], $rows = [], $style = [])
    method setHeaders (line 53) | public function setHeaders($headers = [])
    method setRows (line 67) | public function setRows($rows = [])
    method setStyle (line 89) | public function setStyle($style = [])
    method render (line 101) | public function render()

FILE: src/Widgets/Widget.php
  class Widget (line 7) | abstract class Widget extends Fluent
    method render (line 17) | abstract public function render();
    method view (line 24) | public function view($view)
    method formatAttributes (line 34) | public function formatAttributes()
    method attributeElement (line 55) | protected function attributeElement($key, $value)
    method __toString (line 68) | public function __toString()

FILE: src/helpers.php
  function admin_path (line 14) | function admin_path($path = '')
  function admin_url (line 30) | function admin_url($path = '', $parameters = [], $secure = null)
  function admin_base_path (line 50) | function admin_base_path($path = '')
  function admin_toastr (line 75) | function admin_toastr($message = '', $type = 'success', $options = [])
  function admin_success (line 91) | function admin_success($title, $message = '')
  function admin_error (line 105) | function admin_error($title, $message = '')
  function admin_warning (line 119) | function admin_warning($title, $message = '')
  function admin_info (line 134) | function admin_info($title, $message = '', $type = 'info')
  function admin_asset (line 149) | function admin_asset($path)
  function admin_trans (line 166) | function admin_trans($key = null, $replace = [], $locale = null)
  function array_delete (line 186) | function array_delete(&$array, $value)
  function class_uses_deep (line 208) | function class_uses_deep($class, $autoload = true)
  function admin_dump (line 231) | function admin_dump($var)
  function file_size (line 256) | function file_size($bytes)
  function prepare_options (line 283) | function prepare_options(array $options)
  function json_encode_options (line 314) | function json_encode_options(array $options)
  function admin_get_route (line 325) | function admin_get_route(string $name): string

FILE: tests/AuthTest.php
  class AuthTest (line 3) | class AuthTest extends TestCase
    method testLoginPage (line 5) | public function testLoginPage()
    method testVisitWithoutLogin (line 11) | public function testVisitWithoutLogin()
    method testLogin (line 18) | public function testLogin()
    method testLogout (line 55) | public function testLogout()

FILE: tests/FileUploadTest.php
  class FileUploadTest (line 7) | class FileUploadTest extends TestCase
    method setUp (line 9) | protected function setUp(): void
    method testFileUploadPage (line 16) | public function testFileUploadPage()
    method uploadFiles (line 32) | protected function uploadFiles()
    method testUploadFile (line 44) | public function testUploadFile()
    method testUpdateFile (line 73) | public function testUpdateFile()
    method testDeleteFiles (line 114) | public function testDeleteFiles()
    method testBatchDelete (line 136) | public function testBatchDelete()

FILE: tests/ImageUploadTest.php
  class ImageUploadTest (line 8) | class ImageUploadTest extends TestCase
    method setUp (line 10) | protected function setUp(): void
    method testDisableFilter (line 17) | public function testDisableFilter()
    method testImageUploadPage (line 23) | public function testImageUploadPage()
    method uploadImages (line 38) | protected function uploadImages()
    method testUploadImage (line 50) | public function testUploadImage()
    method testRemoveImage (line 72) | public function testRemoveImage()
    method testUpdateImage (line 81) | public function testUpdateImage()
    method testDeleteImages (line 121) | public function testDeleteImages()
    method testBatchDelete (line 143) | public function testBatchDelete()
    method testUploadMultipleImage (line 170) | public function testUploadMultipleImage()
    method testRemoveMultipleFiles (line 206) | public function testRemoveMultipleFiles()
    method fileCountInImageDir (line 229) | protected function fileCountInImageDir($dir = 'uploads/images')

FILE: tests/IndexTest.php
  class IndexTest (line 5) | class IndexTest extends TestCase
    method setUp (line 7) | protected function setUp(): void
    method testIndex (line 14) | public function testIndex()
    method testClickMenu (line 35) | public function testClickMenu()

FILE: tests/InstallTest.php
  class InstallTest (line 3) | class InstallTest extends TestCase
    method testInstalledDirectories (line 5) | public function testInstalledDirectories()

FILE: tests/LaravelTest.php
  class LaravelTest (line 3) | class LaravelTest extends TestCase
    method testLaravel (line 5) | public function testLaravel()

FILE: tests/MenuTest.php
  class MenuTest (line 6) | class MenuTest extends TestCase
    method setUp (line 8) | protected function setUp(): void
    method testMenuIndex (line 15) | public function testMenuIndex()
    method testAddMenu (line 27) | public function testAddMenu()
    method testDeleteMenu (line 46) | public function testDeleteMenu()
    method testEditMenu (line 52) | public function testEditMenu()
    method testShowPage (line 62) | public function testShowPage()
    method testEditMenuParent (line 68) | public function testEditMenuParent()

FILE: tests/ModelTreeTest.php
  class ModelTreeTest (line 5) | class ModelTreeTest extends TestCase
    method setUp (line 7) | protected function setUp(): void
    method testSelectOptions (line 12) | public function testSelectOptions()

FILE: tests/OperationLogTest.php
  class OperationLogTest (line 6) | class OperationLogTest extends TestCase
    method setUp (line 8) | protected function setUp(): void
    method testOperationLogIndex (line 15) | public function testOperationLogIndex()
    method testGenerateLogs (line 24) | public function testGenerateLogs()
    method testDeleteLogs (line 46) | public function testDeleteLogs()
    method testDeleteMultipleLogs (line 62) | public function testDeleteMultipleLogs()

FILE: tests/PermissionsTest.php
  class PermissionsTest (line 7) | class PermissionsTest extends TestCase
    method setUp (line 9) | protected function setUp(): void
    method testPermissionsIndex (line 16) | public function testPermissionsIndex()
    method testAddAndDeletePermissions (line 24) | public function testAddAndDeletePermissions()
    method testAddPermissionToRole (line 48) | public function testAddPermissionToRole()
    method testAddPermissionToUser (line 64) | public function testAddPermissionToUser()
    method testAddUserAndAssignPermission (line 81) | public function testAddUserAndAssignPermission()
    method testPermissionThroughRole (line 140) | public function testPermissionThroughRole()
    method testEditPermission (line 197) | public function testEditPermission()

FILE: tests/RolesTest.php
  class RolesTest (line 6) | class RolesTest extends TestCase
    method setUp (line 8) | protected function setUp(): void
    method testRolesIndex (line 15) | public function testRolesIndex()
    method testAddRole (line 22) | public function testAddRole()
    method testAddRoleToUser (line 32) | public function testAddRoleToUser()
    method testDeleteRole (line 71) | public function testDeleteRole()
    method testEditRole (line 89) | public function testEditRole()

FILE: tests/TestCase.php
  class TestCase (line 9) | class TestCase extends BaseTestCase
    method createApplication (line 18) | public function createApplication()
    method setUp (line 34) | protected function setUp(): void
    method tearDown (line 74) | protected function tearDown(): void
    method migrateTestTables (line 90) | public function migrateTestTables()

FILE: tests/UserFormTest.php
  class UserFormTest (line 6) | class UserFormTest extends TestCase
    method setUp (line 8) | protected function setUp(): void
    method testCreatePage (line 15) | public function testCreatePage()
    method testSubmitForm (line 40) | public function testSubmitForm()
    method seedsTable (line 102) | protected function seedsTable($count = 100)
    method testEditForm (line 112) | public function testEditForm()
    method testUpdateForm (line 140) | public function testUpdateForm()
    method testUpdateFormWithRule (line 159) | public function testUpdateFormWithRule()
    method testFormHeader (line 191) | public function testFormHeader()
    method testFormFooter (line 201) | public function testFormFooter()

FILE: tests/UserGridTest.php
  class UserGridTest (line 7) | class UserGridTest extends TestCase
    method setUp (line 9) | protected function setUp(): void
    method testIndexPage (line 16) | public function testIndexPage()
    method seedsTable (line 52) | protected function seedsTable($count = 100)
    method testGridWithData (line 64) | public function testGridWithData()
    method testGridPagination (line 75) | public function testGridPagination()
    method testOrderByJson (line 95) | public function testOrderByJson()
    method testEqualFilter (line 112) | public function testEqualFilter()
    method testLikeFilter (line 140) | public function testLikeFilter()
    method testFilterRelation (line 161) | public function testFilterRelation()
    method testDisplayCallback (line 181) | public function testDisplayCallback()
    method testHasManyRelation (line 194) | public function testHasManyRelation()
    method testGridActions (line 209) | public function testGridActions()
    method testGridRows (line 219) | public function testGridRows()
    method testGridPerPage (line 229) | public function testGridPerPage()

FILE: tests/UserSettingTest.php
  class UserSettingTest (line 6) | class UserSettingTest extends TestCase
    method setUp (line 8) | protected function setUp(): void
    method testVisitSettingPage (line 15) | public function testVisitSettingPage()
    method testUpdateName (line 29) | public function testUpdateName()
    method testUpdateAvatar (line 42) | public function testUpdateAvatar()
    method testUpdatePasswordConfirmation (line 56) | public function testUpdatePasswordConfirmation()
    method testUpdatePassword (line 69) | public function testUpdatePassword()

FILE: tests/UsersTest.php
  class UsersTest (line 5) | class UsersTest extends TestCase
    method setUp (line 9) | protected function setUp(): void
    method testUsersIndexPage (line 18) | public function testUsersIndexPage()
    method testCreateUser (line 24) | public function testCreateUser()
    method testUpdateUser (line 64) | public function testUpdateUser()
    method testResetPassword (line 73) | public function testResetPassword()

FILE: tests/controllers/FileController.php
  class FileController (line 10) | class FileController extends AdminController
    method grid (line 19) | protected function grid()
    method form (line 36) | protected function form()

FILE: tests/controllers/ImageController.php
  class ImageController (line 10) | class ImageController extends AdminController
    method grid (line 19) | protected function grid()
    method form (line 38) | protected function form()

FILE: tests/controllers/MultipleImageController.php
  class MultipleImageController (line 10) | class MultipleImageController extends AdminController
    method grid (line 19) | protected function grid()
    method form (line 38) | protected function form()

FILE: tests/controllers/UserController.php
  class UserController (line 11) | class UserController extends AdminController
    method grid (line 20) | protected function grid()
    method form (line 82) | protected function form()

FILE: tests/migrations/2016_11_22_093148_create_test_tables.php
  class CreateTestTables (line 6) | class CreateTestTables extends Migration
    method up (line 13) | public function up()
    method down (line 89) | public function down()

FILE: tests/models/File.php
  class File (line 7) | class File extends Model

FILE: tests/models/Image.php
  class Image (line 7) | class Image extends Model

FILE: tests/models/MultipleImage.php
  class MultipleImage (line 7) | class MultipleImage extends Model
    method setPicturesAttribute (line 11) | public function setPicturesAttribute($pictures)
    method getPicturesAttribute (line 18) | public function getPicturesAttribute($pictures)

FILE: tests/models/Profile.php
  class Profile (line 7) | class Profile extends Model
    method user (line 11) | public function user()

FILE: tests/models/Tag.php
  class Tag (line 7) | class Tag extends Model
    method users (line 11) | public function users()

FILE: tests/models/Tree.php
  class Tree (line 8) | class Tree extends Model
    method __construct (line 17) | public function __construct(array $attributes = [])

FILE: tests/models/User.php
  class User (line 7) | class User extends Model
    method profile (line 15) | public function profile()
    method getFullNameAttribute (line 20) | public function getFullNameAttribute()
    method getPositionAttribute (line 25) | public function getPositionAttribute()
    method tags (line 30) | public function tags()

FILE: tests/seeds/UserTableSeeder.php
  class UserTableSeeder (line 7) | class UserTableSeeder extends Seeder
    method run (line 9) | public function run()
Condensed preview — 716 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (2,252K chars).
[
  {
    "path": ".github/dependabot.yml",
    "chars": 148,
    "preview": "version: 2\nupdates:\n- package-ecosystem: composer\n  directory: \"/\"\n  schedule:\n    interval: daily\n    time: \"21:00\"\n  o"
  },
  {
    "path": ".github/stale.yml",
    "chars": 684,
    "preview": "# Number of days of inactivity before an issue becomes stale\ndaysUntilStale: 60\n# Number of days of inactivity before a "
  },
  {
    "path": ".gitignore",
    "chars": 98,
    "preview": ".DS_Store\nphpunit.phar\n/vendor\ncomposer.phar\ncomposer.lock\n*.project\n.idea/\n.php_cs.cache\n.vscode/"
  },
  {
    "path": ".travis.yml",
    "chars": 346,
    "preview": "language: php\n\nphp:\n  - 7.2\n  - 7.3\n  - 7.4\n  - 8.0\n\nmatrix:\n  fast_finish: true\n  allow_failures:\n    - php: hhvm\n\nsudo"
  },
  {
    "path": "CHANGELOG.md",
    "chars": 48,
    "preview": "# Changelog\nSee https://laravel-admin.org/docs/\n"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 4662,
    "preview": "# Contribute\n\n## Introduction\n\nFirst, thank you for considering contributing to laravel-admin! It's people like you that"
  },
  {
    "path": "FUNDING.yml",
    "chars": 118,
    "preview": "# These are supported funding model platforms\n\nopen_collective: laravel-admin\ncustom: http://laravel-admin.org/donate\n"
  },
  {
    "path": "LICENSE",
    "chars": 1078,
    "preview": "The MIT License (MIT)\n\nCopyright (c) 2015 Jens Segers\n\nPermission is hereby granted, free of charge, to any person obtai"
  },
  {
    "path": "README.md",
    "chars": 11450,
    "preview": "<p align=\"center\">\n<a href=\"https://laravel-admin.org/\">\n<img src=\"https://laravel-admin.org/images/logo002.png\" alt=\"la"
  },
  {
    "path": "composer.json",
    "chars": 1621,
    "preview": "{\n    \"name\": \"encore/laravel-admin\",\n    \"description\": \"laravel admin\",\n    \"type\": \"library\",\n    \"keywords\": [\"larav"
  },
  {
    "path": "config/admin.php",
    "chars": 13286,
    "preview": "<?php\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Laravel-ad"
  },
  {
    "path": "database/migrations/2016_01_04_173148_create_admin_tables.php",
    "chars": 4315,
    "preview": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Support\\Fa"
  },
  {
    "path": "docs/en/LICENSE.md",
    "chars": 1078,
    "preview": "The MIT License (MIT)\n\nCopyright (c) 2015 Jens Segers\n\nPermission is hereby granted, free of charge, to any person obtai"
  },
  {
    "path": "docs/en/README.md",
    "chars": 3222,
    "preview": "laravel-admin\n=====\n\n[![Build Status](https://travis-ci.org/z-song/laravel-admin.svg?branch=master)](https://travis-ci.o"
  },
  {
    "path": "docs/en/_sidebar.md",
    "chars": 1320,
    "preview": "\n- Getting started\n  - [Installation](/en/installation.md)\n  - [Quick start](/en/quick-start.md)\n  - [Page content & Lay"
  },
  {
    "path": "docs/en/change-log.md",
    "chars": 411,
    "preview": "# Change log\n\n## v1.2.9、v1.3.3、v1.4.1\n\n- Add user settings and modify avatar function\n- Embedded form support\n- Support "
  },
  {
    "path": "docs/en/content-layout.md",
    "chars": 4076,
    "preview": "# Page content\n\nThe layout usage of `laravel-admin` can be found in the `index()` method of the home page's layout file "
  },
  {
    "path": "docs/en/custom-authentication.md",
    "chars": 3090,
    "preview": "# Custom authentication\n\nIf you do not use the `laravel-admin` built-in authentication login logic, you can refer to the"
  },
  {
    "path": "docs/en/custom-chart.md",
    "chars": 2312,
    "preview": "# Custom chart\n\n`laravel-admin 1.5` has removed all the chart components. If you want to add chart components to the pag"
  },
  {
    "path": "docs/en/custom-navbar.md",
    "chars": 3614,
    "preview": "# Customize the head navigation bar\n\nSince version `1.5.6`, you can add the html element to the top navigation bar, open"
  },
  {
    "path": "docs/en/extension-api-tester.md",
    "chars": 1589,
    "preview": "# Laravel API tester\n\n`api-tester` is an API testing tool developed for `laravel` that helps you test your laravel API l"
  },
  {
    "path": "docs/en/extension-config.md",
    "chars": 920,
    "preview": "# Configuration management\n\nThis tool will store the configuration data in the database\n\n![wx20170810-100226](https://us"
  },
  {
    "path": "docs/en/extension-helpers.md",
    "chars": 2281,
    "preview": "# Helpers\n\nAdded support for developers, available in development to help improve efficiency, currently providing `scaff"
  },
  {
    "path": "docs/en/extension-media-manager.md",
    "chars": 1072,
    "preview": "# Media manager\n\nThis tool for manage local files\n\n![wx20170809-170104](https://user-images.githubusercontent.com/147910"
  },
  {
    "path": "docs/en/extension-scheduling.md",
    "chars": 811,
    "preview": "# Task scheduling\n\nThis tool is a web interface for manage Laravel's scheduled tasks\n\n![wx20170810-101048](https://user-"
  },
  {
    "path": "docs/en/installation.md",
    "chars": 1839,
    "preview": "# Installation\n\n> This package requires PHP 7+ and Laravel 5.5, for old versions please refer to [1.4](http://laravel-ad"
  },
  {
    "path": "docs/en/model-form-callback.md",
    "chars": 1833,
    "preview": "# Model form callback\n\n`model-form` currently has three methods for receiving callback functions:\n\n```php\n// callback af"
  },
  {
    "path": "docs/en/model-form-field-management.md",
    "chars": 4705,
    "preview": "# Fields management\n\n\n## Remove field\n\nThe built-in `map` and `editor` fields requires the front-end files via cdn, and "
  },
  {
    "path": "docs/en/model-form-fields.md",
    "chars": 15950,
    "preview": "# Builtin form fields\n\nThere are a lots of form components built into the `model-form` to help you quickly build forms.\n"
  },
  {
    "path": "docs/en/model-form-upload.md",
    "chars": 2511,
    "preview": "# File/Image upload\n\n[model-form](/en/model-form.md) can build file and image upload field with following codes\n\n```php\n"
  },
  {
    "path": "docs/en/model-form-validation.md",
    "chars": 947,
    "preview": "Form validation\n========\n\n`model-form` uses laravel's validation rules to verify the data submitted by the form:\n\n```php"
  },
  {
    "path": "docs/en/model-form.md",
    "chars": 4274,
    "preview": "# Model-Form\n\nThe `Encore\\Admin\\Form` class is used to generate a data model-based form. For example, there is a` movies"
  },
  {
    "path": "docs/en/model-grid-actions.md",
    "chars": 2333,
    "preview": "# Model grid row actions\n\n`model-grid` By default, there are two actions `edit` and `delete`, which can be turned off in"
  },
  {
    "path": "docs/en/model-grid-column.md",
    "chars": 7282,
    "preview": "# Model-grid column\n\n`model-grid` built-in a lot of the operation of the column, you can use these methods very flexible"
  },
  {
    "path": "docs/en/model-grid-custom-tools.md",
    "chars": 4351,
    "preview": "# Custom tools\n\n`model-grid` has `batch delete` and `refresh` operations tools as default, `model-grid` provides custom "
  },
  {
    "path": "docs/en/model-grid-export.md",
    "chars": 1633,
    "preview": "Data export\n=======\n\n`model-grid` built-in export function is to achieve a simple csv format file export, if you encount"
  },
  {
    "path": "docs/en/model-grid-filters.md",
    "chars": 5908,
    "preview": "# Model grid filters\n\n`model-grid`Provides a set of data filters:\n\n```php\n$grid->filter(function($filter){\n\n    // Remov"
  },
  {
    "path": "docs/en/model-grid.md",
    "chars": 9901,
    "preview": "# Model-grid\n\nClass `Encore\\Admin\\Grid` is used to generate tables based on the data model,for example,we have a table `"
  },
  {
    "path": "docs/en/model-tree.md",
    "chars": 2973,
    "preview": "# Model-tree\n\nCan be achieved through a `model-tree` to a tree-like components, you can drag the way to achieve the leve"
  },
  {
    "path": "docs/en/permission.md",
    "chars": 3911,
    "preview": "# Access Control\n\n`laravel-admin` has built-in` RBAC` permissions control module, expand the left sidebar `Auth`, you ca"
  },
  {
    "path": "docs/en/quick-start.md",
    "chars": 2239,
    "preview": "# Quick start\n\nWe use `users` table come with `Laravel` for example,the structure of table is:\n```sql\nCREATE TABLE `user"
  },
  {
    "path": "docs/en/upgrade.md",
    "chars": 819,
    "preview": "# Upgrade precautions\n\nBecause `laravel-admin 1.5` built-in table structure has been modified, it is recommended that yo"
  },
  {
    "path": "docs/en/widgets.md",
    "chars": 3846,
    "preview": "# Web widgets\n\n## Box\n\n`Encore\\Admin\\Widgets\\Box` used to generate box components:\n\n```php\nuse Encore\\Admin\\Widgets\\Box;"
  },
  {
    "path": "docs/issue_template.md",
    "chars": 107,
    "preview": "- Laravel Version: #.#.#\n- PHP Version:\n- Laravel-admin: #.#.#\n\n### Description:\n\n\n### Steps To Reproduce:\n"
  },
  {
    "path": "docs/zh/LICENSE.md",
    "chars": 1078,
    "preview": "The MIT License (MIT)\n\nCopyright (c) 2015 Jens Segers\n\nPermission is hereby granted, free of charge, to any person obtai"
  },
  {
    "path": "docs/zh/README.md",
    "chars": 2353,
    "preview": "# laravel-admin\n\n[![Build Status](https://travis-ci.org/z-song/laravel-admin.svg?branch=master)](https://travis-ci.org/z"
  },
  {
    "path": "docs/zh/_sidebar.md",
    "chars": 1109,
    "preview": "\n- 入门\n  - [安装](/zh/installation.md)\n  - [快速开始](/zh/quick-start.md)\n  - [页面内容和布局](/zh/content-layout.md)\n- 模型表格\n  - [基本使用"
  },
  {
    "path": "docs/zh/change-log.md",
    "chars": 398,
    "preview": "# Change log\n\n## v1.2.9、v1.3.3、v1.4.1\n\n- 添加用户设置和修改头像功能\n- model-form自定义工具[参考](zh/model-form.md?id=自定义工具)\n- 内嵌表单支持[参考](zh/"
  },
  {
    "path": "docs/zh/content-layout.md",
    "chars": 3219,
    "preview": "# 页面内容\n\n`laravel-admin`的布局可参考后台首页的布局文件[HomeController.php](https://github.com/z-song/laravel-admin/blob/master/src/Conso"
  },
  {
    "path": "docs/zh/custom-authentication.md",
    "chars": 2596,
    "preview": "# 自定义登陆\n\n如果不使用`laravel-admin`内置的认证登陆逻辑,可以参考下面的方式自定义登陆认证逻辑\n\n首先要先定义一个`user provider`,用来获取用户身份, 比如`app/Providers/CustomUser"
  },
  {
    "path": "docs/zh/custom-chart.md",
    "chars": 1967,
    "preview": "# 自定义图表\n\n`laravel-admin 1.5`已经移除了所有的图表组件,如果要在页面中加入图表组件,可以参考下面的流程\n\n用`chartjs`举例,首先要下载[chartjs](http://chartjs.org/),放到pub"
  },
  {
    "path": "docs/zh/custom-navbar.md",
    "chars": 3114,
    "preview": "# 自定义头部导航条\n\n从版本`1.5.6`开始,可以在顶部导航条上添加html元素了,  打开`app/Admin/bootstrap.php`:\n```php\nuse Encore\\Admin\\Facades\\Admin;\n\nAdmin"
  },
  {
    "path": "docs/zh/extension-api-tester.md",
    "chars": 1102,
    "preview": "# Laravel API测试\n\n`api-tester`是专门针对`laravel`开发的API测试工具,能够帮助你像`postman`一样测试你的laravel API。\n\n![wx20170809-164424](https://us"
  },
  {
    "path": "docs/zh/extension-config.md",
    "chars": 877,
    "preview": "# 配置管理\n\n这个工具将配置数据存在数据库中,然后在能在Laravel中能像普通配置一样使用\n\n![wx20170810-100226](https://user-images.githubusercontent.com/1479100/"
  },
  {
    "path": "docs/zh/extension-helpers.md",
    "chars": 1314,
    "preview": "# 帮助工具\n\n在最新的版本中新增了面向开发人员的帮助工具,能在开发中提供帮助提高效率,目前提供`脚手架`,`数据库命令行`和`artisan命令行`三个工具,如果有更好的其它实用工具的想法,欢迎提供建议。\n\n安装:\n```php\ncomp"
  },
  {
    "path": "docs/zh/extension-media-manager.md",
    "chars": 879,
    "preview": "# 文件管理\n\n文件管理是一个对本地文件的可视化管理的工具\n\n![wx20170809-170104](https://user-images.githubusercontent.com/1479100/29113762-99886c32-"
  },
  {
    "path": "docs/zh/extension-scheduling.md",
    "chars": 639,
    "preview": "# 定时任务\n\n这个工具是管理Laravel计划任务的web管理页面\n\n![wx20170810-101048](https://user-images.githubusercontent.com/1479100/29151552-8aff"
  },
  {
    "path": "docs/zh/installation.md",
    "chars": 1040,
    "preview": "# 安装\n\n> 当前版本(1.5)需要安装`PHP 7+`和`Laravel 5.5`, 如果你使用更早的版本,请参考文档: [1.4](http://laravel-admin.org/docs/v1.4/#/zh/) \n\n首先确保安装好"
  },
  {
    "path": "docs/zh/model-form-callback.md",
    "chars": 1205,
    "preview": "# 模型表单回调\n\n`model-form`目前提供了两个方法来接收回调函数:\n\n```php\n//保存前回调\n$form->saving(function (Form $form) {\n    //...\n});\n\n//保存后回调\n$fo"
  },
  {
    "path": "docs/zh/model-form-field-management.md",
    "chars": 5783,
    "preview": "# 组件管理\n\n## 移除已有组件\n\nform表单内置的`map`和`editor`组件通过cdn的方式引用了前端文件,如果网络方面有问题,可以通过下面的方式将它们移除\n\n找到文件`app/Admin/bootstrap.php`,如果文件"
  },
  {
    "path": "docs/zh/model-form-fields.md",
    "chars": 13574,
    "preview": "# 表单组件\n\n在`model-form`中内置了大量的form组件来帮助你快速的构建form表单\n\n## 公共方法\n\n### 设置保存值\n```php\n$form->text('title')->value('text...');\n```"
  },
  {
    "path": "docs/zh/model-form-upload.md",
    "chars": 2063,
    "preview": "# 文件/图片上传\n\n[model-form](/zh/model-form.md)通过以下的调用来生成form元素。\n\n```php\n$form->file('file_column');\n$form->image('image_colu"
  },
  {
    "path": "docs/zh/model-form-validation.md",
    "chars": 623,
    "preview": "表单验证\n========\n\n`model-form`使用laravel的验证规则来验证表单提交的数据:\n\n```php\n$form->text('title')->rules('required|min:3');\n\n// 复杂的验证规则可"
  },
  {
    "path": "docs/zh/model-form.md",
    "chars": 3599,
    "preview": "# 基于数据模型的表单\n\n`Encore\\Admin\\Form`类用于生成基于数据模型的表单,先来个例子,数据库中有`movies`表\n\n```sql\nCREATE TABLE `movies` (\n  `id` int(10) unsig"
  },
  {
    "path": "docs/zh/model-grid-actions.md",
    "chars": 1457,
    "preview": "# 模型表格行操作\n\n`model-grid`默认有三个行操作`编辑`、`删除`和`详情`,可以通过下面的方式关闭它们:\n\n```php\n $grid->actions(function ($actions) {\n    $actions-"
  },
  {
    "path": "docs/zh/model-grid-column.md",
    "chars": 6032,
    "preview": "# 列操作\n\n`model-grid`内置了很多对于列的操作方法,可以通过这些方法很灵活的操作列数据。\n\n`Encore\\Admin\\Grid\\Column`对象内置了`display()`方法来通过传入的回调函数来处理当前列的值,\n```"
  },
  {
    "path": "docs/zh/model-grid-custom-tools.md",
    "chars": 3435,
    "preview": "# 自定义工具\n\n在`model-grid`的头部默认有`批量删除`和`刷新`两个操作工具,如果有更多的操作需求,`model-grid`提供了自定义工具的功能,下面的示例添加一个性别分类选择的按钮组工具。\n\n先定义工具类`app/Admi"
  },
  {
    "path": "docs/zh/model-grid-data.md",
    "chars": 2224,
    "preview": "# 表格数据源\n\n## 数据来自模型\n\n如果使用模型来获取数据,那么修改来源数据就非常简单:\n```php\n// 添加默认查询条件\n$grid->model()->where('id', '>', 100);\n\n// 设置初始排序条件\n$g"
  },
  {
    "path": "docs/zh/model-grid-export.md",
    "chars": 1278,
    "preview": "数据导出\n=======\n\n`model-grid`内置的导出功能只是实现了简单的csv格式文件的导出,如果遇到文件编码问题或者满足不了自己需求的情况,可以按照下面的步骤来自定义导出功能\n\n本示例用[Laravel-Excel](https"
  },
  {
    "path": "docs/zh/model-grid-exporter.md",
    "chars": 633,
    "preview": "# 自定义导出\n\nlaravel-admin的数据表格默认支持导出csv文件,\n\n```php\n<?php\n\nnamespace App\\Admin\\Extensions;\n\nuse Encore\\Admin\\Grid\\Exporters\\"
  },
  {
    "path": "docs/zh/model-grid-filters.md",
    "chars": 4796,
    "preview": "# 数据查询过滤\n\n`model-grid`提供了一系列的方法实现表格数据的查询过滤:\n\n```php\n$grid->filter(function($filter){\n\n    // 去掉默认的id过滤器\n    $filter->dis"
  },
  {
    "path": "docs/zh/model-grid.md",
    "chars": 8354,
    "preview": "# 基于数据模型的表格\n\n`Encore\\Admin\\Grid`类用于生成基于数据模型的表格,先来个例子,数据库中有`movies`表\n\n```sql\nCREATE TABLE `movies` (\n  `id` int(10) unsig"
  },
  {
    "path": "docs/zh/model-tree.md",
    "chars": 2507,
    "preview": "# 模型树\n\n可以通过`model-tree`来实现一个树状组件,可以用拖拽的方式实现数据的层级、排序等操作,下面是基本的用法.\n\n## 表结构和模型\n要使用`model-tree`,要遵守约定的表结构:\n```sql\nCREATE TAB"
  },
  {
    "path": "docs/zh/permission.md",
    "chars": 2539,
    "preview": "# 权限控制\n\n`laravel-admin`已经内置了`RBAC`权限控制模块,展开左侧边栏的`Auth`,下面有用户、角色、权限三项的管理面板,权限控制的使用如下:\n\n## 路由控制\n\n在`laravel-admin 1.5`中,权限和"
  },
  {
    "path": "docs/zh/qa.md",
    "chars": 1704,
    "preview": "# 常见问题汇总\n\n## 重写内置视图\n\n如果有需要自己修改view,但是不方便直接修改`laravel-admin`的情况,可以用下面的办法解决\n\n复制`vendor/encore/laravel-admin/views`到项目的`res"
  },
  {
    "path": "docs/zh/quick-start.md",
    "chars": 1670,
    "preview": "# 快速开始\n\n## 数据表结构\n用`Laravel`自带的`users`表举例,表结构为:\n```sql\nCREATE TABLE `users` (\n  `id` int(10) unsigned NOT NULL AUTO_INCRE"
  },
  {
    "path": "docs/zh/upgrade.md",
    "chars": 505,
    "preview": "# 升级注意事项\n\n因为laravel-admin 1.5的内置表结构有修改,所以建议大家重新安装laravel 5.5和laravel-admin 1.5,然后再将代码迁移过来\n\n代码迁移需要注意的事项:\n\n- 表结构有修改 请参考 [t"
  },
  {
    "path": "docs/zh/widgets.md",
    "chars": 3035,
    "preview": "# 前端组件\n\n## Box组件\n\n`Encore\\Admin\\Widgets\\Box`用来生成box组件:\n\n```php\nuse Encore\\Admin\\Widgets\\Box;\n\n$box = new Box('Box标题', 'B"
  },
  {
    "path": "phpunit.xml.dist",
    "chars": 540,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<phpunit backupGlobals=\"false\"\n         backupStaticAttributes=\"false\"\n         b"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/bootstrap-slider/bootstrap-slider.js",
    "chars": 36164,
    "preview": "/*! =========================================================\n * bootstrap-slider.js\n *\n * Maintainers: \n *\t\tKyle Kemp \n"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/bootstrap-slider/slider.css",
    "chars": 4414,
    "preview": "/*!\n * Slider for Bootstrap\n *\n * Copyright 2012 Stefan Petre\n * Licensed under the Apache License v2.0\n * http://www.ap"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/iCheck/all.css",
    "chars": 1568,
    "preview": "/* iCheck plugin skins\n----------------------------------- */\n@import url(\"minimal/_all.css\");\n/*\n@import url(\"minimal/m"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/iCheck/flat/_all.css",
    "chars": 13773,
    "preview": "/* iCheck plugin Flat skin\n----------------------------------- */\n.icheckbox_flat,\n.iradio_flat {\n    display: inline-bl"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/iCheck/flat/aero.css",
    "chars": 1428,
    "preview": "/* iCheck plugin Flat skin, aero\n----------------------------------- */\n.icheckbox_flat-aero,\n.iradio_flat-aero {\n    di"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/iCheck/flat/blue.css",
    "chars": 1428,
    "preview": "/* iCheck plugin Flat skin, blue\n----------------------------------- */\n.icheckbox_flat-blue,\n.iradio_flat-blue {\n    di"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/iCheck/flat/flat.css",
    "chars": 1369,
    "preview": "/* iCheck plugin flat skin, black\n----------------------------------- */\n.icheckbox_flat,\n.iradio_flat {\n    display: in"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/iCheck/flat/green.css",
    "chars": 1443,
    "preview": "/* iCheck plugin Flat skin, green\n----------------------------------- */\n.icheckbox_flat-green,\n.iradio_flat-green {\n   "
  },
  {
    "path": "resources/assets/AdminLTE/plugins/iCheck/flat/grey.css",
    "chars": 1428,
    "preview": "/* iCheck plugin Flat skin, grey\n----------------------------------- */\n.icheckbox_flat-grey,\n.iradio_flat-grey {\n    di"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/iCheck/flat/orange.css",
    "chars": 1458,
    "preview": "/* iCheck plugin Flat skin, orange\n----------------------------------- */\n.icheckbox_flat-orange,\n.iradio_flat-orange {\n"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/iCheck/flat/pink.css",
    "chars": 1428,
    "preview": "/* iCheck plugin Flat skin, pink\n----------------------------------- */\n.icheckbox_flat-pink,\n.iradio_flat-pink {\n    di"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/iCheck/flat/purple.css",
    "chars": 1458,
    "preview": "/* iCheck plugin Flat skin, purple\n----------------------------------- */\n.icheckbox_flat-purple,\n.iradio_flat-purple {\n"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/iCheck/flat/red.css",
    "chars": 1413,
    "preview": "/* iCheck plugin Flat skin, red\n----------------------------------- */\n.icheckbox_flat-red,\n.iradio_flat-red {\n    displ"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/iCheck/flat/yellow.css",
    "chars": 1458,
    "preview": "/* iCheck plugin Flat skin, yellow\n----------------------------------- */\n.icheckbox_flat-yellow,\n.iradio_flat-yellow {\n"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/iCheck/futurico/futurico.css",
    "chars": 1421,
    "preview": "/* iCheck plugin Futurico skin\n----------------------------------- */\n.icheckbox_futurico,\n.iradio_futurico {\n    displa"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/iCheck/line/_all.css",
    "chars": 21689,
    "preview": "/* iCheck plugin Line skin\n----------------------------------- */\n.icheckbox_line,\n.iradio_line {\n    position: relative"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/iCheck/line/aero.css",
    "chars": 2222,
    "preview": "/* iCheck plugin Line skin, aero\n----------------------------------- */\n.icheckbox_line-aero,\n.iradio_line-aero {\n    po"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/iCheck/line/blue.css",
    "chars": 2222,
    "preview": "/* iCheck plugin Line skin, blue\n----------------------------------- */\n.icheckbox_line-blue,\n.iradio_line-blue {\n    po"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/iCheck/line/green.css",
    "chars": 2244,
    "preview": "/* iCheck plugin Line skin, green\n----------------------------------- */\n.icheckbox_line-green,\n.iradio_line-green {\n   "
  },
  {
    "path": "resources/assets/AdminLTE/plugins/iCheck/line/grey.css",
    "chars": 2222,
    "preview": "/* iCheck plugin Line skin, grey\n----------------------------------- */\n.icheckbox_line-grey,\n.iradio_line-grey {\n    po"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/iCheck/line/line.css",
    "chars": 2103,
    "preview": "/* iCheck plugin Line skin, black\n----------------------------------- */\n.icheckbox_line,\n.iradio_line {\n    position: r"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/iCheck/line/orange.css",
    "chars": 2260,
    "preview": "/* iCheck plugin Line skin, orange\n----------------------------------- */\n.icheckbox_line-orange,\n.iradio_line-orange {\n"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/iCheck/line/pink.css",
    "chars": 2222,
    "preview": "/* iCheck plugin Line skin, pink\n----------------------------------- */\n.icheckbox_line-pink,\n.iradio_line-pink {\n    po"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/iCheck/line/purple.css",
    "chars": 2266,
    "preview": "/* iCheck plugin Line skin, purple\n----------------------------------- */\n.icheckbox_line-purple,\n.iradio_line-purple {\n"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/iCheck/line/red.css",
    "chars": 2200,
    "preview": "/* iCheck plugin Line skin, red\n----------------------------------- */\n.icheckbox_line-red,\n.iradio_line-red {\n    posit"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/iCheck/line/yellow.css",
    "chars": 2266,
    "preview": "/* iCheck plugin Line skin, yellow\n----------------------------------- */\n.icheckbox_line-yellow,\n.iradio_line-yellow {\n"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/iCheck/minimal/_all.css",
    "chars": 14176,
    "preview": "/* red */\n.icheckbox_minimal-red,\n.iradio_minimal-red {\n    display: inline-block;\n    *display: inline;\n    vertical-al"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/iCheck/minimal/aero.css",
    "chars": 1626,
    "preview": "/* iCheck plugin Minimal skin, aero\n----------------------------------- */\n.icheckbox_minimal-aero,\n.iradio_minimal-aero"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/iCheck/minimal/blue.css",
    "chars": 1626,
    "preview": "/* iCheck plugin Minimal skin, blue\n----------------------------------- */\n.icheckbox_minimal-blue,\n.iradio_minimal-blue"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/iCheck/minimal/green.css",
    "chars": 1643,
    "preview": "/* iCheck plugin Minimal skin, green\n----------------------------------- */\n.icheckbox_minimal-green,\n.iradio_minimal-gr"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/iCheck/minimal/grey.css",
    "chars": 1626,
    "preview": "/* iCheck plugin Minimal skin, grey\n----------------------------------- */\n.icheckbox_minimal-grey,\n.iradio_minimal-grey"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/iCheck/minimal/minimal.css",
    "chars": 1563,
    "preview": "/* iCheck plugin Minimal skin, black\n----------------------------------- */\n.icheckbox_minimal,\n.iradio_minimal {\n    di"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/iCheck/minimal/orange.css",
    "chars": 1660,
    "preview": "/* iCheck plugin Minimal skin, orange\n----------------------------------- */\n.icheckbox_minimal-orange,\n.iradio_minimal-"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/iCheck/minimal/pink.css",
    "chars": 1626,
    "preview": "/* iCheck plugin Minimal skin, pink\n----------------------------------- */\n.icheckbox_minimal-pink,\n.iradio_minimal-pink"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/iCheck/minimal/purple.css",
    "chars": 1660,
    "preview": "/* iCheck plugin Minimal skin, purple\n----------------------------------- */\n.icheckbox_minimal-purple,\n.iradio_minimal-"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/iCheck/minimal/red.css",
    "chars": 1609,
    "preview": "/* iCheck plugin Minimal skin, red\n----------------------------------- */\n.icheckbox_minimal-red,\n.iradio_minimal-red {\n"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/iCheck/minimal/yellow.css",
    "chars": 1660,
    "preview": "/* iCheck plugin Minimal skin, yellow\n----------------------------------- */\n.icheckbox_minimal-yellow,\n.iradio_minimal-"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/iCheck/polaris/polaris.css",
    "chars": 1557,
    "preview": "/* iCheck plugin Polaris skin\n----------------------------------- */\n.icheckbox_polaris,\n.iradio_polaris {\n    display: "
  },
  {
    "path": "resources/assets/AdminLTE/plugins/iCheck/square/_all.css",
    "chars": 15591,
    "preview": "/* iCheck plugin Square skin\n----------------------------------- */\n.icheckbox_square,\n.iradio_square {\n    display: inl"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/iCheck/square/aero.css",
    "chars": 1611,
    "preview": "/* iCheck plugin Square skin, aero\n----------------------------------- */\n.icheckbox_square-aero,\n.iradio_square-aero {\n"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/iCheck/square/blue.css",
    "chars": 1611,
    "preview": "/* iCheck plugin Square skin, blue\n----------------------------------- */\n.icheckbox_square-blue,\n.iradio_square-blue {\n"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/iCheck/square/green.css",
    "chars": 1628,
    "preview": "/* iCheck plugin Square skin, green\n----------------------------------- */\n.icheckbox_square-green,\n.iradio_square-green"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/iCheck/square/grey.css",
    "chars": 1611,
    "preview": "/* iCheck plugin Square skin, grey\n----------------------------------- */\n.icheckbox_square-grey,\n.iradio_square-grey {\n"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/iCheck/square/orange.css",
    "chars": 1645,
    "preview": "/* iCheck plugin Square skin, orange\n----------------------------------- */\n.icheckbox_square-orange,\n.iradio_square-ora"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/iCheck/square/pink.css",
    "chars": 1611,
    "preview": "/* iCheck plugin Square skin, pink\n----------------------------------- */\n.icheckbox_square-pink,\n.iradio_square-pink {\n"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/iCheck/square/purple.css",
    "chars": 1645,
    "preview": "/* iCheck plugin Square skin, purple\n----------------------------------- */\n.icheckbox_square-purple,\n.iradio_square-pur"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/iCheck/square/red.css",
    "chars": 1594,
    "preview": "/* iCheck plugin Square skin, red\n----------------------------------- */\n.icheckbox_square-red,\n.iradio_square-red {\n   "
  },
  {
    "path": "resources/assets/AdminLTE/plugins/iCheck/square/square.css",
    "chars": 1546,
    "preview": "/* iCheck plugin Square skin, black\n----------------------------------- */\n.icheckbox_square,\n.iradio_square {\n    displ"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/iCheck/square/yellow.css",
    "chars": 1645,
    "preview": "/* iCheck plugin Square skin, yellow\n----------------------------------- */\n.icheckbox_square-yellow,\n.iradio_square-yel"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/input-mask/phone-codes/phone-be.json",
    "chars": 3629,
    "preview": "[\n\t{ \"mask\": \"+32(53)##-##-##\", \"cc\": \"BE\", \"cd\": \"Belgium\", \"city\": \"Aalst (Alost)\" },\n\t{ \"mask\": \"+32(3)###-##-##\", \"c"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/input-mask/phone-codes/phone-codes.json",
    "chars": 36482,
    "preview": "[\n\t{ \"mask\": \"+247-####\", \"cc\": \"AC\", \"name_en\": \"Ascension\", \"desc_en\": \"\", \"name_ru\": \"Остров Вознесения\", \"desc_ru\": "
  },
  {
    "path": "resources/assets/AdminLTE/plugins/input-mask/phone-codes/readme.txt",
    "chars": 76,
    "preview": "more phone masks can be found at https://github.com/andr-04/inputmask-multi "
  },
  {
    "path": "resources/assets/AdminLTE/plugins/ionslider/ion.rangeSlider.css",
    "chars": 3186,
    "preview": "/* Ion.RangeSlider\n// css version 1.8.5\n// by Denis Ineshin | ionden.com\n// ============================================"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/ionslider/ion.rangeSlider.skinFlat.css",
    "chars": 1853,
    "preview": "/* Ion.RangeSlider, Flat UI Skin\n// css version 1.8.5\n// by Denis Ineshin | ionden.com\n// =============================="
  },
  {
    "path": "resources/assets/AdminLTE/plugins/ionslider/ion.rangeSlider.skinNice.css",
    "chars": 1734,
    "preview": "/* Ion.RangeSlider, Nice Skin\n// css version 1.8.5\n// by Denis Ineshin | ionden.com\n// ================================="
  },
  {
    "path": "resources/assets/AdminLTE/plugins/select2/i18n/ar.js",
    "chars": 768,
    "preview": "/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/select2/i18n/az.js",
    "chars": 681,
    "preview": "/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/select2/i18n/bg.js",
    "chars": 783,
    "preview": "/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/select2/i18n/ca.js",
    "chars": 865,
    "preview": "/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/select2/i18n/cs.js",
    "chars": 1175,
    "preview": "/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/select2/i18n/da.js",
    "chars": 810,
    "preview": "/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/select2/i18n/de.js",
    "chars": 767,
    "preview": "/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/select2/i18n/el.js",
    "chars": 925,
    "preview": "/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/select2/i18n/en.js",
    "chars": 823,
    "preview": "/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/select2/i18n/es.js",
    "chars": 862,
    "preview": "/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/select2/i18n/et.js",
    "chars": 768,
    "preview": "/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/select2/i18n/eu.js",
    "chars": 840,
    "preview": "/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/select2/i18n/fa.js",
    "chars": 833,
    "preview": "/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/select2/i18n/fi.js",
    "chars": 691,
    "preview": "/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/select2/i18n/fr.js",
    "chars": 886,
    "preview": "/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/select2/i18n/gl.js",
    "chars": 792,
    "preview": "/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/select2/i18n/he.js",
    "chars": 827,
    "preview": "/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/select2/i18n/hi.js",
    "chars": 829,
    "preview": "/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/select2/i18n/hr.js",
    "chars": 833,
    "preview": "/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/select2/i18n/hu.js",
    "chars": 711,
    "preview": "/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/select2/i18n/id.js",
    "chars": 748,
    "preview": "/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/select2/i18n/is.js",
    "chars": 755,
    "preview": "/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/select2/i18n/it.js",
    "chars": 870,
    "preview": "/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/select2/i18n/ja.js",
    "chars": 698,
    "preview": "/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/select2/i18n/km.js",
    "chars": 781,
    "preview": "/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/select2/i18n/ko.js",
    "chars": 718,
    "preview": "/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/select2/i18n/lt.js",
    "chars": 896,
    "preview": "/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/select2/i18n/lv.js",
    "chars": 855,
    "preview": "/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/select2/i18n/mk.js",
    "chars": 837,
    "preview": "/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/select2/i18n/ms.js",
    "chars": 787,
    "preview": "/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/select2/i18n/nb.js",
    "chars": 780,
    "preview": "/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/select2/i18n/nl.js",
    "chars": 890,
    "preview": "/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/select2/i18n/pl.js",
    "chars": 910,
    "preview": "/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/select2/i18n/pt-BR.js",
    "chars": 846,
    "preview": "/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/select2/i18n/pt.js",
    "chars": 853,
    "preview": "/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/select2/i18n/ro.js",
    "chars": 888,
    "preview": "/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/select2/i18n/ru.js",
    "chars": 958,
    "preview": "/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/select2/i18n/sk.js",
    "chars": 1148,
    "preview": "/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/select2/i18n/sr-Cyrl.js",
    "chars": 931,
    "preview": "/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/select2/i18n/sr.js",
    "chars": 928,
    "preview": "/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/select2/i18n/sv.js",
    "chars": 777,
    "preview": "/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/select2/i18n/th.js",
    "chars": 715,
    "preview": "/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/select2/i18n/tr.js",
    "chars": 712,
    "preview": "/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/select2/i18n/uk.js",
    "chars": 933,
    "preview": "/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/select2/i18n/vi.js",
    "chars": 747,
    "preview": "/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/select2/i18n/zh-CN.js",
    "chars": 675,
    "preview": "/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
  },
  {
    "path": "resources/assets/AdminLTE/plugins/select2/i18n/zh-TW.js",
    "chars": 632,
    "preview": "/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
  },
  {
    "path": "resources/assets/bootstrap-fileinput/js/plugins/canvas-to-blob.js",
    "chars": 3773,
    "preview": "/*\n * JavaScript Canvas to Blob 2.0.5\n * https://github.com/blueimp/JavaScript-Canvas-to-Blob\n *\n * Copyright 2012, Seba"
  },
  {
    "path": "resources/assets/bootstrap-fileinput/js/plugins/piexif.js",
    "chars": 75990,
    "preview": "/* piexifjs\n\nThe MIT License (MIT)\n\nCopyright (c) 2014, 2015 hMatoba(https://github.com/hMatoba)\n\nPermission is hereby g"
  },
  {
    "path": "resources/assets/bootstrap-fileinput/js/plugins/purify.js",
    "chars": 38986,
    "preview": "(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory()"
  },
  {
    "path": "resources/assets/bootstrap-fileinput/js/plugins/sortable.js",
    "chars": 38565,
    "preview": "/**!\n * KvSortable\n * @author\tRubaXa   <trash@rubaxa.org>\n * @license MIT\n *\n * Changed kvsortable plugin naming to prev"
  },
  {
    "path": "resources/assets/bootstrap3-editable/css/bootstrap-editable.css",
    "chars": 21202,
    "preview": "/*! X-editable - v1.5.1 \n* In-place editing with Twitter Bootstrap, jQuery UI or pure jQuery\n* http://github.com/vitalet"
  },
  {
    "path": "resources/assets/flatpickr/dist/flatpickr.js",
    "chars": 50679,
    "preview": "/* flatpickr v4.6.13,, @license MIT */\n!function(e,n){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.export"
  },
  {
    "path": "resources/assets/flatpickr/dist/l10n/zh.js",
    "chars": 1608,
    "preview": "(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n  type"
  },
  {
    "path": "resources/assets/google-fonts/fonts.css",
    "chars": 2526,
    "preview": "@font-face {\n  font-family: 'Source Sans Pro';\n  font-style: normal;\n  font-weight: 300;\n  src: local('Source Sans Pro L"
  },
  {
    "path": "resources/assets/jquery-pjax/jquery.pjax.js",
    "chars": 26611,
    "preview": "/*!\n * Copyright 2012, Chris Wanstrath\n * Released under the MIT License\n * https://github.com/defunkt/jquery-pjax\n */\n\n"
  },
  {
    "path": "resources/assets/laravel-admin/laravel-admin.css",
    "chars": 1613,
    "preview": "input.content {\n    min-height: 0 !important;\n    padding: 6px 12px !important;\n    margin: 0 !important;\n}\n\ninput.label"
  },
  {
    "path": "resources/assets/laravel-admin/laravel-admin.js",
    "chars": 5144,
    "preview": "$.fn.editable.defaults.params = function (params) {\n    params._token = LA.token;\n    params._editable = 1;\n    params._"
  },
  {
    "path": "resources/assets/nestable/jquery.nestable.js",
    "chars": 17600,
    "preview": "/*!\n * Nestable jQuery Plugin - Copyright (c) 2012 David Bushell - http://dbushell.com/\n * Dual-licensed under the BSD o"
  },
  {
    "path": "resources/assets/nestable/nestable.css",
    "chars": 1541,
    "preview": ".dd { position: relative; display: block; margin: 10px; padding: 0; list-style: none; font-size: 13px; line-height: 20px"
  },
  {
    "path": "resources/assets/nprogress/nprogress.css",
    "chars": 1461,
    "preview": "/* Make clicks pass-through */\n#nprogress {\n  pointer-events: none;\n}\n\n#nprogress .bar {\n  background: #dd441f;\n\n  posit"
  },
  {
    "path": "resources/assets/nprogress/nprogress.js",
    "chars": 11565,
    "preview": "/* NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress\n * @license MIT */\n\n;(function(root, fact"
  },
  {
    "path": "resources/assets/number-input/bootstrap-number-input.js",
    "chars": 3458,
    "preview": "/* ========================================================================\n * bootstrap-spin - v1.0\n * https://github.c"
  },
  {
    "path": "resources/assets/sweetalert2/dist/sweetalert2.css",
    "chars": 34759,
    "preview": "@-webkit-keyframes swal2-show {\n  0% {\n    -webkit-transform: scale(0.7);\n            transform: scale(0.7); }\n  45% {\n "
  },
  {
    "path": "resources/lang/ar/admin.php",
    "chars": 4247,
    "preview": "<?php\n\nreturn [\n    'online'                => 'متصل',\n    'login'                 => 'تسجيل الدخول',\n    'logout'      "
  },
  {
    "path": "resources/lang/az/admin.php",
    "chars": 4235,
    "preview": "<?php\n\nreturn [\n    'online'                => 'Aktiv',\n    'login'                 => 'Giriş',\n    'logout'            "
  }
]

// ... and 516 more files (download for full content)

About this extraction

This page contains the full source code of the z-song/laravel-admin GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 716 files (2.0 MB), approximately 559.4k tokens, and a symbol index with 2473 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!