@aurelia-mdc-web/all 9.4.2-au2 → 10.0.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.
- package/dist/data-table/mdc-data-table.js +22 -6
- package/dist/data-table/mdc-data-table.js.map +1 -1
- package/dist/dialog/mdc-dialog-service.js +8 -2
- package/dist/dialog/mdc-dialog-service.js.map +1 -1
- package/dist/types/data-table/mdc-data-table.d.ts +1 -0
- package/package.json +1 -1
- package/src/data-table/mdc-data-table.ts +23 -6
- package/src/dialog/mdc-dialog-service.ts +22 -13
|
@@ -262,15 +262,16 @@ let MdcDataTable = (() => {
|
|
|
262
262
|
this.header = this.root.querySelector(`.${cssClasses.HEADER_ROW}`);
|
|
263
263
|
this.content = this.root.querySelector(`.${cssClasses.CONTENT}`);
|
|
264
264
|
this.header.addEventListener('click', this);
|
|
265
|
-
this.
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
265
|
+
this.initialiseHeaderCells();
|
|
266
|
+
this.mutationObserver = new MutationObserver(() => {
|
|
267
|
+
this.initialiseHeaderCells();
|
|
268
|
+
if (this.saveColumnWidths) {
|
|
269
|
+
this.restoreColumnWidths();
|
|
270
|
+
}
|
|
270
271
|
});
|
|
272
|
+
this.mutationObserver.observe(this.header, { childList: true, subtree: true });
|
|
271
273
|
if (this.saveColumnWidths) {
|
|
272
274
|
this.restoreColumnWidths();
|
|
273
|
-
this.mutationObserver = new MutationObserver(() => this.restoreColumnWidths());
|
|
274
275
|
this.mutationObserver.observe(this.content, { childList: true, subtree: false });
|
|
275
276
|
}
|
|
276
277
|
if (!this.manualCheckboxHandling) {
|
|
@@ -288,6 +289,21 @@ let MdcDataTable = (() => {
|
|
|
288
289
|
const widths = JSON.parse(localStorage.getItem(`mdc-data-table-${this.root.id}-column-widths`) ?? '[]');
|
|
289
290
|
this.setColumnWidths(widths);
|
|
290
291
|
}
|
|
292
|
+
initialiseHeaderCells() {
|
|
293
|
+
this.header.querySelectorAll('th').forEach(x => {
|
|
294
|
+
x.classList.add(cssClasses.HEADER_CELL);
|
|
295
|
+
x.classList.toggle('mdc-data-table__header-cell--numeric', x.hasAttribute('numeric'));
|
|
296
|
+
x.setAttribute('role', 'columnheader');
|
|
297
|
+
x.setAttribute('scope', 'col');
|
|
298
|
+
if (!x.hasAttribute('resizeable') || x.querySelector('.mdc-data-table__header-cell__resize-handle')) {
|
|
299
|
+
return;
|
|
300
|
+
}
|
|
301
|
+
const resizeHandle = document.createElement('div');
|
|
302
|
+
resizeHandle.addEventListener('mousedown', (event) => this.startColumnResize(event, x));
|
|
303
|
+
x.insertBefore(document.createElement('div'), x.firstChild).classList.add('mdc-data-table__header-cell__hover-indicator');
|
|
304
|
+
x.appendChild(resizeHandle).classList.add('mdc-data-table__header-cell__resize-handle');
|
|
305
|
+
});
|
|
306
|
+
}
|
|
291
307
|
initialSyncWithDOM() {
|
|
292
308
|
if (this.busy !== undefined) {
|
|
293
309
|
this.busyChanged();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mdc-data-table.js","sourceRoot":"","sources":["../../src/data-table/mdc-data-table.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable no-template-curly-in-string */\r\nimport { MdcComponent, booleanAttr, number } from '../base';\r\nimport {\r\n MDCDataTableFoundation, selectors, MDCDataTableAdapter, events, cssClasses, RowClickEventData,\r\n dataAttributes, MDCDataTableRowSelectionChangedEventDetail, SortValue, messages\r\n} from '@material/data-table';\r\nimport { closest } from '@material/dom/ponyfill';\r\nimport { inject, customElement, INode, bindable, BindingMode } from 'aurelia';\r\nimport { processContent, CustomElement } from '@aurelia/runtime-html';\r\nimport template from './mdc-data-table.html?raw';\r\nimport { MdcCheckbox } from '../checkbox/mdc-checkbox';\r\n\r\nevents.ROW_CLICK = events.ROW_CLICK.toLowerCase();\r\nevents.ROW_SELECTION_CHANGED = events.ROW_SELECTION_CHANGED.toLowerCase();\r\nevents.SELECTED_ALL = events.SELECTED_ALL.toLowerCase();\r\nevents.SORTED = events.SORTED.toLowerCase();\r\nevents.UNSELECTED_ALL = events.UNSELECTED_ALL.toLowerCase();\r\nconst NAVIGATION_EVENT = 'mdcdatatable:navigation';\r\n\r\nexport interface MDCDataTableColumnsResizedEventDetail {\r\n widths: string[];\r\n}\r\n\r\n/**\r\n * Use `pagination-total` replaceable part to customise pagination total label.\r\n * @selector mdc-data-table\r\n * @emits mdcdatatable:rowselectionchanged | Emitted when row checkbox is checked or unchecked\r\n * @emits mdcdatatable:selectedall | Emitted when header row checkbox is checked\r\n * @emits mdcdatatable:unselectedall | Emitted when header row checkbox is unchecked\r\n * @emits mdcdatatable:sorted | Emitted when clicked on sortable header cell\r\n * @emits mdcdatatable:rowclick | Emitted when a row is clicked\r\n */\r\n@inject(Element)\r\n@customElement({ name: 'mdc-data-table', template })\r\n@processContent(function processContent(node: INode) {\r\n const element = node as HTMLElement;\r\n const table = element.querySelector('table');\r\n if (!table) {\r\n throw new Error('Have you forgotten the <table> tag in you data table markup?');\r\n }\r\n table.classList.add('mdc-data-table__table');\r\n table.setAttribute('aria-label', '${ariaLabel}');\r\n\r\n const headerRow = element.querySelector('thead>tr');\r\n if (!headerRow) {\r\n throw new Error('Have you forgotten the <thead><tr> tags in you data table markup?');\r\n }\r\n headerRow.classList.add(cssClasses.HEADER_ROW);\r\n headerRow.setAttribute('ref', 'headerRow');\r\n const headerCells = headerRow.querySelectorAll<HTMLElement>('th');\r\n for (const th of Array.from(headerCells)) {\r\n th.classList.add(cssClasses.HEADER_CELL);\r\n th.classList.toggle('mdc-data-table__header-cell--numeric', th.hasAttribute('numeric'));\r\n th.setAttribute('role', 'columnheader');\r\n th.setAttribute('scope', 'col');\r\n }\r\n\r\n const tbody = element.querySelector('tbody');\r\n if (!tbody) {\r\n throw new Error('Have you forgotten the <tbody> tag in you data table markup?');\r\n }\r\n tbody.classList.add(cssClasses.CONTENT);\r\n tbody.setAttribute('ref', 'content');\r\n\r\n const paginationTotalSlot = element.querySelector('[au-slot=\"pagination-total\"]');\r\n paginationTotalSlot?.remove();\r\n\r\n if (paginationTotalSlot) {\r\n element.appendChild(paginationTotalSlot);\r\n }\r\n}\r\n)\r\nexport class MdcDataTable extends MdcComponent<MDCDataTableFoundation> implements EventListenerObject {\r\n header: HTMLElement;\r\n content: HTMLElement;\r\n columnResized: boolean;\r\n private mutationObserver: MutationObserver;\r\n\r\n /** Shows pagination footer */\r\n @bindable({ set: booleanAttr })\r\n pagination: boolean;\r\n\r\n /** Caption for the page size selector */\r\n @bindable()\r\n rowsPerPageLabel: string = 'Rows per page';\r\n\r\n /** Page sizes available for selection, e.g. [10, 25, 100, 'All'] */\r\n @bindable()\r\n pageSizes: unknown[] = [10, 25, 100];\r\n\r\n /** Selected page size */\r\n @bindable({ mode: BindingMode.twoWay })\r\n pageSize: unknown = 10;\r\n\r\n /** Makes header row sticky (fixed) on vertical scroll.\r\n * (Note: Sticky header feature is not compatible with IE11 browsers.) */\r\n @bindable({ set: booleanAttr })\r\n stickyHeader: boolean;\r\n\r\n /** Turns off checkbox handling by the MDC framework */\r\n @bindable({ set: booleanAttr })\r\n manualCheckboxHandling: boolean;\r\n\r\n /** Turns on automatic column widths saving to localStorage */\r\n @bindable({ set: booleanAttr })\r\n saveColumnWidths: boolean;\r\n\r\n get paginationPosition(): 'first' | 'between' | 'last' | undefined {\r\n if (typeof this.pageSize !== 'number' || this.pageSize === undefined || isNaN(this.activePage) || isNaN(this.recordsCount)) {\r\n return undefined;\r\n }\r\n const pagesCount = Math.ceil(this.recordsCount / this.pageSize);\r\n return this.activePage === 1\r\n ? (pagesCount === 1 ? undefined : 'first')\r\n : (this.activePage === pagesCount ? 'last' : 'between');\r\n }\r\n\r\n /** Sets total number of records. Used in navigation row. */\r\n @bindable({ set: number })\r\n recordsCount: number;\r\n\r\n /** Sets the active page number. Used in navigation row. */\r\n @bindable({ set: number })\r\n activePage: number;\r\n\r\n get paginationTotal(): string | undefined {\r\n if (typeof this.pageSize !== 'number' || this.pageSize === undefined || isNaN(this.activePage) || isNaN(this.recordsCount)) {\r\n return undefined;\r\n }\r\n const firstRecord = this.pageSize * (this.activePage - 1) + 1;\r\n const lastRecord = Math.min(this.pageSize * this.activePage, this.recordsCount);\r\n return `${firstRecord}-${lastRecord} of ${this.recordsCount}`;\r\n }\r\n\r\n /** Turns on a linear progress indicator at the top of the table */\r\n @bindable({ set: booleanAttr })\r\n busy: boolean;\r\n busyChanged() {\r\n if (this.busy) {\r\n this.foundation?.showProgress();\r\n } else {\r\n this.foundation?.hideProgress();\r\n }\r\n }\r\n\r\n @bindable({ set: booleanAttr })\r\n hoistPageSelectToBody: boolean;\r\n\r\n get rowCheckboxList(): MdcCheckbox[] {\r\n return Array.from(this.root.querySelectorAll(`.${cssClasses.ROW} .mdc-checkbox`))\r\n .map(x => CustomElement.for<MdcCheckbox>(x).viewModel);\r\n }\r\n\r\n get headerRowCheckbox(): MdcCheckbox | undefined {\r\n const el = this.root.querySelector(`.${cssClasses.HEADER_ROW} .mdc-checkbox`);\r\n return el ? CustomElement.for<MdcCheckbox>(el).viewModel : undefined;\r\n }\r\n\r\n handleHeaderRowCheckboxChange() {\r\n this.foundation?.handleHeaderRowCheckboxChange();\r\n }\r\n\r\n handleRowCheckboxChange(event: Event) {\r\n if ((event.target as HTMLInputElement).type === 'checkbox') {\r\n this.foundation?.handleRowCheckboxChange(event);\r\n }\r\n }\r\n\r\n headerRowClickListener(event: Event) {\r\n this.handleHeaderRowClick(event);\r\n }\r\n\r\n handleNavigationClick(type: 'first' | 'prev' | 'next' | 'last') {\r\n this.emit(NAVIGATION_EVENT, { type }, true);\r\n }\r\n\r\n handleContentClick(event: Event) {\r\n const dataRowEl = closest(event.target as Element, selectors.ROW) as HTMLElement;\r\n if (!dataRowEl) {\r\n return;\r\n }\r\n\r\n this.foundation?.handleRowClick({\r\n rowId: this.getRowIdByRowElement(dataRowEl),\r\n row: dataRowEl,\r\n });\r\n }\r\n\r\n /**\r\n * Re-initializes header row checkbox and row checkboxes when selectable rows are added or removed from table.\r\n */\r\n layout() {\r\n this.foundation?.layout();\r\n }\r\n\r\n /**\r\n * Returns array of header row cell elements.\r\n */\r\n getHeaderCells(): HTMLElement[] {\r\n return [].slice.call(this.root.querySelectorAll(selectors.HEADER_CELL)) as HTMLElement[];\r\n }\r\n\r\n /**\r\n * Returns array of row elements.\r\n */\r\n getRows(): Element[] {\r\n return this.foundation!.getRows();\r\n }\r\n\r\n /**\r\n * Returns array of selected row ids.\r\n */\r\n getSelectedRowIds(): (string | null)[] {\r\n return this.foundation!.getSelectedRowIds();\r\n }\r\n\r\n /**\r\n * Sets selected row ids. Overwrites previously selected rows.\r\n * @param rowIds Array of row ids that needs to be selected.\r\n */\r\n setSelectedRowIds(rowIds: string[]) {\r\n this.foundation?.setSelectedRowIds(rowIds);\r\n }\r\n\r\n handleEvent(evt: Event): void {\r\n switch (evt.currentTarget) {\r\n case this.header:\r\n switch (evt.type) {\r\n case 'change': this.handleHeaderRowCheckboxChange(); break;\r\n case 'click': this.handleHeaderRowClick(evt); break;\r\n }\r\n break;\r\n case this.content:\r\n switch (evt.type) {\r\n case 'change': this.handleRowCheckboxChange(evt); break;\r\n }\r\n break;\r\n }\r\n }\r\n\r\n beforeFoundationCreated() {\r\n this.header = this.root.querySelector<HTMLElement>(`.${cssClasses.HEADER_ROW}`)!;\r\n this.content = this.root.querySelector<HTMLElement>(`.${cssClasses.CONTENT}`)!;\r\n this.header.addEventListener('click', this);\r\n this.header.querySelectorAll('th[resizeable]').forEach(x => {\r\n const resizeHandle = document.createElement('div');\r\n resizeHandle.addEventListener('mousedown', (event) => this.startColumnResize(event, x as HTMLElement));\r\n x.insertBefore(document.createElement('div'), x.firstChild).classList.add('mdc-data-table__header-cell__hover-indicator');\r\n x.appendChild(resizeHandle).classList.add('mdc-data-table__header-cell__resize-handle');\r\n });\r\n if (this.saveColumnWidths) {\r\n this.restoreColumnWidths();\r\n this.mutationObserver = new MutationObserver(() => this.restoreColumnWidths());\r\n this.mutationObserver.observe(this.content, { childList: true, subtree: false });\r\n }\r\n\r\n if (!this.manualCheckboxHandling) {\r\n this.header.addEventListener('change', this);\r\n this.content.addEventListener('change', this);\r\n }\r\n\r\n const rowCheckboxList = this.rowCheckboxList;\r\n this.rowCheckboxList.forEach(x => x.root.classList.add(cssClasses.ROW_CHECKBOX));\r\n if (this.headerRowCheckbox) {\r\n this.headerRowCheckbox.root.classList.add(cssClasses.HEADER_ROW_CHECKBOX);\r\n rowCheckboxList.push(this.headerRowCheckbox);\r\n }\r\n }\r\n\r\n public restoreColumnWidths() {\r\n const widths = JSON.parse(localStorage.getItem(`mdc-data-table-${this.root.id}-column-widths`) ?? '[]');\r\n this.setColumnWidths(widths);\r\n }\r\n\r\n initialSyncWithDOM() {\r\n if (this.busy !== undefined) {\r\n this.busyChanged();\r\n }\r\n if (!this.manualCheckboxHandling) {\r\n const rowCheckboxList = this.rowCheckboxList;\r\n for (let i = 0; i < rowCheckboxList.length; ++i) {\r\n if (rowCheckboxList[i].checked) {\r\n this.getRowByIndex(i).classList.add(cssClasses.ROW_SELECTED);\r\n }\r\n }\r\n }\r\n this.foundation?.layout();\r\n }\r\n\r\n private startColumnResize(event: MouseEvent, headerCell: HTMLElement): void {\r\n this.columnResized = true;\r\n const startX = event.clientX;\r\n const resizeHandle = event.target as HTMLElement;\r\n const initialHandlePosition = resizeHandle.offsetLeft;\r\n\r\n // Create a visual indicator for the resize handle\r\n const handleIndicator = document.createElement('div');\r\n handleIndicator.classList.add('mdc-data-table__header-cell__resize-handle-indicator');\r\n handleIndicator.style.left = `${initialHandlePosition}px`;\r\n handleIndicator.style.height = `${headerCell.offsetHeight}px`;\r\n document.body.style.cursor = 'col-resize';\r\n headerCell.classList.add('mdc-data-table__header-cell--resizing');\r\n headerCell.appendChild(handleIndicator);\r\n\r\n const onMouseMove = (moveEvent: MouseEvent) => {\r\n const deltaX = moveEvent.clientX - startX;\r\n handleIndicator.style.left = `${Math.max(initialHandlePosition + deltaX, headerCell.clientLeft)}px`;\r\n };\r\n\r\n const onMouseUp = () => {\r\n const finalDeltaX = parseInt(handleIndicator.style.left, 10) - initialHandlePosition;\r\n const newWidth = Math.max(5, headerCell.offsetWidth + finalDeltaX); // Minimum width of 5px\r\n\r\n // Apply the new width to the column\r\n headerCell.style.minWidth = headerCell.style.maxWidth = `${newWidth}px`;\r\n this.content.querySelectorAll(`tr td:nth-child(${Array.from(headerCell.parentElement!.children).indexOf(headerCell) + 1})`)\r\n .forEach((cell: HTMLElement) => {\r\n cell.style.minWidth = cell.style.maxWidth = `${newWidth}px`;\r\n });\r\n\r\n // Clean up\r\n handleIndicator.remove();\r\n this.columnResized = false;\r\n document.body.style.cursor = '';\r\n headerCell.classList.remove('mdc-data-table__header-cell--resizing');\r\n document.removeEventListener('mousemove', onMouseMove);\r\n document.removeEventListener('mouseup', onMouseUp);\r\n\r\n // Save the new widths if required\r\n const widths = this.getHeaderCells().map(x => x.style.minWidth);\r\n if (this.saveColumnWidths) {\r\n localStorage.setItem(`mdc-data-table-${this.root.id}-column-widths`, JSON.stringify(widths));\r\n }\r\n\r\n this.emit<MDCDataTableColumnsResizedEventDetail>('mdcdatatable:columnsresized', { widths }, true);\r\n };\r\n\r\n document.addEventListener('mousemove', onMouseMove);\r\n document.addEventListener('mouseup', onMouseUp);\r\n }\r\n\r\n destroy() {\r\n this.header.removeEventListener('change', this);\r\n this.header.removeEventListener('click', this);\r\n this.content.removeEventListener('change', this);\r\n this.mutationObserver?.disconnect();\r\n }\r\n\r\n public setColumnWidths(widths: string[]) {\r\n if (!widths || widths.length === 0) {\r\n return;\r\n }\r\n this.getHeaderCells().forEach((x, i) => {\r\n x.style.minWidth = x.style.maxWidth = widths[i];\r\n this.content.querySelectorAll(`tr td:nth-child(${i + 1})`).forEach((cell: HTMLElement) => {\r\n cell.style.minWidth = cell.style.maxWidth = widths[i];\r\n });\r\n });\r\n }\r\n\r\n getDefaultFoundation() {\r\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial<MDCFooAdapter>.\r\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\r\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\r\n const adapter: MDCDataTableAdapter = {\r\n addClass: (className) => this.root.classList.add(className),\r\n removeClass: (className) => this.root.classList.remove(className),\r\n getHeaderCellElements: () => this.getHeaderCells(),\r\n getHeaderCellCount: () => this.getHeaderCells().length,\r\n getAttributeByHeaderCellIndex: (index, attribute) => this.getHeaderCells()[index].getAttribute(attribute),\r\n setAttributeByHeaderCellIndex: (index, attribute, value) => this.getHeaderCells()[index].setAttribute(attribute, value),\r\n setClassNameByHeaderCellIndex: (index, className) => this.getHeaderCells()[index].classList.add(className),\r\n removeClassNameByHeaderCellIndex: (index, className) => {\r\n this.getHeaderCells()[index].classList.remove(className);\r\n },\r\n notifySortAction: (data) => {\r\n this.emit(events.SORTED, data, /** shouldBubble */ true);\r\n },\r\n getTableContainerHeight: () => {\r\n const tableContainer =\r\n this.root.querySelector<HTMLElement>(`.${cssClasses.TABLE_CONTAINER}`);\r\n\r\n if (!tableContainer) {\r\n throw new Error('MDCDataTable: Table container element not found.');\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n return tableContainer.getBoundingClientRect().height as any;\r\n },\r\n getTableHeaderHeight: () => {\r\n const tableHeader =\r\n this.root.querySelector<HTMLElement>(selectors.HEADER_ROW);\r\n\r\n if (!tableHeader) {\r\n throw new Error('MDCDataTable: Table header element not found.');\r\n }\r\n\r\n return tableHeader.getBoundingClientRect().height;\r\n },\r\n setProgressIndicatorStyles: (styles) => {\r\n const progressIndicator = this.root.querySelector<HTMLElement>(selectors.PROGRESS_INDICATOR);\r\n\r\n if (!progressIndicator) {\r\n throw new Error('MDCDataTable: Progress indicator element not found.');\r\n }\r\n\r\n Object.assign(progressIndicator.style, styles);\r\n },\r\n addClassAtRowIndex: (rowIndex: number, className: string) => {\r\n this.getRows()[rowIndex].classList.add(className);\r\n },\r\n getRowCount: () => this.getRows().length,\r\n getRowElements: () => [].slice.call(this.root.querySelectorAll(selectors.ROW)) as Element[],\r\n getRowIdAtIndex: (rowIndex: number) =>\r\n this.getRows()[rowIndex].getAttribute(dataAttributes.ROW_ID),\r\n getRowIndexByChildElement: (el: Element) => this.getRows().indexOf((closest(el, selectors.ROW) as HTMLElement)),\r\n getSelectedRowCount: () => this.root.querySelectorAll(selectors.ROW_SELECTED).length,\r\n isCheckboxAtRowIndexChecked: (rowIndex: number) => this.rowCheckboxList[rowIndex].checked,\r\n isHeaderRowCheckboxChecked: () => this.headerRowCheckbox?.checked ?? false,\r\n isRowsSelectable: () => !!this.root.querySelector(selectors.ROW_CHECKBOX),\r\n notifyRowSelectionChanged:\r\n (data: MDCDataTableRowSelectionChangedEventDetail) => {\r\n this.emit(\r\n events.ROW_SELECTION_CHANGED, {\r\n row: this.getRowByIndex(data.rowIndex),\r\n rowId: this.getRowIdByIndex(data.rowIndex),\r\n rowIndex: data.rowIndex,\r\n selected: data.selected,\r\n }, /** shouldBubble */ true);\r\n },\r\n notifySelectedAll: () => {\r\n this.emit(events.SELECTED_ALL, {}, /** shouldBubble */ true);\r\n },\r\n notifyUnselectedAll: () => {\r\n this.emit(events.UNSELECTED_ALL, {}, /** shouldBubble */ true);\r\n },\r\n notifyRowClick: (data: RowClickEventData) => {\r\n this.emit(events.ROW_CLICK, data, /** shouldBubble */ true);\r\n },\r\n registerHeaderRowCheckbox: () => {\r\n // const checkboxEl = this.root.querySelector<IMdcCheckboxElement>(selectors.HEADER_ROW_CHECKBOX);\r\n // this.headerRowCheckbox = checkboxEl?.au?.controller.viewModel;\r\n },\r\n registerRowCheckboxes: () => {\r\n // this.rowCheckboxList = [];\r\n // this.getRows().forEach((rowEl) => {\r\n // const checkbox = rowEl.querySelector<IMdcCheckboxElement>(selectors.ROW_CHECKBOX)?.au?.controller.viewModel;\r\n // if (checkbox) {\r\n // this.rowCheckboxList.push(checkbox);\r\n // }\r\n // });\r\n },\r\n removeClassAtRowIndex: (rowIndex: number, className: string) => {\r\n this.getRows()[rowIndex].classList.remove(className);\r\n },\r\n setAttributeAtRowIndex:\r\n (rowIndex: number, attr: string, value: string) => {\r\n this.getRows()[rowIndex].setAttribute(attr, value);\r\n },\r\n setHeaderRowCheckboxChecked: (checked: boolean) => {\r\n if (this.headerRowCheckbox) {\r\n this.headerRowCheckbox.checked = checked;\r\n }\r\n },\r\n setHeaderRowCheckboxIndeterminate: (indeterminate: boolean) => {\r\n if (this.headerRowCheckbox) {\r\n this.headerRowCheckbox.indeterminate = indeterminate;\r\n }\r\n },\r\n setRowCheckboxCheckedAtIndex: (rowIndex: number, checked: boolean) => {\r\n this.rowCheckboxList[rowIndex].checked = checked;\r\n },\r\n setSortStatusLabelByHeaderCellIndex: (\r\n columnIndex: number, sortValue: SortValue) => {\r\n const headerCell = this.getHeaderCells()[columnIndex];\r\n const sortStatusLabel =\r\n headerCell.querySelector<HTMLElement>(selectors.SORT_STATUS_LABEL);\r\n\r\n if (!sortStatusLabel) {\r\n return;\r\n }\r\n\r\n sortStatusLabel.textContent =\r\n this.getSortStatusMessageBySortValue(sortValue);\r\n }\r\n };\r\n return new MDCDataTableFoundation(adapter);\r\n }\r\n\r\n private getRowByIndex(index: number): Element {\r\n return this.getRows()[index];\r\n }\r\n\r\n private getRowIdByIndex(index: number): string | null {\r\n return this.getRowByIndex(index).getAttribute(dataAttributes.ROW_ID);\r\n }\r\n\r\n private handleHeaderRowClick(event: Event): void {\r\n const headerCell =\r\n closest(event.target as Element, selectors.HEADER_CELL_WITH_SORT) as\r\n HTMLElement;\r\n\r\n if (!headerCell) {\r\n return;\r\n }\r\n\r\n const columnId = headerCell.getAttribute(dataAttributes.COLUMN_ID);\r\n const columnIndex = this.getHeaderCells().indexOf(headerCell);\r\n if (columnIndex === -1) {\r\n return;\r\n }\r\n\r\n this.foundation?.handleSortAction({ columnId, columnIndex, headerCell });\r\n }\r\n\r\n private getSortStatusMessageBySortValue(sortValue: SortValue): string {\r\n switch (sortValue) {\r\n case SortValue.ASCENDING:\r\n return messages.SORTED_IN_ASCENDING;\r\n case SortValue.DESCENDING:\r\n return messages.SORTED_IN_DESCENDING;\r\n default:\r\n return '';\r\n }\r\n }\r\n\r\n private getRowIdByRowElement(rowElement: HTMLElement): string | null {\r\n return rowElement.getAttribute(dataAttributes.ROW_ID);\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"mdc-data-table.js","sourceRoot":"","sources":["../../src/data-table/mdc-data-table.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable no-template-curly-in-string */\r\nimport { MdcComponent, booleanAttr, number } from '../base';\r\nimport {\r\n MDCDataTableFoundation, selectors, MDCDataTableAdapter, events, cssClasses, RowClickEventData,\r\n dataAttributes, MDCDataTableRowSelectionChangedEventDetail, SortValue, messages\r\n} from '@material/data-table';\r\nimport { closest } from '@material/dom/ponyfill';\r\nimport { inject, customElement, INode, bindable, BindingMode } from 'aurelia';\r\nimport { processContent, CustomElement } from '@aurelia/runtime-html';\r\nimport template from './mdc-data-table.html?raw';\r\nimport { MdcCheckbox } from '../checkbox/mdc-checkbox';\r\n\r\nevents.ROW_CLICK = events.ROW_CLICK.toLowerCase();\r\nevents.ROW_SELECTION_CHANGED = events.ROW_SELECTION_CHANGED.toLowerCase();\r\nevents.SELECTED_ALL = events.SELECTED_ALL.toLowerCase();\r\nevents.SORTED = events.SORTED.toLowerCase();\r\nevents.UNSELECTED_ALL = events.UNSELECTED_ALL.toLowerCase();\r\nconst NAVIGATION_EVENT = 'mdcdatatable:navigation';\r\n\r\nexport interface MDCDataTableColumnsResizedEventDetail {\r\n widths: string[];\r\n}\r\n\r\n/**\r\n * Use `pagination-total` replaceable part to customise pagination total label.\r\n * @selector mdc-data-table\r\n * @emits mdcdatatable:rowselectionchanged | Emitted when row checkbox is checked or unchecked\r\n * @emits mdcdatatable:selectedall | Emitted when header row checkbox is checked\r\n * @emits mdcdatatable:unselectedall | Emitted when header row checkbox is unchecked\r\n * @emits mdcdatatable:sorted | Emitted when clicked on sortable header cell\r\n * @emits mdcdatatable:rowclick | Emitted when a row is clicked\r\n */\r\n@inject(Element)\r\n@customElement({ name: 'mdc-data-table', template })\r\n@processContent(function processContent(node: INode) {\r\n const element = node as HTMLElement;\r\n const table = element.querySelector('table');\r\n if (!table) {\r\n throw new Error('Have you forgotten the <table> tag in you data table markup?');\r\n }\r\n table.classList.add('mdc-data-table__table');\r\n table.setAttribute('aria-label', '${ariaLabel}');\r\n\r\n const headerRow = element.querySelector('thead>tr');\r\n if (!headerRow) {\r\n throw new Error('Have you forgotten the <thead><tr> tags in you data table markup?');\r\n }\r\n headerRow.classList.add(cssClasses.HEADER_ROW);\r\n headerRow.setAttribute('ref', 'headerRow');\r\n const headerCells = headerRow.querySelectorAll<HTMLElement>('th');\r\n for (const th of Array.from(headerCells)) {\r\n th.classList.add(cssClasses.HEADER_CELL);\r\n th.classList.toggle('mdc-data-table__header-cell--numeric', th.hasAttribute('numeric'));\r\n th.setAttribute('role', 'columnheader');\r\n th.setAttribute('scope', 'col');\r\n }\r\n\r\n const tbody = element.querySelector('tbody');\r\n if (!tbody) {\r\n throw new Error('Have you forgotten the <tbody> tag in you data table markup?');\r\n }\r\n tbody.classList.add(cssClasses.CONTENT);\r\n tbody.setAttribute('ref', 'content');\r\n\r\n const paginationTotalSlot = element.querySelector('[au-slot=\"pagination-total\"]');\r\n paginationTotalSlot?.remove();\r\n\r\n if (paginationTotalSlot) {\r\n element.appendChild(paginationTotalSlot);\r\n }\r\n}\r\n)\r\nexport class MdcDataTable extends MdcComponent<MDCDataTableFoundation> implements EventListenerObject {\r\n header: HTMLElement;\r\n content: HTMLElement;\r\n columnResized: boolean;\r\n private mutationObserver: MutationObserver;\r\n\r\n /** Shows pagination footer */\r\n @bindable({ set: booleanAttr })\r\n pagination: boolean;\r\n\r\n /** Caption for the page size selector */\r\n @bindable()\r\n rowsPerPageLabel: string = 'Rows per page';\r\n\r\n /** Page sizes available for selection, e.g. [10, 25, 100, 'All'] */\r\n @bindable()\r\n pageSizes: unknown[] = [10, 25, 100];\r\n\r\n /** Selected page size */\r\n @bindable({ mode: BindingMode.twoWay })\r\n pageSize: unknown = 10;\r\n\r\n /** Makes header row sticky (fixed) on vertical scroll.\r\n * (Note: Sticky header feature is not compatible with IE11 browsers.) */\r\n @bindable({ set: booleanAttr })\r\n stickyHeader: boolean;\r\n\r\n /** Turns off checkbox handling by the MDC framework */\r\n @bindable({ set: booleanAttr })\r\n manualCheckboxHandling: boolean;\r\n\r\n /** Turns on automatic column widths saving to localStorage */\r\n @bindable({ set: booleanAttr })\r\n saveColumnWidths: boolean;\r\n\r\n get paginationPosition(): 'first' | 'between' | 'last' | undefined {\r\n if (typeof this.pageSize !== 'number' || this.pageSize === undefined || isNaN(this.activePage) || isNaN(this.recordsCount)) {\r\n return undefined;\r\n }\r\n const pagesCount = Math.ceil(this.recordsCount / this.pageSize);\r\n return this.activePage === 1\r\n ? (pagesCount === 1 ? undefined : 'first')\r\n : (this.activePage === pagesCount ? 'last' : 'between');\r\n }\r\n\r\n /** Sets total number of records. Used in navigation row. */\r\n @bindable({ set: number })\r\n recordsCount: number;\r\n\r\n /** Sets the active page number. Used in navigation row. */\r\n @bindable({ set: number })\r\n activePage: number;\r\n\r\n get paginationTotal(): string | undefined {\r\n if (typeof this.pageSize !== 'number' || this.pageSize === undefined || isNaN(this.activePage) || isNaN(this.recordsCount)) {\r\n return undefined;\r\n }\r\n const firstRecord = this.pageSize * (this.activePage - 1) + 1;\r\n const lastRecord = Math.min(this.pageSize * this.activePage, this.recordsCount);\r\n return `${firstRecord}-${lastRecord} of ${this.recordsCount}`;\r\n }\r\n\r\n /** Turns on a linear progress indicator at the top of the table */\r\n @bindable({ set: booleanAttr })\r\n busy: boolean;\r\n busyChanged() {\r\n if (this.busy) {\r\n this.foundation?.showProgress();\r\n } else {\r\n this.foundation?.hideProgress();\r\n }\r\n }\r\n\r\n @bindable({ set: booleanAttr })\r\n hoistPageSelectToBody: boolean;\r\n\r\n get rowCheckboxList(): MdcCheckbox[] {\r\n return Array.from(this.root.querySelectorAll(`.${cssClasses.ROW} .mdc-checkbox`))\r\n .map(x => CustomElement.for<MdcCheckbox>(x).viewModel);\r\n }\r\n\r\n get headerRowCheckbox(): MdcCheckbox | undefined {\r\n const el = this.root.querySelector(`.${cssClasses.HEADER_ROW} .mdc-checkbox`);\r\n return el ? CustomElement.for<MdcCheckbox>(el).viewModel : undefined;\r\n }\r\n\r\n handleHeaderRowCheckboxChange() {\r\n this.foundation?.handleHeaderRowCheckboxChange();\r\n }\r\n\r\n handleRowCheckboxChange(event: Event) {\r\n if ((event.target as HTMLInputElement).type === 'checkbox') {\r\n this.foundation?.handleRowCheckboxChange(event);\r\n }\r\n }\r\n\r\n headerRowClickListener(event: Event) {\r\n this.handleHeaderRowClick(event);\r\n }\r\n\r\n handleNavigationClick(type: 'first' | 'prev' | 'next' | 'last') {\r\n this.emit(NAVIGATION_EVENT, { type }, true);\r\n }\r\n\r\n handleContentClick(event: Event) {\r\n const dataRowEl = closest(event.target as Element, selectors.ROW) as HTMLElement;\r\n if (!dataRowEl) {\r\n return;\r\n }\r\n\r\n this.foundation?.handleRowClick({\r\n rowId: this.getRowIdByRowElement(dataRowEl),\r\n row: dataRowEl,\r\n });\r\n }\r\n\r\n /**\r\n * Re-initializes header row checkbox and row checkboxes when selectable rows are added or removed from table.\r\n */\r\n layout() {\r\n this.foundation?.layout();\r\n }\r\n\r\n /**\r\n * Returns array of header row cell elements.\r\n */\r\n getHeaderCells(): HTMLElement[] {\r\n return [].slice.call(this.root.querySelectorAll(selectors.HEADER_CELL)) as HTMLElement[];\r\n }\r\n\r\n /**\r\n * Returns array of row elements.\r\n */\r\n getRows(): Element[] {\r\n return this.foundation!.getRows();\r\n }\r\n\r\n /**\r\n * Returns array of selected row ids.\r\n */\r\n getSelectedRowIds(): (string | null)[] {\r\n return this.foundation!.getSelectedRowIds();\r\n }\r\n\r\n /**\r\n * Sets selected row ids. Overwrites previously selected rows.\r\n * @param rowIds Array of row ids that needs to be selected.\r\n */\r\n setSelectedRowIds(rowIds: string[]) {\r\n this.foundation?.setSelectedRowIds(rowIds);\r\n }\r\n\r\n handleEvent(evt: Event): void {\r\n switch (evt.currentTarget) {\r\n case this.header:\r\n switch (evt.type) {\r\n case 'change': this.handleHeaderRowCheckboxChange(); break;\r\n case 'click': this.handleHeaderRowClick(evt); break;\r\n }\r\n break;\r\n case this.content:\r\n switch (evt.type) {\r\n case 'change': this.handleRowCheckboxChange(evt); break;\r\n }\r\n break;\r\n }\r\n }\r\n\r\n beforeFoundationCreated() {\r\n this.header = this.root.querySelector<HTMLElement>(`.${cssClasses.HEADER_ROW}`)!;\r\n this.content = this.root.querySelector<HTMLElement>(`.${cssClasses.CONTENT}`)!;\r\n this.header.addEventListener('click', this);\r\n this.initialiseHeaderCells();\r\n this.mutationObserver = new MutationObserver(() => {\r\n this.initialiseHeaderCells();\r\n if (this.saveColumnWidths) {\r\n this.restoreColumnWidths();\r\n }\r\n });\r\n this.mutationObserver.observe(this.header, { childList: true, subtree: true });\r\n if (this.saveColumnWidths) {\r\n this.restoreColumnWidths();\r\n this.mutationObserver.observe(this.content, { childList: true, subtree: false });\r\n }\r\n\r\n if (!this.manualCheckboxHandling) {\r\n this.header.addEventListener('change', this);\r\n this.content.addEventListener('change', this);\r\n }\r\n\r\n const rowCheckboxList = this.rowCheckboxList;\r\n this.rowCheckboxList.forEach(x => x.root.classList.add(cssClasses.ROW_CHECKBOX));\r\n if (this.headerRowCheckbox) {\r\n this.headerRowCheckbox.root.classList.add(cssClasses.HEADER_ROW_CHECKBOX);\r\n rowCheckboxList.push(this.headerRowCheckbox);\r\n }\r\n }\r\n\r\n public restoreColumnWidths() {\r\n const widths = JSON.parse(localStorage.getItem(`mdc-data-table-${this.root.id}-column-widths`) ?? '[]');\r\n this.setColumnWidths(widths);\r\n }\r\n\r\n private initialiseHeaderCells() {\r\n this.header.querySelectorAll<HTMLElement>('th').forEach(x => {\r\n x.classList.add(cssClasses.HEADER_CELL);\r\n x.classList.toggle('mdc-data-table__header-cell--numeric', x.hasAttribute('numeric'));\r\n x.setAttribute('role', 'columnheader');\r\n x.setAttribute('scope', 'col');\r\n if (!x.hasAttribute('resizeable') || x.querySelector('.mdc-data-table__header-cell__resize-handle')) {\r\n return;\r\n }\r\n const resizeHandle = document.createElement('div');\r\n resizeHandle.addEventListener('mousedown', (event) => this.startColumnResize(event, x));\r\n x.insertBefore(document.createElement('div'), x.firstChild).classList.add('mdc-data-table__header-cell__hover-indicator');\r\n x.appendChild(resizeHandle).classList.add('mdc-data-table__header-cell__resize-handle');\r\n });\r\n }\r\n\r\n initialSyncWithDOM() {\r\n if (this.busy !== undefined) {\r\n this.busyChanged();\r\n }\r\n if (!this.manualCheckboxHandling) {\r\n const rowCheckboxList = this.rowCheckboxList;\r\n for (let i = 0; i < rowCheckboxList.length; ++i) {\r\n if (rowCheckboxList[i].checked) {\r\n this.getRowByIndex(i).classList.add(cssClasses.ROW_SELECTED);\r\n }\r\n }\r\n }\r\n this.foundation?.layout();\r\n }\r\n\r\n private startColumnResize(event: MouseEvent, headerCell: HTMLElement): void {\r\n this.columnResized = true;\r\n const startX = event.clientX;\r\n const resizeHandle = event.target as HTMLElement;\r\n const initialHandlePosition = resizeHandle.offsetLeft;\r\n\r\n // Create a visual indicator for the resize handle\r\n const handleIndicator = document.createElement('div');\r\n handleIndicator.classList.add('mdc-data-table__header-cell__resize-handle-indicator');\r\n handleIndicator.style.left = `${initialHandlePosition}px`;\r\n handleIndicator.style.height = `${headerCell.offsetHeight}px`;\r\n document.body.style.cursor = 'col-resize';\r\n headerCell.classList.add('mdc-data-table__header-cell--resizing');\r\n headerCell.appendChild(handleIndicator);\r\n\r\n const onMouseMove = (moveEvent: MouseEvent) => {\r\n const deltaX = moveEvent.clientX - startX;\r\n handleIndicator.style.left = `${Math.max(initialHandlePosition + deltaX, headerCell.clientLeft)}px`;\r\n };\r\n\r\n const onMouseUp = () => {\r\n const finalDeltaX = parseInt(handleIndicator.style.left, 10) - initialHandlePosition;\r\n const newWidth = Math.max(5, headerCell.offsetWidth + finalDeltaX); // Minimum width of 5px\r\n\r\n // Apply the new width to the column\r\n headerCell.style.minWidth = headerCell.style.maxWidth = `${newWidth}px`;\r\n this.content.querySelectorAll(`tr td:nth-child(${Array.from(headerCell.parentElement!.children).indexOf(headerCell) + 1})`)\r\n .forEach((cell: HTMLElement) => {\r\n cell.style.minWidth = cell.style.maxWidth = `${newWidth}px`;\r\n });\r\n\r\n // Clean up\r\n handleIndicator.remove();\r\n this.columnResized = false;\r\n document.body.style.cursor = '';\r\n headerCell.classList.remove('mdc-data-table__header-cell--resizing');\r\n document.removeEventListener('mousemove', onMouseMove);\r\n document.removeEventListener('mouseup', onMouseUp);\r\n\r\n // Save the new widths if required\r\n const widths = this.getHeaderCells().map(x => x.style.minWidth);\r\n if (this.saveColumnWidths) {\r\n localStorage.setItem(`mdc-data-table-${this.root.id}-column-widths`, JSON.stringify(widths));\r\n }\r\n\r\n this.emit<MDCDataTableColumnsResizedEventDetail>('mdcdatatable:columnsresized', { widths }, true);\r\n };\r\n\r\n document.addEventListener('mousemove', onMouseMove);\r\n document.addEventListener('mouseup', onMouseUp);\r\n }\r\n\r\n destroy() {\r\n this.header.removeEventListener('change', this);\r\n this.header.removeEventListener('click', this);\r\n this.content.removeEventListener('change', this);\r\n this.mutationObserver?.disconnect();\r\n }\r\n\r\n public setColumnWidths(widths: string[]) {\r\n if (!widths || widths.length === 0) {\r\n return;\r\n }\r\n this.getHeaderCells().forEach((x, i) => {\r\n x.style.minWidth = x.style.maxWidth = widths[i];\r\n this.content.querySelectorAll(`tr td:nth-child(${i + 1})`).forEach((cell: HTMLElement) => {\r\n cell.style.minWidth = cell.style.maxWidth = widths[i];\r\n });\r\n });\r\n }\r\n\r\n getDefaultFoundation() {\r\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial<MDCFooAdapter>.\r\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\r\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\r\n const adapter: MDCDataTableAdapter = {\r\n addClass: (className) => this.root.classList.add(className),\r\n removeClass: (className) => this.root.classList.remove(className),\r\n getHeaderCellElements: () => this.getHeaderCells(),\r\n getHeaderCellCount: () => this.getHeaderCells().length,\r\n getAttributeByHeaderCellIndex: (index, attribute) => this.getHeaderCells()[index].getAttribute(attribute),\r\n setAttributeByHeaderCellIndex: (index, attribute, value) => this.getHeaderCells()[index].setAttribute(attribute, value),\r\n setClassNameByHeaderCellIndex: (index, className) => this.getHeaderCells()[index].classList.add(className),\r\n removeClassNameByHeaderCellIndex: (index, className) => {\r\n this.getHeaderCells()[index].classList.remove(className);\r\n },\r\n notifySortAction: (data) => {\r\n this.emit(events.SORTED, data, /** shouldBubble */ true);\r\n },\r\n getTableContainerHeight: () => {\r\n const tableContainer =\r\n this.root.querySelector<HTMLElement>(`.${cssClasses.TABLE_CONTAINER}`);\r\n\r\n if (!tableContainer) {\r\n throw new Error('MDCDataTable: Table container element not found.');\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n return tableContainer.getBoundingClientRect().height as any;\r\n },\r\n getTableHeaderHeight: () => {\r\n const tableHeader =\r\n this.root.querySelector<HTMLElement>(selectors.HEADER_ROW);\r\n\r\n if (!tableHeader) {\r\n throw new Error('MDCDataTable: Table header element not found.');\r\n }\r\n\r\n return tableHeader.getBoundingClientRect().height;\r\n },\r\n setProgressIndicatorStyles: (styles) => {\r\n const progressIndicator = this.root.querySelector<HTMLElement>(selectors.PROGRESS_INDICATOR);\r\n\r\n if (!progressIndicator) {\r\n throw new Error('MDCDataTable: Progress indicator element not found.');\r\n }\r\n\r\n Object.assign(progressIndicator.style, styles);\r\n },\r\n addClassAtRowIndex: (rowIndex: number, className: string) => {\r\n this.getRows()[rowIndex].classList.add(className);\r\n },\r\n getRowCount: () => this.getRows().length,\r\n getRowElements: () => [].slice.call(this.root.querySelectorAll(selectors.ROW)) as Element[],\r\n getRowIdAtIndex: (rowIndex: number) =>\r\n this.getRows()[rowIndex].getAttribute(dataAttributes.ROW_ID),\r\n getRowIndexByChildElement: (el: Element) => this.getRows().indexOf((closest(el, selectors.ROW) as HTMLElement)),\r\n getSelectedRowCount: () => this.root.querySelectorAll(selectors.ROW_SELECTED).length,\r\n isCheckboxAtRowIndexChecked: (rowIndex: number) => this.rowCheckboxList[rowIndex].checked,\r\n isHeaderRowCheckboxChecked: () => this.headerRowCheckbox?.checked ?? false,\r\n isRowsSelectable: () => !!this.root.querySelector(selectors.ROW_CHECKBOX),\r\n notifyRowSelectionChanged:\r\n (data: MDCDataTableRowSelectionChangedEventDetail) => {\r\n this.emit(\r\n events.ROW_SELECTION_CHANGED, {\r\n row: this.getRowByIndex(data.rowIndex),\r\n rowId: this.getRowIdByIndex(data.rowIndex),\r\n rowIndex: data.rowIndex,\r\n selected: data.selected,\r\n }, /** shouldBubble */ true);\r\n },\r\n notifySelectedAll: () => {\r\n this.emit(events.SELECTED_ALL, {}, /** shouldBubble */ true);\r\n },\r\n notifyUnselectedAll: () => {\r\n this.emit(events.UNSELECTED_ALL, {}, /** shouldBubble */ true);\r\n },\r\n notifyRowClick: (data: RowClickEventData) => {\r\n this.emit(events.ROW_CLICK, data, /** shouldBubble */ true);\r\n },\r\n registerHeaderRowCheckbox: () => {\r\n // const checkboxEl = this.root.querySelector<IMdcCheckboxElement>(selectors.HEADER_ROW_CHECKBOX);\r\n // this.headerRowCheckbox = checkboxEl?.au?.controller.viewModel;\r\n },\r\n registerRowCheckboxes: () => {\r\n // this.rowCheckboxList = [];\r\n // this.getRows().forEach((rowEl) => {\r\n // const checkbox = rowEl.querySelector<IMdcCheckboxElement>(selectors.ROW_CHECKBOX)?.au?.controller.viewModel;\r\n // if (checkbox) {\r\n // this.rowCheckboxList.push(checkbox);\r\n // }\r\n // });\r\n },\r\n removeClassAtRowIndex: (rowIndex: number, className: string) => {\r\n this.getRows()[rowIndex].classList.remove(className);\r\n },\r\n setAttributeAtRowIndex:\r\n (rowIndex: number, attr: string, value: string) => {\r\n this.getRows()[rowIndex].setAttribute(attr, value);\r\n },\r\n setHeaderRowCheckboxChecked: (checked: boolean) => {\r\n if (this.headerRowCheckbox) {\r\n this.headerRowCheckbox.checked = checked;\r\n }\r\n },\r\n setHeaderRowCheckboxIndeterminate: (indeterminate: boolean) => {\r\n if (this.headerRowCheckbox) {\r\n this.headerRowCheckbox.indeterminate = indeterminate;\r\n }\r\n },\r\n setRowCheckboxCheckedAtIndex: (rowIndex: number, checked: boolean) => {\r\n this.rowCheckboxList[rowIndex].checked = checked;\r\n },\r\n setSortStatusLabelByHeaderCellIndex: (\r\n columnIndex: number, sortValue: SortValue) => {\r\n const headerCell = this.getHeaderCells()[columnIndex];\r\n const sortStatusLabel =\r\n headerCell.querySelector<HTMLElement>(selectors.SORT_STATUS_LABEL);\r\n\r\n if (!sortStatusLabel) {\r\n return;\r\n }\r\n\r\n sortStatusLabel.textContent =\r\n this.getSortStatusMessageBySortValue(sortValue);\r\n }\r\n };\r\n return new MDCDataTableFoundation(adapter);\r\n }\r\n\r\n private getRowByIndex(index: number): Element {\r\n return this.getRows()[index];\r\n }\r\n\r\n private getRowIdByIndex(index: number): string | null {\r\n return this.getRowByIndex(index).getAttribute(dataAttributes.ROW_ID);\r\n }\r\n\r\n private handleHeaderRowClick(event: Event): void {\r\n const headerCell =\r\n closest(event.target as Element, selectors.HEADER_CELL_WITH_SORT) as\r\n HTMLElement;\r\n\r\n if (!headerCell) {\r\n return;\r\n }\r\n\r\n const columnId = headerCell.getAttribute(dataAttributes.COLUMN_ID);\r\n const columnIndex = this.getHeaderCells().indexOf(headerCell);\r\n if (columnIndex === -1) {\r\n return;\r\n }\r\n\r\n this.foundation?.handleSortAction({ columnId, columnIndex, headerCell });\r\n }\r\n\r\n private getSortStatusMessageBySortValue(sortValue: SortValue): string {\r\n switch (sortValue) {\r\n case SortValue.ASCENDING:\r\n return messages.SORTED_IN_ASCENDING;\r\n case SortValue.DESCENDING:\r\n return messages.SORTED_IN_DESCENDING;\r\n default:\r\n return '';\r\n }\r\n }\r\n\r\n private getRowIdByRowElement(rowElement: HTMLElement): string | null {\r\n return rowElement.getAttribute(dataAttributes.ROW_ID);\r\n }\r\n}\r\n"]}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { CustomAttribute, IAurelia, resolve } from 'aurelia';
|
|
1
|
+
import { CustomAttribute, CustomElement, IAurelia, queueTask, resolve } from 'aurelia';
|
|
2
2
|
import { strings } from '@material/dialog';
|
|
3
|
-
import { CustomElement } from '@aurelia/runtime-html';
|
|
4
3
|
/** Service to open MDC dialogs */
|
|
5
4
|
export class MdcDialogService {
|
|
6
5
|
au;
|
|
@@ -46,6 +45,13 @@ export class MdcDialogService {
|
|
|
46
45
|
await loadingResult;
|
|
47
46
|
}
|
|
48
47
|
}
|
|
48
|
+
await new Promise(resolve => queueTask(resolve));
|
|
49
|
+
const lists = Array.from(dialogContainer.querySelectorAll('mdc-list'));
|
|
50
|
+
lists.forEach((listElement) => {
|
|
51
|
+
const list = CustomElement.for(listElement)?.viewModel;
|
|
52
|
+
list?.layout();
|
|
53
|
+
list?.initializeListType();
|
|
54
|
+
});
|
|
49
55
|
await dialogVm.initialised;
|
|
50
56
|
dialogVm.open();
|
|
51
57
|
await openedPromise;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mdc-dialog-service.js","sourceRoot":"","sources":["../../src/dialog/mdc-dialog-service.ts"],"names":[],"mappings":"AACA,OAAgB,EAAE,eAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"mdc-dialog-service.js","sourceRoot":"","sources":["../../src/dialog/mdc-dialog-service.ts"],"names":[],"mappings":"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","sourcesContent":["import { MdcDialog } from './mdc-dialog';\r\nimport Aurelia, { CustomAttribute, CustomElement, IAurelia, queueTask, resolve } from 'aurelia';\nimport { MDCDialogCloseEvent, strings } from '@material/dialog';\nimport { Constructable } from '@aurelia/kernel';\nimport { IMdcRippleElement, MdcRipple } from '../ripple/mdc-ripple';\nimport { MdcList } from '../list/mdc-list';\n\r\n/** Dialog service open method options */\r\nexport interface IMdcDialogOptions<T extends { loading: (params: any) => any }> {\r\n /** A class represeting the dialog content view model */\r\n viewModel: Constructable<T>;\r\n\r\n /** Data to pass to the view model's loading method */\r\n model?: unknown;\r\n}\r\n\r\ninterface IMdcDialogBindingContext {\r\n handleClosed(evt: MDCDialogCloseEvent): void;\r\n handleOpened(): void;\r\n}\r\n\r\n/** Service to open MDC dialogs */\r\nexport class MdcDialogService {\r\n constructor(private readonly au: Aurelia = resolve(IAurelia)) { }\r\n\r\n /** Opens the dialog specified in the options */\r\n async open<T extends { loading: (params: any) => any }>(options: IMdcDialogOptions<T>) {\r\n let closedResolver: (action?: string | PromiseLike<string> | undefined) => void;\r\n const closedPromise = new Promise<string>(r => closedResolver = r);\r\n let openedResolver: (value?: unknown) => void;\r\n const openedPromise = new Promise(r => openedResolver = r);\r\n let opened = false;\r\n const bindingContext: IMdcDialogBindingContext = {\r\n handleOpened: () => {\r\n opened = true;\r\n openedResolver();\r\n },\r\n handleClosed: (evt: MDCDialogCloseEvent) => {\r\n if (!opened) {\r\n // The dialog was closed before it was opened, need to prevent an unresolved open promise.\r\n openedResolver();\r\n }\r\n closedResolver(evt.detail.action);\r\n controller.deactivate();\r\n dialogVm.root.removeEventListener(strings.CLOSED_EVENT, bindingContext.handleClosed);\r\n dialogVm.root.removeEventListener(strings.OPENED_EVENT, bindingContext.handleOpened);\r\n dialogContainer.remove();\r\n }\r\n };\r\n\r\n const dialogContainer = document.createElement('div');\r\n const def = CustomElement.getDefinition(options.viewModel);\r\n dialogContainer.innerHTML = `<${def.name}></${def.name}>`;\r\n document.body.appendChild(dialogContainer);\r\n\r\n const controller = await this.au.enhance({ host: dialogContainer, component: {} });\r\n const dialogVm = CustomElement.for<MdcDialog>(dialogContainer.querySelector('mdc-dialog') as HTMLElement).viewModel;\r\n dialogVm.root.addEventListener(strings.CLOSED_EVENT, bindingContext.handleClosed);\r\n dialogVm.root.addEventListener(strings.OPENED_EVENT, bindingContext.handleOpened);\r\n const vm = CustomElement.for<T>(dialogContainer.firstChild as HTMLElement).viewModel;\r\n if (vm.loading) {\n const loadingResult = vm.loading(options.model);\n if (loadingResult instanceof Promise) {\n await loadingResult;\n }\n }\n\n await new Promise<void>(resolve => queueTask(resolve));\n const lists = Array.from(dialogContainer.querySelectorAll<HTMLElement>('mdc-list'));\n lists.forEach((listElement) => {\n const list = CustomElement.for<MdcList>(listElement)?.viewModel;\n list?.layout();\n list?.initializeListType();\n });\n\n await dialogVm.initialised;\n dialogVm.open();\n\r\n await openedPromise;\r\n // re-layout ripple elements because dialogs use `transform: scale(.8)` and initial layout is incorrect\r\n const ripples = Array.from(dialogVm.root.querySelectorAll<IMdcRippleElement>('.mdc-ripple-upgraded'));\r\n await Promise.all(ripples.map(async x => {\r\n const ripple = CustomAttribute.for<MdcRipple>(x, 'mdc-ripple');\r\n await ripple?.viewModel.initialised;\r\n ripple?.viewModel.foundation?.layout();\r\n }));\r\n return await closedPromise;\r\n }\r\n}\r\n"]}
|
|
@@ -74,6 +74,7 @@ export declare class MdcDataTable extends MdcComponent<MDCDataTableFoundation> i
|
|
|
74
74
|
handleEvent(evt: Event): void;
|
|
75
75
|
beforeFoundationCreated(): void;
|
|
76
76
|
restoreColumnWidths(): void;
|
|
77
|
+
private initialiseHeaderCells;
|
|
77
78
|
initialSyncWithDOM(): void;
|
|
78
79
|
private startColumnResize;
|
|
79
80
|
destroy(): void;
|
package/package.json
CHANGED
|
@@ -242,15 +242,16 @@ export class MdcDataTable extends MdcComponent<MDCDataTableFoundation> implement
|
|
|
242
242
|
this.header = this.root.querySelector<HTMLElement>(`.${cssClasses.HEADER_ROW}`)!;
|
|
243
243
|
this.content = this.root.querySelector<HTMLElement>(`.${cssClasses.CONTENT}`)!;
|
|
244
244
|
this.header.addEventListener('click', this);
|
|
245
|
-
this.
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
245
|
+
this.initialiseHeaderCells();
|
|
246
|
+
this.mutationObserver = new MutationObserver(() => {
|
|
247
|
+
this.initialiseHeaderCells();
|
|
248
|
+
if (this.saveColumnWidths) {
|
|
249
|
+
this.restoreColumnWidths();
|
|
250
|
+
}
|
|
250
251
|
});
|
|
252
|
+
this.mutationObserver.observe(this.header, { childList: true, subtree: true });
|
|
251
253
|
if (this.saveColumnWidths) {
|
|
252
254
|
this.restoreColumnWidths();
|
|
253
|
-
this.mutationObserver = new MutationObserver(() => this.restoreColumnWidths());
|
|
254
255
|
this.mutationObserver.observe(this.content, { childList: true, subtree: false });
|
|
255
256
|
}
|
|
256
257
|
|
|
@@ -272,6 +273,22 @@ export class MdcDataTable extends MdcComponent<MDCDataTableFoundation> implement
|
|
|
272
273
|
this.setColumnWidths(widths);
|
|
273
274
|
}
|
|
274
275
|
|
|
276
|
+
private initialiseHeaderCells() {
|
|
277
|
+
this.header.querySelectorAll<HTMLElement>('th').forEach(x => {
|
|
278
|
+
x.classList.add(cssClasses.HEADER_CELL);
|
|
279
|
+
x.classList.toggle('mdc-data-table__header-cell--numeric', x.hasAttribute('numeric'));
|
|
280
|
+
x.setAttribute('role', 'columnheader');
|
|
281
|
+
x.setAttribute('scope', 'col');
|
|
282
|
+
if (!x.hasAttribute('resizeable') || x.querySelector('.mdc-data-table__header-cell__resize-handle')) {
|
|
283
|
+
return;
|
|
284
|
+
}
|
|
285
|
+
const resizeHandle = document.createElement('div');
|
|
286
|
+
resizeHandle.addEventListener('mousedown', (event) => this.startColumnResize(event, x));
|
|
287
|
+
x.insertBefore(document.createElement('div'), x.firstChild).classList.add('mdc-data-table__header-cell__hover-indicator');
|
|
288
|
+
x.appendChild(resizeHandle).classList.add('mdc-data-table__header-cell__resize-handle');
|
|
289
|
+
});
|
|
290
|
+
}
|
|
291
|
+
|
|
275
292
|
initialSyncWithDOM() {
|
|
276
293
|
if (this.busy !== undefined) {
|
|
277
294
|
this.busyChanged();
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { MdcDialog } from './mdc-dialog';
|
|
2
|
-
import Aurelia, { CustomAttribute, IAurelia, resolve } from 'aurelia';
|
|
3
|
-
import { MDCDialogCloseEvent, strings } from '@material/dialog';
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
2
|
+
import Aurelia, { CustomAttribute, CustomElement, IAurelia, queueTask, resolve } from 'aurelia';
|
|
3
|
+
import { MDCDialogCloseEvent, strings } from '@material/dialog';
|
|
4
|
+
import { Constructable } from '@aurelia/kernel';
|
|
5
|
+
import { IMdcRippleElement, MdcRipple } from '../ripple/mdc-ripple';
|
|
6
|
+
import { MdcList } from '../list/mdc-list';
|
|
7
7
|
|
|
8
8
|
/** Dialog service open method options */
|
|
9
9
|
export interface IMdcDialogOptions<T extends { loading: (params: any) => any }> {
|
|
@@ -58,14 +58,23 @@ export class MdcDialogService {
|
|
|
58
58
|
dialogVm.root.addEventListener(strings.CLOSED_EVENT, bindingContext.handleClosed);
|
|
59
59
|
dialogVm.root.addEventListener(strings.OPENED_EVENT, bindingContext.handleOpened);
|
|
60
60
|
const vm = CustomElement.for<T>(dialogContainer.firstChild as HTMLElement).viewModel;
|
|
61
|
-
if (vm.loading) {
|
|
62
|
-
const loadingResult = vm.loading(options.model);
|
|
63
|
-
if (loadingResult instanceof Promise) {
|
|
64
|
-
await loadingResult;
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
|
|
61
|
+
if (vm.loading) {
|
|
62
|
+
const loadingResult = vm.loading(options.model);
|
|
63
|
+
if (loadingResult instanceof Promise) {
|
|
64
|
+
await loadingResult;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
await new Promise<void>(resolve => queueTask(resolve));
|
|
69
|
+
const lists = Array.from(dialogContainer.querySelectorAll<HTMLElement>('mdc-list'));
|
|
70
|
+
lists.forEach((listElement) => {
|
|
71
|
+
const list = CustomElement.for<MdcList>(listElement)?.viewModel;
|
|
72
|
+
list?.layout();
|
|
73
|
+
list?.initializeListType();
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
await dialogVm.initialised;
|
|
77
|
+
dialogVm.open();
|
|
69
78
|
|
|
70
79
|
await openedPromise;
|
|
71
80
|
// re-layout ripple elements because dialogs use `transform: scale(.8)` and initial layout is incorrect
|