Changelog - 7.0.0 Betas
7.0.0-beta.50 (24/07/2024)
Bug Fixes
[SDKF-62] common: Fixes in field-container / w-x/x classes;
[NO-ISSUE] components: grid Fix in grid-card actions
7.0.0-beta.44 (16/04/2024)
Bug Fixes
SDKF-36 - components: Fixed an issue related to column sorting with cache in the TreeTable.
7.0.0-beta.43 (10/04/2024)
Bug Fixes
[NO-ISSUE] - components: Fixed an issue that prevented row selection from working in the mobile layout of the Grid.
7.0.0-beta.41 (28/03/2024)
Features
SDKF-31 - components/view-template: New scroll buttons have been added to the Header. These buttons appear when the header buttons total width exceeds the available space. The scroll buttons can be customized using templates.
Additionally, a new directive
vsScrolland a new componentVsScrollButtonshas been introduced, which can be used in other components as well. The directive and component allow custom scroll buttons and supports both horizontal and vertical scrolling.
Usage Examples for VsScrollButtons:<vs-header mode="nav" [startScrollButtonTemplate]="scrollStartButton" [endScrollButtonTemplate]="scrollEndButton"> <div actions> <ng-template #scrollStartButton let-scrollElement="scrollElement" let-disabled="disableScrollToStartButton" let-startButtonClasses="startButtonClasses"> <vs-button [class]="startButtonClasses" [disabled]="disabled" (clickEvent)="scrollElement('start')"> Custom start </vs-button> </ng-template> <ng-container *ngFor="let item of items"> <vs-button model="icon" [icon]="item.icon" [label]="item.label"></vs-button> </ng-container> <ng-template #scrollEndButton let-scrollElement="scrollElement" let-disabled="disableScrollToEndButton" let-endButtonClasses="endButtonClasses"> <vs-button [class]="endButtonClasses" [disabled]="disabled" (clickEvent)="scrollElement('end')"> Custom end </vs-button> </ng-template> </div> </vs-header>
<div vsScroll [customScrollAmount]="100"> <vs-scroll-buttons> <ng-container *ngFor="let item of items"> <vs-button model="icon" [icon]="item.icon" [label]="item.label"></vs-button> </ng-container> </vs-scroll-buttons> </div> <div class="vertical-scroll-buttons" vsScroll> <vs-scroll-buttons scrollOrientation="vertical"> <ng-container *ngFor="let item of items"> <vs-button model="icon" [icon]="item.icon" [label]="item.label"></vs-button> </ng-container> </vs-scroll-buttons> </div>
[NO-ISSUE] - components: A new
Usage Example:InjectionTokenhas been added to control the visibility of ScrollButtons in the VsHeader component. ThisInjectionTokenaccepts abooleanvalue that determines whether the scroll buttons should appear. The default behavior is enabled, and to disable it, you can use the InjectionToken (VS_HEADER_SCROLL_BUTTONS).@NgModule({ providers: [ { provide: VS_HEADER_SCROLL_BUTTONS, useValue: false } ] })
Improvements
[NO-ISSUE] - components: Changes have been made to the LabelLink. New properties include
target, which allows specifying where to open the linked document andisExternalLinkFn, a function that determines if the link is external. External links will now open using the default browser behavior if specified as external.[NO-ISSUE] - components: Performance improvements have been made to the following components: VsFilter, VsAutocomplete and VsSearch.
Changes
[NO-ISSUE] - components: A change was made to the Grid Paginator, now it hides the first and last pagination icon when totalCountMode is disabled. To disable totalCountMode, return
0orundefinedin the gridOptions Get method of VsGrid.
Bug Fixes
[NO-ISSUE] - components: Performance corrections have been made to the TreeTable.
[NO-ISSUE] - components: Fixed issues with the Grid singleSelect selection behavior.
[NO-ISSUE] - components: A correction has been made to ensure the Grid paginator locks when the item count is less than the page size.
7.0.0-beta.39 (14/03/2024)
Improvements
Bug Fixes
[NO-ISSUE] - components: A correction has been made to the tabLabel color of the TabGroup when a tab is disabled.
7.0.0-beta.38 (03/03/2024)
Bug Fixes
SDKF-14 - components: A problem with the
rowClickwhen used in conjunction with getSelection in the Grid has been fixed and additional corrections were made to the selection behavior in Grid.
7.0.0-beta.36 (28/02/2024)
Changes
SDKF-14 - components: The
checkboxmode option has been removed from the selectionMode property of the Grid. Now, the Grid supports only two selection modes:multipleandsingle. This change simplifies the available selection options and adjusts some behaviors of the Grid in relation to row selection.Multiple Mode:
When the Grid is configured with
selectionMode = 'multiple', and only theselectmethod is implemented, rows can be selected by clicking either on the checkbox or on the entire row.If the
selectandonRowClick, orctrlClickmethods are implemented, checkboxes can only be selected through a direct click on the checkbox. Clicks on the row will invoke theonRowClickorctrlClickmethods, without marking the checkbox.To allow
onRowClickto also select the checkbox, a new property calledshouldToggleSelectionhas been added to the return ofonRowClick. To enable checkbox selection throughonRowClickinmultiplemode, simply return an object withshouldToggleSelection: true.
Single Mode:
In
singlemode, there are no checkboxes on the Grid rows. If only theselectmethod is implemented, it will be called when clicking on a row. IfonRowClickis also implemented, this method will be called upon clicking the row, preventing theselectmethod from being called .
With the removal of the
checkboxmode from theselectionModeproperty in the Grid, developers will need to make adjustments to migrate to the new selection options available. Here is a simplified guide to facilitate this transition:Update the selectionMode: Change the
selectionModeof your Grid fromcheckboxtomultiple. This aligns your grid’s configuration with the updated selection options.Avoid Implementing onRowClick: To maintain a selection behavior similar to the previous
checkboxmode, avoid implementing theonRowClickmethod.
After completing the migration, the behavior will be as follows:
Clicking directly on a checkbox will select the corresponding row.
Additionally, beyond direct checkbox clicks, clicking on any part of the row will also result in the selection of that row’s checkbox.
7.0.0-beta.32 (05/02/2024)
Bug Fixes
SDKF-24 - components: A problem with the checkboxes in VsTreeView was fixed that prevented the correct functioning of partial selections.
7.0.0-beta.31 (01/02/2024)
Features
[NO-ISSUE] - components: The configuration of the VsDatepicker can now be passed through the @Input
configproperty.SDKF-17 - components: The @Input
Usage Example:getChipColorproperty has been added to the VsAutocompleteChipsMinimalist component. This property accepts a function with the parameterskeyandvalue, returning astring. The function is used to define specific colors for the chips in VsAutocompleteChipsMinimalist.component.html
<vs-autocomplete-chips-minimalist [getChipColor]="getChipColor.bind(this)" ></vs-autocomplete-chips-minimalist>
component.tabs-view-template
private chipColors = { chip1: '#FFBC0A', chip2: '#D7263D', chip3: '#32DE8A', chip4: '#C200FB' }; public getChipColor(key: string): string { return this.chipColors[key]; }
SDKF-23 - components: A new eventEmitter called chipClickEvent has been added to VsAutocompleteChipsMinimalist. This eventEmitter can be used to capture the information of the chip after it is clicked on.
Usage Example:<vs-autocomplete-chips-minimalist controlName="autocompleteChips" placeholder="Example" [options]="autocompleteOptionsChips" [autocompleteGetInput]="autocompleteGetInputChips" [getChipColor]="getChipColor.bind(this)" (chipClickEvent)="onChipClick($event)" (selectionChangeEvent)="change($event)" (deletionChangeEvent)="delete($event)" ></vs-autocomplete-chips-minimalist>
SDKF-207 - components: Added the VsClickableInput Component, with this component it is possible to display the input value as a customizable template, chosen by the developer who is implementing the component. By clicking on the displayed text (developer’s template), the original input, which is contained within the component, is revealed, allowing for the value to be edited.
Properties:
dynamicInputChildTemplate: This property accepts a TemplateRef, allowing developers to define the actual input element that will be displayed and edited by the user.previewTemplate: Accepts a TemplateRef to define how the input’s current value is displayed before the user interacts with it.disabled: This property allows the VsClickableInput to be disabled.tabIndex: With a default value of -1, this property facilitates tab navigation within the component.[(isEditing)]: Added to allow two-way binding that controls the editing state of the VsClickableInput.avoidGlobalClick: This property enables the component to be activated only by a click in a specific location, defined by the developer.shouldShowPointerCursor: Accepts a boolean value and determines whether the displayed cursor should be of the pointer type or the standard cursor.
Supported Components:
VsAutocompleteSelect
VsSelect
VsInput
VsDatepicker
VsTextarea
VsAutocompleteChips
<vs-clickable-input [previewTemplate]="previewSelect" [clickableInputChildTemplate]="selectField" [avoidGlobalClick]="true"> <ng-template #previewSelect let-onClickableClick="onClick"> <div class="preview-template"> <vs-icon icon="mouse" (click)="onClickableClick()"></vs-icon> {{ selectValue }} </div> </ng-template> <ng-template #selectField> <vs-select formControlName="select" [options]="selectOptions"></vs-select> </ng-template> </vs-clickable-input>
Bug Fixes
[NO-ISSUE] - components: A problem in VsKanban was fixed that prevented the removal of a kanban-card if it was moved from one vs-kanban-list to another and its ID was equal to 0.
[NO-ISSUE] - common: A problem in VsCommandRunnerService was corrected that affected the behavior of the
logoutcommand in the Firefox browser. Before this fix, upon receiving alogoutcommand, the user was logged out as expected, but the command was not properly deleted. This led to undesirable behavior where, upon logging in again, the logout message was immediately displayed, and the user was logged out again, creating a continuous logout loop.SDKF-22 - common: A problem in VsCommandRunnerService related to handling pending logout commands has been fixed. Previously, if a pending logout command was received and a user attempted to re-login while the session was already active, the logout message would be displayed, forcing the user to log in again. This fix resolves the issue, ensuring that, when re-logging in with an active session, pending logout commands no longer affect the user’s session.
7.0.0-beta.30 (16/01/2024)
Features
SDKF-10 - components: The
disabledproperty of the VsGridCheckboxColumn now accepts a function that returns aboolean.SDKF-11 - components: The option
hideHeaderCheckboxhas been added to GridOptions. This new property accepts abooleanvalue and allows developers to remove the checkbox from the Grid header.SDKF-15 - components: Filters for the VsGrid have been added to the mobile layout.
SDKF-16 - components: A new property called
Usage Example:tooltiphas been added to VsGridCheckboxColumn. This property displays a specific text when the user hovers over the checkbox.new VsGridCheckboxColumn({ field: 'Example', headerName: 'Example', tooltip: 'Tooltip example' }),
[NO-ISSUE] - common: Now, it is possible to pass an HTML message to the header of the Notification message.
[NO-ISSUE] - components: Two new properties have been added to vsTabLabel:
order: This property determines the tab’s position in the list, allowing developers to specify the order in which the tab labels should appear within the VsTabGroup. The default value is 1, meaning that tabs will be arranged based on the provided order value.hidden: The hidden property is used to hide a specific label within the tab group.
<vs-tabs-view-template> <vs-tab-group endRouteBase="tab-group"> <div *vsTabLabel="{ title: 'tab.one.label', route: 'tab-one', order: 2 }"></div> <div *vsTabLabel="{ title: 'tab.two.label', route: 'tab-two', hidden: true}"></div> <div *vsTabLabel="{ title: 'tab.three.label', route: 'tab-three'}"></div> </vs-tab-group> </vs-tabs-view-template>
Improvements
SDKF-12 - components: An improvement has been implemented in VsKanban. Now, when dragging a kanban-card to the edge of the screen horizontally, the horizontal scroll is automatically triggered.
7.0.0-beta.29 (28/12/4)
Bug Fixes
[NO-ISSUE] - common: A correction has been made to address the issue of duplicate messages in the Notification upon reconnection.
[NO-ISSUE] - components: Some performance corrections were made in the VsIcon component.
7.0.0-beta.28 (08/12/2023)
Features
SDKF-209 - components: A new @Input property called
disableHeaderhas been added. This property accepts abooleanvalue that allows disabling the grid’s header. When the grid’s header is disabled, it means that all functionalities related to sorting and filters in the header section will not just be turned off, they will be completely removed.SDKF-214 - components: Added a new component called VsLabelLink. This component allows the creation of navigable links with additional features, such as custom styling and tooltips. The @Input properties include:
classes: Allows adding custom CSS classes to the link.tooltip: A text that will be displayed when hovering over the link.tooltipPosition: Sets the tooltip’s position relative to the link (above, below, left, right, before, after).label: The text of the link.color: Defines the color of the link text.navigationPath: The navigation path when clicking on the link.avoidNavigation: A function that returns a boolean to prevent navigation based on specific conditions.
Improvements
[NO-ISSUE] - components: Now in the VsGrid component, after executing the
clearAllFiltersmethod, the selection is also cleared.
7.0.0-beta.27 (06/11/2023)
Features
SDKF-200 - components: A new component named VsAutocompleteChipsMinimalist has been added. This component is a minimalist variation of the already existing VsAutocompleteChips. The VsAutocompleteChipsMinimalist offers a more simplified and clean interface, while maintaining the key functionalities of the original component.
Bug Fixes
SDKF-206 - components: A correction has been made to the keep-sort icon in VsGrid. Previously, in situations where two or more columns had
sorting.useFieldset with equal values, the keep-sort icon remained visible on all columns.
7.0.0-beta.26 (01/11/2023)
Features
SDKF-204 - components: A new @Input property named
useCurrentValueAsFilterhas been added to the VsAutocompletSelect component. This property, which accepts a boolean value, determines whether the current input value will be used to perform filtering in the autocomplete. The default value of this property is false, which means that by default, the current value is not used as a filter unless explicitly configured by the developer to do so.SDKF-205 - components: A new @Input property named
autoSelectTextOnFocushas been added to several form components. This property, which accepts a boolean value, is used to determine whether the text inside the input field will be automatically selected when the field receives focus. TheautoSelectTextOnFocusproperty has been added to the following components:VsAutocompleteSelect
VsDatepicker
VsDropdown
VsInput
VsTextarea.
VsTextEditable (In this component the property is called
autoSelectTextOnClick)
[NO-ISSUE] - components: Two new properties have been added to VsGridColumn, named
Usage Example:alignHeaderandalignCell. These properties allow for separate alignment of the column title and cell content. Previously, the alignment of both was controlled by thealignproperty, which has now been deprecated. The new propertiesalignHeaderandalignCellaccept the following positions:left,rightorcenter.this.gridOptions = new VsGridOptions(); this.gridOptions.columns = [ new VsGridSimpleColumn({ alignCell: 'left', alignHeader: 'right' }), ];
7.0.0-beta.25 (25/10/2023)
Features
SDKF-196 - components: A new @Input property has been added to the VsTabGroup component, named
fitHeaderToContent. This property allows the border (outline) of the title within the tab-group to automatically adjust to match the size of the title.SDKF-192 - components: Added VsTextEditable Component. This component allows for the direct editing of textual content within the user interface.
Usage Example:<vs-text-editable formControlName="title" [editableContent]="editableContent" placeholder="placeholder"> <h1> <span #editableContent></span> </h1> </vs-text-editable>
<vs-text-editable formControlName="title3" [editableContent]="editableContent3" [placeholder]="placeholderTemplate"> <h3> <span #editableContent3></span> </h3> </vs-text-editable> <ng-template #placeholderTemplate> <b>Placeholder </b><i>Template</i> </ng-template>
Bug Fixes
SDKF-195 - components: A problem with the VsTabGroup title has been fixed. Previously, when a value was not provided for the title, the title was incorrectly displayed as [Object object]. This update ensures that, in the absence of a specified title, the title field remains empty.
SDKF-196 - components: A correction has been made to the title size of the VsTabGroup component for cases where the title is an empty icon without text.
[NO-ISSUE] - components: A correction have been implemented in the alignment of title of the VsTabGroup component.
7.0.0-beta.24 (04/10/2023)
Features
SDKF-83 - components: Added a new selectionMode called multiple to the Grid. This selectionMode allows for simultaneous support of both row clicks and checkbox clicks within the Grid.
Along with the introduction of multiple selectionMode, a new method called
onRowClickhas been added. This method is triggered when a row is clicked while the selectionMode is set tomultiple. When the selectionMode issingle, theonRowClickmethod is also triggered, serving as a replacement for theselectmethod in this context.
Notesthis.gridOptions = new VsGridOptions(); this.gridOptions.selectionMode = 'multiple'; this.gridOptions.select = (i, data) => console.info(`select ${i}: ${data.commonName}`); this.gridOptions.onRowClick = (i, data) => console.info(`onRowClick: ${i}: ${data.commonName}`);
In
singleselectionMode, ifonRowClickis not implemented, theselectmethod will continue to function normally as the default behavior for row clicks.
Bug Fixes
SDKBACK-100 - components: A issue was fixed in the filter functionality that prevented it from working properly with decimal numbers. With this correction, the filter now accepts decimal numbers.
[NO-ISSUE] - common: Resolved an issue with the width behavior in .mat-form-field-infix when using the percentage width classes (
w-...).
Breaking Changes
SDKF-134 - theme: The OpenSans font is no longer included via CSS by default. It is now necessary to add the font directly to the index.html of their projects.
<head> <link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link href="https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,300;0,400;0,500;0,600;0,700;0,800;1,300;1,400;1,500;1,600;1,700;1,800&display=swap" rel="stylesheet"> </head>
7.0.0-beta.23 (02/10/2023)
Update Dependencies
SDKF-134 - Updated the @viasoft/datepicker package.
Dependency
Status
Version
@viasoft/datepicker
🔄 Updated
2.0.1The package
@fortawesome/fontawesome-prohas been replaced with@viasoft/fontawesome-pro.Dependency
Status
Version
@viasoft/fontawesome-pro
✅ Added
6.4.3@fortawesome/fontawesome-pro
❌ Removed
This requires updates in the angular.json file. Any reference to
@fortawesomeshould be updated to@viasoft.
Features
SDKF-124 - common: Sentry’s session replay feature has been added.
Implementing VsSentry's Session ReplayStart by importing the VsSentryIntegration module in your main application file.
import { VsSentryIntegration } from '@viasoft/common';
Make sure to include the
packageJsonwithin theVsAppCoreModule.forRootin yourapp.module.import { VsAppCoreModule } from '@viasoft/app-core'; import * as packageJson from 'path/to/package.json'; @NgModule({ imports: [ VsAppCoreModule.forRoot({ packageJson }) ] })
To initialize VsSentry’s session replay feature, invoke the sessionReplayInit method from VsSentryIntegration and pass the environment as an argument. (In the
6.6.0-beta.38version, a new parameter was added to this method).VsSentryIntegration.sessionReplayInit(environment);
[NO-ISSUE] - theme: New “width” classes have been added to define specific widths for elements, ranging from 1/1 to 16/16 of the parent container’s width.
How to use these width classes:Width Classes:
The classes follow the format w-x/y, where x represents the fraction of space you want the element to take up, and y stands for the whole.
Examples:w-1/12: Represents 1/12 of the parent container’s width.
w-10/12: Represents 10/12 (or 5/6) of the parent container’s width.
w-1/2: Represents half of the parent container’s width.
Responsive Classes:
Responsive classes are prefixed based on screen size:
xs: Applies to screens with max-width: 767.999px
sm: Applies to screens between min-width: 768px and max-width: 991.999px
md: Applies to screens between min-width: 992px and max-width: 1199.999px
lg: Applies to screens with min-width: 1200px
xs:w-3/4: On smaller screens (up to 767.999px), the element will take up three-quarters of the parent container’s width.
<div class="w-1/1"> <vs-input class="xs:w-3/4 sm:w-1/2"></vs-input> </div>
[NO-ISSUE] - theme: Two new utility classes have been introduced to enhance flexibility in styling and layout.
w-expand: allows an element to take up any available space by setting its flex value to auto.
w-shrink: resets the flex value to its initial state.
[NO-ISSUE] - common: VsSentryIntegration.sessionReplayInit method has been enhanced to accept an additional optional parameter:
Example:serviceUrlPrefix. This prefix is used for the sentryConfiguration call, forming a URL in the pattern{backendUrl}/{serviceUrlPrefix}/sentry/configuration.VsSentryIntegration.sessionReplayInit(environment, 'showcase');
SDKF-132 / SDKF-133 - components: VsFormLayoutDirective has been added. This directive allows for easy modification of form layouts. The available layouts are:
legacy,vertical, andhorizontal.The VsFormLayoutDirective has been integrated with the following form components:
VsAutocompleteSelect
VsDatepicker
VsInput
VsSearchInput
VsSelect
VsTextarea
To utilize the VsFormLayoutDirective, ensure that you have imported the VsFormModule from
@viasoft/componentsin the module of the component where the directive will be used.import { VsFormModule } from '@viasoft/components';
By applying the directive directly on a form or its parent element, you can change the layout for form components. If the directive is placed on a parent element, all form components within will inherit the specified layout.
Example:<form> <vs-input vsFormLayout="vertical"></vs-input> <vs-input vsFormLayout="horizontal"></vs-input> <vs-textarea vsFormLayout="legacy"></vs-textarea> </form> <form vsFormLayout="vertical"> <vs-input></vs-input> <vs-input></vs-input> <vs-textarea></vs-textarea> </form>
Additionally, you can set the default vsFormLayout for your application by including it within VsAppCoreModule.forRoot in your
app.module.import { VsAppCoreModule } from '@viasoft/app-core'; @NgModule({ imports: [ VsAppCoreModule.forRoot({ formLayout: 'vertical' }) ] })
[NO-ISSUE] - components: autocomplete-chips now supports the required attribute. When set, a visual indicator in the form of an asterisk (
*) is appended to the form label, signaling that it is a required field.[NO-ISSUE] - http: Added the ApiVersion header, required for the newer versions of Viasoft.Core.
SDKF-144 - theme: New classes have been introduced to vertically align the vs-checkbox with forms when the vsFormLayout is set to
vertical.vertical-form-align-center: Aligns the checkbox to the center of the form.vertical-form-align-top: Aligns the checkbox to the top of the form.vertical-form-align-bottom: Aligns the checkbox to the bottom of the form.
SDKF-137 - components: The condition of the grid now supports promises as return values.
SDKF-146 - components: headerActions have been introduced to the grid. These can be placed on the upper left or upper right side of the grid. The headerActions support the same attributes as the grid actions
Usage Example:Important Notethis.gridOptions = new VsGridOptions(); this.gridOptions.leftActions = [ { icon: 'check', callback() => {} } ] this.gridOptions.rightActions = [ { icon: 'check', callback() => {} } ]
If there’s a need to refresh the actions or headerActions dynamically, must be invoked the
refreshActionsmethod available in VsGridOptions. This method ensures that all actions reflect the most current state and attributes defined in the options.[NO-ISSUE] - components: headerActions have been introduced to the tree-table.
Usage Example:rightHeaderActions = [ { icon: 'check', callback: () => {} } ] leftHeaderActions = [ { icon: 'check', callback: () => {} } ]
Important Note<vs-tree-table [rightHeaderActions]="rightHeaderActions" [leftHeaderActions]="leftHeaderActions" > </vs-tree-table>
If there’s a need to refresh the actions or headerActions dynamically, must be invoked the
refreshActionsSubjectsubject available in tree-table. This subject ensures that all actions reflect the most current state and attributes defined in the options.<vs-tree-table [refreshActionsSubject]="refreshActionsSubject"></vs-tree-table>
public refreshActionsSubject = new Subject<void>(); private yourFunction() { this.refreshActionsSubject.next(); }
SDKF-159 - components: The advancedFilter of the Grid now accepts initial values.
Example:Important Notethis.gridOptions = new VsGridOptions(); this.gridOptions.defaultAdvancedFilter = { condition: 'and', rules: [ { field: 'name', operator: 'ends_with', type: 'string', value: 'Value from defaultAdvancedFilter' } ] };
When there is cached data available for the advancedFilter, the grid will prioritize and use the cached values over the initial values provided through defaultAdvancedFilter.
SDKF-166 / SDKF-167 - components: Added gridCardActionsTopTemplate and gridCardActionsBottomTemplate to the grid component. These new templates allow for the positioning of grid actions either at the top or the bottom of the grid-card in mobile layout.
Usage Example:Important Note<vs-grid [gridCardActionsTopTemplate]="gridCardActionsTopTemplate" [gridCardActionsBottomTemplate]="gridCardActionsBottomTemplate" > </vs-grid> <ng-template #gridCardActionsTopTemplate let-data="data"> your actions here... </ng-template> <ng-template #gridCardActionsBottomTemplate let-data="data"> your actions here... </ng-template>
When utilizing
gridCardActionsBottomTemplate, be aware that it will replace the default actions of the grid.SDKF-181 - theme: New classes have been introduced to vertically align the vs-checkbox with forms when the vsFormLayout is set to
horizontal.horizontal-form-align-center: Aligns the checkbox to the center of the form.horizontal-form-align-bottom: Aligns the checkbox to the bottom of the form.
SDKF-165 - components: Introduced headerActions for mobile layout in the grid component.
SDKF-165 - components: Introduced new attributes for the actions of the tree-table. The added attributes include
iconStyle,iconColor,iconBoxColor,disabled, andrefreshSubject. With these additions, the attributes for actions within the tree-table are now aligned with those of the grid’s actions.[NO-ISSUE] - components: The tooltip attribute for actions and headerActions in both grid and tree-table has been enhanced to accept a function returning a
string.
Bug Fixes
[NO-ISSUE] - components: Fixed issues related to the calculation of widths for actions of the grid.
SDKF-147 - components: Fixed an issue with detectChanges within forms, effectively resolving the “ExpressionChangedAfterItHasBeenChecked” error, that was occurring in some forms.
[NO-ISSUE] - components: Fixed the issue with the refresh for action conditions within the grid. With this correction, the conditions for actions are updated correctly.
[NO-ISSUE] - components: Added a correction ensuring that the disabled attribute on grid actions functions as expected. With this fix, the disabled state of actions is properly set based on the attribute value provided to each action.
SDKF-157 - common: Fixed a problem with translations that were not working correctly alongside route guards. This adjustment ensures that translations are applied correctly.
[NO-ISSUE] - components: Fixed an issue in the tree-table where resizing a column would break the width of the tree-table. This fix ensures that the tree-table maintains its width layout integrity during and after the column resizing.
[NO-ISSUE] - components: A correction has been applied to the color of the sorting label in the tree-table.
SDKF-188 - components: Fixed an issue in the tree-table where the filter functionality was not working properly when navigating between pages. This fix ensures correct filtering when browsing the different pages of the tree-table.
Changes
[NO-ISSUE] - common: The
@sentry/angular-ivyhas been added as a dependency to the@viasoft/common.SDKF-145 - components: Modified the color of the tab-group label to be more “highlighted”.
SDKF-163 - components: The vertical scroll within tree-table is now always visible (if necessary). No longer need to scroll horizontally to the right for the vertical scroll to appear.
SDKF-165 - components: Now, the grid header (
thead) remains fixed at the top of the screen during scrolling.
Breaking Changes
[NO-ISSUE] - components: The refreshActions method of the grid has been updated to accurately reflect the changes in actions / headerActions following any modifications. It is important to call this method whenever there are changes to actions or headerActions.
[NO-ISSUE] - components: The disabled method for both grid and tree-table has been updated. It now requires a function that returns a boolean value.
Important NoteIf there is a need to dynamically refresh the
disabled,actions, orheaderActionsin these components, different approaches should be used for tree-table and grid:For tree-table: Invoke the
refreshActionsSubjectsubject.<vs-tree-table [refreshActionsSubject]="refreshActionsSubject"></vs-tree-table>
public refreshActionsSubject = new Subject<void>(); private yourFunction() { this.refreshActionsSubject.next(); }
For grid: Call the
refreshActionsmethod available in VsGridOptions.
Both will ensure that all actions reflect the most current state and attributes defined in the options.
SDKF-165 - components: The
Updates to VsTableAction:VsGridActionclass has been deprecated. Users are advised to use theVsTableActionclass as a replacement. The new class provides similar functionalities and is set to be the standard going forward.tooltip can now accept either a function returning a
stringor a staticstring.condition can now accept either a function returning a
Promise<boolean>or aboolean.disabled can now accept either a function returning a
booleanor a staticboolean.
7.0.0-beta.14 (22/06/2023)
Features
[NO-ISSUE] - components: VsFormValidatorService.validateForm now has modalTitle / modalErrorTemplate / modalActions.
Bug Fixes
[NO-ISSUE] - components: quick-filter now correctly disallow go to next page if user is already in the last page.
[NO-ISSUE] - components: grid filter is removed from DOM correctly when you press “Esc” in a select-modal
Changes
[NO-ISSUE] - common: “Updating License” modal now is hidden by default, but you can set it to show up using VsAppCoreModule.forRoot.showUpdateLicenseModal / VsCommonModule.forRoot.showUpdateLicenseModal.
7.0.0-beta.13 (21/06/2023)
Features
NCD-215 - components: parcel-renderer added, allowing to use single-spa parcels in a simple way.
7.0.0-beta.8 (09/06/2023)
Features
PROP-1305 - components: VsFormValidatorService / vsFormPath directive added, so developers can easily show an error modal for the form, allowing users to navigate to each error field.
7.0.0-beta.6 (07/06/2023)
Breaking Changes
[NO-ISSUE] - components: button In nav-mode tooltip prop was having the label functionality. Now label always behaviours like label and tooltip always behaviours like tooltip. - So if you want the previous behavior, you should replace from tooltip to label wherever button is in nav-mode (inside of sidenav-view-template / tabs-view-template components)
[NO-ISSUE] - common: authorizationStorageService.userPermissionsAfterLogin was replaced to authorizationStorageService.refreshPermissions.
Features
[NO-ISSUE] - components: button navMode property now is public, so you can easily choose whether or not you want the button to behavior as navMode.
[NO-ISSUE] - common: authorizationService.refreshPermissions added.
7.0.0-beta.5 (02/06/2023)
Breaking Changes
SDKF-49 - components: grid GetSelection type changed and now has cache, rather than being called by Angular is now called internally.
7.0.0-beta.4 (27/05/2023)
Bug Fixes
[NO-ISSUE] - common: Minor fix in VsMessageService.
7.0.0-beta.2 (31/03/2023)
Breaking Changes
SDKF-32 - components: vs-button now has the optional
autofocusproperty, and the default autofocus has been removed. This way, issues related to autofocus control can be avoided with greater flexibility, allowing developers to configure theautofocusbehavior as needed.
<vs-button [autofocus]="true"></vs-button>
7.0.0-beta.1 (16/01/2023)
This release is focused around updating to Angular 14. It is crucial that you follow these steps in this exact order when updating your apps and libraries.
Before Updating
After each “dependency update” step, you might need to delete your
node_modulesfolder andpackage-lock.jsonfile and runnpm iagain.
Follow these steps to migrate to Angular 14
When entering the link, check the option “I use Angular Material”
Update Dependencies
These are the final dependency tables, go through each dependency and perform the necessary changes.
Dependency |
Status |
Version |
Documentation |
|---|---|---|---|
@angular/animations |
🔄 Updated |
|
|
@angular/cdk |
🔄 Updated |
|
|
@angular/common |
🔄 Updated |
|
|
@angular/compiler |
🔄 Updated |
|
|
@angular/core |
🔄 Updated |
|
|
@angular/forms |
🔄 Updated |
|
|
@angular/material |
🔄 Updated |
|
|
@angular/platform-browser |
🔄 Updated |
|
|
@angular/platform-browser-dynamic |
🔄 Updated |
|
|
@angular/router |
🔄 Updated |
|
|
@fortawesome/fontawesome-pro |
🔄 Updated |
|
|
@microsoft/signalr |
🔄 Updated |
|
|
@ngx-translate/core |
🔄 Updated |
|
|
@sentry/browser |
🔄 Updated |
|
|
@viasoft/datepicker |
🔄 Updated |
|
|
angular-imask |
🔄 Updated |
|
|
angular-oauth2-oidc |
🔄 Updated |
|
|
core-js |
🔄 Updated |
|
|
dateformat |
🔄 Updated |
|
|
dompurify |
🔄 Updated |
|
|
imask |
🔄 Updated |
|
|
primeicons |
🔄 Updated |
|
|
primeng |
🔄 Updated |
|
|
prompts |
🔄 Updated |
|
|
rxjs |
🔄 Updated |
|
|
tslib |
🔄 Updated |
|
|
ua-parser-js |
🔄 Updated |
|
|
zone.js |
🔄 Updated |
|
Dev dependency |
Status |
Version |
Documentation |
|---|---|---|---|
4tw/cypress-drag-drop |
🔄 Updated |
|
|
@angular-devkit/build-angular |
🔄 Updated |
|
|
@angular/cli |
🔄 Updated |
|
|
@angular/compiler-cli |
🔄 Updated |
|
|
@angular/language-service |
🔄 Updated |
|
|
@types/jasmine |
🔄 Updated |
|
|
@types/node |
🔄 Updated |
|
|
@viasoft/testing |
🔄 Updated |
|
|
cypress |
🔄 Updated |
|
|
eslint-config-airbnb-base |
🔄 Updated |
|
|
eslint-import-resolver-typescript |
🔄 Updated |
|
|
eslint-plugin-import |
🔄 Updated |
|
|
jasmine-core |
🔄 Updated |
|
|
jasmine-spec-reporter |
🔄 Updated |
|
|
karma |
🔄 Updated |
|
|
karma-chrome-launcher |
🔄 Updated |
|
|
karma-coverage-istanbul-reporter |
🔄 Updated |
|
|
karma-jasmine |
🔄 Updated |
|
|
karma-jasmine-html-reporter |
🔄 Updated |
|
|
ng-packagr |
🔄 Updated |
|
|
prettier |
🔄 Updated |
|
|
shelljs |
🔄 Updated |
|
|
stylelint |
🔄 Updated |
|
|
stylelint-config-prettier |
🔄 Updated |
|
|
stylelint-config-standard |
🔄 Updated |
|
|
stylelint-scss |
🔄 Updated |
|
|
ts-node |
🔄 Updated |
|
|
tsickle |
🔄 Updated |
|
|
typescript |
🔄 Updated |
|
|
yargs |
🔄 Updated |
|
Breaking Changes from Libraries
Angular/Material12.0.0 → 13.0.0
Renamed the directive that automatically resizes a text area to fit the content.
[matTextareaAutosize]=""
[cdkTextareaAutosize]=""
The use of
~to import SCSS files from node_modules is deprecated.
@use '~@angular/material'
@use '@angular/material'
Changed the import path of palette.
@use '@angular/material/core/theming/palette' as palette
@use '@angular/material/theming' as palette;
1.0.0 → 2.0.0
Updated to Angular 14
Moved Dayjs to be a peer dependency.
Replace deprecated Moment with Dayjs
Locale was removed from the library configuration, changing the locale should be done outside the component.
Some formats might also have changed due to the way Dayjs is implemented.
Replace internal position resolving with Angular material cdk library.
This removal will drop the
attachTooption from the library configuration. If you’re using this option, you’ll need to update your code to no longer use it.You will also need to add the cdk styles to your project. You can do so by adding
@import '@angular/cdk/overlay-prebuilt.css';to your global styles or by adding it to the styles attribute in your angular.json file.
6.1.0 → 6.4.3
When clearing an input with the mark type
phone, the input will be completely empty. Before the update, when clearing it, there was “(”.
6.6.0 → 7.0.0
The
nextmethod expects an argument of the type specified by the generic type of theSubjectorBehaviorSubjectclass. This generic type specifies the type of value that will be sent to the observers when the ‘next’ method is called.
public subject1 = new Subject();
private subject2 = new Subject();
public subject1 = new Subject<string | void>();
private subject2 = new Subject<{ event?: any, hideLoading?: boolean } | void>();
9.6.1 → 12.2.0
After updating cypress, run the command
npx cypress openand follow the instructions provided by Cypress to complete the migration.
13.6.1 → 14.0.0
Stylelint no longer includes the syntaxes that:
Parse CSS-like languages like SCSS, Sass, Less and SugarSS.
Extract styles from HTML, Markdown and CSS-in-JS object & template literals
First, install the shared config as a devDependency:
npm install --save-dev stylelint-config-standard-scss. Then, update yourstylelintrc.jsonconfiguration to use it:
stylelintrc.json
"extends": [
"stylelint-config-standard",
"stylelint-config-prettier"
]
stylelintrc.json
"extends": [
"stylelint-config-standard",
"stylelint-config-prettier",
"stylelint-config-standard-scss"
]
Breaking Changes
TSLint has been deprecated in favor of ESLint. A migration from TSLint to ESLint will be required. Go to “Migrating an Angular CLI project from Codelyzer and TSLint” and follow the steps to perform the migration.
Now it is necessary to create a new
.jsonfile in the app’s root directory to pass the cypress settings to @viasoft/testing.After upgrading cypress to version 10.0.0 the cypress configuration file format changed from
.jsonto.tsbeing now necessary a new.jsonfile with the cypress settings to be passed to @viasoft/testing.
{
"viewportHeight": 720,
"viewportWidth": 1050,
"video": false,
"retries": 1,
"e2e": {
"baseUrl": "http://host.docker.internal:4200/showcase"
}
}
import { defineConfig } from 'cypress'
import cypressConfig from './cypress-config.json'
const setupNodeEvents = (on, config) => {
return require('./cypress/plugins/index.js')(on, config)
}
export default defineConfig({
...cypressConfig,
e2e: {
setupNodeEvents,
...cypressConfig.e2e
}
})
To import the cypress-config.json file, it is necessary to add some settings in the tsconfig.json file.
"compilerOptions": {
"esModuleInterop": true,
"resolveJsonModule": true,
}
Changed icon style of quote-left from
lighttosolid. The style change was necessary as there was a big change in the appearance of the icon after updating@fortawesome/fontawesome-proto version 6.Paths that were passed as an empty string and redirected to other string paths have been removed.
const routes: Routes = [
{ path: 'basic', component: CheckboxBasicComponent },
{ path: 'form', component: CheckboxFormComponent },
{ path: '', redirectTo: 'basic' },
{ path: '**', redirectTo: 'basic' }
];
const routes: Routes = [
{ path: 'basic', component: CheckboxBasicComponent },
{ path: 'form', component: CheckboxFormComponent },
{ path: '**', redirectTo: 'basic' }
];