Releases: laravel-enso/enso
v3.0.0
General
Goals
We are always trying to move towards logic normalization (be it back end or front end), having the packages encapsulated, easy to work on, maintain, extend and customize.
Keeping the front-end assets together with the back-end code as well as having to publish everything on updates, managing what to overwrite or keep separate, was clearly not natural.
V3 is a big step in the right direction with the extraction of the front-end assets from the Composer packages and their move to individual NPM repositories.
Rewrite
All the VueJS components have been rewritten (around 20k LOC have been updated/refactored), and now there is a more logical flow, components communicate better with each other, there's a greater degree of re-usability, removed duplicated logic, less lines of code (the old middleware is gone) and even a bit of extra functionality.
We went for "composition over inheritance" favoring slots over props.
Where it was feasible we created renderless components.
We made use of dependency injection to replace global mixins or to share the state in specific components / libs.
After the refactor most of the middlewares were removed.
We tried to remove all the scoped
scss styling from the vue components, opening them up for local customization
We added friendly aliases for imports.
NPM packages
We strived to create packages for every piece of functionality. This is still an ongoing process.
All the new packages can be found under the @enso-ui organisation on both github and npmjs.
For the active components we went for encapsulating the front end behavior in renderless components, and creating template wrappers.
Theming and styling
As before, Enso ships with two themes, one dark and one light.
The themes and the overall styling have been organized better, offer the possibility of easier customization and can be found in the @enso-ui/themes package.
It's easier to style specific components on both themes by creating a single scss file that uses variables, and place this file under the /components
folder
Development & Customization
If previously, the best/only way to customize some of the pages was to create your own local copies and then making sure you overwrite the default Enso pages with your own versions, now you can customize the assets much easier. You can do this by either rewriting core-routes in your local project and point to local pages, or you can use (patch-package)[https://www.npmjs.com/package/patch-package] and customize anything in a package without having to manually maintain the differences.
You can easily write your own version for any asset while taking advantage of the existing behaviour contained in the renderless components. This even makes switching Enso from Bulma to the CSS framework of your choice much easier.
Therefore, for most packages, you have the possibility to:
- customize the components within the packages and then use patch-package, or
- locally create your own version of the component and change the imports to use your local component
For the theme customization you can:
- customize the styles within the theme package and then use patch-package, or
- create your own theme, locally, and change the theme import in webpack.mix.js
You can develop your own components and pages by importing just the bits and pieces you need.
Remember, should you need a custom behavior for a component, or your own version of a component with different styling you can build it your own way as most complex components have the core logic encapsulated in renderless components.
If making package fixes we kindly ask you to also open a github issue and a pull request, since this helps the whole community.
Enso vs Standalone
In the past, even if we're done our best to make some of the components work outside of the Enso ecosystem, there hasn't been a clear distinction between the integrated and the standalone components.
With the rewrite, all the packages were designed to be also Enso independent, and may be used in any vue project.
If you are developing your project within the Enso ecosystem, the Enso versions of the components offer a tighter integration into the framework,
automatically determining and using:
- the user's locale
- dynamically determined routes
- the internationalization helper
- the app's error handling
- the user's date format
Bug Fixes & Improvements
- page transitions are in better sync
- the theme changing system was refactored and it's more efficient
- the bookmarks bar is sticky
- the document title is properly handled / translated
- totals & numbers alignment in vue table
- several levels of span removed in vue table
- several edge cases fixed in vue-select
New Packages
Accessories (@enso-ui/accessories)
Addresses.vue, Comments.vue, Documents.vue
- the
controls
property is no longer available
AddressesCard.vue, CommentsCard.vue, DocumentsCard.vue
- the
open
property has been replaced tocollapsed
Charts (@enso-ui/charts)
Chart.vue
- a new
formatter
property is available, typefunction
used to format the datalabels values
ChartCard.vue
- a new
errorHandler
property is available
EnsoChartCard.vue
Forms (@enso-ui/forms)
VueForm.vue
- a new
errorHandler
property is available - whole sections can now be inserted into custom slots made available for this purpose
- the following events are available:
ready
loaded
- each time the template gets fetchedsubmit
show
destroy
- the Tabs component events are cascaded
Datepicker.vue (@enso-ui/datepicker)
- the
name
property is no longer available
Divider.vue (@enso-ui/divider)
- has a correspondent divider.scss in @enso-ui/themes, now looks good on the dark theme.
Money.vue (@enso-ui/money)
VueSwitch.vue (@enso-ui/switch)
- the
required
property is no longer available - the
type
&size
props is no longer available - Bulma classes can be set directly on the component (
is-large is-warning
)
Wysiwyg.vue (@enso-ui/wysiwyg)
tiptap
was updated from 0.17.* to 1.7.*- now supports tables
Select.vue (@enso-ui/select)
VueSelect
- the
limit
property has been renamed topaginate
- the trackBy is now sent from the front-end to the back-end, which means this property is no longer needed in the back-end
- the following events are now available:
select
deselect
clear
add-tag
input
EnsoSelect
- new
Filters (@enso-ui/filters)
VueFilter.vue
- the
length
property has been replaced withpaginate
- the
validator
property has been removed - if
icons
is used then the options object will use theicon
key instead oflabel
EnsoFilter.vue
- new
DateFilter
- last week and last month were changed to 7 days & 30 days
EnsoDateFilter.vue
- new
EnsoDateIntervalFilter.vue
- new
EnsoIntervalFilter.vue
- new
VueSelectFilter.vue -> SelectFilter.vue
VueSelectFilter.vue -> SelectFilter.vue
EnsoSelectFilter.vue
- new
IntervalFilter.vue
- is located in the
@enso-ui/filters
package
Notification.vue -> Toastr.vue (@enso-ui/toastr)
- the
container
property has been removed andtoastr-notifications
is used by default - the
i18n
property has been removed - the
html
property has been added
Card.vue (@enso-ui/card)
- the
nested
property has been removed. The nesting is handled automatically - the
icon
&title
properties have been removed, in favor of using the default slot of theCardHeader
component - the
search
property has been deprecated & removed - the
badge
property has been removed, in favor of using the default slot of theCardBadge
component - the
refresh
property has been removed, in favor of using theCardRefresh
component - the
fixed
property has been deprecated & removed. The card by default is non collapsible but when using theCardCollapse
component within thecontrols
slot, it becomes collapsible - the
removable
property has been removed in favor of theCardRemove
component - the
controls
property has been deprecated & removed - the
overlay
property has been renamed as loading - the
scrollable
property has been deprecated & removed - the
transition
property has been added and is required if using transitions
Note that now the card has become more modular, so instead of giving properties, you'll be using other components to build the card to your heart's desire, achieving the previous functionality and going beyond.
Dropdown.vue (@enso-ui/dropdown)
- added
disabled
property height
&width
were removed and need to be managed in the wrapper componenthidesManually
has been renamed tomanual
- used the new dropdown-indicator
- built upon a renderless component
- handles keyboard events: Esc, Tab, Enter
DropdownIndicator.vue (@enso-ui/dropdown-indicator)
- reusable arrow with state
Modal (@enso-ui/modal)
Modal.vue (@enso-ui/modal)
- the
card
property has been removed - the
container
property has been replaced withportal
ModalCard.vue
- the
container
property has been replaced withportal
Overlay.vue -> Loader.vue (@enso-ui/loader)
- the component has been removed and replaced with
Loader
Loader
is now located in the@enso-ui/loader
package- the loader now has an improved animation and uses a transition for a better experience
Popover.vue -> Confirmation.vue (@enso-ui/cofirmation)
Tabs (@enso-ui/tabs)
Tabs.vue
- the component design has been updated under the hood, switching from event based communication ...
v2.16.3
v2.16.2
Improvements
- adds a new system for collection missing translation keys, optimizing the number of needed server requests
- moves the IO logic in its own package,
laravel-enso/io
- refactors / improves the IO ui
- refactors DataImport / DataExport to make use of the new helpers available for IO Operations
- removes the chunk option from
config/enso/datatable.php
. The chunk is determined dinamically now - fixes missing header bug in VueDatatable excel exports, on every sheet
- fixes exporting hidden columns (!visible) in vue datatable
- fixes icon rendering bug in menu manager table when using fa icons with other prefix than
fas
- updates all Enso's tables to use the new cache feature
To upgrade
- run
composer update
- run
yarn run dev
v2.16.1
The public assets were removed from the git repo.
If you would like the same approach for your own project match the .gitignore file with the one from the main repo (the public folder in particular) and make a commit with the new file.
After run git rm -r --cached ./
, perform a second commit and that's it.
Beware that if you do that you will have to compile the assets in the deployment process.
v2.16.0
Starting with this version Enso gets native multitenancy support, thanks to the our newest package laravel-enso/multitenancy
Improvements
- for more information on multitenancy, take a look at the documentation
- adds caching support for totals in tables; this can be have a great positive impact in large tables.
For more info check the docs - strengthens the user -> person -> company -> userGroup -> roles policies, getting ready for MT :D
- upgrades horizon to 2.0.x
Bug Fixes
- fixes a bug in vue select when the selected value is (int) 0
- fixes a bug in typeahead when using the filter function. This bug affected the searchable functionality
- other minor bug fixes
Upgrade steps:
- update in
composer.json
:"laravel-enso/core": "3.7.*"
- update your
database.php
config file and make sure that you have asystem
connection that is also configured as default and an optionallytenant
connection. Use the file from the main repository as an example. - run
composer update
- run
php artisan enso:upgrade
- update
CompanyFactory
with the one from the demo repository - update
.env.example
&&.env.testing
if needed - update the
horizon.php
&datatable.php
configuration files with the ones from the main repository
v2.15.3
Improvements
- improves
vue-table
BE filtering - makes
fullInfoRecordInfo
available invue-table
templates - refreshes the table example page
- allows
Obj
properties to contain dash - updates the default values in
config/enso/auth.php
- makes the
position
field require a company to be selected, in People - adds FE permissions check for company people management
- upgrades the filters (
vue-filter
,vue-select-filter
,date-filter
,date-interval-filter
,interval-filter
)- adds a
compact
prop - makes the filters of the same height in both compact and non compact mode
- allows stacking of more filters horizontally
- adds an
all
option for DateFilter - changes selection in
vue-filter
towarning
- adds a
Bug Fixes
- fixes filtering reporting bug in
vue-table
's ui - fixes a bug when using
fullInfoRecordInfo
- fixes
money
format invue-table
- fixes the
.is-naked
helper class for.button
Upgrade instructions
composer update
yarn upgrade
yarn run dev
v2.15.2
Changes
Starting now Enso supports custom password policies via config.
You have the option to configure the password's:
- lifetime (in days)
- length
- min upper case letters
- min numeric characters
- min special characters
- max login attempts per minute
If you leave the lifetime null or 0 the user will never be required to change his password.
Once the lifetime is configured the user will receive notifications upon login when he has less than 3 days until his current password becomes invalid.
Bug Fixes
- fixes a bug when clearing unread notifications
- fixes a warning in
<password-strength>
Upgrade instructions
- run
composer update
- run
php artisan enso:upgrade
- publish the core configs if you want to customize the auth params
- configure in
.env
your desired password params -> seeconfig/enso/auth.php
for the available options
2.15.1
In this version we focused on greatly improving the assets compiling process. With the new configuration build times dropped by ~ 75% for production.
Changes
General
- improves webpack.mix.js
- enables use of multiple cores
- disables processCssUrls
- enables vender extraction
- includes manifest.js and vendor.js in index.blade.php to support vendor extraction
- updates in all the js file (with the new linter / rules)
Core
- moves UserGroup pages to the publishing list
- adds AR and PT languages support in local date-fns i18n
- adds
manifest.json
andvendor.js
toindex.blade.php
to make use of webpack's vendor extraction
Charts
- renames
get()
=>fetch()
in<chart-card>
Addresses, Comments, Documents, Discussions, CompanyPeople
- renames
get()
=>fetch()
in<*-card>
wrapper
Bugs
- fixes
<address-card>
refresh (get
=>fetch
)
Upgrade instructions
- update in
composer.json
:"laravel-enso/core": "3.6.*"
- run composer update
- delete your local
node_modules
,yarn.lock
,package-lock.json
- update the following local files with the ones from the main repo
webpack.mix.js
.eslintrc.js
package.json
.babelrc
- run
yarn
- compile
- run in tinker the following command:
LaravelEnso\PermissionManager\app\Models\Permission::where('name', 'LIKE', 'administration.companies.contacts.%')->delete();
(it was a typo in theenso:upgrade
command)
v2.15.0
Changes
This version aimed to allow direct association of users to companies via persons.
This will provide a good structure for creating users that will belong to different organisations (clients for instance)
and the related restrictions when accessing application's resources.
The old contacts structure is deprecated. The associated people are now called company people
.
An upgrade command is provided that takes care of all the database structural updates and transforms the old
contacts / mandataries to company people.
Addresses, Comments, Discussions, Documents
- refactors the count update tracking
Companies
- removes deprecated command
- removes the deprecated contact request validation (including customization)
- removes
mandatary_position
from the table / form - reorganizes the company form
- restricts the
mandatary
to the list of associated people - creates the
adminstration.companies.people
structure - limits the company selection when using the
CompanySelectController
for users that do not belong toAdminGroup
- reuses the
PersonSelectController
for company people - updates the
people()
relation inCompany.php
- removes the deprecated
contactFormTemplate
fromcompanies.php
config file - updates the
CompanyFactory
- removes the deprecated
ContactFactory
- replaces the deprecated
/resources/js/components/enso/contacts/
components with/resources/js/components/enso/companies/
- updates the implementation of
accessories
in theEdit.vue
page - updates the routes
- replaces
ContactTest
withCompanyPeopleTest
Core
- updates the
Upgrade
command to take care of 3.3.* => ^3.4 upgrades - refactors the role change authorization in
UserController
- adds the
AdminGroupId
constant to theUserGroup
model - adds the
belongsToAdminGroup()
helper to theUser
model - refines the user delete error messages
- updates the
UserSeeder
- fixes a bug when having more than 2 level nested menus
Discussions
- fixes discussion delete
DataImport
- fixes cell sanitization
- fixes header normalization
- fixes tests
FormBuilder
- adds selected tab name to
_params
on submit - fixes modal visibility in an edge case
People
- adds
PersonPolicy
- adds
appellative
&position
toPersonSelectControllers
's query attributes - drops the
gender
column and adds agender()
helper that determines the gender by thetitle
value; Adds aisMandatary()
helper - adds a
company()
relation to thePerson
model - makes the form tabbed; adds
company_id
andposition
to the table / form - updates the
PersonFactory
- updates the implementation of
accessories
in theEdit.vue
page - updates the tests
Select
- fetches the option list when clicking on the
No options
label - adds
cursor:pointer
to the.select-value
class - makes the request object (optional) available for the select controllers
StructureManager
- updates the stubs for select controllers and form pages
TrackWho
- adds return type to relations. This will help when requesting the relations in contracts
VueComponents
- refactors
accessories
; now it can use any kind of accessory - updates
tabs
to emit theselected
event when mounted
Upgrade instructions - estimated time per project ~ 5min
- update in
composer.json
: "laravel-enso/core": "3.5.*" - run
composer update
- run
php artisan migrate
- run
php artisan enso:upgrade
- update
CompanyFactory
andPersonFactory
andUserSeeder
with the ones from the packages - remove
ContactFactory
- remove
/resources/js/components/enso/contacts/
Note:
If you customized the company / person form / table / pages you will have to manually update them accordingly...
v2.14.1
Bug Fixes
- fixes header normalization in Data Import
- fixes the role configurator
- adds the missing searchOperator from datatable config that was breaking the table search
- fixes tabs position in formbuilder to properly display select's dropdown
- updates structure manager's from create / edit stubs for
enso-form
- removes a redundant test in Searchable that was causing problems on certain env's
- prevents form submisison when used in a form for
file.vue
Improvements
- adds an exception on export when another export is running for the same user / table
- adds a
compact
prop tovue-filter
- adds translations for the tutorial navigation buttons
Note
The Documentation is up to date now