Skip to content

12.0.0-rc.0

Pre-release
Pre-release

Choose a tag to compare

@zdrawku zdrawku released this 13 May 11:20
· 417 commits to 12.0.x since this release

12.0.0

General

  • IgxGrid, IgxTreeGrid, IgxHierarchicalGrid
    • Breaking Change - The locale and pipeArgs parameters are removed from the operate method exposed by the IgxNumberSummaryOperand, IgxDateSummaryOperand, IgxCurrencySummaryOperand and IgxPercentSummaryOperand. They are now set in the igx-grid-summary-cell template. To change the locale and format setting of the igx-grid-summary-cell the user can use the new summaryFormatter property of the IgxColumnComponent.
    • Breaking Change - IgxGrid, IgxTreeGrid, IgxHierarchicalGrid events are renamed as follows:
      • onCellClick -> cellClick
      • onScroll -> gridScroll
      • onSelection -> selected
      • onRowSelectionChange -> rowSelected
      • onColumnSelectionChange -> columnSelected
      • onColumnPinning -> columnPin
      • onColumnInit -> columnInit
      • onSortingDone -> sortingDone
      • onFilteringDone -> filteringDone
      • onPagingDone -> pagingDone
      • onRowAdded -> rowAdded
      • onRowDeleted -> rowDeleted
      • onColumnResized -> columnResized
      • onContextMenu -> contextMenu
      • onDoubleClick -> doubleClick
      • onColumnVisibilityChanged -> columnVisibilityChanged
      • onColumnMovingStart -> columnMovingStart
      • onColumnMoving -> columnMoving
      • onColumnMovingEnd -> columnMovingEnd
      • onGridKeydown -> gridKeydown
      • onRowDragStart -> rowDragStart
      • onRowDragEnd -> rowDragEnd
      • onGridCopy -> gridCopy
      • onRowToggle -> rowToggle
      • onRowPinning -> rowPinning
      • onToolbarExporting -> toolbarExporting
      • onRangeSelection -> rangeSelected
    • IgxGridRowComponent, IgxGridGroupByRowComponent, IgxTreeGridRowComponent, IgxHierarchicalRowComponent are no longer exposed in the public API. Automatic migration will change these imports with RowType.
    • The IgxColumn data type DataType is renamed to GridColumnDataType.
    • Behavioral changes
    • getRowByIndex, getRowByKey, cell.row now return an object implemening the RowType interface.
    • dragData emitted with IRowDragEndEventArgs, IRowDragStartEventArgs is now RowType
    • IRowDragEndEventArgs, IRowDragStartEventArgs now emit dragElement, which holds the dragged row html element.
    • row in IPinRowEventArgs is now RowType
  • IgxTabs, IgxBottomNav
    • Breaking Change - IgxTabs and IgxBottomNav components were completely refactored in order to provide more flexible and descriptive way to define tab headers and contents. Please make sure to update via ng update in order to migrate the existing igx-tabs and igx-bottom-nav definitions to the new ones.
  • IgxForOfDirective
    • Breaking Change - IgxForOfDirective events are renamed as follows:
      • onChunkLoad -> chunkLoad
      • onScrollbarVisibilityChanged -> scrollbarVisibilityChanged
      • onContentSizeChange -> contentSizeChange
      • onDataChanged -> dataChanged
      • onBeforeViewDestroyed -> beforeViewDestroyed
      • onChunkPreload -> chunkPreload
      • onDataChanging -> dataChanging
  • IgxColumnComponent
    • Breaking Change - The onColumnChange output is renamed to columnChange.
  • Breaking Change - IgxHierarchicalGrid and igxRowIsland events are renamed as follows:
    • onGridCreated -> gridCreated
    • onGridInitialized -> gridInitialized
    • onDataPreLoad -> dataPreLoad
  • IgxInputGroupComponent
    • Breaking Change - disabled property removed. Use the underlying IgxInputDirective.disabled to control the disabled state of the input group. Please make sure to update via ng update to migrate an usage of disabled in your template files. Please make sure to check out the update guide.
  • IgxDateTimeEditor
    • Breaking Change - onValueChange event is renamed to valueChange.
    • Breaking Change - isSpinLoop property is renamed to spinLoop.
  • IgxDatePicker
    • Breaking Change - onSelection event is renamed to valueChange.
    • Breaking Change - new way to define custom elements in the igx-date-picker while the following properties are deleted or deprecated: context, labelInternal, template.
          <igx-date-picker #datePicker [(value)]="date" [displayFormat]="'longDate'" [inputFormat]="'dd/MM/yyyy'">
              <label igxLabel>Date: </label>
              <igx-picker-toggle igxPrefix>
                  calendar_view_day
              </igx-picker-toggle>
              <igx-picker-clear igxSuffix>
                  delete
              </igx-picker-clear>
          </igx-date-picker>
    • Breaking Change - mode and format are replaced by inputFormat.
    • Breaking Change - placeholder defaults to the inputFormat
    • Breaking Change - editorTabIndex is renamed to tabIndex.
    • Breaking Change - monthsViewNumber is renamed to displayMonthsCount.
    • Breaking Change - vertical is renamed to headerOrientation.
    • Breaking Change - displayData is renamed to displayFormat.
    • Breaking Change - dropDownOverlaySettings and modalOverlaySettings are replaced by overlaySettings.
    • Breaking Change - onValidationFailed event is renamed to validationFailed.
    • Breaking Change - onDisabledDate event is removed.
    • Breaking Change - onOpening, onOpened, onClosing and onClosed events are renamed respectively to opening, opened, closing and closed.
    • Breaking Change - igxDatePickerActions is renamed to igxPickerActions
    • Behavioral Change - Upon opening, the focused date will always be the selected/bound date. If there is no selected/bound date, the date picker will focus today's date. If minValue and/or maxValue are applied and today's date (or the bound date) is outside of the specified range, the focused date will be respectively minValue or maxValue.
  • IgxTimePicker
    • Breaking Change - value type could be Date or string.
    • Breaking Change - onValueChanged event is renamed to valueChange.
    • Breaking Change - new way to define custom elements in the igx-time-picker while the following properties are deleted or deprecated: context, promptChar, displayTime, template.
          <igx-time-picker #timePicker [(value)]="time" [displayFormat]="'mediumTime'" [inputFormat]="hh:mm:ss">
              <label igxLabel>Time: </label>
              <igx-picker-toggle igxPrefix>
                  alarm
              </igx-picker-toggle>
              <igx-picker-clear igxSuffix>
                  delete
              </igx-picker-clear>
          </igx-time-picker>
    • Breaking Change - format is replaced by inputFormat.
    • Breaking Change - placeholder defaults to the inputFormat
    • Breaking Change - isSpinLoop property is renamed to spinLoop.
    • Breaking Change - vertical is renamed to headerOrientation.
    • Breaking Change - onOpening, onOpened, onClosing and onClosed events are renamed respectively to opening, opened, closing and closed.
    • Breaking Change - onValidationFailed event is renamed to validationFailed.
    • Behavioral Change - The dropdown/dialog displays time portions within minValue and maxValue range if set or time between 00:00 and 24:00 in the provided inputFormat. The displayed values for each time portion are calculated based on the items delta always starting from zero. If the minValue or maxValue does not match the items delta, the displayed values will start/end from the next/last possible value that matches the delta. Upon opening, the selected time will be the bound value. In cases when there is not a bound value, it is outside the min/max range or does not match the items delta, the selected time will be the closest possible time that matches the items delta.
  • IgxDateRangePicker
    • Breaking Change - rangeSelected event is renamed to valueChange.
    • Breaking Change - onOpening, onOpened, onClosing and onClosed events are renamed respectively to opening, opened, closing and closed.
    • Breaking Change - monthsViewNumber is renamed to displayMonthsCount.
  • IgxSliderComponent
    • Breaking Change - The following outputs are renamed:
      • onValueChange to valueChange
      • onValueChanged to dragFinished
  • IgxCircularProgressBarComponent
    • Breaking Change - The following outputs are renamed:
      • onProgressChanged to progressChanged
  • IgxLinearProgressBarComponent
    • Breaking Change - The following outputs are renamed:
      • onProgressChanged to progressChanged
  • IgxToast
    • Breaking Change - The following deprecated methods and outputs have been removed
      • Outputs showing, shown, hiding, hidden. Use onOpening, onOpened, onClosing, onClosed instead.
      • Methods show, hide. Use open, close instead.
  • IgxSnackbar
    • Breaking Change - The following deprecated methods have been removed
      • show, hide. Use open, close instead.

New Features

  • Added IgxTree component

    • Allows users to render hierarchical data in an easy-to-navigate way. The control is not data bound and takes a declarative approach, giving users more control over what is being rendered.
    • Features API for handling selection (bi-state and cascading), node activation, node expansion state.
    • Features extensive and easy-to-use keyboard navigation, fully compliant with W3 standards.
    • Code example for a tree contructured from a hierarchical data set:
        <igx-tree>
            <igx-tree-node *ngFor="let node of data" [data]="node" [expanded]="isNodeExpanded(node)" [selected]="isNodeSelected(node)">
                {{ node.text }}
                <img [src]="node.image" alt="node.imageAlt" />
                <igx-tree-node *ngFor="let child of node.children" [data]="child" [expanded]="isNodeExpanded(child)" [selected]="isNodeSelected(child)">
                    {{ child.text }}
                    <igx-tree-node *ngFor="let leafChild of child.children" [data]="leafChild" [expanded]="isNodeExpanded(leafChild)" [selected]="isNodeSelected(leafChild)">
                        <a igxTreeNodeLink href="{{leafChild.location}}" target="_blank">{{ leafChild.text }}</a>
                    </igx-tree-node>
                </igx-tree-node>
            </igx-tree-node>
        </igx-tree>
  • IgxHierarchicalGrid

    • Added support for exporting hierarchical data.
  • IgxForOf, IgxGrid, IgxTreeGrid, IgxHierarchicalGrid

    • Behavioral Change - Virtual containers now scroll smoothly when using the mouse wheel(s) to scroll them horizontally or vertically. This behavior more closely resembles the scrolling behavior of non-virtualized containers in most modern browsers.
  • IgxGrid, IgxTreeGrid, IgxHierarchicalGrid

    • The IgxRowAddTextDirective allows to customize the text of the row adding overlay.

           <igx-grid [rowEditable]="true">
              <ng-template igxRowAddText>
                  Adding Row
              </ng-template>
          </igx-grid>
    • A new summaryFormatter input property is exposed by the IgxColumnComponent, which is used to format the displayed summary values for the columns.

          public dateSummaryFormat(summary: IgxSummaryResult, summaryOperand: IgxSummaryOperand): string {
              const result = summary.summaryResult;
              if(summaryOperand instanceof IgxDateSummaryOperand && summary.key !== 'count'
                  && result !== null && result !== undefined) {
                  const pipe = new DatePipe('en-US');
                  return pipe.transform(result,'MMM YYYY');
              }
              return result;
          }
          <igx-column field="OrderDate" header="Order Date" [sortable]="true" [disableHiding]="true" [dataType]="'date'" [hasSummary]="true"
              [summaryFormatter]="dateSummaryFormat">
          </igx-column>
    • Two new column types are introduced dateTime and time. In order to operate with them is necessary to set the column property dataType to 'dateTime' or 'time'.

      <igx-column field="OrderDate" header="Order Date"  [dataType]="'dateTime'" >
      </igx-column>
      <igx-column field="ClosingTime" header="Closing time"  [dataType]="'time'" >
      </igx-column>
    • Behavioral Change - Column Autosize feature now does not handle templated headers where the first level children are sized based on parent like default div and etc. Autosizing for such headers will not result in change.

    • Behavioral Change - Calling autosize through the IgxColumnComponent API now takes into consideration the minWidth and maxWidth of the column.

    • A new IgxColumnComponent input property is exposed called autosizeHeader, which if false, allows the autosizing to ignore the header cell and autosize only based on content cells.

  • IgxTabs

    • The tabAlignment property of the IgxTabs component replaces the type property and enables you to set the tab alignment to start, center, end and justify.
    • The igx-tab-header supports igx-prefix and igx-suffix directives in its ng-content.
  • IgxBottomNav

    • The IgxBottomNav component exposes disableAnimations property which determines whether the contents should animate when switching the selected item. The property is set to true by default which means that the animations are disabled.
  • IgxOverlayService

    • detach and detachAll methods are added to IgxOverlayService. Calling detach will remove all the elements generated for the related overlay, as well as clean up all related resources. Calling detachAll will remove all elements generated by any call to IgxOverlay attach, and will clean up all related resources. Note: calling hide or hideAll will not clean generated by the service elements and will not clean up related resources.
  • IgxCombo

    • Any changes to IComboItemAdditionEvent.addedItem will be reflected in the item added to the data.
    • IgxComboComponent.onAddition is now cancelable. You can prevent the item from being added by setting the event args cancel property to true.
    public handleComboItemAddition(event: IComboItemAdditionEvent): void {
        if (event.addedItem[this.combo.valueKey] === 'ForbiddenValue') {
            event.cancel = true;
        } else if (event.addedItem[this.combo.valueKey] === 'Change Me') {
            const index = this.iter++;
            event.addedItem = {
                [this.combo.valueKey]: `customId${index}`,
                [this.combo.displayKey]: `New item ${index}`;
            }
        }
    }
  • IgxDateTimeEditor

    • value accepts ISO 8601 string format.
    • spinDelta input property which allows a user to provide different delta values that will be used for spinning. All parts default to 1.
    • increment and decrement methods now accept an optional delta parameter which targets the currently spun date portion. It takes precedence over the values set in spinDelta.
  • IgxDatePicker

    • value accepts ISO 8601 string format.
    • The actions template now exposes the Calendar component as implicit context:
      <igx-date-picker>
        <ng-template igxPickerActions let-calendar>
            <button igxButton="flat" (click)="calendar.viewDate = today">Today</button>
        </ng-template>
      </igx-date-picker>
  • IgxTimePicker

    • value accepts ISO 8601 string format.
    • The igxPickerActions directive can now be used to provide custom buttons to the picker's pop-up:
      <igx-time-picker #timePicker>
        <ng-template igxPickerActions>
            <button igxButton="flat" (click)="timePicker.close()">Close</button>
        </ng-template>
      </igx-time-picker>
  • IgxDateRangePicker

    • value start and end accept ISO 8601 string format.
    • The igxPickerActions directive can now be used to template the pickers Done button:
      <igx-date-range-picker #rangePicker>
        <ng-template igxPickerActions>
            <button igxButton="flat" (click)="rangePicker.close()">Close</button>
        </ng-template>
      </igx-date-range-picker>

Themes:

  • Breaking Changes:

    • IgxButton theme has been simplified. The number of theme params (igx-button-theme) has been reduced significantly and no longer includes prefixed parameters (flat-*, raised-*, etc.). See the migration guide to update existing button themes. Updates performed with ng update will migrate existing button themes but some additional tweaking may be required to account for the abscense of prefixed params.
    • The igx-typography mixin is no longer implicitly included with igx-core. To use our typography styles users have to include the mixin explicitly:
    @include igx-core();
    /// Example with Indigo Design theme:
    @include igx-typography($font-family: $indigo-typeface, $type-scale: $indigo-type-scale);