All files / datatable si-datatable-providers.ts

66.66% Statements 2/3
100% Branches 0/0
0% Functions 0/1
100% Lines 2/2

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115                                                                                                                                                                        1x                                                   1x        
/**
 * Copyright (c) Siemens 2016 - 2025
 * SPDX-License-Identifier: MIT
 */
import { Provider } from '@angular/core';
 
// Copy of NgxDatatableConfig from @siemens/ngx-datatable to maintain compatibility
// with v22 and earlier where `NgxDatatableConfig` is not defined.
// See https://github.com/siemens/ngx-datatable/blob/main/projects/ngx-datatable/src/lib/ngx-datatable.config.ts#L50.
/** Interface for messages to override default table texts. */
interface NgxDatatableMessages {
  /** Message to show when the array is present but empty */
  emptyMessage: string;
  /** Footer total message */
  totalMessage: string;
  /** Footer selected message */
  selectedMessage: string;
  /** Pager screen reader message for the first page button */
  ariaFirstPageMessage: string;
  /**
   * Pager screen reader message for the n-th page button.
   * It will be rendered as: `{{ariaPageNMessage}} {{n}}`.
   */
  ariaPageNMessage: string;
  /** Pager screen reader message for the previous page button */
  ariaPreviousPageMessage: string;
  /** Pager screen reader message for the next page button */
  ariaNextPageMessage: string;
  /** Pager screen reader message for the last page button */
  ariaLastPageMessage: string;
  /** Row checkbox aria label */
  ariaRowCheckboxMessage: string;
  /** Header checkbox aria label */
  ariaHeaderCheckboxMessage: string;
  /** Group header checkbox aria label */
  ariaGroupHeaderCheckboxMessage: string;
}
/** CSS classes for icons that override the default table icons. */
interface NgxDatatableCssClasses {
  sortAscending: string;
  sortDescending: string;
  sortUnset: string;
  pagerLeftArrow: string;
  pagerRightArrow: string;
  pagerPrevious: string;
  pagerNext: string;
  treeStatusLoading: string;
  treeStatusExpanded: string;
  treeStatusCollapsed: string;
}
/**
 * Interface definition for ngx-datatable global configuration
 */
export interface NgxDatatableConfig {
  messages?: NgxDatatableMessages;
  cssClasses?: NgxDatatableCssClasses;
  headerHeight?: number;
  footerHeight?: number;
  rowHeight?: number;
  defaultColumnWidth?: number;
}
 
/**
 * @deprecated Use NgxDatatableConfig from \@siemens/ngx-datatable instead from v23 onward.
 *
 * Configuration interface for the upstream \@siemens/ngx-datatable project.
 * See https://github.com/siemens/ngx-datatable/blob/main/projects/ngx-datatable/src/lib/ngx-datatable.config.ts#L50.
 */
// eslint-disable-next-line @typescript-eslint/no-empty-object-type
export interface INgxDatatableConfig extends NgxDatatableConfig {}
 
/**
 * Extends the original NgxDatatableConfig with additional properties and makes all fields required to maintain compatibility.
 */
interface SiDatatableConfig extends NgxDatatableConfig {
  cssClasses: Exclude<NgxDatatableConfig['cssClasses'], undefined>;
  headerHeight: number;
  footerHeight: number;
  rowHeight: number;
  rowHeightSmall: number;
  rowHeightExtraSmall: number;
  rowHeightTiny: number;
}
 
export const SI_DATATABLE_CONFIG: SiDatatableConfig = {
  cssClasses: {
    sortAscending: 'icon element-sort-up text-primary',
    sortDescending: 'icon element-sort-down text-primary',
    pagerLeftArrow: 'icon element-left-2 flip-rtl',
    pagerRightArrow: 'icon element-right-2 flip-rtl',
    pagerPrevious: 'icon element-double-left flip-rtl',
    pagerNext: 'icon element-double-right flip-rtl',
    sortUnset: '',
    treeStatusLoading: '',
    treeStatusExpanded: 'icon element-down-2 flip-rtl',
    treeStatusCollapsed: 'icon element-right-2 flip-rtl'
  },
  headerHeight: 40,
  footerHeight: 40,
  rowHeight: 64,
  rowHeightSmall: 48,
  rowHeightExtraSmall: 32,
  rowHeightTiny: 24
};
 
/**
 * Provides element configuration for the \@siemens/ngx-datatable.
 *
 *  @param configOverrides - overrides that will be merged with the element configuration.
 */
export const provideSiDatatableConfig = (configOverrides?: NgxDatatableConfig): Provider => ({
  provide: 'configuration',
  useValue: { ...SI_DATATABLE_CONFIG, ...configOverrides }
});