Laravel Vue SPA, Bulma themed. For demo login use `[email protected]` & `password` -
This release aims to bring our ecosystem one step closer to the latest Laravel release. The primary reason for the delay was the necessity to upgrade all dynamic relations across our entire codebase to support the native Laravel Implementation. This process required extensive testing to ensure proper compatibility.
Additionally, we took this opportunity to implement support for PHP native enums alongside our existing enum implementation. This decision was mandatory for maintaining backward compatibility while also embracing the latest features offered by PHP. Integrating these two required enum implementations further contributed to the release delay.
Here are the key highlights:
Laravel 10: Laravel 10 is now a mandatory requirement for the v6 release.
Form and Tables Packages Update: Both packages now support native PHP Enums in addition to our custom implementation, ensuring backward compatibility.
Automatic Dynamic Relations/Methods Registration: Dynamic relations are now registered automatically and utilize Laravel's native dynamic relation registration functionality. Dynamic methods are registered automatically as well. All dynamic methods and relations must be created under the App\Dynamics
namespace.
Types
enum deletionopen-up
propmax-w
word-wrap:break-all
x
padding for headerdirtyFields
arrayConfirmation
to export list<a>
instead of <button>
modelValue
precisionapp-update
app-update
indicator in its original positionapp-state-loaded
eventappUpdate
item is not present422
errors in error handlerduration
name
in township rememberable keysabbreviation
in region rememberable keysgeocodingKey
Region
resourceLocality
addresses
relationAbilities
traitunique()
on file_id
fiscal_code
unique in importercompanies_reg_com_nr_unique
syncPermissions
noindex
metaCascadesFileDeletion
unique()
on file_id
syncExporter
CustomMin
interfaceCascadesFileDeletion
RejectedImport
rejected_imports
fkdelete
method in modeldeletable($type)
usagesRejectedDataImportForeignKey
AFTER RejectedDataImportId
RejectedFileCreatedBy
Types
enum deletionOptions
service, refactorrestart
methodtxt
as supported typeCascadesFileDeletion
CascadesFileDeletion
interfaceunique()
on file_id
type_id
& created_at
indexloadData
in file modelis_public
in file_types
tableunique()
on file_id
ioEvent
broadcastQueue
methods in eventid_series
and id_number
fieldsIdNumber
isSuperior
(role) in usercanAccess
helper that caches permissionsRole::permissionList()
appellative
getter in userSync Composer Dependencies: Update your composer.json
file according to this file.
Run Composer Update: Execute composer update
in your terminal.
Follow the official Laravel 10 Upgrade guide: Refer to the Laravel 10 Upgrade guide, making sure to also check out the comparison tool and update your files accordingly.
Upgrade Dynamic Relations: Ensure all dynamic methods are under the App\Dynamics
namespace prefix. Follow this example.
Upgrade Dynamic Methods: Ensure all dynamic methods are under the App\Dynamics
namespace prefix. Refer to this commit.
Update User Factory: Refer to this file.
Optional: Migrate Existing Enso Enums to Native PHP Enums: If you wish to migrate your existing Enso Enums to native PHP enums, ensure that you use the LaravelEnso\Enums\Traits\Select.php
Trait in order to retain compatibility with our Forms and Tables packages.
This breaking release brings the new Enso file system and upgrades all packages to Laravel 9.
The old filesystem was pretty basic and has been upgraded to something more robust by replacing the usage of polymorphic relationships with regular foreign keys (models that were using the HasFile
trait now have a file relationship through a file_id
column) with more features (such as favorite files) as well leaving room for future functionality.
We've taken advantage of the breaking version state, included other small changes from our backlog and made a slight change to the mechanism for locally extending package forms and tables.
Due to these changes, most packages have had a refactor and dependency list upgrade.
v-bind
from dropdownclickOutside.js
Document.vue
component, now we use File.vue
insteadensoFile.js
, now it's constructor receives a File
resource instead of a filenameavatarKey
in storeenso-uploader
v-click-outside
related bug on profile controlAvatar.vue
Url
componentAll packages have been updated with regards to:
aligning Form builder, Table builder & Form request validation classes naming conventions, by dropping superfluous prefixes.
when extending forms, rather than overriding the protected constant TemplatePath
(which has now become private), we've added a protected method templatePath()
that is used in the forms' constructor. When extending any form builders, you should override this method if you want to use another form template.
when extending tables, note that the protected constant TemplatePath
has now become private, and we've updated the public method templatePath()
. When extending any table builders, you should override this method if you want to use another table template.
due to the major files refactor, all packages that use files have been updated. FileServiceProvider
file has been deleted and also removed form composer files.
the new file system impact has also led to the need of changing the initial order of migrations. For this change it already exists an upgrade, but you should take a note that a lot of package migrations have been renamed.
all migrations have been upgraded in order to return an anonymous class by the new Laravel 9 style. This way we can avoid class name collision.
an important note is that the old DataImport
and DataExport
models have been renamed to Import
and Export
, respectively.
Exceptions/WriterProvider.php
Preference
rememberable keyseea
for United KingdomDataExport
model to Export
DataImport
model to Import
The file system has been significantly improved and has received a lot of new features, such as:
Full Name
key and RO
translationresources/lang
directory to lang
directoryoutput()
to PdftableClass($request)
method in addition to the $tableClass
property, used in the table related controllers (init, data, excel)defaultPreferences
visibility to protected
services
as dependencyUpdateStock
listener; small job renameOffer::valid
scopeJob
location;UpdateStockValues
due to supllier pivot refactorproduct_supplier
pivot idbundlePacking
cleanupwithAvailable
scope on Product
publish
method AppServiceProvider
eav
validationeav
params payload is missingeav
syncinggetEav
dynamic; transformed the $product->attributes()
dynamic relationship into a methodFirst and foremost, be sure the to read the official Laravel 9 upgrade guide to understand all implications.
Due to the major files package refactor, all the Enso package classes using files will be updated accordingly.
publish the updated files config with php artisan vendor:publish --tag=files-config --force
add your local models using files under the upgrade
key. The syntax is: old attachable_type name => Model::class
.
if having several models stored under the same folder, then that folder name should be added under the nonStandardFolders
key, so that the files could be migrated according to the new convention. The new convention is that the folder will be named as the model, written camelCase.
if you also want to rename your folder, you'll need to specify the name change under renameFolders
key, as 'old name' => 'new name'
.
for all models using files, update your migrations by adding file_id
foreign key.
$table->unsignedBigInteger('file_id')->nullable();
$table->foreign('file_id')->references('id')->on('files')
->onUpdate('restrict')->onDelete('restrict');
if using the ensoFile.js
mixin locally, when instantiating the class, you should pass a file resource object instead of a filename string
if you're sending email notifications with mailgun and inline attaching pdf files created with the LaravelEnso\Pdf\Services\Pdf
service, you need to use ->output()
method:
...
->attachData($invoice->output(), $this->filename());
...
if locally customizing Enso package form builders and providing another template file, while not customizing the constructor, you should
protected const TemplatePath = ...
visibility to privatetemplatePath()
method:protected function templatePath(): string
{
return self::TemplatePath;
}
if locally customizing Enso package table builders and providing another template file, you should
protected const TemplatePath = ...
visibility to privatetemplatePath()
method:public function templatePath(): string
{
return self::TemplatePath;
}
if locally extending any table builder classes, check your imports as names may have changed. Make sure to also check within your app service providers
if locally extending any request validation classes, check your imports as names may have changed. Make sure to check within your app service providers
note that the DataImport
and DataExport
models have been renamed to Import
and Export
. You should updated your imports accordingly.
upgrade all package dependencies to their latest version
if using mailgun, make sure to require symfony/mailgun-mailer
and symfony/http-client
by using composer require symfony/mailgun-mailer symfony/http-client
update your config
files, .gitignore
, Middleware
classes, Providers
, Exceptions/Handler.php
and Http/Kernel.php
by following this merge request as an example https://github.com/laravel-enso/enso/pull/417/files
refactor your local excel seeders by implementing the following methods
protected function type(): string // If the $type property is overwritten
{
return $this->type;
}
protected function filename(): string
{
return $this->filename;
}
if you need to customize the select options sort method, you can do so by publishing the select config using php artisan vendor:publish --tag=select-config --force
and updating the sortByOptions
key as needed.
update your DatabaseSeeder
by adding LaravelEnso\Files\Database\Seeders\TypeSeeder
before UserSeeder
if using phpinsights
, note that there was a bug https://github.com/nunomaduro/phpinsights/issues/565. The bug was fixed, but not tagged, so you need to update your dependency to "nunomaduro/phpinsights": "dev-master",
note that all all migrations have been upgraded in order to return an anonymous class by the new Laravel 9 style.
update the Enso version to 5.0.0
in config/enso/config.php
run composer update
in the project's root
run yarn
, yarn upgrade && yarn
in /client
to ensure you have the latest versions and patches are applied. If necessary, update your patches
php artisan enso:upgrade --before-migration
php artisan migrate
php artisan enso:upgrade
php artisan enso:upgrade --manual
make sure permissions are properly configured for each role and then save/refresh the roles configuration files
as per every release, delete any local, deprecated upgrades
This minor release aims to update front-end packages to use the latest bulma syntax. It also includes many improvements and bug fixes.
v-click-outside
navbar-item
usenavbar-item
useconfigure.vue
infonavbar-item
usenavbar-item
; added show, hide and touch events8ee62af updated meta: removed csrf token
b4bc27f updates eea for United Kingdom
storePreferences
method visibility to publicvisibleOnWebshop
dynamicif you're still using the deprecated css which have now been removed, you should update:
has-vertically-centered-content
to is-flex is-align-items-center
has-margin-auto
to ma
has-margin-xxx
, has-padding-xxx
and their derivates (top, left, etc) to their corresponding bulma counterparts (m-1, m-2, ml-1, etc). See docs.
For example:
has-margin-large
-> m-3
has-margin-top-large
-> mt-3
has-margin-right-small
-> mr-1
has-margin-bottom-medium
-> mb-2
has-margin-top-small
-> mt-1
has-padding-left-large
-> pl-3
has-padding-large
-> p-3
has-padding-medium
-> p-2
has-margin-top-medium
-> mt-2
remove [v-cloak]
, *:focus
& @import 'v-tooltip/dist/v-tooltip';
from client/src/sass/enso.scss
update the Enso version to 4.9.1
in config/enso/config.php
run composer update
in the project's root
run yarn
, yarn upgrade && yarn
in /client
to ensure you have the latest versions and patches are applied. If necessary, update your patches
php artisan enso:upgrade --before-migration
php artisan migrate
php artisan enso:upgrade
as per every release, delete any local, deprecated upgrades
This release upgrades the UI to Vue 3 and also includes under the hood refactor for a few core components. We've tried to maintain overall component compatibility and done our best to document the breaking changes.
Depending on how complex the UI for your project is, the upgrade may take anywhere from a 1.5h to many days, so please take your time to go through the Enso changelog, especially the upgrade steps AND also the Vue3 upgrade guide linked below.
All packages have had their dependencies and dev dependencies updated and pruned. Many packages have had linter recommended fixes.
DateIntervalFilter
& EnsoDateIntervalFilter
components have been retiredall()
method, that returns all errorsThis a new Enso package, forked from lakb248/vue-pull-refresh and updated to work with Vue3.
permissions.options
routeIn order to migrate a project, we will use the Vue3 Migration Build as an intermediary step, upgrade the code to make it Vue3 compatible, then finally switch to the regular Vue3 build.
Please read the official documentation linked above, so you have a better understanding of the process.
In order to use the migration build, it needs to be imported and configured:
client\package.json
: "@vue/compat": "^3.2.20",
vue.config.js
, within the chainWebpack
config:
config.resolve.alias.set('vue', '@vue/compat');
config.module
.rule('vue')
.use('vue-loader')
.tap(options => ({
...options,
compilerOptions: {
compatConfig: {
MODE: 2,
COMPILER_V_BIND_OBJECT_ORDER: false,
COMPILER_IS_ON_ELEMENT: false,
},
},
}));
client\src\js\enso.js
:
Vue.configureCompat({
RENDER_FUNCTION: false,
INSTANCE_LISTENERS: false,
COMPONENT_V_MODEL: false,
ATTR_FALSE_VALUE: false,
INSTANCE_ATTRS_CLASS_STYLE: false,
TRANSITION_GROUP_ROOT: false,
});
The package & snippets are already present in the Enso release, but they will be commented out, so in order to enable the migration build, open the relevant files and uncomment the blocks above.
Note that the compiler migration build flags belong to the vue.config.js
file and require the restart of HMR (if using it) while all other flags belong to the client\src\js\enso.js
file.
For Vue3, a new browser devtools plugin is needed and can be installed along side the Vue2 plugin.
In addition to upgrading the Enso UI to make it Vue3 compatible, we've also made some other changes to a few Enso components some of which may impact your local code.
update the following files with the latest versions
.babel.config.js
.eslintrc.js
vue.config.js
client\src\js\enso.js
client\package.json
client\src\sass\enso.scss
enable the migration mode, as noted above
run yarn && yarn upgrade
and start HMR
you should be able to login into the application and will probably have some (lots of) errors and warnings
the deprecated legacyBuild
flow for building the application state has been removed entirely store.js
we have aimed to remove global components and instead import them for each use case
fa
component is no longer global and needs to be imported locally, where used
import { FontAwesomeIcon as Fa } from '@fortawesome/vue-fontawesome';
...
components: { ..., Fa, ... },
http
axios alias is no longer available,
instead it should be injected as required:
Update:
myMethod() {
axios.post(...);
}
to
inject: ['http']
...
myMethod() {
this.http.post(...);
}
if using any @hook:...
hooks, replace all usages with @vnode-...
docs
in all of your renderless components you can set the inheritAttrs: false,
attribute to eliminate warnings about inherited attributes
$listeners
has been removed / merged into $attrs
. See docs
You need to remove v-on="$listeners"
usages.
Note that in such cases, you will probably need to cascade events, either directly or via v-bind="$attrs"
if applicable.
$scopedSlots
property is removed and all slots are exposed via $slots
as functions. See docs.
You should replace this.$scopedSlots.xxx
with this.$slots.xxx
in your render functions
update the slot syntax, by replacing v-slot:xxx
with #xxx
if you are still using the deprecated named / scoped slot syntax, update it to the latest syntax first (which is already supported in 2.6) For example, replace
<template slot-scope="{ count }">
to
<template #default="{ count }">
the beforeDestroy
hook has been renamed to beforeUnmount
- you should replace all usages project wide. See docs
when using $el
within components, ensure that there is a single root within the element (e.g. <div>
)
when emitting events in components (e.g. $emit('click')
), it is recommended to declare/list the emitted events:
emits: ['click'],
for components, the value
property has become modelValue
and the input
event has been replaced with update:modelValue
. See docs
When listening on 'value' changes on components, you need to replace @input="xxx"
with @update:model-value="xxx"
.
In Vue3 you can also have multiple v-model bindings on the same component. See docs
in all of your renderless components you can set the inheritAttrs: false,
attribute to eliminate warnings about inherited attributes
note that in Vue3 you can no longer programmatically destroy components as the $destroy()
method has been removed. See docs
HTML bound attributes such as :disabled
will be rendered as disabled="false"
for false values, and if you need to not have them rendered, the bound attribute value needs to be evaluated to null
or undefinded
. See docs
if using watch on arrays, you need to add deep: true
otherwise the callback may not be triggered. See docs
you no longer need to use $set
& $delete
to manage object attributes in order to keep responsiveness, you can use regular JS syntax. See docs.
if asynchronously loading components, the syntax has changed. See docs.
transitions have suffered a few changes. See docs
the render function API has changed. See docs
if using DateFilter
or EnsoDateFilter
please note:
default
property has been removeddisabledOptions
property has been renamed to excluded
default
property has been removedfilter
v-model
for filter
& interval
is now requiredFor example, replace
v-model="params.dateInterval"
with v-model:filter="params.dateInterval"
:interval="intervals.products.date"
with v-model:interval="intervals.products.date"
where the attributes look like this
params: {
dateInterval: 'thisMonth',
},
intervals: {
products: {
date: {
max: null,
min: null,
},
},
},
if emitting/listening to global events, you should import and refactor to using the eventBus
instead. See docs.
import eventBus from '@enso-ui/ui/scrc/core/services/eventBus';
...
eventBus.$emit('my-event');
eventBus.$on('my-event', this.myHandler);
the <modal>
component no longer needs a portal
attribute/property, and you should delete all its usages
the AutosizeTextarea
component has been updated and no longer needs to wrap around a textarea. Update:
<autosize-textarea>
<textarea v-model="..."/>
</autosize-textarea>
to
<autosize-textarea v-model="...">
filters are no longer supported, refactor as needed (you may use methods instead). For example, update:
{{ value | numberFormat(2) }}
to
{{ numberFormat(value, 2) }}
if you're using the automatic component registration, the syntax has changed from
Vue.component('navbar-notification', Notification);
App.registerNavbarItem('navbar-notification', 300, 'core.notifications.count');
to
App.registerNavbarItem('navbar-notification', Notification, 300, 'core.notifications.count');
the v-tooltip
library has been updated:
Import has been updated from
import { VPopover } from 'v-tooltip';
to
import { Dropdown } from 'v-tooltip';
Component has been updated:
<v-popover trigger="hover"
to
<dropdown :triggers="['hover']"
The slot name has been updated:
<template v-slot:popover>
to
<template #popper>
we've switched to the standard (non compatibility) syntax for the animate animations. You should prefix animate related classes with animate__
.
For example, update:
<enso-form class="box animated fadeIn">
to
<enso-form class="box animate__animated animate__fadeIn">
Alternatively, refactor using transition components.
the @enso-ui/bulma
package has been deprecated and will no longer be maintained. You should refactor your components and import components from their respective packages.
Once you've migrated your local pages/components and packages, you may switch from the migration build to the regular Vue3 build.
vue.config.js
i.e. the code related to @vue/compat
config.resolve.alias.set('vue', '@vue/compat');
config.module
.rule('vue')
.use('vue-loader')
.tap(options => ({
...options,
compilerOptions: {
compatConfig: {
MODE: 2,
COMPILER_V_BIND_OBJECT_ORDER: false,
COMPILER_IS_ON_ELEMENT: false,
},
},
}));
client\src\js\enso.js
Vue.configureCompat({
RENDER_FUNCTION: false,
INSTANCE_LISTENERS: false,
COMPONENT_V_MODEL: false,
ATTR_FALSE_VALUE: false,
INSTANCE_ATTRS_CLASS_STYLE: false,
TRANSITION_GROUP_ROOT: false,
});
"@vue/compat": "^3.2.20",
dependency from client/package.json
Unexpected mutation of ... prop vue/no-mutating-props
which can be ignored for nowTimed out getting app record for app
which should not
affect application functionalityThis aims to be the last minor release before upgrading to Vue 3 and includes many improvements, bug fixes and also several new features.
Chart.vue
shortNumber
filter.eslintrc.js
undo()
.eslintrc.js
.gitignore
and dependenciesnoUiSlider
.eslintrc.js
algolia
to searchProvider
.eslintrc.js
regEx
matching had no actual matchesmr-1
in controlsdanger
on filter flaghas-margin-auto
bulma-checkradio
bulma-extensions
dependencybulma-extensions
integrations.js
AppUpdate.vue
v-if
AppUpdate
flow; fixed issue with showing the modal.styleci.yml
Geocoding
service; updated Coordinates
to use the new servicetoJson
method to the api resourceapiEnabled: bool
on Actionchartjs 3
shortNumbers
CnpValidator.php
strlen
usage to mb_strlen
Login
trait to work with the latest changes in laravel-uisanctum.php
algolia
to searchProvider
; improves searchProvider resultsObj casts:
set method now performs json encodeCash
labelcodesize/phpmd
config rules for constant namingSleep
Str::length
OptionsBuilder
getLength
in Column
exists()
helper for tableSymphony
console tableWebshopSearchableArray
with a simple servicewebshopDiscount
; now we no longer fall through to general supplier discount but use webshop company if no specific cliend discount exitsOnline
webshop-shadow
roleisActive
to the BaseFilters@facets
array (excluded facets)BaseFilters.php
priceFiltered()
getterPaymentMethods
enum;ValidateStoreRequest
request, MissingOffer
notification, deprecated parents()
setter call, measurment units implementation, checker scopes & methods, recheck & cleanup flows and notSyncedYet
scenarios branchCreateCategoryEmagCategoryPivotTable
and CreateEmagOffersTable
migrationNullableCategoryId
upgradeemagDiscount()
dynamic for services, new headers to all emag requests and check for sync / when not emptyoptional
last_checked_at
to checked_at
fetchPicture(s)
to downloadPictures
discount_percent
auto_pricing
from the Offer
table resource and urls from the settings form and migrationcreated_by/updated_by
grn
to goodsReceivedNote
bulkStockRemoval
externallyFullfilled
warehouse_id
nullable to avoid seed / provider / schedule issuesINsLot
upgradeReservations.vue
updateinventoryIn
locks as required to avoid over-reservingis_bundle
checksearchableKey
method on the attributeeav
filterable searchable keyAttribute
factory fixEavSearchableArray
dynamic product method with a simple service class4.8.2
in config/enso/config.php
composer update
in the project's rootbulma-extensions
patchyarn
, yarn upgrade && yarn
in /client
to ensure you have the latest versions and patches are applied. If necessary, update your patchesyarn upgrade
, update vue.config.js
by adding @enso-ui/route-mapper
package under transpileDependencies
keyphp artisan enso:upgrade --before-migration
php artisan migrate
php artisan enso:upgrade
protected function serializeDate(DateTimeInterface $date)
{
return $date->format('Y-m-d H:i:s');
}
Make sure you have set the $dates
property.
For most of our frontend packages we've added router error handling.
Chart.vue
slot-scope
to v-scope
413
error code handlingNotification
component registration for cases where we might revoke the default notification permissionChunkLoadError
)UnhandledRejection
to ignoredfullRecordInfo
is falseNumberFormatter
force-selection
.styleci.yml
gravatar
; renamed observer to User
is_active
in table builder for appsIdProvider
abstract class.gitIgnore
ensure-frontent-requests-are-stateful
middleware.styleci.yml
core-api
route groupLogout
trait to work with non spa envApp::make
instead of new for providers instantiation for flexibility on customizing states.forceable
indexwebshop
reviewsdedupeInterval
in publisheable configadded exception when attempting navigation to unavailable pages; fixes #46
removed log
updated cookie consent blade
cleanup of unused routes; added local auth middleware instead of package
customized verifiy active state for webshop
makes product filters a partial;
built with latest sentry version
disabled the form button after submitting a review to avoid double clicks
updated the Review Submitted notif to include the product name
handled setting attribute for when value is array; ref #30
updated offer generation for bundle
updated new offer resource for bundle products
updated resource re:ean for packages
updated flow
removed hard coded logic for shipping service in XML generation
fixes login route
adds verify active state
updates gitlab ci and vue.config
increased the timeout limit
To upgrade:
composer update
yarn
, yarn upgrade && yarn
to ensure you have the latest package versions and patches are applied. If necessary, update your patch files.php artisan enso:upgrade --before-migration
php artisan migrate
php artisan enso:upgrade
to execute the upgradesphp artisan vendor:publish --tag=select-config --force
and updating the sortByOptions
key as needed.4.8.1
in config/enso/config.php
This new release adds the possibility for back-end packages to publish their own state to the front-end as well migrates the framework & packages to PHP 8.0. Where applicable, updated packages to take advantage of the new language features.
Most of the packages received a dependency list cleanup.
ProgressIndicator
component exportdisplay
function propi18n
attribute to _i18n
, to avoid potention conflicts with enum keysmoney
support; templates should now use number
- more details are found in the upgrade stepstotalLabel
propertyrequire
syntax updated to reqire __DIR__./xxx.php
money
configuration for numeric formatting have been updated to use the already available number
configurationget_class($instance)
usages refactored to $instance::class
test()
) were added which create a different factory state (such as for testing)contains
nested scopeFixesCurrencyApi
exceptionapi
packagedata_exports.name
index upgradenotifies
boolean flag in json template and notifiableIds
config optionparams
to optional attributesObject
MeasurementUnits
enumgenerateSlug
helperpart_number
index on product_supplier
pivotpackage_quantity
type to intnullable
Column method to isNullable
isSigned
, isUnsigned
helpers, getPrecision
and getScale
for decimalschangeGroup
policymoney
support; templates should now use number
- more details are found in the upgrade stepscomposer update
in the project's rootbefore-migration
) to ensure
database & strucure is up to date, since this release cleans up a lot of package upgradescomposer.json
update the following dependencies to the given versions:
"laravel-enso/core": "^7.0",
"sentry/sentry-laravel": "^2.0.0"
"laravel-enso/phpunit-pretty-print": "^1.0",
"nunomaduro/phpinsights": "^2.0",
Core\Models\UserGroup
-> UserGroups\Models\UserGroup
Core\Enums\UserGroups
-> UserGroups\Enums\UserGroups
Core\\Enums\\UserGroups
-> UserGroups\\Enums\\UserGroups
Core\Models\User
-> Users\Models\User
Core\Policies\User
-> Users\Policies\User
Core\Models\Session
-> Users\Models\Session
Core\Http\Controllers\Administration\Users
-> Users\Http\Controllers
Core\Http\Controllers\Administration\UserGroups
-> UserGroups\Http\Controllers
Core\Tables\Administration\Users
-> Users\Tabels
Core\Forms\Administration\Users
-> Users\Forms
Core\Http\Resources\User
-> Users\Http\Resources\User
Core\\Http\\Resources\\User
-> Users\\Http\\Resources\\User
Core\Http\Requests\ValidateUserRequest
-> Users\Http\Requests\ValidateUserRequest
Core\Database\Factories\UserFactory
-> Users\Database\Factories\UserFactory
Core\Database\Seeders\UserGroupSeeder
-> UserGroups\Database\Seeders\UserGroupSeeder
Core\Database\Seeders\UserSeeder
-> Users\Database\Seeders\UserSeeder
config/insights.php
the deprecated:use ObjectCalisthenics\Sniffs\Files\FunctionLengthSniff;
use ObjectCalisthenics\Sniffs\Metrics\MethodPerClassLimitSniff;
use ObjectCalisthenics\Sniffs\NamingConventions\ElementNameMinimalLengthSniff;
composer update
in the project's roottitle
attribute as it has been droppedpublic function run(Obj $row, DataImport $import);
public function after(DataImport $import);
public function authorizes(DataImport $import): bool;
public function before(DataImport $import);
money
keys to number
, and remove any "thousand" & "decimal" attributes. Number supports precision
, symbol
and template
(e.g. "%v %s" - %v
for value, %s
for symbol)storage/app/.gitignore
should be updated to ignore all and look like this
*
!.gitignore
You may also remove .gitignore
files from individual enso created, app sub-folders (except public
)config/enso/tables.php
file and if the export.path
key is present, update it to export.folder
App\Providers\AppServiceProvider
: CoreLocalState::class => LocalState::class,
App\Services\LocalState
class after moving any logic to one or more state builder servicesclient/src/js/enso.js
, remove the import: import './localState';
client/src/js/localState.js
LocalState
class, update the file client/src/js/store/local.js
as required, otherwise you may delete it. Note that the client/src/js/store
folder MUST be present.config/enso/config.php
with vendor/laravel-enso/core/config/config.php
and remove any extra, deprecated keysconfig/enso/config.php
update the Enso version to 4.8.0config/enso/addresses.php
with vendor/laravel-enso/addresses/config/addresses.php
and remove any extra, deprecated keyspassword
config/enso/auth.php
key as follows:
'password' => [
'lifetime' => env('PASSWORD_LIFETIME', 0),
'minLength' => env('PASSWORD_MIN_LENGTH', 6),
'mixedCase' => (bool) env('PASSWORD_MIXED_CASE', 0),
'numeric' => (bool) env('PASSWORD_NUMERIC', 0),
'special' => (bool) env('PASSWORD_SPECIAL', 0),
],
Database\Seeders\DatabaseSeeder
, from the run()
method's unit tests running branch, you may delete the following seeders, as the respective factories have been updated to no longer require this:
CountrySeeder::class,
RegionSeeder::class,
TownshipSeeder::class,
LocalitySeeder::class,
.env
variables:
PASSWORD_LENGTH
-> PASSWORD_MIN_LENGTH
PASSWORD_NUMERIC_CHARACTERS
-> PASSWORD_NUMERIC
PASSWORD_SPECIAL_CHARACTERS
-> PASSWORD_SPECIAL
PASSWORD_UPPER_CASE_CHARACTERS
-> PASSWORD_MIXED_CASE
LaravelEnso\Core\Exceptions\Sentry
usage and import with LaravelEnso\Sentry\Exceptions\Handler
in App\Exceptions\Handler.php
bulma-rtl
patch from client\patches
, as is no longer neededyarn
, yarn upgrade && yarn
in /client
to ensure you have the latest versions and patches are applied. If necessary, update your patchesphp artisan migrate
php artisan enso:upgrade
phpunit.xml
with Enso's and make sure that you're not missing any package tests.This is a patch release whose main purpose is to update localisation files.
4.7.1
in config/enso/config.php
composer update
in the project's rootphp artisan vendor:publish --tag=enso-localisation --force
yarn
, yarn upgrade && yarn
in /client
to ensure you have the latest versions and patches are applied. If necessary, update your patchesphp artisan enso:upgrade --before-migration
php artisan migrate
php artisan enso:upgrade
This aims to be the last minor release before upgrading to PHP 8 and includes many improvements, bug fixes and also several new features.
Most of the packages received a dependency list cleanup.
components/CalendarFilter.vue
browseFiles
method which makes it easier to use the component standalone, for example in a tablevue-filter
clearErrorsControl
, section-divider
class, section visibility and watcher for the form path, so that the form is re-fetched if the path changesCoreForm.vue
FormSection.vue
drag-and-drop
functionalitytaggableoption
: can create when typing non existing options; emits keydown events to be used in different implementation scenarios; small internal refactor@enso-ui/auth
and channels
rememberable
on locality and regionaddressable_id
user_id
castrememberable
keys in category, global scope & small changesparentTree
to return only parentsparentTree
methodcontains
nested scopecolorsConfig
setter, updates ChartCard
and Chart
rememberable
keys in companyVersion.php
, config.php
and social media iconsgoogleplus
and unused importrememberable
keys in country for iso.rememberable
keysChunk.php
ImportTypes
clearErrorsControl
structure optionSleep
AuthServiceProvider.php
company()
helpercompany()
always loads relationattachPicture
method and acquisition price helperwysiwyg
form field optionshasType
helper method for the Table
utility classxlsx
document generation instancescancelled_at
and Cancel
controllerclientDiscounts
relationfree_shipping_above
AddAttachment
actionNewOrder
, OrderCancellation
and awb notificationsComputor
; dropped ComputesLines
, ComputesTotals
, LineComputor
, TotalsComputor
discountWithVat
helpercancel
method in Warehouse
model and Fulfilment
contractfree_shipping_above
welcome_text_on_mobile
to migrationconfig/enso/config.php
composer update
in the project's rootyarn
, yarn upgrade && yarn
in /client
to ensure you have the latest versions and patches are applied. If necessary, update your patchesphp artisan enso:upgrade --before-migration
php artisan migrate
php artisan enso:upgrade
This release includes improvements, bug fixes, and new features.
addTag
addresses.created_by
column; added upgradeTownship
, Locality
and Region
HasAvatar
trait in favor of dynamic method & observerHasAvatar
traitlaravel-enso/teams
dependency as the package can be added if requiredFaker\Generator
in production to Dummy laravel-enso/data-export#10ro
translationsync
commandtaskable
contract & factoryFetchOrders
command to the service providerTo upgrade:
app/Http/Controllers/Auth
was removed from enso - if not customized locally, you may remove it as wellteams
package is no longer included with enso by default. If you require it, add it back:
"laravel-enso/teams": "^3.0",
to composer.json
"enso-ui/teams": "^2.0",
to client/package.json
Broadcast::routes();
from app/Providers/BroadcastServiceProvider.php
(like this)4.6.0
in config/enso/config.php
composer update
in the project's rootyarn
, yarn upgrade && yarn
to ensure you have the latest versions and patches are applied. If necessary, update your patchesphp artisan enso:upgrade --before-migration
php artisan migrate
php artisan enso:upgrade