data-table-component.mdx 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233
  1. ---
  2. title: "DataTableComponent"
  3. generated: true
  4. ---
  5. <GenerationInfo sourceFile="packages/admin-ui/src/lib/core/src/shared/components/data-table/data-table.component.ts" sourceLine="86" packageName="@vendure/admin-ui" />
  6. A table for displaying PaginatedList results. It is designed to be used inside components which
  7. extend the <DocsLink href="/reference/admin-ui-api/list-detail-views/base-list-component#baselistcomponent">BaseListComponent</DocsLink> class.
  8. **Deprecated** This component is deprecated. Use the <DocsLink href="/reference/admin-ui-api/components/data-table2component#datatable2component">DataTable2Component</DocsLink> instead.
  9. *Example*
  10. ```HTML
  11. <vdr-data-table
  12. [items]="items$ | async"
  13. [itemsPerPage]="itemsPerPage$ | async"
  14. [totalItems]="totalItems$ | async"
  15. [currentPage]="currentPage$ | async"
  16. (pageChange)="setPageNumber($event)"
  17. (itemsPerPageChange)="setItemsPerPage($event)"
  18. >
  19. <!-- The header columns are defined first -->
  20. <vdr-dt-column>{{ 'common.name' | translate }}</vdr-dt-column>
  21. <vdr-dt-column></vdr-dt-column>
  22. <vdr-dt-column></vdr-dt-column>
  23. <!-- Then we define how a row is rendered -->
  24. <ng-template let-taxRate="item">
  25. <td class="left align-middle">{{ taxRate.name }}</td>
  26. <td class="left align-middle">{{ taxRate.category.name }}</td>
  27. <td class="left align-middle">{{ taxRate.zone.name }}</td>
  28. <td class="left align-middle">{{ taxRate.value }}%</td>
  29. <td class="right align-middle">
  30. <vdr-table-row-action
  31. iconShape="edit"
  32. [label]="'common.edit' | translate"
  33. [linkTo]="['./', taxRate.id]"
  34. ></vdr-table-row-action>
  35. </td>
  36. <td class="right align-middle">
  37. <vdr-dropdown>
  38. <button type="button" class="btn btn-link btn-sm" vdrDropdownTrigger>
  39. {{ 'common.actions' | translate }}
  40. <clr-icon shape="caret down"></clr-icon>
  41. </button>
  42. <vdr-dropdown-menu vdrPosition="bottom-right">
  43. <button
  44. type="button"
  45. class="delete-button"
  46. (click)="deleteTaxRate(taxRate)"
  47. [disabled]="!(['DeleteSettings', 'DeleteTaxRate'] | hasPermission)"
  48. vdrDropdownItem
  49. >
  50. <clr-icon shape="trash" class="is-danger"></clr-icon>
  51. {{ 'common.delete' | translate }}
  52. </button>
  53. </vdr-dropdown-menu>
  54. </vdr-dropdown>
  55. </td>
  56. </ng-template>
  57. </vdr-data-table>
  58. ```
  59. ```ts title="Signature"
  60. class DataTableComponent<T> implements AfterContentInit, OnChanges, OnInit, OnDestroy {
  61. @Input() items: T[];
  62. @Input() itemsPerPage: number;
  63. @Input() currentPage: number;
  64. @Input() totalItems: number;
  65. @Input() emptyStateLabel: string;
  66. @Input() selectionManager?: SelectionManager<T>;
  67. @Output() pageChange = new EventEmitter<number>();
  68. @Output() itemsPerPageChange = new EventEmitter<number>();
  69. @Input() allSelected: boolean;
  70. @Input() isRowSelectedFn: ((item: T) => boolean) | undefined;
  71. @Output() allSelectChange = new EventEmitter<void>();
  72. @Output() rowSelectChange = new EventEmitter<{ event: MouseEvent; item: T }>();
  73. @ContentChildren(DataTableColumnComponent) columns: QueryList<DataTableColumnComponent>;
  74. @ContentChildren(TemplateRef) templateRefs: QueryList<TemplateRef<any>>;
  75. rowTemplate: TemplateRef<any>;
  76. currentStart: number;
  77. currentEnd: number;
  78. disableSelect = false;
  79. constructor(changeDetectorRef: ChangeDetectorRef)
  80. ngOnInit() => ;
  81. ngOnChanges(changes: SimpleChanges) => ;
  82. ngOnDestroy() => ;
  83. ngAfterContentInit() => void;
  84. trackByFn(index: number, item: any) => ;
  85. onToggleAllClick() => ;
  86. onRowClick(item: T, event: MouseEvent) => ;
  87. }
  88. ```
  89. * Implements: <code>AfterContentInit</code>, <code>OnChanges</code>, <code>OnInit</code>, <code>OnDestroy</code>
  90. <div className="members-wrapper">
  91. ### items
  92. <MemberInfo kind="property" type={`T[]`} />
  93. ### itemsPerPage
  94. <MemberInfo kind="property" type={`number`} />
  95. ### currentPage
  96. <MemberInfo kind="property" type={`number`} />
  97. ### totalItems
  98. <MemberInfo kind="property" type={`number`} />
  99. ### emptyStateLabel
  100. <MemberInfo kind="property" type={`string`} />
  101. ### selectionManager
  102. <MemberInfo kind="property" type={`SelectionManager<T>`} />
  103. ### pageChange
  104. <MemberInfo kind="property" type={``} />
  105. ### itemsPerPageChange
  106. <MemberInfo kind="property" type={``} />
  107. ### allSelected
  108. <MemberInfo kind="property" type={`boolean`} />
  109. ### isRowSelectedFn
  110. <MemberInfo kind="property" type={`((item: T) => boolean) | undefined`} />
  111. ### allSelectChange
  112. <MemberInfo kind="property" type={``} />
  113. ### rowSelectChange
  114. <MemberInfo kind="property" type={``} />
  115. ### columns
  116. <MemberInfo kind="property" type={`QueryList<DataTableColumnComponent>`} />
  117. ### templateRefs
  118. <MemberInfo kind="property" type={`QueryList<TemplateRef<any>>`} />
  119. ### rowTemplate
  120. <MemberInfo kind="property" type={`TemplateRef<any>`} />
  121. ### currentStart
  122. <MemberInfo kind="property" type={`number`} />
  123. ### currentEnd
  124. <MemberInfo kind="property" type={`number`} />
  125. ### disableSelect
  126. <MemberInfo kind="property" type={``} />
  127. ### constructor
  128. <MemberInfo kind="method" type={`(changeDetectorRef: ChangeDetectorRef) => DataTableComponent`} />
  129. ### ngOnInit
  130. <MemberInfo kind="method" type={`() => `} />
  131. ### ngOnChanges
  132. <MemberInfo kind="method" type={`(changes: SimpleChanges) => `} />
  133. ### ngOnDestroy
  134. <MemberInfo kind="method" type={`() => `} />
  135. ### ngAfterContentInit
  136. <MemberInfo kind="method" type={`() => void`} />
  137. ### trackByFn
  138. <MemberInfo kind="method" type={`(index: number, item: any) => `} />
  139. ### onToggleAllClick
  140. <MemberInfo kind="method" type={`() => `} />
  141. ### onRowClick
  142. <MemberInfo kind="method" type={`(item: T, event: MouseEvent) => `} />
  143. </div>