@sd-angular/core 1.0.4 → 1.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (26) hide show
  1. package/bundles/sd-angular-core-grid-material.umd.js +162 -18
  2. package/bundles/sd-angular-core-grid-material.umd.js.map +1 -1
  3. package/bundles/sd-angular-core-grid-material.umd.min.js +2 -2
  4. package/bundles/sd-angular-core-grid-material.umd.min.js.map +1 -1
  5. package/esm2015/grid-material/sd-angular-core-grid-material.js +2 -1
  6. package/esm2015/grid-material/src/lib/components/desktop-cell/desktop-cell.component.js +2 -2
  7. package/esm2015/grid-material/src/lib/components/desktop-cell-editor/desktop-cell-editor.component.js +2 -2
  8. package/esm2015/grid-material/src/lib/components/desktop-cell-view/desktop-cell-view.component.js +5 -4
  9. package/esm2015/grid-material/src/lib/components/grid-filter/grid-filter.component.js +2 -2
  10. package/esm2015/grid-material/src/lib/grid-material.component.js +14 -12
  11. package/esm2015/grid-material/src/lib/grid-material.module.js +4 -2
  12. package/esm2015/grid-material/src/lib/models/grid-cell.model.js +2 -0
  13. package/esm2015/grid-material/src/lib/models/grid-column.model.js +1 -1
  14. package/esm2015/grid-material/src/lib/models/grid-option.model.js +1 -1
  15. package/esm2015/grid-material/src/lib/pipes/cell-view.pipe.js +131 -0
  16. package/fesm2015/sd-angular-core-grid-material.js +149 -19
  17. package/fesm2015/sd-angular-core-grid-material.js.map +1 -1
  18. package/grid-material/sd-angular-core-grid-material.d.ts +1 -0
  19. package/grid-material/sd-angular-core-grid-material.metadata.json +1 -1
  20. package/grid-material/src/lib/components/desktop-cell-view/desktop-cell-view.component.d.ts +2 -0
  21. package/grid-material/src/lib/models/grid-cell.model.d.ts +15 -0
  22. package/grid-material/src/lib/models/grid-column.model.d.ts +1 -0
  23. package/grid-material/src/lib/models/grid-option.model.d.ts +1 -0
  24. package/grid-material/src/lib/pipes/cell-view.pipe.d.ts +14 -0
  25. package/package.json +1 -1
  26. package/{sd-angular-core-1.0.4.tgz → sd-angular-core-1.0.8.tgz} +0 -0
@@ -815,7 +815,7 @@
815
815
  SdGridFilter.decorators = [
816
816
  { type: core.Component, args: [{
817
817
  selector: 'sd-grid-filter',
818
- template: "<ng-container *ngIf=\"isVisible\">\r\n <div *ngIf=\"!isMobileOrTablet && (columns?.length || externalFilters?.length || filterDefs?.length)\"\r\n class=\"row mx-0 pb-10\">\r\n <ng-container *ngIf=\"filter?.sorts?.length\">\r\n <ng-container *ngFor=\"let field of filter?.sorts\">\r\n <ng-container *ngIf=\"columns?.length && !filter?.inlineColumn\">\r\n <ng-container *ngFor=\"let item of columns | sdFilterColumn:field\">\r\n <ng-container *ngTemplateOutlet=\"filterColumn; context: {item: item}\"></ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"externalFilters?.length\">\r\n <ng-container *ngFor=\"let item of externalFilters | sdFilterExternal:field\">\r\n <ng-container *ngTemplateOutlet=\"filterExternal; context: {item: item}\"></ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngFor=\"let item of filterDefs\">\r\n <div *ngIf=\"inlineFilterDef[item.sdMaterialFilterDef] && item.sdMaterialFilterDef === field\"\r\n class=\"col-lg-2 col-md-3 col-sm-6 px-8\">\r\n <ng-container *ngTemplateOutlet=\"item.templateRef;context:{filterDef:filterDef, isInline: true}\">\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!filter?.sorts?.length\">\r\n <ng-container *ngIf=\"columns?.length && !filter?.inlineColumn\">\r\n <ng-container *ngFor=\"let item of columns | sdFilterColumn\">\r\n <ng-container *ngTemplateOutlet=\"filterColumn; context: {item: item}\"></ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"externalFilters?.length\">\r\n <ng-container *ngFor=\"let item of externalFilters | sdFilterExternal\">\r\n <ng-container *ngTemplateOutlet=\"filterExternal; context: {item: item}\"></ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngFor=\"let item of filterDefs\">\r\n <div *ngIf=\"inlineFilterDef[item.sdMaterialFilterDef]\" class=\"col-lg-2 col-md-3 col-sm-6 px-8\">\r\n <ng-container *ngTemplateOutlet=\"item.templateRef;context:{filterDef:filterDef, isInline: true}\">\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n <ng-template #filterColumn let-item=\"item\">\r\n <div *ngIf=\"inlineColumn[item.field]\" class=\"col-lg-2 col-md-3 col-sm-6 px-8\">\r\n <sd-input [label]=\"item.title\" *ngIf=\"item.type === 'string'\" type=\"text\" [(model)]=\"columnFilter[item.field]\"\r\n (keyupEnter)=\"onFilter(item)\">\r\n </sd-input>\r\n <sd-input [label]=\"item.title\" *ngIf=\"item.type === 'number'\" type=\"number\" [(model)]=\"columnFilter[item.field]\"\r\n (keyupEnter)=\"onFilter(item)\">\r\n </sd-input>\r\n <sd-select [label]=\"item.title\" *ngIf=\"item.type === 'bool'\" [items]=\"[{value:'1',display:item.option?.displayOnTrue || 'True' },\r\n {value:'0',display:item.option?.displayOnFalse || 'False' }]\" valueField=\"value\" displayField=\"display\"\r\n [(model)]=\"columnFilter[item.field]\" (sdChange)=\"onFilter(item)\">\r\n </sd-select>\r\n <sd-select *ngIf=\"item.type === 'values' && item?.option?.selection !== 'AUTOCOMPLETE'\"\r\n [items]=\"item.option?.items\" [valueField]=\"item.option?.valueField\"\r\n [displayField]=\"item.option.displayField\" [(model)]=\"columnFilter[item.field]\" (sdChange)=\"onFilter(item)\"\r\n [disabled]=\"item.filter?.disabled\"\r\n [multiple]=\"item?.option?.selection === 'MULTIPLE' || item?.item?.selection === 'MULTIPLEAUTOCOMPLETE'\"\r\n [filtered]=\"item?.option?.selection === 'MULTIPLEAUTOCOMPLETE'\">\r\n </sd-select>\r\n <sd-autocomplete *ngIf=\"item.type === 'values' && item?.option?.selection === 'AUTOCOMPLETE'\"\r\n [items]=\"item.option?.items\" [valueField]=\"item.option?.valueField\"\r\n [displayField]=\"item.option?.displayField\" [(model)]=\"columnFilter[item.field]\" (sdChange)=\"onFilter(item)\"\r\n [disabled]=\"item.filter?.disabled\">\r\n </sd-autocomplete>\r\n <sd-date-time *ngIf=\"item.type === 'date' || item.type === 'datetime' || item.type === 'time'\"\r\n [label]=\"item.title\" [(model)]=\"columnFilter[item.field]\" [type]=\"item.type\" (sdChange)=\"onFilter(item)\">\r\n </sd-date-time>\r\n </div>\r\n </ng-template>\r\n <ng-template #filterExternal let-item=\"item\">\r\n <div *ngIf=\"inlineExternal[item.field]\" class=\"col-lg-2 col-md-3 col-sm-6 px-8\">\r\n <sd-input [label]=\"item.title\" *ngIf=\"item.type === 'string'\" type=\"text\" [(model)]=\"externalFilter[item.field]\"\r\n (keyupEnter)=\"onFilter(item)\">\r\n </sd-input>\r\n <sd-input [label]=\"item.title\" *ngIf=\"item.type === 'number'\" type=\"number\" [(model)]=\"externalFilter[item.field]\"\r\n (keyupEnter)=\"onFilter(item)\">\r\n </sd-input>\r\n <sd-select [label]=\"item.title\" *ngIf=\"item.type === 'bool'\" [items]=\"[{value:'1',display:item.option?.displayOnTrue || 'True' },\r\n {value:'0',display:item.option?.displayOnFalse || 'False' }]\" valueField=\"value\" displayField=\"display\"\r\n [(model)]=\"externalFilter[item.field]\" (sdChange)=\"onFilter(item)\">\r\n </sd-select>\r\n <ng-container *ngIf=\"item.type === 'values' && item.option\">\r\n <sd-select *ngIf=\"item.option?.selection === 'MULTIPLE'\" [label]=\"item.title\" [items]=\"item.option.items\"\r\n [valueField]=\"item.option.valueField\" [displayField]=\"item.option.displayField\"\r\n [(model)]=\"externalFilter[item.field]\" (sdChange)=\"onFilter(item)\" [selectAll]=\"item.option.selectAll\" multiple=\"true\">\r\n </sd-select>\r\n <sd-autocomplete *ngIf=\"item.option?.selection === 'AUTOCOMPLETE'\" [label]=\"item.title\"\r\n [items]=\"item.option.items\" [valueField]=\"item.option.valueField\" [displayField]=\"item.option.displayField\"\r\n [(model)]=\"externalFilter[item.field]\" (sdChange)=\"onFilter(item)\">\r\n </sd-autocomplete>\r\n <sd-select *ngIf=\"item.option?.selection === 'MULTIPLEAUTOCOMPLETE'\" [label]=\"item.title\"\r\n [items]=\"item.option.items\" [valueField]=\"item.option.valueField\" [displayField]=\"item.option.displayField\"\r\n [(model)]=\"externalFilter[item.field]\" (sdChange)=\"onFilter(item)\" filtered=\"true\" multiple>\r\n </sd-select>\r\n <sd-select *ngIf=\"!item.option?.selection\" [label]=\"item.title\" [items]=\"item.option.items\"\r\n [valueField]=\"item.option.valueField\" [displayField]=\"item.option.displayField\"\r\n [(model)]=\"externalFilter[item.field]\" (sdChange)=\"onFilter(item)\">\r\n </sd-select>\r\n </ng-container>\r\n <sd-date-time [label]=\"item.title\" *ngIf=\"item.type ==='date' || item.type ==='datetime'\"\r\n [(model)]=\"externalFilter[item.field]\" [type]=\"item.type\" (sdChange)=\"onFilter(item)\">\r\n </sd-date-time>\r\n <sd-date-range [label]=\"item.title\" *ngIf=\"item.type ==='daterange' && externalFilter[item.field]\"\r\n [(from)]=\"externalFilter[item.field].from\" [(to)]=\"externalFilter[item.field].to\" [min]=\"item.minDate\"\r\n [max]=\"item.maxDate\" (sdChange)=\"onFilter(item)\">\r\n </sd-date-range>\r\n </div>\r\n </ng-template>\r\n <sd-popup-filter [columns]=\"columns\" [externalFilters]=\"externalFilters\" (changeFilter)=\"onChangeFilter($event)\"\r\n (clearFilter)=\"onReset()\" [filterDefs]=\"filterDefs\">\r\n </sd-popup-filter>\r\n</ng-container>",
818
+ template: "<ng-container *ngIf=\"isVisible\">\r\n <div *ngIf=\"!isMobileOrTablet && ((columns?.length && !filter?.inlineColumn) || externalFilters?.length || filterDefs?.length)\"\r\n class=\"row mx-0 pb-10\">\r\n <ng-container *ngIf=\"filter?.sorts?.length\">\r\n <ng-container *ngFor=\"let field of filter?.sorts\">\r\n <ng-container *ngIf=\"columns?.length && !filter?.inlineColumn\">\r\n <ng-container *ngFor=\"let item of columns | sdFilterColumn:field\">\r\n <ng-container *ngTemplateOutlet=\"filterColumn; context: {item: item}\"></ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"externalFilters?.length\">\r\n <ng-container *ngFor=\"let item of externalFilters | sdFilterExternal:field\">\r\n <ng-container *ngTemplateOutlet=\"filterExternal; context: {item: item}\"></ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngFor=\"let item of filterDefs\">\r\n <div *ngIf=\"inlineFilterDef[item.sdMaterialFilterDef] && item.sdMaterialFilterDef === field\"\r\n class=\"col-lg-2 col-md-3 col-sm-6 px-8\">\r\n <ng-container *ngTemplateOutlet=\"item.templateRef;context:{filterDef:filterDef, isInline: true}\">\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!filter?.sorts?.length\">\r\n <ng-container *ngIf=\"columns?.length && !filter?.inlineColumn\">\r\n <ng-container *ngFor=\"let item of columns | sdFilterColumn\">\r\n <ng-container *ngTemplateOutlet=\"filterColumn; context: {item: item}\"></ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"externalFilters?.length\">\r\n <ng-container *ngFor=\"let item of externalFilters | sdFilterExternal\">\r\n <ng-container *ngTemplateOutlet=\"filterExternal; context: {item: item}\"></ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngFor=\"let item of filterDefs\">\r\n <div *ngIf=\"inlineFilterDef[item.sdMaterialFilterDef]\" class=\"col-lg-2 col-md-3 col-sm-6 px-8\">\r\n <ng-container *ngTemplateOutlet=\"item.templateRef;context:{filterDef:filterDef, isInline: true}\">\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n <ng-template #filterColumn let-item=\"item\">\r\n <div *ngIf=\"inlineColumn[item.field]\" class=\"col-lg-2 col-md-3 col-sm-6 px-8\">\r\n <sd-input [label]=\"item.title\" *ngIf=\"item.type === 'string'\" type=\"text\" [(model)]=\"columnFilter[item.field]\"\r\n (keyupEnter)=\"onFilter(item)\">\r\n </sd-input>\r\n <sd-input [label]=\"item.title\" *ngIf=\"item.type === 'number'\" type=\"number\" [(model)]=\"columnFilter[item.field]\"\r\n (keyupEnter)=\"onFilter(item)\">\r\n </sd-input>\r\n <sd-select [label]=\"item.title\" *ngIf=\"item.type === 'bool'\" [items]=\"[{value:'1',display:item.option?.displayOnTrue || 'True' },\r\n {value:'0',display:item.option?.displayOnFalse || 'False' }]\" valueField=\"value\" displayField=\"display\"\r\n [(model)]=\"columnFilter[item.field]\" (sdChange)=\"onFilter(item)\">\r\n </sd-select>\r\n <sd-select *ngIf=\"item.type === 'values' && item?.option?.selection !== 'AUTOCOMPLETE'\"\r\n [items]=\"item.option?.items\" [valueField]=\"item.option?.valueField\"\r\n [displayField]=\"item.option.displayField\" [(model)]=\"columnFilter[item.field]\" (sdChange)=\"onFilter(item)\"\r\n [disabled]=\"item.filter?.disabled\"\r\n [multiple]=\"item?.option?.selection === 'MULTIPLE' || item?.item?.selection === 'MULTIPLEAUTOCOMPLETE'\"\r\n [filtered]=\"item?.option?.selection === 'MULTIPLEAUTOCOMPLETE'\">\r\n </sd-select>\r\n <sd-autocomplete *ngIf=\"item.type === 'values' && item?.option?.selection === 'AUTOCOMPLETE'\"\r\n [items]=\"item.option?.items\" [valueField]=\"item.option?.valueField\"\r\n [displayField]=\"item.option?.displayField\" [(model)]=\"columnFilter[item.field]\" (sdChange)=\"onFilter(item)\"\r\n [disabled]=\"item.filter?.disabled\">\r\n </sd-autocomplete>\r\n <sd-date-time *ngIf=\"item.type === 'date' || item.type === 'datetime' || item.type === 'time'\"\r\n [label]=\"item.title\" [(model)]=\"columnFilter[item.field]\" [type]=\"item.type\" (sdChange)=\"onFilter(item)\">\r\n </sd-date-time>\r\n </div>\r\n </ng-template>\r\n <ng-template #filterExternal let-item=\"item\">\r\n <div *ngIf=\"inlineExternal[item.field]\" class=\"col-lg-2 col-md-3 col-sm-6 px-8\">\r\n <sd-input [label]=\"item.title\" *ngIf=\"item.type === 'string'\" type=\"text\" [(model)]=\"externalFilter[item.field]\"\r\n (keyupEnter)=\"onFilter(item)\">\r\n </sd-input>\r\n <sd-input [label]=\"item.title\" *ngIf=\"item.type === 'number'\" type=\"number\" [(model)]=\"externalFilter[item.field]\"\r\n (keyupEnter)=\"onFilter(item)\">\r\n </sd-input>\r\n <sd-select [label]=\"item.title\" *ngIf=\"item.type === 'bool'\" [items]=\"[{value:'1',display:item.option?.displayOnTrue || 'True' },\r\n {value:'0',display:item.option?.displayOnFalse || 'False' }]\" valueField=\"value\" displayField=\"display\"\r\n [(model)]=\"externalFilter[item.field]\" (sdChange)=\"onFilter(item)\">\r\n </sd-select>\r\n <ng-container *ngIf=\"item.type === 'values' && item.option\">\r\n <sd-select *ngIf=\"item.option?.selection === 'MULTIPLE'\" [label]=\"item.title\" [items]=\"item.option.items\"\r\n [valueField]=\"item.option.valueField\" [displayField]=\"item.option.displayField\"\r\n [(model)]=\"externalFilter[item.field]\" (sdChange)=\"onFilter(item)\" [selectAll]=\"item.option.selectAll\" multiple=\"true\">\r\n </sd-select>\r\n <sd-autocomplete *ngIf=\"item.option?.selection === 'AUTOCOMPLETE'\" [label]=\"item.title\"\r\n [items]=\"item.option.items\" [valueField]=\"item.option.valueField\" [displayField]=\"item.option.displayField\"\r\n [(model)]=\"externalFilter[item.field]\" (sdChange)=\"onFilter(item)\">\r\n </sd-autocomplete>\r\n <sd-select *ngIf=\"item.option?.selection === 'MULTIPLEAUTOCOMPLETE'\" [label]=\"item.title\"\r\n [items]=\"item.option.items\" [valueField]=\"item.option.valueField\" [displayField]=\"item.option.displayField\"\r\n [(model)]=\"externalFilter[item.field]\" (sdChange)=\"onFilter(item)\" filtered=\"true\" multiple>\r\n </sd-select>\r\n <sd-select *ngIf=\"!item.option?.selection\" [label]=\"item.title\" [items]=\"item.option.items\"\r\n [valueField]=\"item.option.valueField\" [displayField]=\"item.option.displayField\"\r\n [(model)]=\"externalFilter[item.field]\" (sdChange)=\"onFilter(item)\">\r\n </sd-select>\r\n </ng-container>\r\n <sd-date-time [label]=\"item.title\" *ngIf=\"item.type ==='date' || item.type ==='datetime'\"\r\n [(model)]=\"externalFilter[item.field]\" [type]=\"item.type\" (sdChange)=\"onFilter(item)\">\r\n </sd-date-time>\r\n <sd-date-range [label]=\"item.title\" *ngIf=\"item.type ==='daterange' && externalFilter[item.field]\"\r\n [(from)]=\"externalFilter[item.field].from\" [(to)]=\"externalFilter[item.field].to\" [min]=\"item.minDate\"\r\n [max]=\"item.maxDate\" (sdChange)=\"onFilter(item)\">\r\n </sd-date-range>\r\n </div>\r\n </ng-template>\r\n <sd-popup-filter [columns]=\"columns\" [externalFilters]=\"externalFilters\" (changeFilter)=\"onChangeFilter($event)\"\r\n (clearFilter)=\"onReset()\" [filterDefs]=\"filterDefs\">\r\n </sd-popup-filter>\r\n</ng-container>",
819
819
  styles: [":host{display:block;padding-left:0;padding-right:0}:host ::ng-deep .mat-form-field-wrapper{padding-bottom:0}"]
820
820
  },] }
821
821
  ];
@@ -1837,28 +1837,28 @@
1837
1837
  var rawColumnFilter = filterInfo.rawColumnFilter, orderBy = filterInfo.orderBy, orderDirection = filterInfo.orderDirection, pageSize = filterInfo.pageSize, pageNumber = filterInfo.pageNumber;
1838
1838
  var items = localItems.filter(function (item) {
1839
1839
  var e_4, _t;
1840
- var _a, _b;
1840
+ var _a, _b, _c, _d;
1841
1841
  try {
1842
1842
  for (var columns_1 = __values(columns), columns_1_1 = columns_1.next(); !columns_1_1.done; columns_1_1 = columns_1.next()) {
1843
1843
  var column = columns_1_1.value;
1844
- var field = column.field;
1844
+ var field = column.field, type = column.type;
1845
1845
  var filterValue = (rawColumnFilter[field] || '').toString().trim().toLowerCase();
1846
1846
  var columnValue = (item[field] || '').toString().trim().toLowerCase();
1847
1847
  if (filterValue) {
1848
- if (!columnValue) {
1848
+ if (!columnValue && type !== 'datetime' && type !== 'date' && type !== 'time') {
1849
1849
  return false;
1850
1850
  }
1851
- if (column.type === 'string') {
1851
+ if (type === 'string') {
1852
1852
  if (columnValue.indexOf(filterValue) === -1) {
1853
1853
  return false;
1854
1854
  }
1855
1855
  }
1856
- else if (column.type === 'values') {
1856
+ else if (type === 'values') {
1857
1857
  if (columnValue !== filterValue) {
1858
1858
  return false;
1859
1859
  }
1860
1860
  }
1861
- else if (column.type === 'number') {
1861
+ else if (type === 'number') {
1862
1862
  var fValue = +filterValue.replace('>=', '').replace('<=', '').replace('>', '').replace('<', '');
1863
1863
  var cValue = +columnValue;
1864
1864
  if (fValue || fValue === 0) {
@@ -1882,7 +1882,7 @@
1882
1882
  }
1883
1883
  }
1884
1884
  }
1885
- else if (column.type === 'bool') {
1885
+ else if (type === 'bool') {
1886
1886
  if (filterValue === '1' && columnValue !== '1' && columnValue !== 'true') {
1887
1887
  return false;
1888
1888
  }
@@ -1890,12 +1890,15 @@
1890
1890
  return false;
1891
1891
  }
1892
1892
  }
1893
- else if (column.type === 'datetime' || column.type === 'date' || column.type === 'time') {
1894
- var from = (_a = filterInfo.rawColumnFilter[column.field]) === null || _a === void 0 ? void 0 : _a.from;
1895
- var to = (_b = filterInfo.rawColumnFilter[column.field]) === null || _b === void 0 ? void 0 : _b.to;
1893
+ else if (type === 'datetime' || type === 'date' || type === 'time') {
1894
+ var from = (_b = (_a = rawColumnFilter[field]) === null || _a === void 0 ? void 0 : _a.from) !== null && _b !== void 0 ? _b : rawColumnFilter[field];
1895
+ var to = (_d = (_c = rawColumnFilter[field]) === null || _c === void 0 ? void 0 : _c.to) !== null && _d !== void 0 ? _d : rawColumnFilter[field];
1896
1896
  var fromDate = Date.begin(from);
1897
1897
  var toDate = Date.end(to);
1898
1898
  if (fromDate && toDate) {
1899
+ if (!columnValue) {
1900
+ return false;
1901
+ }
1899
1902
  if (new Date(columnValue).getTime() < fromDate.getTime() || new Date(columnValue).getTime() >= toDate.getTime()) {
1900
1903
  return false;
1901
1904
  }
@@ -1942,7 +1945,6 @@
1942
1945
  }
1943
1946
  }
1944
1947
  }
1945
- console.log(localItems, items, rawColumnFilter);
1946
1948
  return {
1947
1949
  items: items.filter(function (item, index) {
1948
1950
  return index >= pageNumber * pageSize
@@ -3021,9 +3023,9 @@
3021
3023
  SdDesktopCellView.decorators = [
3022
3024
  { type: core.Component, args: [{
3023
3025
  selector: 'sd-desktop-cell-view',
3024
- template: "<ng-container *ngIf=\"column.htmlTemplate;else useDefaultView\">\r\n <div (click)=\"column.click && column.click(item[column.field], item)\" style=\"overflow-wrap: break-word;\"\r\n [ngClass]=\"{'cursor-pointer':column.click}\"\r\n [innerHTML]=\"(item[column.field] | columnHtmlTemplate:item:column) | safeHtml\">\r\n </div>\r\n</ng-container>\r\n<ng-template #useDefaultView>\r\n <ng-container *sdLet=\"item[column.field] | columnBadge:item:column as badge\">\r\n <ng-container *sdLet=\"item[column.field] | columnTooltip:item:column as tooltip\">\r\n <ng-container *sdLet=\"item[column.field] | columnTransform:item:column:key | async as val\">\r\n <ng-container\r\n *ngIf=\"column.type === 'string' || column.type === 'number' || column.type === 'bool' || column.type === 'values'\">\r\n <ng-container *ngIf=\"!!badge\">\r\n <sd-badge [type]=\"badge.type\" [title]=\"val\" [color]=\"badge.color\" [icon]=\"badge.icon\" [tooltip]=\"tooltip\"\r\n (sdClick)=\"column.click(item[column.field], item)\"></sd-badge>\r\n </ng-container>\r\n <ng-container *ngIf=\"!badge\">\r\n <div class=\"text-break\" [matTooltip]=\"tooltip\">\r\n <a *ngIf=\"column.click\" href=\"javascript:;\" (click)=\"column.click(item[column.field], item)\">{{val}}</a>\r\n <ng-container *ngIf=\"!column.click\">{{val}}\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n <div *ngIf=\"column.type === 'date'\" matTooltipPosition=\"above\"\r\n [matTooltip]=\"item[column.field] | date:'dd/MM/yyyy'\">\r\n {{val | sdTimeDifferent:'dd/MM/yyyy':column.option?.timeDifferent | async}}\r\n </div>\r\n <div *ngIf=\"column.type === 'datetime'\" matTooltipPosition=\"above\"\r\n [matTooltip]=\"item[column.field] | date:'dd/MM/yyyy HH:mm'\">\r\n {{val | sdTimeDifferent:'dd/MM/yyyy HH:mm':column.option?.timeDifferent | async}}\r\n </div>\r\n <div *ngIf=\"column.type === 'time'\">\r\n {{val | date:'HH:mm'}}\r\n </div>\r\n <div *ngIf=\"column.type === 'image'\" class=\"align-middle text-center\">\r\n <img *ngIf=\"val\" [src]=\"val\" [width]=\"column.option?.width\" [height]=\"column.option?.height\"\r\n style=\"margin: 5px 0;object-fit: contain;\" (click)=\"column.click && column.click(item[column.field], item)\"\r\n [ngClass]=\"{'pointer':column.click}\">\r\n <mat-icon *ngIf=\"!val\" class=\"c-img\" [ngClass]=\"{'pointer':column.click}\"\r\n (click)=\"column.click && column.click(item[column.field], item)\">image</mat-icon>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <sd-desktop-cell-children-view *ngIf=\"column.type === 'children'\" [key]=\"key\" [item]=\"item\" [column]=\"column\">\r\n </sd-desktop-cell-children-view>\r\n</ng-template>",
3026
+ template: "<ng-container *sdLet=\"item[column.field] | cellView:item:column:gridOption:key | async as view\">\r\n <div *ngIf=\"!!view.display.html;else useValue\" (click)=\"!!view.click && view.click()\" class=\"text-break\"\r\n [class.cursor-pointer]=\"!!view.click\" [matTooltip]=\"view.tooltip\" [innerHTML]=\"view.display.html | safeHtml\">\r\n </div>\r\n <ng-template #useValue>\r\n <ng-container *ngIf=\"!!view.badge; else noBadge\">\r\n <sd-badge [type]=\"view.badge.type\" [title]=\"view.display.value\" [color]=\"view.badge.color\"\r\n [icon]=\"view.badge.icon\" [tooltip]=\"view.tooltip\" (sdClick)=\"column.click(item[column.field], item)\"></sd-badge>\r\n </ng-container>\r\n <ng-template #noBadge>\r\n <ng-container *ngIf=\"column.type !== 'children'; else childrenView\">\r\n <div *ngIf=\"column.type !== 'image'\" class=\"text-break\"\r\n [class.text-center]=\"view.display.align === 'center'\" [class.text-right]=\"view.display.align === 'right'\"\r\n [matTooltip]=\"view.tooltip\">\r\n <a *ngIf=\"!!view.click\" href=\"javascript:;\" (click)=\"view.click()\">{{view.display.value}}</a>\r\n <ng-container *ngIf=\"!view.click\">{{view.display.value}}\r\n </ng-container>\r\n </div>\r\n <div *ngIf=\"column.type === 'image'\" class=\"align-middle text-center\">\r\n <img *ngIf=\"view.display.value\" [src]=\"view.display.value\" [width]=\"column.option?.width\"\r\n [height]=\"column.option?.height\" class=\"c-image\" (click)=\"!!view.click && view.click()\"\r\n [class.cursor-pointer]=\"!!view.click\">\r\n <mat-icon *ngIf=\"!view.display.value\" class=\"c-img\" [class.cursor-pointer]=\"!!view.click\"\r\n (click)=\"!!view.click && view.click()\">\r\n image</mat-icon>\r\n </div>\r\n </ng-container>\r\n <ng-template #childrenView>\r\n <sd-desktop-cell-children-view [key]=\"key\" [item]=\"item\" [column]=\"column\">\r\n </sd-desktop-cell-children-view>\r\n </ng-template>\r\n </ng-template>\r\n </ng-template>\r\n</ng-container>",
3025
3027
  changeDetection: core.ChangeDetectionStrategy.OnPush,
3026
- styles: [".c-color-success{color:#4caf50}.c-color-danger{color:#f82c13}.c-img{font-size:30px;opacity:.5}.c-img.pointer:hover{opacity:.9}"]
3028
+ styles: [".c-color-success{color:#4caf50}.c-color-danger{color:#f82c13}.c-image{-o-object-fit:contain;margin:5px 0;object-fit:contain}.c-img{font-size:30px;opacity:.5}.c-img.pointer:hover{opacity:.9}"]
3027
3029
  },] }
3028
3030
  ];
3029
3031
  SdDesktopCellView.ctorParameters = function () { return []; };
@@ -3031,7 +3033,8 @@
3031
3033
  sdId: [{ type: core.Input }],
3032
3034
  key: [{ type: core.Input }],
3033
3035
  column: [{ type: core.Input }],
3034
- item: [{ type: core.Input }]
3036
+ item: [{ type: core.Input }],
3037
+ gridOption: [{ type: core.Input }]
3035
3038
  };
3036
3039
 
3037
3040
  var SdColumnTransformPipe = /** @class */ (function () {
@@ -3872,7 +3875,7 @@
3872
3875
  SdDesktopCell.decorators = [
3873
3876
  { type: core.Component, args: [{
3874
3877
  selector: 'sd-desktop-cell',
3875
- template: "<ng-container *ngIf=\"column && item\">\r\n <ng-container *ngIf=\"item.editorHandlerRow?.visible;else useView\">\r\n <!-- <ng-container *sdLet=\"item[column.field] | sdId:item:column\"> -->\r\n <ng-container *sdLet=\"item[column.field] | sdEditorHandlerColumn:item:column:gridOption\">\r\n <ng-container *ngIf=\"item.editorHandlerColumn[column.field]?.visible;else useView\">\r\n <ng-container *ngIf=\"cellDef[column.field]\">\r\n <ng-container *ngTemplateOutlet=\"\r\n cellDef[column.field].templateRef;\r\n context: { item: item, column: column, idx: idx, isEdited: true }\r\n \">\r\n </ng-container>\r\n </ng-container>\r\n <sd-desktop-cell-editor *ngIf=\"!cellDef[column.field]\" [sdId]=\"item.sdId\" [column]=\"column\" [item]=\"item\">\r\n </sd-desktop-cell-editor>\r\n </ng-container>\r\n </ng-container>\r\n <!-- </ng-container> -->\r\n </ng-container>\r\n <ng-template #useView>\r\n <ng-container *ngIf=\"cellDef[column.field]\">\r\n <ng-container *ngTemplateOutlet=\"\r\n cellDef[column.field].templateRef;\r\n context: { item: item, column: column, idx: idx }\r\n \">\r\n </ng-container>\r\n </ng-container>\r\n <sd-desktop-cell-view *ngIf=\"!cellDef[column.field]\" [sdId]=\"item.sdId\" [key]=\"key\" [column]=\"column\" [item]=\"item\">\r\n </sd-desktop-cell-view>\r\n </ng-template>\r\n</ng-container>",
3878
+ template: "<ng-container *ngIf=\"column && item\">\r\n <ng-container *ngIf=\"item.editorHandlerRow?.visible;else useView\">\r\n <!-- <ng-container *sdLet=\"item[column.field] | sdId:item:column\"> -->\r\n <ng-container *sdLet=\"item[column.field] | sdEditorHandlerColumn:item:column:gridOption\">\r\n <ng-container *ngIf=\"item.editorHandlerColumn[column.field]?.visible;else useView\">\r\n <ng-container *ngIf=\"cellDef[column.field]\">\r\n <ng-container *ngTemplateOutlet=\"\r\n cellDef[column.field].templateRef;\r\n context: { item: item, column: column, idx: idx, isEdited: true }\r\n \">\r\n </ng-container>\r\n </ng-container>\r\n <sd-desktop-cell-editor *ngIf=\"!cellDef[column.field]\" [sdId]=\"item.sdId\" [column]=\"column\" [item]=\"item\">\r\n </sd-desktop-cell-editor>\r\n </ng-container>\r\n </ng-container>\r\n <!-- </ng-container> -->\r\n </ng-container>\r\n <ng-template #useView>\r\n <ng-container *ngIf=\"cellDef[column.field]\">\r\n <ng-container *ngTemplateOutlet=\"\r\n cellDef[column.field].templateRef;\r\n context: { item: item, column: column, idx: idx }\r\n \">\r\n </ng-container>\r\n </ng-container>\r\n <sd-desktop-cell-view *ngIf=\"!cellDef[column.field]\" [sdId]=\"item.sdId\" [key]=\"key\" [column]=\"column\" [gridOption]=\"gridOption\" [item]=\"item\">\r\n </sd-desktop-cell-view>\r\n </ng-template>\r\n</ng-container>",
3876
3879
  changeDetection: core.ChangeDetectionStrategy.OnPush
3877
3880
  },] }
3878
3881
  ];
@@ -3904,7 +3907,7 @@
3904
3907
  SdDesktopCellEditor.decorators = [
3905
3908
  { type: core.Component, args: [{
3906
3909
  selector: 'sd-desktop-cell-editor',
3907
- template: "<sd-input *ngIf=\"column.type === 'string'\" size=\"sm\" type=\"text\" [(model)]=\"item[column.field]\" (sdChange)=\"onChange()\" disableErrorMessage>\r\n</sd-input>\r\n<sd-input *ngIf=\"column.type === 'number'\" size=\"sm\" type=\"number\" [(model)]=\"item[column.field]\"\r\n (sdChange)=\"onChange()\" disableErrorMessage>\r\n</sd-input>\r\n<sd-select *ngIf=\"column.type === 'bool'\" size=\"sm\" [items]=\"[\r\n { value: true, display: column.option?.displayOnTrue || 'True' },\r\n { value: false, display: column.option?.displayOnFalse || 'False' }\r\n ]\" valueField=\"value\" displayField=\"display\" [(model)]=\"item[column.field]\" (sdChange)=\"onChange()\" disableErrorMessage>\r\n</sd-select>\r\n<sd-select *ngIf=\"\r\n column.type === 'values' && column?.option?.selection !== 'AUTOCOMPLETE'\r\n \" size=\"sm\" [items]=\"column.option.items\" [valueField]=\"column.option.valueField\"\r\n [displayField]=\"column.option.displayField\" [(model)]=\"item[column.field]\" (sdChange)=\"onChange()\" [multiple]=\"\r\n column?.option?.selection === 'MULTIPLE' ||\r\n column?.option?.selection === 'MULTIPLEAUTOCOMPLETE'\r\n \" [filtered]=\"column?.option?.selection === 'MULTIPLEAUTOCOMPLETE'\" disableErrorMessage>\r\n</sd-select>\r\n<sd-autocomplete *ngIf=\"\r\n column.type === 'values' && column?.option?.selection === 'AUTOCOMPLETE'\r\n \" size=\"sm\" [items]=\"column.option.items\" [valueField]=\"column.option.valueField\"\r\n [displayField]=\"column.option.displayField\" [(model)]=\"item[column.field]\" (sdChange)=\"onChange()\" disableErrorMessage>\r\n</sd-autocomplete>\r\n<sd-date-time *ngIf=\"\r\n column.type === 'date' ||\r\n column.type === 'datetime' ||\r\n column.type === 'time'\r\n \" size=\"sm\" [(model)]=\"item[column.field]\" [type]=\"column.type\" (sdChange)=\"onChange()\" disableErrorMessage>\r\n</sd-date-time>",
3910
+ template: "<sd-input *ngIf=\"column.type === 'string'\" size=\"sm\" type=\"text\" [(model)]=\"item[column.field]\" (sdChange)=\"onChange()\" disableErrorMessage>\r\n</sd-input>\r\n<sd-input-currency *ngIf=\"column.type === 'number'\" size=\"sm\" type=\"number\" [(model)]=\"item[column.field]\"\r\n (sdChange)=\"onChange()\" disableErrorMessage>\r\n</sd-input-currency>\r\n<sd-select *ngIf=\"column.type === 'bool'\" size=\"sm\" [items]=\"[\r\n { value: true, display: column.option?.displayOnTrue || 'True' },\r\n { value: false, display: column.option?.displayOnFalse || 'False' }\r\n ]\" valueField=\"value\" displayField=\"display\" [(model)]=\"item[column.field]\" (sdChange)=\"onChange()\" disableErrorMessage>\r\n</sd-select>\r\n<sd-select *ngIf=\"\r\n column.type === 'values' && column?.option?.selection !== 'AUTOCOMPLETE'\r\n \" size=\"sm\" [items]=\"column.option.items\" [valueField]=\"column.option.valueField\"\r\n [displayField]=\"column.option.displayField\" [(model)]=\"item[column.field]\" (sdChange)=\"onChange()\" [multiple]=\"\r\n column?.option?.selection === 'MULTIPLE' ||\r\n column?.option?.selection === 'MULTIPLEAUTOCOMPLETE'\r\n \" [filtered]=\"column?.option?.selection === 'MULTIPLEAUTOCOMPLETE'\" disableErrorMessage>\r\n</sd-select>\r\n<sd-autocomplete *ngIf=\"\r\n column.type === 'values' && column?.option?.selection === 'AUTOCOMPLETE'\r\n \" size=\"sm\" [items]=\"column.option.items\" [valueField]=\"column.option.valueField\"\r\n [displayField]=\"column.option.displayField\" [(model)]=\"item[column.field]\" (sdChange)=\"onChange()\" disableErrorMessage>\r\n</sd-autocomplete>\r\n<sd-date-time *ngIf=\"\r\n column.type === 'date' ||\r\n column.type === 'datetime' ||\r\n column.type === 'time'\r\n \" size=\"sm\" [(model)]=\"item[column.field]\" [type]=\"column.type\" (sdChange)=\"onChange()\" disableErrorMessage>\r\n</sd-date-time>",
3908
3911
  changeDetection: core.ChangeDetectionStrategy.OnPush
3909
3912
  },] }
3910
3913
  ];
@@ -4260,6 +4263,145 @@
4260
4263
  clear: [{ type: core.Output }]
4261
4264
  };
4262
4265
 
4266
+ var _maxSecond, _maxMinute, _maxHour, _maxDay, _maxMonth, _isMobileOrTablet$1;
4267
+ var SdCellViewPipe = /** @class */ (function () {
4268
+ function SdCellViewPipe(deviceService, utilityService, gridService) {
4269
+ this.utilityService = utilityService;
4270
+ this.gridService = gridService;
4271
+ _maxSecond.set(this, 60);
4272
+ _maxMinute.set(this, __classPrivateFieldGet(this, _maxSecond) * 60);
4273
+ _maxHour.set(this, __classPrivateFieldGet(this, _maxMinute) * 24);
4274
+ _maxDay.set(this, __classPrivateFieldGet(this, _maxHour) * 30);
4275
+ _maxMonth.set(this, __classPrivateFieldGet(this, _maxHour) * 365);
4276
+ _isMobileOrTablet$1.set(this, false);
4277
+ __classPrivateFieldSet(this, _isMobileOrTablet$1, !deviceService.isDesktop());
4278
+ }
4279
+ SdCellViewPipe.prototype.transform = function (value, rowData, column, gridOption, key) {
4280
+ var _a, _b, _c, _d;
4281
+ return __awaiter(this, void 0, void 0, function () {
4282
+ var displayOnEmpty, align, click, tooltip, htmlTemplate, transform, result, timeDifferent, seconds, data, option;
4283
+ return __generator(this, function (_e) {
4284
+ switch (_e.label) {
4285
+ case 0:
4286
+ displayOnEmpty = gridOption.displayOnEmpty;
4287
+ align = column.align, click = column.click, tooltip = column.tooltip, htmlTemplate = column.htmlTemplate, transform = column.transform;
4288
+ result = {
4289
+ badge: null,
4290
+ tooltip: null,
4291
+ display: {
4292
+ align: align || (column.type === 'number' ? 'right' : 'left'),
4293
+ value: value
4294
+ },
4295
+ click: null
4296
+ };
4297
+ if (!(typeof (htmlTemplate) === 'function')) return [3 /*break*/, 1];
4298
+ result.display.html = htmlTemplate(value, rowData, __classPrivateFieldGet(this, _isMobileOrTablet$1));
4299
+ return [3 /*break*/, 7];
4300
+ case 1:
4301
+ if (!transform) return [3 /*break*/, 2];
4302
+ result.display.value = transform(value, rowData);
4303
+ return [3 /*break*/, 6];
4304
+ case 2:
4305
+ if (column.type === 'date' || column.type === 'datetime') {
4306
+ timeDifferent = column.option.timeDifferent;
4307
+ seconds = Math.round((new Date().getTime() - new Date(value).getTime()) / 1000);
4308
+ if (timeDifferent === 'month' && seconds < __classPrivateFieldGet(this, _maxMonth)) {
4309
+ result.display.value = this.utilityService.timeDifference(value);
4310
+ result.tooltip = Date.toFormat(value, column.type === 'date' ? 'dd/MM/yyyy' : 'dd/MM/yyyy HH:mm');
4311
+ }
4312
+ else if (timeDifferent === 'day' && seconds < __classPrivateFieldGet(this, _maxDay)) {
4313
+ result.display.value = this.utilityService.timeDifference(value);
4314
+ result.tooltip = Date.toFormat(value, column.type === 'date' ? 'dd/MM/yyyy' : 'dd/MM/yyyy HH:mm');
4315
+ }
4316
+ else if (timeDifferent === 'hour' && seconds < __classPrivateFieldGet(this, _maxHour)) {
4317
+ result.display.value = this.utilityService.timeDifference(value);
4318
+ result.tooltip = Date.toFormat(value, column.type === 'date' ? 'dd/MM/yyyy' : 'dd/MM/yyyy HH:mm');
4319
+ }
4320
+ else if (timeDifferent === 'minute' && seconds < __classPrivateFieldGet(this, _maxMinute)) {
4321
+ result.display.value = this.utilityService.timeDifference(value);
4322
+ result.tooltip = Date.toFormat(value, column.type === 'date' ? 'dd/MM/yyyy' : 'dd/MM/yyyy HH:mm');
4323
+ }
4324
+ else if (timeDifferent === 'second' && seconds < __classPrivateFieldGet(this, _maxSecond)) {
4325
+ result.display.value = this.utilityService.timeDifference(value);
4326
+ result.tooltip = Date.toFormat(value, column.type === 'date' ? 'dd/MM/yyyy' : 'dd/MM/yyyy HH:mm');
4327
+ }
4328
+ else {
4329
+ result.display.value = Date.toFormat(value, column.type === 'date' ? 'dd/MM/yyyy' : 'dd/MM/yyyy HH:mm');
4330
+ }
4331
+ }
4332
+ if (column.type === 'time') {
4333
+ result.display.value = Date.toFormat(value, 'HH:mm');
4334
+ }
4335
+ if (!(column.type === 'values')) return [3 /*break*/, 4];
4336
+ return [4 /*yield*/, this.gridService.loadValues(column, key)];
4337
+ case 3:
4338
+ data = _e.sent();
4339
+ result.display.value = (_c = (_a = data.obj[value]) === null || _a === void 0 ? void 0 : _a[(_b = column.option) === null || _b === void 0 ? void 0 : _b.displayField]) !== null && _c !== void 0 ? _c : value;
4340
+ return [3 /*break*/, 5];
4341
+ case 4:
4342
+ if (column.type === 'number' && Number.isNumber(value)) {
4343
+ result.display.value = Number.toVNCurrency(value); // this.decimalPipe.transform(value, '1.0-2');
4344
+ }
4345
+ _e.label = 5;
4346
+ case 5:
4347
+ if (column.type === 'bool') {
4348
+ option = column.option;
4349
+ result.display.value = value === true ? ((option === null || option === void 0 ? void 0 : option.displayOnTrue) || 'True') : ((option === null || option === void 0 ? void 0 : option.displayOnFalse) || 'False');
4350
+ }
4351
+ _e.label = 6;
4352
+ case 6:
4353
+ if (displayOnEmpty && (result.display.value === null || result.display.value === undefined || result.display.value === '')) {
4354
+ if (typeof (displayOnEmpty) === 'function') {
4355
+ result.display.html = displayOnEmpty(rowData, column);
4356
+ }
4357
+ else {
4358
+ result.display.html = "<div class=\"T16R\">--</div>";
4359
+ }
4360
+ }
4361
+ _e.label = 7;
4362
+ case 7:
4363
+ // Badge
4364
+ if ((column.type === 'string' || column.type === 'number' || column.type === 'values') && column.badge) {
4365
+ result.badge = {
4366
+ type: !(column === null || column === void 0 ? void 0 : column.badgeType) ? 'round' : column.badgeType,
4367
+ color: column.badge(value, rowData),
4368
+ icon: (_d = column === null || column === void 0 ? void 0 : column.badgeIcon) === null || _d === void 0 ? void 0 : _d.call(column, value, rowData)
4369
+ };
4370
+ }
4371
+ else if (column.type === 'bool') {
4372
+ result.badge = {
4373
+ type: !(column === null || column === void 0 ? void 0 : column.badgeType) ? 'round' : column.badgeType,
4374
+ color: !!value ? 'success' : 'danger',
4375
+ icon: null
4376
+ };
4377
+ }
4378
+ // Tooltip
4379
+ if (typeof (tooltip) === 'function') {
4380
+ result.tooltip = tooltip(value, rowData);
4381
+ }
4382
+ // Clickable
4383
+ if (typeof (click) === 'function') {
4384
+ result.click = function () { return click(value, rowData); };
4385
+ }
4386
+ return [2 /*return*/, result];
4387
+ }
4388
+ });
4389
+ });
4390
+ };
4391
+ return SdCellViewPipe;
4392
+ }());
4393
+ _maxSecond = new WeakMap(), _maxMinute = new WeakMap(), _maxHour = new WeakMap(), _maxDay = new WeakMap(), _maxMonth = new WeakMap(), _isMobileOrTablet$1 = new WeakMap();
4394
+ SdCellViewPipe.decorators = [
4395
+ { type: core.Pipe, args: [{
4396
+ name: 'cellView'
4397
+ },] }
4398
+ ];
4399
+ SdCellViewPipe.ctorParameters = function () { return [
4400
+ { type: ngxDeviceDetector.DeviceDetectorService },
4401
+ { type: utility.SdUtilityService },
4402
+ { type: SdGridService }
4403
+ ]; };
4404
+
4263
4405
  var MatPaginatorIntlCro = /** @class */ (function (_super) {
4264
4406
  __extends(MatPaginatorIntlCro, _super);
4265
4407
  function MatPaginatorIntlCro() {
@@ -4362,7 +4504,8 @@
4362
4504
  SdEditorHandlerColumnPipe,
4363
4505
  SdEditorValidatePipe,
4364
4506
  SdIdPipe,
4365
- SdStyleRowCss
4507
+ SdStyleRowCss,
4508
+ SdCellViewPipe
4366
4509
  ],
4367
4510
  exports: [
4368
4511
  SdGridMaterial,
@@ -4418,6 +4561,7 @@
4418
4561
  exports.ɵbo = SdEditorValidatePipe;
4419
4562
  exports.ɵbp = SdIdPipe;
4420
4563
  exports.ɵbq = SdStyleRowCss;
4564
+ exports.ɵbr = SdCellViewPipe;
4421
4565
  exports.ɵc = SdPopupFilter;
4422
4566
  exports.ɵd = SdGridFilterService;
4423
4567
  exports.ɵe = SdPopupExport;