Skip to content

Releases: laravel-enso/enso

v3.9.2

16 Apr 08:04
Compare
Choose a tag to compare

3.9.2

front-end

Front-end packages have had their yarn.lock file removed as it wasn't mandatory and fixed various automated depencency vulnerability warnings.

accessories

  • removed tooltip.js as direct dependency
  • fixed comments' avatar display
  • reverted to 'component'-wrapper class names for the Discussions and Comments components

categories (new)

  • created a new package which is currently a dependency of the products package

charts

  • added a new component, info panel to the package
  • added slot for controls
  • now performs fetch on source change
  • added missing shortNumber filter
  • added default min:0 for y axis ticks
  • improved chart to use formatter function on y axis

commercial

  • added stats example page
  • added missing package dependencies
  • fixed product select template
  • updated QuickView component import
  • added a github issue template to the repository

confirmation

  • removes tooltip.js as direct dependency

data-import

  • updated/fixed the Enum usage
  • added a github issue template to the repository

departments

  • updated menu icon
  • updated ui dependency requirement

directives

  • added a new v-resize directive, meant to be used with input fields, that resizes the field based on its content length

dropdown

  • removed popper.js as dependency
  • cascaded the hide() method;
  • fixed the proper closing of drop-downs when dealing with multiple drop-downs
  • added stopPropagation for click events
  • tweaked the component height to have it aligned with other Enso UI components

enums (new)

  • micro package that exposes Enum functionality, similar the the back-end package with the same name

filters

  • removed tooltip.js as direct dependency
  • @enso-ui/strings was added as a dependency as some utility methods are used within CoreDateFilter

forms

  • removes tiptap as dependency

hr

  • added fa-pro dependency
  • removed unneded dep

inventory

  • added addresses to the warehouse edit form as a result of adding an address relationship to the warehouse model
  • the @enso-ui/products dependency was updated to the new minor version
  • added a github issue template to the repository

permissions

  • the permission.js mixin was converted to a module
  • added a github issue template to the repository

quick-view

  • added a github issue template to the repository
  • removes unneeded @enso-ui/card dependency

roles

  • updated the roles configuration component to work with the new permission module
  • added a github issue template to the repository

search-mode (new)

  • added support for exact and doesn't contain matching
  • added stopPropagation for the click event

strings (new)

  • micro package that contains a set of string manipulation methods

tables

  • added support for configurable, state persistent, general filters
  • addressed bug tooltip position bug for some tables with one or two rows
  • translation support was added the column visibility selection
  • @enso-ui/select was added as dependency as dropdown usage was replaced by select
  • @enso-ui/enums was added as dependency as Enum computation was added to the front-end
  • added support for average totals
  • extracted search in its own component
  • fixed some layout problems in the top controls
  • fixed a bug where a double fetch was performed when resetting preferences
  • trimmed down request by removing garbage data
  • fixed preferences handling

teams

  • added a github issue template to the repository
  • fixes team name padding in card

themes

  • added the sidebar.scss component as part of the fix for the UI menu issue

tutorials

  • updated column name in the index table
  • updates enum slot to the new table
  • added a github issue template to the repository

typeahead

  • itemEvents & highlight attributes are now exposed in items slot

products

  • fixed directives requirement/import
  • added category selection to the product form as the product model now has a category relationship
  • @enso-ui/categories was added as a dependency
  • added a github issue template to the repository

select

  • updated the multi-select trigger css (set height & min-height)
  • extended selection slot to also cover the 'no selection' or 'no options' scenarios
  • fixed bug where select height was not matched with inputs
  • fixed select / deselect events payload to include full object when working in objects mode

ui

  • fixes collapsed sidebar label position on scroll
  • removed tooltip.js as direct dep
  • fixed navbar search tag filtering
  • @enso-ui/enums was added as a dependency
  • fixed bug related to missing a background color for the menu, on mobile usage mode
  • used interpolation syntax for scss variables usage

back-end

addresses

  • replaces helper with facade
  • added checks for single vs multi address support

avatars

  • now the supervisor can update the avatar of the impersonated user
  • refactored Default Avatar service, the create method returns now the freshly created avatar
  • improveed the logic in test

calendar

  • removed event body from the birthday calendar
  • refactored event request validator
  • fixed logic in event policy causing users with the proper roles to not be able to edit certain events

categories (new)

  • the package adds categories functionality and is currently a dependency of the products package

charts

  • now axes are displayed by default

cli

  • removed log
  • fixed bug that was not allowing the creation of a parent menu with null route

control-panel

  • fixed bug caused by url leading slashes

comments

  • fixed the user resource used for displaying the avatar

companies

  • fixed the publish tag
  • added importer & excel seeder
  • fixed enum usage
  • updated the static Company model owner method

currencies

  • added slot for the symbol table column

data-import

  • fixed rejected import download
  • removed deprecated attribute from table select
  • fixed enum usage in table

filters

  • fixed Hour typo related bug
  • added TimeSegments enum & timeSegment getter and property in the Interval service
  • extended comparison operators with Equal, Is, IsNot, NotLike, NotILike
  • extended search modes with exact and doesn't contain matching
  • fixed a bug in the search service when having falsies as value
  • adds tests for the new search modes

forms

  • enums are now resolved from the service container

localisation

  • updated a 'ro' translation value

permissions

  • improved computed type by adding a Verbs enum

phpunit-pretty-print (new)

  • created a phpunit pretty printer package

products

  • added vat rates enum
  • improved form
  • added category attribute & functionality to the package
  • added upgrade service to products

ro-addresses

  • added missing facade import
  • updated index controller for the new for scope
  • refactors seeders
  • added factory & tests
  • fixes validator by adding missing attribute

select

  • fixed resource instantiation via the usage of dependency injection

tables

  • refactored optimal chunk service & its respective test
  • enums are now resolved from the service container
  • fixes enum localisation when building template
  • added support for configurable, state persistent, general filters
  • updated api version
  • filterable is now a supported meta attribute within the json table configuration files used to mark columns that are filterable using the new filtering functionality
  • average is now a supported meta attribute within the json table configuration files used to mark columns for which we want a average type of total
  • updates backend for the new trimmed request
  • added some missing return types for methods
  • fixed a bug in rawTotals where the result was being cast to int
  • fixed an inconsistence where the columns was mapped in a Collection instead of a Obj
  • added support for exact and doesn't contain search modes
  • removed Enum computation in favor of front-end handling
  • renamed the fetchMode method to serverSide
  • added enum transformation for front-end enum processing

upgrade

  • fixed exception method signature
  • fixed admin role syncing in production for structure upgrade

The new tables filters

While the new minimum configuration table filters are implemented and you may test drive them (by adding the "filterable" attribute in the table columns' meta arrays, and then configuring the filters from the table's UI), please note that some of the filters configuration options/values/structure may change. We therefore don't recommend using them just yet in production.

When this feature will reach what we consider a stable form, the various options will be explained and the documentation updated.

Upgrade steps

To upgrade:

  • remove from client/package.json:
    • extract-text-webpack-plugin
    • popper.js
    • postcss-cssnext
  • add in client/package.json
    • postcss-preset-env
  • run `composer require --dev laravel-enso/phpunit-pretty-print
  • add in phpunit.xml printerClass="LaravelEnso\PHPUnitPrettyPrint\PrettyPrint"
  • run composer update in the project's root
  • run yarn && yarn upgrade && yarn to ensure you have the latest versions and patches are applied. If necessary, update your patches
  • update the Enso version to 3.9.2 in config/enso/config.php
  • in config/enso/tables.php update the comparisonOperator and searchModes keys to:
'comparisonOperator' => ComparisonOperators::Like,
'searchModes' => [
    SearchModes::Full, SearchModes::StartsWith, SearchModes::EndsWith,
    SearchModes::ExactMatch, SearchModes::DoesntContain,
],
  • in config/enso/select.php up...
Read more

v3.9.1

30 Mar 11:39
Compare
Choose a tag to compare

3.9.1

The release includes a complete refactor of the main Menu and many small changes and fixes both on the back-end and the front-end.

front-end

accessories

  • updated avatarLink usage
  • removes quick-view due to extracting it to its own package

calendar

  • switched vuecal to default grey theme
  • added translation for the small calendar

card

  • added is-naked on card control

checkbox

  • updated the CheckboxItems.vue component class

commercial

  • updated enso date filters usage

contracts

  • fixed parties enum in Index.vue
  • updated enso date filters usage

financials

  • updated enso date filters usage

how-to

  • fixed template upload vertical alignment

logs

  • log card controls are now naked instead of success/info/danger

mixins

  • updated last route / intended route mutation usage

modal

  • small refactor

projects

  • fixed icon for the ProjectCard component

quick-view (new)

  • replaced hardcoded scss top value with variable in order to detect navbar height

route-mapper (new)

  • new micro package which contains the route mapping logic

tables

  • fixed tag width on boolean columns
  • removed unnecessary span around cells
  • improved top controls
  • updated search layout
  • enhanced column visibility & style selector
  • added helper for invisible columns

teams

  • fixed team name padding in card

themes

  • renamed the is-hoverable helper to is-hoverable-item
  • added a settings component
  • improved the font import, made it easier to customize
  • added Muli as family secondary font, used for the refactored menu
  • adjusted shadows for is-raised, raises-on-hover, box and card
  • made changes to improve contrast for both themes

typeahead

  • drop down events are now cascaded
  • exposed itemEvents & highlight in the items slot

toastr

  • vertically centered the message icon

ui

  • removed deprecated Route.js
  • refactored document title, route.js
  • small refactor in Loader.vue
  • now using intendedRoute & intendedPath when redirecting a logged out user after login
  • renamed MenuState to SidebarState
  • implemented sidebar and navbar variables
  • updated aside shadow to be more discreet
  • changed page header animations to simple fade
  • updated navbar elements
    • changed order for sidebar control
    • added tooltip on env indicator
    • removed arrow from notifications
    • added a long awaited user dropdown when clicking the user profile link that allows quick logout
    • upgraded search:
      • by default it is hidden
      • can be activated by clicking the search icon or using the / key
      • on esc & blur it hides itself
  • updated sidebar / menu style:
    • made the sidebar wider
    • added a new font
    • increased the menu-label & menu-item font
    • updated highlighting and selected state of menu
    • the parent menu now remains open when changing to a menu with a different parent
    • added a visual indicator / handle for menu reorder
    • refactored the way active menus are managed
  • refactored store
    • renamed menus store module to menu
    • renamed layout/menu module to layout/sidebar
    • renamed layout/settingsBar to layout/settings
    • added a layout/search module for managing the global search state
    • integrated the logout request into the auth.js module
  • made the user group forms smaller
  • updated the avatar component to use the user resource format
  • added footer resize on sidebar collapse
  • added footer transition
  • made bookmarks shadow similar to that of the sidebar
  • renamed sidebar related classes (menu => sidebar)
  • set the menu font smaller (0.95em)
  • fixed bug in search when selecting from list
  • updated the sidebar state's label

back-end

All back-end packages have been updated due to renaming the app folder to App. You can find more information below.

avatars

  • fixed trait folder name
  • added unique constraint for the user_id column

cli

  • refactored logic & tests as needed to support the generation of files in both local & package modes, using the correct case for the App folder

companies

  • added a default, open/permissive policy for the controller actions
  • project specific logic can be created locally when needed, by extending and binding a new policy

core

  • added a role relation to user group
  • adjusted the user group form
  • updated the way the avatar is shown in users table
  • added a unique constraint for the user_id column in the avatars table
  • fixed namespace for the avatars upgrade command

currencies

  • dropped Types from migrations

data import

  • removed deprecated parameter from the UploadedFile constructor call

excel

  • fixed namespace for ExcelExport from LaravelEnso\Excel\App\Exports to LaravelEnso\Excel\App\Services

filters

  • fixed incorrect interval filtering by returning copies of the carbon objects
  • adds a new search service to be used for query builder searching

helpers

  • added a new When helper trait which can be used in a similar fashion to query builder style

localisation

  • added translation keys for the Sentry front-end error report form
  • small keys cleanup
  • updated localisation form layout
  • updated user translation for the 'ro' language files

menus

  • moved attribute set from tree builder to resource
  • added an active attribute to the resource

people

  • added a default, open/permissive policy for the controller actions
  • project specific logic can be created locally when needed, by extending and binding a new policy
  • multi-tenant specific request authorization logic has been removed form the request validation
  • fixed test

products

  • fixes failing tests when suppliers are not given

searchable

  • implemented the new search service from laravel-enso/filters; removed local logic

select

  • refactored traits, used the new When helper trait for a more fluent, conditional flow

tables

  • implemented the new search service from laravel-enso/filters; removed local logic

upgrade

  • fixed the structure migration
  • fixed the default role permission syncing
  • refactored native php function to collection for better readability

Upgrade steps

It was necessary to rename the app folders as with newer composer versions,
the tool would complain (show notices) about the namespace not being psr4 compliant.

If these notices were to be present when deploying, Envoyer would stop the deploy process.

However, since the namespaces remained the same, these changes should not affect you.

To upgrade:

  • run composer update in the project's root
  • run yarn, yarn upgrade && yarn to ensure you have the latest versions and patches are applied. If necessary, update your patches
  • update the Enso version to 3.9.1 in config/enso/config.php
  • if using the ExcelExport class locally, search & replace LaravelEnso\Excel\App\Exports\ExcelExport with LaravelEnso\Excel\App\Services\ExcelExport
  • if directly using import templates from any of the Enso packages, update the path to the JSON templates in config/enso/imports.php

v3.9.0

25 Mar 08:04
Compare
Choose a tag to compare

3.9.0

This release includes many improvements and new features, bugfixes as well as the upgrade to Laravel 7.*.

Since the Laravel upgrade contains some pontetially breaking changes, you should take a look at the official upgrade instructions to see if/how you're affected.

front-end

bulma

  • added components: TreeView, CheckboxManager, CheckboxItems, QuickView

calendar

  • fixed the event slot, due to the VueCal update
  • fixed an UI template issue when the selected option was not ready
  • added an update action when an event was modified via drag & drop due to the new VueCal feature
  • fixed display for long calendar names
  • refactored event update confirmation modal - now uses buttons instead of radio buttons

categories (new)

  • created package that handles product categories

checkbox (new)

  • created package with checkbox items & manager components - extracted from the roles package (role configurator)

clipboard

  • added clipboard support for passing an argument to the copy method - the argument represents the value that you want copied to the clipboard

commercial

  • small UI updates for the order lines
  • cleanup of unused injection in FormContent
  • implemented order lines reload when trying to add a line to an order with stale data

companies

  • added a new website attribute to the company model and as a result, a new column is visible and clickable in the index table
  • a corresponding upgrade was added to Enso (more information below)

discounts

  • small refactor of the package's pages, removing duplicated code

dropdown

  • updated dropdown item selector strategy

emag

  • updated form content & extracted logic into the EmagOrder component
  • added check for the presence of the emag order id value

filters

  • removed the deprecated SimpleDateFilter/ EnsoSimpleDateFilter components
  • refactored & improved date filter to handle more intervals

financials

  • improved payment type filtering logic, to work better with internationalization
  • improved client filter to work better when used together with local state loading

mixins

  • fixes throwing unkown errors
  • makes errorHandler more readable

permissions

  • permission type was extracted to a dynamic computed property and the db table's column was dropped
  • added mixin with the CSS class used for the different permission types

roles

  • Configure.vue now uses the new @enso-io/checkbox functionality which was extracted to a distinct package that roles now depends on

search-mode (new)

  • a new dependency package that permits switching between the different search modes (full, starts with, ends with)
  • this new package is now utilized by select, typeahead and tables

select

  • fixes the shouldDisableDropdown/dropdownDisabled computed property
  • improves the reload handling
  • added a searchLimit property, with the default value fo 10
  • added the new search mode functionality (hidden by default)

quick-view (new)

  • a new dependency package that contains the QuickView component, extracted from the accessories package
  • the quick view default width was updated (is a little larger)

tables

  • enhances support for highlighting rows
  • fixes tr :key attribute

themes

  • added an is-hoverable helper class

toastr

  • added a when method that allows fluent syntax while having conditionals

tree-view (new)

  • added new package for the TreeView component

typeahead

  • fixed the display of the 'no results' message visible when there are no results available
  • added ongoing request cancellation when multiple requests are made
  • added the new search mode functionality (hidden by default)

ui

  • fixed the shortNumber filter, so that it does not alter 0 as well negative numbers
  • fixed an edge case in Enum.js
  • removed the dashboard route and page from the ui package (were moved to the local project)
  • menus related components refactor (has_children attribute usage changed to hasChildren)
  • refactored toastr usage in Notifications.vue & fixed small bug when toaster level was not specified
  • adds support for redirect after login
  • fixes edge case where error was sometimes not thrown when using the the errorHandler
  • updated Sentry integration, the RAVEN_DSN key is no longer required

back-end

The type attribute has been deprecated for structure migrations - all the packages with such migrations have been updated and have had the attribute removed.

Also, dependencies were updated as required.

action logger

  • adds index on created_at column

avatars

  • adds avatar resource

calendar

  • refactors tests, adds validation for event destroy, updates validation for event, refactors frequency and sequence logic
  • adds formatting for reccurence end date for parent event
  • adds check for sequence break so it is no longer performed when not needed, if performing update on first event in the sequence
  • renames update type enum labels
  • fixes bugs

categories (new)

  • added new package that handles product categories

cli

  • removes deprecated permission Types from stubs

commercial

  • refactors inCents to decimal, small changes due to refactor
  • updates migrations
  • client stocks supplier is now optional
  • updates client stock import

companies

  • adds new website attribute (nullable)

core

  • updates for Laravel 7
  • removes jessengers/date
  • adds DB upgrade for permissions
  • adds enso-aggregator to composer.json
  • extracts upgrade logic in its own package
  • update due to JsonParser to JsonReader rename
  • adds companies upgrade command due to new website attribute
  • updates failed jobs id to bigIncrements
  • adds User & Grup resources
  • refactors AppState to return resources

countries

  • update due to JsonParser to JsonReader rename

data import

  • fixes edge case for cells that need trimming
  • fixes tests to work with the new UploadedFile
  • returns array from template show / store controllers
  • update due to JsonParser to JsonReader rename

discounts

  • decimal discounts refactor

files

  • adds a model helper to the facade
  • refactors deprecated getClientSize and getClientMimeType in Files.php

filters (new)

  • new package that can work in tandem with the front-end date filter component to generate date interval values for queries, graphs etc

forms

  • update due to JsonParser to JsonReader rename

financials

  • refactors inCents
  • modifies computors
  • fixes supplier payment factory
  • various small updates: updates suppplier payment validator, adds return types for methods, adds typed properties, updates factories, updates tests
  • reverted to explicit asserts

helpers

  • JsonParser was renamed to JsonReader
  • adds When helper trait

hr

  • refactors inCents

inventory

  • fixes manual transactions for persistent processes
  • refactors inCents

localisation

  • updates middleware to use Carbon instead of Jessengers\Date
  • update due to JsonParser to JsonReader rename
  • fixes typo in factory

menus

  • adds a Menu resource
  • updates tree builder to return collection

notifications

  • fixes test to fit the new Carbon serialization for models

people

  • adds person resource

permissions

  • small fixes
  • refactors type into computed property

products

  • refactors inCents to decimal
  • updates request validation by adding internal code unique rule

projects

  • removes Types from migration

rememberable

  • adds return null if id is null

roles

  • refactors permission tree to work with permission computed type
  • encapsulates config writing in model
  • adds a role resource

select

  • adds searchMode

services

  • refactors inCents to decimal

tables

  • fixes global button filtering
  • uses getCountForPagination to fix count for queries that use group
  • update due to JsonParser to JsonReader rename
  • adds datetime support
  • adds a dateTimeFormat config option

upgrade (new)

  • new package, contains upgrade logic for your local project

Upgrade steps

  • due to the upgrade to Laravel 7, there are quite a few small changes you have to do in your local project. Take a look at this commit and check the list of changes. You should ignore:
    • composer.lock
    • client/yarn.lock
    • .styleci.yaml
    • telescope and horizon assets (you will publish these in the next steps)
  • you may safely remove the RAVEN_DSN key from your .env* files as it's no longer required
  • update TelescopeServiceProvider using this as example
  • update the sentry config file using this as example
  • run composer update in the project's root
  • run php artisan horizon:install
  • run php artisan telescope:install
  • edit client/package.json and
    • update @enso-ui/ui to 2.5.x
    • update pusher-js to ^5.0.0
  • rename in your .env* files MAIL_DRIVER to MAIL_MAILER
  • run yarn, yarn upgrade && yarn to ensure you have the latest versions and patches are applied. If necessary, update your patches
  • update the Enso version to 3.9.0 in config/enso/config.php
  • run php artisan vendor:publish --tag=select-config" to publish the select.php` config
  • note that the type attribute present in structure migrations has be...
Read more

v3.8.2

26 Feb 07:07
Compare
Choose a tag to compare

3.8.2

The release includes much needed UI vue-select / dropdown refactor.

These changes are breaking when customizing/building upon the @enso-ui/select components.

front-end

Most of the packages received a dependency list cleanup.

bulma

  • added the dropdown item component

calendar

  • updates color select for the new vue-select / dropdown

clipboard (new)

  • a simple VueJS clipboard copy component

commercial

  • small adjustment in Order.vue

contracts

  • refactored ui imports

control-panel

  • added ubuntu icon import

data-import

  • refactored ui imports

datepicker

  • adds is-small boolean prop

directives

  • v-focus can now be active conditionally

dropdown

  • adds arrow keys support
  • updated selector strategy

emag

  • components refactor
  • loading flag enhancement

filters

  • fixes format/altFormat small bug
  • added input width for DateFilter

financials

  • added documents & comments to client payments

projects

  • refactored ui imports

select

  • removes keyboard handling (moved to dropdown)
  • updates the selection slot usage
  • adds click modifier for tag / deselect
  • improved tag handling
  • fixed several edge cases
  • adjusts search input size
  • fixed dropdown indicator
  • fixed tag delete button and label split when they did not fit the containing div

tables

  • refactored dropdown use
  • adjusted is-table-tag lateral padding

textarea (new)

  • textarea component that can be easily integrated within the form

themes

  • fixed small form-box overflow bug

typeahead

  • upgrades dropdown usage

ui

  • improves the main menu to handle indirect nested child pages
  • fixes a small typo related bug in the notifications page
  • upgrades dropdown usage
  • adds a margin between tags and options for the navbar search dropdown menu items

wysiwyg

  • removed premium plugins from the default configuration

back-end

avatars

  • fixed manual transaction for persistent processes

calendar

  • fixed factories

control-panel

  • improved token management

control-panel-api

  • refined memory extracting
  • updated operating system label
  • general refactor & improvements
  • fixed total memory reporting
  • refactored closures
  • fixes OS sensor value

currencies

  • improved seeder
  • fixed manual transaction for persistent processes

core

  • added index for created_at to action logs table
  • updated the upgrade command
  • added a protected indexExists($index, $table) helper in DatabaseUpgrade
  • fixed Authentication exception namespace

countries

  • refactored seeder to use JsonParser

data-import

  • added support for disabled imports (imports that are missing the template in imports.php config)
  • fixed manual transaction for persistent processes

forms

  • fixes test
  • fixes error reporting for missing attributes

helpers

  • enhanced JsonParser to support Collection & Obj
  • small refactor

how-to

  • fixed manual transaction for persistent processes

localisation

  • fixed manual transaction for persistent processes

measurement-units

  • fixed factory edge case issue

people

  • fixed the appellative helper
  • added dynamic methods dependencies in composer.json

products

  • fixes a validation error occurring when saving a product with suppliers but without a default supplier

roles

  • fixes visible role scope

select

  • refactors option list retrieval flow
  • ensures options are sorted alphabetically
  • improves the options list limit computation

services

  • the Service model is now Rememberable

tables

  • refactored leftover app namespaces to App
  • refactored remaining collect() usage to Collection
  • fixed stub publishing
  • updated ButtonTest.php
  • fixed Meta $filtered type from bool to int
  • fixed count cache key implementation
  • added new feature that supports Custom Cache Key for table counts
  • fixed bug resulted from refactoring affecting multi-selection filtering
  • removed unneeded name attribute from buttons
  • added support for json resources / resource collections on table properties
  • made rogue column exportable by default

versions

  • adds Version exception
  • small refactor in trait
  • fixed manual transaction for persistent processes

versioning

  • fixed manual transaction for persistent processes

Upgrade steps:

  • edit client/package.json and update all @enso-ui packages to their next respective minor version
"@enso-ui/accessories": "2.4.x",
"@enso-ui/bulma": "2.3.x",
"@enso-ui/calendar": "1.4.x",
"@enso-ui/filters": "1.4.x",
"@enso-ui/forms": "1.4.x",
"@enso-ui/mixins": "1.1.x",
"@enso-ui/tables": "1.4.x",
"@enso-ui/ui": "2.4.x"
  • run yarn, yarn upgrade && yarn to ensure you have the latest versions and patches are applied
  • run composer update in the project's root
  • update the version to 3.8.2 in config/enso/config.php
  • if you have front-end customisations to Dropdown / VueSelect / EnsoSelect / Typeahead / EnsoTypeahead ensure that they're functioning okay and make changes if necessary
  • if using rogue columns, unless you want those columns as exportable, mark each such column as notExportable in the table templates meta, since they're now exportable by default

v3.8.1

02 Feb 16:58
Compare
Choose a tag to compare

3.8.1

With this release, we have upgraded sass-loader to the latest version(8.0.3)

front-end

currencies

  • adds a Conversion.js service and a vuex store module
  • adds allowed prop to currencies
  • splits initialise in distinct actions for countries / currencies

divider

  • centers title and slightly adjusts horizontal position

forms

  • removed optional SelectField params attribute binding to field.meta.params
  • adds slot in form field

modal

  • adds ability to stack multiple modals w/o breaking close on esc

products

  • small cleanup

projects

  • adds projects status
  • upgrades deps

roles

  • extract hover to themes
  • adds class
  • revert

tables

  • adds clearSelected Helper
  • set pagesSelected to false directly
  • refactors action slots

teams

  • updated deps versions

themes

  • fixes syntax
  • move hover logic
  • refactor content-manager

tutorials

  • upgrades sass-loader

ui

  • adds an Avatar.vue component that works with the backend TrackWho resource
  • refactors users table to use the new avatar component
  • updated dependencies version

back-end

core

  • added migrations for morphable models namespaces
  • adds currencies permission in upgrade command
  • Spa and AppState flexibility #272
  • made AppState private methods protected.
  • Spa __invoke method will not instantiate with "new AppState" but with App::make
  • adds missing import
  • refactors Enso's Login event

countries

  • adds avoids deletion conflicts trait

currencies

  • fixes converter with default currency
  • adds check for same currencies in converter; adds exception if no rate is found
  • fix; needs refactor / rename
  • renames Converter to Conversion; adds an endpoint for making conversions; refactors validators location;
  • fixes typo in exchange rates table; adds an apiPrecision config option

data-export

  • adds a purge command
  • adds a retainFor config option

data-import

  • fixes validation/import logic
  • removed leftover/deprecated Validator methods

files

  • fixes forUser scope check

forms

  • adds option to customize label in form
  • added taggable to the list of supported meta params
  • removed params, pivotParams and customParams from the list of valid, optional meta attributes

helpers

  • fixes db seed progress bars
  • adds a DiskSize helper class for human readable values

image-transformer

  • removed leftover exceptions

localisation

  • removed leftover command
  • added new translation keys

migrator

  • removes leftover classes, improves structure migration rollback logic
  • fixes rollback when parent menu is null; small refactor
  • improves logic encapsulation
  • adds validation on rollback for permissions

products

  • improves syncSupplier method; improves validation

ro-addresses

  • fixes method signature in AddressForm

select

  • fixes bug when search is empty and the builder was making a comparison to %%

tables

  • removes unneeded name attribute from buttons
  • adds support for json resources on table properties
  • adds support for resource collection
  • adds comptesArrayColumns and computesModelColumns contracts
  • adds Resource computor
  • adds a strip template option that can receive an array of attributes that will be stripped from the response
  • refactors config to Config

track-who

  • fixes created by & updated by when no user is auth

Upgrade steps:

  • update sass-loader in client/packages.json from "sass-loader": "^6.0.0" to "sass-loader": "^8.0.0"
  • add bulma-extensions+2.2.2.patch from the current repo to your client/patches
  • update client/vue.config.js to compile the view locally instead of under the vendor folder
    filename: process.env.NODE_ENV === 'production'
        ? '../resources/views/index.blade.php'
        : './index.html',
  • update the default route in routes/web.php to
    Route::view('/{any}', 'index')->where('any', '.*');
  • add in .gitignore the local view (resources/views/index.blade.php)
  • since this version we went back on building the app for both legacy and modern browsers. To enable that you have to:
    • update the babel.config.js file to:
    module.exports = {
        presets: [
            '@vue/cli-plugin-babel/preset',
        ],
    };
    
    • add the --modern flag in client/package.json for the build script
    "build": "rm -rf ../public/{js,themes,themes-rtl,images} && vue-cli-service build --no-clean --modern",
    
  • run yarn upgrade && yarn in /client
  • run composer update in project root
  • update the version to 3.8.1 in config/enso/config.php

Note:

Besides what's mentioned above, you should go through these files in your project and align / adapt their content with the ones from the Enso repo:

  • client/package.json
  • client/vue.config.js
  • client/babel.config.js
  • .eslintrc.js and client/.eslintrc.js

v3.8.0

10 Jan 12:34
Compare
Choose a tag to compare

3.8.0

With this release, we have upgraded our back-end packages to require PHP7.4+. Consequently, we have made several changes to adapt our back-end code to the latest syntax such as:

  • refactoring to short closures
  • adding typed properties and method return types where necessary

Furthermore, we have also generally improved and refactored all of our packages in order for them to be consistent and more easily maintained. During this process we have aimed to:

  • normalize package namespaces ( renamed app to App )
  • replacing collect() helpers in favor of instantiating the Collection() object
  • drop redundant suffixes for job, exception and policy classes where necessary
  • refactor Exceptions to encapsulate error messages for consistency and reusability
  • split route files
  • add missing facade imports
  • use array syntax for service provider tag publishing
  • upgrade Enums to use the latest version
  • improve overall logic where possible

front-end

commercial

  • updates serialize-javascript from 1.9.1 to 2.1.1
  • renames quick-view-controls to controls
  • renames controls to actions
  • adds controls, row-actions and filters slots

contracts

  • adds icons
  • refactors Form, Index, BaseForm, Card and List components
  • adds ContractParties enum
  • updates dependencies
  • fixes bugs

departments

  • updates icon and dependencies

forms

  • routing to the edit page is now done asynchronously

hr

  • drops Projects component
  • updates dependencies
  • fixes style for payrolls Index page
  • renames splited to split
  • updates namespaces

projects

  • fixes bugs and namespaces

roles

  • updates permissions

tables

  • adds icon
  • improves custom slots handling
  • exposes slots for both row and global buttons
  • splits scopedSlots into actionSlots, controlSlots and bodySlots

ui

  • updates dependencies

back-end

addresses

  • renames setDefault permission to makeDefault

calendar

  • overall refactors and removes enso:calendar:send-reminders command from AppServiceProvider. This means that notifications will no longer be sent automatically.

cli

  • makes the code DRYer
  • reduces cyclomatic complexity
  • improves writers
  • extracts Cli trait in src/tests
  • overall logic improvement

companies

  • refactors company request validator's unique methods into a parameterised one

control-panel-api

  • reverts statistics refactor

contracts

  • reverts statistics refactor

core

  • refactors state builders and adds return types for their methods
    • data() changes to data(): array inside the local state builder
  • adds upgrade command for new roles structure
  • fixes user group conflict exception

data-import

  • adds a Finalize job
  • adds in config unknownError key for customizing undetermined errors in rejected summaries
  • makes the User available in custom validators via the user() helper
  • shows duration in imports table for both mysql and sqlite
  • fixes template validation message
  • removes deprecated splittingQueue from config
  • renames Policy to DataImport

discussions

  • adds DiscussionConflict exception
  • users DI in controllers
  • refactors validators

documents

  • adds DocumentConflict exception
  • the Policy class was renamed to Document

dynamic-methods

  • adds contract and services for better managing the creation and binding of methods and relations to models

emails

  • removes unused controller and routes ( Create )
  • removes superfluous service ( Mail Manager)
  • removes deprecated publish ( resources/js )

enums

  • renames attributes() in data() to be consistent with the property name
  • $data becomes typed (array $data)
  • adds return type for data() method ( data(): array )
  • adds laravel as dependency in composer.json

excel

  • adds ExcelExport exception

files

  • improves file validation

helpers

  • adds tests for InCents and MapsRequestKeys
  • improves logic in InCents, JsonParser, Obj, Decimals

forms

  • small refactor and logic improvement

helpers

  • improves logic in InCents, JsonParser, Obj, Decimals
  • adds test for InCents
  • optimize imports

how-to

  • renames VideoException to Video. It now extends ConflictHttpException

hr

  • renames splited to split

inventory (PRIVATE)

  • refactored dynamic methods to new style

localisation

  • refactors unique fields in request validator

menus

  • improves logic in Organizer and in TreeBuilder
  • adds a Menu exception that extends ConflictHttpException and encapsulates error messages

multitenancy

  • removed from core's dependencies ( becomes optional )
  • fixes enums constant visibility

notifications

  • refines broadcast service provider

people

  • adds an appellative() helper on Person

permissions

  • adds a Permission exception that extends ConflictHttpException and encapsulates error messages

products

  • changes cents strategy
  • refactors company relations using the new dynamic methods

roles

  • renames permissions
  • refactors controllers structure
  • extracts command logic to service

searchable

  • improves Finder.php

services

  • improves Finder.php

tables

  • adds new feature that supports Custom Cache Key for table counts
  • adds optional name and slot attributes for button template object

teams

  • removes unused trait from Team Model

Upgrade steps:

  • within composer.json update where necessary:
    • laravel-enso/calendar to 1.5.* ( if using this package )
    • laravel-enso/cli to 3.4.*
    • laravel-enso/cnp-validator to 1.3.* ( if using this package )
    • laravel-enso/control-panel-api to 2.4.*
    • laravel-enso/core to 4.7.*
    • laravel-enso/dynamic-methods to 1.1.* ( if using this package )
    • laravel-enso/enums to 1.2.* ( if using this package )
    • laravel-enso/excel to 1.1.*
    • laravel-enso/pdf to 1.1.*
    • laravel-enso/ro-addresses to 3.3.* ( if using this package )
    • laravel-enso/versions to 1.1.* ( if using this package )
  • update in client/package.json:
    • "@enso-ui/accessories": "2.3.x",
    • "@enso-ui/tables": "1.3.x",
    • "@enso-ui/ui": "2.3.x",
  • within client/src/js/enso.js update the import ('../sass/enso.scss'); line to import '../sass/enso.scss';
  • remove from composer.json the following line since it is no longer required:
    "LaravelEnso\\Cli\\tests\\": "vendor/laravel-enso/cli/tests/",
  • update your Enso classes imports ( search the whole project for \app\ and replace with \App\ )
  • if you are implementing our state builder interface or extending our local state builder, make sure to update your build() method signature ( build(): array)
  • upgrade Enums accordingly
    • rename attributes() method to data() where required
    • $data becomes a typed property ( array $data= [..] )
  • if using/extending the LaravelEnso\Documents\App\Policies\Policy class, update any imports to LaravelEnso\Documents\App\Policies\Document
  • if using/extending the use LaravelEnso\Files\App\Policies\FilePolicy class, update any imports to LaravelEnso\Documents\App\Policies\File
  • if using/extending the LaravelEnso\People\App\Http\Requests\ValidatePersonRequest class, note that the uidUnique() & emailUnique() methods have been replaced by the unique($attribute) method
  • add the following block inside your phpunit.xml file:
<testsuite name="helpers">
    <directory suffix="Test.php">./vendor/laravel-enso/helpers/tests/units</directory>
</testsuite>
  • if you wish to continue sending calendar reminders, you need to handle this in your apps App\Console\Kernel.php
protected function schedule(Schedule $schedule)
{
    ...
    $schedule->command('enso:calendar:send-reminders')->everyMinute();
    ...
}
  • remove from config/enso/imports.php the deprecated splittingQueue key,
  • run composer update
  • run yarn upgrade && yarn in /client
  • run php artisan enso:upgrade
  • run php artisan migrate
  • update telescope assets: php artisan telescope:publish
  • update the version to 3.8.0 in config/enso/config.php

(optional)

In order for the local project to be syntactically consistent with our ecosystem you should refactor as follows:

  • use typed properties where necessary
  • replace all collect() helpers with the Collection() facade
  • refactor closures to the new PHP7.4+ short closure syntax
  • split route files ( eg. https://github.com/laravel-enso/core/tree/master/src/routes )
  • if using phpinsights, don't forget to update the config file from config/insights.php ( https://github.com/laravel-enso/enso/blob/master/config/insights.php )
  • we have moved the local User::class from our Enso app under App\Models namespace. From now on, we have decided to keep the models in all of our projects under this namespace for better readability. If you wish to adopt this structure as well, don't forget to update your config\auth.php file.
'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => App\Models\User::class,
    ],
  • the local factories and seeders have been updated to use short closures as well. if you wish, you can force publish the updated versions ( careful, this will overwrite your local customisations ) with:

    • php artisan vendor:publish --force --tag=enso-factories
    • php artisan vendor:publish --force --tag=enso-seeders
  • if you wish to take advantage of the new tables feature which allows the use of custom cache keys for counts, your table builders must implement `...

Read more

v3.7.4

16 Dec 15:59
Compare
Choose a tag to compare

3.7.4

This release improves the quality of the back-end code addressing issues revealed by phpinsights (more info in the back-end section) as well as the usual small updates and fixes.

front-end

calendar

  • added support for the spanish language

forms

  • added in-page preview for PDF files
  • fixed small styling issues and updated dependencies
  • now emits a template-fetch-error when there is an error fetching the template from the API

products

  • added missing measurement-units package dependency

tables

  • added support for row global actions

backend-end

All packages were checked with the analitics tool and, where needed, the appropriate fixes and updates where implemented.

Most packages have had updates pertaining to:

  • missing constants visibility
  • unused variables
  • string concatenation vs string templates
  • using old school methods such as get_class in favor of using ::class
  • inconsistent array indentation
  • class fields and methods ordering
    and more.

In addition to the code, architecture and style changes, the route files have been broken down into smaller files to make management easier.

Apart from these updates, which are too many to list individually for each package, the packages below have had other additions.

cli

  • fixed the generated method name used in the table builder stub

core

  • added the missing doctype to the production tag, which fixes a TinyMCE issue
  • the User model deletion is now handled by the AvoidsDeletionConflicts trait

countries

  • added the country code to the model's resource

currencies

  • fixed the Currency resource
  • fixed the seeder for testing cases
  • improved the converter so as to use the most recent date as fallback if there is no rate available for a given day
  • laravel-enso/countries is now a dependency for the package
  • the short_name attribute was refactored into code

products

  • changed content type for the product part number form input from number to text

teams

  • the Team model now uses the AvoidsDeletionConflicts trait for the delete process
  • the Relations trait is utilized to be able to support dynamic methods

Upgrade steps

This is a non breaking upgrade:

  • run composer update
  • run yarn upgrade && yarn in /client
  • update the version to 3.7.4 in config/enso/config.php
  • if using the currencies package with a prior version to 1.4.0, also run php artisan enso:upgrade in order to update the short_name table column

v3.7.3

06 Dec 14:50
Compare
Choose a tag to compare

Laravel Enso's Changelog

3.7.3

This is the second to last release before upgrading Enso to PHP7.4.

front-end

bulma

  • made available the new InputFilter & EnsoInputFilter components
  • made available the new SimpleDateFilter & EnsoSimpleDateFilter components

calendar

  • updated EnsoCalendar's resizing strategy

departments (new)

  • a new package for managing departments

divider

  • updated dependencies to address a security vulnerability

erd

  • updated dependencies to address a security vulnerability

filters

  • added two new filter components: InputFilter & SimpleDateFilter as well as their Enso counterparts: EnsoInputFilter & EnsoSimpleDateFilter
  • fixed DateFilter's picker width
  • date-filter refactor

how-to

  • fixed the @enso-ui/uploader dependency restriction

measurement-units (new)

  • a new package for managing measurement units

money

  • updated dependencies to address a security vulnerability

people

  • fixed the missing user buttons from person edit/create forms

projects (new)

  • a new package for managing projects

tables

  • you can now clear the search and change search mode while loading

themes

  • updated deps to address mixin-deep security vulnerability
  • updated the vue-filter css so that the components can be customized with is-* mod classes

uploader

  • added the formatBytes.js helper
  • fixed the file size reporting sometimes causing an undesired limitation

back-end

core

  • added a enso:storage:reset command which can be ran after php artisan migrate:fresh to clear the storage (but before seeding)

countries

  • removed broken relationship
  • added currencyCode in the model's resource
  • this package is now a dependency of the new laravel-enso/measurement-units package

cli

  • added the TableCache trait to the generated model
  • fixed the request validator namespace
  • updated the resources folder to client/src/
  • updated the tests

departments (new)

  • a new package for managing a departments

forms

  • adds the ability to customize routeParams on edit
  • fixed several form template validation error messages

measurement-units

  • a new package for managing measurement units
  • this package is now a dependency of the laravel-enso/products package

localisation

  • added missing translation keys

ocr (new)

  • new package that can perform optical character recognition for pdf files
  • depends on the OCRmyPDF package - you should read its documentation for more information, requirements and limitations

products

  • extracted measurement unit functionality to a distinct package and updated related code
  • removed the measurement_unit column from Product and replaces it with measurement_unit_id
  • added the upgrade php artisan enso:products:upgrade console command which will migrate your products table and seed either a default Piece measurement unit or can use an optional Enum to seed the measurement units specified by the enum
  • added some missing meta attributes within the table template

select

  • fixed the typeahead trait causing issues when the request did non contain custom parameters
  • refactored the search strategy resulting in more concise code
  • fixed relation attribute search
  • updated the display of the selected options, showing them at the bottom of the option list (previously they were at the top) making it easier to set new options when in multi-select mode

services

  • refactored the paths and routes structure
  • updated the factory and the tests

tables

  • the exported file name is now translated
  • fixed the searching logic when having nested columns (relations) on the main model
  • refactored the search strategy resulting in more concise code

Upgrade steps

This is a non breaking upgrade:

  • run composer update
  • run yarn upgrade && yarn in /client
  • update the version to 3.7.3 in config/enso/config.php

If you are not using the products package, there is nothing else for you to do.

Otherwise, you should run the products package's upgrade command, considering the following:

  • the measurement units functionality was extracted to the measurement-units package and products now depends on it
  • measurement units were stored in the products table's measurement_units column, and the values were taken from the MeasurementUnits enum
  • that column is dropped and replaced with a measurment_unit_id column which points to the measurement_units table

If you did not customize the enum and were using the defaults, then you can simply run
php artisan enso:products:upgrade and the command will handle the necessary changes.

If you had customized/extended the enum, then you should provide the enum as a parameter to the upgrade command, in which case it will be used to seed the new measurment units:

php artisan enso:products:upgrade --enum=App\\Enums\\MyEnum

v3.7.2

20 Nov 16:05
Compare
Choose a tag to compare

Laravel Enso's Changelog

3.7.2

The main purpose of this release was to switch from using tiptap to using tinyMCE for our what-you-see-is-what-you-get editor VueJS component.

Through its dependency chain, after running yarn upgrade tiptap was breaking the build.

As a bonus, tinyMCE should be better supported and the VueJS wrapper components for it are slimmer and cleaner.

front-end

wysiwyg

  • drops tiptap in favour of tinyMCE (see more below)

forms

  • updates the wyisiwyg field for the new tinyMCE powered wyisiwyg component

calendar

  • reverts the resizing strategy

back-end

companies

  • within the static owner method the company model is resolved from the service container so that if you're extending & binding the package model to a local model, you will obtain the local instance

forms

  • adds support for tinyMCE customization within the form configuration and the json templates
  • fixes form params bug on create which caused the given parameter values to be ignored

localisation

  • updated a couple of translation keys and values

Upgrade steps

This is a non breaking upgrade:

  • run composer update
  • run yarn upgrade && yarn in /client
  • update the version to 3.7.2 in config/enso/config.php
  • update the config/enso/forms.php configuration file and add the new key:
|--------------------------------------------------------------------------
| TinyMCE Api Key
|--------------------------------------------------------------------------
| If you're using the wysiwyg field you need to get a free api key from 
| https://www.tiny.cloud/get-tiny/ first.
| 
*/

'tinyMCEApiKey' => env('TINY_MCE_API_KEY', null),

If you were not using the wysiwyg component, there is nothing else for you to do.

If you are using it, you will need to create an account on https://www.tiny.cloud/ ,
get an API key and add your application domains.

After obtaining your API key, add it to your .env file:

TINY_MCE_API_KEY=my-api-key

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).