@angular/material 7.2.2 → 7.3.0

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 (143) hide show
  1. package/bundles/material-button.umd.js +2 -2
  2. package/bundles/material-button.umd.js.map +1 -1
  3. package/bundles/material-button.umd.min.js +1 -1
  4. package/bundles/material-button.umd.min.js.map +1 -1
  5. package/bundles/material-chips.umd.js +3 -19
  6. package/bundles/material-chips.umd.js.map +1 -1
  7. package/bundles/material-chips.umd.min.js +1 -1
  8. package/bundles/material-chips.umd.min.js.map +1 -1
  9. package/bundles/material-core.umd.js.map +1 -1
  10. package/bundles/material-core.umd.min.js.map +1 -1
  11. package/bundles/material-datepicker.umd.js +3 -0
  12. package/bundles/material-datepicker.umd.js.map +1 -1
  13. package/bundles/material-datepicker.umd.min.js +1 -1
  14. package/bundles/material-datepicker.umd.min.js.map +1 -1
  15. package/bundles/material-dialog.umd.js +38 -0
  16. package/bundles/material-dialog.umd.js.map +1 -1
  17. package/bundles/material-dialog.umd.min.js +1 -1
  18. package/bundles/material-dialog.umd.min.js.map +1 -1
  19. package/bundles/material-grid-list.umd.js +1 -1
  20. package/bundles/material-grid-list.umd.min.js +1 -1
  21. package/bundles/material-menu.umd.js +6 -6
  22. package/bundles/material-menu.umd.min.js +1 -1
  23. package/bundles/material-stepper.umd.js +21 -1
  24. package/bundles/material-stepper.umd.js.map +1 -1
  25. package/bundles/material-stepper.umd.min.js +1 -1
  26. package/bundles/material-stepper.umd.min.js.map +1 -1
  27. package/bundles/material-table.umd.js +1 -1
  28. package/bundles/material-table.umd.js.map +1 -1
  29. package/bundles/material-table.umd.min.js.map +1 -1
  30. package/bundles/material-tabs.umd.js +179 -45
  31. package/bundles/material-tabs.umd.js.map +1 -1
  32. package/bundles/material-tabs.umd.min.js +2 -2
  33. package/bundles/material-tabs.umd.min.js.map +1 -1
  34. package/bundles/material-tooltip.umd.js +3 -0
  35. package/bundles/material-tooltip.umd.js.map +1 -1
  36. package/bundles/material-tooltip.umd.min.js +1 -1
  37. package/bundles/material-tooltip.umd.min.js.map +1 -1
  38. package/bundles/material.umd.js +258 -76
  39. package/bundles/material.umd.js.map +1 -1
  40. package/bundles/material.umd.min.js +19 -19
  41. package/bundles/material.umd.min.js.map +1 -1
  42. package/button/typings/index.metadata.json +1 -1
  43. package/chips/typings/chip.d.ts +5 -5
  44. package/chips/typings/index.metadata.json +1 -1
  45. package/core/typings/ripple/ripple.d.ts +1 -1
  46. package/dialog/typings/dialog-ref.d.ts +4 -0
  47. package/dialog/typings/index.metadata.json +1 -1
  48. package/esm2015/button.js +2 -2
  49. package/esm2015/button.js.map +1 -1
  50. package/esm2015/chips.js +4 -20
  51. package/esm2015/chips.js.map +1 -1
  52. package/esm2015/core.js +1 -1
  53. package/esm2015/core.js.map +1 -1
  54. package/esm2015/datepicker.js +3 -0
  55. package/esm2015/datepicker.js.map +1 -1
  56. package/esm2015/dialog.js +22 -0
  57. package/esm2015/dialog.js.map +1 -1
  58. package/esm2015/grid-list.js +1 -1
  59. package/esm2015/material.js +4 -4
  60. package/esm2015/material.js.map +1 -1
  61. package/esm2015/menu.js +1 -1
  62. package/esm2015/stepper.js +17 -1
  63. package/esm2015/stepper.js.map +1 -1
  64. package/esm2015/table.js +1 -1
  65. package/esm2015/table.js.map +1 -1
  66. package/esm2015/tabs.js +130 -36
  67. package/esm2015/tabs.js.map +1 -1
  68. package/esm2015/tooltip.js +3 -0
  69. package/esm2015/tooltip.js.map +1 -1
  70. package/esm5/button.es5.js +2 -2
  71. package/esm5/button.es5.js.map +1 -1
  72. package/esm5/chips.es5.js +3 -19
  73. package/esm5/chips.es5.js.map +1 -1
  74. package/esm5/core.es5.js.map +1 -1
  75. package/esm5/datepicker.es5.js +3 -0
  76. package/esm5/datepicker.es5.js.map +1 -1
  77. package/esm5/dialog.es5.js +38 -0
  78. package/esm5/dialog.es5.js.map +1 -1
  79. package/esm5/grid-list.es5.js +1 -1
  80. package/esm5/material.es5.js +4 -4
  81. package/esm5/material.es5.js.map +1 -1
  82. package/esm5/menu.es5.js +1 -1
  83. package/esm5/stepper.es5.js +21 -1
  84. package/esm5/stepper.es5.js.map +1 -1
  85. package/esm5/table.es5.js +1 -1
  86. package/esm5/table.es5.js.map +1 -1
  87. package/esm5/tabs.es5.js +171 -37
  88. package/esm5/tabs.es5.js.map +1 -1
  89. package/esm5/tooltip.es5.js +3 -0
  90. package/esm5/tooltip.es5.js.map +1 -1
  91. package/grid-list/typings/index.d.ts +1 -1
  92. package/grid-list/typings/index.metadata.json +1 -1
  93. package/material.d.ts +1 -1
  94. package/material.metadata.json +3 -3
  95. package/menu/typings/index.d.ts +4 -4
  96. package/menu/typings/index.metadata.json +1 -1
  97. package/package.json +5 -5
  98. package/stepper/typings/index.metadata.json +1 -1
  99. package/stepper/typings/step-header.d.ts +1 -0
  100. package/tabs/typings/index.d.ts +5 -5
  101. package/tabs/typings/index.metadata.json +1 -1
  102. package/tabs/typings/tab-header.d.ts +28 -3
  103. package/tabs/typings/tab-nav-bar/tab-nav-bar.d.ts +6 -6
  104. package/tooltip/typings/index.metadata.json +1 -1
  105. package/tooltip/typings/tooltip.d.ts +1 -0
  106. package/typings/button/index.metadata.json +1 -1
  107. package/typings/chips/chip.d.ts +5 -5
  108. package/typings/chips/index.metadata.json +1 -1
  109. package/typings/core/ripple/ripple.d.ts +1 -1
  110. package/typings/dialog/dialog-ref.d.ts +4 -0
  111. package/typings/dialog/index.metadata.json +1 -1
  112. package/typings/esm5/button/index.metadata.json +1 -1
  113. package/typings/esm5/chips/chip.d.ts +5 -5
  114. package/typings/esm5/chips/index.metadata.json +1 -1
  115. package/typings/esm5/core/ripple/ripple.d.ts +1 -1
  116. package/typings/esm5/dialog/dialog-ref.d.ts +4 -0
  117. package/typings/esm5/dialog/index.metadata.json +1 -1
  118. package/typings/esm5/grid-list/index.d.ts +1 -1
  119. package/typings/esm5/grid-list/index.metadata.json +1 -1
  120. package/typings/esm5/index.metadata.json +1 -1
  121. package/typings/esm5/menu/index.d.ts +4 -4
  122. package/typings/esm5/menu/index.metadata.json +1 -1
  123. package/typings/esm5/stepper/index.metadata.json +1 -1
  124. package/typings/esm5/stepper/step-header.d.ts +1 -0
  125. package/typings/esm5/tabs/index.d.ts +5 -5
  126. package/typings/esm5/tabs/index.metadata.json +1 -1
  127. package/typings/esm5/tabs/tab-header.d.ts +28 -3
  128. package/typings/esm5/tabs/tab-nav-bar/tab-nav-bar.d.ts +6 -6
  129. package/typings/esm5/tooltip/index.metadata.json +1 -1
  130. package/typings/esm5/tooltip/tooltip.d.ts +1 -0
  131. package/typings/grid-list/index.d.ts +1 -1
  132. package/typings/grid-list/index.metadata.json +1 -1
  133. package/typings/index.metadata.json +1 -1
  134. package/typings/menu/index.d.ts +4 -4
  135. package/typings/menu/index.metadata.json +1 -1
  136. package/typings/stepper/index.metadata.json +1 -1
  137. package/typings/stepper/step-header.d.ts +1 -0
  138. package/typings/tabs/index.d.ts +5 -5
  139. package/typings/tabs/index.metadata.json +1 -1
  140. package/typings/tabs/tab-header.d.ts +28 -3
  141. package/typings/tabs/tab-nav-bar/tab-nav-bar.d.ts +6 -6
  142. package/typings/tooltip/index.metadata.json +1 -1
  143. package/typings/tooltip/tooltip.d.ts +1 -0
@@ -1 +1 @@
1
- {"version":3,"file":"table.es5.js","sources":["../../../src/lib/table/table-data-source.ts","../../../src/lib/table/table-module.ts","../../../src/lib/table/row.ts","../../../src/lib/table/cell.ts","../../../src/lib/table/table.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {_isNumberValue} from '@angular/cdk/coercion';\nimport {DataSource} from '@angular/cdk/table';\nimport {\n BehaviorSubject,\n combineLatest,\n merge,\n Observable,\n of as observableOf,\n Subscription,\n Subject,\n} from 'rxjs';\nimport {MatPaginator, PageEvent} from '@angular/material/paginator';\nimport {MatSort, Sort} from '@angular/material/sort';\nimport {map} from 'rxjs/operators';\n\n/**\n * Corresponds to `Number.MAX_SAFE_INTEGER`. Moved out into a variable here due to\n * flaky browser support and the value not being defined in Closure's typings.\n */\nconst MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Data source that accepts a client-side data array and includes native support of filtering,\n * sorting (using MatSort), and pagination (using MatPaginator).\n *\n * Allows for sort customization by overriding sortingDataAccessor, which defines how data\n * properties are accessed. Also allows for filter customization by overriding filterTermAccessor,\n * which defines how row data is converted to a string for filter matching.\n */\nexport class MatTableDataSource<T> extends DataSource<T> {\n /** Stream that emits when a new data array is set on the data source. */\n private readonly _data: BehaviorSubject<T[]>;\n\n /** Stream emitting render data to the table (depends on ordered data changes). */\n private readonly _renderData = new BehaviorSubject<T[]>([]);\n\n /** Stream that emits when a new filter string is set on the data source. */\n private readonly _filter = new BehaviorSubject<string>('');\n\n /** Used to react to internal changes of the paginator that are made by the data source itself. */\n private readonly _internalPageChanges = new Subject<void>();\n\n /**\n * Subscription to the changes that should trigger an update to the table's rendered rows, such\n * as filtering, sorting, pagination, or base data changes.\n */\n _renderChangesSubscription = Subscription.EMPTY;\n\n /**\n * The filtered set of data that has been matched by the filter string, or all the data if there\n * is no filter. Useful for knowing the set of data the table represents.\n * For example, a 'selectAll()' function would likely want to select the set of filtered data\n * shown to the user rather than all the data.\n */\n filteredData: T[];\n\n /** Array of data that should be rendered by the table, where each object represents one row. */\n get data() { return this._data.value; }\n set data(data: T[]) { this._data.next(data); }\n\n /**\n * Filter term that should be used to filter out objects from the data array. To override how\n * data objects match to this filter string, provide a custom function for filterPredicate.\n */\n get filter(): string { return this._filter.value; }\n set filter(filter: string) { this._filter.next(filter); }\n\n /**\n * Instance of the MatSort directive used by the table to control its sorting. Sort changes\n * emitted by the MatSort will trigger an update to the table's rendered data.\n */\n get sort(): MatSort | null { return this._sort; }\n set sort(sort: MatSort|null) {\n this._sort = sort;\n this._updateChangeSubscription();\n }\n private _sort: MatSort|null;\n\n /**\n * Instance of the MatPaginator component used by the table to control what page of the data is\n * displayed. Page changes emitted by the MatPaginator will trigger an update to the\n * table's rendered data.\n *\n * Note that the data source uses the paginator's properties to calculate which page of data\n * should be displayed. If the paginator receives its properties as template inputs,\n * e.g. `[pageLength]=100` or `[pageIndex]=1`, then be sure that the paginator's view has been\n * initialized before assigning it to this data source.\n */\n get paginator(): MatPaginator | null { return this._paginator; }\n set paginator(paginator: MatPaginator|null) {\n this._paginator = paginator;\n this._updateChangeSubscription();\n }\n private _paginator: MatPaginator|null;\n\n /**\n * Data accessor function that is used for accessing data properties for sorting through\n * the default sortData function.\n * This default function assumes that the sort header IDs (which defaults to the column name)\n * matches the data's properties (e.g. column Xyz represents data['Xyz']).\n * May be set to a custom function for different behavior.\n * @param data Data object that is being accessed.\n * @param sortHeaderId The name of the column that represents the data.\n */\n sortingDataAccessor: ((data: T, sortHeaderId: string) => string|number) =\n (data: T, sortHeaderId: string): string|number => {\n const value = (data as {[key: string]: any})[sortHeaderId];\n\n if (_isNumberValue(value)) {\n const numberValue = Number(value);\n\n // Numbers beyond `MAX_SAFE_INTEGER` can't be compared reliably so we\n // leave them as strings. For more info: https://goo.gl/y5vbSg\n return numberValue < MAX_SAFE_INTEGER ? numberValue : value;\n }\n\n return value;\n }\n\n /**\n * Gets a sorted copy of the data array based on the state of the MatSort. Called\n * after changes are made to the filtered data or when sort changes are emitted from MatSort.\n * By default, the function retrieves the active sort and its direction and compares data\n * by retrieving data using the sortingDataAccessor. May be overridden for a custom implementation\n * of data ordering.\n * @param data The array of data that should be sorted.\n * @param sort The connected MatSort that holds the current sort state.\n */\n sortData: ((data: T[], sort: MatSort) => T[]) = (data: T[], sort: MatSort): T[] => {\n const active = sort.active;\n const direction = sort.direction;\n if (!active || direction == '') { return data; }\n\n return data.sort((a, b) => {\n let valueA = this.sortingDataAccessor(a, active);\n let valueB = this.sortingDataAccessor(b, active);\n\n // If both valueA and valueB exist (truthy), then compare the two. Otherwise, check if\n // one value exists while the other doesn't. In this case, existing value should come first.\n // This avoids inconsistent results when comparing values to undefined/null.\n // If neither value exists, return 0 (equal).\n let comparatorResult = 0;\n if (valueA != null && valueB != null) {\n // Check if one value is greater than the other; if equal, comparatorResult should remain 0.\n if (valueA > valueB) {\n comparatorResult = 1;\n } else if (valueA < valueB) {\n comparatorResult = -1;\n }\n } else if (valueA != null) {\n comparatorResult = 1;\n } else if (valueB != null) {\n comparatorResult = -1;\n }\n\n return comparatorResult * (direction == 'asc' ? 1 : -1);\n });\n }\n\n /**\n * Checks if a data object matches the data source's filter string. By default, each data object\n * is converted to a string of its properties and returns true if the filter has\n * at least one occurrence in that string. By default, the filter string has its whitespace\n * trimmed and the match is case-insensitive. May be overridden for a custom implementation of\n * filter matching.\n * @param data Data object used to check against the filter.\n * @param filter Filter string that has been set on the data source.\n * @returns Whether the filter matches against the data\n */\n filterPredicate: ((data: T, filter: string) => boolean) = (data: T, filter: string): boolean => {\n // Transform the data into a lowercase string of all property values.\n const dataStr = Object.keys(data).reduce((currentTerm: string, key: string) => {\n // Use an obscure Unicode character to delimit the words in the concatenated string.\n // This avoids matches where the values of two columns combined will match the user's query\n // (e.g. `Flute` and `Stop` will match `Test`). The character is intended to be something\n // that has a very low chance of being typed in by somebody in a text field. This one in\n // particular is \"White up-pointing triangle with dot\" from\n // https://en.wikipedia.org/wiki/List_of_Unicode_characters\n return currentTerm + (data as {[key: string]: any})[key] + '◬';\n }, '').toLowerCase();\n\n // Transform the filter by converting it to lowercase and removing whitespace.\n const transformedFilter = filter.trim().toLowerCase();\n\n return dataStr.indexOf(transformedFilter) != -1;\n }\n\n constructor(initialData: T[] = []) {\n super();\n this._data = new BehaviorSubject<T[]>(initialData);\n this._updateChangeSubscription();\n }\n\n /**\n * Subscribe to changes that should trigger an update to the table's rendered rows. When the\n * changes occur, process the current state of the filter, sort, and pagination along with\n * the provided base data and send it to the table for rendering.\n */\n _updateChangeSubscription() {\n // Sorting and/or pagination should be watched if MatSort and/or MatPaginator are provided.\n // The events should emit whenever the component emits a change or initializes, or if no\n // component is provided, a stream with just a null event should be provided.\n // The `sortChange` and `pageChange` acts as a signal to the combineLatests below so that the\n // pipeline can progress to the next step. Note that the value from these streams are not used,\n // they purely act as a signal to progress in the pipeline.\n const sortChange: Observable<Sort|null|void> = this._sort ?\n merge<Sort|void>(this._sort.sortChange, this._sort.initialized) :\n observableOf(null);\n const pageChange: Observable<PageEvent|null|void> = this._paginator ?\n merge<PageEvent|void>(\n this._paginator.page, this._internalPageChanges, this._paginator.initialized) :\n observableOf(null);\n const dataStream = this._data;\n // Watch for base data or filter changes to provide a filtered set of data.\n const filteredData = combineLatest(dataStream, this._filter)\n .pipe(map(([data]) => this._filterData(data)));\n // Watch for filtered data or sort changes to provide an ordered set of data.\n const orderedData = combineLatest(filteredData, sortChange)\n .pipe(map(([data]) => this._orderData(data)));\n // Watch for ordered data or page changes to provide a paged set of data.\n const paginatedData = combineLatest(orderedData, pageChange)\n .pipe(map(([data]) => this._pageData(data)));\n // Watched for paged data changes and send the result to the table to render.\n this._renderChangesSubscription.unsubscribe();\n this._renderChangesSubscription = paginatedData.subscribe(data => this._renderData.next(data));\n }\n\n /**\n * Returns a filtered data array where each filter object contains the filter string within\n * the result of the filterTermAccessor function. If no filter is set, returns the data array\n * as provided.\n */\n _filterData(data: T[]) {\n // If there is a filter string, filter out data that does not contain it.\n // Each data object is converted to a string using the function defined by filterTermAccessor.\n // May be overridden for customization.\n this.filteredData =\n !this.filter ? data : data.filter(obj => this.filterPredicate(obj, this.filter));\n\n if (this.paginator) { this._updatePaginator(this.filteredData.length); }\n\n return this.filteredData;\n }\n\n /**\n * Returns a sorted copy of the data if MatSort has a sort applied, otherwise just returns the\n * data array as provided. Uses the default data accessor for data lookup, unless a\n * sortDataAccessor function is defined.\n */\n _orderData(data: T[]): T[] {\n // If there is no active sort or direction, return the data without trying to sort.\n if (!this.sort) { return data; }\n\n return this.sortData(data.slice(), this.sort);\n }\n\n /**\n * Returns a paged splice of the provided data array according to the provided MatPaginator's page\n * index and length. If there is no paginator provided, returns the data array as provided.\n */\n _pageData(data: T[]): T[] {\n if (!this.paginator) { return data; }\n\n const startIndex = this.paginator.pageIndex * this.paginator.pageSize;\n return data.slice().splice(startIndex, this.paginator.pageSize);\n }\n\n /**\n * Updates the paginator to reflect the length of the filtered data, and makes sure that the page\n * index does not exceed the paginator's last page. Values are changed in a resolved promise to\n * guard against making property changes within a round of change detection.\n */\n _updatePaginator(filteredDataLength: number) {\n Promise.resolve().then(() => {\n const paginator = this.paginator;\n\n if (!paginator) { return; }\n\n paginator.length = filteredDataLength;\n\n // If the page index is set beyond the page, reduce it to the last page.\n if (paginator.pageIndex > 0) {\n const lastPageIndex = Math.ceil(paginator.length / paginator.pageSize) - 1 || 0;\n const newPageIndex = Math.min(paginator.pageIndex, lastPageIndex);\n\n if (newPageIndex !== paginator.pageIndex) {\n paginator.pageIndex = newPageIndex;\n\n // Since the paginator only emits after user-generated changes,\n // we need our own stream so we know to should re-render the data.\n this._internalPageChanges.next();\n }\n }\n });\n }\n\n /**\n * Used by the MatTable. Called when it connects to the data source.\n * @docs-private\n */\n connect() { return this._renderData; }\n\n /**\n * Used by the MatTable. Called when it is destroyed. No-op.\n * @docs-private\n */\n disconnect() { }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {NgModule} from '@angular/core';\nimport {MatTable} from './table';\nimport {CdkTableModule} from '@angular/cdk/table';\nimport {\n MatCell,\n MatCellDef,\n MatColumnDef,\n MatFooterCell,\n MatFooterCellDef,\n MatHeaderCell,\n MatHeaderCellDef\n} from './cell';\nimport {\n MatFooterRow,\n MatFooterRowDef,\n MatHeaderRow,\n MatHeaderRowDef,\n MatRow,\n MatRowDef\n} from './row';\nimport {CommonModule} from '@angular/common';\nimport {MatCommonModule} from '@angular/material/core';\n\nconst EXPORTED_DECLARATIONS = [\n // Table\n MatTable,\n\n // Template defs\n MatHeaderCellDef,\n MatHeaderRowDef,\n MatColumnDef,\n MatCellDef,\n MatRowDef,\n MatFooterCellDef,\n MatFooterRowDef,\n\n // Cell directives\n MatHeaderCell,\n MatCell,\n MatFooterCell,\n\n // Row directions\n MatHeaderRow,\n MatRow,\n MatFooterRow,\n];\n\n@NgModule({\n imports: [CdkTableModule, CommonModule, MatCommonModule],\n exports: EXPORTED_DECLARATIONS,\n declarations: EXPORTED_DECLARATIONS,\n})\nexport class MatTableModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {\n ChangeDetectionStrategy,\n Component,\n Directive,\n ViewEncapsulation\n} from '@angular/core';\nimport {\n CDK_ROW_TEMPLATE, CdkFooterRow, CdkFooterRowDef,\n CdkHeaderRow,\n CdkHeaderRowDef,\n CdkRow,\n CdkRowDef,\n} from '@angular/cdk/table';\n\n/**\n * Header row definition for the mat-table.\n * Captures the header row's template and other header properties such as the columns to display.\n */\n@Directive({\n selector: '[matHeaderRowDef]',\n providers: [{provide: CdkHeaderRowDef, useExisting: MatHeaderRowDef}],\n inputs: ['columns: matHeaderRowDef', 'sticky: matHeaderRowDefSticky'],\n})\nexport class MatHeaderRowDef extends CdkHeaderRowDef {}\n\n/**\n * Footer row definition for the mat-table.\n * Captures the footer row's template and other footer properties such as the columns to display.\n */\n@Directive({\n selector: '[matFooterRowDef]',\n providers: [{provide: CdkFooterRowDef, useExisting: MatFooterRowDef}],\n inputs: ['columns: matFooterRowDef', 'sticky: matFooterRowDefSticky'],\n})\nexport class MatFooterRowDef extends CdkFooterRowDef {}\n\n/**\n * Data row definition for the mat-table.\n * Captures the data row's template and other properties such as the columns to display and\n * a when predicate that describes when this row should be used.\n */\n@Directive({\n selector: '[matRowDef]',\n providers: [{provide: CdkRowDef, useExisting: MatRowDef}],\n inputs: ['columns: matRowDefColumns', 'when: matRowDefWhen'],\n})\nexport class MatRowDef<T> extends CdkRowDef<T> {}\n\n/** Footer template container that contains the cell outlet. Adds the right class and role. */\n@Component({\n moduleId: module.id,\n selector: 'mat-header-row, tr[mat-header-row]',\n template: CDK_ROW_TEMPLATE,\n host: {\n 'class': 'mat-header-row',\n 'role': 'row',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matHeaderRow',\n providers: [{provide: CdkHeaderRow, useExisting: MatHeaderRow}],\n})\nexport class MatHeaderRow extends CdkHeaderRow { }\n\n/** Footer template container that contains the cell outlet. Adds the right class and role. */\n@Component({\n moduleId: module.id,\n selector: 'mat-footer-row, tr[mat-footer-row]',\n template: CDK_ROW_TEMPLATE,\n host: {\n 'class': 'mat-footer-row',\n 'role': 'row',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matFooterRow',\n providers: [{provide: CdkFooterRow, useExisting: MatFooterRow}],\n})\nexport class MatFooterRow extends CdkFooterRow { }\n\n/** Data row template container that contains the cell outlet. Adds the right class and role. */\n@Component({\n moduleId: module.id,\n selector: 'mat-row, tr[mat-row]',\n template: CDK_ROW_TEMPLATE,\n host: {\n 'class': 'mat-row',\n 'role': 'row',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matRow',\n providers: [{provide: CdkRow, useExisting: MatRow}],\n})\nexport class MatRow extends CdkRow { }\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Directive, ElementRef, Input} from '@angular/core';\nimport {\n CdkCell,\n CdkCellDef,\n CdkColumnDef, CdkFooterCell, CdkFooterCellDef,\n CdkHeaderCell,\n CdkHeaderCellDef,\n} from '@angular/cdk/table';\n\n/**\n * Cell definition for the mat-table.\n * Captures the template of a column's data row cell as well as cell-specific properties.\n */\n@Directive({\n selector: '[matCellDef]',\n providers: [{provide: CdkCellDef, useExisting: MatCellDef}]\n})\nexport class MatCellDef extends CdkCellDef {}\n\n/**\n * Header cell definition for the mat-table.\n * Captures the template of a column's header cell and as well as cell-specific properties.\n */\n@Directive({\n selector: '[matHeaderCellDef]',\n providers: [{provide: CdkHeaderCellDef, useExisting: MatHeaderCellDef}]\n})\nexport class MatHeaderCellDef extends CdkHeaderCellDef {}\n\n/**\n * Footer cell definition for the mat-table.\n * Captures the template of a column's footer cell and as well as cell-specific properties.\n */\n@Directive({\n selector: '[matFooterCellDef]',\n providers: [{provide: CdkFooterCellDef, useExisting: MatFooterCellDef}]\n})\nexport class MatFooterCellDef extends CdkFooterCellDef {}\n\n/**\n * Column definition for the mat-table.\n * Defines a set of cells available for a table column.\n */\n@Directive({\n selector: '[matColumnDef]',\n providers: [\n {provide: CdkColumnDef, useExisting: MatColumnDef},\n {provide: 'MAT_SORT_HEADER_COLUMN_DEF', useExisting: MatColumnDef}\n ],\n})\nexport class MatColumnDef extends CdkColumnDef {\n /** Unique name for this column. */\n @Input('matColumnDef') name: string;\n\n /** Whether this column should be sticky positioned at the start of the row */\n @Input() sticky: boolean;\n\n /** Whether this column should be sticky positioned on the end of the row */\n @Input() stickyEnd: boolean;\n}\n\n/** Header cell template container that adds the right classes and role. */\n@Directive({\n selector: 'mat-header-cell, th[mat-header-cell]',\n host: {\n 'class': 'mat-header-cell',\n 'role': 'columnheader',\n },\n})\nexport class MatHeaderCell extends CdkHeaderCell {\n constructor(columnDef: CdkColumnDef,\n elementRef: ElementRef<HTMLElement>) {\n super(columnDef, elementRef);\n elementRef.nativeElement.classList.add(`mat-column-${columnDef.cssClassFriendlyName}`);\n }\n}\n\n/** Footer cell template container that adds the right classes and role. */\n@Directive({\n selector: 'mat-footer-cell, td[mat-footer-cell]',\n host: {\n 'class': 'mat-footer-cell',\n 'role': 'gridcell',\n },\n})\nexport class MatFooterCell extends CdkFooterCell {\n constructor(columnDef: CdkColumnDef,\n elementRef: ElementRef) {\n super(columnDef, elementRef);\n elementRef.nativeElement.classList.add(`mat-column-${columnDef.cssClassFriendlyName}`);\n }\n}\n\n/** Cell template container that adds the right classes and role. */\n@Directive({\n selector: 'mat-cell, td[mat-cell]',\n host: {\n 'class': 'mat-cell',\n 'role': 'gridcell',\n },\n})\nexport class MatCell extends CdkCell {\n constructor(columnDef: CdkColumnDef,\n elementRef: ElementRef<HTMLElement>) {\n super(columnDef, elementRef);\n elementRef.nativeElement.classList.add(`mat-column-${columnDef.cssClassFriendlyName}`);\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {CDK_TABLE_TEMPLATE, CdkTable} from '@angular/cdk/table';\nimport {ChangeDetectionStrategy, Component, ViewEncapsulation} from '@angular/core';\n\n/**\n * Wrapper for the CdkTable with Material design styles.\n */\n@Component({\n moduleId: module.id,\n selector: 'mat-table, table[mat-table]',\n exportAs: 'matTable',\n template: CDK_TABLE_TEMPLATE,\n styleUrls: ['table.css'],\n host: {\n 'class': 'mat-table',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatTable<T> extends CdkTable<T> {\n /** Overrides the sticky CSS class set by the `CdkTable`. */\n protected stickyCssClass = 'mat-table-sticky';\n}\n"],"names":["observableOf","tslib_1.__extends"],"mappings":"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"}
1
+ {"version":3,"file":"table.es5.js","sources":["../../../src/lib/table/table-data-source.ts","../../../src/lib/table/table-module.ts","../../../src/lib/table/row.ts","../../../src/lib/table/cell.ts","../../../src/lib/table/table.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {_isNumberValue} from '@angular/cdk/coercion';\nimport {DataSource} from '@angular/cdk/table';\nimport {\n BehaviorSubject,\n combineLatest,\n merge,\n Observable,\n of as observableOf,\n Subscription,\n Subject,\n} from 'rxjs';\nimport {MatPaginator, PageEvent} from '@angular/material/paginator';\nimport {MatSort, Sort} from '@angular/material/sort';\nimport {map} from 'rxjs/operators';\n\n/**\n * Corresponds to `Number.MAX_SAFE_INTEGER`. Moved out into a variable here due to\n * flaky browser support and the value not being defined in Closure's typings.\n */\nconst MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Data source that accepts a client-side data array and includes native support of filtering,\n * sorting (using MatSort), and pagination (using MatPaginator).\n *\n * Allows for sort customization by overriding sortingDataAccessor, which defines how data\n * properties are accessed. Also allows for filter customization by overriding filterTermAccessor,\n * which defines how row data is converted to a string for filter matching.\n */\nexport class MatTableDataSource<T> extends DataSource<T> {\n /** Stream that emits when a new data array is set on the data source. */\n private readonly _data: BehaviorSubject<T[]>;\n\n /** Stream emitting render data to the table (depends on ordered data changes). */\n private readonly _renderData = new BehaviorSubject<T[]>([]);\n\n /** Stream that emits when a new filter string is set on the data source. */\n private readonly _filter = new BehaviorSubject<string>('');\n\n /** Used to react to internal changes of the paginator that are made by the data source itself. */\n private readonly _internalPageChanges = new Subject<void>();\n\n /**\n * Subscription to the changes that should trigger an update to the table's rendered rows, such\n * as filtering, sorting, pagination, or base data changes.\n */\n _renderChangesSubscription = Subscription.EMPTY;\n\n /**\n * The filtered set of data that has been matched by the filter string, or all the data if there\n * is no filter. Useful for knowing the set of data the table represents.\n * For example, a 'selectAll()' function would likely want to select the set of filtered data\n * shown to the user rather than all the data.\n */\n filteredData: T[];\n\n /** Array of data that should be rendered by the table, where each object represents one row. */\n get data() { return this._data.value; }\n set data(data: T[]) { this._data.next(data); }\n\n /**\n * Filter term that should be used to filter out objects from the data array. To override how\n * data objects match to this filter string, provide a custom function for filterPredicate.\n */\n get filter(): string { return this._filter.value; }\n set filter(filter: string) { this._filter.next(filter); }\n\n /**\n * Instance of the MatSort directive used by the table to control its sorting. Sort changes\n * emitted by the MatSort will trigger an update to the table's rendered data.\n */\n get sort(): MatSort | null { return this._sort; }\n set sort(sort: MatSort|null) {\n this._sort = sort;\n this._updateChangeSubscription();\n }\n private _sort: MatSort|null;\n\n /**\n * Instance of the MatPaginator component used by the table to control what page of the data is\n * displayed. Page changes emitted by the MatPaginator will trigger an update to the\n * table's rendered data.\n *\n * Note that the data source uses the paginator's properties to calculate which page of data\n * should be displayed. If the paginator receives its properties as template inputs,\n * e.g. `[pageLength]=100` or `[pageIndex]=1`, then be sure that the paginator's view has been\n * initialized before assigning it to this data source.\n */\n get paginator(): MatPaginator | null { return this._paginator; }\n set paginator(paginator: MatPaginator|null) {\n this._paginator = paginator;\n this._updateChangeSubscription();\n }\n private _paginator: MatPaginator|null;\n\n /**\n * Data accessor function that is used for accessing data properties for sorting through\n * the default sortData function.\n * This default function assumes that the sort header IDs (which defaults to the column name)\n * matches the data's properties (e.g. column Xyz represents data['Xyz']).\n * May be set to a custom function for different behavior.\n * @param data Data object that is being accessed.\n * @param sortHeaderId The name of the column that represents the data.\n */\n sortingDataAccessor: ((data: T, sortHeaderId: string) => string|number) =\n (data: T, sortHeaderId: string): string|number => {\n const value = (data as {[key: string]: any})[sortHeaderId];\n\n if (_isNumberValue(value)) {\n const numberValue = Number(value);\n\n // Numbers beyond `MAX_SAFE_INTEGER` can't be compared reliably so we\n // leave them as strings. For more info: https://goo.gl/y5vbSg\n return numberValue < MAX_SAFE_INTEGER ? numberValue : value;\n }\n\n return value;\n }\n\n /**\n * Gets a sorted copy of the data array based on the state of the MatSort. Called\n * after changes are made to the filtered data or when sort changes are emitted from MatSort.\n * By default, the function retrieves the active sort and its direction and compares data\n * by retrieving data using the sortingDataAccessor. May be overridden for a custom implementation\n * of data ordering.\n * @param data The array of data that should be sorted.\n * @param sort The connected MatSort that holds the current sort state.\n */\n sortData: ((data: T[], sort: MatSort) => T[]) = (data: T[], sort: MatSort): T[] => {\n const active = sort.active;\n const direction = sort.direction;\n if (!active || direction == '') { return data; }\n\n return data.sort((a, b) => {\n let valueA = this.sortingDataAccessor(a, active);\n let valueB = this.sortingDataAccessor(b, active);\n\n // If both valueA and valueB exist (truthy), then compare the two. Otherwise, check if\n // one value exists while the other doesn't. In this case, existing value should come first.\n // This avoids inconsistent results when comparing values to undefined/null.\n // If neither value exists, return 0 (equal).\n let comparatorResult = 0;\n if (valueA != null && valueB != null) {\n // Check if one value is greater than the other; if equal, comparatorResult should remain 0.\n if (valueA > valueB) {\n comparatorResult = 1;\n } else if (valueA < valueB) {\n comparatorResult = -1;\n }\n } else if (valueA != null) {\n comparatorResult = 1;\n } else if (valueB != null) {\n comparatorResult = -1;\n }\n\n return comparatorResult * (direction == 'asc' ? 1 : -1);\n });\n }\n\n /**\n * Checks if a data object matches the data source's filter string. By default, each data object\n * is converted to a string of its properties and returns true if the filter has\n * at least one occurrence in that string. By default, the filter string has its whitespace\n * trimmed and the match is case-insensitive. May be overridden for a custom implementation of\n * filter matching.\n * @param data Data object used to check against the filter.\n * @param filter Filter string that has been set on the data source.\n * @returns Whether the filter matches against the data\n */\n filterPredicate: ((data: T, filter: string) => boolean) = (data: T, filter: string): boolean => {\n // Transform the data into a lowercase string of all property values.\n const dataStr = Object.keys(data).reduce((currentTerm: string, key: string) => {\n // Use an obscure Unicode character to delimit the words in the concatenated string.\n // This avoids matches where the values of two columns combined will match the user's query\n // (e.g. `Flute` and `Stop` will match `Test`). The character is intended to be something\n // that has a very low chance of being typed in by somebody in a text field. This one in\n // particular is \"White up-pointing triangle with dot\" from\n // https://en.wikipedia.org/wiki/List_of_Unicode_characters\n return currentTerm + (data as {[key: string]: any})[key] + '◬';\n }, '').toLowerCase();\n\n // Transform the filter by converting it to lowercase and removing whitespace.\n const transformedFilter = filter.trim().toLowerCase();\n\n return dataStr.indexOf(transformedFilter) != -1;\n }\n\n constructor(initialData: T[] = []) {\n super();\n this._data = new BehaviorSubject<T[]>(initialData);\n this._updateChangeSubscription();\n }\n\n /**\n * Subscribe to changes that should trigger an update to the table's rendered rows. When the\n * changes occur, process the current state of the filter, sort, and pagination along with\n * the provided base data and send it to the table for rendering.\n */\n _updateChangeSubscription() {\n // Sorting and/or pagination should be watched if MatSort and/or MatPaginator are provided.\n // The events should emit whenever the component emits a change or initializes, or if no\n // component is provided, a stream with just a null event should be provided.\n // The `sortChange` and `pageChange` acts as a signal to the combineLatests below so that the\n // pipeline can progress to the next step. Note that the value from these streams are not used,\n // they purely act as a signal to progress in the pipeline.\n const sortChange: Observable<Sort|null|void> = this._sort ?\n merge<Sort|void>(this._sort.sortChange, this._sort.initialized) :\n observableOf(null);\n const pageChange: Observable<PageEvent|null|void> = this._paginator ?\n merge<PageEvent|void>(\n this._paginator.page, this._internalPageChanges, this._paginator.initialized) :\n observableOf(null);\n const dataStream = this._data;\n // Watch for base data or filter changes to provide a filtered set of data.\n const filteredData = combineLatest(dataStream, this._filter)\n .pipe(map(([data]) => this._filterData(data)));\n // Watch for filtered data or sort changes to provide an ordered set of data.\n const orderedData = combineLatest(filteredData, sortChange)\n .pipe(map(([data]) => this._orderData(data)));\n // Watch for ordered data or page changes to provide a paged set of data.\n const paginatedData = combineLatest(orderedData, pageChange)\n .pipe(map(([data]) => this._pageData(data)));\n // Watched for paged data changes and send the result to the table to render.\n this._renderChangesSubscription.unsubscribe();\n this._renderChangesSubscription = paginatedData.subscribe(data => this._renderData.next(data));\n }\n\n /**\n * Returns a filtered data array where each filter object contains the filter string within\n * the result of the filterTermAccessor function. If no filter is set, returns the data array\n * as provided.\n */\n _filterData(data: T[]) {\n // If there is a filter string, filter out data that does not contain it.\n // Each data object is converted to a string using the function defined by filterTermAccessor.\n // May be overridden for customization.\n this.filteredData =\n !this.filter ? data : data.filter(obj => this.filterPredicate(obj, this.filter));\n\n if (this.paginator) { this._updatePaginator(this.filteredData.length); }\n\n return this.filteredData;\n }\n\n /**\n * Returns a sorted copy of the data if MatSort has a sort applied, otherwise just returns the\n * data array as provided. Uses the default data accessor for data lookup, unless a\n * sortDataAccessor function is defined.\n */\n _orderData(data: T[]): T[] {\n // If there is no active sort or direction, return the data without trying to sort.\n if (!this.sort) { return data; }\n\n return this.sortData(data.slice(), this.sort);\n }\n\n /**\n * Returns a paged splice of the provided data array according to the provided MatPaginator's page\n * index and length. If there is no paginator provided, returns the data array as provided.\n */\n _pageData(data: T[]): T[] {\n if (!this.paginator) { return data; }\n\n const startIndex = this.paginator.pageIndex * this.paginator.pageSize;\n return data.slice().splice(startIndex, this.paginator.pageSize);\n }\n\n /**\n * Updates the paginator to reflect the length of the filtered data, and makes sure that the page\n * index does not exceed the paginator's last page. Values are changed in a resolved promise to\n * guard against making property changes within a round of change detection.\n */\n _updatePaginator(filteredDataLength: number) {\n Promise.resolve().then(() => {\n const paginator = this.paginator;\n\n if (!paginator) { return; }\n\n paginator.length = filteredDataLength;\n\n // If the page index is set beyond the page, reduce it to the last page.\n if (paginator.pageIndex > 0) {\n const lastPageIndex = Math.ceil(paginator.length / paginator.pageSize) - 1 || 0;\n const newPageIndex = Math.min(paginator.pageIndex, lastPageIndex);\n\n if (newPageIndex !== paginator.pageIndex) {\n paginator.pageIndex = newPageIndex;\n\n // Since the paginator only emits after user-generated changes,\n // we need our own stream so we know to should re-render the data.\n this._internalPageChanges.next();\n }\n }\n });\n }\n\n /**\n * Used by the MatTable. Called when it connects to the data source.\n * @docs-private\n */\n connect() { return this._renderData; }\n\n /**\n * Used by the MatTable. Called when it is destroyed. No-op.\n * @docs-private\n */\n disconnect() { }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {NgModule} from '@angular/core';\nimport {MatTable} from './table';\nimport {CdkTableModule} from '@angular/cdk/table';\nimport {\n MatCell,\n MatCellDef,\n MatColumnDef,\n MatFooterCell,\n MatFooterCellDef,\n MatHeaderCell,\n MatHeaderCellDef\n} from './cell';\nimport {\n MatFooterRow,\n MatFooterRowDef,\n MatHeaderRow,\n MatHeaderRowDef,\n MatRow,\n MatRowDef\n} from './row';\nimport {CommonModule} from '@angular/common';\nimport {MatCommonModule} from '@angular/material/core';\n\nconst EXPORTED_DECLARATIONS = [\n // Table\n MatTable,\n\n // Template defs\n MatHeaderCellDef,\n MatHeaderRowDef,\n MatColumnDef,\n MatCellDef,\n MatRowDef,\n MatFooterCellDef,\n MatFooterRowDef,\n\n // Cell directives\n MatHeaderCell,\n MatCell,\n MatFooterCell,\n\n // Row directives\n MatHeaderRow,\n MatRow,\n MatFooterRow,\n];\n\n@NgModule({\n imports: [CdkTableModule, CommonModule, MatCommonModule],\n exports: EXPORTED_DECLARATIONS,\n declarations: EXPORTED_DECLARATIONS,\n})\nexport class MatTableModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {\n ChangeDetectionStrategy,\n Component,\n Directive,\n ViewEncapsulation\n} from '@angular/core';\nimport {\n CDK_ROW_TEMPLATE, CdkFooterRow, CdkFooterRowDef,\n CdkHeaderRow,\n CdkHeaderRowDef,\n CdkRow,\n CdkRowDef,\n} from '@angular/cdk/table';\n\n/**\n * Header row definition for the mat-table.\n * Captures the header row's template and other header properties such as the columns to display.\n */\n@Directive({\n selector: '[matHeaderRowDef]',\n providers: [{provide: CdkHeaderRowDef, useExisting: MatHeaderRowDef}],\n inputs: ['columns: matHeaderRowDef', 'sticky: matHeaderRowDefSticky'],\n})\nexport class MatHeaderRowDef extends CdkHeaderRowDef {}\n\n/**\n * Footer row definition for the mat-table.\n * Captures the footer row's template and other footer properties such as the columns to display.\n */\n@Directive({\n selector: '[matFooterRowDef]',\n providers: [{provide: CdkFooterRowDef, useExisting: MatFooterRowDef}],\n inputs: ['columns: matFooterRowDef', 'sticky: matFooterRowDefSticky'],\n})\nexport class MatFooterRowDef extends CdkFooterRowDef {}\n\n/**\n * Data row definition for the mat-table.\n * Captures the data row's template and other properties such as the columns to display and\n * a when predicate that describes when this row should be used.\n */\n@Directive({\n selector: '[matRowDef]',\n providers: [{provide: CdkRowDef, useExisting: MatRowDef}],\n inputs: ['columns: matRowDefColumns', 'when: matRowDefWhen'],\n})\nexport class MatRowDef<T> extends CdkRowDef<T> {}\n\n/** Footer template container that contains the cell outlet. Adds the right class and role. */\n@Component({\n moduleId: module.id,\n selector: 'mat-header-row, tr[mat-header-row]',\n template: CDK_ROW_TEMPLATE,\n host: {\n 'class': 'mat-header-row',\n 'role': 'row',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matHeaderRow',\n providers: [{provide: CdkHeaderRow, useExisting: MatHeaderRow}],\n})\nexport class MatHeaderRow extends CdkHeaderRow { }\n\n/** Footer template container that contains the cell outlet. Adds the right class and role. */\n@Component({\n moduleId: module.id,\n selector: 'mat-footer-row, tr[mat-footer-row]',\n template: CDK_ROW_TEMPLATE,\n host: {\n 'class': 'mat-footer-row',\n 'role': 'row',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matFooterRow',\n providers: [{provide: CdkFooterRow, useExisting: MatFooterRow}],\n})\nexport class MatFooterRow extends CdkFooterRow { }\n\n/** Data row template container that contains the cell outlet. Adds the right class and role. */\n@Component({\n moduleId: module.id,\n selector: 'mat-row, tr[mat-row]',\n template: CDK_ROW_TEMPLATE,\n host: {\n 'class': 'mat-row',\n 'role': 'row',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matRow',\n providers: [{provide: CdkRow, useExisting: MatRow}],\n})\nexport class MatRow extends CdkRow { }\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Directive, ElementRef, Input} from '@angular/core';\nimport {\n CdkCell,\n CdkCellDef,\n CdkColumnDef, CdkFooterCell, CdkFooterCellDef,\n CdkHeaderCell,\n CdkHeaderCellDef,\n} from '@angular/cdk/table';\n\n/**\n * Cell definition for the mat-table.\n * Captures the template of a column's data row cell as well as cell-specific properties.\n */\n@Directive({\n selector: '[matCellDef]',\n providers: [{provide: CdkCellDef, useExisting: MatCellDef}]\n})\nexport class MatCellDef extends CdkCellDef {}\n\n/**\n * Header cell definition for the mat-table.\n * Captures the template of a column's header cell and as well as cell-specific properties.\n */\n@Directive({\n selector: '[matHeaderCellDef]',\n providers: [{provide: CdkHeaderCellDef, useExisting: MatHeaderCellDef}]\n})\nexport class MatHeaderCellDef extends CdkHeaderCellDef {}\n\n/**\n * Footer cell definition for the mat-table.\n * Captures the template of a column's footer cell and as well as cell-specific properties.\n */\n@Directive({\n selector: '[matFooterCellDef]',\n providers: [{provide: CdkFooterCellDef, useExisting: MatFooterCellDef}]\n})\nexport class MatFooterCellDef extends CdkFooterCellDef {}\n\n/**\n * Column definition for the mat-table.\n * Defines a set of cells available for a table column.\n */\n@Directive({\n selector: '[matColumnDef]',\n providers: [\n {provide: CdkColumnDef, useExisting: MatColumnDef},\n {provide: 'MAT_SORT_HEADER_COLUMN_DEF', useExisting: MatColumnDef}\n ],\n})\nexport class MatColumnDef extends CdkColumnDef {\n /** Unique name for this column. */\n @Input('matColumnDef') name: string;\n\n /** Whether this column should be sticky positioned at the start of the row */\n @Input() sticky: boolean;\n\n /** Whether this column should be sticky positioned on the end of the row */\n @Input() stickyEnd: boolean;\n}\n\n/** Header cell template container that adds the right classes and role. */\n@Directive({\n selector: 'mat-header-cell, th[mat-header-cell]',\n host: {\n 'class': 'mat-header-cell',\n 'role': 'columnheader',\n },\n})\nexport class MatHeaderCell extends CdkHeaderCell {\n constructor(columnDef: CdkColumnDef,\n elementRef: ElementRef<HTMLElement>) {\n super(columnDef, elementRef);\n elementRef.nativeElement.classList.add(`mat-column-${columnDef.cssClassFriendlyName}`);\n }\n}\n\n/** Footer cell template container that adds the right classes and role. */\n@Directive({\n selector: 'mat-footer-cell, td[mat-footer-cell]',\n host: {\n 'class': 'mat-footer-cell',\n 'role': 'gridcell',\n },\n})\nexport class MatFooterCell extends CdkFooterCell {\n constructor(columnDef: CdkColumnDef,\n elementRef: ElementRef) {\n super(columnDef, elementRef);\n elementRef.nativeElement.classList.add(`mat-column-${columnDef.cssClassFriendlyName}`);\n }\n}\n\n/** Cell template container that adds the right classes and role. */\n@Directive({\n selector: 'mat-cell, td[mat-cell]',\n host: {\n 'class': 'mat-cell',\n 'role': 'gridcell',\n },\n})\nexport class MatCell extends CdkCell {\n constructor(columnDef: CdkColumnDef,\n elementRef: ElementRef<HTMLElement>) {\n super(columnDef, elementRef);\n elementRef.nativeElement.classList.add(`mat-column-${columnDef.cssClassFriendlyName}`);\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {CDK_TABLE_TEMPLATE, CdkTable} from '@angular/cdk/table';\nimport {ChangeDetectionStrategy, Component, ViewEncapsulation} from '@angular/core';\n\n/**\n * Wrapper for the CdkTable with Material design styles.\n */\n@Component({\n moduleId: module.id,\n selector: 'mat-table, table[mat-table]',\n exportAs: 'matTable',\n template: CDK_TABLE_TEMPLATE,\n styleUrls: ['table.css'],\n host: {\n 'class': 'mat-table',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatTable<T> extends CdkTable<T> {\n /** Overrides the sticky CSS class set by the `CdkTable`. */\n protected stickyCssClass = 'mat-table-sticky';\n}\n"],"names":["observableOf","tslib_1.__extends"],"mappings":"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"}
package/esm5/tabs.es5.js CHANGED
@@ -9,7 +9,7 @@ import { Directive, ElementRef, Inject, InjectionToken, NgZone, TemplateRef, Cha
9
9
  import { __extends } from 'tslib';
10
10
  import { CdkPortal, TemplatePortal, CdkPortalOutlet, PortalHostDirective, PortalModule } from '@angular/cdk/portal';
11
11
  import { mixinDisabled, mixinDisableRipple, mixinColor, MAT_RIPPLE_GLOBAL_OPTIONS, mixinTabIndex, RippleRenderer, MatCommonModule, MatRippleModule } from '@angular/material/core';
12
- import { Subject, Subscription, merge, of } from 'rxjs';
12
+ import { Subject, Subscription, merge, of, timer, fromEvent } from 'rxjs';
13
13
  import { animate, state, style, transition, trigger } from '@angular/animations';
14
14
  import { Directionality } from '@angular/cdk/bidi';
15
15
  import { startWith, distinctUntilChanged, takeUntil } from 'rxjs/operators';
@@ -17,7 +17,7 @@ import { coerceNumberProperty, coerceBooleanProperty } from '@angular/cdk/coerci
17
17
  import { END, ENTER, HOME, SPACE, hasModifierKey } from '@angular/cdk/keycodes';
18
18
  import { ViewportRuler } from '@angular/cdk/scrolling';
19
19
  import { FocusKeyManager, FocusMonitor, A11yModule } from '@angular/cdk/a11y';
20
- import { Platform } from '@angular/cdk/platform';
20
+ import { Platform, normalizePassiveListenerOptions } from '@angular/cdk/platform';
21
21
  import { ObserversModule } from '@angular/cdk/observers';
22
22
  import { CommonModule } from '@angular/common';
23
23
 
@@ -731,12 +731,29 @@ var MatTabLabelWrapper = /** @class */ (function (_super) {
731
731
  * @fileoverview added by tsickle
732
732
  * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
733
733
  */
734
+ /**
735
+ * Config used to bind passive event listeners
736
+ * @type {?}
737
+ */
738
+ var passiveEventListenerOptions = (/** @type {?} */ (normalizePassiveListenerOptions({ passive: true })));
734
739
  /**
735
740
  * The distance in pixels that will be overshot when scrolling a tab label into view. This helps
736
741
  * provide a small affordance to the label next to it.
737
742
  * @type {?}
738
743
  */
739
744
  var EXAGGERATED_OVERSCROLL = 60;
745
+ /**
746
+ * Amount of milliseconds to wait before starting to scroll the header automatically.
747
+ * Set a little conservatively in order to handle fake events dispatched on touch devices.
748
+ * @type {?}
749
+ */
750
+ var HEADER_SCROLL_DELAY = 650;
751
+ /**
752
+ * Interval in milliseconds at which to scroll the header
753
+ * while the user is holding their pointer.
754
+ * @type {?}
755
+ */
756
+ var HEADER_SCROLL_INTERVAL = 100;
740
757
  // Boilerplate for applying mixins to MatTabHeader.
741
758
  /**
742
759
  * \@docs-private
@@ -794,6 +811,10 @@ var MatTabHeader = /** @class */ (function (_super) {
794
811
  * Whether the tab list can be scrolled more towards the beginning of the tab label list.
795
812
  */
796
813
  _this._disableScrollBefore = true;
814
+ /**
815
+ * Stream that will stop the automated scrolling.
816
+ */
817
+ _this._stopScrolling = new Subject();
797
818
  _this._selectedIndex = 0;
798
819
  /**
799
820
  * Event emitted when the option is selected.
@@ -803,6 +824,24 @@ var MatTabHeader = /** @class */ (function (_super) {
803
824
  * Event emitted when a label is focused.
804
825
  */
805
826
  _this.indexFocused = new EventEmitter();
827
+ /** @type {?} */
828
+ var element = _elementRef.nativeElement;
829
+ /** @type {?} */
830
+ var bindEvent = function () {
831
+ fromEvent(element, 'mouseleave')
832
+ .pipe(takeUntil(_this._destroyed))
833
+ .subscribe(function () {
834
+ _this._stopInterval();
835
+ });
836
+ };
837
+ // @breaking-change 8.0.0 remove null check once _ngZone is made into a required parameter.
838
+ if (_ngZone) {
839
+ // Bind the `mouseleave` event on the outside since it doesn't change anything in the view.
840
+ _ngZone.runOutsideAngular(bindEvent);
841
+ }
842
+ else {
843
+ bindEvent();
844
+ }
806
845
  return _this;
807
846
  }
808
847
  Object.defineProperty(MatTabHeader.prototype, "selectedIndex", {
@@ -857,11 +896,14 @@ var MatTabHeader = /** @class */ (function (_super) {
857
896
  this._changeDetectorRef.markForCheck();
858
897
  }
859
898
  };
899
+ /** Handles keyboard events on the header. */
860
900
  /**
901
+ * Handles keyboard events on the header.
861
902
  * @param {?} event
862
903
  * @return {?}
863
904
  */
864
905
  MatTabHeader.prototype._handleKeydown = /**
906
+ * Handles keyboard events on the header.
865
907
  * @param {?} event
866
908
  * @return {?}
867
909
  */
@@ -931,6 +973,26 @@ var MatTabHeader = /** @class */ (function (_super) {
931
973
  _this._setTabFocus(newFocusIndex);
932
974
  });
933
975
  };
976
+ /**
977
+ * @return {?}
978
+ */
979
+ MatTabHeader.prototype.ngAfterViewInit = /**
980
+ * @return {?}
981
+ */
982
+ function () {
983
+ var _this = this;
984
+ // We need to handle these events manually, because we want to bind passive event listeners.
985
+ fromEvent(this._previousPaginator.nativeElement, 'touchstart', passiveEventListenerOptions)
986
+ .pipe(takeUntil(this._destroyed))
987
+ .subscribe(function () {
988
+ _this._handlePaginatorPress('before');
989
+ });
990
+ fromEvent(this._nextPaginator.nativeElement, 'touchstart', passiveEventListenerOptions)
991
+ .pipe(takeUntil(this._destroyed))
992
+ .subscribe(function () {
993
+ _this._handlePaginatorPress('after');
994
+ });
995
+ };
934
996
  /**
935
997
  * @return {?}
936
998
  */
@@ -940,6 +1002,7 @@ var MatTabHeader = /** @class */ (function (_super) {
940
1002
  function () {
941
1003
  this._destroyed.next();
942
1004
  this._destroyed.complete();
1005
+ this._stopScrolling.complete();
943
1006
  };
944
1007
  /**
945
1008
  * Callback for when the MutationObserver detects that the content has changed.
@@ -1138,15 +1201,11 @@ var MatTabHeader = /** @class */ (function (_super) {
1138
1201
  */
1139
1202
  function () { return this._scrollDistance; },
1140
1203
  set: /**
1141
- * @param {?} v
1204
+ * @param {?} value
1142
1205
  * @return {?}
1143
1206
  */
1144
- function (v) {
1145
- this._scrollDistance = Math.max(0, Math.min(this._getMaxScrollDistance(), v));
1146
- // Mark that the scroll distance has changed so that after the view is checked, the CSS
1147
- // transformation can move the header.
1148
- this._scrollDistanceChanged = true;
1149
- this._checkScrollingControls();
1207
+ function (value) {
1208
+ this._scrollTo(value);
1150
1209
  },
1151
1210
  enumerable: true,
1152
1211
  configurable: true
@@ -1166,7 +1225,7 @@ var MatTabHeader = /** @class */ (function (_super) {
1166
1225
  *
1167
1226
  * This is an expensive call that forces a layout reflow to compute box and scroll metrics and
1168
1227
  * should be called sparingly.
1169
- * @param {?} scrollDir
1228
+ * @param {?} direction
1170
1229
  * @return {?}
1171
1230
  */
1172
1231
  MatTabHeader.prototype._scrollHeader = /**
@@ -1176,14 +1235,31 @@ var MatTabHeader = /** @class */ (function (_super) {
1176
1235
  *
1177
1236
  * This is an expensive call that forces a layout reflow to compute box and scroll metrics and
1178
1237
  * should be called sparingly.
1179
- * @param {?} scrollDir
1238
+ * @param {?} direction
1180
1239
  * @return {?}
1181
1240
  */
1182
- function (scrollDir) {
1241
+ function (direction) {
1183
1242
  /** @type {?} */
1184
1243
  var viewLength = this._tabListContainer.nativeElement.offsetWidth;
1185
1244
  // Move the scroll distance one-third the length of the tab list's viewport.
1186
- this.scrollDistance += (scrollDir == 'before' ? -1 : 1) * viewLength / 3;
1245
+ /** @type {?} */
1246
+ var scrollAmount = (direction == 'before' ? -1 : 1) * viewLength / 3;
1247
+ return this._scrollTo(this._scrollDistance + scrollAmount);
1248
+ };
1249
+ /** Handles click events on the pagination arrows. */
1250
+ /**
1251
+ * Handles click events on the pagination arrows.
1252
+ * @param {?} direction
1253
+ * @return {?}
1254
+ */
1255
+ MatTabHeader.prototype._handlePaginatorClick = /**
1256
+ * Handles click events on the pagination arrows.
1257
+ * @param {?} direction
1258
+ * @return {?}
1259
+ */
1260
+ function (direction) {
1261
+ this._stopInterval();
1262
+ this._scrollHeader(direction);
1187
1263
  };
1188
1264
  /**
1189
1265
  * Moves the tab list such that the desired tab label (marked by index) is moved into view.
@@ -1359,10 +1435,82 @@ var MatTabHeader = /** @class */ (function (_super) {
1359
1435
  null;
1360
1436
  this._inkBar.alignToElement((/** @type {?} */ (selectedLabelWrapper)));
1361
1437
  };
1438
+ /** Stops the currently-running paginator interval. */
1439
+ /**
1440
+ * Stops the currently-running paginator interval.
1441
+ * @return {?}
1442
+ */
1443
+ MatTabHeader.prototype._stopInterval = /**
1444
+ * Stops the currently-running paginator interval.
1445
+ * @return {?}
1446
+ */
1447
+ function () {
1448
+ this._stopScrolling.next();
1449
+ };
1450
+ /**
1451
+ * Handles the user pressing down on one of the paginators.
1452
+ * Starts scrolling the header after a certain amount of time.
1453
+ * @param direction In which direction the paginator should be scrolled.
1454
+ */
1455
+ /**
1456
+ * Handles the user pressing down on one of the paginators.
1457
+ * Starts scrolling the header after a certain amount of time.
1458
+ * @param {?} direction In which direction the paginator should be scrolled.
1459
+ * @return {?}
1460
+ */
1461
+ MatTabHeader.prototype._handlePaginatorPress = /**
1462
+ * Handles the user pressing down on one of the paginators.
1463
+ * Starts scrolling the header after a certain amount of time.
1464
+ * @param {?} direction In which direction the paginator should be scrolled.
1465
+ * @return {?}
1466
+ */
1467
+ function (direction) {
1468
+ var _this = this;
1469
+ // Avoid overlapping timers.
1470
+ this._stopInterval();
1471
+ // Start a timer after the delay and keep firing based on the interval.
1472
+ timer(HEADER_SCROLL_DELAY, HEADER_SCROLL_INTERVAL)
1473
+ // Keep the timer going until something tells it to stop or the component is destroyed.
1474
+ .pipe(takeUntil(merge(this._stopScrolling, this._destroyed)))
1475
+ .subscribe(function () {
1476
+ var _a = _this._scrollHeader(direction), maxScrollDistance = _a.maxScrollDistance, distance = _a.distance;
1477
+ // Stop the timer if we've reached the start or the end.
1478
+ if (distance === 0 || distance >= maxScrollDistance) {
1479
+ _this._stopInterval();
1480
+ }
1481
+ });
1482
+ };
1483
+ /**
1484
+ * Scrolls the header to a given position.
1485
+ * @param position Position to which to scroll.
1486
+ * @returns Information on the current scroll distance and the maximum.
1487
+ */
1488
+ /**
1489
+ * Scrolls the header to a given position.
1490
+ * @private
1491
+ * @param {?} position Position to which to scroll.
1492
+ * @return {?} Information on the current scroll distance and the maximum.
1493
+ */
1494
+ MatTabHeader.prototype._scrollTo = /**
1495
+ * Scrolls the header to a given position.
1496
+ * @private
1497
+ * @param {?} position Position to which to scroll.
1498
+ * @return {?} Information on the current scroll distance and the maximum.
1499
+ */
1500
+ function (position) {
1501
+ /** @type {?} */
1502
+ var maxScrollDistance = this._getMaxScrollDistance();
1503
+ this._scrollDistance = Math.max(0, Math.min(maxScrollDistance, position));
1504
+ // Mark that the scroll distance has changed so that after the view is checked, the CSS
1505
+ // transformation can move the header.
1506
+ this._scrollDistanceChanged = true;
1507
+ this._checkScrollingControls();
1508
+ return { maxScrollDistance: maxScrollDistance, distance: this._scrollDistance };
1509
+ };
1362
1510
  MatTabHeader.decorators = [
1363
1511
  { type: Component, args: [{selector: 'mat-tab-header',
1364
- template: "<div class=\"mat-tab-header-pagination mat-tab-header-pagination-before mat-elevation-z4\" aria-hidden=\"true\" mat-ripple [matRippleDisabled]=\"_disableScrollBefore || disableRipple\" [class.mat-tab-header-pagination-disabled]=\"_disableScrollBefore\" (click)=\"_scrollHeader('before')\"><div class=\"mat-tab-header-pagination-chevron\"></div></div><div class=\"mat-tab-label-container\" #tabListContainer (keydown)=\"_handleKeydown($event)\"><div class=\"mat-tab-list\" #tabList role=\"tablist\" (cdkObserveContent)=\"_onContentChanges()\"><div class=\"mat-tab-labels\"><ng-content></ng-content></div><mat-ink-bar></mat-ink-bar></div></div><div class=\"mat-tab-header-pagination mat-tab-header-pagination-after mat-elevation-z4\" aria-hidden=\"true\" mat-ripple [matRippleDisabled]=\"_disableScrollAfter || disableRipple\" [class.mat-tab-header-pagination-disabled]=\"_disableScrollAfter\" (click)=\"_scrollHeader('after')\"><div class=\"mat-tab-header-pagination-chevron\"></div></div>",
1365
- styles: [".mat-tab-header{display:flex;overflow:hidden;position:relative;flex-shrink:0}.mat-tab-label{height:48px;padding:0 24px;cursor:pointer;box-sizing:border-box;opacity:.6;min-width:160px;text-align:center;display:inline-flex;justify-content:center;align-items:center;white-space:nowrap;position:relative}.mat-tab-label:focus{outline:0}.mat-tab-label:focus:not(.mat-tab-disabled){opacity:1}@media (-ms-high-contrast:active){.mat-tab-label:focus{outline:dotted 2px}}.mat-tab-label.mat-tab-disabled{cursor:default}@media (-ms-high-contrast:active){.mat-tab-label.mat-tab-disabled{opacity:.5}}.mat-tab-label .mat-tab-label-content{display:inline-flex;justify-content:center;align-items:center;white-space:nowrap}@media (-ms-high-contrast:active){.mat-tab-label{opacity:1}}@media (max-width:599px){.mat-tab-label{min-width:72px}}.mat-ink-bar{position:absolute;bottom:0;height:2px;transition:.5s cubic-bezier(.35,0,.25,1)}.mat-tab-group-inverted-header .mat-ink-bar{bottom:auto;top:0}@media (-ms-high-contrast:active){.mat-ink-bar{outline:solid 2px;height:0}}.mat-tab-header-pagination{position:relative;display:none;justify-content:center;align-items:center;min-width:32px;cursor:pointer;z-index:2}.mat-tab-header-pagination-controls-enabled .mat-tab-header-pagination{display:flex}.mat-tab-header-pagination-before,.mat-tab-header-rtl .mat-tab-header-pagination-after{padding-left:4px}.mat-tab-header-pagination-before .mat-tab-header-pagination-chevron,.mat-tab-header-rtl .mat-tab-header-pagination-after .mat-tab-header-pagination-chevron{transform:rotate(-135deg)}.mat-tab-header-pagination-after,.mat-tab-header-rtl .mat-tab-header-pagination-before{padding-right:4px}.mat-tab-header-pagination-after .mat-tab-header-pagination-chevron,.mat-tab-header-rtl .mat-tab-header-pagination-before .mat-tab-header-pagination-chevron{transform:rotate(45deg)}.mat-tab-header-pagination-chevron{border-style:solid;border-width:2px 2px 0 0;content:'';height:8px;width:8px}.mat-tab-header-pagination-disabled{box-shadow:none;cursor:default}.mat-tab-label-container{display:flex;flex-grow:1;overflow:hidden;z-index:1}.mat-tab-list{flex-grow:1;position:relative;transition:transform .5s cubic-bezier(.35,0,.25,1)}.mat-tab-labels{display:flex}[mat-align-tabs=center] .mat-tab-labels{justify-content:center}[mat-align-tabs=end] .mat-tab-labels{justify-content:flex-end}"],
1512
+ template: "<div class=\"mat-tab-header-pagination mat-tab-header-pagination-before mat-elevation-z4\" #previousPaginator aria-hidden=\"true\" mat-ripple [matRippleDisabled]=\"_disableScrollBefore || disableRipple\" [class.mat-tab-header-pagination-disabled]=\"_disableScrollBefore\" (click)=\"_handlePaginatorClick('before')\" (mousedown)=\"_handlePaginatorPress('before')\" (touchend)=\"_stopInterval()\"><div class=\"mat-tab-header-pagination-chevron\"></div></div><div class=\"mat-tab-label-container\" #tabListContainer (keydown)=\"_handleKeydown($event)\"><div class=\"mat-tab-list\" #tabList role=\"tablist\" (cdkObserveContent)=\"_onContentChanges()\"><div class=\"mat-tab-labels\"><ng-content></ng-content></div><mat-ink-bar></mat-ink-bar></div></div><div class=\"mat-tab-header-pagination mat-tab-header-pagination-after mat-elevation-z4\" #nextPaginator aria-hidden=\"true\" mat-ripple [matRippleDisabled]=\"_disableScrollAfter || disableRipple\" [class.mat-tab-header-pagination-disabled]=\"_disableScrollAfter\" (mousedown)=\"_handlePaginatorPress('after')\" (click)=\"_handlePaginatorClick('after')\" (touchend)=\"_stopInterval()\"><div class=\"mat-tab-header-pagination-chevron\"></div></div>",
1513
+ styles: [".mat-tab-header{display:flex;overflow:hidden;position:relative;flex-shrink:0}.mat-tab-label{height:48px;padding:0 24px;cursor:pointer;box-sizing:border-box;opacity:.6;min-width:160px;text-align:center;display:inline-flex;justify-content:center;align-items:center;white-space:nowrap;position:relative}.mat-tab-label:focus{outline:0}.mat-tab-label:focus:not(.mat-tab-disabled){opacity:1}@media (-ms-high-contrast:active){.mat-tab-label:focus{outline:dotted 2px}}.mat-tab-label.mat-tab-disabled{cursor:default}@media (-ms-high-contrast:active){.mat-tab-label.mat-tab-disabled{opacity:.5}}.mat-tab-label .mat-tab-label-content{display:inline-flex;justify-content:center;align-items:center;white-space:nowrap}@media (-ms-high-contrast:active){.mat-tab-label{opacity:1}}@media (max-width:599px){.mat-tab-label{min-width:72px}}.mat-ink-bar{position:absolute;bottom:0;height:2px;transition:.5s cubic-bezier(.35,0,.25,1)}.mat-tab-group-inverted-header .mat-ink-bar{bottom:auto;top:0}@media (-ms-high-contrast:active){.mat-ink-bar{outline:solid 2px;height:0}}.mat-tab-header-pagination{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;position:relative;display:none;justify-content:center;align-items:center;min-width:32px;cursor:pointer;z-index:2;-webkit-tap-highlight-color:transparent;touch-action:none}.mat-tab-header-pagination-controls-enabled .mat-tab-header-pagination{display:flex}.mat-tab-header-pagination-before,.mat-tab-header-rtl .mat-tab-header-pagination-after{padding-left:4px}.mat-tab-header-pagination-before .mat-tab-header-pagination-chevron,.mat-tab-header-rtl .mat-tab-header-pagination-after .mat-tab-header-pagination-chevron{transform:rotate(-135deg)}.mat-tab-header-pagination-after,.mat-tab-header-rtl .mat-tab-header-pagination-before{padding-right:4px}.mat-tab-header-pagination-after .mat-tab-header-pagination-chevron,.mat-tab-header-rtl .mat-tab-header-pagination-before .mat-tab-header-pagination-chevron{transform:rotate(45deg)}.mat-tab-header-pagination-chevron{border-style:solid;border-width:2px 2px 0 0;content:'';height:8px;width:8px}.mat-tab-header-pagination-disabled{box-shadow:none;cursor:default}.mat-tab-label-container{display:flex;flex-grow:1;overflow:hidden;z-index:1}.mat-tab-list{flex-grow:1;position:relative;transition:transform .5s cubic-bezier(.35,0,.25,1)}.mat-tab-labels{display:flex}[mat-align-tabs=center] .mat-tab-labels{justify-content:center}[mat-align-tabs=end] .mat-tab-labels{justify-content:flex-end}"],
1366
1514
  inputs: ['disableRipple'],
1367
1515
  encapsulation: ViewEncapsulation.None,
1368
1516
  changeDetection: ChangeDetectionStrategy.OnPush,
@@ -1387,6 +1535,8 @@ var MatTabHeader = /** @class */ (function (_super) {
1387
1535
  _inkBar: [{ type: ViewChild, args: [MatInkBar,] }],
1388
1536
  _tabListContainer: [{ type: ViewChild, args: ['tabListContainer',] }],
1389
1537
  _tabList: [{ type: ViewChild, args: ['tabList',] }],
1538
+ _nextPaginator: [{ type: ViewChild, args: ['nextPaginator',] }],
1539
+ _previousPaginator: [{ type: ViewChild, args: ['previousPaginator',] }],
1390
1540
  selectedIndex: [{ type: Input }],
1391
1541
  selectFocusedIndex: [{ type: Output }],
1392
1542
  indexFocused: [{ type: Output }]
@@ -2090,7 +2240,7 @@ var _MatTabLinkMixinBase = mixinTabIndex(mixinDisableRipple(mixinDisabled(MatTab
2090
2240
  */
2091
2241
  var MatTabLink = /** @class */ (function (_super) {
2092
2242
  __extends(MatTabLink, _super);
2093
- function MatTabLink(_tabNavBar, _elementRef, ngZone, platform, globalOptions, tabIndex, _focusMonitor) {
2243
+ function MatTabLink(_tabNavBar, _elementRef, ngZone, platform, globalRippleOptions, tabIndex, _focusMonitor) {
2094
2244
  var _this = _super.call(this) || this;
2095
2245
  _this._tabNavBar = _tabNavBar;
2096
2246
  _this._elementRef = _elementRef;
@@ -2099,26 +2249,10 @@ var MatTabLink = /** @class */ (function (_super) {
2099
2249
  * Whether the tab link is active or not.
2100
2250
  */
2101
2251
  _this._isActive = false;
2102
- /**
2103
- * Whether the ripples are globally disabled through the RippleGlobalOptions
2104
- */
2105
- _this._ripplesGloballyDisabled = false;
2106
- /**
2107
- * Ripple configuration for ripples that are launched on pointer down.
2108
- * \@docs-private
2109
- */
2110
- _this.rippleConfig = {};
2111
2252
  _this._tabLinkRipple = new RippleRenderer(_this, ngZone, _elementRef, platform);
2112
2253
  _this._tabLinkRipple.setupTriggerEvents(_elementRef.nativeElement);
2254
+ _this.rippleConfig = globalRippleOptions || {};
2113
2255
  _this.tabIndex = parseInt(tabIndex) || 0;
2114
- if (globalOptions) {
2115
- // TODO(paul): Do not copy each option manually. Allow dynamic global option changes: #9729
2116
- _this._ripplesGloballyDisabled = !!globalOptions.disabled;
2117
- _this.rippleConfig = {
2118
- terminateOnPointerUp: globalOptions.terminateOnPointerUp,
2119
- animation: globalOptions.animation,
2120
- };
2121
- }
2122
2256
  if (_focusMonitor) {
2123
2257
  _focusMonitor.monitor(_elementRef);
2124
2258
  }
@@ -2146,17 +2280,17 @@ var MatTabLink = /** @class */ (function (_super) {
2146
2280
  });
2147
2281
  Object.defineProperty(MatTabLink.prototype, "rippleDisabled", {
2148
2282
  /**
2149
- * Whether ripples are disabled on interaction
2283
+ * Whether ripples are disabled on interaction.
2150
2284
  * @docs-private
2151
2285
  */
2152
2286
  get: /**
2153
- * Whether ripples are disabled on interaction
2287
+ * Whether ripples are disabled on interaction.
2154
2288
  * \@docs-private
2155
2289
  * @return {?}
2156
2290
  */
2157
2291
  function () {
2158
2292
  return this.disabled || this.disableRipple || this._tabNavBar.disableRipple ||
2159
- this._ripplesGloballyDisabled;
2293
+ !!this.rippleConfig.disabled;
2160
2294
  },
2161
2295
  enumerable: true,
2162
2296
  configurable: true
@@ -2264,5 +2398,5 @@ var MatTabsModule = /** @class */ (function () {
2264
2398
  * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
2265
2399
  */
2266
2400
 
2267
- export { MatInkBar, _MAT_INK_BAR_POSITIONER, MatTabBody, MatTabBodyPortal, MatTabHeader, MatTabLabelWrapper, MatTab, MatTabLabel, MatTabNav, MatTabLink, MatTabContent, MatTabsModule, MatTabChangeEvent, MAT_TABS_CONFIG, MatTabGroupBase, _MatTabGroupMixinBase, MatTabGroup, matTabsAnimations, _MAT_INK_BAR_POSITIONER_FACTORY as ɵa24, MatTabBase as ɵf24, _MatTabMixinBase as ɵg24, MatTabHeaderBase as ɵb24, _MatTabHeaderMixinBase as ɵc24, MatTabLabelWrapperBase as ɵd24, _MatTabLabelWrapperMixinBase as ɵe24, MatTabLinkBase as ɵj24, MatTabNavBase as ɵh24, _MatTabLinkMixinBase as ɵk24, _MatTabNavMixinBase as ɵi24 };
2401
+ export { MatInkBar, _MAT_INK_BAR_POSITIONER, MatTabBody, MatTabBodyPortal, MatTabHeader, MatTabLabelWrapper, MatTab, MatTabLabel, MatTabNav, MatTabLink, MatTabContent, MatTabsModule, MatTabChangeEvent, MAT_TABS_CONFIG, MatTabGroupBase, _MatTabGroupMixinBase, MatTabGroup, matTabsAnimations, _MAT_INK_BAR_POSITIONER_FACTORY as ɵa22, MatTabBase as ɵf22, _MatTabMixinBase as ɵg22, MatTabHeaderBase as ɵb22, _MatTabHeaderMixinBase as ɵc22, MatTabLabelWrapperBase as ɵd22, _MatTabLabelWrapperMixinBase as ɵe22, MatTabLinkBase as ɵj22, MatTabNavBase as ɵh22, _MatTabLinkMixinBase as ɵk22, _MatTabNavMixinBase as ɵi22 };
2268
2402
  //# sourceMappingURL=tabs.es5.js.map