Skip to content

Releases: laravel-enso/enso

v3.7.1

18 Nov 15:34
Compare
Choose a tag to compare

Laravel Enso's Changelog

3.7.1

front-end

calendar

  • fixed request filter date format

filters

  • fixes fill method for filter state
  • limits width for picker inputs in date filter

tables

  • improves global button actions handling

ui

  • small changes to the AppUpdate messages; removed the version check when updating
  • missing icon import fix

back-end

companies

  • added Company::owner() static helper method which returns the application owner company, based on the configured id (config('enso.config.ownerCompanyId') - more information below

core

  • changed the AppUpdated notification tooltip message
  • added ownerCompanyId key in config.php
  • updated the config.php configuration, so that the values that make sense are read from the .env file if they provided
  • cleanup of some deprecated image files

currencies

  • fixes exchange fetcher service

forms

  • fixed setting the route params for create
  • added support for pivotParams & customParams meta properties for select

helpers

  • fixed filled getter on Obj when value is an instance of Collection

localisation

  • updated/added a few translation keys and values

menus

  • marked the computed icon not exportable in table thus fixing a table export issue

roles

  • fixes role table to show users without default menu
  • fixes config writer for users without role

deprecated

examples

  • the package is being deprecated and will no longer be maintained
  • for new projects, the relevant functionality (sample data for the dashboard charts) has been moved locally within Enso

Upgrade steps

This is a non breaking upgrade:

  • run composer update
  • run yarn upgrade && yarn in /client

Company::owner()

The newly added method addresses the need to identify the Application's client or owner. Internally, we've handled this in various ways and, with this small update, we mean to provide an unified, consistent approach.

Since it makes sense that the Company model from the Companies package may be extended either in other packages or locally, the method's resulted class is resolved from the container.

Thus, if required, you can bind your desired/local implementation to the LaravelEnso\Companies\app\Models\Company class in the service provider.

You may set the application owner's company id within the main Enso configuration file (enso.config.ownerCompanyId).

v3.7.0

14 Nov 12:58
37ee827
Compare
Choose a tag to compare

Laravel Enso's Changelog

3.7.0

The major purpose of this release is three fold:

  • the switch to VueCli 4 which allows using the latest official VueJS tooling and should be more future-proof
  • the date handling flow was simplified: we now expect that the front-end will send the date in the database's date format (usually Y-m-d or Y-m-d H:i:s) and on the back-end, all dates should be cast to Carbon\Carbon.
  • the back-end packages were updated to require PHP 7.3+

front-end

accessories

  • default value for Documents.vue's disableUpload was fixed causing users to not be able to upload files

calendar

  • added Event recurrency support
  • small fixes and under the hood refactor
  • import of VueCal language packs for the Enso supported languages which fixed translation issue

companies

  • fixed small bug when assigning a person to the company, which caused the person to not be listed as assigned

confirmation

  • fixed small styling issue with the control's position

currencies

  • added filters on the index page
  • for the currency display, symbols are used insteand of icons

datepicker

  • default date format was updated from 'd-m-Y' to 'Y-m-d'
  • alt-format & alt-input parameter usage was fixed

filters

  • DateFilter now has a direction parameter & control: you can now choose to filter from past & future presets
  • DateFilter also has a new forward boolean parameter which makes the component to start by default with the
    future presets
  • under the hood date format handling has been improved

forms

  • fixed the alt-input & alt-format handling for the date field
  • instead of a single actions slot, the form now has a two actions-left & actions-right slots. This is a breaking change - see the upgrade steps

products

  • various small css fixes

select

  • making another request when the last request is still in progress will trigger the existing request's cancellation
  • fixed bug when using the select in Object mode
  • improved serverSide checking strategy
  • the CoreSelect's value parameter is now required

tables

  • fixed issue with unneeded scrollbars appearing under some circumstances
  • small cleanup

themes

  • theme files were renamed due to switching to VueCli and using the style loader webpack plugin
  • Bulma version was bumped to ^0.8.0
  • button sizes are customized to appear smaller than the new Bulma default (and slightly smaller than the old default)

ui

  • the media resources that belonged to the UI (such as notification image SVGs, some logos) were moved to the ui package and are copied on build
  • a new component is available in the navbar and being used to notify the currently
    logged in users whenever a new application update has been deployed
  • small changes made due to VueCli upgrade (routes, styles, themes)
  • other small fixes

back-end

activity-log

  • updated date parsing due to filters changes

avatar

  • added support for gif files

calendar

  • recurring events are now supported
  • various bugs were fixed
  • updated the tests

companies

  • updated message when setting/updating an assigned person/mandatary

countries (new)

  • functionality derives from 'addresses` which now is now better encapsulated

core

  • some of the resources used during the VueCli build process have been moved to this package, namely:
    • stubs for the index page
    • images used in the emails
  • a new command (php artisan enso:announce-app-update)and logic has been implemented that can be used to notify currently logged in users that a new application version has been deplyed
  • the older, deprecated upgrade commands where purged
  • improved local state handling (breaking change)
  • aded upgrade commands for calendar, countries & tutorials
  • the themes' configuration was updated

currencies

  • created a Converter service which can convert from one currency to another, at a given date
  • refactores fixer currency API
  • fixed exchange rate validation and more
  • fixed config API link
  • updated date parsing due to datepicker changes
  • added seeders for 17 currencies
  • added exchange_rates date index
  • various under the hood improvements
  • updated the tests

enums

  • updated PHP dependency to 7.3+

excel

  • updated PHP dependency to 7.3+

files

  • updated date parsing as required for latest filters usage
  • fixed invalidMimeType exception message

forms

  • updated date parsing for latest datepicker usage
  • updated the config: the previous dateFormat parameter is now named altDateFormat (breaking change)
  • fixed route generation in Builder
  • updated the tests

helpers

  • the DateAttributes trait was removed as a consequence of the new date handling flow (breaking change)

people

  • updated date parsing as required for latest filters usage

permissions

  • added menu related check when deleting permission

rememberable

  • fixed caching bug when choosing to cache 'forever'

tables

  • updated date filtering strategy which resulted in much simpler and robust code
  • fixed default sort issue
  • fixed rawTotal computation issue for empty tables
  • fixed bug when exporting nested columns

tutorials

  • the show route was renamed to load
  • fixed small form bug

versions

  • updated PHP dependency to 7.3+

Upgrade steps

Before getting into the actual upgrade steps, an overview of the changes is useful.

When switching from Laravel Mix to VueCli a few things happen:

  • the front-end resources location will change from resources/js to client/src/js
  • the front-end dependecies location will change from node_modules to client/node_modules
  • the package.json configuration file location will change from project root to client
  • the front-end patches location will change from patches to client/patches
  • when installing dependencies using Yarn, building or serving the front-end, you will need to cd into the client folder first.
  • instead of using Laravel Mix's webpack.mix.js file to configure the build, we will be using VueCli's vue.config.js
  • we can still use Valet to serve the back-end but we must use yarn serve to serve the front-end for
    hot module replacement

VueCli upgrade related steps

  • copy the client folder from the Enso repo into your project root

  • add any (package) aliases you had previously added to the webpack.mix.js file into:

    • the settings.import-resolve.alias.map section of the client/.eslintrc.js file
    • the configureWebpack.resolve.alias section of the client/vue.config.js file
  • update/replace your project root .eslintrc.js with the contents from client/.eslintrc.js and correct the aliases paths

  • if you had customized the .babelrc file, move those customizations to the client/.babelrc file, and remove the root file

  • move your patches from patches to client/patches

  • move any local dependencies you had added to the package.json to the client/package.json file

  • move any additions from the resources/js/app.js file to the client/src/js/app.js

  • move any additions from the resources/js/localState.js file to the client/src/js/localState.js

  • move any additions from the resources/js/router.js file to the client/src/js/router.js

  • move your local components, pages, routes & store from resources/js to client/src/js

  • once you have moved your js files, you may delete the resources/js folder

  • if you have any local image resources in resources/images you can create a client/src/images folder and move them there. Afterwards, you should add a new CopyPlugin instance to the configureWebpack.plugins section within vue.config.js so that the images are copied on build (and overwrite, if needed, the default Enso assets).

    You may then delete the resources/images folder (the image files provided with Enso, such as the ones in the emails and corners have been extracted to their respective packages)

  • move any addtions from within the resources/sass files to the client/src/sass files

  • once you've moved everything, the resources folder should look like on the Enso repo here

  • remove the webpack.mix.js file

  • update .gitignore using Enso's as example and double check client/.gitignore

  • within composer.json update:

    • laravel-enso/core to 4.6.*
    • laravel-enso/calendar to 1.4.* (if using the calendar package)
  • run composer update in the project root to update the back-end packages

  • cd into the client folder and run yarn to install the front-end packages

  • make a copy of the client/.env.example file, name it .env, then edit it an set the url you're currently using with Valet, for your project

  • update the themes' configuration (config/enso/themes) to:

return [
    'light' => 'light',
    'dark' => 'dark',
    'light-rtl' => 'light-rtl',
    'dark-rtl' => 'dark-rtl',
];

Enso upgrade related steps:

  • search for any DateAttributes usages, remove the import and any date setters you might have added
  • when refactoring date attributes, you may use this commit as an example
  • search and replace the LaravelEnso\Addresses\app\Models\Country; namespace with LaravelEnso\Countries\app\Models\Country;
  • where using the actions slot within forms, replace the actions slot with actions-left and/or actions-right slots as required
  • the local state implementation class should be bound in the service container to the LaravelEnso\Core\app\Services\LocalState
  • publish the updated AddressFactory.php:
php artisan vendor:publish --tag=addresses-factory --force

...

Read more

v3.6.1

01 Nov 15:07
Compare
Choose a tag to compare

Laravel Enso's Changelog

3.6.1

front-end

activity log

  • keepAlive was removed form the index page

calendar

  • as the package is no longer included in the UI package, if you want to continue using it, it should be manually installed
  • previously, the calendar was more of a stub package with little functionality, now it has been rewritten and updated, with features such as:
    • creating and managing local calendars

emails

  • is a new package that can be used to compose emails for bulk sending (within the application)

files

  • keepAlive was removed form the index page

filters

  • fixed a bug in for the interval filters' computed value

products

  • small cleanup

switch

  • fixed readonly & disabled state

tables

  • the 'Totals' footer is now collapsible, similar to the other columns

typeahead

  • css styling was updated thus fixing some scrollbar issues and sub components sizing

ui

  • various small changes

back-end

activity log

  • small refactor
  • the Events list now has better, user friendly labels

addresses

  • the Country model now uses Rememberable (caching)
  • the Addresses factory should be force published as it has been updated - this now fixes
    the tests which appeared to randomly fail

avatars

  • the uploaded avatar now has the created_by attribute properly set

cli

  • fixed page tiles for create, edit, show routes

companies

  • the Active status is now selected by default in the form when creating a new company

control panel

  • date handling was refactored

control panel api

  • refactored the statistics building flow

core

  • the Calendar package was removed as an implicit dependency - if required add it manually using composer
  • fixed the User seeder
  • generates now the broadcast private channel name dynamically, suited for cases where the user is under a custom namespace

currencies (new)

  • is a package that can be used to manage currencies and exchange rates
  • various small changes and improvements
  • improved request validation
  • added Fixer Currency API integration so the current exchange rates can be automatically retrieved for your defined currencies

cli

  • page titles for edit, create, show where fixed
  • various small changes and improvements

data export

  • the authenticated user is now passed in the ExcelExport service so that the created_by flag can be accurately set for the generated files
  • the computation for the sheet limit has been fixed

data import

  • fixes setting the created_by attribute for the rejected file

emails (new)

  • various small changes

files

  • the File model's between scope now includes the limits of the given interval whereas in the past they where excluded
  • the Files service's attach method should also receive a $user model so we can properly set
    the created_by attribute on the model
  • FilePolicy's ownsFile method visibility what changed from private to protected so it can be overwritten
    if required

forms

  • updated tests to use the configured user model

helpers

  • updated the InCents trait to handle Pivot models
  • fixed the event name in the ActiveState trait (typo)
  • enhanced the date parsing strategy for the DateAttributes trait in that if the date cannot be parsed
    using the available format(s), Carbon::parse will be used as fallback

notifications

  • generates now the broadcast private channel name dynamically, suited for cases where the user is under a custom namespace

products

  • the product-supplier relationship has been enhanced with the use of Pivot model class for the pivot
  • the supplier prices are now saved 'in cents' through the use of the InCents trait

rememberable

  • the package has been rewritten for better code performance, readability & maintainability
  • in addition to the existing Cache mechanism, a new Volatile transparent layer is used by default, which uses an in-memory cache (which is available during the request).

select

  • a new TypeaheadBuilder trait has been added to the package, which acts like a shim between the typeahead front-end and the Options backend so we can have select-like ease of use when using typeaheads

tables

  • various small changes, bug fixes and improvements
  • a DynamicTemplate contract & mechanisms are now available that address a possible security issue when caching templates and having different templates and data for different users
  • enhanced interval filter handling
  • updated tests to use the configured user model
  • the exported file now has the created_by attribute properly set

teams

  • removed deprecated loggable properties from the model

Upgrade steps

  • composer update
  • yarn upgrade && yarn
  • the Addresses factory should be force published (pay attention if you've customized it):
    php artisan vendor:publish --tag=addresses-factory --force
  • update your User seeder or force publish the Core seeders (pay attention if you've customized them):
    php artisan vendor:publish --tag=core-seeders --force
  • update the Enso version within your config file to reflect the 3.6.1 version
  • if you want to install the calendar package:
  • php artisan enso:upgrade
  • php artisan migrate

For the next release we aim to move to Vue Cli from using Laravel mix.

v3.6.0

15 Oct 08:59
Compare
Choose a tag to compare

Laravel Enso's Changelog

3.6.0

front-end

accessories

  • adds a canAccessa check in documents to avoid an error
  • fixes the uploader import in documents

activity-log

  • major refactor for the new BE version, backward incompatible.

charts

  • adds Chart to exports

datepicker

  • adds support for altInput & altFormat

filters

  • updates date-filter interval logic. Previously, "today" generated an interval between today@00:00:00 (AM) and tomorrow@00:00:00 (AM). Now the interval is between today@00:00:00 and today@23:59:59. The same principle applies for the other intervals.
  • all the filters had the title property renamed to name (was causing unwanted native tooltip)

select

  • adds axios request cancelling on concurrent requests
  • fixes a bug on handling the value when operating in objects mode
  • improves serverSide check strategy
  • fixes bug where an error was thrown when using w/o server side

tables

  • refactored for the new v3.0.0 BE

switch

  • fixes disable and readonly states

back-end

activity-log

  • rebuilt from scratch
  • registration of events is made in `LoggerServiceProvider'
  • all registerd / logged events use Laravel native Model events and Observers
  • allows any number of custom events to be registered with models by extending the existing structures
  • now the messages are properly translated
  • for multi part events messages can be strings or arrays, (helps localisation)
  • added a default UpdatedActiveState event
  • documentation will be updated soon
  • adds tests

addresses

  • fixes test that was sometimes causing problems
  • adds a label() helper to the Address model
  • provides address label customization by config

companies

  • adds unique index for fiscal_code and reg_com_nr
  • consolidates the two request validators for Company in one ValidateCompanyRequest
  • upgrades the table for v3.0.0
  • when creating a company the active status is preselected
  • fax and bank were removed from the index table

core

  • consolidates the two request validators for UserGroup in one ValidateUserGroupReques
  • upgrades the table for v3.0.0
  • adds the new dateTimeFormat in config and in the AppState builder
  • adds the Activatable contract on the User model

data-import

  • adds an Authenticates contract that can be used by importer classes when the user that performs the import needs to be authenticated
  • fixes a bug occuring when generating the rejected file, which caused some validation errors to not be reported

excel (new)

  • provides an ExportsExcel contract and the ExcelExport service that makes excel exports an easy task
  • package was added to the base Enso project

pdf

  • package was added to the base Enso project

forms

  • adds meta support for select's objects property
  • fixes a bug when manually set values were transformed by the builder for the selects operating in 'object' mode
  • improves needsValidation() logic

helpers

  • adds the Activatable contract
  • changes the ActiveState trait by renaming:
    • getter isDisabled() => isInactive()
    • helper disable() => deactivate()
    • scope disabled() => inactive()
  • fixes an edge case bug on InCents

files

  • fixes FilePolicy

localisation

  • consolidates the two request validators for Language in one ValidateLanguageRequest
  • upgrades the table for v3.0.0
  • adds the Activatable contract on Language model

menus

  • consolidates the two request validators for Menu in one ValidateMenuRequest
  • upgrades the table for v3.0.0

people

  • consolidates the two request validators for Person in one ValidatePersonRequest
  • upgrades the table for v3.0.0

permissions

  • consolidates the two request validators for Permission in one ValidatePermissionRequest
  • upgrades the table for v3.0.0

roles

  • consolidates the two request validators for Role in one ValidateRoleRequest
  • upgrades the table for v3.0.0

tables

  • the package was completely refactored
  • the table builder class now has to implement a Table contract instead of extending a service class
  • adds a serie of contracts besides Table:
    • AuthenticatesOnExport => should be used for tables where the logged user is needed for restricting visible rows or any other purpose. The exporter will make sure that the user who requested the export will be authenticated before any queries are performed
    • CustomFilter => should be used for tables when custom filter logic is needed via params. Will make sure that the correct count is displayed when custom filters are applied
    • RawTotal => should be used with tables where the total cannot be computed simply by adding up column values (e.g. `sum(price * quantity))
    • Filter => can be used to register local filters
    • ComputesColumns => can be used to register local computors
  • improves exceptions
  • adds template caching, configurable by global config or per table. Comes with a php artisan enso:tables:clear command that should be used on production when opting for cacheing templates
  • renamed cache to countCache. Can now be set globally in the config. The builder will notifiy the dev if certain models are missing the TableCache trait
  • makes the buttons attribute mandatory in templates
  • date interval filters object must now contain the dateFormat prop representing the FE format of the date. If the dateFormat prop is null, the config('enso.config.dateFormat') will be used
  • dbDateFormat was removed
  • improves the strategy for autodetecting the model property. The camel case of the model class short name is now used
  • determines the table's name property (if not provided in the template) by pluralising the model property (see above)
  • the notification channels should be present in config `['email', 'broadcast', 'database']
  • all tests were refined

tutorials

  • consolidates the two request validators for tutorial in one ValidateTutorialRequest
  • upgrades the table for v3.0.0
  • adds TableCache on the Tutorial model

Upgrade Steps

  • update composer.json dependencies to:

    • "laravel-enso/cli": "3.3.*"
    • "laravel-enso/core": "4.5.*"
    • "laravel-enso/pdf": "1.0.*"
    • "laravel-enso/excel": "1.0.*"
  • add in composer.json => autoload-dev.psr-4 section:

    • "LaravelEnso\Cli\tests\": "vendor/laravel-enso/cli/tests/"
    • "LaravelEnso\Tables\Tests\": "vendor/laravel-enso/tables/tests/"
  • update package.json dependencies to:

    • "@enso-ui/accessories": "2.1.x"
    • "@enso-ui/bulma": "2.1.x"
    • "@enso-ui/directives": "1.0.x"
    • "@enso-ui/mixins": "1.0.x"
    • "@enso-ui/tables": "1.2.x"
    • "@enso-ui/themes": "1.0.x"
    • "@enso-ui/transitions": "1.0.x"
    • "@enso-ui/ui": "2.1.x"
  • remove from package.json

    • "@enso-ui/filters": "^1.1.1"
    • "@enso-ui/forms": "~1.2.0"
    • "@enso-ui/select": "~1.1.1"
  • run `composer update && yarn && yarn upgrade && yarn"

  • run php artisan enso:upgrade

  • add in phpunit.xml the test suite for activity-log

<testsuite name="activity-log">
    <directory suffix="Test.php">./vendor/laravel-enso/activity-log/tests/units</directory>
</testsuite>
  • add in config/enso/config.php the dateTimeFormat key

activity-log

  • truncate the activity_logs table. Or if required, you can manually migrate the old data to the new format
  • publish the LoggerServiceProvider and configure it using the provider from this repo as an example: php artisan vendor:publish --tag=activity-log-provider

addresses

  • add the to the addresses config file the label key

data-import

  • add the new Authenticates contract to all imports that need the authenticated user

filters

  • replace the title prop with name for all the usage instances of the following filters:

    • BooleanFilter,
    • CoreSelectFilter,
    • EnsoFilter,
    • EnsoDateFilter,
    • DateFilter,
    • DateIntervalFilter,
    • EnsoSelectFilter,
    • IntervalFilter,
    • SelectFilter
    • VueFilter .

    To do this you can search the whole resources folder for title=". Make sure you only replace the prop for filters and not other components

  • make sure that the change in date-filter (described above at the front-end > filters section) does not impact your local use cases

  • whenever using date-filters with tables, remove dbDateFormat and make sure dateFormat is present in the interval object, so the back-end knows it's a date interval. dateFormat should reflect the ui date format. If left null, the backend will consider config('enso.config.dateFormat').

helpers

  • make sure that you replace isDisabled() & disable() helpers usage with isInactive() & deactivate() and disabled() scope with inactive()

request validators

  • most of the ValidateModelStore / ValidateModelUpdate request validators were consolidated into one ValidateModelRequest (see the changelog). Check all local classes that are extending Enso request validators and make sure they extend the right class.

tables

  • remove the usage of the Datatable trait as it no longer exists. You may search for use LaravelEnso\Tables\app\Traits\Datatable; and remove any traces;
  • refactor all the table builders to implement the new Table contract and expose the required query() and templatePath() methods. You can follow as example the refactor of the permissions table
  • the protected $templatePath property has become protected const TemplatePath;
  • if you have extended any of the...
Read more

v3.5.0

27 Sep 14:36
Compare
Choose a tag to compare

Changes

front-end

We've created individual packages for resources that map on their back-end siblings for:

  • calendar
  • files
  • data-import
  • activity-log
  • people
  • companies
  • teams
  • roles
  • permissions
  • menus
  • localisation
  • tutorials
  • how-to

This allows much easier customisation...

switch

  • fixes not clickable bug on IOS

tables

  • cleansup vResponsive
  • fixes file download on default download button

back-end

cli

  • fixes menu creation w/o model bug
  • updates table template stub
  • updates form builder stub to use static vs self
  • updates stubs for the new aliases in enso-ui 2.x

companies

  • makes status required in form validator
  • fixes person form in edit mode, the user field is now readonly

core

  • adds an upgrade for the new data-import

data-import

  • refactors, cleans & increases accuracy for the progress tracking strategy

forms

  • exposes sectionVisibility & tabVisiblity helpers by making them public
  • fixes unknownMetaAttributes() validation error reporting

helpers

  • fixes inCents when having null cent attributes
  • adds CarsadesMorphMap trait. You can use this in combination with Laravel's Relation::morphMap() and have a single alias for all children classes. The convention is to use the singular camel case name of the model's table

rememberable

  • refactored self vs static in model retrieving

tables

  • fixes cents flag appeared as true when no cent columns defined bug

Upgrade Steps

  • update in package.json the following
    • "@enso-ui/accessories": "~2.0.0",
    • "@enso-ui/bulma": "~2.0.0",
    • "@enso-ui/directives": "~1.0.1",
    • "@enso-ui/filters": "^1.1.1",
    • "@enso-ui/mixins": "~1.0.0",
    • "@enso-ui/select": "~1.1.1",
    • "@enso-ui/themes": "~1.0.0",
    • "@enso-ui/transitions": "~1.0.1",
    • "@enso-ui/ui": "~2.0.0",
  • replace in webpack.mix.js
'@core-routes': `${__dirname}/node_modules/@enso-ui/ui/src/bulma/routes`,
'@core-pages': `${__dirname}/node_modules/@enso-ui/ui/src/bulma/pages`,
'@core-middleware': `${__dirname}/node_modules/@enso-ui/ui/src/middleware`,
'@core-modules': `${__dirname}/node_modules/@enso-ui/ui/src/modules`,

with

'@core': `${__dirname}/node_modules/@enso-ui/ui/src`,
  • search and replace:
    • @core-modules => @core/modules
    • @core-pages => @core/bulma/pages
    • @core-middleware => @core/middleware
    • @core-modules => @core/modules
  • update in router.js:
    • add import routes from '@core/bulma/routes';
    • remove const routes = routeImporter(require.context('@core-routes', false, /.*\.js$/));
  • run yarn upgrade
  • update your front-end patches if the case requires
  • run yarn (to apply the patches)
  • run composer update
  • run php artisan enso:upgrade

Enjoy!

v3.4.0

20 Sep 14:06
Compare
Choose a tag to compare

Changes

front-end

accessories

  • adds permission checks for various document operations

filters

  • cascades enso select event handlers in select filter
  • adds v-model to date filter, with value required
  • adds a title prop to date-filter
  • fixes tooltip in date-filter
  • adds watcher for value prop in date-filter
  • fixes horizontal padding in vue-filter

forms

  • allows passing params in select fields
  • avoids scrollIntoView erorrs (eg when using hidden fields)

select

  • adds watcher for source
  • no longer fetches on click when the component is readonly / disabled
  • locks selection when params / pivot-params / custom-params are changed until the new list of options is fetched
  • removes disable-filtering prop
  • disables front end filtering when using server-side

tables

  • improves vResponsive directive
  • refactors dtRowId
  • adds a FilterState helper component
  • renames bulma Controls component names
  • minor visual refactor

typeahead

  • adds automatic route translation in enso-typeahead
  • cascades clear

ui

  • the route helper is no longer defined as global and must now be injected in every component
  • fixes menu label padding
  • improves tag group template in search, adds horizontal scrolling
  • fixes checkbox alignment in checkbox manager
  • fixes params in dataimport index template

back-end

addresses

  • removed superfluous validation
  • removes address observer
  • add laravel-enso/enums
  • improves form extending, removes formTemplate from config
  • adds lat and long fields in form, with custom validation rules
  • renames DefaultAddress controller to SetDefault
  • improves scopeFor to work with morphMap
  • removes deprecated Addresses trait
  • refactors exceptions

avatars

  • removes redundant method call in default avatar
  • upgrades laravolt/avatars to 3.0

calendars

  • adds laravel-enso/enums
  • adds enums service provider for registering calendars

charts

  • small refactor

cli

  • adds a package option. Now you can generate whole structure boilerplates directly in your vendor/my-vendor/my-package folder
  • adds session saving. You can now configure a structure, exit (or encounter an error :P) then come back and continue from where you left
  • adds unit tests
  • adds laravel-enso/enums

comments

  • removed superfluous validation
  • small refactor

companies

  • implements dependency injection in controllers
  • adds rememberable, avoids deletion conflicts and relations traits to the company model
  • adds laravel-enso/enums
  • improves form for easier customization
  • adds fiscal_code, reg_com_nr and status fields in table migration
  • adds CompanyStatuses enum
  • adds a EnumServiceProvider
  • removes companies.php config file
  • removes default restrictions in Options controller
  • adds fiscal_code to $queryAttributes in Options
  • refactors exceptions

core

  • adds laravel-enso/enums
  • adds EnumServiceProvider
  • fixes email unique validation in user form validation
  • removes duplicate trait use in UserGroup
  • adds rememberable on UserGroup
  • adds rememberable, avoids deletion conflicts and relations traits to User
  • improves user and group form for easier customization
  • removes versionings as a requirement
  • updates Upgrade command for 3.4.0

data-export

  • adds a chunk option in config for setting the default value
  • updates policies: view, share, destroy
  • upgrades box/spout to 3.0
  • implements the new AuthorizesFileAccess

data-import

  • small refactor
  • updates contracts (beforehook, importable, afterhook) to receive the authenticated user as well
  • adds laravel-enso/enums
  • implements AuthorizesFileAccess contract
  • updates policies: view, share, destroy
  • upgrades box/spout to 3.0
  • refactors exceptions

discussions

  • small refactor

documents

  • removed superfluous validation
  • updates policies: view, share, destroy
  • implements AuthorizesFileAccess

dynamic-methods (new)

  • a set of traits that allow adding methods / relations / mutators / accessors in models from a local service provider

enums (new)

  • Enso Enum was moved from laravel-enso/helpers in itw own package
  • has an EnumServiceProvider that allows registering enums that are sent by the app state builder to the front-end. The provider can be extended in any package or locally

files

  • greatly improves the authorizan strategy
  • adds AuthorizesFileAccess contract
  • adds an UploadPolicy for view, share and destroy
  • refactors exceptions

forms

  • removes deprecated allow-filtering option from meta
  • adds params to meta for select fields
  • allows use of nested attributes
  • refactors exceptions

helpers

  • adds an optional precision for all methods in Decimals
  • adds floor and ceil to Decimals
  • fixes an edge case bug in Obj's filled method
  • adds DatabaseSeederProgress and SeederProgress traits that allow displaying a progress bar in the seed process
  • updates InCents to do floor on converting in cents
  • removes Enum (now lies in its own package)

how-to

  • small general refactor
  • refactors exceptions

image-transformer

  • refactors exceptions

io

  • adds laravel-enso/enums

localisation

  • refactors the localisation key to language
  • renamed form & table (builders & templates)
  • improves form for easier customization
  • refactors exceptions

logs

  • refactors exceptions

menus

  • small refactor
  • improves form for easier customization

notifications

  • removes unused vars in notification

people

  • improves form for easier customization
  • adds AvoidsDeletionConflicts, Relations, Rememberable on Person
  • adds laravel-enso/enums
  • adds EnumServiceProvider
  • adds bank and bank_account to the table's migration
  • adds uid to $queryAttributes in Option
  • removes people.php config file

permissions

  • small refactor
  • improves form for easier customization

rememberable

  • cacheGet($id) now return null if the model does not exist in the database

roles

  • adds rememberable on Role
  • adds laravel-enso/enums
  • improves form for easier customization
  • refactors exceptions

searchable

  • casts labels sent to the front-end as strings
  • refactors Finder.php
  • improves the logic in Search.php

select

  • refactors the option builder

tables

  • small refactor & cleanup of redundant logic
  • refactores filters
  • dtRowId is now configurable and defaults to "id"
  • the box/spout dependency was upgraded to the v3 version
  • adds/uses laravel-enso/enums
  • now uses the Laravel 6 Arr class instead of the global helpers
  • adds model prop in template for customizing the model
  • refactors exceptions

track-who

  • improves resources logic
  • refactors auth helper into facade
  • fixes updatedByTest

teams

  • team now uses rememberable

tutorials

  • small refactor
  • improvements to form customization
  • adds/uses laravel-enso/enums

versions (new)

  • alternative package to versioning where the version is kept on the model vs using a separate table

versioning

  • improves flow, optimizes queries, fixes N+1 problem
  • addresses scenario where N+1 queries were being made by using $with
  • renames versioning table to precede all other model migrations

Upgrade steps

Local project

  • update in composer.json:
    • require
      • "laravel-enso/control-panel-api": "2.3.*", // optional, if you are using it
      • "laravel-enso/core": "4.4.*",
      • "laravel-enso/enums" "1.1.*",
    • require-dev
      • "codedungeon/phpunit-result-printer": "^0.26.0",
      • "facade/ignition": "^1.4",
      • "nunomaduro/collision": "^3.0",
      • "phpunit/phpunit": "^8.0"
  • update in package.json
    • "@enso-ui/accessories": "~1.1.0",
    • "@enso-ui/bulma": "~1.2.0",
    • "@enso-ui/forms": "~1.2.0",
    • "@enso-ui/select": "~1.1.0",
    • "@enso-ui/tables": "~1.1.0",
    • "@enso-ui/ui": "~1.5.0",
  • rename structuremanager test suite to cli in phpunit.xml
  • remove from the local User model the Addresses & Documents traits
  • update the CompanyFactory with the one from the github repo (of course, retain any local additions if necessary)
  • update enso/exports.php, enso/tables.php, laravolt/avatar.php config files with the ones from the github repo
  • delete the enso/people.php & enso/companies.php deprecated configs
  • make sure to refactor any customisation to the people / companies forms or tables using dependency injection / binding in your AppServiceProvider. The old customization mechanisms which were using configs have been removed.
  • search and replace LaravelEnso\Helpers\app\Classes\Enum => LaravelEnso\Enums\app\Services\Enum
  • either refactor all table builders and remove the dtRowId alias for the id, or update your local table templates and add "dtRowId": "dtRowId"
  • make sure you inject route in all the VueJS components where the helper is used. Search for "route()" in your resources folder and refactor
  • refactor any customizations to documents, uploads, imports, exports to make use of the AuthorizesFileAccess contract
  • update all importers and classes implementing the BeforeHook, Importable and AfterHook contracts, as the before, run and after method signatures have changed and a and $user parameter was added
  • add a value parameter to all date-filters or enso-date-filters component use
  • if you are currently using the Versioning package, manually add it as a dependency in your composer.json under require, as it was removed as a dependency from Core
  • run php artisan enso:upgrade

    Optional:
  • now you can register/add Enums directly from your packages, to the application state, b...
Read more

v3.3.6

10 Aug 10:51
Compare
Choose a tag to compare

Changes

front-end

datepicker

  • adds support for readonly (acted as disabled before)

directives

  • adds v-long-click directive; should provide the duration when used (v-long-click:2000)

forms

  • disables dirty monitoring when disable-state is used
  • adds self to the ready event; now the whole form component can be used as an object from the outside

select

  • improves fetching / debouncing strategy
  • adds a selection event that returns option objects
  • fixes non string labels highlighing / matching
  • fixed issue with matching when using non-lower case query string

tables

  • shrinks default row text to 0.9em
  • adds support for cents
  • adds support for searchModes, searchMode

ui

  • adds vuecal2 support; the calendar menu is still WiP
  • fixes numberFormat filter to always display the specified digits
  • adds support for font-awesome-layers-text component; can be accesed under the global <falt/>
  • fixes a bug in bookmarks when trying to focus the bookmark before the page was mounted
  • fixes default logo

uploader

  • adds open-file-browser event

back-end

addresses

  • adds tests

calendar

  • adds reminders; still WiP

companies

  • updates the form and table classes to allow easier extenting via service container

cli

  • fixes stub for table builder

documents

  • return a document resource from Store.php controller

forms

  • adds tests
  • adds support for disable-filtering select option

helpers

  • adds DateAttributes trait
  • adds InCents trait

history-tracker

  • rewrites logic that handles tracked attributes

localisation

  • fixes routes for localisation:merge command

people

  • updates the form and table classes to allow easier extenting via service container

ro-addresses

  • adds an option resource

roles

  • updates warning to warn in enso:roles:sync command

tables

  • adds searchMode / searchModes to allow full use of table indexing on huge tables
  • adds support for cents
  • adds tests
  • fixes search with multiple arguments on relations
  • fixes max / min filters

versioning

  • improves logic
  • fixes error repoting
  • fixes various edge case bugs

Upgrade steps

  • composer update
  • php artisan enso:upgrade
  • yarn upgrade && yarn

Enjoy!

v3.3.5

15 Jul 09:21
Compare
Choose a tag to compare

front-end

accessories

  • adds an icons boolean prop to the Accessories.vue component
  • improves Document.vue for long names
  • adds a compact boolean prop for Comments.vue
  • adds disable-state on EnsoForm in AddressForm

card

  • improves (reduces) card control spacing

datepicker

  • adds Ukranian language support

filters

  • fixes IntervalFilter (now works with v-model=interval) & DateIntervalFilter

forms

  • cascades fetch(), setOriginal(), hideTab(), showTab() from the core component
  • adds a ref="field" on the used form field component in FormField.vue
  • fixes vuex state handling => keeps a copy of the form data
  • automatically hides tabs with empty sections

mixins

  • adds a files.js mixin

select

  • emits an update event when a change is made from inside the component
  • fixes fetch() cascading from the core component
  • allows multi argument search with highlighting matched

tables

  • fixes custom totals
  • adds support for nested attributes

ui

  • fixes . (dot) date separator handling
  • adds a setPageTitle action in store.js that handles page title & bookmark renaming
  • adds hideFooter / showFooter mutations in layout.js store module
  • extracts AvatarList.vue component from Team.vue
  • fixes settings bar padding that was causing the appearance of a horizontal scroll in some cases

uploader

  • adds a compact option

back-end

addresses, comments, discussions, documents

  • fixes avatar loading for TrackWho resource
  • adds a MorphOne relation besides the MorphsMany
  • adds `UpdatesOnTouch

data-export

  • adds missing imports in ExcelExport service

data-import

  • changes sheet normalisation from camel case to snake case
  • ignores empty rows on import

examples

  • fixes DateInterval filter use

files

  • fixes avatar loading for TrackWho resource

helpers

  • adds translation in EnsoException
  • adds AvoidsDeletionConflicts model trait => reports ConflictHttpException when a model cannot be deleted due to DB restrictions
  • adds MapsRequestKeys request validator => adds a mapped() method to the request validator that maps the keys to snake case
  • adds UpdatesOnTouch model that ensure that parent models trigger the updated event when using the protected $touches property. Does that by rewriting Model's touchOwners() method.
  • adds Decimals class that exposes a set of static helpers for decimals operations / comparisons using bcmath

forms

  • adds hideSection($fieldName) / showSection($fieldName) & hideTab($tabName) / showTab($tabName) helpers for the form object

io

  • fixes avatar loading for TrackWho

people

  • adds missing position & is_main pivot information on company() & companies() relations

ro-addresses

  • adds county Options controller & route

roles

  • refactors the Sync command

select

  • allows multi argument searching
  • adds a comparisonOperator option in select.php config
  • adds tests

tables

  • refactors excel export to work with authenticated user (needed in some scopes)
  • fixes interval filters (both date & non date)
  • implements dependency injection for resolving the table class
  • adds searchable ability for relations / nested attributes
  • adds cents option in meta that divides totals to 100, if the case

teams

  • fixes n+1 query problem when loading resources in index controller

track-who

  • refactors resource to enfore correct pre-loading of relations

ui

  • fixes enums translations

versioning

  • adds a lockFor($version) method
  • refactors the trait

Upgrade

  • composer update && yarn upgrade && yarn

v3.3.4

23 Jun 08:12
Compare
Choose a tag to compare

Bug fixes, small additions & refactors, dependencies updates

BE

calendar
  • fixes the request validator and allowed scope
data-export
  • fixes contracts import ExcelExport service
data-import
  • fixes excel seeder in
  • adds a small refactor in Template.php
roles
  • fixes enso:roles:sync throwing error when the roles folder was missing
tables
  • fixes multiple select filters in tables
  • fixes filters prop parsing
  • fixes interval filters
  • refactors excel export to work with scopes that need the authenticated user

FE

forms
  • cascades setOriginal() helper in vue-form and enso-form
ui
  • adds a disable-state boolean prop for forms that don't need state
  • adds a toaster confirmation when writing role config files
  • adds dot separator support for date format in enso-ui
tables
  • adds payload to postEvents
  • fixes clickable on columns hidden due to responsiveness
wysiwyg
  • patches the Link extension to open links in new tab / windows

Upgrade

  • composer update && yarn upgrade && yarn

v3.3.3

01 Jun 13:31
Compare
Choose a tag to compare

Changes

ui

  • adds bookmarks store module
  • fixes bookmark focus
  • adds ability to hold state
  • adds ability to have multiple bookmarks for the same route (eg multiple edit forms on the same model)

forms

  • enhances the errors & changes control, adding the ability to undo
  • integrates with the new bookmark's state to hold changes
  • adds a fill helper
  • exposes dirty & fill in vue form / enso form

general

  • fixes small bugs
  • updates dependencies

Run composer update / yarn upgrade && yarn to upgrade existing projects